#help-development

1 messages · Page 2258 of 1

paper viper
#

Look it up

late linden
#

allows you to get access to stuff that mojang doesn't let you

rain igloo
#

anyone?

paper viper
#

Not just Mojang but many internal things

late linden
#

there's already a lot of resources about it and utillities that can do the hard lifting for you

paper viper
#

This is for Spigot/Java development

sterile token
paper viper
#

Nah I literally can’t read the code samples

#

I have to like swipe the screen 20 times

sterile token
#

Oh sad

paper viper
#

It’s impossible to read

sterile token
#

Yes i can undertand

#

Its really ugly reading from cellhpone

#

Dont worry man

#

Thanks tho

steel swan
#

Anyone knows how to place a structure ?

#

Like from a schematic or smth

somber hull
#

Looks like this wasn’t answered

#

Persistent data container

#

Look it up

dusk flicker
#

?pdc

somber hull
#

I should learn all the bot commands

dusk flicker
#

yheah

#

If you go in #bot-commands do ?cc list and you could view them all

somber hull
#

Aaa

#

Thank you

lost wolf
somber hull
#

O

#

U gotta use nms

#

But it breaks per version

paper viper
steel swan
#

U recommend usin' an api or the plugin and just sending commands ?

paper viper
#

I mean API

#

Of course

steel swan
#

Okey thx my guy

glossy scroll
#

the conversion event has a byte value of 16

#

OR

#

@lost wolf you could make the entity silent

lost wolf
glossy scroll
#

you should be good enough to do soemthing like

setSilent
setConversionTime
setSilent```
#

if that's too much for you, you could try doing the packet thing

#

you may need to delay the second setSilent by a tick or so, unsure

lost wolf
#

Alright, I'll give it a try, thanks 👍

crisp steeple
#

any way to get intellij not stuck on analyzing

sterile token
#

How do i updateOne a mongo pojo class?

#

Not a document one

carmine nacelle
#

Alright im confused why I cant import WorldServer, its just not showing as an option. This code was working previously in 1.17

    public void addBeeToHive(CustomHive customHive) {
        CustomBee customBee = new CustomBee(customHive.getHiveLocation(), ChatColor.YELLOW + "" + ChatColor.BOLD + "Bee");
        customHive.addBeeName(customBee.Z().getString());
        WorldServer craftWorld = ((CraftWorld)customHive.getHiveLocation().getWorld()).getHandle();
        craftWorld.b((Entity)customBee);
        Bee bee = (Bee)customBee.getBukkitEntity();
        bee.setHive(customHive.getHiveLocation());
        customHive.getBeeUUIDs().add(customBee.cm());
        customHive.setCurrentBees(customHive.getCurrentBees() + 1);
    }
#

any idea?

glossy scroll
#

are you using maven?

carmine nacelle
#

yes

glossy scroll
#

what does the dependency look like?

carmine nacelle
#
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.19-R0.1-SNAPSHOT</version>
            <classifier>remapped-mojang</classifier>
            <scope>provided</scope>
        </dependency>
glossy scroll
#

so you're using the mojang mappings

#

that means WorldServer is now Level

carmine nacelle
#

hmmmm...

#

it would be nice if i didnt have to use nms at all for this

#

but i dont think its possible.

glossy scroll
#

what is it youre trying to do?

carmine nacelle
#

setting a bee's "home" hive

glossy scroll
#

hmm... sounds like an interesting PR idea

carmine nacelle
#

pr?

glossy scroll
#

pull request for spigot

carmine nacelle
#

oh

delicate lynx
carmine nacelle
#

uhhhhh

#

hows that work lol

glossy scroll
#

is the hive you're setting a beehive?

#

or a random block

carmine nacelle
#

a beehive

glossy scroll
#

ok

carmine nacelle
#

well

#

#setHive is a location

#

/**
* Set the bee's hive location.
*
* @param location or null
*/
void setHive(@smoky tinsel Location location);

#

so the location of the hive

glossy scroll
#

right... so what's different about what you need to do ?

carmine nacelle
#

I forget why I was even using mojang mappings when i originally made this

#

maybe i can do without, who knows

#

all i know is

glossy scroll
#

mojang mappings are better

carmine nacelle
#

I dont have a clue what bee.c is.

glossy scroll
#

because using the obfuscated mappings can cause a lot of problems

carmine nacelle
#

alrighty then switching back

carmine nacelle
#

woah

glossy scroll
#

wait... do you even know what mojang mappings are?

carmine nacelle
glossy scroll
#

spigot mappings are the obfuscated mappings. e.i. EntityBee, WorldServer, etc

delicate lynx
#

that's the nice thing about that site

carmine nacelle
#

not rlly

glossy scroll
#

mojang mappings are not obfuscated; Bee, Level, etc

carmine nacelle
#

havent used them much all ik is theres a weird disclaimer about using mojang mappings..

glossy scroll
#

the mojang mappings you need to be careful becasue you need to add a build step in your pom

carmine nacelle
#
 <plugin>
                <groupId>net.md-5</groupId>
                <artifactId>specialsource-maven-plugin</artifactId>
                <version>1.2.2</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>remap</goal>
                        </goals>
                        <id>remap-obf</id>
                        <configuration>
                            <srgIn>org.spigotmc:minecraft-server:1.18.2-R0.1-SNAPSHOT:txt:maps-mojang</srgIn>
                            <reverse>true</reverse>
                            <remappedDependencies>org.spigotmc:spigot:1.18.2-R0.1-SNAPSHOT:jar:remapped-mojang
                            </remappedDependencies>
                            <remappedArtifactAttached>true</remappedArtifactAttached>
                            <remappedClassifierName>remapped-obf</remappedClassifierName>
                        </configuration>
                    </execution>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>remap</goal>
                        </goals>
                        <id>remap-spigot</id>
                        <configuration>
                            <inputFile>
                                ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar
                            </inputFile>
                            <srgIn>org.spigotmc:minecraft-server:1.18.2-R0.1-SNAPSHOT:csrg:maps-spigot</srgIn>
                            <remappedDependencies>org.spigotmc:spigot:1.18.2-R0.1-SNAPSHOT:jar:remapped-obf
                            </remappedDependencies>
                        </configuration>
                    </execution>
                </executions>
#

this?

glossy scroll
#

yes

carmine nacelle
#

also just noticed that also needs to be updated to 1.19

glossy scroll
#

also

#

yea

#

just about to say

carmine nacelle
#

So

#

instead of EntityBee now its just bee

glossy scroll
#

ya

carmine nacelle
#

remapped one or entity bee

#

probably remapped right

glossy scroll
#

we call it "nms" because the package name

carmine nacelle
#
    public CustomBee(Location location, String beeName) {
        super(EntityTypes.g, (World) ((CraftWorld) location.getWorld()).getHandle());
        this.e(location.getX(), location.getY() + 1.0, location.getZ());
        this.a((IChatBaseComponent) new ChatComponentText(ChatColor.translateAlternateColorCodes('&', beeName)));
        this.n(true);
        this.c(20.0f);
        this.b_(-32768);
    }

is there a an easy way to de-aids this

glossy scroll
#

net.minecraft.server

carmine nacelle
#

alright

#

ive avoided nms like the plague the yrs ive been doing this

glossy scroll
#

probably with the website

#

i actually found out about this the same time as you

#

previously i used MiniMapper or whatever, but it broke

carmine nacelle
#

this site is a bit confusing to me

glossy scroll
#

im working on a project where i need 100% full control of the entities, so i also am opting for nms

carmine nacelle
#

oooh..

#

i see

#

the mojang one is called canuse

glossy scroll
#

otherwise i woould need a ton of hashmaps/wrappers

#

id rather just stick with some painful updating here and there

carmine nacelle
#

id also like to do custom pathfinding at some point.

glossy scroll
#

make sure you're on the right version from when that nms was used too

#

PathfinderGoals are tricky but fun

#

also, be careful when using reflection

#

any strings/names need to be spigot mappings

#

so like getDeclaredField("")

carmine nacelle
#

idk how to use reflection, also something ive avoided like the plague

paper viper
#

Lol I use Unsafe to set fields XD

glossy scroll
#

yea definitely avoid at all costs

carmine nacelle
#

so uh

#

do you have the updated pom plugin for 1.19?

#

cant find it

glossy scroll
#

oh just change 1.18.2 to 1.19

#

should be fine

#

the specialsource plugin is mostly unrelated to minecraft

#

you just need to adjust its parameters

carmine nacelle
#

alright cool

#

the main thing now is

#

what is EntityTypes.g lol (assuming bee)

#

like i said its been a bit since i wrote this

glossy scroll
#

so now the class name is EntityType (mojang)

carmine nacelle
#

Do we still gotta use the getHandle stuff?

glossy scroll
#

thats actually 1.19

#

yes, getHandle is part of craftbukkit, it is necessary

carmine nacelle
#

gotcha

#

super(EntityType.BEE, ((CraftWorld) location.getWorld()).getHandle());

glossy scroll
#

that's fine

#

so here, the EntityType serves as what model the entity is

#

what dimensions it has

#

etc

#

the world, well, serves as the world it's in

#

and remember you need to use level#addFreshEntity for nms entities

carmine nacelle
#

this.e is the spawn location buttttt

glossy scroll
#

and entity#moveTo

carmine nacelle
#

ahh

#

this.moveTo(location.getX(), location.getY() + 1.0, location.getZ());

#

so that should be fine then

glossy scroll
#

absMoveTo, my bad

#

yea

carmine nacelle
#

well

#

gotta spawn it first though

#

cause im currently doing CustomBee customBee = new CustomBee(customHive.getHiveLocation(), ChatColor.YELLOW + "" + ChatColor.BOLD + "Bee");

glossy scroll
#

actually you should use level.addFreshEntity at the end of modifying it

#

yes, so you have that

carmine nacelle
#

Keep the absMoveTo?

glossy scroll
#
MyEntity entity = new MyEntity(...);
entity.absMoveTo(loc.getX(), loc.getY(), loc.getZ());
level.addFreshEntity(entity);```
#

like that

carmine nacelle
#

hmmm

#

I assume I still need the super though right

glossy scroll
#

yes, that is a requirement of extending classes

carmine nacelle
#

ok gotcha, move it in the main class not the object class

glossy scroll
#

typically, you should opt to spawn the entity outside the constructor in a controller class/method

#

yes

carmine nacelle
#

gotcha

#

sweet, next is setting its name

#

Which is an IChatBaseComponent but its not resolving IChatBaseComponent to anything

glossy scroll
#

right so here's something you should know

carmine nacelle
#

@glossy scroll can we dm

glossy scroll
#

make a thread

carmine nacelle
#

bee movie

clear fable
#

For Player#hidePlayer(), does the hiding persist when the hidden player disconnects? For instance if I hide player a from player b, then player a relogs or the server restarts, will player b then be able to see player a?

brave sparrow
#

It does not persist

clear fable
#

ok good

#

thanks

ornate patio
#

How do I call a method of an indirect superclass

#

for example I have a custom Horse that is trying to call Animal's aiStep method

#

without calling AbstractHorse's method

quaint mantle
#

I wonder if you could do Animal.aiStep(this)

#

try that

ornate patio
#

static reference

quaint mantle
#

Damn

#

No

#

try it

ornate patio
#

((Animal) this).aiStep(); I've tried this but it led to infinite recursion

quaint mantle
#

Doesnt work

quaint mantle
quaint mantle
#

I thought java had receiver methods

#

but doesnt support this

quaint mantle
ornate patio
#

damn

#

alright

#

ive been using tons of reflection everywhere already

paper viper
#

Copy the code kekw

quaint mantle
#

Thats disappointing that java doesnt allow that

#

Every other language does

#

Java is so last decade 😒

ornate patio
#

i hate java

quaint mantle
#

i love rust

ornate patio
#

i might learn it some day

quaint mantle
#

Ill teach you

ornate patio
#

pythons my main language tho

quaint mantle
#

Leave

#

🚪

ornate patio
#

why

#

what do you have against it

quaint mantle
#

Bro's main language is the slowest mainstream language to exist

ornate patio
#

it gets the job done idc

hasty prawn
#

It gets small jobs done

#

Anything of remotely substantial size and Python no good

quaint mantle
#

Python is just for learning

ornate patio
#

mm

#

i've already built large applications with python

quaint mantle
#

Whenever i see people learning how to program I recommend them Java

ornate patio
#

and im proud

quaint mantle
#

💀

quaint mantle
#

Doing 1,000 loops in Python is devastating

#

"The best way to iterate in Python, is to not iterate in Python"

hasty prawn
#

I don't prefer Python but if you like using it then go for it

#

Doesn't change my life any

#

🤷‍♂️

quaint mantle
#

@steep cove

#

We need to cook

ornate patio
#

also

ornate patio
#

whats going on

#

with my stack trace

#

i got the most stupid error

#

hold up

#

what have i done

#
moveTailMethod = AbstractHorse.class.getDeclaredMethod("fy");
moveTailMethod.setAccessible(true);

eatingCounterField = AbstractHorse.class.getDeclaredField("cw");
eatingCounterField.setAccessible(true);

animalAiStepMethod = Animal.class.getDeclaredMethod("w_");
hasty prawn
#

What is SuperiorHorseEntity line 139

ornate patio
#

thats my custom horse

hasty prawn
#

Send that entire method and send which line is 139

ornate patio
#

animalAiStepMethod.invoke(this);

paper viper
#

There must have been some exception in that method

#

The animalAiStepMethod

#

You set it accessible right?

ornate patio
#

i'm trying to basically do a super call to Animal but completely skip AbstractHorse's method

ornate patio
#

but it's public anyways

worldly ingot
#

Just a minor thing, !this.level.isClientSide is always going to be true. Minecraft shares a lot of code server & client side, but you're obviously only writing on the server, so this value is never going to be true

ornate patio
#

well i just copy pasted the code in AbstractHorse

#

i just need to delete one part of it

worldly ingot
#

Yeah I'd figured lol

ornate patio
#

i deleted that part too

#

i dont understand what is this

sterile token
#

Hi im bck after some hours of reading i cannot figure how to save a pojo object into mongo db

#

Could someone help me?

ornate patio
#

also can mobs pathfind if its nearby chunks arent loaded?

fleet comet
#

Can I use reflection to access other plug-ins, if so how?

river oracle
#

Why would you

#

Unless you want to steal their main instance cuz that is kinda funny

fleet comet
#

Cause there's no config

river oracle
#

What plugin? If it's not configurable dev probably has shit code no reason to not just redo it

fleet comet
river oracle
#

So why wouldn't you just fix the bug

fleet comet
river oracle
#

Decompile

#

Copy paste

#

I can think of a billion better ways to solve this than reflection

fleet comet
river oracle
#

Also get and use github so this doesn't happen in the future

ornate patio
#

is it possible to keep chunks loaded around a mob and not just a player?

fleet comet
#

I know how invoke methods on a class, but not on an external jar

river oracle
# fleet comet I am

If you wanna learn reflection find a decent use for it or make a test project to fuck with that isn't spigot

fleet comet
#

One more thing, if I'm loading a jar inside an addons folder using reflection how could I let that jar run spigot stuff I'd that's possible

river oracle
#

Maven with provided dependency

#

If you aren't using maven or gradle you might as well cut both of your arms off and call it a day

fleet comet
#

Can you shade a jar into a pre-built jar?

#

I want to do this during runtime

river oracle
#

You want to use a jar as a dependency?

fleet comet
#

No like, I want to load a jar from my plug-in, then have that jar execute code on the server

river oracle
#

Like an add-ons system?

fleet comet
#

Yeah

river oracle
#

Reflection iirc you can grab jar files

#

I'm not spoonfeedjng you use your brain and the great wide web

fleet comet
river oracle
#

Huh?

#

Grab the stuff back on the server,?

#

If you set it up correctly should be easy as hell to do whatever the fick you want given yoh know how to use interfaces

fleet comet
#

Okay so let's say the plug in invokes a method on an external jar, then I want that method to access the server and run code on it as a plug in that's not there

river oracle
#

You can't run code on something that doesn't exist

fleet comet
#

Ik

river oracle
#

Just like you can't jump off a tower that doesn't exist or ride a train that doesn't exist

fleet comet
#

Can I like have the method access the main plug in and run code from the method on there

river oracle
#

Huh I guess you could in a round about way. But as I said earlier don't use reflection to fix your shitty code

#

Just fix it

#

You should learn reflection when you actually need it not to abuse your horrible design

fleet comet
#

Yeah that's diff. Um I'm making a new plug in that runs addons

river oracle
#

Your asking the same thing in a round about way as for me to help you

#

Addons are easy reflection

#

Little research can yield yoh a proper result

fleet comet
#

I did research. I didn't find anything

fleet comet
river oracle
#

So basically just basic reflection to fix your shitty code instead of fixing the project gotcha one second I'll speedrun finding you how to reflection tutorials

river oracle
#

3 sources on basic reflection

#

First result on Google for get class in external jar

fleet comet
#

I'm making a mini game api in a way, and I want addons to add mini games but I don't know how to inject code into a plug in that's on another jar and run it

river oracle
#

Who deletes my stack overflow post I'm sure there's. A decent reason dm please

river oracle
#

Someone deletes my link to stack overflow curious why is all

#

Aigbt I'll just post it again I guess

fleet comet
#

Okay

quaint mantle
#

Nobody is deleting your links

fleet comet
quaint mantle
#

Either it contained the word "black" followed by "spigot" or "get" followed by "bukkit"

river oracle
#

What

#

There was a delay I'm confused

#

Black?

quaint mantle
#

Nono spigot

#

Bad spigot

river oracle
#

Oh

#

Ok nah it didn't which is why I was confused maybe I'm going insane

quaint mantle
fleet comet
#

Get

river oracle
fleet comet
#

Is in the link

river oracle
#

This might be what yoh want

fleet comet
#

Is java code injection a thing?

river oracle
#

Idk how tf to do that in Java I'm sure you could though just seems like a round about way to achieve something

#

Especially add-ons

#

Injections are definitely a shitty way to do add-ons

#

I've gotta go as reccomended just fix your code ;)

spice remnant
#

what i need to use if RecipeChoice.ExactChoice is deprecated?

#
ItemStack invisibilityPotion = getConfig().getItemStack("recipe");
ShapedRecipe invisRecipe = new ShapedRecipe(invisibleRecipe, invisibleItem);
invisRecipe.setIngredient('P', new RecipeChoice.ExactChoice(invisibilityPotion));
carmine nacelle
#
[23:38:11] [Netty Server IO #0/ERROR]: Error receiving packet 77
java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Byte (java.lang.Integer and java.lang.Byte are in module java.base of loader 'bootstrap')
        at net.minecraft.network.syncher.DataWatcherSerializer$1.a(SourceFile:30) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-S

getting this error its not specifying where but..

for (int curHoloLine = 0; curHoloLine < hologram.getHoloLines().size(); ++curHoloLine) {
            PacketContainer packet = this.protocolManager.createPacket(PacketType.Play.Server.ENTITY_METADATA);
            Optional<?> opt = Optional.of(WrappedChatComponent.fromChatMessage(hologram.getHoloLines().get(curHoloLine))[0].getHandle());
            WrappedDataWatcher metadata = new WrappedDataWatcher();
            metadata.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class)), 32);
            metadata.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(2, WrappedDataWatcher.Registry.getChatComponentSerializer(true)), opt);
            metadata.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(3, WrappedDataWatcher.Registry.get(Boolean.class)), true);
            metadata.setObject(new WrappedDataWatcher.WrappedDataWatcherObject(15, WrappedDataWatcher.Registry.get(Byte.class)), 25);
            packet.getWatchableCollectionModifier().write(0, metadata.getWatchableObjects());
            packet.getIntegers().write(0, hologram.getHoloIDs().get(curHoloLine));
            try {
                this.protocolManager.sendServerPacket(player, packet);
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            }
        }
#

only places im using bytes

fleet comet
ornate patio
dim palm
#

hello, im making a guns plugin, but i don't find the way to set the projectile speed

#

they don't give errors just not change the speed

dim palm
fleet comet
#

learn google (:

dim palm
#

doesn't work

#

lol

fleet comet
#

whats ur code first of all

#

second of all im not spoonfeeding u

small current
dim palm
#

yep

fleet comet
dim palm
#

wait

fleet comet
lost matrix
dim palm
#

bruh

lost matrix
dim palm
#

i forgot register the event and the eventhandler

#

wtf

lost matrix
lost matrix
# dim palm

Why are you checking twice for Player instances?

lost matrix
lost matrix
# dim palm

You should not use the name or lore of an ItemStack to determine if its a custom item.
Always use the PDC for that.

#

?pdc

dim palm
#

thanks

ornate patio
lost matrix
ornate patio
#

yeah i know, but like how would I achieve what I'm trying to do then

lost matrix
#

🤷 Dont have the will to read this right now

quaint mantle
#

Demonstration

#

^^^

ornate patio
#

is it possible to let entities pathfind outside of player render distance

dim palm
#

how can i cancel the projectile slowdown with PlayerInteractEvent?

#

(googled and found nothing)

echo magnet
#

Whats the max entity id?

lost matrix
dim palm
lost matrix
#

Just set the velocity of the projectile. Projectiles dont slow down. They keep their velocity (they might get faster from gravity)

hybrid spoke
#

oh didnt work

quaint mantle
#

?ban

undone axleBOT
#
CafeBabe Help Menu
Syntax: ?ban <user> [days] [reason]
Ban a user from this server and optionally delete days of messages.

days is the amount of days of messages to cleanup on ban.

Examples:

  • ?ban 428675506947227648 7 Continued to spam after told to stop.
    This will ban the user with ID 428675506947227648 and it will delete 7 days worth of messages.
  • ?ban @Twentysix 7 Continued to spam after told to stop.
    This will ban Twentysix and it will delete 7 days worth of messages.

A user ID should be provided if the user is not a member of this server.
If days is not a number, it's treated as the first word of the reason.
Minimum 0 days, maximum 7. If not specified, the defaultdays setting will be used instead.

hybrid spoke
#

oh missed it again damn

quaint mantle
#

@lost matrix is it unethical as a programmer to name things as literal, but as complex-sounding as possible?

#

Like this enum im making in rust

#

I could call it "ValueKind"

#

instead i went with pub enum DataAcquisitionMethod {

lost matrix
#

Calling an enum DataAquisitionMethod would be deceiving. Its not a method and it doesnt acquire anything...
But that being said: You should strive to be as precise as possible. Even when it means that you need to add
more complex words.

quaint mantle
#

No but it is a data acquisition method

#
pub enum DataAcquisitionMethod {
    Local(Box<[u8]>),
    Query(usize)
}
#

actually

#

Jeez dude i suck at naming shit

lost matrix
#

This looks more like a Data(...)Type to me.

quaint mantle
#

DataPointerKind

lost matrix
#

eh...

quaint mantle
#

Yeah see i suck at naming

quaint mantle
#

Go for it

sterile token
#

?learnjava

undone axleBOT
sterile token
#

Its for a friend

#

Dont worry

quaint mantle
#

ReadOperation

lost matrix
quaint mantle
#

Too good to be true

lost matrix
quaint mantle
#

Type is bad in rust names

#

type is a keyword

#

ReadOperationKind

lost matrix
quaint mantle
#

yeah i would just go with ReadOperation

#

which is what i will do unless you convince me otherwise

lost matrix
#

Nah sounds good

earnest forum
#

UnidentifiedEnumeratorType

#

best name

quaint mantle
#
pub const LATEST_COMPILE_FEATURE_VERSION_HEADER_LENGTH: u32 = 5;
lost matrix
quaint mantle
#

No it was a joke

lost matrix
#

Was it?

quaint mantle
#

Currently

#

its this now

/// The header length of the current compile feature version.
/// See [super::CCFV].
pub const CCFV_HEADER_LEN: u32 = 5;
lost matrix
#

I wouldnt have noticed because this seems like a reasonable name. Just a bit obfuscating because you wouldnt know what this variable stands for.

#

sarcasm off

quaint mantle
#

See like here

#
Instruction::Goto
#

I wanna name this

#

Nvm i got a better name

lost matrix
#

Is this for your vm?

quaint mantle
#

yes

lost matrix
quaint mantle
#

free

lost matrix
quaint mantle
#

@eternal oxide is there garbage collection in assembly

#

7smile7 feel free to answer

lost matrix
quaint mantle
#

Ok then there will be none

lost matrix
#

Wait. You are writing a vm without a gc

quaint mantle
#

you'll see

#

its like a mock of a computer

lost matrix
#

Ok so you are just writing an instruction set. Not an actual vm.

quaint mantle
#

Sure

buoyant viper
#

just implement the intel x86 arch ezpz

lost matrix
#

Sounds like a cool project

tender shard
#

does anyone know the InventoryHolder representing a chested boat?

#

Can't test it myself on this shitty laptop

#

and haven't found anything in the docs

quaint mantle
quaint mantle
tender shard
#

it's like a normal diamond, but rarer

humble tulip
#

Raerer

quaint mantle
stone heath
#

How does one get a players rank with the LuckPerms api?

earnest forum
stone heath
#

Perfect thank you, I was looking for this

ornate patio
#

I tried chunk.load() but apparently it only works for some events

#

there’s a difference between forceloaded chunks and ticking chunks, how do make make a chunk a ticking chunk in spigot?

eternal oxide
#

if a chunk has a plugin ticket on it it should be ticking

buoyant viper
#

wtf is an old-style for

#

also dont show kacper that, he'll yell at u for using Mac

eternal oxide
#

Just because it shows you an alternative way to do it, doesn't mean its better

buoyant viper
#

im still interested in whatever old-style means/looks like

eternal oxide
#

for loop using a value index

buoyant viper
#

hm looks like its just the old index++

#

yeah

quaint mantle
#

How to fill 4 slots?

public void fill() {
        List<ItemStack> itemStacks = new ArrayList<>();
        items.add(new ItemStack(Material.STONE));
        items.add(new ItemStack(Material.STONE));
        items.add(new ItemStack(Material.STONE));
        items.add(new ItemStack(Material.STONE));

        fillBetweenPoints(2, 2, 5, 8, itemStacks);

}

public void fillBetweenPoints(int rowFrom, int colFrom, int rowTo, int colTo, List<ItemStack> itemStacks) {
        int minRow = Math.min(rowFrom, rowTo);
        int maxRow = Math.max(rowFrom, rowTo);
        int minCol = Math.min(colFrom, colTo);
        int maxCol = Math.max(colFrom, colTo);

        int rows = gui.getRows();

        for (int row = 1; row <= rows; row++) {
            for (int col = 1; col <= 9; col++) {
                int slot = (col + (row - 1) * 9) - 1;
                if (!((row >= minRow && row <= maxRow) && (col >= minCol && col <= maxCol)))
                    continue;

                inv.setItem(slot, itemStacks.get(slot));
            }
        }
    }
hybrid spoke
quaint mantle
quaint mantle
#

If there are 5 in the sheet, then 5 items should be inserted

hybrid spoke
#

like a pagesystem?

quaint mantle
#

Yes

hybrid spoke
#

and what doesnt work?

quaint mantle
hybrid spoke
#

?paste the stacktrace

undone axleBOT
quaint mantle
eternal oxide
#

You never check how many items are in your itemStacks So you keep trying to pull items which don;t exist.

eternal oxide
#

Then don't?

quaint mantle
#

I'm trying to pull a slot

#

But it's a slot to put in the inventory and it starts at 10

eternal oxide
#

you keep counting up slots for the whole page, no matter how many items you have

quaint mantle
#
public void fillBetweenPoints(int rowFrom, int colFrom, int rowTo, int colTo, List<ItemStack> itemStacks) {
        int minRow = Math.min(rowFrom, rowTo);
        int maxRow = Math.max(rowFrom, rowTo);
        int minCol = Math.min(colFrom, colTo);
        int maxCol = Math.max(colFrom, colTo);

        int rows = gui.getRows();

        for (int row = 1; row <= rows; row++) {
            for (int col = 1; col <= 9; col++) {
                int slot = (col + (row - 1) * 9) - 1;
                if (!((row >= minRow && row <= maxRow) && (col >= minCol && col <= maxCol)))
                    continue;

                System.out.println(slot);
            }
        }
    }
eternal oxide
#

yes, but you only have FOUR items

#

and they are not stored in the List starting at index 10 inv.setItem(slot, itemStacks.get(slot));

quaint mantle
#

Yes

#

How can I make objects be inserted?

eternal oxide
#

I give up

#

itemStacks.get(slot - 10) but that will still explode when there are no items

#

and when it runs out of items

quaint mantle
#

I want the objects to be inserted like this

eternal oxide
#

I'm not writing it for you

#

You need to loop over the itemStacks not the slots.

#
int count = 0;
for (ItemStack item: itemStacks) {
    int slot = calculate slot;
    inv.setItem(slot, item);
    count++;
}```
#

you fill in the "calculate slot"

quaint mantle
#

It fills all the slots

eternal oxide
#

Theres no way you completed that Math

quaint mantle
#

Yes

twilit roost
#

BungeeCord
I have TabExecutor
but I dont want players to "tab" and send the text it suggests
any ideas how to do it?

quaint mantle
#

I want to make objects inserted from a sheet

#

If there are 4 items in the sheet, only 4 will be inserted

jovial summit
#

how would i go about converting a arraylist of itemstacks to a base64 encoded string?

eternal oxide
#
int slot = 9 + 1 + (count % 7) + ((count / 7) * 9);```Something close to this
#

Thats not going to do exactly what you want but its as close as I'm willing write it for you

#

you work out where its missing a +1

short jewel
quaint mantle
#

I need to start with 1 index in the sheet

eternal oxide
#

I've given you all the code you need. Its literally missing a single +1 and a pair of braces ()

quaint mantle
#

I don't get it

short jewel
jovial summit
jovial summit
#

@short jewel gonna be completely honest and say that i have no idea where i should start. all i have is this: ```java
public class Backpack {

public Backpack(ItemStack... stacks) {
}

}

tardy delta
#

Make a field lol

lost matrix
jovial summit
lost matrix
jovial summit
#

yes, but how would i actually make that?

tall dragon
#

code

lost matrix
#

What part exactly?

jovial summit
#

saving to the database?

lost matrix
#

Thats the very last thing you should worry about

jovial summit
#

or more what data to save

lost matrix
# jovial summit or more what data to save

Just program against an interface like that

public interface BackpackDataLoader {
  
  List<Backpack> loadBackpacks(UUID playerId);

  void saveBackpacks(UUID playerId, List<Backpack> packpacks);
  
}

And worry about the implementation later.

hardy swan
#

Any good reason for an immutable final field to be private?

lost matrix
hardy swan
#

immutable, as in primitives and String

lost matrix
hardy swan
lost matrix
#

This makes the code more modular.
Imagine if you decided that the field needed to be modified after all.
Then instead of adding all the methods you simply have to change the final modifier.

short jewel
jovial summit
short jewel
lost matrix
#

The interface can be implemented with Files, an sql database, mongodb or whatever floats your plane.

short jewel
#

what 7smile7 says is correct but it is assuming you have some knowledge of abstraction. so the better question is do you know what an interface is?

jovial summit
#

ok look

#

thats how i store it in the database, i was hoping that i could store some kind of encrypted string with all the data i need in it to keep the database as small and clean as possible

short jewel
#

you can

#

using the classes I sent earlier you can make something that serializes an array/collection of itemstacks

jovial summit
#

yes but i dont know how to use them

short jewel
#

if you want I can write a short example for you

hardy swan
#

google it out

short jewel
#

but I am not a big fan of spoonfeeding so I would recommend you to write it yourself

jovial summit
#

yes please cause i little to no knowledge when i comes to using outputstreams

lost matrix
short jewel
#

yhea

lost matrix
#

Well... then he just has to call the methods...

short jewel
#

he does not have the method

jovial summit
short jewel
#

its not like spigot has the serializes build in right or does it now adays?

lost matrix
#

Oh dang. I wish there was a way to copy text. I guess he has to reinvent the wheel now 😕

humble tulip
#

Bruh

lost matrix
humble tulip
#

Just google convert inventory to base64

dire marsh
#

mongodb is heaven

jovial summit
#

seriously

humble tulip
#

Yes

#

It's a pretty common way to save invs

jovial summit
#

yes but like

lost matrix
short jewel
#
public static void itemStacksToBase64(ArrayList<ItemStack> itemStacks){
    try {
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        BukkitObjectOutputStream dataOut = new BukkitObjectOutputStream(outStream);

        dataOut.writeInt(itemStacks.size());

        for (int i = 0; i < itemStacks.size(); i++) {
            dataOut.writeObject(itemStacks.get(i));
        }

        dataOut.close();

        return Base64Coder.encodeLines(outStream.toByteArray())
    } catch (Exception e) {
        e.printStackTrace();
    }
}
jovial summit
#

i dont want to save the entire inventory

lost matrix
#

They are a bit ugly and i would rewrite them but they work.

humble tulip
#

Well save what items u want

short jewel
#

not sure if it works as I wrote it in notepad no IDE at work 😦

jovial summit
humble tulip
#

It saves an ItemStack list or array

#

Not inventory

short jewel
#

its an example

#

he should use it and write his own not copy and paste cause then you dont learn a thing

left swift
#

Which Java version should I use for 1.19 plugins? I mean does this version already use java 18 or still 17?

short jewel
#

17

#

18 isnt LTS

left swift
#

ok, thx

lost matrix
twilit roost
#

yee
I just want to display the text above but not complete it into the command

lost matrix
#

Not possible. Text completion works like that:
You sent the player a list of Strings and then forget about it.

You have no control over what the client does with those Strings.

twilit roost
#

i think some plugins does that

lost matrix
twilit roost
#

CMI

dense crow
#

heyho guys, have a question: i wanna do a sound what repeats every 5 minutes on a specific coordinate, but how do i do that the best way? i thought putting a schedulesyncrepeatingtask but where do i put it?

eternal oxide
#

Even then I believe that event fires before teh complete, so no good

dense crow
#

t

lost matrix
quartz basalt
#

i have
fb.setVelocity(targetLocation.getLocation().toVector().subtract(baseLocation.getLocation().toVector()).normalize());
targetlocation is the location the blocks should be going to and baselocation is the location the blocks spawn at, both the locations are taken from the position of these armorstands in this picture
https://imgur.com/a/462PQjL
the bottom one is the base top is target, the green arrow is what the falling blocks are doing and the red arrow is where they should be going, x and z works fine but the y axis doesnt go any higher then in the pic

dense crow
lost matrix
lost matrix
quartz basalt
#

yeah

lost matrix
#

Well... then i think this is clear. Gravity simply pulls them back down.

quartz basalt
#

yeah ik but i need a way to stop that and im not sure what the best thing to do is

quartz basalt
#

when i do that the blocks just go flying way above where the armorstand is

eternal oxide
#

no gravity means constant velocity

#

either stop the block when it gets where it needs to be, or fight gravity

lost matrix
quartz basalt
#

its kind of hard to explain what it does ill get a pic 1 sec

#

it also still doesnt have enough power if the armor stand is higher then a certain point i didnt know if there was some kind of equation or smthn?

lost matrix
quartz basalt
#

yeah

#

just so it reaches the 2nd armorstand then falls back down

radiant umbra
#

Hello guys, i have a question: im trying to make a minecart constantly move the to the facing direction of the player, if the player is in it. I tried doing it with velocity but i failed lol, any ideas?

lost matrix
# quartz basalt just so it reaches the 2nd armorstand then falls back down

Pretty simple. Just calculate the delta between the block and the armorstand and apply an initial velocity based on the distance.
Gravity is applied like in real life but only in discrete time intervals. So no differential equation needed.
Just find out the gravity constant for falling blocks and sue 8th grade physics/math.

quartz basalt
radiant umbra
lost matrix
quartz basalt
#

oh

#

sorry i dont 100% understand how would i find the grabity constant and wouldnt i then need a runnable constantly adding velocity?

lost matrix
eternal oxide
eternal oxide
#

However

#

setting Yaw requires getting the Location of the Minecart, which will be a clone, so setting the Yaw will do nothing

#

you would have to teleport the Minecart to teh adjusted Location, or use steer packets

lost matrix
#

You simply have to find out the gravity constant g in minecraft and then do some math.

#

I can help you find out the constant if you want.

quartz basalt
#

yeah please if you could

quartz basalt
#

id also need a mass though right?

lost matrix
#

And for games this is too expensive. So your acceleration is just 16 m/s^2 (for falling blocks)

quartz basalt
#

ah

simple silo
#

In Minecraft 1.13+ the command line was reworked including colors, is it possible to use the feature?

lost matrix
simple silo
#

I mean colors like here for the selector and the coordinates

lost matrix
#

I dont know any command framework that supports those features so im assuming you would have to use Brigadier.

chrome beacon
#

^

simple silo
#

Alright, thanks

buoyant viper
#

would Luckos lib support it?

chrome beacon
#

Yeah

#

Commodore uses Brigadier iirc

quartz basalt
buoyant viper
#

ye

dawn plover
#

when making a new command, is it posible to have these auto suggestions?

lost matrix
fallen steeple
#

someone know why i got this in the console
Cannot invoke "java.util.Optional.isPresent()" because "optional" is null
but it appears and it has its custom name, and the worst is that when I try to display the variable it is displayed correctly

buoyant viper
#

i reckon the optional is null

#

?paste the code ur using to get it

undone axleBOT
vocal cloud
#

TFW the optional is null. Is it your optional because optionals should never ever be null.

buoyant viper
#

xd

#

defeats the whole purpose of havin an optional

fallen steeple
#

Idk how optional can be null because it's set when i create the optional

lost matrix
quartz basalt
#

wdym

short jewel
fallen steeple
#

but the armorstand spawn with the name

#

so it cant be null because i see the name

short jewel
#

can you post more of your code?

#

cause with that one line its hard to see what is actually going on 😅

fallen steeple
#

yes 2s

short jewel
#

np take ur time

fallen steeple
#

i added @NotNull before the Optional but it doesn't change anything

#

sorry for the ping x)

short jewel
#

the not null does nothing cause the optional itself isnt not null the value inside the optional is null

#

what is the line that gives the error?

fallen steeple
#

i dont have any lines in my code that give error

#

in the console i dont see any line of my code

short jewel
#

huh

fallen steeple
#

and i tried to replace the p.getName by a string and it doesn't change anything

eternal oxide
#

a Spigot jar using adventure?

buoyant viper
#

isnt it ofNullable

#

not just of

fallen steeple
#

i tried of and ofnullable

fallen steeple
lost matrix
#

Spigot tried to serialize your packets and was thrown off because you forgot some value.

fallen steeple
#

it can be a protocollib error ?

dawn plover
#

how do i check if there are no arguments in my command
i check multiple things, and the only thing that works for me is if( Arrays.toString(args).equals("[]") ) and I feel like this is more inefficient then wiping your butt before you're finished
(things that i tried that dont work are "args == null" "args.length == 0 " "!(args.length >= 1)" )

lost matrix
#

if args.length == 0 then no arguments where passed

dawn plover
#

yea, but doenst work

#

i tried

short jewel
fallen steeple
#

but

short jewel
buoyant viper
lost matrix
buoyant viper
#

?paste

undone axleBOT
vocal cloud
#

Never know. Could be a spigot fork called spigot-but-commands-are-fused

buoyant viper
#

spigot but command arguments always include the command name as the first index element

dawn plover
buoyant viper
#

the fuck

vocal cloud
#

Sigh

#

Else if

#

Or a return

buoyant viper
#

does that font mean == or just =

#

this is why i dont like those weird powerline fonts that merge characters

fallen steeple
dawn plover
#

its == (but that font makes it 1 long =)

#

and even if it was just a single =, it would then give an error

buoyant viper
lost matrix
#
WrappedDataWatcher.Registry.getChatComponentSerializer(true)

true -> optional

fallen steeple
#

no im stupid

harsh gale
#

Have anyone an idea how "MinecraftEncryption" works? I want fix that:

"new ClientboundPlayerChatPacket(chat, Optional.of(chat), 0, ChatSender.a(chat), Instant.now(), null);"

I must replace null with the "MinecraftEncryption" instance!

quiet ice
#

Why do you want that?

dire marsh
lost matrix
#

I dont have that

harsh gale
harsh gale
dire marsh
#

try replacing Instant.now with null as well

lost matrix
dire marsh
#

iirc that's only sent with signed messages

harsh gale
dire marsh
#

but yeah no reason to not use api

lost matrix
#

Oh i see. Im still on 1.18...

dire marsh
#

I don't think you'd want to use player chat message anyway? for sending a clickable message

#

you'd want to send a system message

tardy delta
#

my brain went brr by looking thro the chat

radiant umbra
lost matrix
radiant umbra
#

How?

twilit roost
#

raycasting from player location returns player

#

RayTraceResult result = p.getWorld().rayTrace(p.getLocation(),direction,range,FluidCollisionMode.ALWAYS,false, 0.5,null);

lost matrix
twilit roost
#

Predicate pre = new Predicate?

eternal oxide
#

entity -> return entity.getType() != PLAYER;

terse lake
#

Best tutorial for plugin development? (Spigot)

earnest forum
#

coded red on youtube is alright

#

u should learn java before though

tardy delta
#

codedred sucks

#

his code is very weird

earnest forum
#

hes good for beginners

terse lake
#

yes I know Java fair bit

tardy delta
#

mwe

earnest forum
#

which is why i said learn java before

#

he has bad coding practice

#

but explains api well

tardy delta
#

i've came to the conclusion that there arent advanced spigot coding tutorials online :(

earnest forum
#

its not a particularly big thing

#

not everyone plays minecraft, not everyone wants to make plugins

tardy delta
#

im just loooking at gh now

terse lake
#

good discord servers for spigot development?

earnest forum
#

this

#

lol

lost matrix
#

There are really only 3 things you have to know to get started.

  1. Events and listeners
  2. Commands
  3. Scheduling

After that you just need to dig in and discover everything

twilit roost
terse lake
eternal oxide
twilit roost
#

entities/players

tardy delta
#

by googling how lambdas work

twilit roost
#

but want to exclude players if they are at same team

eternal oxide
#

all entities? just mobs? just Players?

twilit roost
eternal oxide
#

those questions are mutually exclusive

lost matrix
twilit roost
#

except some in list

eternal oxide
#

then don;t use a predicate

subtle folio
lost matrix
tardy delta
subtle folio
#

is that ternary in switch?

#

wait no

#

switch in an if

#

i’m slow

eternal oxide
#

entity -> return !set.contains(entity.getType)

#

however you want to handle your exclusions

lost matrix
#

Wait am i missing a !?

tardy delta
#

@subtle folio intellij crashes every time when updating to 2022 edition lol

buoyant viper
#

F

subtle folio
#

send logs

#

what are ur specs

tardy delta
#

well uhh its smth with plugins

subtle folio
#

disable them all

#

i only use copilot rust and github theme plug-in

#

and minecraft development ofc

tender shard
#

Gh copilot is the best thing that was ever invented, besides booze

#

All other AI code completions are utter bullshit but gh copilot is actually useful

subtle folio
#

yeah fr

#

i’m kinda liking tabnine for rust

#

but copilot is just so much better

tardy delta
subtle folio
#

sadge that it’s going freee

#

paid*

tender shard
subtle folio
#

what’s that

#

plug-in?

tardy delta
#

ye ig but i never installed it

subtle folio
#

i’ll have to check it out when i get home

tender shard
#

Code4me is a parody of copilot ig

tardy delta
#

lets see, its downloading patch files now

tender shard
#

It always only suggests totally random nonsense things lol

subtle folio
#

oh lmfao

#

nvm

#

pretty sure amazon is making their own copilot

#

you have ultimate right alex?

tender shard
subtle folio
#

damn is there anything useful for a freelance

#

or is it only enterprise shit

paper viper
tender shard
subtle folio
#

i’m a student how do i get it

tender shard
subtle folio
#

do i need a .edu email

tender shard
#

No you just an email of an approved school / university

tardy delta
#

im a student next year lmao

lost matrix
subtle folio
#

high school better count 😂

tardy delta
#

i guess not lol

lost matrix
#

omg then you need a totally different approach. Scrap all that gravity stuff.

quartz basalt
#

anything

#

just whatever is easier

paper viper
quartz basalt
#

i can do parabola

paper viper
#

And I’m guessing student developer pack

lost matrix
#

But .edu gets accepted automatically

paper viper
tardy delta
#

huh

lost matrix
quartz basalt
lost matrix
quartz basalt
#

creating a fountain

tardy delta
paper viper
#

Gross

winged storm
#

how do ij makme a minecraft plugin

#

none of the tutorials ive watched

#

actually worked

dire marsh
#

u extdend jabba ploogin

tardy delta
#

atleast the updating worked

tardy delta
#

without crashing smh

tender shard
lost matrix
# quartz basalt creating a fountain

You want to create a fountain with falling blocks as the water.
Does the height, the water is flying have to be precise or do you intend to just
use one height that never changes?

quartz basalt
lost matrix
quartz basalt
#

👍

lost matrix
#

I found out that the gravity is non-constant and directly proportional to the velocity of the object.

quartz basalt
#

ah

lost matrix
#

Wait let me double check. This looks a bit weird.

#

Ah i need to use a discrete approach. Brb.

subtle folio
old turtle
#

hey guys

#

how do i get the plugin

lost matrix
#

download it

old turtle
#

Bukkit.getScheduler().runTaskLater(Swords.getPlugin().getInstance(), new Runnable(){

#

Swords.getPlugin().getInstance()

#

how do i return my plugin?

lost matrix
#

sigh

old turtle
#

i'd rather you didnt help if you're going to have a negative attitude

chrome beacon
#

?learnjava

undone axleBOT
chrome beacon
#

?di

undone axleBOT
old turtle
#

i don't need to learn java... lol

#

if you think this has anything to do with java and not the library idk

#

maybe you need to click those links

chrome beacon
#

Passing around an instance of your class is deffinetly basic java

lost matrix
old turtle
#

Plugin is not the same as my main class though?

chrome beacon
#

It is

#

Your main class is extending JavaPlugin

#

Which is a Plugin

worldly ingot
#

I mean... traditionally speaking, a main class and your plugin class aren't technically the same thing, but plugin developers will refer to it as the "main class" lol

old turtle
old turtle
#

Bukkit.getScheduler().runTaskLater(Swords.getPlugin()

#

it requires you to parse "clazz"

paper viper
old turtle
#

i primarily use c#, so i'm not sure what clazz is

lost matrix
# old turtle nah i've been programming for years

Ah ok.
Your JavaPlugin class gets instantiated once and is a singleton.
You can simply create a static reference in your onEnable() and get it with a static getter.

Should explain everything then.

eternal oxide
#

?di or inject

undone axleBOT
old turtle
#

public PlayerListener(PlayerStatsPlugin plugin) {
this.plugin = plugin;
},
i had this exactly but i was getting a weird issue, maybe i'll take a look

#

at what i did wrong

#

thanks guys :)

lost matrix
eternal oxide
old turtle
gritty urchin
#

Hey

#

Trying to connect to a MariaDB database

#

but its not working

#

Getting this error

#

No suitable driver found for jdbc:mariadb://127.0.0.1:3306

#

Included MariaDB jdbc driver in my classpath

#

but still not working

eternal oxide
#

you probably have to load it

gritty urchin
#

how would I do that

eternal oxide
#

Class.forName or something

#

without looking it up

#

IDE not running

gritty urchin
#

still not working

lost matrix
gritty urchin
#

1.8.8

lost matrix
#

ts

tardy delta
#

ij loves me writing yml

eternal oxide
tardy delta
gritty urchin
gritty urchin
#

I did Class.forName

#

Class.forName("org.mariadb.jdbc.Driver")

lost matrix
#

Im close to finding out how gravity works but im just not completely sure on how to interpret this.
Looks like movement with drag.

tardy delta
#

ah yes i will shut up

gritty urchin
#

great news

lost matrix
gritty urchin
#

IntellIJ latest

hardy crystal
#

hello, i have problem whit bstats

gritty urchin
#

Windows 10

hardy crystal
#
  - META-INF/MANIFEST.MF
maven-shade-plugin has detected that some class files are
present in two or more JARs. When this happens, only one
single version of the class is copied to the uber jar.
Usually this is not harmful and you can skip these warnings,
otherwise try to manually exclude artifacts based on
mvn dependency:tree -Ddetail=true and the above output.```
lost matrix
tardy delta
#

i think i fixed it by removing some stupid yaml plugin :)

hardy crystal
#

when i build

tardy delta
#

ignore that

lost matrix
quartz basalt
hardy crystal
tardy delta
#

idk ig i installed that for syntax validating or smth

hardy crystal
#

in the main class i need to put only this 2 string?

#
        int pluginId = 1234; // <-- Replace with the id of your plugin!
        Metrics metrics = new Metrics(this, pluginId);````
lost matrix
hardy crystal
#

it work

lost matrix
#

Which is a flawed design but meh

quaint mantle
#

Hello, I want to loop a .yml file. But:
List<ItemStack> bestellingenList = (List<ItemStack>) main.getSpelerbestelling().get("Bestelling");
if(bestellingenList == null) bestellingenList = new ArrayList<>();

            for (ItemStack bestelling : bestellingenList) {
                bestellingen.addItem(bestelling);
            }

doesn't seem to work.
Anybody know why?

lost matrix
gritty urchin
#

how do I add it

quaint mantle
tardy delta
#

dutch kek

gritty urchin
#

this is my pom