#help-development

1 messages ยท Page 1518 of 1

winter remnant
#

how do i get the spigot api for 1.17?

granite stirrup
#

if ur using maven its easy just change the version to 1.17-R1-SNAPSHOT

winter remnant
#

i dont have a spigot jar

#

im trying to get one

granite stirrup
#

?bt

undone axleBOT
dim dawn
#

Is it possible to put different music to different biomes with the mods?

granite stirrup
#

and u get the spigot api

granite stirrup
#

only talk in one

#

;-;

dim dawn
#

yes but I try to be answered I have to program and I try to find mods for it

granite stirrup
#

yes but u can play sounds to players which is server sided i think

sonic dirge
#

The ambient music itself is client side.

granite stirrup
#

the mc music in game and such is ambient and stuff

sonic dirge
#

Some people refer to the music and sound effects interchangeably so I like to be sure.

dim dawn
#

yes but I make a server modeled with dragons and I try to put fantastic music by biomes.

granite stirrup
#

u can change music i think with a resource pack

dim dawn
granite stirrup
#

i believe with mods u can change resources also but idk

dense crag
#

someone know the skin byte for 1.17?

crisp citrus
#

I have a lot of ShapedRecipes thaat i used Bukkit.addRecipe on in one function insidde a class. if i made another function in the same class and removed the recipes using the namespaces i put inthe first function, would it work

granite stirrup
dense crag
#

In 1.16 it was like that

DataWatcher watcher = npc.getDataWatcher();
watcher.watch(10, (byte) 127);

i want enable second layer for skins

#

@granite stirrup

granite stirrup
dense crag
#

yes is what im using, it was like that before but not work

wind bridge
#

anyone know like a thing to make players go into crawl action? in 1.16.5

granite stirrup
wind bridge
#

alrihgt

scenic valve
#

Can anyone help me with this? I'm making a plugin for 1.17 that removes villagers when a chunk is loaded in, but it doesn't do it. The lines of code seem simple enough to me but I am a newbie so I guess I'm overlooking something?

wraith rapids
#

e instanceof Villager

#

Class::isAssignableFrom and Class::isInstance is for when the class in question is a variable

#

in your case, it is always Villager

#

so you can simply use the instanceof operator

sage swift
#

is there a way to remove the black sky that shows when a player goes below y 61.38? i swear i saw someone talking about removing it server-side

wraith rapids
#

uh

#

change the world type to superflat

#

iirc that somehow causes the sky to only change below y 0

sage swift
#

genius

#

you are correct

#

that's stupid

wraith rapids
#

i'm a pretty correct guy

sage swift
#

thats why you have hitler in your avatar

wraith rapids
#

the most correct man in human history

scenic valve
wraith rapids
#

no, you're testing if the event is an instance of Villager

#

test if the entity is an instance of Villager

#

also jesus christ what is up with your brackets

scenic valve
#

Ah lol, I'm blind, and yeah I'll clean that up lol, thanks for the help

crisp citrus
#

how do i check if a recipe has been added/exists?

wraith rapids
#

Bukkit.getRecipe()

crisp citrus
#

kk

#

thanks

wraith rapids
#

is there some non retarded way of taking a WALL_PLAYER_HEAD and changing it into a PLAYER_HEAD without nuking the texture and other tile entity data

sage swift
#

get state, set block and update state?

wraith rapids
#

wouldn't that set the block type back to a wall head

#

or just refuse to update it

#

i'll try it and see i guess

vestal dome
#

how can I make this...

#

using BungeeAPI

#

is it possible even?

vestal dome
sage swift
#

setCompatible(true)

#

๐Ÿ‘

vestal dome
#

wdym?

#

hello?

#

bruh?

sage swift
#

can you hear me?

vestal dome
#

yeah where is that method?

#

on your bungeecord fork?

sage swift
#

where am i?

vestal dome
#

I'm talking about BungeeAPI, how to change that

#

got it? @sage swift

sage swift
#

do you want to kiss

vestal dome
#

how old are you really?

#

5 ?

sand bough
#

how can i read a CustomCraftInventory out of a string to open it again ?

sage swift
vestal dome
#

f off.

sand bough
#

guyys pls

sage swift
vestal dome
sage swift
#

homophobic huh?

hexed hatch
#

wow

#

it's June

vestal dome
#

you're what I call a wierdo....

hexed hatch
#

You can't be homophobic in June

vestal dome
#

the man is acting like a 5 year old.

#

or women.. you never know

hexed hatch
#

The man is acting based

vestal dome
#

I didn't get your question at all... just saying

sand bough
#

what kind of inventory do i need to open it again ?

granite stirrup
#

U have to open new one with items and make sure there's no dupe glitches

sand bough
#

cant i just open it as the string with contents ?

covert bluff
#

is there any other way to get player cps

sage swift
covert bluff
#

other than dividing clicks by the amount of selected seconds

crisp citrus
#

who fkn ghost pinged me

compact haven
#

no, spigot doesnt hand you a getCPS() method on a silver platter

hexed hatch
#

and if it did, that would literally be how it works

covert bluff
crisp citrus
covert bluff
#

i just did this instead

public static int getClicks() {
        Iterator<Long> iterator = clicks.iterator();
        while (iterator.hasNext()) {
            if (iterator.next() < System.currentTimeMillis() - 1000L) {
                iterator.remove();
            }
        }
        return clicks.size();
    }

sand bough
#

clicks per second ...

covert bluff
crisp citrus
covert bluff
# crisp citrus but you need to register clicks

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

public class ClickListener implements Listener {

    @EventHandler
    public void onPlayerClick(PlayerInteractEvent event) {
        if (event.getAction().equals(Action.LEFT_CLICK_AIR) || event.getAction().equals(Action.LEFT_CLICK_BLOCK)) {
            Cpstest.addClick();
        }
    }
}

#

you only have to register the event once in onEnable()

#

wdym

compact haven
#

that is wrong on so many levels

maiden thicket
maiden thicket
#

lol

#

or you can just put it in one playerclickevent

quaint mantle
#

is there any tutorial over here to port a plugin from 1.15 to 1.16?

maiden thicket
#

there's not much to do when porting a plugin

#

u just change the version of the plugin and update any api bits that need to be

quaint mantle
#

but like

hoary tiger
#

Uhh Hi I'm back So, I have super(EntityTypes.ZOMBIE ,((CraftWorld) loc.getWorld()).getHandle());
But, in the new 1.17 update, it is not working what should I use instead?

sage swift
#

how to fart on plugin in 1.17

quaint mantle
#

where do i find it?

maiden thicket
#

find what

quaint mantle
#

compileOnly 'org.spigotmc:spigot-api:1.16.5-R0.1-SNAPSHOT'

#

the latest 1.16.5 of this

maiden thicket
quaint mantle
#

as an example

maiden thicket
#

instead of 1.16.5

#

put 1.17

#

that's it

#

xd

quaint mantle
#

even if I want it to be 1.16.5?

sage swift
#

lol

#

yes

maiden thicket
#

oh from 1.15 to 1.16

#

oops

#

yes

quaint mantle
#

yeah

maiden thicket
#

just keep it 1.16.5

#

ur good like that

#

and then if there's no errors ur fine

#

not much api changes usually i think

quaint mantle
#

thought the snapshot was an older version somehow

covert bluff
hoary tiger
maiden thicket
#

i think he's probably pointing out the static and the .equals instead of ==

keen kelp
#

How does one add permission

maiden thicket
hoary tiger
#

if (player.isOp)

maiden thicket
#

if ur in intellij go ahead and just ctrl click EntityZombie

#

and it'll open up the original class

#

then just check the constructor

#

that's the parameters you need

keen kelp
#

no like permissions

compact haven
#
  1. enum comparison with .equals instead of ==
  2. Naming convention of Cpstest
  3. Static methods for classes that should have state
  4. No management for other players, will fuck up if theres more than 1 player
keen kelp
#

I dont want player to be OP just to be able to only allow some players to buy sh*t

keen kelp
#

using OP when making a plugin is a very bad idea

maiden thicket
#

Player is a child of Permissible

compact haven
#

also can we talk about why you are manually creating an iterator

maiden thicket
#

therefore it'll have addAttachment

keen kelp
#

ok

hoary tiger
maiden thicket
hoary tiger
maiden thicket
#

idk why you need to use nms for custom mob

wet breach
#

unless you are talking about adding permissions yourself instead of letting a permission plugin handle that

quaint mantle
#

how to know if a player has something in the offhand or not ?

wet breach
#

check their offhand

hoary tiger
keen kelp
#

no I just want to add a permission to be manages by a permission plugin

maiden thicket
#

it's either check if it's null or material is air

quaint mantle
#

the if

maiden thicket
#

are you checking if null

keen kelp
#

spigot/bukkit is weird, sometimes it's null sometimes it's material.AIR

maiden thicket
#

then check if the type is material.air instead ig

#

or

#

check if it's

#

like

wet breach
quaint mantle
#

I literally even check it 2 times

maiden thicket
#

if null || air

keen kelp
#

thx

quaint mantle
#
        {
            ItemStack offHand = e.getPlayer().getInventory().getItemInOffHand();
            if(!(offHand == null && offHand.getData().getItemType() == Material.AIR)) {```
hoary tiger
maiden thicket
#

you're checking if it's not null and then checking if its not air

keen kelp
#

god

#

use some variables

maiden thicket
#

and then checking if it is null

#

and checking if it is air

#

what

keen kelp
#

why you gotta make it so verbose

quaint mantle
#

fucking hell

#

im stupid

maiden thicket
#

xd

#

its aight

quaint mantle
#

lol thanks

maiden thicket
keen kelp
#

also for comparing material, use .equal()

#

iirc

maiden thicket
quaint mantle
maiden thicket
#

== is to check if it's the same memory location

maiden thicket
#

it doesn't just not load

keen kelp
#

there has to be an error

quaint mantle
#

1sec

#

tmux cuts the log

#

yeah I forgot to add the dependency

maiden thicket
quaint mantle
maiden thicket
#

F

#

entityzombie isn't even a class

#

in 1.17

quaint mantle
maiden thicket
keen kelp
quaint mantle
#

WTH IS https://your-mom-is.taahyt.com/

keen kelp
#

like how do you register the perms

maiden thicket
#

yes

hoary tiger
#

lmao

maiden thicket
#

well

#

u can use

quaint mantle
maiden thicket
#

bukkit's perm system

#

but a permission node doesn't have to be valid

#

u can have some bs like

#

dumb.person

quaint mantle
#

but vault does it all for u anyways

maiden thicket
#

and it'll still be valid

#

plugins usually handle perms themselves

#

for where they're stored - maybe vanilla mc ?

#

have no clue

#

probably vanilla mc since vanilla mc also has a perm system

keen kelp
#

wait so what permission systems do other plugins use

maiden thicket
#

they use vault usually

#

hook into vault's api and mess with that

#

if you really want to

quaint mantle
#

your perm could even be like ```gamemode1

keen kelp
#

and vault registers perms?

maiden thicket
#

or if you use luckperms you can just hook into their api

quaint mantle
maiden thicket
#

vault is more of an

#

api

#

from my knowledge

#

i don't think it actually does anything itself

quaint mantle
#

it's an api to register perms

#

add perms to players

maiden thicket
#

hm

quaint mantle
#

does a lot more

#

but i use it for that

keen kelp
#

this sounds way less clean than I thought

maiden thicket
#

ah yeah

#

it does

#

i see

quaint mantle
#

yes

quaint mantle
keen kelp
#

VaultAPI directly does sh*t with the server itself yes?

#

without relying on anything else

quaint mantle
#

what do you mean?

keen kelp
#

like would it would with just VaultAPI

maiden thicket
#

vault api has to be hooked in to

#

it has to have some kind of plugin that implements it

quaint mantle
#

yes

#

jsut add vaultapi

#

and hook it

#

and it should work normally

keen kelp
#

so I have to ask users to add in Vault as a plugin

quaint mantle
#

most api plugins don't need additional plugins

#

no

maiden thicket
#

people that make perm systems with vault usually implement their permission class as its own thing

#

for example if you want to do SQL

keen kelp
#

shading it in would be fine?

maiden thicket
#

you'd have to do your own implementation

#

don't shade it

#

no point

keen kelp
#

ok

maiden thicket
#

wait

#

do u

#

uh

#

i have no idea if Vault plugin has vault api

#

one second

keen kelp
#

ok

quaint mantle
#

yes Vault is the api

#

in itself

#

so like add it to the plugins folder

keen kelp
#

Is there a way so that no matter what plugin the end user uses, the permission system would still work

quaint mantle
#

and in your plugin that you are coding

maiden thicket
#

yeah it shades it into vault i think

quaint mantle
#
    public static Economy econ = null;
    public static Permission perms = null;
    public static Chat chat = null;

    public void createHooks() {
        if (!setupEconomy()) {
            Core.plugin().getLogger().severe("Vault was not found!");
            getServer().getPluginManager().disablePlugin(Core.plugin());
            return;
        }
        setupPermissions();
        setupChat();
    }

    private boolean setupEconomy() {
        if (Bukkit.getServer().getPluginManager().getPlugin("Vault") == null) {
            return false;
        }
        RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
        if (rsp == null) {
            return false;
        }
        econ = rsp.getProvider();
        return econ != null;
    }

    private void setupChat() {
        RegisteredServiceProvider<Chat> rsp = getServer().getServicesManager().getRegistration(Chat.class);
        chat = rsp.getProvider();
    }

    private void setupPermissions() {
        RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
        perms = rsp.getProvider();
    }
}
keen kelp
#

like hypothetical situation where the user doesn't use vault and their perm plugin doesn't support vault either

quaint mantle
#

the users don't need any plugins

keen kelp
#

is there a way to still have permissions work

quaint mantle
#

it's all server side

maiden thicket
#

ur hooking into vault itself

keen kelp
#

I mean like ppl using the plugin

maiden thicket
#

when u use vault api you can either:

#

create ur own implementations

#

and set vault's permission system to urs

#

or

#

you can just use its api normally i believe

#

i dont use vault a lot

#

dont see much point tbh

#

just an api to make stuff easier

maiden thicket
keen kelp
#

but like what does the API act on

quaint mantle
maiden thicket
quaint mantle
#

nice

maiden thicket
#

luckperms >>

#

hypixel is down F

quaint mantle
#

ikr

keen kelp
#

yes

quaint mantle
#

PermissionEX is og

maiden thicket
#

nah bruh

#

groupmanager

#

lmao

quaint mantle
#

loll

#

forgot bout dat

keen kelp
#

wait so VaultAPI is an ecosystem or just a tool

#

does it store the Permission in a custom place and other plugins that support vault read the same place

quaint mantle
#

no idea buddy

#

why does it matter

keen kelp
#

or does it do stuff directly to bukkit/spigot and other plugins just read that

#

I just want to know how the system works

quaint mantle
#

oh i see

wet breach
quaint mantle
#

i see what u question is

quaint mantle
#

to check if a player got the perm u want

keen kelp
#

yep that's my question, thanks

quaint mantle
#

do player.hasPermission("permission");

keen kelp
#

got it thanks

#

thats exactly what I needed

wet breach
#

my utility for permissions pretty much does that, just allows for checking multiple permissions even * ones without much fuss @quaint mantle ๐Ÿ˜›

wet breach
#

its open source, feel free to use it

keen kelp
#

cool now make it into an API

wet breach
#

Hawkfalcon isn't me, but I own Server Tutorial ๐Ÿ™‚

keen kelp
#

if I use VaultAPI(without shading it in) the user would have to install vault correct?

wet breach
#

@keen kelp yes

#

what is wrong with it @quaint mantle ?

keen kelp
#

it's only like 100kb I can afford to shade in that with minimising

wet breach
#

if you do, relocate it

#

in case someone does have vault in their plugins directory they won't conflict

keen kelp
#

what does relocating do

#

oh ok

quaint mantle
wet breach
#

it makes it easier to do permission checking, even dynamic permissions without implementing if checks everywhere

keen kelp
#

Spigot is the only dependency in which being shaded in is completely unnecessary

wet breach
#

and not advised at all

keen kelp
#

since it wouldn't update with spigot unlike server.jar?

#

it just sounds like a shitfest tryna shade Spigot in

quaint mantle
#

alright goo'night y'all

keen kelp
#

gn

young knoll
#

Just because you shade spigot doesnโ€™t mean you can launch it

wet breach
keen kelp
#

yep

wet breach
#

cya later Frenzy

keen kelp
#

actually does bukkit still exist by itself?

#

like is there a bukkit server.jar that you can run for servers?

#

or since Bukkit is only kept alive by spigot devs no individual builds of bukkit exisis

wet breach
#

Bukkit/CB is still used since spigot is based off it

keen kelp
#

lmao I still love the description of the github repo for shadow

#

Gradle plugin to create fat/uber JARs, apply file transforms, and relocate packages for applications and libraries. Gradle version of Maven's Shade plugin.

#

ah yes, fat/uber JARs

wet breach
#

I don't use gradle, so if you need help with that I am not the person to ask. I stick with Maven ๐Ÿ™‚

keen kelp
#

it's fine Ive done shading before ;)

wide aspen
#

how does file io work for spigot?
I want to add in some settings

keen kelp
spring yoke
#

On vanilla minecraft, a creeper or fireball with a negative ExplosionRadius NBT will knock back entities but not do any damage. However, with spigot, explosives that have negative ExplosionRadius values do NOT knock back entities.

#

Is this intended? If so, why? If not, can it be fixed?

keen kelp
#

it's more like an inaccuracy

#

something that's not the same as vanilla

#

if you want, make your own explosion :)

#

also if you want

#

you can summon a regular fireball/tnt with some PDC

#

just do event#setcancelled(true)
if the exploding entity has your PDC

#

@spring yoke hope this answers it

#

actually Im not quite sure the cancel event thing will work XD

wet breach
# spring yoke Is this intended? If so, why? If not, can it be fixed?

the reason this is most likely the case is because what you described is actually a bug as well as negative values are not expected, thus when you input a negative value using spigot odds are it is just turning it into a positive number and thus not giving you the result you expected. This isn't broken so there isn't anything to fix, the best you could do is to implement knockback yourself.

keen kelp
#

yeah it's more of an implementation flaw, less of a bug

#

either create a normal fireball/tnt and cancel the block breaking event

#

(if you want players to see it)

valid totem
#

how do i disconenct a player with the Failed to connect to server message instead of the Connection Lost message

keen kelp
#

or just skip the middleman and apply the velocity directly

spring yoke
keen kelp
#

just player.kick("Reason")

valid totem
#

that would say Connection lost

keen kelp
#

wait rlly?

valid totem
#

yeah

spring yoke
covert bluff
#

no, it should say the reason

keen kelp
#

oh

wet breach
# spring yoke spigot turns the negative into a 0

I was going to say that just wasn't sure, however same principle applies. Simply because negative values are not expected in the NBT, the way it was coded in spigot was simply to ignore negatives then.

spring yoke
#

and it also makes the visual explosion much smaller

keen kelp
#

then use EntityDamageEvent

valid totem
#

see

covert bluff
#

when do you kick the player

valid totem
#

on join

spring yoke
#

and the knockback is stronger than the equivalent positive value IIRC

valid totem
#

look some server do this

keen kelp
#

and if the entity damaged is player and the thing that's damaging them is a fireball/creeper with your PDC, cancel it

valid totem
covert bluff
#

no idea why it'd do that

covert bluff
#

you can even try banning

#

and it'll do the same

#

and the message only shows when they rejoin

#

not sure why that happens

valid totem
#

i want to code it into a plugin

#

lol

#

with a custom message

covert bluff
#

ye, i have no idea why that happens

#

have you tried player.disconnect()

#

let the player load in first

#

wait

#

nvm

#

@valid totem try kicking the player after something like 10ms

#

and try using postloginevent instead of playerjoinevent

keen kelp
#

yeah I feel like that's whats happening

covert bluff
#

you need to let the player load in first

#

if it still says connection lots then increase the delay

#

use a scheduler

keen kelp
#

the client sees the connect being lost right after it started and just assumes its a network problem

young knoll
#

What is going on here

keen kelp
#

or something of that sort

covert bluff
#

typically something along the lines of

new BukkitRunnable() {
  public void run () {
      . . .
  }
}.runTaskLater(plugin,delay)
#

or whatever the method was

keen kelp
#

they're tryna kick players with a message and it just says Connection lost

covert bluff
#

he's kicking the player too early

#

als owith PostLoginEvent use player.disconnect(), not kick

#

you won't be able to kick them because they haven't joined yet

covert bluff
#

that's what was previously used

#

it had the same results

valid totem
#

hmm

valid totem
young knoll
#

It lets you specify a message

covert bluff
#

no, the thing keeps saying connection lost

#

it's because they aren't letting the player load in

#

even if you specify a reason

#

also, it's best to use the postloginevent, especially if the player has a bad connection

#

with postloginevent it's guaranteed that the player isn't able to see anything iff that's what OP intends

#

try joining a server with a bad download speed and you'll notice there's gonna be a lag spike upon joining

keen kelp
#

guy I think my plugin.yml isn't doing so well

valid totem
#

wdym

covert bluff
#

can't explain it well

keen kelp
#

translation:
Lag breaks everything

young knoll
#

That method is designed for this exact purpose

#

If it didnโ€™t work someone would have noticed by now

keen kelp
#

is there any way to simulate lag? ๐Ÿค”

#

like delaying all packets

covert bluff
#

i thought you were just bringing up the event in general, and not the disallow() method

#

sorry about that

valid totem
#

ok thx guys

#

it works

keen kelp
#

poogers

#

1000/X*20
this is how you calculate ticks from MS right?

#

if I can math

young knoll
#

Ticks = MS / 50

keen kelp
#

Yeah but

#

that would be nightmare for future me

#

if I were to abandon it and come back

strong forge
#

its not quite right because a tick is always at least 50ms

#

20 ticks per second = 20 ticks in 1000ms or 50ms per tick (which is ideal)

keen kelp
#

GameMode.toString gets the name of the game mode?

strong forge
#

mspt is basically an inverse of tps since the former is time per tick and the other is tick per time

keen kelp
#

so it's more like MS/50 and ditch all decimals

covert bluff
strong forge
#

kind of

covert bluff
strong forge
#

i mean it depends on if you're talking about real game ticks or not

#

you could talk about the theoretical tick that is less than 50ms

keen kelp
#

Im tryna simulate lag here

young knoll
#

In terms of code, itโ€™s 20 ticks per second

keen kelp
#

simulating high ping

young knoll
#

In game, it can be lower in theory

strong forge
#

yes

#

and ticks do take less than 50ms to compute a lot of the time, the game just sleeps for the rest of the 50ms

#

but if you want to simulate lag you dont need any of that

#

if you want to simulate for example 10tps then you need 10 ticks per second... so make sure that each tick takes 100ms (double the amount of time it should)

keen kelp
#

no I meant ping XD

#

delay

young knoll
#

Honestly Iโ€™ve never tried delaying a packet

strong forge
#

not sure how you would simulate that but theres probably a way

young knoll
#

But you can sure try

strong forge
#

not sure why you would want to do that

keen kelp
#

does the intention matter?

#

private void setGameMode(Player player, GameMode gameMode)
{
player.setGameMode(gameMode);
player.sendMessage(Color.GOLD + "Your game mode has been changed to " + Color.RED + gameMode.toString());
}
let's pray this works

covert bluff
#

is it possible to override the vanilla ban command

#

and replace it with another command made via plugin

young knoll
#

Yes

covert bluff
#

is it the same way you would create a command

#

or do i have to do a few more things?

young knoll
#

That should work

covert bluff
#

alright

young knoll
#

If it doesnโ€™t you can intercept the vanilla one with PlayerCommandPreProcessEvent

covert bluff
#

ye, had that in mind

#

gonna test it rq

sage swift
#

pretty sure registering ban is enough lul

strong forge
#

i mean yes the intention does matter

#

xD

young knoll
#

I registered /plugins and it did not override the spigot version ยฏ_(ใƒ„)_/ยฏ

sage swift
#

but vanilla vs spigot

covert bluff
#

weird, wonder how plugins like the one that hides your plugins when you do /plugins did it

#

gonna be trying preprocess then

#

ty

young knoll
#

To be fair those plugins are dumb anyway

wet breach
# keen kelp simulating high ping

it is going to be hard to simulate high latency due to the fact that high latency is generally caused by distance. But in order to simulate it you would delay the packet being sent but have to pay attention to what you have your socket time outs set to. The default usually is 30 seconds without a response before it is forcefully terminated. If you are only delaying just a particular packet you can generally delay it as long as you want as long as you don't delay the ping packet from client and server.

covert bluff
#

i admire how duly written that is

young knoll
#

KeepAlive is the important one

keen kelp
#

is fine

#

Im prob not gonna delay it for more than like 1 second

#

hmm
java.lang.NullPointerException: Cannot invoke "org.bukkit.plugin.RegisteredServiceProvider.getProvider()" because "rsp" is null

#

VaultAPI

wet breach
#

you need to assign a value to RSP

keen kelp
#

RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);

#

I did

#

and I dont understand how this function can return null

young knoll
#

Do you have a perms plugin installed

keen kelp
#

no?

#

I just shaded in VaultAPI

young knoll
#

Vault is just an API

#

Also donโ€™t shade it

wet breach
#

if you are doing it in the onEnable, you need to wait for all the plugins to finish enabling, second you need a permission plugin. Vault is a bridge API

young knoll
#

I mean I guess you can shade it, but itโ€™s pointless since it needs to run as an actual plugin

wet breach
#

Yeah most API plugins are not made correctly ๐Ÿ˜ฆ

keen kelp
#

i remember someone saying VaultAPI acts directly on Bukkit so I dont think that's necessary?

wet breach
#

but Vault is an exception however since its goal is to bridge economy and permission plugins into a single API

young knoll
#

I donโ€™t know if it works with the built in perms system

#

Iโ€™ve never tried

keen kelp
#

Frenzy said yes so Il ltake it as a yes

young knoll
#

Regardless, make sure you have vault installed and set it as a depend for your plugin

quaint mantle
#

Yes, but how can I cast to block in inventoryholder?

dusty herald
#

why would you do that

quaint mantle
dusty herald
#

yes

quaint mantle
#

because I want to make lock

quaint mantle
#

OH wait

#

I found solution

#

like

#
                        InventoryHolder rightChest = doubleChest.getRightSide();;

                        TileState leftState = (TileState) leftChest;
                        TileState rightState = (TileState) rightChest;```
#

thanks you everyone

hoary tiger
#

Hello, I have the class

package me.Towster.Enchantments;

import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;

public abstract class SmeltingTouch extends Enchantment {
    public SmeltingTouch() {
        
    }
    
    public boolean canEnchantItem(ItemStack item) {
        return item.getType() == Material.WOODEN_PICKAXE;
    }
}

And I need the values for the constructor.

#

I've tried super(200) But it said that The Enchantment was undefined

keen kelp
#

yeah

#

cause your constructor doesn't take an int

hoary tiger
#

oop Alright

sage depot
#

can anyone go to help-server

hoary tiger
rugged girder
#

I am aware that we aren't meant to be asking about 1.17 here, but are there any known issues in regards to custom chunk/world generators? I'm having an issue with a generator that works on 1.16 to do with a Class Cast Exception

net.minecraft.world.level.block.state.IBlockData cannot be cast to class net.minecraft.world.level.block.ITileEntity 

But I at no point do that within my own code.

sage swift
#

who said not to ask about 1.17

#

does the generator do some fancy stuff with TEs?

rugged girder
#

* Please do not ask the about 1.17, see https://www.spigotmc.org/ instead

wet breach
rugged girder
#

It's a basic skygrid generator, so it does nothing fancy

#

It did do chest populating but that code is commented out

sage swift
#

?paste the full error, maybe?

undone axleBOT
rugged girder
sage swift
#

that looks very much like a vanilla problem but idk

rugged girder
#

My own conclusion was it wasn't an issue in my own code, but I'm not a professional, so I figured I'd check.

small canyon
#

Could someone please send the link to java 16

dusty herald
#

?java16

undone axleBOT
wet breach
#

think you are probably doing something async that shouldn't be

#

but I can't confirm however since I don't know/see your code so you would have to check that

pine elbow
#

this might be a stupid question but is there a way to figure out why a chunk was loaded? Like which player loaded it?

wet breach
#

check for players nearby?

#

just check what your view distance is, and you will know how far a player must be to cause the chunk to load for a player

dusty herald
#

ChunkLoadEvent#getChunk().getEntities() ๐Ÿคท

wet breach
#

that isn't going to work

dusty herald
#

figured

pine elbow
#

ahh

wet breach
#

Players will generally cause the chunk to load before they get close enough for that method to work

#

unless view distance is set super low

#

to give you an idea

#

view distance 10, means 400 chunks will be loaded around each player

pine elbow
#

right yeah, so im just gonna take the chunk x&z from the load event, multiply it to get block coords and then do a scan around that for players, right?

wet breach
#

pretty much

#

with a view distance of 10, you would need to check at least 20-21 chunks away

#

yeah, view distance of 10, means the square around the player is 20x20 chunks

sage depot
#

go to help-server

quaint mantle
#

Hello! How do you make custom recipe using itemstack? (I'd also like to determine the quantity of items I need)

#

I know I have to use events, but I don't have any tutorials.

keen kelp
#

RegisteredServiceProvider<Permission> rsp = getServer().getServicesManager().getRegistration(Permission.class);
currently returns null, what do I do

#

Permission is in VaultAPI so it should've be missing

wet breach
#

That isn't the permission class it is looking for

#

it is looking for the permission class from the permission plugin

#

if the plugin loads after your plugin does and you don't wait to check it can return null even though a permission plugin exists

keen kelp
#

but I dont want to specify a permission management plugin

wet breach
#

then not sure what you are attempting with Vault

#

Vault bridges between your plugin and the various permission plugins without having to set all those permission plugins as dependencies

#

if there isn't a permission plugin detected, then vault isn't going to do anything for you

#

so you need to code your plugin to handle when a permission plugin isn't present

keen kelp
#

Like I dont want to specify a single permission plugin to be used

#

I want it to support most if not every

wet breach
#

I don't think you are reading what I or others have said

keen kelp
#

I did I just didn't understand

wet breach
#

if you are trying to test your plugin you need to have a permission plugin on the server

#

so that Vault can interface with it

#

otherwise, Vault has nothing to interface with and will do nothing

keen kelp
#

I was told by someone the Vault Interfaces with Bukkit and perm managers just takes it from bukkit

wet breach
#

I am not aware of Vault interacting with the basic perms system

#

the basic perms system is an all or nothing thing

keen kelp
#

is that so?

wet breach
#

either everyone has the perm, no one has the perm or only ops of certain levels has the perm

keen kelp
#

but like VaultAPI adds the permission to bukkit right

#

like it's still possible to add permission without a permission managing plugin

sacred vector
#
            ItemStack hgaxe = new ItemStack(itemManager.smallAxe);
            ShapedRecipe hga = new ShapedRecipe(hgaxe);
            hga.shape("ggg", "gag", "ggg");
            hga.setIngredient('g', Material.GOLD_BLOCK);
            hga.setIngredient('a', Material.NETHERITE_AXE);
            getServer().addRecipe(hga);
``` So there is a strike through the new ShapedRecipe, saying that it is depricated, ( using IntelliJ ) will this cause errors? i'm moving my recipes to a seperate class exact same code, but now get this.
keen kelp
#

Ok lemme reask this question: a permission plugin doesn't need vault to manage permissions yes?

tame coral
tame coral
wet breach
sacred vector
keen kelp
#

and if I manually add a permission to Bukkit

tame coral
keen kelp
#

the permission manager can manage it without vault

sacred vector
wet breach
tame coral
tame coral
keen kelp
#

am I being misunderstood?

#

I feel like I am

wet breach
#

if all you are going to do is interact with the permission api, then you don't need Vault

keen kelp
#

I just want to create a permission

#

just to have it exisit

#

to be managed

#

just a permission to exist and make features only available for players with the perm

wet breach
#

The API doesn't do any of the managing at all, that is why permission plugins exist. But you don't need a permission plugin or vault, if you are going to interact and manage permissions in your plugin though

keen kelp
#

I dont want to flood help-dev can I take this to the dms

wet breach
#

you are not flooding it

#

just I am not entirely sure what exactly you are not understanding is all =/

keen kelp
#

ok so

wet breach
#

I can draw out diagrams if that helps lol

sacred vector
tame coral
#

Your plugin's main class

sacred vector
#

oh lol

wet breach
#

a reference to it anyways, few ways you can do it

sacred vector
#

wait now im confused, so my main class is LuwizSystems. I put that as a replacement for plugin, and getting red underline, to make a maven dependancy and or create a field in recipe class.

tame coral
#

i forgot how to do that lmao

keen kelp
#

My mental model rn is

Plugin ===[Registering permission]===> Permission Pool(Think of it as a box) ===[Given to]====> Players
and permission manager stands
Plugin ===permission===> Permission Pool(Think of it as a box) =[here]====> Players
and vault stands
Plugin ===[here]===> Permission Pool(Think of it as a box) =[Given to]====> Players

but from what everyone's telling my confused ass, it looks more like this

Plugin ===[VaultAPI]===> Vaullt's Own Permission Pool(Think of it as a box) =[Permission manager]====> Players

tame coral
#

Maybe LuwizSystems.class

sacred vector
#

๐Ÿ˜†

sacred vector
quaint mantle
#

I use java 16 the same version that minecraft vanilla server and client for 1.17 requires
it doesn't work with 8/9/11, so I assume the development of spigot requires java 16?

keen kelp
tame coral
keen kelp
#

cause Im really confused and I just need to reorgannise

#

just take a main in your constructor

#

and when main calls it pass this to it

sacred vector
tame coral
#

Try it then :)

wet breach
# keen kelp My mental model rn is Plugin ===[Registering permission]===> Permission Pool(T...

almost


with Vault

plugin --> VaultAPI --> Permission Management Plugin --> Spigot Permission registration/API

if you don't have Vault or a Permission Management Plugin its 

plugin --> Spigot Permission Registration/API

There isn't exactly a pool of permissions unless plugins provide it in their Plugin.yml and in that file dictates if its for ops by default or for everyone by default. The Permissions.yml file in bukkit is used to override these permissions in that file on what their defaults are.

quaint mantle
#

allright I will try to follow it with intellij or netbeans then

wet breach
#

So bukkits permission system is very basic

#

there is an API to register perms to players, but your plugin has to do it

#

the API doesn't check if a player has perms, you have to check that

keen kelp
#

so I can't register a permission without a permission management plugin?

wet breach
#

You can, just bukkits system isn't going to do stuff for you

#

it will just keep track of that permission exists

#

so you can use API methods later to check it

dusty herald
#

I mean you could tie plugin.yml commands to a specific permission

keen kelp
wet breach
keen kelp
#

I mean like in the Flow

#

like after Spigot Permission registration API, does it put the permission in the "pool"?

#

suppose pool is where every single permission lives

sacred vector
#
                event.getEntity().setHealth(getConfig().getInt("Zombie-Spawn-Health"));
                event.getEntity().damage(getConfig().getInt("Zombie-Damage"));
``` Would this be how I set health and damage? or would I use an attribute
chrome beacon
wet breach
#

As I said the API for the permission stuff is very basic, once a permission has been created and you assigned it to a player, the Player object will contain the permission for said player.

sacred vector
chrome beacon
sacred vector
chrome beacon
#

Use both

#

And remove that damage method call

smoky finch
#

Hey I wanted to check how openBook works and here is the craftbukkit code

    public void openBook(ItemStack book) {
        Validate.isTrue(book != null, "book == null");
        Validate.isTrue(book.getType() == Material.WRITTEN_BOOK, "Book must be Material.WRITTEN_BOOK");
        ItemStack hand = this.getInventory().getItemInMainHand();
        this.getInventory().setItemInMainHand(book);
        this.getHandle().openBook(CraftItemStack.asNMSCopy(book), EnumHand.a);
        this.getInventory().setItemInMainHand(hand);
    }

But I'm wondering if this is really safe? What stops someone from writing a hacked client to automatically put the book in another slot as soon as the packet arrives? That way you'll get both the book and your own item back.

sacred vector
#

i want them to be able to change the amount of damage they can do

keen kelp
#
MyPlugin --- [VaultAPI] ----> LuckPerms ---- [Spigot's permission registration API] ---> "The pool" //Registration
LuckPerms ----> "the pool" ----> player.attachPermission or whatever //Assigning to player```
is that right
quaint mantle
#

sex

smoky finch
#

I don't think that really answers my question.

chrome beacon
#

I awnsered the first part

#

It should be safe

smoky finch
#

I could've already assumed it's fine without knowing the second part that I asked, but I'm here to make sure, not assume anything.

chrome beacon
#

You don't really need that book though

smoky finch
#

I'm not sure what you mean by that.

chrome beacon
#

Just send a packet this way you will avoid all of your worries

smoky finch
#

I could've already done it differently myself yea. I'm asking why the formal API is not doing it differently.

wet breach
chrome beacon
#

That's not the "formal" API

#

That's straight up the internals of Minecraft

keen kelp
#

the bottom one is when I want to give a player a permission

chrome beacon
#

Mojang don't need anything else

smoky finch
#

My interpretation of "formal API" is anything that's provided by Bukkit/Spigot directly.

wet breach
keen kelp
#

for example I want to give them permission for bypassing chat filter

smoky finch
#

Not by mojang

chrome beacon
#

With a utility method from Spigot

keen kelp
#

and what if I have a permission manager that doesn't support vault

#

what will happen then

wet breach
keen kelp
#

also what I put in square quotes "[]"
stands for "by the means of" meaning there's other ways, this is just one way to do it

wet breach
#

so it is true you could encounter a permission plugin vault doesn't support, because it wasn't included in its development to interface with it

smoky finch
#

craftBukkit as a whole depends on mojang's code. You're completely missing the point. You're just going off on a tangent at this point.

keen kelp
#

then what will happen

wet breach
#

but in such cases you can just create a ticket on the repo for Vault to include support

chrome beacon
keen kelp
#

is it possible to register the permissions with VaultAPI

wet breach
#

Generally rare to encounter a permission plugin that Vault doesn't support though

keen kelp
#

so if I dont want to register perms through a Permission managing plugin(through vault api)

chrome beacon
#

I didn't read too carefully and assumed that was your code

#

Anyway what I said first is still true it should be safe

keen kelp
#

so it's more like

MyPlugin --- [VaultAPI] ---- [LuckPerms] ---- [Spigot's permission registration API] ---> "The pool" //Registration```?
smoky finch
keen kelp
#

if something in square quotes it means it can technically be skipped

#

for example I can just skip the permission manager and use VaultAPI to register a permission through spigt's permission api

#

also whenever someone catch a while md_5 please tell him to add a new help-development()

#

there's often two or more different threads going through here

wet breach
sacred vector
# chrome beacon Use both
                event.getEntity().setHealth(getConfig().getInt("Zombie-Spawn-Health"));
                event.getEntity().getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(getConfig().getInt("Zombie-Spawn-Health"));
``` Didn't work
chrome beacon
#

Then hp

sacred vector
wet breach
sacred vector
#

this is the exact same way i did this for player custom health

keen kelp
#

so if I dont want to use a permission manager, vault is no use correct?

wet breach
#

correct

#

Vault is a bridge plugin, if you remove what it bridges to, then it can't be a bridge no more ๐Ÿ˜‰

keen kelp
#

and even if I skip them

#

the permission manager can still manage the perms I registered

#

since permission manager is like in 2 parts

wraith rapids
#

real men build a bridge that leads to nothing

wet breach
#

lol

keen kelp
#

and either way it's writing to the pool and the assigning part of the permission managing plugin is pulling from the pool

#
Luckperms ---> the pool ----> assign```
#

this workflow can also work yes?

#

since the pool is provided by bukkit

wraith rapids
#

speaking of

#

frosty frost frost

wet breach
#

Not entirely sure if LuckPerms will detect the perms registered to a player via another plugin using the Bukkit methods and then do something about it

keen kelp
#

I dont have to go through a permission manager to register

wraith rapids
#

i need your intuitive evaluation on something

wet breach
wraith rapids
#

also what happened to tommy tom tom

#

he's not here anymore

wet breach
keen kelp
#

wait

#

you register perms to a player?

wraith rapids
#

i generally don't ask anyone anything

keen kelp
#

I thought "the pool" is global

wet breach
wraith rapids
#

i've asked 3 questions in the last 2 months and received 0 answers

wet breach
#

so even NPC's I think can have perms too

keen kelp
#

you mean assign or register

#

like a permission can just not exist for some player?

#

the pool is per-player?

wraith rapids
#

anyway, the deal is that I need to iterate over a set of elements in a specfic order, determined by some property of those elements

wet breach
#

reason I don't use the term Assign, is because the API doesn't assign anything. You tell the API to register your permission to whatever permissible object, and it will attach that permission to said permissible Object, whether it is a player or NPC

wraith rapids
#

say, elements with a higher value will be processed before elements with a lower value

#

processing the set of elements mutates those elements, possibly changing the value of this property

#

and I do this repeatedly

keen kelp
#

please just use assign to differentiate between registering that it exists and a permission being "given" to an entity just to save my tiny wallnut brain

wraith rapids
#

currently what I'm doing is iterating over a sorted list and then re-sorting it

#

but I was wondering whether it would be faster to use a binary heap to iterate through

#

and then heapify the unsorted result

keen kelp
#

well put them into an arrayList/Array and sort them

rugged girder
# wet breach does your plugin mess with chunks ?
think you are probably doing something async that shouldn't be
but I can't confirm however since I don't know/see your code so you would have to check that

It's a world generator, so yes.
No, nothing is happening async. I've been writing plugins with Spigot and Spigot api for the past 3 years, I know all about not using the bukkit api async.
Just following up, I can see the conversation has moved on (I've been waiting for an opportunity to respond but this permissions conversation is going in circles for a long time now and I have other things to do today), just wanted to answer the questions. I'll disappear again now.

keen kelp
#

I was actually doing this the other day

wraith rapids
#

heapifying an array is i think linear time if I don't remember wrong, but element accesses are logarithmic

keen kelp
#

where I had a bunch of lore objects that has to be turned into strings

#

and I want them to appear in a certain order

wraith rapids
#

while traversing a sorted list is constant time but actually sorting it is n log n at least generally

wet breach
#

O(Logn) time is what most of the methods are for Binary heap except for the get

wraith rapids
#

myeah

wet breach
#

get is O(1)

wraith rapids
#

well, for the first element, anyway

keen kelp
#

well if assign them each a value, I have an idea

wraith rapids
#

but, popping the first element involves restructuring parts of the array to maintain the heap property

keen kelp
#

to make it O(n)(I think)

wraith rapids
#

and since I need to iterate over the whole thing, I'd be popping the first element each time until it's empty

keen kelp
#

you want to sort an array by each object's value right

wraith rapids
#

i'm already doing that, but I'm wondering whether loosely sorting it into a heap would be faster

keen kelp
#

or is it a list

wet breach
wraith rapids
#

i can always implement it if it doesn't exist i guess, but I don't know of any suitable data structures off the top of my head

wet breach
#

Well could make it similar to MultiValuedMap from Apache.

keen kelp
#
int i=0;
SomeMethod(i,true);
System.out(i);


public static void SomeMethod(int Number, boolean bool)
{
if(bool)
Number = 1
else
Number = -1
}
#

what would this code output

wet breach
#

but not sure if that is going to have the efficiency you are looking for though

keen kelp
#

I am still confused to as to how java gives arguments to a method

quiet ice
#

Why would that be confusing

keen kelp
#

the output should be 1 right

wet breach
wraith rapids
#

i tried to benchmark it with some low effort solution earlier but results were inconclusive because the benchmark was shit

keen kelp
#

why?

wraith rapids
#

i guess i'll have to rig up a proper benchmark later

keen kelp
#

doesn't java give the instance instead of a copy or smth

quiet ice
#

if you use =, then the old instance still exists

wet breach
wraith rapids
#

ints don't have instances, either

#

int is primitive

keen kelp
#

you get what I mean

quiet ice
#

Just the particular field has a changed instance it now points to now

keen kelp
#

so I have to do like

#
int i=0;
i = SomeMethod(i,true);
System.out(i);


public static int SomeMethod(int Number, boolean bool)
{
if(bool)
return 1
else
return -1
}
#

this?

quiet ice
#

yes

#

You can also use arrays or other objects that hold your value

wet breach
#

that would output as 1 @keen kelp

keen kelp
#

but if I give smth like an array

#

I can directly act on it?

wraith rapids
#

the difference is, like I said, that int is primitive

#

an array is not

#

an array is an object

quiet ice
#

not directly

wraith rapids
#

java is pass by value

quiet ice
#

You will always have to do something like array[0] = value

wraith rapids
#

when you pass the array to the method, what you are doing it passing it the value of the reference

#

which points at the object

#

the method then modifies the object

#

and any variable that also points at the same object sees those changes as well

keen kelp
#

so modifying in a method only works for objects

wraith rapids
#

however, since an int is not an object

#

it is a primitive

quiet ice
wraith rapids
#

you are passing the value of the primitive itself

#

which is semantically a clone

wet breach
keen kelp
#

but the return value was never addressed?

quiet ice
#

this is just cursed

#

assigning a value in the return call, smh

wet breach
wraith rapids
#

i think oop should be underlined more in java tutorials

keen kelp
#

oh I see what youre doing

#

but this is cursed I agree

quiet ice
#

Just do not do that with static fields

wet breach
#

lol

quiet ice
#

With non-static fields it is more fine, provided it is used correctly

wet breach
#

I was merely giving an example, not what should be done ๐Ÿ˜›

wraith rapids
#

i see way too many noobs here every day who can write a script, some code, but can't write a program because the tutorial they used neglected project structure and oop entirely

keen kelp
#

but this wouldn't work if it's not in the same class right?

wraith rapids
#

people who write a 300 line method body just fine

#

but then spend 2 days trying to figure out "how to get plugin"

keen kelp
#

what is oop

quiet ice
#

ah, the rise of the monolith

wraith rapids
#

"scheduler needs plugin"

#

"how 2 get plugin"

wet breach
#

object oriented programming

keen kelp
#

isn't it order of operation?

quiet ice
#

wouldn't that be ooo

wet breach
#

lol

wraith rapids
#

OOOO

keen kelp
#

yeah that's what Im asking

#

it's either ooo or ooop

quiet ice
#

be we have two o's for oop

wraith rapids
#

of is generally omitted or lowercased in acronyms

keen kelp
#

Order
Of
Operation
Ooh
Ominous

#

OOOOO

wraith rapids
#

i'm about to go TOTALEN KRIEG on your ass

wet breach
#

Anyways, you are allowed to use functional programming in Java and sometimes is ok to do, but generally should stick with OOP principles though

keen kelp
#

NNY.expand("TOTALEN KERIEG");

quiet ice
#

I always want to write a wrapper for bukkit that is written in a procedural style and just makes everything pass and give java/lang/Object

wet breach
#

lol

wraith rapids
#

life without generics

keen kelp
#

there's Naming convention, but is there a folder/project structure convention?

quiet ice
#

I think I could use interfaces when binding but use ASM to make everything use Objects under the hood.

#

src/main/resources, src/main/java are the two source folders

wraith rapids
#

there are several

#

and nobody can agree on which one is the best

keen kelp
#

how does one undo commiting

#

I haven't pushed yet

sacred vector
#

so i have all of my recipes in another class, but i cant access them. im using a config to enable them it is set to true, but i cannot craft anything, as I was before moving them to a class.. do i have to do something else to it, so it could activate?

quiet ice
#

You could use git commit --amend

wet breach
#

if you haven't committed yet

keen kelp
#

Im using intellij GUI

quiet ice
#

or just git checkout HEAD~1 (not recommended)

wet breach
#

then its a matter of telling git to forget the changes you made

wraith rapids
#

and here we have the same "how 2 get plugin" issue but with a different flavor

keen kelp
#

I committed some files but forgot to select one

wraith rapids
#

grrr

sacred vector
#

and when adding the recipe i did

            getServer().addRecipe(hga);

but had to import

import static org.bukkit.Bukkit.getServer;

But i didnt before

keen kelp
#

can I un-commit?

quiet ice
#

No need to uncommit

wet breach
quiet ice
#

Given that that has side effects

#

Dont ask how to do that in intelliJ though

keen kelp
#

but like how does one do that XD

wet breach
#

use amend if you want to preserve the same message and include it in the same commit ID

#

if it doesn't matter

#

just commit again

keen kelp
#

so two commits you mean?

wet breach
#

yes

keen kelp
#

yeah ig it doesn't matter

#

message:
"oops forgot to commit a file lmao"

wet breach
#

I usually do multiple gits myself so I can have different messages for different things instead of clobbering everything into a single commit ๐Ÿ˜‰

#

also makes it easier when you want to undo something in a particular spot and not undo mass amounts of code too ๐Ÿ˜›

keen kelp
#

Any of yall can see my stupidity?

#

cause if no one can it's not stupidity

wet breach
#

you know you have an amend button right there

keen kelp
#

yep

wraith rapids
#

i meant to restart this machine yesterday

keen kelp
#

I just noticed it and that's why I ask did anyone notice it

#

I feel so much dumber

wet breach
#

I don't use intelliJ so I wouldn't have known before hand ๐Ÿ˜›

quiet ice
#

Some here

wraith rapids
#

about a month and a half ago I realized that the button highlight color in my os had reverted to blue from red

keen kelp
#

Imma go register for being legally blind now

wraith rapids
#

since the theme editor can't change that value, I changed it through the registry

wet breach
#

Well you get to join NNY @keen kelp because they are too ๐Ÿ˜‰

wraith rapids
#

and I'd need to restart for it to take effect

quiet ice
#

And honestly, I prefer CLI git as it is mostly granted to support commit signing

dusty herald
keen kelp
#

Yo NNY do you have a driver's license?

wraith rapids
#

yes

dusty herald
#

that's a weird thing to ask

wraith rapids
#

i don't even need to wear glasses according to my driver's license

wet breach
wraith rapids
#

I can drive basically anything that moves that isn't a main battle tank or a helicopter

dusty herald
#

I have to wear glasses or i would get a ticket

wraith rapids
#

or a bus

keen kelp
#

frost said youre blind

wraith rapids
#

i am

#

I literally see everything in 4

#

and am nearsighted as shit

#

yet I'm permitted to drive a hundred ton semitruck without glasses

keen kelp
#

I heard the little dots on the steering wheel is for blind drivers so they know what theyre pressing, is that true?

wet breach
wraith rapids
#

bureaucracy at its finest

opal juniper
#

Near sighted gang rise up

keen kelp
#

so is he blind or legally blind

quiet ice
#

well, neither

wraith rapids
#

i need to get my eyes lazered at some point to get rid of the 3 shadow images

#

but I haven't had the effort

wet breach
#

He is color blind, as far as legally blind I don't know

opal juniper
#

My man can see the shadow realm

keen kelp
#

legally blind means it affects the person enough to impact the person to the point in which they need assistance in seeing right

wet breach
#

he has only stated his color blindness XD

keen kelp
#

or smth like that

wraith rapids
#

i'm not colorblind lol I just prefer red because it makes the shadow images less severe

keen kelp
#

idk how McDonald's laws work so yeah :/

wraith rapids
#

i can still see other colors, unfortunately

keen kelp
#

unfortunately?

wet breach
opal juniper
#

Did you update ripcord NNYa

wraith rapids
#

nah

opal juniper
#

Please

wraith rapids
#

i didn't restart my machine either

#

just about everything has crashed and is pretty much tearing apart at the seams

#

but i just don't have the effort

keen kelp
#

how do you prefer to be called sir NNYaKNpGms0eUVpiSdHx

wraith rapids
#

you may call me jolly christmas hitler

wet breach
#

lol

opal juniper
#

It would literally take like 2 mins