#help-development

1 messages · Page 102 of 1

lilac dagger
#

there's a chart online somewhere

quiet ice
#

The same applies not to just loops

        testA: {
            System.out.println("Alive code");
            if (Boolean.valueOf("true")) {
                break testA;
            }
            System.out.println("Dead code");
        }
lilac dagger
#

this is a thing?

quiet ice
#

Yes, pretty useful from time to time

#

31 1F 00011111  US Unit Separator
Uh, no. No idea why a plugin would use the Unit seperator char

amber bronze
#

bump

valid sorrel
raven fern
#

anyone recognizes that sound at 1:10

gray merlin
#

Is there a way to edit that first version?

#

The sole "1.0"

lilac dagger
#

upload again

#

delete the prev

#

or in your case upload both again

#

and delete the previous

gray merlin
#

Ah I see

#

Thanks

tropic ingot
#

why "<string>" it's red?
How can i fix?

eternal oxide
#

String not string

tropic ingot
#

oh lol, thx

#

ehm... (is the linecode of "List<String> [...]")

eternal night
#

Wrong list

#

Make sure you import java.util one

tropic ingot
eternal night
#

I wasn't talking about array list

#

The List interface is wrong

#

Which, you have a wild card java.awt import there

quiet ice
#

Generally you don't want to have a java.awt import

smoky oak
#

if i require a instance of my main class in a file handler (to call getResource) should i grab that instance over the Bukkit.getPlugin method, or should i create an object of the file handler class, pass it the main instance, handle the file, then discard the handler class, or should i make the file handler class an object in the main class and pass it around from there?

onyx fjord
#

no idea why

tardy delta
#

looks bloat lol

#

trying to get rid of as many fields as possible

#

anyways how do i do like syntax highlighting for true and false in javadocs? tried {@link true} but doesnt seem to work?

eternal oxide
#

try <code>true</code>

tardy delta
#

i guess that works

eternal oxide
#

all LivingEntities have attributes

#

unless you are doing it all fake entity with packets, you have attributes

#

myMob.getBukkitEntity()

#

then its entity.getAttribute(GENERIC_MOVEMENT_SPEED).addModifier(...

#

yes

#

you are not using packets for everything which means they exist in the world

#

if they exist in the world they have a Bukkit entity

quiet ice
#

the better question is how to get the bukkit entity

eternal oxide
#

I already said above

quiet ice
waxen plinth
#

Isn't there literally Bukkit.getEntity(UUID)

quiet ice
#

I mean yes

eternal oxide
#

he already has the NMS entity and it exists in teh world so it nmsEntity.getBukkitEntity()

waxen plinth
#

Oh lol

quiet ice
#

I knew that there was a better way

reef lagoon
#

Is this where the .jar generates

amber bronze
#

bump

tardy delta
#

is there some alternative for Validate.notNull(Object, String) in the java.lang package?

smoky oak
tardy delta
#

why not just use di?

#

im not completely understanding

smoky oak
#

you mean passing the instance from elsewhere?

tardy delta
#

i mean just do FileHandler f = new FileHandler(plugin); h.doStuff()

reef lagoon
#

I tried, it's hard

tardy delta
#

reflections time?

reef lagoon
#

paper

#

idk if that works

#

I just used only paper

onyx fjord
#

can plugin run a different plugin in itself?

#

something like fawe does idk

mellow pebble
#

can someone help me about yml configuration

#

for example if i have key called Items and inside of that key i have 3 other keys called KitPvP HCF and Practice how would i get list of them

#

for example if someone adds even more key to Items key

#

i would like to grab all key inside Items key and have it as list so i can grab size of list

tardy delta
#
BukkitWiki

The Configuration API is a set of tools to help developers quickly parse and emit configuration files that are human readable and editable. Despite the name, the API can easily be used to store plugin data in addition to plugin configuration. Presently only YAML configurations can be used. The API however was designed to be extensible and allow ...

mellow pebble
lime jolt
#

anyone know how to create an npc and check if it was right clicked?

eternal oxide
#

getConfig().getConfigurationSection("items").getKeys() probably

mellow pebble
#

i will try and let you know

mellow pebble
#

what should that boolean represent

#

if you know maybe

eternal oxide
#

what boolean?

#

its ketKeys() or getKeySet() I forget

mellow pebble
#

it is getKey()

#

but it expects boolean

#

inside ()

eternal oxide
#

ah false

#

you don;t need a deep dive

gray merlin
#

What is the "Native Minecraft Version" of a plugin?

mellow pebble
sonic sky
#

.getKeys(false)

mellow pebble
#

version in which plugin is written

#

🤷‍♂️

gray merlin
#

like i started in 1.7.10 and ported it to every version

mellow pebble
gray merlin
#

XD

mellow pebble
#

@eternal oxide umm yeah hi that didnt really work for me Items key is not empty it has 3 keys in it but it displays 0

eternal oxide
#

then your path is wrong

#

or you are not reading teh config you think you are

tardy delta
#

hmm would it matter where i put my benchmark class for jmh?

#

probably create a benchmarks package or smth

mellow pebble
eternal oxide
#

show some code

mellow pebble
#

this is config.yml literally

eternal oxide
#

show some code

eternal oxide
#

change to true and see what that gives

mellow pebble
#

still 0

eternal oxide
#

I'm going to guess the config you think is in your jar isn't

#

but it shoudl be null on the getsection if that was the case

amber bronze
#

bruv

mellow pebble
smoky oak
#

sounds like a @e

eternal oxide
#

yes

#

or add a modifier

undone axleBOT
eternal oxide
#

what is their normal generic speed?

#

oh its flying

#

set their fly speed

#

sysout its base value so you know what you are changing

tardy delta
#

few minutes now, what have i done

mellow pebble
#

@eternal oxide did you found answer to my problem myb

quiet ice
tardy delta
#

fuck

#

just wanted to try

hasty prawn
#

No

quiet ice
hasty prawn
#

maxFlySpeed is null

#

It says that

quiet ice
#

?jd-s

undone axleBOT
mellow pebble
#

how do you guys have permission to send pics here ?

tardy delta
#

i should find a good tutorial about how to use them

hasty prawn
#

No, Vexes don't have a FLYING_SPEED attribute

quiet ice
#

no, basically this attribute does not exist

hasty prawn
#

Flying Speed is for Parrots and Bees

quiet ice
#

And players I guess

hasty prawn
#

Surely they use movement speed

#

What did you set it to

#

Default for Vexes is 0.7

#

Change it to like 0.2 or 0.1 and see what they do

quiet ice
#

...

hasty prawn
#

Well you're constantly telling them to move there lol

mellow pebble
#

Can someone help me with this so this is my config.yml that is default config in resources folder and all i want to do i just get number of these keys in key called "Items" there is now 3 but idk someone might put 20 i really dont know so basically i just need help how to get that number and here is another picture of my java code that prints to cmd number of keys but at the moment number is 0 even though there is 3 key inside "Items" key

hasty prawn
mellow pebble
hasty prawn
#

Oh, wait no. It's probably because the values are null

mellow pebble
#

nope

hasty prawn
#

Change them to something else

mellow pebble
#

they were empty before

#

also nothing

hasty prawn
#

Well that's not going to work either, set an actual value to them.

mellow pebble
#

okay sure

hasty prawn
#

Don't move them in the tick method

#

Just do nothing

#

Yeah

tardy delta
mellow pebble
hasty prawn
mellow pebble
hasty prawn
mellow pebble
hasty prawn
#

And the config is changed?

mellow pebble
#

yup

hasty prawn
#

If you reopen it in Notepad or something

#

Wdym activate the goal? Once you add it to their goalSelector it's added

#

Yeah

mellow pebble
hasty prawn
#

Ok whats the error

#

?paste

undone axleBOT
mellow pebble
#

oh

#

okay

#

sure

#

or that

#

one sec

hasty prawn
#

Oh that works too all good

mellow pebble
#

okayy

hasty prawn
#

Whats GermitHC line 200

mellow pebble
#

fixed

#

on sec let me restart everything

tardy delta
#

uh oh

hasty prawn
#

It can

#

Where are you setting it?

eternal night
#

I mean, where do you define myMob ??

mellow pebble
#

@hasty prawn i fixed that error and i restarted server and still 0 even though i added strings on each key

eternal night
#

inside the player events

#

what

#

wtf is going on

#

your listener is also a mob goal ?

hasty prawn
undone axleBOT
eternal night
#

this is not how object orientation works

#

you are creating a new player events

#

and then expect your own instance's value of myMob to magically not be null

eternal night
#

which, please separate a goal selector from the listener

#

two separate things

hasty prawn
hasty prawn
#

That... doesn't make sense.

mellow pebble
#

well i really dont know

#

i added to player interact event so when i click on selector

#

it grabs those key and print in cmd

#

and 0

#

or just []

#

depends if i put .size

hasty prawn
#

Print getConfig().getKeys(false); and see what it says

onyx fjord
#
    public boolean isLunar() {
        return lunarManager.getLunar().isRunningLunarClient(entity);
    }
    private LunarClientAPI clientAPI;
    public boolean isLunarInstalled() {
        return Bukkit.getPluginManager().isPluginEnabled("LunarClient-API");
    }

    public void setupLunar() {
        if (!isLunarInstalled()) return;
        clientAPI = LunarClientAPI.getInstance();

    }

    public LunarClientAPI getLunar() {
        return clientAPI;
    }

any ideas why getLunar() returns null on isLunar?

#

setup lunar runs on startup btw

hasty prawn
#

Is your plugin loading before that Lunar one?

quiet ice
onyx fjord
#

wdym

hasty prawn
# mellow pebble

Okay and print getConfig().getConfigurationSection("Items").getKeys(false); now

quiet ice
#

isPluginEnabled returns only true once the plugin finished executing .onEnable()

undone axleBOT
hasty prawn
#

lol

#

Honestly, no idea.

onyx fjord
mellow pebble
#

great

#

well thank you really

quiet ice
hasty prawn
#

Make two separate classes, not a nested one

eternal night
#

I mean, wat ? How do you have an issue here ?

#

you can still grab the NMS instance through the getHandle() call

#

just, like, store the getHandle() result in a variable ?

quiet ice
#

The handle IS your mob

sacred mountain
#

can anyone tell me the basics of packets and how theyre useful

quiet ice
#

Already done by default by bukkit

onyx fjord
#

maybe i should schedule it, because scheduler runs after startup is completed

hasty prawn
eternal night
#
((CraftVex) newVex).getHandle().goalSelector.addGoal(0, new MyGoal(((Mob) ((CraftVex) newVex).getHandle())));

to

final var vexHandle = ((CraftVex) newVex).getHandle();
vexHandle.goalSelector.addGoal(0, new MyGoal(vexHandle));
vexHandle.otherStuffHere()
#

like there

sacred mountain
quiet ice
eternal night
#

idk what your issue is here

sacred mountain
#

i just feel like it looks like a hacky workaround

hasty prawn
#

They are, usually.

onyx fjord
eternal night
#

Yea maybe try to learn some java first 😅

hasty prawn
#

Spigot has most the stuff you would ever need so we don't have to use packets.

eternal night
#

especially the deep dive into NMS will need some strong fundamentals

hasty prawn
sacred mountain
#

the only packet i've ever sent was a demo mode screen popup that was released in some beta version or soemthing

quiet ice
sacred mountain
#

it apparently still exists today

hasty prawn
#

It does

quiet ice
#

(or running it too late)

onyx fjord
sacred mountain
#

i'm past the pit of despair in java i think, i'm actually starting to get a grip on more things instead of jamming stackoverflow code into my plugins

onyx fjord
#
    public void setupLunar() {
        if (!isLunarInstalled()) return;
        clientAPI = LunarClientAPI.getInstance();
        System.out.println(isLunarInstalled());
    }
quiet ice
sacred mountain
#

but i still sout everything if i encounter a npe

onyx fjord
quiet ice
#

Within your setupLunar block

hasty prawn
onyx fjord
#
    public void setupLunar() {
        if (!isLunarInstalled()) return;
        clientAPI = LunarClientAPI.getInstance();
        System.out.println(isLunarInstalled());
        System.out.println(LunarClientAPI.getInstance());
    }
#

like this?

quiet ice
#

Yeah

vital sandal
#

isnt getLunar() is nulL ? try print that out

quiet ice
#

Also if LunarClientAPI extends JavaPlugin you are better off doing clientAPI = JavaPlugin.getPlugin(LunarClientAPI.class);

hasty prawn
# sacred mountain it apparently still exists today

Btw, I think this sends the Demo screen..

((CraftPlayer) player.getHandle().connection.send(new ClientboundGameEventPacket(ClientboundGameEventPacket.DEMO_EVENT, 0));

Though that only works with Mojang maps, you'd have to find the obfuscated names if you're not using them.

onyx fjord
quiet ice
#

okay

#

That only leaves out the possiblity that you have multiple instances of LunarManager

onyx fjord
#

erroring class runs much much later

#

when i join

glad prawn
#

I provide custom item to player and each item will have its own distance and I will use them for event. What should I do if I want to access the distance of the item the player holds?.

quiet ice
#

I guess that should conclude the search

onyx fjord
#

one is in PacketPlayer and one is onEnable

quiet ice
#

Unless that is fully intended and you are running .setupLunar on both instances and both run as you like

#

Are you sure that it does not teleport them?

#

It is probably the move method used by endermen

eternal night
#

moveTo is just a teleport yes, if you wanna have a mob navigate, you'll need to grab a mobs navigation

worldly ingot
#

Player#showDemoScreen()

visual tide
#

Demo screen? did I miss smth

quiet ice
#

why would one want this

worldly ingot
#

I actually use it at work. It shows basic controls like WASD and whatnot

#

You can also change the text on it using a resource pack

visual tide
#

ooo

eternal night
#

just a method.((CraftVex) vex).getHandle().getNavigation().moveTo(x,y,z, speed); or if you already have the handle, handleVariableName.getNavigation().moveTo(x,y,z, speed);

mellow pebble
#

this is the error also

#

i think the problem is that i converted set to list but im not sure how to use sets

tall dragon
#

pwease use ?paste

mellow pebble
#

sure sure

#

i really dont see where is invite ?

#

OPH

#

OH

#

yeah sry

#

it is lore that is normally on item in gui

#

it must have embeded it HAHAHA

#

sry i really didnt see it but ill paste it rn

#

?paste

undone axleBOT
tardy delta
#

all

tall dragon
#

he prolly copy paste from different channel

#

and got the invite with it?

mellow pebble
tall dragon
#

lol discord embeds that?

#

dang discord smort

mellow pebble
#

so discord probably embeded it

thorn crypt
#

Hi, I was on the doc and saw that getItemInHand() was deprecated and I now can use getItemInMainHand() but it doesn't work for me, like it doesn't exist

tall dragon
mellow pebble
tall dragon
#

your name is null

mellow pebble
#

well idk how can it be null

#

because in set there is name

tall dragon
#

do you have the correct path?

mellow pebble
#

Items.KitPvP.DisplayItem

dim bronze
mellow pebble
#

modes.get(i) should get KitPvP

kind hatch
thorn crypt
tall dragon
#

yea ur missing a dot indeed

mellow pebble
#

well

#

now it is working

#

but now im not sure what to do

#

it only did like 1 item

#

one sec

#

let me do reaload

#

and ill send you ss

#

im not sure if i picked the right loop to do this thing

tall dragon
#

@mellow pebble

            List<String> modes = new ArrayList<>(getConfig().getConfigurationSection("Items").getKeys(false));
            int numberOfModes = getConfig().getConfigurationSection("Items").getKeys(false).size();

right here why don't you get the amount using modes.size();?

mellow pebble
#

should i change it ?

tall dragon
#

i mean it does the same while being more performant

#

your choice but i would

#

also. you ever heard of ItemBuilders?

#

they could rlly help u here neaten up your codee

mellow pebble
tall dragon
#

bassically a class that helps you easily create itemstacks

mellow pebble
#

i just want to in each loop

#

use another part of config.yml

#

to set 3 items

#

in gui

#

with lore

#

and on right slot that is set in config

tall dragon
#

im pretty sure u dont even need the amount then

#

just loop over the string list

#

and use the string as key in the path

mellow pebble
#

String mode:modes

tall dragon
#

yh

mellow pebble
#

yeah intellij also told me im dumb

#

HAHAHA

tall dragon
#

yeh intellij do be like that

mellow pebble
#

well i came to part where it works but not fully

thorn crypt
#

How can I set the damage of an attacker to 0.7 ? I tried using setLastDamage but didn't worked

mellow pebble
#

it only shows only practice item

#
@EventHandler
    public void onPlayerInteract(PlayerInteractEvent e){
        if(e.getPlayer().getInventory().getItemInHand().getType().equals(Material.valueOf(getConfig().getString("Item")))){
            Inventory gui = getServer().createInventory(e.getPlayer(), getConfig().getInt("Size"), getConfig().getString("MainColor") + "§lSelect a Server");

            List<String> modes = new ArrayList<>(getConfig().getConfigurationSection("Items").getKeys(false));
            for (String mode : modes) {
                ItemStack stack = new ItemStack(Material.valueOf(getConfig().getString("Items." + mode + ".DisplayItem")), getConfig().getInt("Items." + mode + ".Amount"));
                ItemMeta meta = stack.getItemMeta();
                meta.setDisplayName(getConfig().getString("MainColor") + getConfig().getString("Items." + mode + ".Name"));
                ArrayList<String> lore = new ArrayList<>();
                lore.add("§7Gamemode for 24/7 PvP");
                lore.add(" ");
                lore.add("§6 * §fSafezone Teleporters");
                lore.add("§6 * §fNew Points System");
                lore.add("§6 * §fCustom Enchants");
                lore.add("§6 * §fDropdown Spawn");
                lore.add("§6 * §fAction House");
                lore.add("   ");
                lore.add("§7More info on §6§ndiscord.gg/asgard");
                lore.add("   ");
                lore.add("§7Status: §cOffline");
                lore.add("§7Players: §f0");
                meta.setLore(lore);
                stack.setItemMeta(meta);
                gui.setItem(getConfig().getInt("Items." + mode + "Slot"), stack);
            }
            e.getPlayer().openInventory(gui);
        }
#

again

#

omg

#

wait

tall dragon
#

?paste 😄

undone axleBOT
mellow pebble
#

i only got this one

#

not 3 of them

#

each on their own slot

tall dragon
#

but u do understand for all items the lore will be the same right now right

kind hatch
mellow pebble
tall dragon
mellow pebble
#

now it works

#

i just need to make lores

#

but do you guys know how should i make "connect" part

#

like how should i connect player to other server when they click on item

tall dragon
#

yes thats quite easy

mellow pebble
#

i assume it is

#

but i really dont know how atm

tall dragon
#

you may wanna read this

#

mb

#

not that one

#

thats for the proxy

mellow pebble
#

i will ty

thorn crypt
#

How can I set the damage of an attacker to 0.7 ? I tried using setLastDamage but didn't worked

tall dragon
#

can you elaborate on "it does not work"

#

it just does nothing?

gray merlin
#

Does Crucible have different nms mappings than Spigot?

worldly ingot
#

Never heard of Crucible

#

Oh it's a fork of Thermos lol

gray merlin
#

oh i see

#

does thermos have different mappings then?

thorn crypt
worldly ingot
#

I can't figure out what mappings they use. They're on 1.7 though so...

gray merlin
#

oh really?

worldly ingot
#

They're probably using Forge mappings as those were one of few mappings around at the time, and among the most popular for modding

gray merlin
#

i see

cyan compass
#

Because i can't figure out how from the docs. How in the world do i make it rain in 1.12.2?

worldly ingot
#

Should be setWeather() iirc

cyan compass
#

is it in the world?

#

like world.setWeather?

worldly ingot
#

World#setWeatherDuration()

cyan compass
#

Tried that and it didn't do anything

worldly ingot
#

World#setStorm() as well

thorn crypt
cyan compass
#

Tried that as well

worldly ingot
#

Weather is weird in Minecraft. You would have to call storm first

world.setStorm(true);
world.setWeatherDuration(300);```
thorn crypt
cyan compass
#

That's my code

#

Inside a runnable

tall dragon
#

so it has to

worldly ingot
#

Sec

#

Slow internet. Takes years for me to test anything -,-

cyan compass
#

Want the entire class file?

thorn crypt
# tall dragon it extends the other one

Ok probably IntelliJ who was doing shxt, I replaced EntityDamageByEntityEvent to EntityDamageEvent and then re replaced it by EntityDamageByEntityEvent and now it's telling me that is exist thanks x)

worldly ingot
#

Just gonna see if this works on its own

#

because I'm fairly certain it should. Though I've known weather to be very finnicky in the past

worldly ingot
#

🌧️
aPES_RainbowHype

tall dragon
#

yess thats it!

worldly ingot
#
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (!(sender instanceof Player player)) {
            return true;
        }

        player.getWorld().setStorm(true);
        player.getWorld().setWeatherDuration(300);
        // ...
    }```
#

I have this and it seems to rain fine. So there's likely something else preventing yours from raining

cyan compass
#
public class WeatherRunnable {

    private final Plugin plugin;

    public WeatherRunnable(Testplugin plugin) {
        this.plugin = plugin;
    }

    private final BukkitRunnable weatherRunnable = new BukkitRunnable() {
        int cooldown = 0;
        @Override
        public void run() {
            if (cooldown == 0) {
                cooldown = 10;
                int randomNum = ThreadLocalRandom.current().nextInt(1, 10 + 1);
                if (randomNum == 1) {
                    plugin.getServer().getWorld("world").setStorm(false);
                    //plugin.getServer().getWorld("world").setWeatherDuration(6000);
                    plugin.getServer().broadcastMessage("Clear!");
                } else if (randomNum == 2) {
                    plugin.getServer().getWorld("world").setStorm(true);
                    //plugin.getServer().getWorld("world").setThundering(true);
                    //plugin.getServer().getWorld("world").setThunderDuration(6000);
                    plugin.getServer().broadcastMessage("Thunder!");
                } else {
                    plugin.getServer().getWorld("world").setStorm(true);
                    plugin.getServer().getWorld("world").setWeatherDuration(6000);
                    plugin.getServer().broadcastMessage("Rain!");
                }
            } else {
                cooldown--;
            }
        }
    };

    public void setWeatherRunnable() {
        weatherRunnable.runTaskTimer(plugin, 0, 20);
    }``` This is my entire code
#

Old commented code from testing

#

But it never rains

slate mortar
#

i want to go whereever you live :/

worldly ingot
#

First and foremost I'd make a variable for World. I can't possibly imagine it's causing your issue, but it will at least help with readability

cyan compass
#

alright

tall dragon
slate mortar
#

lol true actually

worldly ingot
#

Though there's nothing here (aside from the commented out code that needs to be uncommented) that makes me think this wouldn't work

cyan compass
#

hm

cyan compass
tall dragon
#

yea

#

pretty sure u can

slate mortar
#

only when using mods

#

in vanilla you can't

tall dragon
#

optifine thing probs

cyan compass
#

I'm not using optifine

tall dragon
#

ah nvm then

worldly ingot
#

With OptiFine and some Fabric mods, yeah, though if you turn off particles you can disable it as well I believe

slate mortar
#

in case of sodium, it's here

worldly ingot
#

Oh that just disables the splashing particles

#

Rain still shows with particles decreased

slate mortar
#

ah

#

under details -> Weather there's also an option

#

for processing of weather effects

cyan compass
#

It is broadcasting to the world

slate mortar
cyan compass
#

waiting on my client to load

cyan compass
slate mortar
#

do you use optifine?

cyan compass
slate mortar
#

or some optimization mod?

cyan compass
#

BetterFPS

slate mortar
#

i don't think you should ever run mc without any optimization mods lol

#

isn't betterfps like
giving you +5 fps? lol idk

tall dragon
#

betterfps might be disabling rain then

cyan compass
#

It isn't cause rain works just fine in singleplayer

slate mortar
#

aight

#

so thats not the issue

#

what's when you just disable the plugin, and do /weather rain

#

does it rain then?

cyan compass
#

yes

smoky oak
slate mortar
#

wdym

worldly ingot
#
if (cooldown-- > 0) {
    return;
}

cooldown = 10;
World world = Bukkit.getWorld("world");
int value = ThreadLocalRandom.current().nextInt(1, 11);

if (value == 1) {
    // Clear
    world.setThundering(false);
    world.setStorm(false);
}
else if (value == 2) {
    // Thunder
    world.setThundering(true);
    world.setWeatherDuration(6000);
}
else {
    // Rain
    world.setThundering(false);
    world.setStorm(true);
    world.setWeatherDuration(6000);
}```
#

If I were to give it a small rewrite, this should work

cyan compass
#

So that should work?

worldly ingot
#

Minecraft's weather sucks

#

It should, yeah. In theory

slate mortar
#

omfg i finally made my http-redirection work, gosh

tall dragon
cyan compass
#

Changed World world = Bukkit.getWorld("world"); to World world = plugin.getServer().getWorld("world");

slate mortar
worldly ingot
#

Both are equivalent

#

Bukkit#getWorld() and plugin.getServer().getWorld() (Server#getWorld()) refer to the same method

slate mortar
#

Bukkit's class just calls the getServer().* anyways

worldly ingot
#

yep

slate mortar
#

still no idea why it exists then, feels like double-use for no reason

#

choco, enlighten me

cyan compass
#

Weather still appears to not be doing anything

tall dragon
#

like most weird things in the api

worldly ingot
#

Why Bukkit exists?

slate mortar
#

not really

worldly ingot
#

*the class

slate mortar
#

more like
why the methods exist, tho they just run another accessable method

smoky oak
#

so we can do /bukkit:<command> on servers where we cant do /<command>

worldly ingot
#

The Bukkit class is the bridge between API and implementation. Everything works the way that it works because it exists. It mirrors all methods in Server for the sake of convenience

slate mortar
#

aight ig

cyan compass
#

And to test i am using a 100% vanilla client now

worldly ingot
#

So if your weather isn't changing by this point, I have a feeling your runnable isn't even being called. Unless you're actually seeing the debug messages that you had

cyan compass
#

But still... no rain

slate mortar
worldly ingot
#

In which case I'm entirely lost

slate mortar
#

should

cyan compass
#

inside my main class

    private final WeatherRunnable weatherRunnable = new WeatherRunnable(this);

    @Override
    public void onEnable() {
        weatherRunnable.setWeatherRunnable();
    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }```
worldly ingot
#

oh literally just on startup lol

cyan compass
#

yeah

worldly ingot
#

And no errors on startup, nothing?

cyan compass
#

nope

worldly ingot
slate mortar
#

development be like

cyan compass
#

weather runnable

    private final Plugin plugin;

    public WeatherRunnable(Testplugin plugin) {
        this.plugin = plugin;
    }

    private final BukkitRunnable weatherRunnable = new BukkitRunnable() {
        int cooldown = 0;
        @Override
        public void run() {
            if (cooldown-- > 0) {
                return;
            }

            cooldown = 10;
            World world = plugin.getServer().getWorld("world");
            int value = ThreadLocalRandom.current().nextInt(1, 11);

            if (value == 1) {
                // Clear
                world.setThundering(false);
                world.setStorm(false);
            }
            else if (value == 2) {
                // Thunder
                world.setThundering(true);
                world.setWeatherDuration(6000);
            }
            else {
                // Rain
                world.setThundering(false);
                world.setStorm(true);
                world.setWeatherDuration(6000);
            }
        }
    };

    public void setWeatherRunnable() {
        weatherRunnable.runTaskTimer(plugin, 0, 20);
    }```
#

still. Nothing

tall dragon
#

is this the only plugin on the test server?

cyan compass
#

Yup

tall dragon
#

hmmmmmmmm

slate mortar
#

maybe dumb question, but is your world actually called "world"? most likely

cyan compass
#

Yup

slate mortar
#

noooooooo

#

it does this agaiiiiiin

marsh plaza
slate mortar
#

most likely corrupted playerdata file

cyan compass
#

I'm just confused cause the weather should be working

tall dragon
marsh plaza
#

where do i find them?

lime jolt
#

anyone how to create minecraft plugin using vscode?

slate mortar
#

world/playerdata/<your-uuid>.json

#

or is it json? idk

tall dragon
slate mortar
#

deleting it deletes all your items and stuff, so be aware

cyan compass
tall dragon
#

try dis ```java
p.getWorld().setStorm( true );
p.getWorld().setWeatherDuration( 100000 );

cyan compass
#

sorry

#

what

#

Oh p is plugin

#

nvm

marsh plaza
cyan compass
#

That does the exact same thing my code does

slate mortar
tall dragon
#

just try it

marsh plaza
slate mortar
#

shouldnt

cyan compass
slate mortar
#

uid.dat afaik stores only world-settings itself

marsh plaza
#

ok well idk, if u can help please dm me so i can show u my file stuff and u can help in a vc or smthin

slate mortar
#

i can't help more than by saying delete/validate your playerdata-file

marsh plaza
slate mortar
#

of the player who has these issues

#

because youre sitting?

#

ah nvbm

#

didnt see the arrow

marsh plaza
#

i stood up before i tped

slate mortar
#

like i said, something in the playerdata-file is likely corrupt

#

either you find out what exactly it is, or you delete the whole file, if you don't care about your inventory and locations etc

mellow pebble
#

?paste

undone axleBOT
marsh plaza
#

ill delete it so it regerates

slate mortar
#

best method ig

mellow pebble
#

any help ?

cyan compass
#

I've sat trying this insanity for so long that my minecraft world has decided to rain naturally twice

slate mortar
#

lol

mellow pebble
cyan compass
#

Like come on, it shouldn't be this hard to make it rain

slate mortar
#

the current item is likely null

#

@mellow pebble

mellow pebble
slate mortar
#

nvm it even says lol

#

you likely clicked an empty slot in your inventory

mellow pebble
#

i dont have anything in gui

#

i have neather star in hand

#

i dont click on anything in gui

mellow pebble
slate mortar
#

when does that error appear?

mellow pebble
#

not sure

#

really

#

just saw it happends

#

i mean i have some issue with my gui

#

because it doesnt set items in it as it did like few mins before

slate mortar
#

usually that happens when you click on empty slots (aka null-items)

mellow pebble
#

no error in cmd

slate mortar
#
    public void onInventoryClick(InventoryClickEvent e){
        switch (e.getCurrentItem().getType()){

there's so much wrong with this anyway

#

sec

mellow pebble
#

sure

#

i mean

#

i would like to hear some tips and tricks how to make it better

cyan compass
#

so... I'm just gonna assume spigot doesn't work for weather control

chrome beacon
#

It does

mellow pebble
cyan compass
#

Couldn't find anything helpful

slate mortar
#

still no idea why these urls don't show anything lol

slate mortar
#

for example

#

?paste

undone axleBOT
slate mortar
#

nvm this doenst too

#

huh

#

ive meant those

#

uh

mellow pebble
#

well items are back in gui

#

ty

#

❤️

slate mortar
#

idk how theyre called

#

embeds i think

#

for example

#

this

#

dunno how i can make this for my url, but idc to be honest

grim ice
#

u cant

#

the website owner does

slate mortar
#

i#

#

i am the website owner KEKW

grim ice
#

ah

#

its html flags

slate mortar
mellow pebble
#

owner of which website ?

grim ice
#

google it

mellow pebble
#

oh yeah

#

okay

#

lol

slate mortar
#

i see

mellow pebble
#

you can make it easily

#

plenty of tuts on internet

#

would be something with meta tags

grim ice
#

im bored

slate mortar
#

from indians with bad microphones? KEKW

#

indians

#

is that even right word? lol

grim ice
#

yes

slate mortar
#

pog

timid jetty
#

whats the use case for lazy metadata

mellow pebble
slate mortar
#

there was this guy on yt, i suppose from india

#

who literally teached me completely how to code

#

loved himn

#

but most people i feel, just have bad mic's and sound awful cuz of that

grim ice
#

not really

#

most indians ive watched on youtube suck in most languages

slate mortar
#

lol

grim ice
#

no one really knows how to code in the internet, if they do then they use discord

quiet ice
grim ice
#

almost every indian i see, doesnt know what are naming conventions

slate mortar
#

funfact: game doesn't even have raytracing that works KEKW

tall dragon
#

my experience is that indians are good at setting up bad tech support scams

slate mortar
#

i love youtube

grim ice
#

or what is di

slate mortar
#

i feel like indians make the best tech scam callcenters i've ever seen

tall dragon
#

yea thats pretty easy when ur pretty much the only ones doing it

lilac dagger
#

oh boy

slate mortar
#

maybe you don't get scammed by them, but you're far away from their "audience"

#

70 y/o granny doesn't know what you know

lilac dagger
#

they're the most vocal type of scammers i feel like

tall dragon
#

oh i got plenty of calls from em

#

always had some fun

lilac dagger
#

there's some scams that are the scariest shit

slate mortar
#

i had 1 call in my entire life

tall dragon
#

going along with em making em frustrated

slate mortar
#

wanted to sell me a fridge KEKW

#

i was like "uhh, i don't need a new fridge, mine works fine"
and i got 200 answers on why their fridge is the best

#

for like 2k euros KEKW

lilac dagger
#

only 2k? 😮

slate mortar
#

mine was like 200€ or smt

quiet ice
#

I never pick up my phone, so I naturally don't get such calls

cyan compass
#

still no idea on this:

    private final BukkitRunnable weatherRunnable = new BukkitRunnable() {
        int cooldown = 0;
        @Override
        public void run() {
            if (cooldown-- > 0) {
                return;
            }

            cooldown = 10;
            World world = plugin.getServer().getWorld("world");
            int value = ThreadLocalRandom.current().nextInt(1, 11);

            if (value == 1) {
                // Clear
                world.setThundering(false);
                world.setStorm(false);
                plugin.getServer().broadcastMessage("clear!");
            }
            else if (value == 2) {
                // Thunder
                world.setThundering(true);
                world.setWeatherDuration(6000);
                plugin.getServer().broadcastMessage("thunder!");
            }
            else {
                // Rain
                world.setThundering(false);
                world.setStorm(true);
                world.setWeatherDuration(6000);
                plugin.getServer().broadcastMessage("rain!");
            }
        }
    };```

The broadcasts work but it just doesn't rain
slate mortar
#

i pickup my phone only nowadays when i know the number, or it says my mom or smt

#

else i don't pick up anyway

tall dragon
slate mortar
#

especially if it's from outside of germany

tall dragon
#

i have never gotten a call in english that was not a scam

slate mortar
quiet ice
#

What

slate mortar
#

mfnalex

quiet ice
#

Oh that guy?

tall dragon
#

lmfao

cyan compass
#

Anyone?

slate mortar
#

mfnalex prolly someday calling me

#

talking english

cyan compass
#

Or you guys gonna keep talking about phones in a help channel

quaint mantle
quiet ice
cyan compass
tall dragon
#

uhuh okay buddy

quiet ice
undone axleBOT
cyan compass
slate mortar
slow pond
quiet ice
cyan compass
#

With what duration

quiet ice
#

Well you basically move your setClearWeatherDuration call into the next tick

cyan compass
#

And on next tick do you mean make a runnable and delay it? or just put it after my code?

quiet ice
#

Also, are you perhaps in a biome where it does not rain?

cyan compass
#

nope

#

I am in a sunflower plains

quiet ice
quiet ice
cyan compass
#

What would set clear weather even do

#

Cause from my understanding it clears the weather

#

when i need it to rain

quiet ice
#

oh right

cyan compass
#

🤦

quiet ice
#

That is what I get when not reading the docs carefully enough

#

?stash

undone axleBOT
cyan compass
#

??

quiet ice
cyan compass
#

I'm also in 1.12.2 if that helps

#
            if (value == 1) {
                // Clear
                world.setThundering(false);
                world.setStorm(false);
                plugin.getServer().broadcastMessage("clear!");
            }```

This works and clears the weather at least
#
            else if (value == 2) {
                // Thunder
                world.setThundering(true);
                world.setWeatherDuration(6000);
                plugin.getServer().broadcastMessage("thunder!");
            }
            else {
                // Rain
                world.setThundering(false);
                world.setStorm(true);
                world.setWeatherDuration(6000);
                plugin.getServer().broadcastMessage("rain!");
            }```

But these do not make it rain or thunder
tall dragon
#

well the thunder one defo wont work

#

according to md_5 it has to be storming before it can thunder

cyan compass
#

alright easy fix

slow pond
#

Try swapping the thundering and the rain. also ^^

slow pond
cyan compass
tall dragon
#

did u also try calling setWeatherDuration a tick later?

timid jetty
#

okay so for

entity.setMetadata(name, new FixedMetadataValue(plugin, "")

do you have to put the plugin in or what is that needed for (could i just put null

tall dragon
#

since for example setStorm also calls setClearWeatherDuration(0) to reset the world's weather

ivory sleet
#

Altho I wouldnt advice using metadata at all

#

PDC is much more robust

cyan compass
#

Which it doesn't i've already tested that

timid jetty
ivory sleet
#

PersistentDataContainer

tall dragon
#

?pdc

ivory sleet
#

An api to interact with different minecraft objects’ data

#

Well your own data most likely

timid jetty
#

alright

#

ill take a look and try to figure this out then

cyan compass
#

Best way to make it rain i have found is to just make the plugin run the weather command. But then admins end up seeing the plugin running the command and we don't want log admin commands turned off

quiet ice
#
package de.geolykt.test;

import java.util.concurrent.ThreadLocalRandom;

import org.bukkit.World;
import org.bukkit.plugin.java.JavaPlugin;

public class TestPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        getServer().getScheduler().scheduleSyncRepeatingTask(this, () -> {
            World w = getServer().getWorld("world");
            if (w == null) {
                throw new AssertionError();
            }
            ThreadLocalRandom tlr = ThreadLocalRandom.current();
            if (tlr.nextBoolean()) {
                w.setThundering(true);
                w.setStorm(true);
            } else if (tlr.nextBoolean()) {
                w.setThundering(false);
                w.setStorm(false);
            } else {
                w.setThundering(false);
                w.setStorm(true);
            }
        }, 100L, 100L);
        // TODO Auto-generated method stub
        super.onEnable();
    }
}

Works great on Paper version git-Paper-135 (MC: 1.19.2) (Implementing API version 1.19.2-R0.1-SNAPSHOT) (Git: eff22eb)

#

(outside of the thundering bit, but that was to be expected)

cyan compass
#

I am on 1.12.2

worldly ingot
#

It's very, very possible that 1.12 had broken weather. Again, I know it was horrible back in the day, and I recall a few commits that were meant to fix a few aspects of weather

#

I've actually specifically committed some code for weather in the past

quiet ice
#

Yes, which would mean that it has to be a server issue

cyan compass
#

Any fix or work around would be great

wary harness
#

change chat format

#

there is player chat event where you can do it if I am correct

agile anvil
#

AsyncPlayerChatEvent

mellow pebble
#

does anybody know good github repo that can be used for core tablist

#

like this one

hardy zenith
#

how I start plugin writing??

agile anvil
hardy zenith
#

yes I know I think I start from java

agile anvil
#

It's quite well written

onyx fjord
#

i assume some packet magic

agile anvil
# mellow pebble

That's old school 😮 In the good old time it used to be TabAPI the newbie API

mellow pebble
#

but i know there are like apis or something like that on github

twilit roost
#

why does this happen?

@Override
    public void populate(WorldInfo worldInfo, Random random, int chunkX, int chunkZ, LimitedRegion limitedRegion) {
        for (int iteration = 0; iteration < 50; iteration++) {
            int x = random.nextInt(16) + chunkX * 16;
            int z = random.nextInt(16) + chunkZ * 16;
            int y = 319;
            while(limitedRegion.getType(x, y, z).isAir() && y > -64) y--;

            if(!limitedRegion.getType(x, y, z).isAir()
                    &&limitedRegion.getType(x,y,z)!=Material.WATER
                    &&limitedRegion.getType(x,y-1,z)!=Material.OAK_LEAVES
                    &&limitedRegion.getType(x,y-1,z)!=Material.OAK_LOG) {
                limitedRegion.generateTree(new Location(Bukkit.getWorld(worldInfo.getUID()),x,y,z),random,tree);
            }
        }
    }
mellow pebble
#

but it is outdated

#

or i dont really know what to say

#

it just doesnt work good

#

or it is not working

onyx fjord
#

use a packet wrapper ig

mellow pebble
#

i guess that is an api

#

i have it compiled and source code

agile anvil
mellow pebble
#

and i dont really know like how to use it

onyx fjord
#

if theres no specific api for it you need to do packets yourself

mellow pebble
onyx fjord
#

or using packet wrapper

mellow pebble
#

well i can add it as dependency

#

and external library

#

but im not sure how is it used

agile anvil
mellow pebble
agile anvil
#

Well you don't even need a packet wrapper, just use NMS to send fake players with empty names

onyx fjord
#

nms is more painful

#

objectively

mellow pebble
#

well everything is painful if it is first time

onyx fjord
#

wrappers give you advantage of being multiversion

#

nms... doesnt

grim ice
#

then how does it use its code

agile anvil
#

I like pain, that's why I hardcode all NMS version with reflection 🌚

agile anvil
grim ice
#

You clearly dont know what im talking about

onyx fjord
agile anvil
grim ice
#

if you depend on spigot, you can use gson

quiet ice
grim ice
#

but if you depend on spigot, you cant use nms

grim ice
quiet ice
#

Spigot uses Spigot-API and NMS

young knoll
#

The API doesn't use NMS code

grim ice
#

AHHHH

young knoll
#

The API is just a bunch of interfaces

quiet ice
#

Spigot-API is just a bunch of interfaces, Spigot implements these interfaces on minecraft classes

#

More or less that is

grim ice
#

i get it

#

its the reverse

onyx fjord
#

can i somehow run 2 plugins in 1 plugin jar?

#

or big big pain

grim ice
#

its possible with a lot of trickery

quiet ice
tall dragon
grim ice
#

but it isnt worth it

onyx fjord
#

stopid dependency ;/

quiet ice
#

Meh, it isn't that much trickery, but you need to have a bootstrap plugin

grim ice
#

i mean

#

just get the plugin in a folder

#

then enable it when when ur plugin is enabled

agile anvil
#

#plugman

young knoll
#

Yeah it's not really that hacky

#

The main question is just why

quiet ice
#

In fact it is quite supported

#

Although you are likely to find a few bugs along the way because usually you wont do that

mighty bane
#

So I'm trying to run a command when a player right clicks a specific book. However it's not executing the command.

Here is the code:

            if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
                if (event.getItem().getItemMeta().getPersistentDataContainer().has(new NamespacedKey(plugin, "revive"), PersistentDataType.STRING)) {
                    event.getPlayer().performCommand("revive");
                }
            }
        }```
Any ideas why it's not working?
tall dragon
#

u sure the item has the pdc key?

eternal night
#

also nullable item meta

mighty bane
#

Oh sorry, wrong reply.

agile anvil
#

Hover your errors, the IDE is made to help you

mighty bane
#

Third times the charm lol

eternal night
#

I mean, insepct the item ?

agile anvil
#

TIPS: try to import the good scoreboard

eternal night
#

in game

mighty bane
#

How do I inspect in game?

eternal night
#

data command

#

ehhh

#

lemme grab it

young knoll
#

Isn't it like

#

/data get @s

eternal night
#

should be like data entity @s SelectedItem

#

or smth

agile anvil
#

TIPS 2: try to name your class and constructor the same

young knoll
#

Commands be wack

eternal night
#

and then hold the item in your hand

mighty bane
tall dragon
eternal night
#

Well looks like it has it

#

are you sure the listener logic runs

tall dragon
#

yep its there alright

mighty bane
#

Wait, you can find the data?

tall dragon
#

ye right int he middle

mighty bane
#

Oh I see it.

#

Wait... did I forget to set up the listener again?

tall dragon
#

did u register ur listener? 😮

mighty bane
#

Nope

tall dragon
#

😄

mighty bane
#

The amount of times I've forgotten that step is surprisingly high.

tall dragon
#

its ussually the first thing i ask

#

but skipped it for some reason now

mighty bane
#

Probably just assumed I already knew lol.

agile anvil
#

@viral hazel are you alive?

mighty bane
#

What's even funnier is I had registered the events earlier, but deleted it when I deleted the original event.

mighty bane
tall dragon
#

and you're 100% its registered now? 😄

mighty bane
#

Yes

#

getServer().getPluginManager().registerEvents(new ReviveEvents(), this);

tall dragon
#

okay try sending a debug message

#

and maybe send ur whole event

#

?paste

undone axleBOT
mighty bane
#

Nevermind, I registered the wrong class. My brain is fried today lol.

tall dragon
mighty bane
#

But hey. That part of the plugin is now done so I no longer have to worry about it lol.

blissful elm
#

Is there a way to get the location of each entity in an 8 blocks radius around the player?

tall dragon
#

untill it breaks for no reason 😄

mighty bane
#

Wait, do persistent data containers stay after restart?

tall dragon
#

well its kind of in the name isnt it

blissful elm
eternal night
#

Persistent data container

iron glade
mighty bane
#

But here's to hoping they don't!

blissful elm
iron glade
#

then just get their location after you checked for them around the player location

tall dragon
#

use this and get their location

blissful elm
#

I'm kinda new to plugin development so sorry, but you can't the location of nearby entities , how can I separate them so I have the location of each entity separated from the others

iron glade
#

learn java moment

tall dragon
#

uhh i dont quite understand ur question

iron glade
#

getNearbyEntities returns a list

kind hatch
iron glade
#

What's your goal?

tall dragon
#

well then ur done

#

since tablist exists by default

lilac dagger
#

how would you name a class that adds/removes managers and some other functions that does multiple of those?

tall dragon
#

ManagerManagerHandler

#

it requires 2 strings

#

a header and a footer

eternal night
#

mate the method still takes two paramters

tall dragon
#

uhhh?

eternal night
#

even if you call another one after that

visual tide
#

2 strings in the one method

eternal night
#

setPlayerListHeader is what you are looking for

visual tide
#

or that ☝️

smoky oak
#

can someone link me mnfalex blog for static methods?

smoky oak
#

ye

#

thx

slate mortar
#

player.setPlayerListHeaderFooter("header", "footer");
or
player.setPlayerListHeader("header");
player.setPlayerListFooter("footer");

eternal night
#

🥄

slate mortar
#

?

#

wdym in main

eternal night
#

I presume they would want a PlayerJoinEvent listener

#

and then execute the logic

slate mortar
#

?event

eternal night
#

which, maybe start with some tutorials on spigot and its event handling ?

slate mortar
#

isnt there an event wiki command? f

eternal night
#

?events

slate mortar
eternal night
#

:>

#

damn

#

there was a list

slate mortar
#

?help

undone axleBOT
#
CafeBabe Help Menu
*Red V3*
**__Admin:__**

selfrole Add or remove a selfrole from yourself.

**__Cleanup:__**

cleanup Base command for deleting messages.

**__Core:__**

embedset Commands for toggling embeds on or off.
info Shows info about CafeBabe.
licenseinfo Get info about Red's licenses.
mydata Commands which interact with the data CafeBabe has about...
set Commands for changing CafeBabe's settings.
uptime Shows CafeBabe's uptime.

**__Downloader:__**

findcog Find which cog a command comes from.

**__Mod:__**

names Show previous names and nicknames of a member.
userinfo Show information about a member.

**__ModLog:__**

listcases List cases for the specified member.
reason Specify a reason for a modlog case.

**__Permissions:__**

permissions Command permission management tools.

eternal night
#

yea that one is trash

#

alex had one iirc

smoky oak
#

?cleanup

undone axleBOT
#
CafeBabe Help Menu
Syntax: ?cleanup 
Base command for deleting messages.

smoky oak
#

welp that didnt go as planned

vocal cloud
#

Wen slash commands

slate mortar
#

you dont have perms for that either

#

slash commands are trash

smoky oak
#

i thought it prompts the bot to remove its own messages -.-

tall dragon
#

yea there was a list made on the wiki

hasty prawn
vocal cloud
#

Slash commands > ?

eternal night
#

with slash commands you would not be failing to find the events command

hasty prawn
#

Slash commands are amazing

eternal night
#

😛

slate mortar
hasty prawn
#

The only people who dont like Slash commands are the people who dont know how to use them

eternal night
#

Well the bot would not have to do that if it were using slash commands which are nicely integrated into the client

#

and offer an inbuilt search function

slate mortar
#

or people who just don't like that fact that you cannot use space for arguments

#

it's preference ig

eternal night
#

wat ?

hasty prawn
#

huh

slate mortar
#

you use tab to go to the next arg

gray merlin
#

Can I manually set the latest version for a plugin of mine?

slate mortar
#

not space

#

which is fucking annoying to me

eternal night
#

ahh

smoky oak
hasty prawn
#

I mean I guess, but it makes commands less fucky to work with

gray merlin
hasty prawn
#

Because you can put spaces in your actual argument

slate mortar
#

i'm used to have space go to the next arg... obviously

gray merlin
#

They're divided this way

slate mortar
#

so i'll probably never go switch my bots over to slash commands

gray merlin
#

However since the last one I uploaded was Crucible 1.7.10

#

it thinks it's the latest version

#

But I want the latest version to be Minecraft 1.19

agile anvil
hasty prawn
modest garnet
#

anyone got experience with custom models with model engine who could teach/guide me

maybe a tutorial

smoky oak
#

i think you gotta ask someone who knows what youre doing with that website ur using tbh

slate mortar
#

how should they

slate mortar
#

?-commands just listen to the Message send event

smoky oak
#

i never had that issue

slate mortar
#

it's just checking for if a message starts with a specific char

hasty prawn
#

"September 1, 2022 is the final switchover date. This means that, if the developer of one of the apps you’re using has not made the switch yet, parts of the app might not work after that time"

I guess it depends on what they mean by switchover

agile anvil
hasty prawn
#

That's tomorrow KEKW

slate mortar
#

so if they want to force that, they'd need to remove the ability to listen for messages

vocal cloud
#

Discord is removing message send event perms for big bots unless you apply

hasty prawn
#

I think it might just be for verified apps it's forced

slate mortar
#

i use my private bot only on my own server anyway

#

so idc