#help-development

1 messages · Page 911 of 1

ivory sleet
#

Could u take my dragon with animations

#

And make it work w display entities?

#

(Its in blockbench)

young knoll
#

Yeah I already have a system that converts .bbmodel to display entities

ivory sleet
#

YO

umbral ridge
#

nerd

ivory sleet
#

and the animation part?

#

Coll how much have u cooked

worthy yarrow
#

Sure sounds like a lot of cooking

young knoll
#

The animations still need some work, but they mostly work

worthy yarrow
#

100+ guests at least

ivory sleet
young knoll
#

Sure

#

Hang on let me find a video

ivory sleet
#

yeaa, but don’t abandon this project

ivory sleet
#

This is actually so unbelievably epic

#

Lol

young knoll
#

Not for the villager :p

worthy yarrow
#

He’s got speed, it’s fine

ivory sleet
#

and he gets the crab massage

#

Cant ask for more

#

I wouldve renamed u to coll the chef if I had the permission to do so

waxen plinth
#

wonder if packet entities will ever be properly supported

#

would be ideal for something like this

#

I know we have hideEntity and showEntity

worthy yarrow
#

We need a lot more than just those D:

waxen plinth
#

just need the ability to create an Entity object or similar which isn't actually spawned into the world but can still be broadcast to players

ivory sleet
#

yea

river oracle
#

archamedis ships on spigot???

ivory sleet
#

Well, its a mess to deal w that rn

river oracle
young knoll
#

I posted some in general earlier :p

minor junco
young knoll
#

Packets wouldn’t really help here

#

The issue is the client freaking out, doesn’t really matter if the entity exists on the server or not

river oracle
#

how do you get all the separate entities to move as one coll? I feel like this is something that would cause lag behind or something\

minor junco
#

Tbh I only read that message mb

young knoll
#

They are all stacked on a single entity

river oracle
young knoll
#

Yes

river oracle
#

wtf

#

dayum

ivory sleet
#

thats smart

river oracle
#

I've yet to properly play around with display entities because I dread resource packs and that's mainly what I'd want to use them with

young knoll
#

Fair

river oracle
#

I just wish there was easier way to do plugin with embedded resource pack

young knoll
#

I mean

#

That’s what my janky http server is for

river oracle
ivory sleet
#

That’s eventually gonna become a reality more or less

river oracle
#

I'll probably be done with spigot by the time such a thing is possible

young knoll
#

That’s what the bbmodel to entity plugin does

#

It’s all autogenerated

river oracle
#

and the security of that gets questionable considering I don't trust my code to actually be secure

young knoll
#

Mines not even https

river oracle
#

💀

young knoll
#

I mean all it does is listen for requests and return a stream of bytes

#

Not much else you can do

river oracle
#

I wonder how servers work with multiple resource packs allowed now

#

do you like add multiple links

#

I'd have to check the API ig

young knoll
#

Yeah you’d have to use multiple links

#

In theory my system should allow that, but I’ve only tested with one file

young knoll
#

Mhm

river oracle
#

The sha1 hash sum of the resource pack file what file does it mean

rough ibex
#

'Hast to be'

#

not so sure ths documentation is complete

young knoll
#

The resource pack file

#

The entire thing must be zipped

river oracle
#

That's what I was asking ig

young knoll
#

Yeah

#

It’s not too hard to hash it

river oracle
#

Sounds fun maybe I'll check it out later

young knoll
#

That’s my mini little server

#

Needs some updates tho

#

I think it’s secure? Since it just returns 404 for any unexpected input

#

Idk

analog mantle
#

Do you guys know of any good Packet event bus?

ivory sleet
#

like a packet library?

analog mantle
#

Like a lib that can allow me to listen for any packets send / received and run code and get the packet parameters.

ivory sleet
#

I know of 2

#

Actually 3

#

But last one is on fabric so doesnt count

#

else

#

TinyProtocol

#

And PacketEvents

analog mantle
#

I'm brand sapnking new to plugin development, but I'm very experienced in mod development

ivory sleet
#

checkout packet events

analog mantle
#

alright, can you send the repository?

ivory sleet
#

Then spigot will be easy foru

#

let me see if I can locate it

agile anvil
#

Your goal is to create new packets with mods and communicate with spigot ?

ivory sleet
analog mantle
#

Oh yea btw, is there a tutorial for setting up a mod enviroment?
This is kind of my whole deal rn, and i'm not sure if it's even spigot. From the looks of it it looks like paper.

#

cant upload file

#

ow

agile anvil
ivory sleet
#

not sure if there is a spigot obe

#

one

#

But the mc dev plugin on intellij should do the trick

analog mantle
ivory sleet
#

Anyway unknown

analog mantle
ivory sleet
#

Unlike fabric or forge

#

You only in reality need a compile only dependency to make it work

#

tho, that being said, fixing mojmaps and other niceties obv implies a more complex gradle project environment

#

(Also u could use maven, tho i wouldnt recommend)

rough ibex
#

and as a equal and opposite force, I would recommend maven

ivory sleet
#

well theyve done mod dev

#

So likely learning maven is a huge extra step

rough ibex
#

but a valuable skill

analog mantle
#

I'm the most familliar with groovy and gradle kitlon (I prefer groovy)

ivory sleet
#

yea thats fine

ivory sleet
rough ibex
#

funnily enough that has the same meaning

#

task failed successfully

ivory sleet
#

well depends if you read it metaphorically or literally

rough ibex
#
invaluable
adjective
: valuable beyond estimation : priceless
#

funny stuff

#

like terrifying and terrific

ivory sleet
#

yes but its not always used as an adjective to describe something that has more than a set value

rough ibex
#

invaluable is almost always used to mean priceless

#

and priceless also almost always means costly

ivory sleet
rough ibex
#

or rather, too good to have a cost that can be paid

ivory sleet
#

but far from almost always

#

ig it depends on what type of books u read

rough ibex
#

Invaluable actually has been recorded in the sense "without value," but such use has been exceedingly rare and is practically nonexistent today.

#

Maybe from 1380

#

I've never read a book that uses invaluable to mean bad

ivory sleet
#

Interesting statement

analog mantle
#

where can i send images at

ivory sleet
rough ibex
#

and without value can either mean good or bad

ivory sleet
analog mantle
#

where

drowsy helm
#

use the /verify command with ur forum username

young knoll
#

!verify

undone axleBOT
#

Usage: !verify <forums username>

drowsy helm
#

there u go

ivory sleet
#

well maven still sucks for anything other than doing simple banal stuff

analog mantle
#

... rate limited??

ivory sleet
#

lol

analog mantle
#

#bot-commands message

drowsy helm
#

When someone says "a couple of" do you guys think of 2 or a few things?

analog mantle
#

what is this bot broo

ivory sleet
#

lmao

analog mantle
#

I send 3 commands and it's rate limited for 2-3 business days?

ivory sleet
#

Try the other channel

#

#verify

#

Or whatever its called

analog mantle
ivory sleet
#

I dont have access to it

analog mantle
#

there we go

ivory sleet
#

nice

analog mantle
#

does this look about right for a packet handler?

ivory sleet
#

maybe

#

I havent used packet events tbf

#

I just know its good

#

I always inject my own netty handler

young knoll
#

I don’t recall using annotations

#

But maybe I’m silly

analog mantle
#

That;s the way the event bus I use works, but either my logger is broken or i did it wronf

#

if its my logger is

analog mantle
#

ok yea

#

works

#

thanks

analog mantle
ivory sleet
#

nope

#

there is a whole ass api instead

rough ibex
ivory sleet
#

goal is: you dont need mixins because the api should be delivering everything u could ever ask for lol

#

but in reality thats not entirely true I suppose

ivory sleet
analog mantle
#

oh yea i use reflections too

young knoll
#

Oh man if we had mixins I’d be braking all the things

ivory sleet
#

would be really nice

#

But it would fuck a lot of things also

echo basalt
#

reflections <3

ivory sleet
echo basalt
#

just make a bunch of wrapper classes

#

oh nvm that's the plural one hell naw

young knoll
#

Maybe I should go back to good ol netty injecting

#

Idk, dependencies are ehhh

ivory sleet
#

I like it the most

#

well its annoying having to commit to some library x

young knoll
#

Yeah but have fun deconstructing the chunk data packet on your own :p

ivory sleet
analog mantle
young knoll
#

Make a wrapper from it

analog mantle
#

what dat mean

young knoll
#

Each packet has a wrapper class you can construct using the event

analog mantle
#

oh yea thats exactly what i need

#

so is all the server receives is just raw bytes in a byte buf?

young knoll
#

Yes

analog mantle
#

So i'm just trying to write a packet logger

#

Do i have to manually make a thing for each packet

#

there's no util or something to do it

river oracle
#

if you wanna make a packet logger don't quote me on this but I feel like it'd be 200x easier to just inject into the netty pipeline yourself

analog mantle
#

Alright how can I do that?

plucky rock
#

can i ovveride vanilla minecraft commands?

rough ibex
#

sure

meager sage
#

How can I get the players locale using API version 1.8.8?

rough ibex
#

you can't

#

also 1.8.8 augh

#

locale isn't transmitted

meager sage
#

Listen to packets?

rough ibex
#

hm?

molten hearth
shadow night
molten hearth
#

And sure if you insist on using packets its sent in the Client Settings packet

meager sage
molten hearth
#

I guess use packets for it then

meager sage
#

gonna drop 1.8 soon

molten hearth
#

0x15 > Play > Serverbound

meager sage
#

Player#getLocale was added in 1.12 right?

warm mica
meager sage
warm mica
meager sage
#

It literally doesnt do anything

warm mica
#

It gets replaced internally. It works fine

#

I am using it myself

meager sage
#

For 1.8.8?

warm mica
#

Yes

meager sage
#

Do you think I havent tried it

warm mica
#

Possibly

meager sage
#

How have you used it

warm mica
#

I just used that method, it works fine for me

sullen marlin
#

What issue are you having?

meager sage
#

How can I get the locale on newer versions using 1.8.8 version API

sullen marlin
#

You can't, the 1.8.8 was removed

meager sage
#

Until I drop support for older versions some day

charred blaze
#

player.getInventory().getItemInOffHand() doesnt return the item in the off hand?

eternal oxide
#

targetOffHand is using player

charred blaze
#

what?

#

yea

#

ah

#

shit

#

thanks

#

now this doesnt work

#

target.getInventory().remove(targetOffHand);

#

can that method remove items from offhand too?

eternal oxide
#

just use setItem(EquipmentSlot.OFF_HAND, null)

charred blaze
#

player.getInventory().setItemInOffHand(air);

#

ill use this

charred blaze
eternal oxide
#

yes

charred blaze
#

k

meager sage
#

any way i can improve this?

public String getLocale(Player player) {
    String locale;
    String serverVersion = Bukkit.getBukkitVersion();
    String[] versionParts = serverVersion.split("-")[0].split("\\.");
    int majorVersion = Integer.parseInt(versionParts[1]);
    if (majorVersion < 12) {
        locale = player.spigot().getLocale();
    } else {
        try {
            locale = player.getClass().getMethod("getLocale").invoke(player).toString();
        } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    }
    return locale;
}
eternal oxide
#

yes

#

static the version check so you only ever call it once

rough drift
#

^

rough drift
#

Is there a way I can hide a command from a specific player (without unregistering it?)

#

I guess just Player#updateCommands and filter out the ones I don't want in a PlayerCommandSendEvent listener?

pseudo hazel
#

I think this is possible with permissions

eternal oxide
rough drift
#

The problem is that they have to see it and then not have to see it

eternal oxide
#

remove the permission after they see it?

rough drift
#

Fair enough but I'm not the one handling the permission

#

sooo I just filtered out the names ¯_(ツ)_/¯

cinder abyss
#

Hello, how to make an entity with a custom texture and model (and even animations if possible)?

lost matrix
cinder abyss
smoky anchor
#

ModelEngine plugin exists, but that one is paid iirc

lost matrix
#

Yes, but the devs now charge a ton of money (i think it was like 40$) so im not gonna promote them.
I bought the old one and am still mad that i would have to buy it again. So im writing my own which uses display entities instead of armorstands.

cinder abyss
#

humm okay

silk slate
#

Do you know of a Koth plugin that can be programmed for free?

smoky anchor
lost matrix
#

Depends how interwoven it will be with my other code. It will also be a few months before this is done.

smoky anchor
#

Yoo, I'm glad to hear there even is a possibility of that :D
GL with all that math!

pseudo hazel
charred blaze
#

how do i make item glowing?

#

i tried to apply some enchantments

#
enderPearl.addEnchantment(Enchantment.LURE, 1);
enderPearlMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);```
#

but it doesnt work

eternal oxide
#

more code. Remember getting teh Meta is a copy. so if you get it before adding the enchant the enchant will not be on teh meta when you place it back

charred blaze
#

ah i think i found the issue

#

on: Specified enchantment cannot be applied to this itemstack

#

now im getting this

#

is there any enchantment that can be applied to all items?

eternal oxide
#

addUnsafeEnchantment

charred blaze
#

thanks

echo basalt
charred blaze
#

still not working

eternal oxide
#

setting the meta will wipe out the enchant you are adding

charred blaze
#

so i just set the enchantment on meta?

eternal oxide
#

yes, or get meta after settign enchant

charred blaze
#

enderPearlMeta.addEnchant(Enchantment.LURE, 1, true);

#

fixed

drowsy helm
#

Can i createa private project on jenkins or do i need a whole new jenkins server for separate private projects

zenith bobcat
#

Hey do someone know from which class the AsyncPlayerChatEvent is called?

eternal night
#

src/main/java/net/minecraft/server/network/PlayerConnection.java

#

or ServerGamePacketListenerImpl if you are on mojang mappings

young knoll
#

Man why is the server being mean and not sending position updates to the client

#

:c

shadow night
#

Wait

#

Can we get like

#

Uhh

#

Valkyrien Skies: Spigot edition

young knoll
#

Well if I can get the player to move

shadow night
#

Can you

#

Did you know that between a valkyrien skies object and the world world edit sees around 64 bit integer limit blocks

young knoll
#

what

river oracle
#

or do it not be that simple

young knoll
#

It's a passenger of a seperate entity

#

Which for some reason isn't sending update packets

solemn meteor
#

why is player.canSee(Entity entity) marked as unstable? Also this is related to player.hideEntity(Plugin plugin, Entity entity) right

sterile flicker
#
public static void injectPlayer(Player player, NPCManager manager) {
        ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
            @Override
            public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {
                
                super.channelRead(channelHandlerContext, packet);
            }

            @Override
            public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise channelPromise) throws Exception {
                if (packet instanceof PacketPlayOutMapChunk) {
                    PacketPlayOutMapChunk loadChunkPacket = (PacketPlayOutMapChunk) packet;
                    Field xField = loadChunkPacket.getClass().getDeclaredField("a");
                    xField.setAccessible(true);

                    Field zField = loadChunkPacket.getClass().getDeclaredField("b");
                    zField.setAccessible(true);

                    int chunkX = xField.getInt(loadChunkPacket);
                    int chunkZ = zField.getInt(loadChunkPacket);
                    if (!manager.getNpcsInChunk(chunkX, chunkZ).isEmpty()) {
                        System.out.println("have npcs");
                        Bukkit.getPluginManager().callEvent(new PlayerChunkLoadEvent(player, chunkX, chunkZ, manager));
                    }
                } 

                super.write(channelHandlerContext, packet, channelPromise);
            }
        };

        ChannelPipeline pipeline = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel.pipeline();
        pipeline.addBefore("packet_handler", player.getName(), channelDuplexHandler);

    }``` why net.minecraft.server.v1_12_R1.CancelledPacketHandleException may occur here?
rare pike
#
for (ItemStack drop : drops) {
            if (player.getInventory().firstEmpty() == -1) {
                isFull = true;
            }

            int fortuneLevel = player.getActiveItem().getEnchantmentLevel(Enchantment.LOOT_BONUS_BLOCKS);
            int dropAmount = 0;

            if (fortuneLevel >= 1 && drops.toArray().length == 1) {
                switch (block.getType()) {
                    case COPPER_ORE:
                    case DIAMOND_ORE:
                    case EMERALD_ORE:
                    case REDSTONE_ORE:
                    case NETHER_QUARTZ_ORE:
                    case IRON_ORE:
                    case GOLD_ORE:
                    case GLOWSTONE:
                    case COAL_ORE:
                    case DEEPSLATE_COPPER_ORE:
                    case DEEPSLATE_COAL_ORE:
                    case DEEPSLATE_IRON_ORE:
                    case DEEPSLATE_GOLD_ORE:
                    case DEEPSLATE_DIAMOND_ORE:
                    case DEEPSLATE_EMERALD_ORE:
                        dropAmount = ThreadLocalRandom.current().nextInt(0, fortuneLevel);
                        break;
                    case LAPIS_LAZULI:
                        dropAmount = ThreadLocalRandom.current().nextInt(4, 9 * (fortuneLevel));
                        break;
                }

                if (dropAmount != drop.getAmount()) {
                    drop.setAmount(dropAmount);
                }
            }
            itemsToAdd[itemCount] = drop;
            itemCount++;
        }

Can someone help me? Items that go into my inventory are not affected by fortune

chrome beacon
rare pike
chrome beacon
#

yes

plucky rock
#

I have a question

#

Is it possible to get the current date and time?

#

Also how?

#

Ik how to get specifics like hour and minute

dapper flower
#

How come max inventory slots is now locked to 54 when before it was up to 81?

plucky rock
#

But not all of it

river oracle
#

or before or something

#

I've only been coding for a couple years but have been playing for a decade I never remember these 81 slot inventories

young knoll
#

It used to allow beyond 6 rows

dapper flower
#

Read a thread on spigot before 1.14 was possible something similar

young knoll
#

But they were glitchy af

river oracle
#

oh the glitch??

#

I thought you meant like a real 81 slot inventory

#

that glitch wasn't even any good lmao

young knoll
#

I mean if you had a custom inventory texture it would actually be useful

river oracle
#

imho

#

mmm they probably patched it when they registry backed Menus

young knoll
#

I still wanna know why this armorstand isn't sending position updates

#

Like, I could just send them myself but blah

worldly ingot
#

I believe it was recently marked as stable though PandaThink

#

At least setVisibleByDefault() was

alpine urchin
#

hi

random monolith
#

Im trying to replace the content of a title to the same text but translated to other language with an http request and working with packets, but im getting this error when trying to show the title Can someone help me? https://pastebin.com/FxbVzSp0

hazy parrot
#

return asyncTranslateText(text, "es").get();

#

you are blocking main thread

#

no point in doing it async if u gonna call get()

random monolith
#

I undestand thanks

valid burrow
#

why are dragon stuck if i spawn them

#

do they like

#

have no ai

#

or something

upper hazel
young knoll
#

Dragons need a dragon battle instance to control them

valid burrow
#

lmao what

#

well and how would i do that

river oracle
#

Bukkit method iiec

#

Try like typing dragon and let auto correct guide you

torn shuttle
#

same math is giving me different results for armor stands vs display entities

#

the math for model-based origin offsets is fucked

#

I'm starting to wonder if there's a feature mismatch between armor stands and display entities

#

it's like display entities don't accept the origin offset in the model correctly

#

not that that makes much sense

deep herald
#

this doesnt remove commands with ":"

#

it wont work

bleak eagle
#

remove that check and/or print the list before and see how they're formatted

hazy parrot
#

u are misusing both removeIf and MONITOR priority

#

you don't need to iterate over collection if u are using removeIf

deep herald
#

i have those?

bleak eagle
#

also monitor priority unnecessary yea

deep herald
#

oh

bleak eagle
#

if you are looping you should instead just check if the current iterated command contains blah blah and remove it in that case..

deep herald
#
    public void onCommandSend(PlayerCommandSendEvent event) {
        for(String commands : event.getCommands()){
            event.getCommands().removeIf(command -> commands.startsWith("/") && commands.contains(":"));
        }
    }```
hazy parrot
#

still misusing removeIf

deep herald
#

i have that bro

bleak eagle
#

you are calling it for each command in the list

hazy parrot
#

you don't need to iterate over collection if u are using removeIf

young knoll
#

Misusing

use (something) in the wrong way or for the wrong purpose.

quiet ice
#

Well the way they are doing it it is more of a clear rather than removeIf

#

HOWEVER, I'd say you shouldn't modify the collection at all, but that is just my two cents

young knoll
#

I just realized they are using commands.contains(":") rather than command.contains

deep herald
bleak eagle
#

because the for loop variable is in plural for some reason

quiet ice
#

Do note: this has different behaviour than your original code

#

The original code was basically equivalent to

    @EventHandler(ignoreCancelled = true)
    public void onCommandSend(PlayerCommandSendEvent event) {
        for(String commands : event.getCommands()){
            if (commands.startsWith("/") && commands.contains(":")) {
                event.getCommands().clear();
            }
        }
    }
#

?jds-s

#

?jd-s lol typo

undone axleBOT
quiet ice
#

Oh actually, that won't work at runtime. The fixed version would include a break or return after the clear (as otherwise the loop will try to find the next element, causing a CME)

#

And well earnest to god you should be using permissions plugins instead of this

worthy yarrow
#

When it comes to permission checks, is it wise to include compatibility with general permission plugins? Or should it even matter considering we already get access to player.hasPermission?

deep herald
quiet ice
#

depends on what you are accomplishing to do

worthy yarrow
#

You can try it, but it seems like geol is saying it might just be easier/better to clear

quiet ice
#

It does not match the semantics of the original version that is

onyx fjord
#

is there an event for grindstone usage ? (not prepare)

#

or i have to listen for click

charred blaze
#

if (!ignoresFile.exists()) {
saveResource("ignores.yml", false);
}
if (!languageFile.exists()) {
saveResource("language.yml", false);
}

#

i dont need all this checks right?

shadow night
#

Yeah

#

Just the saveResource should be enough

cedar flint
#

Is it possible to remove the Anvil 'To Expensive' cap with plugins?

blazing ocean
#

is there a way to give the player a regular chat autocomplete without creating a seperate player list? like, i'm working on emoji autocomplete and only want it to trigger once the message/word starts with :.

#

it seemed there used to be PlayerChatTabCompleteEvent but it got removed

blazing ocean
#

alr, i'll just send a fake player list then :p

blazing ocean
#

huh !

#

im just gonna assume theres no way to check for the last token of a chat message which is not yet sent? because that would probably violate every single privacy laws there are

shadow night
#

why not, tab completion exists right?

blazing ocean
#

but how

#

i read that thats 100% handled by the client

eternal night
#

setCustomTabCompletions is a custom packet mojang added

#

it does not "read" the last token of chat

shadow night
#

mojang is so nice torwards modders

eternal night
#

the method tells the client "here, think of these new strings as completions"

blazing ocean
#

well, I need the completion to only show when the last token starts with :, so like the discord emoji autocomplete

eternal night
#

well yoU'd register it with the : at the start

blazing ocean
#

but would that show without the message starting with that

#

i mean thats honestly not a big deal

eternal night
#

Yea I mean, you are not getting around that

blazing ocean
#

would it be possible to have something different get entered when pressed tab

#

so that the preview would show
😭 :sob: but only :sob: would get entered

shadow night
#

I don't think that's possible, atleast the last time I checked

blazing ocean
#

okay ty

twin venture
#

Hi uhh ik this is kind of stupid question but ehh , my brain is not braining xD
so when a user open the gui : /faction open .
3 factions , can select any , and when he do it will update the database with the new id of the selected Faction [1,2,3]
but its not updating.
when a user quit , it save it , but when i want to update it , it just keep on 0 ..

#

it create the user seccfully but it does not update him in database , i only update when a user quit better for performance.

eternal night
#

I'd triple check the SQL argument positions

twin venture
#

Fixed it :p

eternal night
#

:p

twin venture
#

working on a new event plugin :p

#

works :p

night copper
#

How to create like a database? I want to store all the players that typed a command and clicked the item in the GUI

#

I want to keep their UUID and the name of the item they clicked

rough ibex
#

This doesnt seem like a spigot thing...

charred blaze
icy beacon
#

Though mod dev is kinda a stretch lol but somebody probably is experienced enough to help with this. Not me though

icy beacon
charred blaze
icy beacon
#

Try setting false to true. It should override the file data though

young knoll
#

Yeah true will replace the file

#

You need to manually check if the file exists to avoid the message

charred blaze
#

bruh

tawdry echo
#

i have to cancel every task in onDisable or not?

wintry lynx
#

Anyone got a good idea on how I'd add looping music to areas? I know custom sounds and all that but how to know when it ends to make it replay is a bit not possible as far as I know. (Well possible but just inefficient or just bad)

inner mulch
#

or do you want them to be hidden as well?

#

if so i might have something for you

worldly ingot
#

No. You're doing something wrong then :p

echo basalt
#

Gg

echo basalt
wintry lynx
eternal oxide
#

uh?

#

if you try to play a sound that is out of range of a client it will be ignored

wintry lynx
warm mica
wintry lynx
warm mica
#

It seems to be possible to build such thing even in vanilla. Apart from that there is a GenericGameEvent that gets called when it stops playing

wintry lynx
wintry lynx
wet breach
#

Send the music you want this way when close enough. Then you dont have to worry about distance as it should play the entire track

#

The downside of this is you will have to lookup the time lengths for each song as you have to guess when its done before changing to the next. Not too difficult

#

Now you dont need jukebox trickery uwu

spare mason
wet breach
wintry lynx
wet breach
#

But even then no one is going to notice a 2-5 tick delay

#

There will be a delay of a few millis anyways because packets dont travel at an instant either

#

So whatever delay does happen will be beyond your control anyways

wintry lynx
#

I wish minecraft just had a loopable sound component. 😢

analog mantle
#

does this look right for making a new template plugin?

wet breach
noble lantern
#

Mainly just suggestions, they can make your life a little eaier when trying to find that one random project you made 2 years ago

umbral ridge
#

i forgot

#

do /gamerule apply per world

#

or whole server

eternal oxide
#

per world

umbral ridge
#

great

analog mantle
#

is there javadoc for @EventHandler annotations?

chrome beacon
#

?jd-s

undone axleBOT
chrome beacon
analog mantle
#

wish i could download the sources for the spigot api so i can just look at the javadoc in my IDE

eternal oxide
#

?stash

undone axleBOT
analog mantle
#

there's no sources.jar?

eternal oxide
#

yes, just run buildtools with the sources arg

analog mantle
#

buildtools?

eternal oxide
#

If you are using spigot you should be using buildtools

#

?bt

undone axleBOT
analog mantle
#

there's no gradle task?

eternal oxide
#

spigot uses Maven

slender elbow
#

API sources should be on the maven repo, no?

young knoll
#

Pretty sure they are

analog mantle
#

where cause gradle says it couldn't find the sources.jar

slender elbow
#

i mean

#

it's just there?

#

alongside the regular jar

#

it's the same artifact, just a different classifier, but your IDE&build tool should take care of all that

analog mantle
#

it doesnt work but wtv

#

do you know if it matters that the config file entries names have to follow a certain set of rules or can they just be a string

young knoll
#

They have to be unique

#

And certain characters require them to be surrounded with quotes

analog mantle
#

but I can name something like "Default Buff %"

young knoll
#

Yeah

analog mantle
#

okay good that improves readability a lot more

#

Can I also insert comments in to the config file?

#

If so, how?

analog mantle
#

thanks

analog mantle
#

How can I set comments inside of a ConfigurationSection?

remote swallow
#

ConfigurationSection#setCommends(path, comments)

analog mantle
#

it doesn't work

remote swallow
#

are you saving it

analog mantle
#

saving?

remote swallow
#

you have to save any modiciations you make

analog mantle
#

each line?

remote swallow
#

no

#

save it when you finish something

#

if its the default javaplugin one use JavaPlugin#saveConfig

analog mantle
#

well im adding them in the init method

remote swallow
#

so save it at the end

analog mantle
#

and i am

remote swallow
#

?paste the code

undone axleBOT
analog mantle
#

other comments work fine, that aren't in a ConfigurationSection

remote swallow
#

why are you creating it like that

#

just specify it inside the config.yml you ship in resources

analog mantle
#

huh

remote swallow
#

put the default config you want in src/main/resources

#

then call JavaPlugin#saveDefaultConfig

analog mantle
#

do i have to program in the default config, or can i just write it in the text file

remote swallow
#

just write it in the text file

analog mantle
remote swallow
#

is config,yml inside of src/main/resources with all the infomation you want as a default

analog mantle
#

correct

remote swallow
#

do you use maven

analog mantle
#

no

#

groovy

remote swallow
#

gradle?

analog mantle
#

yes

remote swallow
#

run a clean build

analog mantle
#

I use the plugin

remote swallow
#

what plugin

#

if you use shadow run a clean shdow then

analog mantle
#

oh yea it worked, i just deleted the old config file and refreshed gradle

rapid ore
#

How i can load an class into my server?

remote swallow
#

what does that even mean

#

explain what you wanna do more

rapid ore
#

like

#

im trying to make use an lib called javamail, for my plugin

#

im importing the lib into my intelliJ

#

but the server gives me this problem

remote swallow
#

you would have to shade it, which would need maven or gradle

kind hatch
# analog mantle

You aren't providing the full path.
Punishment Effects.Enabled

remote swallow
#

effectPath doesnt need it

#

it is Punishment Effects

rapid ore
remote swallow
kind hatch
remote swallow
#

yeah they call it on effectPath which means calling effectPath.setComments(enabled, ...) should be taking the effect path section path

rapid ore
# remote swallow that means you arent shadingit

i tried with this<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>mycode.test.Main</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin> </plugins> </build>

remote swallow
#

remove the transformer

#

and how are you compiling

kind hatch
remote swallow
#

yeah its kinda weird

rapid ore
remote swallow
#

that isnt compingin with maven

rapid ore
#

huh

kind hatch
#

I think you mean compiling. :p

remote swallow
#

yeah

#

open the maven tab on the right side of your screen open the lifecyle dropdown and press package then take the jar from /target/

kind hatch
rapid ore
#

the last snapshot right?

remote swallow
#

yeah

rapid ore
#

well

#

i copy it

#

the shaded one

#

into my plugins folder

#

and gives me the same problem

#

somebody n the bukkit forum told me i have to import the class for the server

#

idk

remote swallow
#

use the jar with no prefix's or suffixs

#

normally pluginname-version.jar

rapid ore
#

alr i did it but i dont think that's the problem

#

still gives me this org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: javax/mail/MessagingException

remote swallow
#

?paste your pom

undone axleBOT
analog mantle
#

is there a way I can edit the plugin.yml file from code?

analog mantle
#

I'm making a command registry thing that automatically adds in new command classes from reflections

remote swallow
#

add it to the command map

analog mantle
#

command map?

#

how can i get that?

remote swallow
remote swallow
rapid ore
#

from the build right?

remote swallow
#

yeah

rapid ore
#

the shaded one

analog mantle
#

well I know how to do all of that, I just need to know how I can get the command map

remote swallow
#

read the spoiler on the first message

remote swallow
rapid ore
remote swallow
rapid ore
remote swallow
rapid ore
#

there's an alternative?

remote swallow
#

no idea, what is javax mail even for

rapid ore
#

look

#

this is my idea

#

the player send his email, and the server needs to verify it sending an email to the email

#

got it?

remote swallow
rapid ore
analog mantle
#

Server.class

remote swallow
#

because its from craftbukkit and reflection accesses it

analog mantle
#

but it isn't, it's throwing the exception

remote swallow
#

show your code

analog mantle
remote swallow
#

i recommending keeping the command map as a final variable but looks correct

#

?paste the error

undone axleBOT
analog mantle
#

i mean I use the command thingy for my abstract command

remote swallow
#

paste the error

analog mantle
#

oh i think it was the access

#

yep

#

I was using a protected constructor rather then a public constructor

#

oh yea baby

#

this sources crap is starting to piss me off.

> Could not resolve all files for configuration ':downloadSources_e8ef20da-6ea5-4434-8ce9-5a9430cfdc20'.
   > Could not find spigot-api-1.20.4-R0.1-SNAPSHOT-sources.jar (org.spigotmc:spigot-api:1.20.4-R0.1-SNAPSHOT).
     Searched in the following locations:
         file:/C:/Users/admin/.m2/repository/org/spigotmc/spigot-api/1.20.4-R0.1-SNAPSHOT/spigot-api-1.20.4-R0.1-SNAPSHOT-sources.jar

Possible solution:
 - Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html```
#

I can't see any javadoc

remote swallow
#

looking at that you dont have the spigot repo added and you dont have javadocs in maven local

analog mantle
#

then what do i need to add

remote swallow
#

the spigot repo

#

groovy or kotlin

analog mantle
#

It's probably because, guess what?

#

There is no sources.jar on the api...

remote swallow
#

yes there is

analog mantle
#

oh really

#

point it out to me

remote swallow
analog mantle
#

i'd be happy to see it

#

send url

analog mantle
#

whats the groovy thing to add in the sources

remote swallow
#

its using your maven local as priority

analog mantle
#

it still doesn't work

#

there we go

#

for other people with my problem, add this to your gradle file instead of your current spigot api
compileOnly 'org.spigotmc:spigot-api:1.20.4-R0.1-20240222.090456-86'

remote swallow
#

its better to avoid that, as you wont get any new api that gets released

analog mantle
#

man screw dat

#

I always namually update

worthy yarrow
#

Imagine manually doing anything

analog mantle
#

Using my command method, I completely bypassed implements CommandExecutor and I cut straight to extends Command

rapid ore
#

java.lang.IllegalStateException: Not provider of jakarta.mail.util.StreamProvider was found

analog mantle
#

alright enough waffling,
I need to save every unique player's UUID and an int.
should I use the spigot config things or should i make my own JSON config thing

remote swallow
#

id probably use database for that

analog mantle
#

databse

#

so json thing

#

How can I get the root directory of the config for the plugin

#

this directory

rough ibex
#

JavaPlugin.getDataFolder

rapid ore
#

nvm i fixed it

analog mantle
#

How can I make a command with tab complete arguments?

rough ibex
#

you can implement a tabcompleter

#

implements TabCompleter

analog mantle
#

is there a tutorial i can follow?

rough ibex
#

onTabComplete

#

or you can use a framework

#

that automatically does it for you

#

generating autocompletions for anything other than a simple command is complex and hard

#

are you sure you want to do it manually?

analog mantle
#

i can alrerady override the tabcomplete method

analog mantle
rough ibex
#

you can do that for sure

analog mantle
#

the way i've set up reflections 1) allows me to automatically register all command class inheritors. 2) it extends Command and not the traditional way of making a command

#

so i automatically get a mot more features

#

oh yea

#

I need to figure out a way to convert a UUID to a player

remote swallow
#

Bukkit.getPlayer

analog mantle
#

is the command args ordered like
/command arg1 arg2...
arg[0] arg[1] arg[2]...

remote swallow
#

no

#

/command is the command

#

arg1 is index 0

analog mantle
#

ok

#

got it

minor junco
analog mantle
analog mantle
remote swallow
#

Bukkit.getOfflinePlayer

wet breach
#

I just stay away from dynamic commands lol

#

I find most plugins dont really have a use for such things and are not always useful. Just because a feature exists doesnt mean you need to use it.

analog mantle
wet breach
analog mantle
#

yes

wet breach
#

I believe it does if the player does not exist on the server to get the uuid

analog mantle
#

and why does it take so long for my plugin to process code in the enable method? I'm getting issues because of that

wet breach
#

Uh...depends what your code is doing also plugin load order is not guaranteed

analog mantle
#

its a test server and im making a file

#

the issue is that when the server first starts, the file is null because it hasn't been read in the memory

wet breach
#

If you are making a file in on enable then the file is null and even you make a file there is nothing to read

analog mantle
#

no like the file literally isn't there

wet breach
#

However it still depends on code because there is like hundreds of ways to make files

analog mantle
#

it takes like 10 seconds to get added

wet breach
analog mantle
#

It should run the second the server starts

#

where can i do such a thin

wet breach
#

Well it wont run the second server starts

#

It will run the moment the plugin is loaded

analog mantle
#

right but im getting some exceptions

wet breach
#

?nocode

undone axleBOT
#

It’s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.

analog mantle
#

It can be ran in a static block but I was having issues with static variables

#

and thats what i normally do for those files

wet breach
#

Not sure why you need instance variable

analog mantle
#

i use it a lot

wet breach
#

Ok but in the case of the main class its not needed

analog mantle
wet breach
#

Show the file variable

analog mantle
wet breach
#

And just because you add a lot of variables doesnt change what i said about the main class

analog mantle
#

idgaf about the intstance crap rn

#

It's never been a problem

#

it is literally the first thing that is being ran

wet breach
#

Until it is, alright not sure why trying to do other stuff with initializing a file variable

analog mantle
#

We'll talk when it becomes a problem, sound like a fair deal?

wet breach
#

What does the playerdatabase object do?

analog mantle
#

makes a json file

wet breach
#

What does getOutputFile return?

analog mantle
#

the Path

wet breach
#

Is it a file object, a string?

#

Oh so its a string

analog mantle
#

no it's a Path

wet breach
#

So a string

analog mantle
#

java.nio.file.Path

wet breach
#

Which is a string

analog mantle
#

sure

wet breach
#

What exception are you getting? NPE?

analog mantle
#

yes

wet breach
#

I assume its on the file.clear

analog mantle
#

no

#
java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonElement.getAsJsonObject()" because the return value of "com.google.gson.JsonObject.get(String)" is null
    at me.wclient.dangerlevel.event.Events.onPlayerJoin(Events.java:20) ~[dangerlevel-1.0-ALPHA-all.jar:?]
    at com.destroystokyo.paper.event.executor.MethodHandleEventExecutor.execute(MethodHandleEventExecutor.java:40) ~[paper-api-1.20.4-R0.1-SNAPSHOT.jar:?]
wet breach
#

Ok so it says playerjoin event and we are looking at the onenable

analog mantle
wet breach
#

Did you check to see if the file does get created? I would probably recommend getOutputFile returning a file object as opposed to path

analog mantle
#

oh yea i forgot to load the file

upper hazel
#

I saw a video where a bukkit plugin developer refactors students' code and I became interested, but then I realized that this is not related to bukkit, so I wanted to know who had seen this kind of video

analog mantle
#

Is there a way I can get the entity that caused the player's demise in PlayerDeathEvent ?

minor junco
#

event.getKiller()

tall dragon
fallen lily
#

Kotlin is just blessed

tall dragon
glass mauve
#

is it fine to use:

MapPalette.matchColor(...);

even though its deprecated?
I use it to send map data through packets

teal venture
#

Where can I view the mojang mappings for nms?

eternal oxide
#

?mappings

undone axleBOT
eternal oxide
#

?nms

glass mauve
#

for example for some calculations

agile anvil
#

Other way is to do the calculations on values of the coordinates

#

Both methods will result in a new instance of these Objects

glass mauve
echo basalt
#

Yeah it's fine to use those

#

you shouldn't use clonable because the contract is doodoo

twin venture
#

Hi , ahh so i want to create 3 custom texture banner in minecraft

#

anyone good with it can help me?

undone axleBOT
twin venture
#

is there a way to make a custom resourcepack that have 3 custom banners?

#

i have been looking online but didn't find a defnitife answer ..

teal venture
twin venture
#

can you give me a tutorial link or smth?

twin venture
#

Anyone know what i need to type here?

#

is the banner held_item?

smoky anchor
twin venture
#

3 custom models , banners

smoky anchor
#

I believe banners render as builtin_entity instead of item/block model
So I think you'd have to make a banner model from scratch if you want to use custom model data
(also ew, 1.8)
But I am not sure, you'd have to go through vanilla files

kindred sentinel
#

Is there a way to improve tps by turning off light of redstone?

twin venture
#

i droped support for 1.8

smoky anchor
#

Oh I saw 1.8 on your stream
Good

twin venture
#

yeah viabackwards

#

i need to create 3 custom model banner

smoky anchor
#

Well you need to create only one model, then just use different texture for each

twin venture
#

yes , but what its called? the banners?

#

i did search it here

#

but didn't find the default banner

smoky anchor
#

#1 use the new wiki
#2 don't look on the wiki for textures lol
#3 the banner textures are in entities

twin venture
#

right?

#

This is the png?

rough drift
#

no just open the 1.20.1.jar

twin venture
#

WoW its moving xD

twin venture
rough drift
#

it's in assets/minecraft something something

peak depot
#

player.addPotionEffect(new PotionEffect(type, Integer.MAX_VALUE, amplify, true, true));
Why is Interger.MAX_VALUE ingame not infinite or is there an Acutall infinte from the spigot API

eternal night
#

opop

#

wrong

worldly ingot
#

PAPER LINK PES_HyperReee

peak depot
#

bro sends paper docs on spigot server but ig i take it

worldly ingot
#

banning

eternal night
#

mb mb

#

but yea, tis on spigot too ^

worldly ingot
#

:)

#

YOU'RE LUCKY I LIKE YOU AROUND :((

eternal night
#

not my fault the damn javadocs link for spigot is so ugly

quiet ice
#

?jd-s just spam the command like I do ;)

undone axleBOT
eternal night
#

why even include spigot again

#

the bungee javadocs are on the jenkins aren't they xD

worldly ingot
#

Bukkit docs are on here too :p

eternal night
sterile flicker
#
public static void generatePlatforms() {
        DyeColor[] colors = DyeColor.values();
        DyeColor randomColor = colors[random.nextInt(colors.length)];
        for (int platformRow = 0; platformRow < 4; platformRow++) {
            for (int platformCol = 0; platformCol < 4; platformCol++) {
                for (int rowIndex = 0; rowIndex < 16; rowIndex++) {
                    for (int colIndex = 0; colIndex < 16; colIndex++) {
                        Block block = Map.party.getBlockAt((int) (Data.firstPlatformBlock.getX() + (platformRow * 16) + rowIndex), (int) Data.firstPlatformBlock.getY() - 1, (int) (Data.firstPlatformBlock.getZ() + (platformCol * 16) + colIndex));
                        block.setType(Material.WOOL);
                        BlockState blockState = block.getState();
                        blockState.setData(new Wool(randomColor));
                        blockState.update();
                    }
                }
            }
        }
    }``` I'm trying to make a colormatch and here's my code, but why aren't the blocks being placed even though the code is executed, what's wrong here is that the state of the blocks doesn't change to colored wool?
eternal night
#

new Wool ?

sterile flicker
#

yes

eternal night
#

data has been deprecate for eternity

#

please do not use MaterialData

#

so is Material.WOOL

#

it should not even exist anymore

#

o.O

sterile flicker
#

how do I set the color then?

eternal night
#

I mean, each wool is its own material?

eternal oxide
#

unless he forgot to set an API level

eternal night
#

and is compiling against like spigot 1.12 or older

#

in which case, glhf

sterile flicker
eternal oxide
#

thats wrong

eternal night
sterile flicker
eternal oxide
#

lowest you can set is 1.13 (I think)

#

but what spigot are you actually wanting to use?

sterile flicker
eternal oxide
#

ok, good luck with that

#

probably wool and damage levels then

sterile flicker
#

well, I have a 1.20.4 server, I just do 1.12.2 as well.

eternal night
#

given that you should not be running stock spigot 1.12 in the first place you should either have a fork or maintain your own fork of the software anyway

#

1.12 has enough crash exploits for weeks

warm mica
#

Not related to your problem, but I noticed that you are calling the checkEntities within the wrong block (I assume it's not supposed to be within the for-loop)

eternal oxide
#

What kind of Set are you using?

warm mica
#

And it's cool that you are using weak references, however you don't remove them from your collection once they get unloaded. Personally I wouldn't use references in this case, and instead just use isValid() to check whether they got unloaded and remove them within your iterator

eternal oxide
#

As a Set by itself does not support GC on WeakReferences

#

Set type?

#

yeah, thats not going to clean up your WeakReference Objects

warm mica
#

You are using a break and not a return within your checkEntity for-loop

#

This causes the entity to always get un-silenced

eternal oxide
#

If it's not near ANY one of your locations, it gets unsilenced

#

no

#

If it's near ANY it shoudl remain silenced

#

your code unsilences it if ANY of yoru silence blocks are out of range

#

you need to loop all isNearby and set a silenced boolean if any are in range.. Then unsilence if it's false

#

no breaking out

#
boolean isSilenced = false;
for...
  if (isNearby(..)) isSilenced = true;

if (!isSilenced) blah...```
brazen agate
#

Is there anyone that understands why my intellij doesn't recognize my spigot jar? i made it using buildtools

echo basalt
#

?bootstrap

undone axleBOT
#

Bootstrap Jar
The main spigot-1.18.jar is now a bootstrap jar which contains all libraries. You cannot directly depend on this jar. You should depend on Spigot/Spigot-API/target/spigot-api-1.18-R0.1-SNAPSHOT-shaded.jar, or the entire contents of the bundler directory from your server, or use a dependency manager such as Maven or Gradle to handle this automatically.

Please read the release notes for further information: https://www.spigotmc.org/threads/9-years-of-spigotmc-spigot-bungeecord-1-18-1-18-1-release.534760/#post-4305163

eternal oxide
#

google WeakSet and teh first couple of links will answer

#

there is no WeakSet in Java itself

charred blaze
#

someone reviewed my resource & i posted update yesterday and now its gone

#

the review is gone and update isnt released

#

im pretty sure it wasnt a dream

#

lol

eternal oxide
#

GroundHog Day

charred blaze
#

seriously

#

why is update gone?

eternal oxide
#

I'd say it was a dream after all 🙂

shadow night
#

Ye, probably

#

I sometimes mix reality and dream too

charred blaze
#

i released it on github

#

and then on spigotmc

#

why isnt it there

#

what about reviews

#

yesterday i had 4 reviews

#

now i have 3

eternal oxide
#

Nah, you just crazy 🙂

charred blaze
#

bro

#

what

young knoll
#

If the update got removed any reviews on said update would too

#

So maybe that happened

charred blaze
#

nope

#

i updated it after the review

#

as far as i remember

#

can anyone check it

#

or why is the update gone

#

i didnt get any alert or something

#

@vagrant stratus

ivory sleet
eternal oxide
#

yep

#

its just clunky

ivory sleet
#

yea

twin venture
#

anyone can help me make a model using blockbench ? i have the image

#

just need the model

#

should be a banner entity

junior anvil
#
public class CustomMonster extends Monster {

    public CustomMonster(Location loc) {
        super(EntityType.RAVAGER, ((CraftWorld) loc.getWorld()).getHandle());
        this.setPosRaw(loc.getX(), loc.getY(), loc.getZ());
        ((CraftWorld) loc.getWorld()).getHandle().addFreshEntity(this);
    }
}```

How do I make this work? I want to spawn in a ravager but give it custom logic
chrome beacon
#

extend Ravager

proud badge
#

yo howd I check if the exception im trying to handle is specifically this thing

junior anvil
#

but i want to give it the Monster aiStep

proud badge
slender elbow
#

it depends on the http client you are using

molten hearth
#

alright so I have a bit of a logic question, I want to know if a player is standing on fire but obviously a player can be standing in fire by being slightly on the block and not fully on the block, what's the best way of checking this? (except checking if the player is on fire lmao)

#

should i check if the 9 nearest blocks on the floor to the player are fire? 😭 (or maybe 4 idk)

eternal oxide
#

check 8 closest blocks, as the player is two blocks high

#

could be stood near burning leaves/wood

alpine urchin
#

are u in an interview or what 😂 @molten hearth

minor junco
molten hearth
#
schedulerManager.submitTask(() -> {
                if(event.getEntity() instanceof Player player) {
                    if(player.isOnFire()) {
                        player.damage(DamageType.ON_FIRE, 1);
                        // TODO: Verify this worked
                        player.playSound(Sound.sound(Key.key("entity.player.hurt_on_fire"), Sound.Source.PLAYER, 5f, 1f));
                        // Send Screen Shake
                        HitAnimationPacket hitAnimationPacket = new HitAnimationPacket(player.getEntityId(), 45);
                        player.sendPacket(hitAnimationPacket);

                        System.out.println(isOnFireNearby(player.getPosition(), 2, player.getInstance(), player.getBoundingBox()));
                        return TaskSchedule.tick(50);
                    }
                }
                ENTITIES_ON_FIRE.remove(event.getEntity().getUuid());
                return TaskSchedule.stop();
            });``` oh yeah now this is a banger 💀 💯
worthy yarrow
molten hearth
#

it just came to me that this is a thing thats wild

molten hearth
#

no wait im tripping lmao

#

idk i wanna die

#

😔

#
        MinecraftServer.getSchedulerManager().submitTask(() -> {
            for(Player player : MinecraftServer.getConnectionManager().getOnlinePlayers()) {
                if(player.getGameMode().equals(GameMode.SURVIVAL)) {
                    Block below = player.getInstance().getBlock(player.getPosition());
                    if(below.compare(FIRE)) {
                        player.setFireForDuration(100);
                    }

                    System.out.println(player.isOnFire());
                }
            }
            return TaskSchedule.tick(10);
        });```
#

this is the code I meant to send earlier

worthy yarrow