#help-development

1 messages · Page 1274 of 1

blazing ocean
#

they are both very stable

grim hound
#

so its IJ's fault ?

blazing ocean
#

well, does it build?

#

based on the zero information you have provided I could not tell you

#

I can't read your mind

grim hound
#

yeah, now it does

young void
#

is citizens the best pathfinding api?

#

hmmm

grand flint
#

does citizens have pathfinding??

#

mythicmobs probs has good pathfinding

young void
young void
#

apparently??

sly topaz
#

just use MobChipLite if you're gonna do pathfinding

#

or if you want pathfinding algorithms, pathetic

young void
#

in unity there was something called nav mesh agent and you just called a method and it walked

#

quite simple

sly topaz
#

then use MobChipLite

young void
wet breach
#

like nav mesh, A* etc

#

which is nice however sometimes you might want something more custom or more refined and that becomes more difficult or when you want to combine more then one together

blazing ocean
slender elbow
#

that's quite pathetic

#

turns to look at camera and winks

sly topaz
#

if any one could use it in combination of mobchiplite

worldly ingot
slender elbow
#

you're so right bb

sly topaz
#

I was thinking the office but ig they never wink at the camera

#

never watched Seinfeld

deep herald
#

how would I increment the players level by a tiny bit?

#

giveExp gives alot

compact haven
#

does anyone have a function to determine all of the blocks a player is standing on top of

#

because if you're in the center of four blocks, you need to break all four for the player to fall

#

ehm the bounding box seems to be +- 0.3

echo basalt
#

are you making tnt run

sullen marlin
#

I mean there's a player.getBoundingBox method isn't there

echo basalt
#

if you take that approach it'll be incredibly difficult to actually play

compact haven
#

that's exactly what I'm doing

#

how the hell do I do tnt run LMAO

#

If not destroy all blocks supporting a player, how else then?

echo basalt
#

you gotta kind of go in a pattern

#

I forgot what proj I had this on

deep herald
compact haven
#

oh for fucks sake

echo basalt
#

yeah you gotta go in a pattern with a delay

#

stolen off this

compact haven
#

can someone explan this to me

#
    private fun getBlocksUnderTo(location: Location): List<Location> {
        val world = location.world ?: return emptyList()

        // Player's X and Z coordinates
        val x = location.x
        val z = location.z

        // Calculate the range of blocks the player is standing on
        val minX = (x - 0.3).toInt()
        val maxX = (x + 0.3).toInt()
        val minZ = (z - 0.3).toInt()
        val maxZ = (z + 0.3).toInt()

        // Player's Y coordinate (block below the player)
        val y = location.y.toInt() - 1

        // Collect all blocks under the player
        val blocks = mutableListOf<Location>()
        for (blockX in minX..maxX) {
            for (blockZ in minZ..maxZ) {
                blocks.add(Location(world, blockX.toDouble(), y.toDouble(), blockZ.toDouble()))
            }
        }

        blocks.add(Location(world, x, y.toDouble(), z))

        return blocks.distinct()
    }

how is it destroying literally every block besides the ones I want?

#

I mean that's not fair, it's two for four

echo basalt
#

is your location centered?

compact haven
#

it should be player's location

#

so 0.5?

#

oh no its 0.0

#

well duh 0.0 is between blocks but why does it still break the left four lmao

slender elbow
#

toInt() is not appropriate

compact haven
compact haven
slender elbow
#

+0.4 and -0.4 point to different blocks, but toInt()ing both will give you 0

compact haven
#

well,

#

wait toInt rounds?

slender elbow
#

it strips the decimals

#

no rounding

#

-.7, -.3, +.3, +.7, all toInt() to 0

#

floor is exactly what you are looking for

compact haven
#

oh yeah I'm not sure why I thought -0.3 would "floor" to -1

#

yeah so that should fix that

#

although I still don't understand how blocks two left of the player are being destroyed

#

but not any to the right

#

I suppose I'll make the change any maybe I'll see that is fixed\

slender elbow
#

it will, yes

#

one of your axes is a negative coordinate

#

so the toInting will do that

compact haven
#

alright so I shall floor then toInt

slender elbow
#

see how the other is correct

compact haven
#

okay so I have decided to make the method return all the qualified blocks, i.e. supporting and a game element

#

then I will add-

#

no that will not work

#

so I suppose a fatal flaw was using the move event for this at all

#

I kind of just need to tick all player locations...

#

if I use the move event then I must destroy all the supporting blocks, I can't just do a random one because if they stop moving they'll win the game

#

if I use a task then it'll do a random one until they fall

slender elbow
#

I'd do a task for this tbh

compact haven
#

I figure polling around every 5 ticks is ample?

slender elbow
#

I'm generally a move event enjoyer, but for this I'd use a task

young knoll
#

Is toInt some Kotlin magic for (int) casting

compact haven
#

Yeah

slender elbow
#

yes

young knoll
#

Smh (int) is literally less characters

compact haven
#

but then you need to wrap in parenthesis :)

#

or it's ugly :(

#

the difference with kotlin is that it isn't a primitive

#

so when you "cast" to int you can still use methods on it

#

otherwise,
pretending the cast syntax was the same in Kotlin as in Java

(Int) x.something()

wouldn't work, yeah? Java compiler interprets that the same as (Int) (x.something()), I believe?

slender elbow
#

yeah

#

but it's not like primitives even have methods in java anyway

compact haven
#

Right

#

so if primitives did exist in Kotlin, I suppose x as int is prettier than x.toInt() for sure.

#

honestly between (x as Int).someMethod() and x.toInt().someMethod() I'm not even sure which I prefer

#

as seems better but only because it isn't chain calling methods

slender elbow
#

I like Scala's approach to that, something like foo.as[Int].blah()

#

iirc

compact haven
#

lmfao its barely breaking anything now

#

I need to A and B with you guys, one second

#

thats polling positions every 5 ticks and choosing a random block that's supporting them ^

#

oh and blocks are destroyed after 10 ticks

drowsy helm
#

that noise is incredibly annoying

compact haven
#

i know

#

i didn't want to go through the hassle of disabling it for this testing while I'm struggling to even destroy a few blocks

drowsy helm
#

and why not just use PlayerMoveEvent instead of polling position?

compact haven
#

aye karamba we just switched to polling becuase move event is not going to work for this

#

ehm basically if the player stands still then they wont fall, unless I destroy all the supportin blocks

#

but if I destroy all the supporting blocks then I'm doing potentially 4 blocks at a time in tnt run

#

basically, it needs to get rid of too many blocks to make them fall

#

we need to punish standing still, but not that excessively

young knoll
#

If you don’t move for 3 seconds you get banned

compact haven
#

that's a good solution

potent atlas
#

Hi guys! I'm having an issue with custom mob names. Setting the name of an existing mob through the entity.setCustomName() method along with entity.setCustomNameVisible(true) does not update the name on the screen. Do I need to send a packet to all the clients who can see it? Thanks!

drowsy helm
#

if its not a packet based entity you shouldn't need to send a packet

potent atlas
#

I'm not sure how much of this you want to see. it's just entity.setCustomName(customName)
hang on I'll show the whole thing

#

nothing happens

drowsy helm
#

No all your code

#

it might not seem relevant but it depends on how you spawn the entity

potent atlas
#

that's not in the same class

sly topaz
#

I mean, you're setting the name only if it contains "Level:1" which it might not

#

my assumption is that it isn't passing that if statement and thus not updating

potent atlas
#

it updates the file where the mob's info is stored

sly topaz
#

I am not sure how that relates to this piece of code honestly

potent atlas
#

even after a server restart the name does not update

sly topaz
#

other than that, it's unreliable to check for contains, you'd want to parse the name instead if it contains some kind of placeholder like a level

potent atlas
#

I can prove it's passing by logging the new name in console

sly topaz
#

well, if you are sure it is indeed passing that if statement then the issue would be somewhere else in your code entirely, but do make sure it passes

#

just adding a print inside the if statement should do

potent atlas
#

I think the easiest thing to do at this point is to make a little demo plugin and see if it works without all the other code

sly topaz
#

that would definitely narrow things down, yeah

potent atlas
#

I'll do that in a bit, dinner's ready

sly topaz
#

reminds me I have to cook mine 😭

compact haven
#

@potent atlas I didn't really take a look, but, if you're using MythicMobs with this entity it will not work

#

I just say this because I've spent what felt like an eternity attempting to modify the name of a mythical mob for specific players and

#

oh my god how much of a headache that was. never got it to work either

potent atlas
#

What is mythic mobs?

#

my plugin does not depend on any others

compact haven
#

Then nevermind haha

potent atlas
#

alright it works as expected with a demo plugin. I'll have to try to find the problem in the full one

potent atlas
#

solved \o/
you guys were right it was the 'contains' method which has now been replaced to check the file for the name. much more reliable. thanks ❤️

drowsy helm
potent atlas
#

it's broken again though

drowsy helm
#

not showing up again?

potent atlas
#

it changes in the file but not in game -.- I'm going to put a lot of prints everywhere 😛

drowsy helm
#

are you by chance using /reload?

potent atlas
#

no

#

I stop the server, change out the jars, start it back up

#

fixed it (again)

#

I'll make a backup...

tribal wraith
#

Is there a way to start a sound at a time interval? e.g. starting music.nether.basalt_deltas at 30 seconds in ?

mortal vortex
#

after the point of some code being run? If so then you just use a scheduler

tribal wraith
#

Starting the sound halfway through, skipping the first half of the sound

pseudo hazel
#

you cant

tribal wraith
#

Ok thx

sullen marlin
#

Be fun if you could, then you could appropriately time sounds to play any song

#

Rick roll here we come

tribal wraith
#

That's what I"m saying

thorn isle
#

you could maybe uh

#

oh nevermind you're talking about something else

near furnace
#

my setPlayerDataTag method

@SuppressWarnings("unchecked")
    public static void setPlayerDataTag(OfflinePlayer player, String tag, Object value) {
        NBTFile nbt = loadPlayerDataFile(player);
        if (nbt == null) return;

        if (value instanceof String str) {
            nbt.setString(tag, str);
        } else if (value instanceof Integer i) {
            nbt.setInteger(tag, i);
        } else if (value instanceof Double d) {
            nbt.setDouble(tag, d);
        } else if (value instanceof Long l) {
            nbt.setLong(tag, l);
        } else if (value instanceof List<?> list && !list.isEmpty()) {
            if (list.get(0) instanceof Double) {
                List<Double> doubleList = (List<Double>) list;
                NBTList<Double> nbtList = nbt.getDoubleList(tag);
                nbtList.clear();
                nbtList.addAll(doubleList);
            }
        } else if (value instanceof NBTCompoundList clist) {
            NBTCompoundList nbtList = nbt.getCompoundList(tag);
            nbtList.clear();
            nbtList.addAll(clist);
            Bukkit.getLogger().info("[DEBUG] Wrote NBTCompoundList with size " + clist.size() + " to tag '" + tag + "'");
        }

        try {
            nbt.save();
            Bukkit.getLogger().info("[DEBUG] Successfully saved NBT file for " + player.getName());
        } catch (IOException e) {
            plugin.getLogger().severe("Failed to save player data for player: " + player.getName());
            plugin.getLogger().warning("Error message: " + e.getMessage());
            plugin.getLogger().warning("Stacktrace:");
            for (StackTraceElement element : e.getStackTrace()) {
                plugin.getLogger().warning(element.toString());
            }
        }
    }```


```java
public static void setEnderChestItems(OfflinePlayer target, ItemStack[] items) {
        NBTCompoundList newEnderItems = new NBTCompoundList();
        int count = 0; // debug
        
        for (int i = 0; i < items.length; i++) {
            ItemStack item = items[i];
            if (item != null && !item.getType().isAir()) {
                NBTCompound nbtItem = NBTItem.convertItemtoNBT(item);
                nbtItem.setByte("Slot", (byte) i);
                newEnderItems.addCompound(nbtItem);
                count++; // debug
            }
        }

        setPlayerDataTag(target, "EnderItems", newEnderItems);
    }

How do I create a new NBTCompoundList, so I can add my ItemStack to it and pass it to my setPlayerDataTag() method?

smoky anchor
#

?paste oh boi, wall of code

undone axleBOT
near furnace
echo basalt
#

oh boy we're back to this

near furnace
#

NBTCompoundList newEnderItems = new NBTCompoundList();
this line shows 'NBTCompoundList(de.tr7zw.changeme.nbtapi.NBTCompound, java.lang.String, de.tr7zw.changeme.nbtapi.NBTType, java.lang.Object)' has protected access in 'de.tr7zw.changeme.nbtapi.NBTCompoundList'

near furnace
#

i have to fix this

smoky anchor
#

click into NBTCompoundList and see if it has any way of creating an instance

#

What version btw

near furnace
near furnace
near furnace
smoky anchor
#

oh wait nbtapi
I thought this was NMS

smoky anchor
smoky anchor
#

Ctrl+click on the NBTCompoundList so you can view the class

#

but it ain't there

near furnace
#
public class NBTCompoundList extends NBTList<ReadWriteNBT> implements ReadWriteNBTCompoundList {
    protected NBTCompoundList(NBTCompound owner, String name, NBTType type, Object list) {
        super(owner, name, type, list);
    }

    public NBTListCompound addCompound() {
        return (NBTListCompound)this.addCompound((NBTCompound)null);
    }

    public NBTCompound addCompound(NBTCompound comp) {
        if (this.getParent().isReadOnly()) {
            throw new NbtApiException("Tried setting data in read only mode!");
        } else {
            try {
                Object compound = ClassWrapper.NMS_NBTTAGCOMPOUND.getClazz().newInstance();
                if (MinecraftVersion.getVersion().getVersionId() >= MinecraftVersion.MC1_14_R1.getVersionId()) {
                    ReflectionMethod.LIST_ADD.run(this.listObject, new Object[]{this.size(), compound});
                } else {
                    ReflectionMethod.LEGACY_LIST_ADD.run(this.listObject, new Object[]{compound});
                }

                this.getParent().saveCompound();
                NBTListCompound listcomp = new NBTListCompound(this, compound);
                if (comp != null) {
                    listcomp.mergeCompound(comp);
                }

                return listcomp;
            } catch (Exception var4) {
                Exception ex = var4;
                throw new NbtApiException(ex);
            }
        }
    }

    public ReadWriteNBT addCompound(ReadableNBT comp) {
        return comp instanceof NBTCompound ? this.addCompound((NBTCompound)comp) : null;
    }

    /** @deprecated */
    @Deprecated
    public boolean add(ReadWriteNBT empty) {
        return this.addCompound((ReadableNBT)empty) != null;
    }

    public void add(int index, ReadWriteNBT element) {
        if (element != null) {
            throw new NbtApiException("You need to pass null! ListCompounds from other lists won't work.");
        } else if (this.getParent().isReadOnly()) {
            throw new NbtApiException("Tried setting data in read only mode!");
        } else {
            try {
                Object compound = ClassWrapper.NMS_NBTTAGCOMPOUND.getClazz().newInstance();
                if (MinecraftVersion.getVersion().getVersionId() >= MinecraftVersion.MC1_14_R1.getVersionId()) {
                    ReflectionMethod.LIST_ADD.run(this.listObject, new Object[]{index, compound});
                } else {
                    ReflectionMethod.LEGACY_LIST_ADD.run(this.listObject, new Object[]{compound});
                }

                super.getParent().saveCompound();
            } catch (Exception var4) {
                Exception ex = var4;
                throw new NbtApiException(ex);
            }
        }
    }

    public NBTListCompound get(int index) {
        try {
            Object compound = ReflectionMethod.LIST_GET_COMPOUND.run(this.listObject, new Object[]{index});
            return new NBTListCompound(this, compound);
        } catch (Exception var3) {
            Exception ex = var3;
            throw new NbtApiException(ex);
        }
    }

    public NBTListCompound set(int index, ReadWriteNBT element) {
        throw new NbtApiException("This method doesn't work in the ListCompound context.");
    }

    protected Object asTag(ReadWriteNBT object) {
        return null;
    }
}```
look
#

no way to create instance

smoky anchor
#

Can you not

near furnace
#

?

smoky anchor
#

wall of code

near furnace
#

i mean it aint that big

smoky anchor
#

I have to scroll, it's big

near furnace
#

ok sorry

smoky anchor
#

And I opened it on github anyways

near furnace
#

found a way?

#

please tell me you found something 🥀

smoky anchor
#

From the wiki, I don't think you're using the API correctly lol

near furnace
#

wdym

smoky anchor
#

Do this NBTFile nbt = loadPlayerDataFile(player);
Use the nbt to get the EnderItems and modify that compound instead of whatever the flip you're doing

#

I think
I dunno, I never used this lol

near furnace
#

wait ill text you on the car, i need to fix this lol

smoky anchor
#

Please don't text and drive (?)

slender elbow
#

yeah wtf

young knoll
#

Don’t worry they’re on the car not in it

#

They’re texting while car surfing

old stone
#

Explains it

slender elbow
#

Fahian rn

old stone
#

Car surfing yes

#

My fav sport

smoky anchor
vague swallow
#

How do I get the hight of a block?

near furnace
umbral ridge
deep herald
umbral ridge
#

?jd-s

undone axleBOT
umbral ridge
vague swallow
umbral ridge
near furnace
deep herald
near furnace
#

i think there isnt a direct method for that, but you gotta do math for it

deep herald
#

is there some git code for it?

#

cba to do math right now

near furnace
#
public void addExpProgress(Player player, float amount) {
    float currentProgress = player.getExp(); // value between 0.0 and 1.0
    int currentLevel = player.getLevel();

    float newProgress = currentProgress + amount;

    while (newProgress >= 1.0f) {
        newProgress -= 1.0f;
        currentLevel++;
    }

    player.setLevel(currentLevel);
    player.setExp(newProgress);
}```
Asked gpt, gave me this idk use it at your discretion. It's gpt after all
deep herald
#

gpt is lowkey smart

umbral ridge
#

why do you use ai... think a little

#

with ai you are basically doing nothing and learning nothing

deep herald
#

if you know what it's doing then it's fine

near furnace
#

no need to get mad over the tiniest mentions of ai

near furnace
smoky anchor
#

I don't know

#

nbt.save(); I guess
You used it once

near furnace
#

your honest reaction:
"ionknow"

smoky anchor
#

I said I don't know the API

near furnace
#

i did it!

#

its working

#

after 3 days for trying non-stop

smoky anchor
#

gj

near furnace
#

now it needs to be live-sync, and also make sure its also synced for all the other inventory "viewers"

sly topaz
ivory sleet
#

icl I too do use it, admittedly more than what I should, Ig being able to boost productivity isn't all that bad- tho I suspect there to be consequences in long term with this workflow choice

sly topaz
#

personal use is more than fine, it helps one to be able to center in whatever you're trying to solve when it works well and avoids getting out of the flow, and newer models are only getting better and better at doing even niche things like bukkit plugins

#

I personally draw the line when it comes to support though, as it is nearly the same thing as spoonfeeding a solution, except it is even worse as it just demonstrates my own laziness of actually going through code and understanding the user's problem. It's already bad for a person learning to just give out code and hence why people recommend doing so sparingly, however AI makes it so easy to just spew stuff that it almost feels like it would be fine, but it ultimately isn't

#

Reason people discourage AI for people learning something isn't so much that it can get things wrong. That's part of the problem but not the main pain point with this approach, which is the fact that someone learning doesn't know the right questions to ask, and thus they're unlikely to actually be able to be productive with these tools

#

didn't meant to go in a rant but welp, here I am lol

mellow edge
#

is giving items in PlayerJoinEvent recommended or is there a better event that executes after that? I noticed that without any delays in the event I cannot 100% guarantee that a player gets the item.

echo basalt
#

it depends on other plugins for that

#

imagine you're running something like husksync

mellow edge
#

how do other plugins affect that?

#

doing even 1 tick delay does the thing

echo basalt
#

think about it for a second

sly topaz
lost matrix
sly topaz
rough drift
echo basalt
#

universal opinion: teach a man to fish

blazing ocean
rough drift
blazing ocean
#

true

echo basalt
#

tell a man to fuck off and he'll never bother you again type shit

rough drift
#

fr

sly topaz
#

teach man cook good? Not good, die starve. Teach man fish? Not starve. Cook and fish starve not

blazing ocean
echo basalt
blazing ocean
#

no u

sinful fable
#

Is there a way to ban someone permanently without setting the DURATION to a whole bunch of days? with player.ban()

chrome beacon
#

Yes, I recommend reading the Javadoc

#

It will tell you

#

?jd-s

undone axleBOT
sinful fable
#

Got it! thank you!

iron night
#

I needed a way of running a command and getting its output. I created class implementing ConsoleCommandSender and overrided sendMessage with saving it to a variable and returning when my method is called. When i run /tps it returns what i expect it to return - string with output, but when i run for example /list or /op <...> it returns nothing. Why?

chrome beacon
#

What command(s) are you trying to capture the result of and why

#

implementing the interface is not something that's really supported. list and op are vanilla commands while tps is not

torn shuttle
#

very specific question

#

does anyone know how to apply tint to a custom model which is made using the 1.21.4+ rsp system

#

specifically

#

the item is horse armor

thorn isle
#

bukkit commands accept any implementation of CommandSender, they only use the methods on that interface, but any vanilla command will attempt to unwrap it and call methods on the underlying player/commandblock/etc instead

torn shuttle
#

the method worked for 1.21.3 and older but is not working anymore

thorn isle
#

for doing this there is the rcon system but i don't remember if that returns command feedback, iirc it does

torn shuttle
#

old (works)

    @Override
    public void setHorseLeatherArmorColor(Color color) {
        LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) leatherHorseArmor.getItemMeta();
        leatherArmorMeta.setColor(color);
        leatherHorseArmor.setItemMeta(leatherArmorMeta);
        nmsLeatherHorseArmor = CraftItemStack.asNMSCopy(leatherHorseArmor);
        itemDisplay.setItemStack(nmsLeatherHorseArmor);
    }

new (doesn't work)

    @Override
    public void setHorseLeatherArmorColor(Color color) {
        LeatherArmorMeta leatherArmorMeta = (LeatherArmorMeta) leatherHorseArmor.getItemMeta();
        leatherArmorMeta.setColor(color);
        leatherHorseArmor.setItemMeta(leatherArmorMeta);
        nmsLeatherHorseArmor = CraftItemStack.asNMSCopy(leatherHorseArmor);
        itemDisplay.setItemStack(nmsLeatherHorseArmor);
    }
#

I don't know why I posted both, it's the same code, I'm falling asleep here

#

the difference is in how they initialize is all

#

one of them initializes with setItemModel and the other with setCustomModelData

plush sluice
#

what is the name of this thing that shows up above command?

sullen marlin
#

tab complete

plush sluice
#

<name> [<arguments>|with]

#

Its not default feature of spigot plugin

kind hatch
#

Those are completion hints.

plush sluice
#

ah

#

yea

kind hatch
#

Not something that’s currently available in the API.
You’d have to use Brigadier directly.

plush sluice
#

Brigadier yeah thats what I was looking for

#

ty

sullen marlin
#

onTabComplete gets most of that

fierce cave
#

im getting this error with this code:
Code:
CraftPlayer craftplayer = (CraftPlayer) sender;

Error:

        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-api-1.19.3-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_19_R2.CraftServer.dispatchCommand(CraftServer.java:847) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at org.bukkit.craftbukkit.v1_19_R2.command.BukkitCommandWrapper.run(BukkitCommandWrapper.java:50) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:264) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:?]
        at net.minecraft.commands.CommandDispatcher.performCommand(CommandDispatcher.java:306) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.commands.CommandDispatcher.a(CommandDispatcher.java:290) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1957) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.network.PlayerConnection.lambda$18(PlayerConnection.java:1919) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.util.thread.IAsyncTaskHandler.b(SourceFile:67) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?]
        at net.minecraft.server.TickTask.run(SourceFile:18) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.util.thread.IAsyncTaskHandler.d(SourceFile:156) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.util.thread.IAsyncTaskHandlerReentrant.d(SourceFile:23) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:1154) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:1) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.util.thread.IAsyncTaskHandler.x(SourceFile:130) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.MinecraftServer.bh(MinecraftServer.java:1133) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.MinecraftServer.x(MinecraftServer.java:1126) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.util.thread.IAsyncTaskHandler.bq(SourceFile:115) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.MinecraftServer.i_(MinecraftServer.java:1109) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:1021) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:301) ~[spigot-1.19.3-R0.1-SNAPSHOT.jar:3670-Spigot-454acb7-bd29f41]
        at java.lang.Thread.run(Thread.java:1623) ~[?:?]
Caused by: java.lang.NoSuchMethodError: 'net.minecraft.server.level.ServerPlayer org.bukkit.craftbukkit.v1_19_R2.entity.CraftPlayer.getHandle()'
        at org.example.nmsplugin.commands.Create.onCommand(Create.java:39) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot-api-1.19.3-R0.1-SNAPSHOT.jar:?]
        ... 23 more
>java -jar spigot-1.19.3.jar```
before the same exact code with the same exact versions used to work but now its not working, Note that this plugin uses nms
sullen marlin
#

?xy

undone axleBOT
sly topaz
sly topaz
#

what are you using this for to begin with

fierce cave
sly topaz
#

sure, that works

#

?paste

undone axleBOT
fierce cave
sly topaz
#

so you're creating NPCs

fierce cave
#

yeah like in tablist

#

just to show them

#

there

sly topaz
#

I would recommend using a library/plugin like TAB for that, honestly

#

way easier to manage as you don't have to handle the multiple version problem

fierce cave
#

idk bro previously compiled jar is working find in the server but now i created a new project with everything the same but doesnt work

fierce cave
sly topaz
#

it seems to support layout but its developer API wiki doesn't seem to include it, I wonder if they just don't have public API for it or forgot to document it lol

fierce cave
#

okay thx

sly topaz
fierce cave
#

thanks

sly topaz
fierce cave
#

okay

buoyant viper
#

anyone know of a good offline speech to text library for java? i tried CMU sphinx4 and it just completely missed the mark, rarely understanding what i was saying

slender elbow
#

whatever Minecraft uses

sly topaz
young knoll
#

Afaik, no

#

Just text to speech

sly topaz
#

or just do the speech recognition part in python and pass the text to your java process via IPC or whatever

#

I assume this isn't for a plugin since you're depending on speech recognition, so the world is your oyster basically

young knoll
#

Clearly it is

#

You gotta talk into the server

sly topaz
#

whisper sweet nothings to the server for a performance boost

slender elbow
#

oh i misread that

sly topaz
#

I wonder if there are any free-ish API for the multi-modal models, they do pretty well at speech recognition but I assume it can get expensive fast

buoyant viper
buoyant viper
slender elbow
#

like i said, i misread

#

heart_hands

buoyant viper
#

i wonder what minecraft does use for TTS tho

#

ive used FreeTTS but its pretty old

#

i always thought they hooked into some kind of Windows narration service for some reason lol

sly topaz
#

There’s plenty of stuff for tts, stt is a different story though

kind hatch
#

I think they use something very basic

young knoll
#

It’s custom

#

com.mojang.text2speech

sly topaz
#

I imagine they just forked something open source

young knoll
#

Although I think it’s based on SAPI

tacit juniper
#

Hey I'm making some custom items for a server with my friends.. The way I'm doing that is by having "private void" and sticking them all in there. It's getting a little cluttered. Is there a better way to do this?

smoky anchor
#

I would love to have my own little private void, infinite trash bag :D

smoky anchor
undone axleBOT
smoky anchor
#

your custom items are simple enough to be just loaded from some config file

#

And this is silly
You should have just made a registerItem method that takes CustomItem, then get the item ID (I assume) and put it in the map
Less repeating yourself, no possibility of you messing up the ID

tacit juniper
#

ah why didn't I think of that

#

well thank you man

#

much appreciated

somber scarab
#

Is there no way of getting what world the players changed to from the PlayerChangedWorldEvent?

#

like making sure that the player has to be in the end?

#

there's only the from() method

smoky anchor
#

Try getting the players current world in that event ?

#

Maybe it fires after the player already changed world

somber scarab
#

oh I thought this gets called before the world change actually registers

#

hmm lemme try

sullen marlin
smoky anchor
#

Ye makes sense :D

undone sphinx
#

I’m writing a Bukkit/Spigot plugin that opens a custom Inventory as a GUI for players. In this GUI I have two special slots defined in GuiUtils:

PAPER_SLOT – players may insert paper here
COIN_SLOT – players may remove coins here
I want to completely lock COIN_SLOT so no item can ever be placed into it—no cursor-drag, no shift-click, no double-click, nothing—just like the result slot of a crafting table. that cannot place an item 100%

My current attempt cancels clicks and drags on that slot, but a clever player can still shift-click a stack into it, immediately shift it back out on the next tick, or drag to the cursor and back. ?

somber scarab
#
                    assignedPlayer.playSound(assignedPlayer, Sound.BLOCK_NOTE_BLOCK_BELL, 0.9F, 0.5F);
                    PotionMayham.instance.getLogger().info("Mayham sound 1 || countdown: " + wrapper.countdown);
                    break;
                case 40, 10:
                    assignedPlayer.playSound(assignedPlayer, Sound.BLOCK_NOTE_BLOCK_BELL, 0.9F, 0.2F);
                    PotionMayham.instance.getLogger().info("Mayham sound 2 || countdown: " + wrapper.countdown);
                    break;
                case 0:
                    assignedPlayer.playSound(assignedPlayer, Sound.BLOCK_NOTE_BLOCK_BELL, 0.1F, 0.5F);
                    task.cancel();
                    break;```

who do all of these sound the same even they they have different pitches?
#

pitches? pitch? pitch-i?

buoyant viper
#

i think it would just be "pitch"

echo basalt
#

Even with NMS I had to edit a lot of the inventory code to register clicks and whatever

near furnace
echo basalt
#

yeah they just need to cancel the right events

somber scarab
#

it's all about server-side

#

which is 100% of bukkit and all its forks

drowsy token
#

how many version remmaped by mojang can buildtools generate?

#

any list can refer to?

echo basalt
#

you can but it needs some effort

#

you can also do it without NMS but it's a lot more annoying

#

I should write a bukkit version of my nms funkery tbf

undone sphinx
#

i see and i need some suggestion about double click item on player inventory the item in the gui that is the same item will merge to inventory? How can i prevent it?

echo basalt
#

print out the click type etc and figure it out

#

PICKUP_ALL -> getCursor -> look in the opposite inventory sumn like that

undone sphinx
#

Ah okay i will try

echo basalt
#

write an abstraction at some point

#

so you can do a lil

menu.getSlot(13) // or whatever
  .setRestrictions(SlotRestrictions.accepts(item -> item.getType() == Material.COOKIE));
#

I still need to redo a bunch of NMS logic to also accept cookie items even if the slot has a display item or whatever

#

thinking something like

public interface MinecraftSlot {

  ItemStack getItem();

  boolean accepts(ItemStack item);
  void consume(ItemStack item);
}
somber scarab
#

is there a way to stop all entities targeting a player to stop after they have targeted them?

echo basalt
#

setTarget(null) on Creature iirc

#

might be on Mob on 1.8

#

something like that

somber scarab
#

but how do I get all mobs tageting my player currently?

echo basalt
#

loop through them, check the target

somber scarab
#

how do I get a list to loop through? 😿

#

do I really have to loop through all entites in a world?

echo basalt
#

yeah

somber scarab
#

wow

echo basalt
#

wow

somber scarab
#

amazing stuff

young knoll
#

I mean you can optimize that by only looping entities in nearby chunks

#

An entity 5000 blocks away probably isn’t targeting them

buoyant viper
#

i think thats when they started giving us official Mojang mappings

#

or maybe it was 1.17

buoyant viper
young knoll
buoyant viper
#

knew it was relatively recent yeah

#

my brain kept going "1.14" but that was PDCs

young knoll
#

1.14 is when they started releasing mappings

#

But the license was too restrictive until 1.17

drowsy helm
thorn isle
#

paper and maybe spigot too also has the EntityTargetEvent which fires whenever any entity targets another entity

young knoll
#

We have that

buoyant viper
#

how can i tell if a Player leveled up from PlayerExpChangeEvent?

#

i thought i could just do if Player#getExp() + PlayerExpChangeEvent#getAmount > expNeededToLevel but it looks like getExp is a 0..1 percentage

#

nor do i actually know of an API method to get exp required to level up

#

oh theres a PlayerLevelChangeEvent instead

#

that makes life a lot easier

echo basalt
#
#

buddy this u?

undone sphinx
somber scarab
#

or shall i say looped and probed? :sus:

north ferry
#

How can I get a list without deserializing the elements in it on FileConfiguration

#

(without extra libraries)

pseudo hazel
#

list of what

#

it has to be deserialized

#

what else would be in the list

slender elbow
#

hopes and dreams

blazing ocean
#

buffer underflow

thorn isle
#

ConfigurationSection::getValues iirc returns a Map<String,Object> where child sections are nested maps, but i don't remember if that will give you the deserialized ConfigurationSerializable's or their serial map-object representations

pseudo hazel
#

sure but OP is talking about a list

#

a list has nothing but the values in the list

#

I guess the only use would be to count the amount of things in it

#

in which case you'd just save an extra variable that is just the amount of items

mint nova
#

Ik its not like Intelija dc server but i cant get help from it :I So i wanna make plugins on 1.16.5 and i installed Java 16 but when im trying to select it, it like dosent work i can only choose 21

thorn isle
#

it will also return lists for yaml lists yes

#

i'm just not sure whether what's in the list is going to be in serial form or deserialized; but if there's anything in the config api that would return the serial repr, it'd be getValues

slender elbow
#

it's all eagerly deserialized as far as i'm aware

north ferry
#

When i get a itemstack list from a config, Bukkit automatically deserialize it
So instead of getting a Map<String, Object> I get a CraftItemStack

pseudo hazel
#

whats the issue with that though

north ferry
#

Normally deserialization is a good thing, but if the itemstack amount is not specified on the file or if it is specified as 1, the order of the returned list does not equal the order of the list in the file.

thorn isle
#

that doesn't sound right

north ferry
#

I can pass this issue with extra library

#

But i don't wanna add whole library for one issue

thorn isle
#

the order of elements in a list isn't affected by the properties of the elements themselves

#

it's for almost certain that you're doing a boob somewhere

#

let's see the config yaml and the code you are using to access it

north ferry
#

I'm sorry, there's been a misunderstanding.

#

ChatGPT fools me sometimes

slender elbow
#

stop using chatgpt

#

wtf

burnt current
#

Hi, I'm having trouble with getting sweet berry growth in an event. I want sweet berry bushes to to die and turn into a dead bush if it fails a random chance check upon trying to grow.

Does anyone know what event sweet berry bushes use when growing?

#

I tried BlockGrowEvent, StructureGrowEvent, and BlockSpreadEvent

#

None of those trigger for sweet berry bushes for some reason

young knoll
#

Are you sure

#

My guess would be BlockGrowEvent or BlockSpreadEvent

burnt current
#

Yeah it seems to work for all other plants

#

I'm not sure why it's not working

#

Ok nvm I see

#

It uses block growth event, BUT this event never triggers if you used bonemeal on the sweet berry bush

young knoll
#

That would be a different event

#

BlockFertilizeEventiirc

burnt current
#

Ahh ok thank you

pure dagger
#

it shows nullable on 1.21.5, but not on 1.21.1, it also shows on older versions

#

did they change anything ?

thorn isle
#

it's been nullable forever

#

though it's only null for air

grim hound
#

another day, another reason to hate kyori

heavy swan
#

😦

quiet flare
young knoll
#

What does that have to do with getItemMeta

grim hound
blazing ocean
#

have you considered opening an issue or asking about it

#

just a thought

grim hound
#

will not

dry hazel
#

?? lol

young knoll
#

“I have an issue with this tool”

Have you tried doing anything to actually solve it?
“No”

blazing ocean
#

that's too hard

paper viper
#

Too hard to open a website these days

paper viper
earnest girder
#

is there a way to boost a player's elytra flight speed to more than default?

buoyant viper
thorn shuttle
#

What is the absolute fastest way for me to test my spigot plugin?

#

Anyone here have a test server?

rough ibex
#

Spinning up one isn't that hard

thorn shuttle
#

..... it's just... time consuming.

earnest girder
#

it would take 5 minutes or less to set it up

#

you kinda need a server if youre gonna make plugins lol

thorn shuttle
#

You have to figure out where to download it... then run it... make a jar runner... install worldedit... install MY thing... accept the EULA...

urban cloak
#

spigotmc.org -> download jar -> java -jar file -> eula.txt -> eula=true -> java -jar file.jar

earnest girder
#

yeah that takes 3 minutes bro

urban cloak
#

that takes 24 seconds

chrome beacon
urban cloak
#

then intsall paper

thorn shuttle
#

Paper, yeah.

chrome beacon
#

And that's how you end up not getting support here

urban cloak
#

ikik

chrome beacon
#

If you're using Paper you should head over to the Paper discord

urban cloak
#

i dont need support tho

remote swallow
#

its not that much of a process as you only really need to do it all once

thorn shuttle
#

True...

wet breach
thorn shuttle
#

I love hotswapping so much. Plugman is the best.

#

too bad windows requires you to stop your server every time you want to swap a jar file.

wet breach
thorn shuttle
#

How do you define hotswapping?

wet breach
#

not by using whatever plugin you are talking about

#

Java allows hotswapping class files and thus no need to stop the server to change out plugins or update them

#

this is the fastest way to test plugins

#

go away

#

and remove your message as it will be removed anyways

#

@worldly ingot

worldly ingot
#

Yeah it's not that kinda server

orchid gazelle
worldly ingot
#

Dude, okay, fuck Mod View

#

That's twice now it's just not shown all a user's messages

thorn shuttle
#

plugman does some reflection-ish things to help unload plugins and reload them without having to reload the entire server.

#

Hot swapping... sounds like you could load a jar while server is running which is great... you still have to swap the file though, right? I know it works on linux, but windows gives me a lot of nagging.

urban cloak
#

no

#

java hotswapping with a debugger

#

google that

wet breach
#

someone knows

buoyant viper
#

MockBukkit

paper viper
#

I use the run server plugin

urban cloak
#

you literally swap the code in the servers memory

paper viper
wet breach
#

indeed however it doesn't work sometimes if you are using reflection

buoyant viper
#

or is it literally just like

#

the JUnit of spigot

paper viper
#

It’s meant for writing JUnit test cases

buoyant viper
#

a

paper viper
#

If you want hot swap, I currently use the run-task gradle plugin

wet breach
#

I don't write unit tests for plugins

#

seems rather pointless to me lmao

urban cloak
#

you can also just use the remote debug feature in intellij

#

you dont need the gradle plugin to hotswap or even use the debugger

#

can even connect to a production server

paper viper
#

No, as in editing the code and then clicking a button will hotswap it for you

#

You don’t have to drag and drop it

wet breach
paper viper
#

I use jetbrains runtime jdk for hot swapping

earnest girder
#

what do I need to import for this to work in 1.21.4?```java
EntityHuman nmsPlayer = ((CraftPlayer) player).getHandle();

remote swallow
#

?nms

earnest girder
#

I have the mappings

remote swallow
#

follow its steps

earnest girder
#

I already did...

remote swallow
#

so you ran buildtools with --remapped for 1.21.4 and added the stuff to your pom?

earnest girder
#

Vec3 imported
I need to do this:

Vec3 current = nmsPlayer.getMot();
drowsy helm
#

EntityHuman isn't remapped

earnest girder
#

whats the import for it?

remote swallow
#

?mappings

undone axleBOT
drowsy helm
#

Player

earnest girder
#

oh, so I dont use any craftbukkit names, I just use the mojang names since I have the mappings?

#

havent used them before

remote swallow
#

yeah

drowsy helm
#

Yeah thats what moj mappings are

#

They replace nms naming

earnest girder
#

ok thanks

#

if I also need to use the spigot Player in the class, can I do something like this:

import net.minecraft.world.entity.player.*;
import org.bukkit.entity.Player;
////
net.minecraft.world.entity.player.Player nmsPlayer = //...
Player player = //...
```?
drowsy helm
#

No

remote swallow
#

yeah

drowsy helm
#

Oh yeah

young knoll
#

Maybe

drowsy helm
#

If you explocity define it

earnest girder
remote swallow
#

make sure you added special source to your pom

chrome beacon
#

And that you're actually using maven to compile your plugin

earnest girder
earnest girder
#

it definitely seems like its using maven to compile it

remote swallow
#

on your paste just double check the versions for me

#

see if you spot anything

earnest girder
#

oh yeah I see

#

thanks

#

im still getting the error tho

remote swallow
#

how are you compiling

slender elbow
#

with the power of love and good will

earnest girder
remote swallow
#

what are you doing to create your plugin jar

earnest girder
#

build -> build artifacts

remote swallow
#

that isnt maven

chrome beacon
#

Artifacts kekw

earnest girder
#

thats the only way I know how lol

#

I've been doing that for 3 years and never thought to change it

chrome beacon
#

Open the maven tab on the right and find package

remote swallow
#

should be under lifecycles iirc

chrome beacon
#

^^

earnest girder
#

double clicking package seems to have compiled it

#

where is the .jar output?

remote swallow
#

now inside target is your jar

chrome beacon
#

^ target folder

earnest girder
#

there are 4 .jars, I want the one that doesnt have "remapped" or "original" in the name?

true cosmos
#

You want the shaded jar, which defaults to your artifact name-version.jar if not set

earnest girder
#

okay, how do I set it?

remote swallow
#

how do you set what?

earnest girder
#

the name of the .jar output file

remote swallow
#

it should be whatever the name of the project is in your pom either change it after and test with a different name or change project name

#

theres probably an easy way to do it with a plugin but i dont use maven so dk

earnest girder
#

okay thanks

buoyant viper
#

u can always just rename it manually

worldly ingot
#
<project ...>
...
  <build>
    <finalName>FinalNameOfJar</finalName>
  </build>
...
</project>

No plugin necessary

slender elbow
#

yeah but that's lame

#

too simple for my overengineering mindset

worldly ingot
#

Sometimes you just have to be lame

#

I've been doing it my entire life

crude zephyr
#

is it posible to make it so hoes get more fortune, and the fortune enchantment stacks with the extra hoe fortune?

buoyant viper
#

bro wants the extra fortunate hoe

young knoll
#

Does fortune even work on hoes

crude zephyr
#

yes

#

for leaves, potatos, wheat, carrots, beetroot

young knoll
#

Huh

#

Works for melons and such too

crude zephyr
#

yes but you usualy mine melons with an axe

young knoll
#

Apparently it always has, but hoes couldn’t get fortune until 1.16

crude zephyr
#

thats why people like me used to use fortune picaxes to farm crops

young knoll
#

Oh yeah melons have a proper tool now

#

Back in my day they didn’t

crude zephyr
#

14w31a yeah

mortal vortex
slender elbow
#

wdym? choco is like 3

young knoll
#

I think choco is younger than me

#

Iirc

earnest girder
mortal vortex
earnest girder
slender elbow
#

movement is controlled by the client

#

just use the api setVelocity

earnest girder
#

Doesn’t work

#

I tried that first. No effect when the player is gliding

primal vector
#

I spawned evokerfangs, but why can't I cast it to a Living entity?

#

when I sout the entity, I get CraftEvokerFangs (do I need NMS)

worldly ice
#

evoker fangs aren't living entities?

primal vector
#

LivingEntity evokerFangs = (LivingEntity) world.spawn(enemy.getLocation(), EvokerFangs.class);

worldly ice
#

yeah

#

evoker fangs aren't living entities

#

that was meant to be more of like a statement rather than a question

primal vector
#

oh

primal vector
worldly ice
#

that doesn't match the method signature that you had in the code snippet

#

a World#spawn(Location, Class) doesn't seem to exist

worldly ice
# primal vector

this would give a compiler error because evoker fangs don't extend living entity

worldly ice
worldly ice
#

that's only if you need to modify anything about the entity before it gets spawned in

#

and it would give you a compiler error if you tried to summon an evoker fang with it

primal vector
#

I see

#

ty

grim hound
#

Kyori messed something up

#

Since it worked for a long time

#

And in a certain kyori update it broke

blazing ocean
#

cool so are you gonna do anything, like open an issue or a PR

grim hound
#

Will need to find it manually today

grim hound
blazing ocean
#

if you don't like it, don't use it

grim hound
#

PE uses it

#

So can't

#

The library, except for a few issues is decent in design

blazing ocean
#

too bad

grim hound
#

It's the support that's absolutely terrible

grim hound
#

If I confirm the reason

#

(Or rather the version it broke in)

paper viper
#

bro is just mad 💀

#

theres a reason why they didn't support you probably

winter jungle
#

Heya, is there a way to translate materials based on the language of the player?

rough ibex
#

like their name?

winter jungle
#

ye

rough ibex
#

chat component, language key

#

the client translates it

winter jungle
#

Thank you!

#

oh yeah thats awesome

grim hound
#

Is the reason

paper viper
#

provides no reason

chrome beacon
#

Are you banned in the Kyori discord as well or smth

blazing ocean
#

my guess is that they're banned from all discords with proper moderation

young knoll
#

Hey wait what are you implying

#

Banned

mortal vortex
#

thats the implication

#

from HIM not me

blazing ocean
#

spigot barely has moderation

mortal vortex
#

I feel like there are barely any raids, or belligerant people who manage to stick around

blazing ocean
mortal vortex
blazing ocean
#

an instance of what not happening

paper viper
#

Well it has been like this in general

mortal vortex
blazing ocean
#

you asked what I'd change, I said I'd have actual clear rules and have those new clear rules be enforced

#

never said rules aren't being enforced

rough ibex
#

i agree

buoyant viper
blazing ocean
#

yea kind of I think

#

idek

wet breach
#

Not sure what rules are not clear

blazing ocean
#

the rules thread references like two other rules pages nobody reads

#

half of which don't apply (anymore)

wet breach
#

O.o. Isn't one of those pages having to do with like premium resources?

#

?rules

undone axleBOT
mortal vortex
#

I thought the discord rules were just the irc rules lol

wet breach
#

They are

mortal vortex
#

i think those rules are enforced fine

wet breach
#

I'm just curious which of the rules is not clear though lol

mortal vortex
#

same

#

and what are not enforced

blazing ocean
wet breach
#

3.4 is not unclear, but can you color chat here?

blazing ocean
#

it's just simply not possible on discord

buoyant viper
#

discord doesnt have colored chat no

blazing ocean
#

these are rules that don't apply here (anymore)

wet breach
#

Ok but that does not make it unclear lol

pseudo hazel
#

it does have markdown

blazing ocean
mortal vortex
#

then what are the rules that are unclear

wet breach
#

You said here clear rules

#

Which implies there is rules that are not clear

mortal vortex
#

kek

blazing ocean
blazing ocean
buoyant viper
mortal vortex
#

Do you know what unclear means?

blazing ocean
#

again, I never said anything about that

mortal vortex
#

You're full of shit

blazing ocean
#

you asked about my personal opinion and what I'd do to change the moderation

wet breach
#

And you said make clear rules

mortal vortex
blazing ocean
pseudo hazel
#

you heavily implied it

mortal vortex
#

yeah lol

pseudo hazel
#

by saying the opposite is fals

blazing ocean
#

I said that rule doesn't apply on discord

#

since discord doesn't have coloured chat

mortal vortex
blazing ocean
# mortal vortex

it makes it way harder to understand what the rules are and which actually apply

wet breach
#

Alright so maybe you used wrong phrasing then since you can not point to a rule that is not clear and instead meant easily accessible rules

mortal vortex
#

lol

#

All the rules are clear

#

rules would be uunclear if they lacked these subpoints.

wet breach
#

I will agree that rules should be all on a single page and easy to read lol

mortal vortex
#

i dont think every single rule needs to be expanded upon, and given such egregious detail. If you have active helpers (which this server does), then they are free to use discression.

wet breach
blazing ocean
#

Never said they need to be expanded upon. There should be a clear page with rules that apply on the discord which doesn't contain any completely unrelated things (like resource rules?) which are also properly enforced

mortal vortex
blazing ocean
#

that is my opinion, you asked for it

mortal vortex
#

accessibility != clearness

paper viper
#

Just have anarchy and give everyone admin

wet breach
#

Lol

paper viper
#

Everybody is equal

blazing ocean
#

nah md_5 is our dictator now

mortal vortex
paper viper
#

Or give me admin and I start a revolution and create Faucet

crude zephyr
#

how would one fork, and compile a github MC plugin project (using intelij)

chrome beacon
#

Depends on the project

#

But in general;
Fork -> Clone -> Open folder with IJ -> hope that it's a maven or gradle project -> wait for all dependencies to load

#

Then look for the Build or Package tasks in the gradle/maven sidebar on the right

sullen marlin
#

Let's make the rules great again

#

Get chatgpt to combine them or something

crude zephyr
#

FUCK NO

#

okay uhh

#

how clone

#

ive forked

chrome beacon
#

git clone is the command

crude zephyr
#

(had to log into my old github account)

crude zephyr
young knoll
#

Or just boring

chrome beacon
crude zephyr
#

thats a good step

chrome beacon
#

But I recommend looking at a couple tutorials

sullen marlin
#

Sure! Here’s a solid set of general Discord server rules you can use as a base. You can modify them to fit your community's specific needs:

Discord Server Rules

Be Respectful
Treat everyone with kindness and respect. No harassment, hate speech, racism, sexism, or discrimination of any kind.

No Spamming
Avoid spamming messages, emojis, links, or voice chat disruptions.

Keep Content Appropriate
This is a [family-friendly/mature] server. Follow the content guidelines appropriate for the age group. No NSFW, excessive profanity, or illegal content.

No Self-Promotion or Advertising
Don’t promote your own or others’ servers, content, or social media without permission from the staff.

Use Channels Properly
Post in the correct channels and follow any specific channel rules pinned at the top.

Respect Staff Decisions
If a moderator or admin makes a decision, respect it. You can appeal in a calm and respectful manner through the proper channels.

No Impersonation
Don’t pretend to be someone else, especially staff or public figures.

Protect Privacy
Do not share personal information—yours or others’—without consent.

Follow Discord’s Terms of Service
All members must comply with Discord's Terms of Service and Community Guidelines.

Have Fun and Be Cool
Enjoy your time here! Let’s keep the community welcoming and enjoyable for everyone.

Would you like me to customize these for a specific type of server (gaming, study group, art, etc.)?

4o

Tools

ChatGPT can make mistakes. Check important i

#

LGTM

#

ship it

crude zephyr
#

omg should i find my old github project i was doing in highschool and try finish it?

chrome beacon
#

If you want to

buoyant viper
#

LGTM

#

lets get this Mbread

crude zephyr
#

i cloned it and opend it, im asuming its the same build method to my projects?

blazing ocean
flint coyote
mortal vortex
buoyant viper
#

oh what

mortal vortex
#

LOL

blazing ocean
#

😭

buoyant viper
blazing ocean
#

nice rules

buoyant viper
mortal vortex
crude zephyr
#

oh so i need to let them load?

mortal vortex
#

why didnt you dm me, coulda done it for you

crude zephyr
#

i like learning sometimes :P

mortal vortex
#

pff learning fuck that

flint coyote
buoyant viper
flint coyote
#

Requires you to have maven installed though. Otherwise you'll have to use the bundled one in intellij from the run configs

crude zephyr
flint coyote
#

bottom left :D

crude zephyr
#

FOUND IT

buoyant viper
#

u can do Clean and then Package in the Maven sidebar

mortal vortex
#

Just click maven on the side? I doubt she's going to have maven

#

click maven on that sidebar

crude zephyr
mortal vortex
#

yeah lifecycle

#

then like build or jar

flint coyote
buoyant viper
#

i will never understand why intellij opens that sidebar SO huge.

crude zephyr
#

for the blind

#

🦯

mortal vortex
flint coyote
buoyant viper
mortal vortex
#

then increase your font size for all linuxes

#

linuxes?

#

lini?

flint coyote
#

xD

crude zephyr
#

anyways, what do

buoyant viper
#

Java

mortal vortex
#

A group of penguins in the water is called a raft, while a group of penguins walking on land is called a waddle.

Would you call a group of linux distros, a "waddle"?

flint coyote
# buoyant viper Java

damn, I spent years learning to code. I could have just done Java. Where have you been a decade ago?

buoyant viper
#

PHP

blazing ocean
flint coyote
mortal vortex
#

erm

blazing ocean
#

distributions

mortal vortex
#

god forbid, people have some humor, mr robot

flint coyote
buoyant viper
#

😭

crude zephyr
#

maybe something did happen and i dont know

mortal vortex
mortal vortex
# crude zephyr

bestie, when you expand "lifecycle" there is a button that says "build"

flint coyote
#

pressed again* after the maven part

crude zephyr
#

i pressed it again and this came up

flint coyote
#

that's an error in your terminal

crude zephyr
#

OHH THERES A BUILD BUTTOON

flint coyote
#

Unrelated to the button

mortal vortex
crude zephyr
#

i was pressing

chrome beacon
#

Double click package

#

You will find the jar in the target folder

crude zephyr
#

i pressed the build button with the hammer

flint coyote
#

damn don't destroy our favorite ide with a hammer. We are developers, not builders

chrome beacon
mortal vortex
#

@crude zephyr pls listen to olivo

#

this button

crude zephyr
#

im looking for pachage

mortal vortex
#

if not package, then "install" works I think

chrome beacon
#

Install runs package as well yes

crude zephyr
#

package worked

lost matrix
#

install runs package as well. It additionally installs the project in your local maven repo so that other maven projects can find it via their pom.

crude zephyr
#

build succsess, now how find .jar

mortal vortex
flint coyote
#

target folder

crude zephyr
#

C:\Users\Vee\Documents\GitHub\CoreProtect\target\CoreProtect-22.4-shaded.jar

#

found

lost matrix
#

lol

chrome beacon
#

You want the one without a suffix

crude zephyr
#

good news, it worked
bad news, its 22.4 again

flint coyote
#

That's likely the latest stable version

#

wait gotta check the repo

lost matrix
mortal vortex
#

or maybe they didnt bump the version, but have had commits since then

#

yeah they just never bumped the version in maven @crude zephyr

#

its atleast 50 commits new

crude zephyr
#

what dose that mean

#

does

#

dose

#

duce

mortal vortex
#

chill

#

ik what u meant

#

it means they have made changes, a lot, but haven't physically changed the numerical version

lost matrix
#

This means you have the latest version if you just pulled the repo and ran package on the project.

mortal vortex
#

^

#

just because it has the same version number, that is on Modrinth / Spigot, doesnt mean its the same code

crude zephyr
#

hi sorry was talking

#

makes sence

smoky anchor
#

sense

crude zephyr
#

errors not coming up now

#

am happy

#

NOT HAPPY

#

NOT HAPPY

#

core protect not working

mortal vortex
crude zephyr
young knoll
#

Plugin is disabled

#

Likely means it shit itself during startup

crude zephyr
#

right

#

restart server?

#

nope restarting server no work

young knoll
#

Read the startup log

#

See why it’s upset

crude zephyr
mortal vortex
#

so remember how we had you package the program?

crude zephyr
#

hey girl

#

uhh

mortal vortex
#

Go back to intelliJ, go into pom.xml

#

its a file

#

in core protect

#

Do you see:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>net.coreprotect</groupId>
  <artifactId>CoreProtect</artifactId>
  <version>22.4</version>
  <properties>
    <project.branch></project.branch>
#

insert "development" as the project branch

#

such that it will look like:

 <project.branch>development</project.branch>
#

then redo the package thing

crude zephyr
mortal vortex
#

re-get the jar

crude zephyr
#

rebuild, and get the new .jar?

mortal vortex
#

yes maam

crude zephyr
#

i press build and waiting

mortal vortex
#

did u press package

#

like we told you

#

like last time

crude zephyr
#

i forgor

#

works now thanks

#

fuck am now still getting erros

#

is spamming

#

very much spamming, any messages that get outputed get buryed

smoky anchor
#

rip

crude zephyr
#

omg thats not a good responce

blazing ocean
#

delete the coreprotect stuff in your DB if you don't need it would be my guess

#

do they not do migrations?

crude zephyr
#

DB im asuming is the config?

north ferry
#

nope

blazing ocean
#

the sqlite database in the configs somewhere

upper hazel
#

I'm developing a marker system in my mini game can you advise me on the best way to do it? My first attempt was when registering a marker to hash the center of the location and its locations on the radius through map to get it already in the task

mortal vortex
crude zephyr
mortal vortex
blazing ocean
#

there should be some .sqlite file in the configs

crude zephyr
mortal vortex
#

the .db file

#

like i said

crude zephyr
#

yes

blazing ocean
#

delete that

mortal vortex
#

Delete it... if you dont care about losing CO stuff

#

otherwise you can manually add the table, but who knows if itll ask for more

crude zephyr
#

oh ok

#

i deleted it
shall restart server now

blazing ocean
#

yea

mortal vortex
#

yes

crude zephyr
#

shame, i liked knowing what every block had done to it