#help-development

1 messages Ā· Page 1188 of 1

slender elbow
#

it can be a world, but it can be anything else

#

it can be a clipboard, or your custom extent

wooden frost
wooden frost
slender elbow
#

you extend it

wooden frost
#

oh

#

yeah

slender elbow
#

what are you trying to do?

wooden frost
#

make a cyllinderšŸ’€

slender elbow
#

then you don't need a custom extent

wooden frost
#

the only thing i found is this :editSession.getSurvivalExtent();

#

can this work?

slender elbow
#

what do you need an extent for?

lilac dagger
#

probably for this

wooden frost
#

Pattern pt = new TypeApplyingPattern(ext, (BlockState) Material.STONE.createBlockData().createBlockState());

slender elbow
#

look at the subclasses of Pattern, you can just pass a BlockState

#

something like BlockTypes.STONE.defaultBlockState()

slender elbow
slender elbow
wooden frost
#

it said blockstate

slender elbow
#

yes

wooden frost
#

so i pass blockstate

#

and it gave error

#

if block type works im gona be pissed

slender elbow
#

because you can't just cast WorldEdit classes to Bukkit classes and vice versa

blazing ocean
#

BukkitAdapter:

slender elbow
wooden frost
#

so

#

i am

#

dumb

#

but the dev is also dumb

#

me dumb for not realising this, dev dumb for not using already existing methods(and variables)

slender elbow
#

what dev? what existing methods?

wooden frost
#

my brain is like way to dizzy from this shit gona take a nap XD

slender elbow
#

they literally cannot use the bukkit API in the core worldedit api

blazing ocean
#

lol

wooden frost
slender elbow
#

worldedit is multiplatform

#

the core API has to work on bukkit, fabric, forge etc

blazing ocean
#

...

wooden frost
#

/developer

#

idk if its a solo dev or not

#

my comprehension is still on a very little scale

blazing ocean
wooden frost
wooden frost
#

ok yeah they had the time to redo the thing

wet breach
#

pretty sure I recall that being the case

blazing ocean
#

they do

#

not for the API though

#

that jar is just the bukkit impl

wooden frost
#

WHY ISNT IT POSSIBLE😭😭😭

shadow night
#

Making universal jars is kinda meh ngl

wet breach
#

not sure then what it isn't possible

blazing ocean
slender elbow
#

the core api is mutliplatform

#

there are adapters (FabricAdapter, BukkitAdapter) in each platform api

wet breach
#

don't think I have ever used the core api

slender elbow
#

I mean, if you've ever used the API at all, you have

wet breach
#

I just depended on the main jar

slender elbow
#

you can't use the worldedit API using only the bukkit api

wet breach
#

not sure what you mean

slender elbow
#

the classes and methods operate on their own types

wet breach
#

if its accessible in the main jar sure I can

#

its java

slender elbow
#

that is not what I mean

#

I'm talking about the classes the API operates with

#

worldedit API does not operate with bukkit classes

#

it operates with worldedit's own types

#

which are accessible in all modding platforms

#

then each platform jar has its own adapter

wet breach
#

Well WorldEdit's api isn't all that great either

#

not like they documentated much of anything as well or if it has a documentation it isn't really clear

#

its a nice tool, just api is probably its biggest downfall of anything however good news you don't need its api

granite iris
#

bump 😭

remote swallow
#

?paste ur build file

undone axleBOT
tender shard
#

i don't even got a phishing rod

#

proxmox backup server is the best thing ever invented

tidal kettle
#

hey how can i import NMS with spigot, i tried this but it doesn't work ... : compileOnly 'org.spigotmc: spigot:1.21.1'

river oracle
#

If you're on gradle I reccomend you use Patrick Chloe remapper

river oracle
#

@tender shard you doing site maitenance?

river oracle
tender shard
#

just a backup

#

was it down for longer than one minute?

river oracle
# tidal kettle uu the site is dead?

Basically run buildtools with the remapped flag --rev 1.21.1 --remapped or on the gui options>remapped tick the box. Then look how to use Patrick Chloe remapper

river oracle
#

If it's still starting it's chill

tender shard
#

now my discord bots are down

#

and the repo will be down in a minute

river oracle
#

Make sure in gradle you have the weird -R0.1-SNAPSHOT at the end tko

tidal kettle
#

okay i wait for the buildtool and try again

river oracle
remote swallow
#

i should make that gradle special source at somepoint

tidal kettle
#

idk if i make smthing bad but i got errors

#

?paste

undone axleBOT
tidal kettle
#

the code

river oracle
remote swallow
#

and the space at : then add :remapped-mojang to the end

tidal kettle
#

thxx

#

but

#

no JavaPlugin Anymore?

remote swallow
#

did your buildtools run complete with no errors

tidal kettle
#

yes

remote swallow
#

did you run it for 1.21.1

tidal kettle
#

i think imma run it another time...

#

yes

remote swallow
#

double check it completed successfully

tidal kettle
#

i ran it another time

#

i think it's okay?

#

okay work now

#

idk what i do x)

#

thx youu

remote swallow
#

reload gradle

blazing ocean
#

will storing a list of entities (villagers) in a game instance's state cause a memory leak

chrome beacon
#

If you mess it up yes

blazing ocean
#

which are in a non-persistent world

blazing ocean
chrome beacon
#

Not remove them when they're unloaded

#

or when they die

old mauve
#

When is spiggot 1.21.5 coming out?

quaint mantle
#

.5?

#

we are on 1.21.4 yeah?

blazing ocean
old mauve
#

I have a friend who uses Bedrock and has already updated to 1.21.50, but Java hasn't appeared for me yet.

chrome beacon
blazing ocean
#

that's because that's a bedrock version, not a java one

chrome beacon
#

They don't follow the same version numbers

#

Bedrock is on 1.21.50.. 50 not 5

old mauve
chrome beacon
#

Geyser already supports 1.21.50 if that's what you want

#

Update it

old mauve
#

But when I enter my friend it says outdated version please update to 1.21

chrome beacon
old mauve
#

But if there is the latest version, the one that came out yesterday

chrome beacon
#

and you're friend is on Bedrock?

old mauve
#

Yes

chrome beacon
#

Could you send the output from /version Geyser

old mauve
#

How? I'm sending you the message that I get when trying to log in from Bedrock. I didn't understand the message. I don't speak English.

chrome beacon
#

and send what it tells you

echo basalt
#

old ass code

lilac dagger
#

it's pretty cool

#

i haven't grasp what everything did tho

blazing ocean
echo basalt
#

sometimes I look up my name to reply to messages I missed

mortal hare
#

notepad++ gigachad

old mauve
fossil ridge
#

Is the docs from Raid#getBadOmenLevel wrong? it says it returns the bad omen level from 0 to 5, but there is no bad omen 0 nor bad omen 6

chrome beacon
fossil ridge
#

yeah

#

but why 0 to 5 like where is the 0 coming from

#

should be 1 to 5?

old mauve
chrome beacon
pliant topaz
#

and 5 is Bad Omen VI

old mauve
buoyant viper
remote swallow
#

yup

wraith delta
rough drift
#

simple enough

wraith delta
chrome beacon
#

and what does that code output

rough drift
#

you're in luck

wraith delta
rough drift
#

I have mine open

chrome beacon
rough drift
#
private static final Pattern HEX_PATTERN = Pattern.compile("#([a-zA-Z0-9]{6})");

private static String colorValue(String text) {
    final var matcher = HEX_PATTERN.matcher(text);
    final var hexColored = matcher.replaceAll(result -> "&x" + String.join("&", result.group(1).split("")));

    return ChatColor.translateAlternateColorCodes('&', hexColored);
}
``` @wraith delta
#

that one works :P

rough drift
wraith delta
rough drift
#

if you want the & change the pattern to have one at the start

wraith delta
#

is there a way to remove that because I use &l too. in combo with #00000, on.. a lot of stuff

rough drift
#
private static final Pattern HEX_PATTERN = Pattern.compile("&#([a-zA-Z0-9]{6})");
chrome beacon
rough drift
#

they are using mine, look up

#

it works for me :P

chrome beacon
#

šŸ¤”

#

User error moment

wraith delta
wraith delta
rough drift
#

why are you coloring it twice o_O

wraith delta
#

I use it in chat and in the hover

rough drift
wraith delta
#

oh, that just colors the nickname, we dont want to color the chat message

rough drift
#

that is coloring everything you know

#

you should use colorValue here too

wraith delta
#

been working on it so much that its messy. it just wont work

rough drift
#

can you try to just send a message on join

#

player.sendMessage(colorValue("&#FF0000RED"))

wraith delta
rough drift
#

&#FF0000RED

#

since you're coloring chat anyways lol

wraith delta
rough drift
#

hm

#

uh did you update the plugin?

wraith delta
#

update what plugin

#

oh the one, yea

rough drift
#

restart or reload

wraith delta
#

yea i restart

rough drift
#

good

rough drift
#

and also

#

System.out.println(colorValue("the same name as that sword"));

wraith delta
#

The translation always works in messages, its the TextComponent thats failing

chrome beacon
#

Looks like the TextComponent constructor doesn't have the magic rgb hack in it

wraith delta
#

Choco did it with a single hex code, but i need the whole gradient. maybe choco knows?

chrome beacon
#

You can just use MiniMessage and their format

wraith delta
#

but then id have to rename all of my items wouldnt i

rough drift
#

I am stupid

rough drift
#

it just needs to be lowercase

wraith delta
#

make what lowercase

rough drift
#

the hex code

#

&#ff0000

chrome beacon
#

but why is it different from the regular sendMessage

rough drift
#

let me get you the source

#

*Picture in case of phone

#

anyways it just parses it as a chatcolor, they probably don't have it to not slow down #sendMessage

wraith delta
#

Youve given me a sendMessage, but i need the color conversion in the TextComponent. where might I make the hex codes convert to lowercase when grabbing the display name

rough drift
wraith delta
#

sendMessage | TextComponent from [item] | the msg you gave

rough drift
#

oh yeah I'm stupid

#

forgot the &

wraith delta
#

ope yea. and then pass my formattedMessage there?

rough drift
#

don't do + formattedMessage

wraith delta
#

its the same

wraith delta
silver robin
young knoll
#

If you are hardcoding a string just use ChatColor.of

fleet lotus
#

hello I don't know if its me the probleme or spigot but when i try to start a new plugin in 1.8.9 it say that and I don't know how to solve it

sly topaz
#

try 1.8.9-R0.1-SNAPSHOT

#

or did the server not have a 1.8.9, I don't remember

#

if that doesn't work then do the same but with 1.8.8

fleet lotus
sly topaz
#

just use 1.8.8-R0.1-SNAPSHOT

slender elbow
#

1.8.9 was client only

#

yeah

#

i am so helpful

#

i should get the helpful role

sly topaz
#

I am surprised that hasn't happened yet

fleet lotus
#

but i already put 1.8.8 is there a difference if i put 1.8.8-R0.1-SNAPSHOT either than 1.8.8

sly topaz
#

1.8.8 is not a valid version for the artifact

slender elbow
#

spigot has always had the -R0.1-SNAPSHOT part

sly topaz
#

the version schema is <minecraft version>-<revision>-SNAPSHOT (it's actually a commit ref but nobody cares about that)

slender elbow
#

there is no "release" version

fleet lotus
#

oh ok thks

sly topaz
#

though, you should probably use a fork like pandaspigot or something rather than raw spigot for that version, given that it probably has more backported API

#

but you haven't heard that from me

fleet lotus
manic delta
#

what is the best way to base multiple items with all their properties? base64?

mortal vortex
young knoll
#

Depends how you need to store them

#

If you want raw compact storage

#

byte[]

mortal vortex
#

You can use NBT serialization, nah?

manic delta
young knoll
#

Then yeah binary would be the best

#

You can use the api to get it but it’s not as ideal as using NMS

manic delta
young knoll
#

Yes

#

Then you serialize it with NbtIo

manic delta
# young knoll Yes
CraftItemStack.asNMSCopy(item).save(new NBTTagCompound());
CraftItemStack.asBukkitCopy(new ItemStack(nbtCompound)); 
#

something like this?

manic delta
young knoll
#

Yes

#

It’s a class that can write/read NBT tags

#

To ByteArrayInput/OutputStreama

manic delta
#

do u have an example?

#

or maybe a forum where i can read about that

manic delta
#

mmm

#

ill try to use it

#

thank you so much

#

i need to install buildtools first

#

kekew

mortal vortex
#

Can anyone give me some insight? Just making a MOTD plugin, with a config, i hate either having to restasrt my server or login to issue the plugin's reload command. I know with other plugins, it is a bit foolish to have your plugin reload on any write change, because it can lead to corruption. But realistically its just a MOTD plugin. Would it be detrimental to have my plugin reload on any write change to the file? Can plugins even do that?

mortal vortex
austere cove
#

?services @winged compass

undone axleBOT
winged compass
mortal vortex
winged compass
#

ohhh ty

sly topaz
#

just make it a config option that is enabled by default

#

I also don't see why it'd lead to corruption, if they mess up the config format then you can just rewrite the file to whatever is the default or get the default right out from the jar

#

that or keeping the old version till the format is fixed

mortal vortex
young knoll
#

Normal java methods

sly topaz
mortal vortex
#

Really appreciated @sly topaz

sly topaz
#

I wish yaml schema validation was more standarized so that one wouldn't have to worry as much about the format tbh

eternal oxide
slender elbow
young knoll
#

Nah

#

It’s named after my username

remote swallow
#

Wait till you find out he was and still is in places coll because he failed to spell cool

worldly ingot
young knoll
#

It’s not

remote swallow
#

how do you know

young knoll
#

Is ur username a typo for cuckoo

#

Because ur crazy

#

Ha gottem

worldly ingot
#

It's actually a typo for cock

young knoll
#

Or maybe it’s chocolate without the late

worldly ingot
#

šŸ”

young knoll
#

Because choco is never late

young knoll
worldly ingot
#

Because I love chickens

remote swallow
#

thats def what you mean

manic delta
#

why i cant import spigot dependency?

#

i mean spigot not spigot-api

#

i have it on my .m2

#

but my ide doesnt recognize it

summer scroll
manic delta
#

but wtf

#

why

#

i had plugins before with "spigot"

manic delta
#

i think im not getting it

#

:kek

summer scroll
manic delta
sly topaz
manic delta
fickle helm
#

What is the best way to utilize the classes that were enums (OldEnum) but are now interfaces?
For example I'm using API version 1.21.3 and need to support older versions so I used Biome.valueOf(biomeName)
However when I run this on 1.20.4 I get this error

java.lang.IncompatibleClassChangeError: Method 'org.bukkit.block.Biome org.bukkit.block.Biome.valueOf(java.lang.String)' must be Methodref constant```
manic delta
#

im using this now šŸ¤”

sly topaz
# manic delta but what if i want a whole inventory
private static final byte ARRAY_SERIALIZATION_VERSION = 1;

public static boolean isEmpty(ItemStack stack) {
  return stack.getType().isAir() || amount <= 0;
}

public static ItemStack emptyItem() {
  return new ItemStack(Material.AIR, 0);
}

public static byte[] serializeItems(Collection<ItemStack> items) {
  try (var baos = new ByteArrayOutputStream();
      var dos = new DataOutputStream(baos)) {
    dos.writeByte(ARRAY_SERIALIZATION_VERSION);
    dos.writeInt(items.size());

    for (var item : items) {
      if (item == null || isEmpty(item)) {
        // Ensure the correct order by including empty/null items
        dos.writeInt(0);
        continue;
      }

      var itemBytes = serializeItem(item);
      dos.writeInt(itemBytes.length);
      dos.write(itemBytes);
    }

    return baos.toByteArray();
  } catch (IOException e) {
    throw new RuntimeException("Error while writing itemstack", e);
  }
}

public static ItemStack[] deserializeItems(byte[] bytes) {
  try (var baos = new ByteArrayInputStream(bytes);
      var dos = new DataInputStream(baos)) {
    var version = dos.readByte();

    if (version != ARRAY_SERIALIZATION_VERSION)
      throw new IllegalArgumentException("Unsupported version or bad data: " + version);

    var count = dos.readInt();
    var items = new ItemStack[count];

    for (var i = 0; i < count; i++) {
      var length = dos.readInt();

      if (length == 0) {
        // Empty item, keep entry as empty
        items[i] = emptyItem();
        continue;
      }

      var itemBytes = new byte[length];
      dos.read(itemBytes);
      items[i] = deserializeItem(itemBytes);
    }

    return items;
  } catch (IOException e) {
    throw new RuntimeException("Error while reading itemstack", e);
  }
}

didn't totally just copy Paper's impl of this
-# just changed the name because it sucks, also <3 var

sly topaz
sly topaz
#

the server goes out of the way to do legacy support shenanigans so you don't have to, may as well take advantage of that

#

then again, the registry API has existed for quite a while now (since 1.14), how far back are you targeting?

manic delta
river oracle
fickle helm
#

1.19, guess I've been doing it wrong

sly topaz
#

multi-release spigot jars when

sly topaz
fickle helm
#

well crap that was easy

return Registry.BIOME[NamespacedKey.minecraft(name.lowercase())]
fierce whale
#

I tried to use protocol lib but site doesn't work 😦

quaint mantle
fierce whale
quaint mantle
manic delta
#

i think i made the serializeItems one

#
public static byte[] serializeItems(Collection<ItemStack> items) {
        try (var baos = new ByteArrayOutputStream();
             var dos = new DataOutputStream(baos)) {
            dos.writeByte(ARRAY_SERIALIZATION_VERSION);
            dos.writeInt(items.size());

            for (var item : items) {
                if (item == null) {
                    // Ensure the correct order by including empty/null items
                    dos.writeInt(0);
                    continue;
                }

                var itemBytes = serializeItem((CompoundTag) CraftItemStack.asNMSCopy(item).save(MinecraftServer.getServer().registryAccess()));
                dos.writeInt(itemBytes.length);
                dos.write(itemBytes);
            }

            return baos.toByteArray();
        } catch (IOException e) {
            throw new RuntimeException("Error while writing itemstack", e);
        }
    }
    public static byte[] serializeItem(CompoundTag tag) {
        ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
        try {
            net.minecraft.nbt.NbtIo.writeCompressed(tag, outputStream);
        } catch (IOException ex) {
            throw new RuntimeException(ex);
        }
        return outputStream.toByteArray();
    }
sly topaz
sly topaz
wide cipher
#

How can I use gson to get the url string of this JSONstring? { "timestamp" : 1702007669624, "profileId" : "5e54234d3c864291b8d7321d39a0bd20", "profileName" : "Nagasonic", "signatureRequired" : true, "textures" : { "SKIN" : { "url" : "http://textures.minecraft.net/texture/e4af165698f313809f5e01bdf8863bc19e94aa8b863b936f8d33b59cdc9c57fb" } } }

sly topaz
#

you could ask chatgpt that question really lol

buoyant viper
wide cipher
short pilot
#

hello fellow inttelectuals!

#

i was looking at a database my plugin makes for data and i saw these other sql features

#

i was wondering how to create indices in java or how exactly they work

#

would you have to specify some sort of primary column beforehand

sly topaz
#

and if you've used a primary key before, then you've already used indexes

tender shard
sly topaz
#

is that gson tho

tender shard
#
import com.google.gson.JsonParser;
sly topaz
#

I've never used gson to manually parse json objects, since it is so easy to just create a record for it lol

wide cipher
#

Nah I did it

sly topaz
#
record Profile(long timestamp, 
                   String profileId, 
                   String profileName, 
                   boolean signatureRequired, 
                   Textures textures) {}
record Textures(@SerializedName("SKIN") Skin skin) {}
record Skin(String url) {}

var profile = someGsonInstance.fromJson(jsonString, Profile.class);
short pilot
#

since we're indexing by that

sly topaz
#

it improves read performance, yes

#

however it may reduce write performance in certain scenarios, so you have to know your data if you are planning on manually assigning some indexes to your tables

sly topaz
short pilot
#

ic ic

rapid wharf
#

i want to use methods from jar plugin (it doesnt have api)
what should i do?

drowsy helm
quaint mantle
#

am i update my java version 21 to 23?

pseudo hazel
#

no reason to

#

its probably gonna break, esp on windows

chrome beacon
#

The proper approach is to install file it to your local maven repo

#

SystemPath dependencies are deprecated

drowsy helm
#

Ah yes

blazing ocean
#

I love storing the spigot jar in the project directory

remote swallow
#

could be worse

#

could be shading it

blazing ocean
#

true

chrome beacon
#

šŸ”«

blazing ocean
#

why would it not

#

šŸ”«

chrome beacon
#

Spigot uses jarinjar

#

If you use it like that it will just load the bootstrap

blazing ocean
#

you can compileOnly a spigot jar, I've done that lol

chrome beacon
#

For an older version?

blazing ocean
#

sure

chrome beacon
#

Yes that's possible

#

I'm talking about the modern jars

blazing ocean
#

if you extract the jar yea

#

need to do it properly

chrome beacon
#

If you extract it yes you can do what you want

#

but that's not what your message said šŸ”«

blazing ocean
blazing ocean
vestal mountain
#

Hello

#

I have a problem with buildtools

#

I selected 1.21 version and it install 1.21.1

chrome beacon
#

That's intentional

#

1.21 got superseded by 1.21.1

vestal mountain
#

I cant build my project

#

Waite let me send the error

chrome beacon
#

Depend on 1.21.1 instead of 1.21

vestal mountain
#

But i cant make a spigot project with 1.21

#

1.21.1*

fierce whale
#

Is there a way to remove temporarily without spectator?

smoky anchor
chrome beacon
#

remove what

fierce whale
chrome beacon
#

maybe you could do some core shaders for that with a resourcepack

#

not sure

smoky anchor
fierce whale
#

I saw a server remove crosshair without resource pack
I don't understand how they did it.

smoky anchor
#

What server ?
I could maybe take a look.

blazing ocean
#

You can set the players camera

#

Without spectator mode it looks really funky though

chrome beacon
#

That works without spectator šŸ‘€ ?

fierce whale
#

I already tried that but crosshair doesn't disappeared in survival mode

blazing ocean
fierce whale
#

yes we can do it with nms

chrome beacon
#

ebic fail

fierce whale
#

yes that's what I want to tell

blazing ocean
#

I was just referencing the "looks really funky" part

fierce whale
#

Umm... Is it allowed to mention the server name?

blazing ocean
#

Note that I'm only sending a gamemode change packet here so we don't have any spectator hotbar or anything

fierce whale
#

Ahha I got an answer thanks šŸ™‚

blazing ocean
#

You could do that I guess

#

Note that it can very well lead to undefined behaviourā„¢

fierce whale
#

thank you your my savior šŸ‘

chrome beacon
#

JEP 484 got added in Java 24 uwu

blazing ocean
#

classfile api goes crazy

remote swallow
#

link the jep so i can figure out what it is

blazing ocean
#

classfile api

remote swallow
#

jep link

#

go

chrome beacon
remote swallow
#

ty olivo

#

atleast someone cares

#

looks cool

manic delta
#

tysm

hushed spindle
#

weird interaction i found, please correct me if im misunderstanding

#

but modifying an item packet (like container contents packet, player inventory packet, slot item change packet) for a player increative mode actually changes the nbt of the item

#

but not in survival mode

#

so creative mode inventories are determined purely on packets

slender elbow
#

in creative mode, the client has complete authority over the items that are in their inventory

#

so yes, that's normal

echo basalt
#

iirc the solution to that was to remove the meta from the "real" item and re-add it to the client-sided one

#

constantly fighting creative

slender elbow
#

or just disallow creative mode

#

something something item related exploits

ancient plank
#

I love creative mode!!!

runic kraken
#

hey I need your help I need your suggestions. How can I write a /tp command system so that it works between 2 different spigot servers connected to the bungeecord server

shadow night
blazing ocean
shadow night
#

What if we did that

blazing ocean
shadow night
#

aww

#

well, then there's another way

#

Repeated command block minecart spawning more repeated command block minecarts that just spawn shittons of pigs

blazing ocean
quaint mantle
#

Does anyone knows how to include dependency in the aftifact build in inteliJ idea? I tried implementing "club/minnced/discord/webhook/WebhookClient"
when I tried to use it, it throws this exception java.lang.NoClassDefFoundError but this didnt happened with SQL dependency.

I tried added it to my artifact build but still the issue presist.

#
[17:20:16 WARN]: Exception in thread "Thread-13" java.lang.NoClassDefFoundError: club/minnced/discord/webhook/WebhookClient
[17:20:16 WARN]:        at smpMGR.jar//org.opi.crimeSys.modules.heartbeat.watchPlayers(heartbeat.java:36)
[17:20:16 WARN]:        at smpMGR.jar//org.opi.crimeSys.modules.heartbeat.updateFunctions(heartbeat.java:67)
[17:20:16 WARN]:        at smpMGR.jar//org.opi.crimeSys.modules.heartbeat.run(heartbeat.java:85)
[17:20:16 WARN]: Caused by: java.lang.ClassNotFoundException: club.minnced.discord.webhook.WebhookClient
[17:20:16 WARN]:        at org.bukkit.plugin.java.PluginClassLoader.loadClass0(PluginClassLoader.java:197)
[17:20:16 WARN]:        at org.bukkit.plugin.java.PluginClassLoader.loadClass(PluginClassLoader.java:164)
[17:20:16 WARN]:        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
[17:20:16 WARN]:        ... 3 more
quaint mantle
chrome beacon
quaint mantle
#

is there any easy way how to switch to maven?

#

I am using grandle

chrome beacon
#

Basically code that doesn't exist cannot run so you'll need to include or load the dependency on the server

#

Gradle works too

#

Get the shadow plugin for gradle and shade that dependency in to your jar

#

Make sure to relocate it

quaint mantle
#

i would share the shade code in second

#
plugins {
    id 'java'
    id("io.github.goooler.shadow") version "8.1.8"
}

group = 'org.opi'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
    maven {
        name = "papermc-repo"
        url = "https://repo.papermc.io/repository/maven-public/"
    }
    maven {
        name = "sonatype"
        url = "https://oss.sonatype.org/content/groups/public/"
    }
}

dependencies {
    compileOnly("io.papermc.paper:paper-api:1.21.1-R0.1-SNAPSHOT")
    implementation("mysql:mysql-connector-java:8.0.33")
    implementation("club.minnced:discord-webhooks:0.8.4")

}

def targetJavaVersion = 21
java {
    def javaVersion = JavaVersion.toVersion(targetJavaVersion)
    sourceCompatibility = javaVersion
    targetCompatibility = javaVersion
    if (JavaVersion.current() < javaVersion) {
        toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
    }
}

tasks.withType(JavaCompile).configureEach {
    options.encoding = 'UTF-8'

    if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
        options.release.set(targetJavaVersion)
    }
}

processResources {
    def props = [version: version]
    inputs.properties props
    filteringCharset 'UTF-8'
    filesMatching('plugin.yml') {
        expand props
    }
}

tasks {
    shadowJar {
        archiveClassifier.set('')
    }
    build {
        dependsOn shadowJar
    }
}
```\
quaint mantle
# chrome beacon Make sure to relocate it

I tried to relocate it but it dosent work

tasks {
    shadowJar {
        dependencies {
            include(dependency('club.minnced:discord-webhooks:0.8.4'))
        }
    }
    build {
        dependsOn shadowJar
    }
}
#

same issue NoClassDefFoundError

chrome beacon
#

How are you building your jar

blazing ocean
quaint mantle
#

first use ./gradlew shadowJar

and then build artifacts

chrome beacon
#

Don't use artifacts

blazing ocean
#

don't build artifatc

#

use the gradle build task

#

since you set it to depend on shadow, you don't need to run shadow befor

quaint mantle
#

alright can you help me how to do that?

#

I didnt saw any other method

blazing ocean
#

gradlew build?

quaint mantle
#

ohh this?

#

I am using this> ./gradlew shadowJar

blazing ocean
#

just run ./gradlew build

zealous scroll
#

Is there a reason setting end portals with the FAWE API causes them to be invisible until adjacent blocks are updated? Is there a way I can force this update upon players?

pseudo hazel
#

shadowJar also builds

#

you shouldnt have to do anything past that I think

quaint mantle
chrome beacon
blazing ocean
chrome beacon
#

They disabled the classifier

#

There won't be a -all

quaint mantle
#

oh I see thanks, is there something that I can use to it directly generate it to the plugins folder?

quaint mantle
blazing ocean
#

you can use a copy task

chrome beacon
quaint mantle
#

alright

pseudo hazel
#

your internet used the copy task

blazing ocean
#
tasks.register("copyJars", Copy.class) {
    from(tasks.shadowJar)

    into("pathToPluginsDirectory")
}

tasks.assemble {
    dependsOn("copyJars")
}
#

groovy ^

chrome beacon
#

Groovy uwu

blazing ocean
#

no

#

I had to modify it to work with groovy smh

quaint mantle
#

it is weird that the sql lib didnt required to be included in the jar

chrome beacon
#

Spigot includes it for you

blazing ocean
#

spigot bundles some sql stuff ^

quaint mantle
#

ohhh, thanks for explaining

#

wait so copy the all or witout the all?

blazing ocean
#

the one with -all

quaint mantle
#

btw the copy thing dosent work, I used ./gradlew shadowJar

blazing ocean
pseudo hazel
#

shadowJar generates -all, build does not (iirc)

blazing ocean
blazing ocean
#

if you didn't do that

quaint mantle
#

mb

#

nope still dosent work

#

I would try to fix later

remote swallow
#

which their build.gradle did

pseudo hazel
#

ah

quaint mantle
#

do I need to shadow the spigot too? I am getting same no class def found error but with org/json/JSONException

blazing ocean
quaint mantle
#

alright

#

i got problem, I fixed the json exception by adding it to the shade

#

but now it is the OkHttpClient

#

isnt there any command in gradle that would shade all the lib dependencies?

blazing ocean
#

show your entire current buildscript

quaint mantle
blazing ocean
#

and please don't do this ```groovy
tasks.shadowJar {
doLast {
def jarFile = archiveFile.get().asFile
def destinationDir = file("C:\Users\tomma\Desktop\mcserver\plugins")

    if (!destinationDir.exists()) {
        destinationDir.mkdirs()
    }

    copy {
        from jarFile
        into destinationDir
    }

    println "Copied ${jarFile.name} to ${destinationDir}"
}

}

#

but rather the thing I sent

quaint mantle
blazing ocean
#

and what did not work

quaint mantle
#

this is temp fix I would look to it later

quaint mantle
#

to the destination

blazing ocean
#

and did you run the task

quaint mantle
#

yep

#

the shadow one

blazing ocean
#

well I told you to not run that

quaint mantle
blazing ocean
#

and run the one you created instead

quaint mantle
#

wait so use gradlew copyJars?

blazing ocean
#

yes

#

that will build and copy the jars

quaint mantle
#

thanks lot! after I removed the shadow thing it have all the included libs into it

#

and the copy thing worked, I tought the task would run on the shadowJar

quaint mantle
#

it works now thanks

#

wait one question? why is the artifacts are considered a bad practice?

blazing ocean
#

that will always try to copy on every single build

#

what if somebody who does not have that directory wants to build

#

pretty sure that will just fail

#

-# not saying hardcoding paths is a good practice

quaint mantle
#

i watched some tutorial and they recomended artifacts, since from that tutorial, I used the artifacts

blazing ocean
#

oh artifacts

#

yeah please no

quaint mantle
#

thanks for the suggestion of using the gradlew

blazing ocean
#

fuck no

quaint mantle
#

it is much better to run one command

#

and everything works

blazing ocean
#

intellij should never be used as a build tool

quaint mantle
#

yep, almost every tutorial in the inteliJ idea suggesting the artifacts. I dont know why they do that

blazing ocean
#

did you reload gradle

quaint mantle
#

How can I break a block without dropping the ItemStack? I'm using BlockBreakEvent and trying with block.breakNaturally()

quaint mantle
#

and make sure you destroy the block via code

#

but the block will be still there

#

ohh

quaint mantle
#

instead of the cancel

#

just show that on the docs

#

i'll be using that

#

in methods

#

Thanks tomas

#

now it works well

#

np

umbral pumice
#

is there a way to call an inventory involved in a transaction that you created, theres top and bottom for player but what about the menu you just created

#

player.getOpenInventory().??

shadow night
#

You mean like an inventory view?

umbral pumice
#

Some method that would call everything in that custom menu

#

like if you open a crafting grid, call whats in the crafting slots

fossil ridge
#

Is there a way to get when a player enteres a structure on 1.21.1? I do not want to touch packets nor nms.

manic delta
#

If I want to save data from ALL players on the server every x time, what would be the best option?

#

async schedule and sending data to the database and that's it?

umbral pumice
#

It has getTopInventory and getBottomInventory, but isnt that just calling the hotbar and bigger inventory section of the player?

#

Or does getTopInventory refer to the open GUI

sonic goblet
#

Bottom inv is the players inventory, the hot bar included in that

umbral pumice
#

Ohhh

#

Neat, thank you

#

So something like this

player.getOpenInventory().getTopInventory().getStorageContents();

Would call back a list of ItemStacks in the opened GUI?

#

This might be easier then i thought lmao

sonic goblet
#

Correct

umbral pumice
#

Ight den, time to mess with menutypes and get this in a much simpler system

#

doing custom crafting

sonic goblet
#

I did custom crafting last year 🫔 best of luck

umbral pumice
#

Well since they added menu types, if one of these menus is super simple, it just made custom crafting 10x easier

#

or i can just ignore certain blocks lol

sly topaz
#

I mean, for custom crafting 99% of the time all you have to do is register recipes

umbral pumice
#

Ghost blocks called upon crafting cant store names, or descriptions

#

Its a mojang bug

sly topaz
#

ghost blocks?

umbral pumice
#

the blocks that show up when you click a recipe for something

blazing ocean
#

javier how did you use to do that KMP thing

#

I wanna try to figure this out

sonic goblet
#

I don’t think that’s true 1 second

sly topaz
umbral pumice
#

Try it yourself

#

It wont work. That player head is missing its data, but it shows up fine on the left

sly topaz
#

best you can do is probably just not use kmp for it, and just use different modules altogether

blazing ocean
#

yeah but that's like

#

boring

sly topaz
#

I am slowly cracking away at the gradle plugin implementation, however it's taking time since I don't fully understand the gradle API either lol

blazing ocean
#

haha yeah the KGP is really odd sometimes

#

I've had to work with the compiler codebase a bit for some shenanigans and it's been odd

sonic goblet
umbral pumice
young knoll
#

Inputs, not the output

umbral pumice
#

check the input

#

Still wont work

#

and if it does, they are using custom textures

sonic goblet
#

Ahh sorry, ya thats because it wants Material only iirc

#

For input

umbral pumice
#

😭

#

stupid as fuck

young knoll
#

You can do exact choice

umbral pumice
#

like fr mojang

young knoll
#

But Mojang doesn’t really support that

umbral pumice
#

and its such a simple fix for them but they dont want people to customize the game

#

so we get broken inputs on custom recipes

young knoll
#

I mean I still don’t really see the issue

umbral pumice
#

use a player head, its missing its skin

young knoll
#

Do people use the recipe book to craft items that much?

umbral pumice
#

then players are confused

sonic goblet
umbral pumice
#

It just confuses players heavily cause they think it wont work in all reality it will work

#

minor visual issue 🤣

sonic goblet
#

frick

quaint mantle
#

Its possible to recreate the pickup animation for a block? I mean, like make the drop move to the block and like clear it then

umbral pumice
#

theres gotta be a simple fix for them only accepting Material instead of ItemStack

#

for the input

sonic goblet
umbral pumice
#

So thats a nice idea

#

Too bad its a small grid

#

Wonder how these new MenuTypes are

sonic goblet
umbral pumice
#

Oh i know, its just dumb we cant use it on a crafting table...

#

I did the same thing with my plugin but it was a custom crafting menu

#

Ill just do what that video shows basically

sonic goblet
#

Ahh I see what u mean, agree

#

Ya at the time it was the best way I could find to achieve this as well as the custom stack amounts (by default 1 item amount per craft for all items in MC)

umbral pumice
#

Im really big on visual bugs that would confuse the player, so i have to do this in a way that doesnt allow ghost items

#

Which means, no crafting table with the book

sonic goblet
#

I haven't looked but I wonder if we can hijack the packet that shows the ghost item and replace it šŸ¤”

#

Actually its prob client side

umbral pumice
#

It is

#

Client sided bug

sonic goblet
#

😭

umbral pumice
#

Can you open the crafting table without the book

#

would be sick nasty

young knoll
#

Don’t think so

umbral pumice
#

stupid crafting book, only console players need that crap anyways

#

grrr

fossil ridge
umbral pumice
# sonic goblet 😭

Wanna know the kicker, i opened a bug for this saying it was a client sided bug of missing data on input crafting items. Ticket got closed saying works as intended

#

Mojang doesnt intend for custom items

blazing ocean
#

They are literally making the groundworks for data-driven items atm lol

sonic goblet
#

Ya I didn't think it was a bug, I figured that was the case lol

blazing ocean
#

d18n goes brr

sly topaz
#

you can already have custom items, there's no property you can't change with data components now lol

#

at least not one that matters anyway

sly topaz
#

that's what datapacks are all about

umbral pumice
#

oh eww

#

Just fix the client sided bug

#

but they wont

#

So

blazing ocean
umbral pumice
#

I said i havent heard of it, not it is completely false

#

Thanks for the link though

#

reading rn..

proper cobalt
sonic goblet
#

Although the vid is on the development server

fossil ridge
#

Why is org.bukkit.entity.Breeze still marked as experimental / unstable in 1.21+?

sullen marlin
#

Seems like an oversight

lilac dagger
#

hey md, how are you? šŸ˜„

glad prawn
lean pumice
#

!help

#

someone can give me the mapped method of NMS and Forge site?

worthy yarrow
#

?nms

worthy yarrow
#

Not sure what the forge site is but there’s nms

young knoll
#

?mappings

undone axleBOT
young knoll
#

Mayhaps

ocean tide
#

Why PotionEffectType dose not have valueOf method, how could I check if some string is a proper name of potion type?

lilac dagger
#

check if PotionEffectType is an enum

#

it's not

#

there's this

ocean tide
#

ye but in recent version of spigot this method is deprected

lilac dagger
#

the name?

#

if the name is deprecated you can also use the key

#

i'm sure the key has a string value as well that you can store

#

and then you can recreate the key when you convert it back from string

ocean tide
#

ok thanks

lilac dagger
#

no problem šŸ˜„

young knoll
#

Registry

lilac dagger
#

there you go

young knoll
#

Specifically Registry.EFFECT

ocean tide
young knoll
#

match()

jade oasis
remote swallow
#

you return false somewhere

proud badge
#

happens to me sometimes when I forget to do that

mortal vortex
proud badge
#

yes

#

when its registered in plugin.yml but not in onEnable it just returns the name of the command

mortal vortex
#

OH right yeah

#

And then if it's not in plugin.yml u get the generic "command not found"

proud badge
#

yes

craggy moss
#

How can I download spigot mc?

hushed spindle
#

you kinda have to build it

#

you get buildtools.exe or buildtools.jar and run it, you can get your desired version that way

torn shuttle
#

hey gamers, is 1.21.4 1_21_R3?

lilac dagger
#

@torn shuttle yes

torn shuttle
#

what kind of curse is maven hitting me with now

#

why is it every single time with maven

#

brother

#

ide says none of this works

#

and yet it installs just fine

#

have I ever mentioned how much I despise maven

eternal oxide
#

IJ issue not maven

torn shuttle
#

this time yes

#

oh and incrementing the module version fixed it

#

of course it did

#

why wouldn't it

eternal oxide
#

lol

torn shuttle
#

maybe I should've also checked if going to my fridge and setting on fire might've fixed it, makes about as much sense

eternal oxide
#

very likely as its a caching issue

tender shard
#

maven multimodule is a pain anyway

tender shard
eternal oxide
#

you can if you use the <revision> tag

tender shard
eternal oxide
#

Parent

    <artifactId>essentials_suite</artifactId>
    <version>${revision}</version>
    <packaging>pom</packaging>

    <properties>
        <revision>1.0.0-SNAPSHOT</revision>``````xml
    <parent>
        <groupId>com.palmergames</groupId>
        <artifactId>essentials_suite</artifactId>
        <version>${revision}</version>
    </parent>
    <artifactId>essentials</artifactId>
    <packaging>jar</packaging>```
tender shard
torn shuttle
torn shuttle
#

hm I think I already tried something like that before but let's try it again I guess

eternal oxide
#

Eclipse is fine with it, but I guess IJ just complains

rough drift
#

eclipse W

rough drift
#

You build the first version normally

#

then add a revision variable to the parent pom

#

which has the same version you just built

#

then you edit all poms

#

and voila intellij and maven are happy

torn shuttle
#

doesn't seem to want to work

eternal oxide
#

Its probably just your chubby fingers

torn shuttle
#

yeah it really doesn't want to work

eternal oxide
#

you sure you did revision in properties and not version ?

torn shuttle
#

I don't even know why it's looking for it in the spigotmc repo

eternal oxide
#

try adding some text to yoru version so its not just a number

#

revision

#

That rings a bell for me

eternal oxide
#

same for me

tender shard
#

magma show your parent pom

torn shuttle
#
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://maven.apache.org/POM/4.0.0"
         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>com.magmaguy</groupId>
    <artifactId>EasyMinecraftGoals-manager</artifactId>
    <version>1.15.0</version>
    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
<!--        This sets the versions of the modules!-->
        <revision>1.15.0</revision>
    </properties>

    <!-- This is the project parent, do not create further artifacts -->
    <packaging>pom</packaging>

    <modules>
        <module>EasyMinecraftGoals/dist</module>
        <module>EasyMinecraftGoals/core</module>
        <module>EasyMinecraftGoals/v1_19_R3</module>
        <module>EasyMinecraftGoals/v1_20_R1</module>
        <module>EasyMinecraftGoals/v1_20_R2</module>
        <module>EasyMinecraftGoals/v1_20_R3</module>
        <module>EasyMinecraftGoals/v1_20_R4</module>
        <module>EasyMinecraftGoals/v1_21_R1</module>
        <module>EasyMinecraftGoals/v1_21_R2</module>
        <module>EasyMinecraftGoals/v1_21_R3</module>
    </modules>

    <distributionManagement>
        <snapshotRepository>
            <id>magmaguy-repo-snapshots</id>
            <url>https://repo.magmaguy.com/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>magmaguy-repo-snapshots</id>
            <name>MagmaGuy's Repository</name>
            <url>https://repo.magmaguy.com/releases</url>
        </repository>
    </distributionManagement>

</project>
tender shard
#

<version>

#

must be ${revision}

torn shuttle
#

this is the parent

tender shard
#

yes

eternal oxide
#

yep, version has to be dynamic so ${revision}

torn shuttle
#

<version>${revision}</version>
right

#

still doesn't work

eternal oxide
#

in parent?

torn shuttle
#

yes

tender shard
#

what's the error msg?

torn shuttle
#

parent

#

still the exact same error

#

let me blast the cache

eternal oxide
#

always a good plan with IJ

tender shard
#

have you tried mvn clean install -U?

#

oh also ignore everything intelliJ says

torn shuttle
#

I can't ignore what it says when it's trying to install

tender shard
#

ij isn't the brightest candle in oliver193's ass, it compiles just fine but IJ complains anyway

torn shuttle
#

to be fair there's a lot of candles in there

tender shard
#

yeah, like... many

torn shuttle
#

still doesn't work after blasting the cache and doing a clean

#

still the same error

tender shard
#

no idea then. I'd run mvn clean install -X -U, then copy/paste the whole log and all my pom.xml's into chatgpt lol

eternal oxide
#

Yeah I see no reason for it not workign for you

#

not unless your maven is ancient

tender shard
#

oh yeah good point

#

I'm using 3.9.9 but I am 100% sure that I tried this exact way back in 3.6.3 and it didnt work then

#

it said sth like "bla bla parent version information cant be dynamic" or sth

#

what's your mvn -v?

#

because tbh it looks like your versio nisn't even trying to replace ${revision}with sth and just interprets it as normal string, so maybe your maven is even older?

vital ridge
#
private void updateInventory() {

        if (playerCourse.hasLength() && playerCourse.hasDifficulty()) {

            ConsoleManager.message(playerCourse.getLength());
            ConsoleManager.message(String.valueOf(playerCourse.getLength() != null));
            ConsoleManager.message(playerCourse.getDifficulty());

            MenusFile menusFile = MAIN.getMenusFile();

            ConfigurationSection itemListSection = menusFile.getSection("my-courses-menu.choose-attributes-menu.item-list");

            MenuUtils.printItem(itemListSection.getConfigurationSection("submit-course"), "regular-item:submit-course", inventory);

        }

Im not sure why, but when I print out getLength() it prints null, and when I check if its != null it says true. So a code that should run only when course has difficulty and length set still runs.

torn shuttle
#

whatevr I can't be fucked to change this nwo

#

I have so many things I have to update

lost matrix
vital ridge
#
public String getDifficulty() {
        return difficulty;
    }

    public void setDifficulty(String difficulty) {
        this.difficulty = difficulty;
    }

    public String getLength() {
        return length;
    }

    public void setLength(String length) {
        this.length = length;
    }

    public boolean hasLength() {
        return length != null;
    }

    public boolean hasDifficulty() {
        return difficulty != null;
    }
#

A small inconsistency with the this. keyword

#

but still

lost matrix
#

With this implementation the output of:

            ConsoleManager.message(playerCourse.getLength());
            ConsoleManager.message(String.valueOf(playerCourse.getLength() != null));
            ConsoleManager.message(playerCourse.getDifficulty());

Will never be

null
true
null
#

It has to print non-null values, unless you are using a String that literally says "null"

#

Btw why is your length a String?

vital ridge
#

Oh a length is actually a string, you can set your course to be "Extremely-Long"

#

Its just a visual

lost matrix
#

Ok, so is there still an issue with the code?

vital ridge
#

Idk wtf happened

#

I just restarted my server

#

and the code started working

#

I mustve changed something

#

but Idk what I changed

lost matrix
#

Classic

soft hound
#

A question, I want to make a class where I'll store the player's balance and other important informations, for example

package com.ancho.spigot.utils;

import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public abstract class CustomPlayer implements Player {
    
    public HashMap<String, Integer> currencies = new HashMap<>();
    public String prefix;
    public List<Permission> permissions = new ArrayList<>();
}

Would this above be a good idea to use?
Ofc have methods inside where you add the permissions, set the prefix etc..

smoky anchor
#

implements Player
no

soft hound
smoky anchor
#

You do not need to store permissions yourself, those are handled for you.
The rest I'll let someone else answer

soft hound
smoky anchor
#

I mean, I'd take a look at PDC

young knoll
#

Map everything to the players uuid

#

And have some sort of manager class that stores said map

soft hound
#
import org.bukkit.entity.Player;

public class CustomPlayer {
    private Player originalPlayer;
    String rank;

    public CustomPlayer(Player bukkitPlayer, String rank) {
        this.originalPlayer = originalPlayer;
    }

    public Player getBukkitPlayer() {
        return originalPlayer;
    }

    // Custom methods
    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    public String getRank() {
        return rank;
    }

    public void setRank(String rank) {
        this.rank = rank;
    }
}```

I wanted to make something like this.
But would it have been smart to make a new instance every time a player joins tho?
#

In a Map<UUID, CustomPlayer>

chrome beacon
#

Avoid keeping a direct reference to the player

#

Use the UUID to lookup the player instance when you need it

young knoll
#

I’ve wondered if it’s worth making a little wrapper around a weak reference for players

#

Or if I should just Bukkit.getPlayer every time

summer scroll
#

What event that gets called for the top part of cactus when I break the bottom block of the cactus? I'm trying to make the block to not drop items on ground.

chrome beacon
#

Are you trying to prevent all cactus drops?

#

Or that case specifically

summer scroll
#

Yes exactly

chrome beacon
#

?

#

Which one :kekw:

summer scroll
#

Sorry, cactus, bamboo, sugar cane, and glow berries, all of them

soft hound
#

That's wwhat I understood

chrome beacon
chrome beacon
young knoll
#

That only fires when a player is involved

chrome beacon
#

oh does it :c

young knoll
#

If you want to stop all drops

#

ItemSpawnEvent

chrome beacon
#

ah there we go

soft hound
chrome beacon
#

Replace Player with UUID

soft hound
#

ohhh

summer scroll
#

Well, for context I'm developing a Harvester Hoe plugin and I want to handle the drops myself (adding drop multiplier, sell mode). Currently I'm handling it by setting the block to AIR, but that will break AuraSkills functionality where player would earn exp from breaking cactus, sugar cane, bamboo, and glow berries.

chrome beacon
#

BlockDropItemEvent sounds right then

#

Since you always have a player

summer scroll
#

Yeah, I think I know the solution, thanks guys!

chrome beacon
#

or does it count the player when just the bottom block of a cactus is broken šŸ¤”

#

uh guess you'll find out

summer scroll
#

But it might work if I switch the hoe break function into BlockDropItemEvent instead because it's fired after BlockBreakEvent

#

Nope didn't work lmao

#

When that event is called, the block is already disappeared.

jade oasis
chrome beacon
#

or are you talking about the other cactus blocks above the one you broke

chrome beacon
#

do double check

jade oasis
#

How can something change without touching it :/ that’s confusing

chrome beacon
#

You have touched it

#

or something else on the server

jade oasis
#

I have moved plugins around on my test server but the code it’s self I haven’t touched

jade oasis
chrome beacon
#

?paste

undone axleBOT
jade oasis
#

Cheers for that I forgot what that command was

grave depot
#

Does anyone got the proper 1.21 spigot server.jar file?

summer scroll
chrome beacon
grave depot
chrome beacon
#

There is no reason to use that

grave depot
#

Or the version you advise me to use

#

;D

chrome beacon
#

It has been superseded with 1.21.1

#

or if you want to stay up to date use 1.21.4

grave depot
#

I want to use the latest fully supported

#

So i think that is 1.21.3 right now

chrome beacon
#

That would be 1.21.4

young knoll
#

I mean 1.21.4 isn’t considered stable yet

chrome beacon
#

Spigot only maintains the latest version

grave depot
#

Yea but i can't write plugins on 1.21.4 yet, minecraft development kit needs to update haha

chrome beacon
#

but yeah

jade oasis
chrome beacon
#

You don't need to wait for MCDev plugin

#

Just set the dependency version yourself instead of relying on an intellij plugin to do it

grave depot
#

Ohh i see

chrome beacon
grave depot
#

Anyways, where can i find the proper server.jar file? ;d

jade oasis
chrome beacon
#

Just as NedSuspected and we wanted you to double check

fading drift
#

i think you have to build it yourself

chrome beacon
#

and for some reason removed that part of the code

jade oasis
#

i havent touched this code thats the thing

#

i can put that on my families life lmao

chrome beacon
#

Aight on my way šŸ”«

#

||\j||

undone axleBOT
grave depot
jade oasis
grave depot
#

got it working thanks

chrome beacon
#

It's usually done in onEnable