#help-development

1 messages · Page 421 of 1

tardy delta
rough drift
#

Count: 0

#

it got GC'd

tardy delta
#

yah

rough drift
#

some of it's lambdas are still active though

tardy delta
#

no need to clear this then

rough drift
#

Should still ig

tardy delta
#

there are 1091 hashmaps loaded so one more or less 🤡

rough drift
#

Depends on what they hold

tardy delta
#

most of them are 0-10 elements lol

rough drift
#

how heavy are said elements

tardy delta
#

dunno what that is lol

rough drift
#

A hashmap has nodes

green falcon
#

Caused by: java.lang.ClassNotFoundException: net.minecraft.network.protocol.game.ClientboundAddEntityPacket

shouldnt this be working in 1.19.4?

rough drift
#

My crystal ball says that it should

mighty pier
#

what is doing this called?

    private final Plugin instance;

    public Listener(Plugin instance) {
        this.instance = instance;
    }
young knoll
#

Isn’t that the mojmap name

echo basalt
mighty pier
#

thank

green falcon
#

we cant use the mojang name?

lost matrix
rough drift
young knoll
#

It should be remapped

green falcon
#

i dont know 😓

#

where do you find the remappings?

rough drift
#

?nms

dry yacht
# green falcon we cant use the mojang name?

Mojang mappings are nice to use while developing, but for compatibility, spigot can not migrate old packets to new remapped names. Thus, you have to map back when packaging the jar, there's a maven plugin for that, IIRC.

tardy delta
#

is there any point in giving a hashmap a initial capacity and a loadfactor in the constructor? im planning to hold 1000 objects in there and id rather not resize it every time

#

its on server startup so probably doesnt really matter

rough drift
#

if you know an estimate of how many items it will hold then you can give it an initial size

green falcon
#

how would it look without the remapping?

rough drift
#

it does increase speed a bit

rough drift
tardy delta
#

is that initial capacity the number of buckets or what?

rough drift
tardy delta
rough drift
#

it's the initial capacity of each bucket

#

yeah

green falcon
# rough drift wdym?

in 1.19.4 the packet changed from 1.19.3 PlayOut to 1.19.4 Clientbound right? Assuming I wanted to get the packet directly using the ClientboundXXXPacket name how do I find the original class name before remapping?

rough drift
#

you still see the moj mappings

tardy delta
#

initial capactiry of each bucket? buckets are linked list so whats the point of a capacity?

dry yacht
mighty pier
#

do i have to create a variable in the main class to dependency inject?

lost matrix
#

You can dependency inject anything everywhere

mighty pier
#

like when i do new Object(Something instance)

mighty pier
#

i meant just do i have to create a variable

lost matrix
#

Every object that has an instance of your plugin can inject it as a dependency in a constructor.
JavaPlugin only has one instance at all times. And this instance is usually received the first time
in your onEnable.

modest garnet
#

Hey i am trying to use NMS in my 1.8.8 plugin ihave ran build tools am i missing a step?

undone axleBOT
modest garnet
modest garnet
lost matrix
#

Something like this

        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.8.8-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
#

probably

modest garnet
#

i have that

lost matrix
#

Whats your artifactId?

tardy delta
#

brr some big ass spider entered my room

quiet ice
#

Again - does LEGACY_MOB_SPAWNER compile?

tardy delta
#

bad decision

modest garnet
quiet ice
#

If so, run mvn dependency:tree

green falcon
#

I'm lost in the sauce why ProtocolLib SPAWN_ENTITY listener isnt working, only that packet. Every other packet works fine

quaint mantle
#

I have a geyser spigot server and idk why but when bedrock try to join this comes up can some pls pls pls help

modest garnet
native gale
quiet ice
#

If I had to guess that "for some reason" is vault

dry yacht
quiet ice
#

They would need to add <optional>true</optional>

dry yacht
#

Oh, I just thought that blocking it from being transitive would be enough

quiet ice
#

Well provided just sets teh classpath

#

optional sets the transitiveness

real shuttle
#

my server keeps crashing

quiet ice
#

Honestly the fact that implementation/compileOnly (in contrast to to api/compileOnlyApi) doesn't exist in maven is the main gripe I have with maven

tardy delta
quiet ice
#

why so many duplicates?

tardy delta
#

dont ask me

quiet ice
#

And half of these magic values don't make any sense

tardy delta
#

seems to get used here

quiet ice
#

Encryption?

tardy delta
#

its in a chunk class so probably not

quiet ice
#

AH, it's bitmasks

tardy delta
#

heightmaps maybe

quiet ice
#

Since they store with uneven amounts of bits

dry yacht
quiet ice
#

or to store them within anvil

tardy delta
dry yacht
#

bitsPerEntry reminds me of chunk palettes, which kind of act as a mean to compress the data by making indices smaller

#

That magic array still scares me tho

young knoll
#

The chunk packet is wack

#

especially if you want to modify it

tardy delta
#

d-dont

dry yacht
#

I did, which is why it seemed familiar, xD. I'd still love to write a proper live chunk editing library.

young knoll
#

I’ve seen projects do it before

#

ViaVersion api helps

dry yacht
#

It's not at all hard or complicated, I just really want it to be clean and simple.

sullen marlin
#

That code is cancer

tardy delta
#

the moment you write ObjectPool.PACKET_POOL.use(buffer -> NetworkBuffer.makeArray(networkBuffer -> sections.forEach(networkBuffer::write)));

sullen marlin
#

I've written plenty of bad code, but at least the numbers are comprehensible

tardy delta
#

someone didnt use ij uwu

young knoll
#

Install sonarlint and then look at spigot

#

:p

tardy delta
#

looking at spigot stash is fun, comments of people that are close to their end

dry yacht
#

Now I want to dig out my chunk packet patcher project again, :-:

tardy delta
#

looks like minestom has builtin support for displaying images on maps

#

dont ask me how sharp they are though

quiet ice
#

They use LWJGL for that iirc

#

Probably as sharp as it can get

tardy delta
#

i only stumbled upon a bufferedimage so i thought so ;-;

dry yacht
tardy delta
#

lemme try out tmrw

young knoll
#

I wish we had yknow

#

Full rgb maps

tardy delta
#

ig this is smth

dry yacht
young knoll
#

Yeah but it would be nice

#

Bedrock does it :(

tardy delta
#

is my wifi going brr again

#

ah discord just decided to not sent my message

dry yacht
#

I didn't feel especially limited by the map color space, but well

tardy delta
#

wtf discord

#

suddenly 10 messages spawn in

young knoll
#

Actually for some reason bedrock maps use 32 bits per pixel

#

Even though you only need 24

echo basalt
#

it already gets gzipped hard enough regardless

#

maybe encode it as jpg instead?

young knoll
#

I mean you don’t need the alpha channel

echo basalt
#

true

#

well, maybe

#

0 stands for transparency

#

which is used for unexplored maps

dry yacht
young knoll
#

You only really need 1 bit for transparency then

#

But I guess working with 25 bits per pixel is kinda awkward

dry yacht
young knoll
#

No idea

#

All I know is that it’s saved with 4 bytes per pixel

echo basalt
#

well

#

more like

#

bit isPresent

if 1 ->
bit isTransparent

if 0 ->
byte r
byte g
byte b

joethinking

#

well

#

isPresent and isTransparent is the same shit

#

I'm idiot

tardy delta
#

dunno what any of those values mean lol

young knoll
#

Or they could just hardcode 255,255,255 as transparent

#

I’m sure we’d live with 1 less color

dry yacht
young knoll
#

Either works

#

Imma grab a flight to Stockholm and code that for em

#

Any other requests?

dry yacht
#

I still think that 4x more data is not viable at all. Even if it would be 25 bits, packed into something else

tardy delta
#

is there a dif between MAP and FILLED_MAP?

young knoll
#

I mean it seems bedrock gets away with it fine

young knoll
dry yacht
young knoll
#

It’s just a normal item and doesn’t render a proper map when held

dry yacht
#

It's that paper-looking thingy

young knoll
#

Mhm

tardy delta
#

lemme put some random stuff

young knoll
#

It sucks for both sides that there are still parity difference between java and bedrock

#

Smh mojancrosoft

tardy delta
#

its a beaty

dry yacht
#

"blue noise"

tardy delta
#

dunno how thats a random color

#

lemme make that color number a lil bigger

dry yacht
#

Are you sure it takes map color IDs? Looks like shades of blue

tardy delta
#

last param is rgb

young knoll
#

Not quite

dry yacht
#

Yeah... r<<16|g<<8|b, probably

young knoll
#

There’s a bunch of hardcoded colors

dry yacht
#

oh

tardy delta
#

still blue with bound 10000 lol

dry yacht
#

Have you checked out the implementation? xD

tardy delta
#

no

#

i just want to draw a cat

dry yacht
dry yacht
tardy delta
#

we got another kind of blue

#

at 100 million its just empty

young knoll
#

There are 61 hardcoded colors

#

And each one has 4 shades

dry yacht
#

Doesn't look like that class takes map color IDs

#

The range is way out of bounds

tardy delta
dry yacht
tardy delta
#

it has awt support lol

dry yacht
#

🤮

#

Only real solution is a full browser engine, and some more downloaded RAM

young knoll
#

Hey remember that big array of numbers

#

How about a big array of colors

tardy delta
#

found those 61 hardcoded colors

dry yacht
#

Kind of funny that spigot hard codes shades

tardy delta
#

wondering why i cant just give it a bufferedimage through the constructor

dry yacht
young knoll
#

¯_(ツ)_/¯

#

Oh no Mojang only has 3 colors left

tardy delta
#

gn id say

dry yacht
tardy delta
#

meh

young knoll
#

I just copied the code to put an image on a map to work directly with a byte array

tardy delta
dry yacht
# young knoll Oh no Mojang only has 3 colors left

I bet they're going to have to expand their array datatype soon, if they keep on adding blocks like that. But not all blocks have a corresponding map color, right? There are more than 61 blocks, I guess...

young knoll
#

Yeah

#

They have groups

#

Some get their very own though for no reason

#

Like block of raw iron or glow lichen

#

Each Terracotta color has their own too

dry yacht
#

Well, there is quite a difference tho. The terracotta blocks make sense, as those make up a lot of the color space already, and as it's based on blocks, you have to start out somewhere.

young knoll
#

Yeah

#

Im just surprised nothing else fits with raw iron

dry yacht
#

TERRACOTTA_WHITE is pretty close. Maybe they just have some maximum internal color distance (by whatever algorithm), which serves as a criteria to create a new group if exceeded.

young knoll
#

It’s somewhat close to white terracotta

dry yacht
#

Yep, haha

young knoll
#

I think terracotta used to use the same colors as wool and concrete and etc

#

But one update they decided to do a ton of new map colors

#

I think it was 1.16

pseudo hazel
#

they could easily add a color every single block so why dont they

dry yacht
#

Bandwidth, :-:

young knoll
#

Again, Bedrock does it

#

:p

dry yacht
#

But, on the other hand... maps weren't intended to display live stuff, so I guess bandwidth would have been negligible.

young knoll
#

I mean if they are worried about bandwidth from vanilla they can just update a map less often

#

And if they are worried about bandwidth from us, well that’s our problem :p

dry yacht
#

I'd love to know how big the overhead would be for full RGBA maps, if you internally constrain your color space and let the PacketCompressor chew away at your packet.

young knoll
#

I mean uncompressed it’s 64kb

#

Idk if that’s a lot bandwidth wise

dry yacht
#

For single maps, yep, but people like to do displays and stuff, ;)

young knoll
#

Yeah

dry yacht
#

But as I've said once already, compression really shaves off a lot. Not to be underestimated.

young knoll
#

Black magic

dry yacht
#

Yeah, that's what zlib should be called.

river oracle
#

how ugly is this on a scale of 1 to 10

addSubcommand(
                ErisCommandBuilder.of(new ErisLabel("test", "spawnermaster.admin"))
                        .nativeExecutor((CommandSender sender, String[] args) -> {
                            if (!(sender instanceof Player player)) {
                                return false;
                            }
                            final SuperiorPlayer splayer = SuperiorSkyblockAPI.getPlayer(player);
                            final Island island = splayer.getIsland();
                            if (island == null) {
                                return false;
                            }

                            cache.get(island.getUniqueId())
                                    .thenAccept((IslandDTO data) -> player.sendMessage("Island data: " + data));

                            return true;
                        })
                        .build().make());
hazy parrot
#

Why build make

dry yacht
#

If you really need that builder, then please just extract the handler into a method and just supply a method reference as an argument to nativeExecutor

river oracle
river oracle
dry yacht
river oracle
#

yeah I'm lazy

hazy parrot
#

Idk what is that lol

river oracle
river oracle
#

I guess if your a hotkey god its kinda optoinal as fuck

hazy parrot
#

Ik, but dk what builder annotation is

#

I assume it generate kind of builder

dry yacht
river oracle
#

^ Exactly that

hazy parrot
#

But I don't understand why it's .build().make()

river oracle
#

I mean I guess you could do build().build()

dry yacht
#

I was an avid lomboker until very recently, when I decided to get rid of it again, xD. Tbh, I appreciate it to write the boilerplate myself, as it should serve as food for thoughts if your boilerplate escalates beyond a certain threshold. May be a design decision that's in your way then.

young knoll
#

I think intelij can generate a builder for you

river oracle
#

I'll use IntelliJ as soon as it becomes something I like to use

#

until then nah

dry yacht
#

What do you use so far?

young knoll
#

I use eclipse

#

If people complain I remind them MD uses netbeans

hazy parrot
#

How does it look if you provide custom impl for getters and setters in lombok

dry yacht
#

IJ pissed me off multiple times recently, I might go back to eclipse too soon, lol

river oracle
hazy parrot
#

For example throw if settled value in setter doesn't meet criteria

eternal oxide
#

I use Eclipse. Free, no features locked behind a paywall and does everything I need

young knoll
dry yacht
#

I just really don't care about 90% of what the IDE does. I want VIM keybindings and some responsiveness. Just don't crash on me periodically, :,)

hazy parrot
#

I've never had any issues with jet brains ides

dry yacht
eternal oxide
#

I had teh odd crash in eclipse 10 years ago, but none since.

river oracle
young knoll
#

I get crashes in eclipse with the material enum

dry yacht
#

Eclipse feels really nostalgic to me, haha :D

young knoll
#

But I think that’s to blame on my decompiler plugin

#

And the material enum being huge

river oracle
#

and the fact it seems like people who use IntelliJ have to invalidate their caches a shit ton, I've used VSCode and have only had to invalidate my language cache once out of my 2 years of use

eternal oxide
#

how does the enum crash for you? when viewing the source?

young knoll
#

When generating completions

dry yacht
eternal oxide
#

thats odd. I've never had an issue with it

young knoll
#

I think the decompiler plugin is randomly trying to decompile it? Idk

#

I’ve never gotten a crash when actually decompiling with it though, works great

eternal oxide
#

possible, I don;t use a de-compiler plugin in my ide

young knoll
#

Gotta be able to CTRL click those NMS and CB classes for instant access

dry yacht
#

gd

kind hatch
#

I've only ever had one issue with IJ trying to open the Material class, but it was only because of me maxing out my ram capacity. Only ever had to restart the IDE to fix any small problems like syntax highlighting not loading or anything.

I really couldn't tell you what people are doing to force them to invalidate caches so often.

young knoll
#

One day that PR to replace it will be complete

#

One day

dry yacht
#

It has been a long time...

eternal oxide
#

welcome home 🙂

dry yacht
#

Tbh, for some reason, Eclipse personally feels more like home than IntelliJ does to me.

pseudo hazel
#

because its old

static ingot
#

Anybody know if ItemStacks deserialized via Bukkit's ConfigurationSerialization API are mutable within the config?

eternal oxide
#

they will not update in teh config unless you put them back

#

the instances are separate

static ingot
#

Okay, cool

dry yacht
#

There's nothing deserialized from the config which you can mutate, not set back, save and actually expect it to have caused changes to the file.

#

That would be... either weird or cool, depends, xD.

static ingot
#

I figured it wouldn't be the case but thought to at least ask

young knoll
pseudo hazel
#

yeah

#

I never said intellij wasnt

#

but I didnt know that

young knoll
#

:p

pseudo hazel
#

I guess they did a better job getting with the times imho

#

but like its whatever you prefer ig

kind hatch
#

To be fair, eclipse does look dated. If they ever updated their UI, it wouldn't feel so old.

eternal oxide
#

I like the older look

#

I run win7 with a legacy theme

young knoll
#

I’ll survive without fancy rounded buttons

#

Or whatever

dry yacht
# static ingot I figured it wouldn't be the case but thought to at least ask

It was just about deserialization tho, not direct access. If you get Lists or maps, which the ConfigurationSection retrieves from cache, and mutate it, I could imagine that the changes reflect in the config. I don't know how the YamlConfiguration operates, as I've wrote my own. But that would not be called deserialization then.

young knoll
#

Iirc the collections are always clones

dry yacht
dry yacht
analog thicket
#

Yo, is there a way for my plugin to register all commands by itself?

#

I read something about it a while ago

#

Can't remember tho.

river oracle
#

wdym register all commands by itself

#

if your thinking about interferring with other plugins commands don't

analog thicket
#

No no

#

Not that.

#

2 sec

river oracle
#

you dont' want to use plugin.yml?

analog thicket
#

Nvm

#

forget what i said

#

im stupid

#

lol

river oracle
#

what were you even talking abt

analog thicket
#

no idea

#

tbh

#

i cant get subclasses to work with commands, how would i do this?

river oracle
analog thicket
#

i think thats where it came from..

keen horizon
#

how do i learn how to make plugins

river oracle
keen horizon
#

no

river oracle
#

?learnjava

undone axleBOT
river oracle
#

start here

#

you need to know java to make plugins

keen horizon
#

ok then what

river oracle
#

look at spigot docs

river oracle
#

you should beable to make a decent plugin within a few months

static ingot
analog thicket
static ingot
#

ACF is pretty handy too

dry yacht
#

I wouldn't want to go back to a stationary computer, a laptop is so comfortable

river oracle
#

I hate laptops the battery life 💀

quaint mantle
modest tartan
#

Has anyone succeeded to transform a display entity yet? I'd love a code example if anyone has one please 😍

river oracle
#

display entity?

modest tartan
#

ye 1.19.4

river oracle
#

I thought that was a 1.20 things

modest tartan
#

nope

#

Thought so too till they released 1.19.4 officially

river oracle
#

time to get to work the nig

late sonnet
quartz gull
river oracle
#

Then read the wiki

quaint mantle
#

I just realized. Chests don't have openable in vanilla

river oracle
#

point is if I tell him where to get the info immediatly just going to ignore the learning java part

#

and try to go straight into spigot which is a huge mistake

quartz gull
wet breach
quartz gull
#

misread reply mb 4 ping

remote swallow
#

this is fun

river oracle
#

I bet it is

remote swallow
#

does an nms version thing exist, like what versions would be handled in 1_19_R1 for example

river oracle
#

I think everyone kinda does their own thing

remote swallow
#

frick

#

alex has like 1.16 plus

#

so ill just use that

river oracle
#

I wish spigot had more standardized libs. Honestly I am going to start using some libs already made by people

#

I feel like there is no reason I should keep making my own shit with all the great libs out there

remote swallow
#

but rewriting the wheel

#

is it called immutable or mutable for stuff i can pass, modify and not need to return

river oracle
vernal oasis
#

I'm trying to make a plugin for 1.16.5 and I keep getting a "unsupported class file major version of 63." error

copper sierra
vernal oasis
#

What jdk/jre etc. version should I be using?

copper sierra
#

No, like why limit what obfuscators we can use

vernal oasis
#

No, those are just the ones you don't need to get permission to use

#

"Permission is not required to use the following obfuscators on any plugin."

#

ie. you don't need to contact the dev for permission to use it

#

some you might

copper sierra
river oracle
#

@remote swallow do you know any good inventory libraries

copper sierra
#

Why would you need permission to use an obfuscator

#

lmao

copper sierra
river oracle
#

because obfuscation is fucking stupid

#

you aren't protecting much of anything

#

your just challenging those who feel like cracking it

#

you won't be protected against leaks

copper sierra
#

Who wants their resource to be cracked

#

Not me :kekw:

river oracle
#

so don't bother obfuscating

#

cuz it'll happen either way

#

granted that requires your resource be good

#

otherwise no one would bother cracking your obfuscation

#

Open Source and Keep your code public

#

most people who won't buy it on spigot will just compile, don't offer support to those who don't buy it, Everyone involved wins

river oracle
slate mortar
river oracle
#

what about the people who download it from a cracked site get a virus then leave a bad review because they got malware

#

etc etc

#

or they wont get support

#

you can't avoid stupidity, but you can help people avoid malware

slate mortar
#

there's no dealing with it, these reviews will not be moderated. also, how are you supposed to tell if someone who wants support bought the game

remote swallow
#

be like alex and add somthing-something.html

river oracle
#

for premium plugins

slate mortar
#

possible idk

river oracle
#

so spigot review point would be pretty invalid

slate mortar
#

i guess

river oracle
#

all you'd be doing is saving people who wouldnt buy it anyways from getting malware which is a huge win. Even if you spite that person for not buying your plugin

vernal oasis
#

Any idea how to fix?

#

I've tried downgrading to java 16

slate mortar
#

still, how would you tell if someone bough the plugin if they ask for support.

river oracle
#

the way Alex does it

slate mortar
#

uh

river oracle
#

many other authors do it the same way

remote swallow
#

alex uses paypal api i think

river oracle
remote swallow
#

his is auto but true

slate mortar
#

good luck doing that when your plugin is fairly big

#

wont that literally take 99% of your free time?

river oracle
#

not really

#

I mean I'm assuming all bigger plugins will have helpers etc, also will automate shit where they can

#

nothing I said was impossible and an obfuscator won't fix any of the issues that you bring up

#

cracked versions will still be tampered with and distributed

slate mortar
#

ofc they will

#

my old plugin (non premium) had a very old buggy version on aternos, and they refused to at least update it.

which lead to many many people coming to me asking for support for their ages old version

#

essentially same for premium resources, people will ask for support with leaked old ass versions

river oracle
#

I mean all of this is true, but I still fail to see how an obfuscator fixes this, which is what you were originally arguing no?

slate mortar
#

and nothing really to do about it, except automating 50 millions of things, or adding many many mods/helpers, which isnt really something many people want

river oracle
#

then I fail to see the point other than having a popular plugin can kinda just suck with moderating and verification

slate mortar
#

that was kind of the whole point lol

#

i still dont get why people go through the pain of paid plugins.

river oracle
#

I don't think I'll ever release a resource on Spigot

#

even though I avidly do commissions lol

slate mortar
#

i will eventually release some plugins, but i'll probably never ever release a paid one

#

if someone wants to support me, they can donate, and arent forced to do.

river oracle
#

which is why I quit my one job doing Customer Service at a market

slate mortar
#

i will most likely do it as i always did.
i make my own stuff, and just refer people to my discord server for support. if someone runs it on aternos, i will probably straight up refuse support

river oracle
#

even doing commissions always has me at my wits end

slate mortar
#

because honestly i dont wanna deal with that old versions

#

i personally could not do commissions

#

my head would go through so much rush and other pain

river oracle
#

hasn't been too bad for me so far

slate mortar
#

i dont like having deadlines for development.
there are days where i work on something for 5 hours, there are days where i work on it for 2,there are days where i dont work on it at all
i don't like having to do something fairly quick

river oracle
#

I get really obsessive for a week and pump out an unholy amount of code

#

and then just can't code for 2 weeks

vernal oasis
#

I'm getting an "unsupported class file major version 63" error?

#

(1.16.5)

river oracle
#

Wrong java version

static ingot
#

compile against java 16 for 1.16

vernal oasis
#

I'm using java 16

river oracle
#

you sure

slate mortar
#

are you using intellij?

river oracle
#

check java --version

remote swallow
#

1.16 is java 8

vernal oasis
#
{
    "java.configuration.updateBuildConfiguration": "interactive",
    "java.jdt.ls.java.home": "C:\\Program Files\\Java\\jdk-16",
    "java.configuration.runtimes": [
        {
            "name": "JavaSE-16",
            "path": "C:\\Program Files\\Java\\jdk-16",
            "default": true
        }
    ]
}
#

vscode

slate mortar
#

what hell of a file is that

river oracle
#

vscode

slate mortar
#

oh my

#

eww

river oracle
#

shut

#

I use VSCode too

vernal oasis
#

finally someone who is cultured

river oracle
slate mortar
#

well

river oracle
#

pop open your terminal

#

java --version

#

make sure its java 16

#

otherwise you'll need to switch your env vars

slate mortar
#

you are worse than all these eclipse users 💀

vernal oasis
#

w8 do I have to change my java version too?

#

bruhh

slate mortar
#

ofc

river oracle
#

yeah

remote swallow
#

1.16 should be java 8, 1.17 should be java 16 and 1.18 or higher should be java 17

slate mortar
#

iirc 1.16 does only work on 11

river oracle
#

😭 this is so confusing

slate mortar
#

yup it is

vernal oasis
#

w8 so what java version should I be using for 1.16.5

static ingot
#

16

slate mortar
#

i guess 11

#

huh

vernal oasis
#

16 11 8 what is it lol

river oracle
#

🤷🏽‍♂️ who tf knows

slate mortar
#

didnt they bump java16 on 1.17?

#

iirc 1.16 should still run on 11

remote swallow
static ingot
#

I think 1.16 is 16 and 1.17 is 17

remote swallow
#

its 1 off

static ingot
#

uff

#

mb then

remote swallow
#

mojang managed to break it by 1 version

river oracle
#

Lord save us all

slate mortar
#

internet says to use java 11

vernal oasis
#

16 worked 💀

#

bruh tf is development

river oracle
#

I say

#

roll with it

#

and don't question it

quaint mantle
#

hi.

#

i have a problem.

#

the BlockFromToEvent event handler seems to be running in unloaded or before the chunk loads.

#

and it seems to be causing issues.

sullen marlin
#

can you elaborate further?

#

do you have a test plugin that shows this? If so, open a bug report

quaint mantle
#

so

#
@EventHandler(priority = EventPriority.HIGHEST)
    public void onChunkLoadEvent (ChunkLoadEvent event) {
        Chunk chunk = event.getChunk();
        Bukkit.getScheduler().runTaskAsynchronously(ChunkClaimsPlugin.getThisPlugin(), () -> {
            new ChunkData(chunk);
        });
    }```
#

that loads the chunk and it creates a ChunkData object.

#

here is the constructor for the ChunkData object.

#
public class ChunkData {
    private static HashMap<Chunk, ChunkData> chunkDataStore = new HashMap<Chunk, ChunkData>();
    
    public ChunkData (Chunk chunk) {
        chunkDataStore.put(chunk, this);
    }
}```
#

its a more simplified version but that is pretty much what happens.

storm stump
#

Your hashmap holds a reference to it even when it's unloaded

quaint mantle
#

there is a whole bunch more than happens sql queries running to fetch data from the database, but that is the first line code that runs pretty much.

quaint mantle
#

i know that i implemented that arleady.

storm stump
#

Ok good

quaint mantle
#
public class BlockFromToEventHandler implements Listener {

    @EventHandler
    public void onBlockFromToEvent (BlockFromToEvent event) {
        Material material = event.getBlock().getType();

        boolean ifMaterialValid = material == Material.WATER || material == Material.LAVA;

        if (!ifMaterialValid) {
            return;
        }

        Chunk chunk = event.getToBlock().getChunk();
        ChunkData chunkData = ChunkData.getChunkData(chunk);

        if (!(chunkData.getBoolean(ChunkData.WATER_FLOW) || chunkData.getOwnerUUID() == null)) {
            event.setCancelled(true);
        }
    }
}```
#

here is the code for the event handler.

#

it says chunk Data is null.

#

java.lang.NullPointerException: Cannot invoke "me.pulsesapphire.chunkclaimsplugin.ChunkClaims.Data.ChunkData.ChunkData.getBoolean(int)" because "chunkData" is null

#

here is the line.

#

from the stacktrace.

#

is it a bug?

#

Ищу разработчика-java

storm stump
#

Probably assume your code has a bug before spigot

quaint mantle
#

Оплата ₽

remote swallow
#

english only

#

?services

undone axleBOT
quaint mantle
#

Неа

#

so, any ideas?

#

it was also happening with other event handlers too earlier, one with a creaturespawn event handler that i am not using anymore.

#

the event handler seems to be running even before the chunkload event handler runs probably.

#

@sullen marlinbtw, are you like the official maintainer of spigot or bukkit?

#

i feel like i have seen that name elsewhere probably.

#

?paste

undone axleBOT
quaint mantle
#

oh yeah, there it is.

quaint mantle
#

ok.

sullen marlin
#

you're making your chunk data async

#

it is entirely possible the event triggers before your async chunk data task has run

quaint mantle
#

i kind of need to because it fetches data from the database and i dont wanna like completely kill mspt by running it on main thread.

#

okay.

storm stump
#

How do I use ControllerLook?

#

The last 2 float parameters make 0 sense to me

sullen marlin
#

most plugins would keep all regions or whatever you have in memory

quaint mantle
#

btw, md_5.

#

can you add anvil gui support?

river oracle
#

Make a pr

quaint mantle
#

official anvil GUI support?

#

and other GUIs like sign GUIs?

river oracle
#

Spigot is always open for pr

quaint mantle
#

i have been using a third-party library for anvil GUIs and it is kind of annoying.

river oracle
#

While md is the maintainer you can make prs and they will be seen and looked over

#

?contributer

quaint mantle
#

pr?

river oracle
#

?contributing

#

?cla

undone axleBOT
river oracle
#

Fuck it

sullen marlin
#

?contribute

river oracle
#

Yeah there it is

quaint mantle
#

md_5, is there any way for anvil GUIs to work?

#

with the Bukkit API.

river oracle
#

You might beable to figure it out

#

Just mess around and contribute

sullen marlin
#

I mean there's a create inventory method, an anvil event and a getRenameText method, so probably?

river oracle
#

Though some gui are super janky virtually

quaint mantle
#

how do i get the AnvilInventory object?

#

here is the code i was trying yesterday.

river oracle
#

Casting probably from createainventory

#

I'd assume that'd work unless anvil inventory is specific to the block

icy beacon
sullen marlin
#

a corpse is just an npc isn't it?

icy beacon
#

yeah with some tweaks ig

sullen marlin
#

so presumably any npc library

icy beacon
#

hm i'll look into that

#

ty

quaint mantle
#

AnvilInventory anvilInventory = (AnvilInventory) Bukkit.createInventory(null, InventoryType.ANVIL, "test");
this code did not work.

#

does the AnvilInventory class actually work?

river oracle
#

Might on the block

#

Check what create inventory does with the anvil type internally

quaint mantle
#

i am not really that experienced with java to know how to do all that.

river oracle
#

?stash

undone axleBOT
river oracle
#

If you don't know java well you really should learn it's pretty vital to understanding a lot of spigot

quaint mantle
#

well, i kind of use bukkit to not have to deal with that minecraft source code from mojang.

#

i mean i know how the game mechanics work, but i am not really too sure about the minecraft source code itself.

river oracle
#

You don't need to be

#

I mean java the coding language

#

We just call it minecraft here because bedrock isn't supported

quaint mantle
#

i tried to do some modding with the minecraft fabric mod loader and it looked so difficult.

river oracle
#

It's harder than plugins

quaint mantle
#

its so difficult.

river oracle
#

Requires java knowledge 100%

#

With spigot you can get away with being a newbie

#

For better or for worse

storm stump
#

Not with nms 😛

quaint mantle
#

not just java knowledge, but like bytecode and stuff too and how the bytecode compiler and interpreter work probably.

storm stump
#

How do I use ControllerLook 😭

quaint mantle
#

and not to mention mojang just changing stuff around.

#

ok, anyway, i will be doing something else for now probably so bye.

river oracle
#

IMHO it's semi self explanatory

#

They provide you plenty with tooling to mixin

loud haven
#

hi i want help 🙂
soo How to get how much exp a mob would drop?

wet breach
vernal oasis
#

Is there a way to have console run a command and send the results to the player?

wet breach
#

why have the console run commands?

#

why run commands to begin with, with a plugin o.O

gilded bloom
#

Bump

vernal oasis
#

because pixelmon permissions are stupid

quaint mantle
#

i have this particle:

PacketPlayOutWorldParticles packet = new PacketPlayOutWorldParticles(
                        EnumParticle.a(1), true, (float) loc.getX(), (float) loc.getY(), (float) loc.getZ(),
                        0.05f, 0.05f, 0.05f, 5, 1
                );

any idea why its a random size and not just big? any idea how to fix it aswell

livid dove
#

Bit of a hail Mary but has anyone ever worked with the data long arrays in chunk sections?

I'm at my wits end with it 😅

sullen marlin
#

Why are you using packets for particles

quaint mantle
wet breach
#

I am guessing there is an essay to this

livid dove
# wet breach what do you need to know?

I have a script that:

Turns the long array into binary

Re adds the 0s to the front as stinky java doesn't believe the zeroes that should be there deserve live lmao

Removes excess 0's on the end (if applicable) to get it to a length divisible by bits per block (decided by the highest ID in the palette. E.g a palette of 26 blocks would be 5 bits per block) and scans em.

Works great for 4 bit, but moment we hit 5 bit we are getting values up to 31 (which gives a major warning sign as 31 is 11111, which implies we are getting the scan outa phase by 1-4 bits.

But that doesn't quite make sense as any other start would lead to longs not divisible by 5

livid dove
#

I even sanity checked in matlab as they are, u know, clever and don't pretend the 0s on the front don't exist.

Same issue

wet breach
#

why turn the long into binary?

livid dove
#

Because the IDS are defined via binary bytes of 4-8 bits?

wet breach
#

also if you have to re-add 0's the way you are turning it into binary must not be correct because Java doesn't strip 0's arbitrarily

livid dove
wet breach
#

0000000001 is still the same as 1

#

so removing, the excess zeros to the left doesn't change its value

#

however if the 0's are on the right and it removes it, it will

pure dagger
#

how to do world generation? any tutorial not from 8 years ago?

livid dove
#

Yes but the way the block ids work is it scans every X bits and that X bits is block.

So 00001 should be a 1. But if java removes the 0s , it can't scan 5 bits as there aren't 5 bits to scan

wet breach
#

but there is

#

just because its not there doesn't mean you can't pad

rare token
#

Hi its my first time trying to create a plugin for 1.19.3 I've added spigot to the build path but when I add extends JavaPlugin and press CTRL + Space to add the import it puts it in but I get the error: The type org.bukkit.plugin.java.JavaPlugin is not accessible

livid dove
wet breach
#
byte Nibble4(byte[] arr, int index){
    return index%2 == 0 ? arr[index/2]&0x0F : (arr[index/2]>>4)&0x0F;
}
int BlockPos = y*16*16 + z*16 + x; 
compound Block = Palette[change_array_element_size(BlockStates,Log2(length(Palette)))[BlockPos]];
string BlockName = Block.Name; 
compound BlockState = Block.Properties; 
byte Blocklight = Nibble4(BlockLight, BlockPos); 
byte Skylight = Nibble4(SkyLight, BlockPos);
livid dove
#

But yet in matlab it doesn't make the 0s go poof. And it has the exact same error

wet breach
#

chunk sections are 16x16x16

livid dove
#

Correct

wet breach
#

and there is 16 sections

#

the code above should be enough to get on the right track to get the palettes

livid dove
#

You would think...

#

😅

#

But then we have the funny curveball

#

If the bits per block exceeds the length of the long... it moves that block completely to the next long down

wet breach
#

it won't exceed the length of the long

livid dove
#

Yes

wet breach
#

if you do, you did something wrong

livid dove
#

Correct

wet breach
#

a long is really huge

livid dove
#

I.e. 64

wet breach
#

don't see how you would exceed the number of bits unless you are just adding to it arbitrarily. The game doesn't even come close to exceeding the long unless you had infinitely generation of chunk coords

livid dove
wet breach
#

nothing that will exceed 64bits

livid dove
#

On its own

#

They store multiple blocks per long

wet breach
#

I don't know off the top of my head, but still comes no where close to not fitting in 64bits

livid dove
#

5

#

It's a long array of 64 bits

#

And it's 5 bits per block

wet breach
#

it doesn't take 64bits to describe 16

livid dove
#

After 12 blocks...

wet breach
#

it takes a single byte

livid dove
#

12*5

wet breach
#

a byte can go up to 256

livid dove
#

Give me a few mins

wet breach
#

or maybe its a short don't remember

#

either way, 16 would never take up 64bits

#

so if you wanted to hold the entire bits of a chunk in a single long

livid dove
#

Sayu hello to the long values

wet breach
#

it does go above 32bits but still comes no where close to 64bits

livid dove
#

When converted to binary

#

60 bits

#

as it can only fit

#

5 bits

#

per block

wet breach
#

not even close

livid dove
# wet breach not even close

Yeah... and there are 5 bits per block... and it has more than 1 block per line (in this case, 12 blocks per line)

wet breach
#

you can fit the entirety of a chunk bit wise at 5 bits and still not come close to using anywhere close to 64bits

livid dove
wet breach
#

I will give you an example. IPV6 uses a long or 64bits. IPV6 gives you enough IP addresses to give everyone in the world 10 ip addresses to each individual and still not come close or have used a significant fraction of the amount of space 64bits gives you

livid dove
#

Sorry when i say "bits" im talking about the space we have on the screen rigth now. 64 individual didgets

wet breach
#

64bits is really large and the only reason a long is used here for the blocks is because the amount of space needed is slightly above 32bits but not large enough to need something like big decimal so long is sufficient

livid dove
wet breach
#

its a long array

#

meaning not a single long

quaint mantle
#

how do i check if an item is an armor piece?

wet breach
#

binary wise 64bits is huge

#

even more so when we factor in bitmasking

livid dove
livid dove
wet breach
#

00001 is still 1 and still wouldn't take 64bits to describe it even if you could use a long to show a 1

livid dove
wet breach
#

no

#

you only need padding if something is expecting a certain size

livid dove
#

So say for example, if minecraft expects it to be 64 bits...

#

0_0

wet breach
#

so, lets say you have 1, but the method is expecting 5bits and not just 1

#

you would need to provide 4 more bits

#

but that is only because the method is expecting the 5bit size

livid dove
#

*minecraft always assumes 64 bits so that way if a section just has 1 block type in the palete, you can put in a tiny number but have 64 bits worth of data crammed in

wet breach
#

anyways not sure where you get the idea that a chunk is larger then a long can hold

#

as you gave the example above, 5 means 16, which is 10000 in binary. If you notice, from the 1 to the right is convieniently 5 bits

#

you can still use the 4 other bits to the right

#

just because the very left bit is set, doesn't mean the ones on the right are as well

#

if the very left bit is set, we already know it means 16 regardless if the right are set or not

#

because the only way to have it set would be to have reached 16

#

but this is where we get in the realms of bitmasking

#

and this is where you might be getting confused

tawny remnant
#

How do I add a second argument args[1] that is a playerName?

wet breach
#

second argument to where?

wet breach
#

the arguments are anything after a command

#

and the argument index starts at 0

#

0 being 1 argument and so forth

tawny remnant
#

ik

wet breach
#

if you wanted an argument to mean player name, you would just grab that argument and check if its a player name

tawny remnant
#

but i am asking how do i check if arg 1 is a player name

#

oh im sorry

wet breach
#

Bukkit.getOfflinePlayer(playerName)

#

I recommend using offline player because we have to assume that they can be offline

#

and with offline player you can check if they are online and if so just cast offlineplayer to a player object instead

#

if you need a player object

#

otherwise you can still do quite a bit of whatever it is you need with just an OfflinePlayer object

#

by learning the file NIO packages in Java and how to load and save files in general, the fact it is a json file is nothing special other then you probably want to extract json objects from the data after loading the file in which case you will need to use something like simpleJson or Gson to do such things

icy beacon
#

chatsonic gave up on completing my request, twice 😭

tardy delta
#

why dont you put those 2 objects in a json array?

icy beacon
#

i could, actually

tardy delta
#

id just do it manually

icy beacon
tardy delta
#

ye

icy beacon
#

yeah it now looks much cleaner and looks like it works, thanks a bunch i'll go test it now

pure dagger
#

how to do world generation? where can i find any new tutorial ?

hoary wing
patent socket
#

Bump

remote swallow
#

you dont have a param on your constructor

#
public DialogueCommand() {
  this.plugin = plugin;
}
``` should be 

```java
public DialogueCommand(Dialogue plugin) {
  this.plugin = plugin;
}
#

then where you register it add this in the parenthesis

grizzled oasis
#

Hi, im having an issues where the plugin doesn't combine 2 potion effect like if i have speed I with 2 seconds and 5 seconds of Speed I, its just remain 2 seconds and not 7 seconds, there's a fix?

flint coyote
#

Well you have to get the current potion effects and their remaining duration and add your duration onto it in that case

rare token
#

how do I go about adding spigot now? Adding external jars doesent seem to work for me

remote swallow
#

?bootstrap

undone axleBOT
#

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

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

remote swallow
#

gradle or maven is easier imo

quiet ice
rare token
quiet ice
#

What kind of classes do you want to use?

#

I.e. do you want to use net.minecraft.server classes or just the plain old org.bukkit classes?

halcyon hemlock
#

how to rotate schematic?

#
    public static void pasteSchematic(String schematicPath, String schematicName, Location l, int yawRotation) {
        File file = new File(schematicPath + File.separator + schematicName + ".schem");
        ClipboardFormat format = ClipboardFormats.findByFile(file);
        try (ClipboardReader reader = format.getReader(new FileInputStream(file))) {
            clipboard = reader.read();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }

        ClipboardHolder holder = new ClipboardHolder(clipboard);
        holder.setTransform(new AffineTransform().rotateY(Math.toRadians(yawRotation)));
        clipboard = holder.getClipboard();

        EditSession editSession = WorldEdit.getInstance().newEditSessionBuilder()
                .world(BukkitAdapter.adapt(l.getWorld()))
                .build();
        try (editSession) {

            Operation operation = new ClipboardHolder(clipboard).createPaste(editSession)
                    .to(BlockVector3.at(l.getX(), l.getY(), l.getZ()))
                    .ignoreAirBlocks(true)
                    .build();

            latestEdits.add(editSession);

            try { 
                Operations.complete(operation);
            } catch (WorldEditException e) {
                System.out.println(ChatColor.RED + "OOPS! Something went wrong, please contact an administrator");
                e.printStackTrace();
            }
        }
    }
#

this doesnt work

tender shard
#

?notworking

undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

halcyon hemlock
#

the clipboard is pasted but the rotation isnt

tender shard
#

what's yawRotation?

rare token
halcyon hemlock
#

right now im testing with 90 degrees

tender shard
#

yeah but which value is it?

#

just use "90" directly instead of using Math.toRadians

halcyon hemlock
#

FAWEUtils.pasteSchematic(directoryPath, schematicName, roomLoc, -90);

rare token
tender shard
#

why don't you just use maven? it's so much easier

rare token
quiet ice
#

Well doing it the JDT way is much easier for the first plugin

quiet ice
#

It's not like the plugin is going to be super relevant in two months time

#

After that sure, maven is better

rare token
# quiet ice Yep.

I'll try that but usually I get the error org.bukkit is not accessible

quiet ice
#

Oh no. I think I know why this happens

halcyon hemlock
#

what am I doing wrong

quiet ice
#

Why do you guys not know how to properly shade jars?????

tender shard
quiet ice
#

@rare token Make sure to have it on the CLASS path - not the module path

pale ridge
#

I've never programmed a plugin and I'm new too. I've been trying for many hours to get the code that chatgpt programmed for the plugin to run on my server but it doesn't work. can someone help me?

quiet ice
pale ridge
#

i have a text file and there is the code but how do i get it to a .jar file?

remote swallow
#

anyone know if its possible to put comments in a yaml config pre 1.18

pale ridge
#

please help me guys

quiet ice
#

Please don't tell you don't use an IDE

#

||Regardless, this is the perfect proof why I am certain that AI will not kill our jobs.||

halcyon hemlock
#

i use a word document bcs i can colorcode my code which is very cool

quiet ice
#

In your projects where you shade things in

rare token
halcyon hemlock
#

what is better than this

#

best ide possibly

tender shard
quiet ice
tender shard
#

I don't see any .jar with a module-info.class

halcyon hemlock
#

oh and I use light mode

tall dragon
halcyon hemlock
tender shard
halcyon hemlock
#

gotta make sure its similar to intellij

#

let me change the font to something fancy

quiet ice
# tender shard

Recaf automatically moves classes from META-INF/versions/* to the root directory

tender shard
quiet ice
#

And also kills empty files. So that is the wrong place to look for

halcyon hemlock
#

inner peace

quiet ice
#

Good for you. It seems you actually do know how to do that

remote swallow
#

damn whats that text editor

halcyon hemlock
tender shard
#

to be fair I never saw anyone shading module-info.class

remote swallow
#

this one

quiet ice
#

Though the amounts of libraries that use Jigsaw/JPMS is limited

tender shard
#

however I've seen people shade worldedit, or spigot-api, like every day

remote swallow
halcyon hemlock
quiet ice
halcyon hemlock
#

i use cooler intellij

remote swallow
#

jokes? never heard of them

quiet ice
#

They refuse to fix that

halcyon hemlock
#

i am mentally insane

pale ridge
quiet ice
#

Only comment I got is "how is this a problem" (more or less)

tall dragon
pale ridge
#

how

quiet ice
#

javac?

pale ridge
#

idk how

quiet ice
#

me neither. It has been ages since i used command-line javac

halcyon hemlock
tender shard
#

this is the third time I sent that link in the last 10 minutes lol

#

also it's my own blog, so not very hard to find the link lol

halcyon hemlock
#

i bought chatgpt plus and im not even using gpt4 💀

#

WAIT COULD YOU SHOW IT A PHOTO OF A GENERATED DUNGEON AND ASK IT TO REPLICATE IT? AYO

#

my brain workss

prisma shoal
#

Hey, my goal with this plugin was to restrict the use of an item with a specific lore if a player is in a vehicle, however it gives me a NullPointerException in the commented line, but I don't understand why?

 
  @Override
    public void onEnable() {
        // Plugin startup logic
        Bukkit.getPluginManager().registerEvents(this, this);
    }


    @EventHandler
    public void onItemSwap(PlayerItemHeldEvent e) {
        Player p = e.getPlayer();
        e.getPlayer().sendMessage("Test");
        if(p.getInventory().getItemInMainHand() != null) {
        ItemStack stack1 = e.getPlayer().getInventory().getItemInMainHand();
        if (stack1.getItemMeta().hasLore()) { // NullPointerException because org.bukkit.inventory.ItemStack.getItemMeta() returns null
            if (stack1.getItemMeta().lore().contains("a heavy longbow")) 
                if (p.isInsideVehicle()) {
                    e.setCancelled(true);
                }
            }
        }
            }
        } ```
tender shard
#

getItemMeta() is null

#

because the item doesn't have ItemMeta (because it's air), or because the "stack1" itemstack is already null

quiet ice
#

@pale ridge

cp SetSpawn.txt SpawnPlugin.java && rm spigot-api-1.19.4-R0.1-20230319.075423-16-shaded.jar && wget https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/spigotmc/spigot-api/1.19.4-R0.1-SNAPSHOT/spigot-api-1.19.4-R0.1-20230319.075423-16-shaded.jar && javac -proc:none --class-path spigot-api-1.19.4-R0.1-20230319.075423-16-shaded.jar SpawnPlugin.java && zip SpawnPlugin.jar SpawnPlugin.class plugin.yml
prisma shoal
#

oh that makes sense

halcyon hemlock
prisma shoal
tender shard
#

and check if stack1 is null, too

halcyon hemlock
prisma shoal
#

Alright, thank you

icy beacon
tender shard
#

wdym with "it's empty"?

remote swallow
#

any plugins?

icy beacon
#

take a look at the comment in the main class

#

i expect it to be parsed according to what i have in my JSON file

#

but it's just two empty animal classes

oblique falcon
#

how can i make money with making spigot plugins?

icy beacon
#

since there are two objects though, the file is probably read properly, because there are indeed 2 animals in my json file

remote swallow
undone axleBOT
icy beacon
#

in the meantime learn plugin development

#

when you're advanced, create a premium plugin that you geniunely put time and effort into

#

and after you've got stuff on your portfolio, you'll probably be able to get more commissions than if you didn't

oblique falcon
#

how many sales i can make with 1 plugin approximately

remote swallow
#

cant say

icy beacon
#

depends on how unique it is and how well you "advertise" it i guess

young knoll
#

And the price

remote swallow
#

and you need like 3-5 i dont remember how many before you can even list it on spigot

icy beacon
#

yeah

young knoll
#

And how many people actually want it

icy beacon
#

you need 3 free ones

#

a 2 week old account and 20 messages i think

remote swallow
#

?premium

undone axleBOT
icy beacon
#

oh an 8 week old acc

#

damn

remote swallow
#

80 messages

icy beacon
#

yeah

remote swallow
#

social interaction, yuck

icy beacon
#

xD

tender shard
young knoll
#

I still need more messages

#

I think

remote swallow
#

go solve peoples issues on forums

#

you need 28 more

tender shard
#

how can people not have enough messages lol. I got over 3000 and I'm not even very active on the forums

icy beacon
#

it just builds over time haha

#

one shalt not be a post farmer

remote swallow
#

josh you have 3 suggestions in discussion

young knoll
#

How do I even have 52 messages

remote swallow
#

josh add all the recipe options that are on vanilla tweaks

young knoll
#

If only I had a library for config recipes

remote swallow
#

wait

#

you do

remote swallow
tardy delta
#

i use minestom 💀 and i made my own recipe code

remote swallow
#

do you have any plugins

young knoll
#

Rip epic

remote swallow
#

does the class work and do what you need

tender shard
#

then use a better decompiler. which one do yuo use?

#

your decompiler probably doesn't support records

#

as I said, use a better decompiler

tardy delta
#

records :)

#

when you realize they do not support inheritance :(

tardy delta
#

ClientboundAddEntityPacket is a class

#

not a record

tender shard
#

why do you keep saying it's not your decmpiler's issue? your decompiler does not support records. period

tardy delta
#

wait this also a class, alex what version u on?

tender shard
#

why do you even ask here if you don't listen to what anyone says

tender shard
#

FernFlower decompiles records just fine, use that

tardy delta
#

cant read that

icy beacon
#

org.spigotmc:sp1got:remapped-mojang:1.19.4-R0.1-SNAPSHOT

remote swallow
tender shard
remote swallow
#

1.19.4

tardy delta
#

probably cuz i didnt decompile but build it

remote swallow
icy beacon
#

it turned :spigоt: into an emote 😭

remote swallow
tender shard
young knoll
#

I can’t tell if Alex’s recipe lib supports multiple choices for one ingredient

young knoll
#

Yeah, with more than one material

tender shard
#

for the last time before I'll block you: because ClientboundSetEntityDataPacket is a record, while the other stuff are normal classes

#

and your decompiler cannot handle records

#

use FernFlower

icy beacon
#

try to call a method that must be there with reflection, if it works then it's definitely your dec

remote swallow
#

whats the package for it

tender shard
#

then use a newer version

#

use latest FernFlower and run it using java 17, then it'll work fine

icy beacon
#

is your ide up to date

tender shard
#

do you see a pattern here?

icy beacon
#

oh fuck

tender shard
#

ok have a nice day

eternal oxide
#

Are you even listening to anyone?

tall dragon
#

because he is right

icy beacon
#

try to call a method that must be there with reflection, if it works then it's definitely your dec

tender shard
#

the pattern is that when everyone tells you it's your deocmpiler, it's probably your decompiler being the issue

#

I'll stop answering now, this is a waste of my time

icy beacon
#

alex could you answer me instead pwease? :3

young knoll
#

I mean if there was nothing in it the server wouldn’t ever be sending entities to you

#

And last I checked the server does do that

eternal oxide
#

Do you understand what a Record class is?