#help-development

1 messages · Page 1109 of 1

robust helm
#

I got an KitAPI and an KitPlugin(the javaplugin) class. The KitApi is a singleton, but now I need the instance of the Plugin class for some stuff. Should I just static abuse or use an init(Plugin plugin) method or define and access the KitApi via the KitPlugin(KitPlugin.getKitAPI)?

chrome beacon
#

JavaPlugin.getPlugin(KitPlugin.class)

#

Should get you the instance

gleaming grove
# robust helm I got an KitAPI and an KitPlugin(the javaplugin) class. The KitApi is a singleto...

You can make something like this.

1, Register KitApi as a service

public class KitPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        saveDefaultConfig();
        Server server = getServer();

        KitApi api = new KitApiImpl(this);
        ServicesManager services = server.getServicesManager();
        services.register(KitApi.class, api , this, ServicePriority.Normal);
     }
}
  1. Get the instance via service provider
public interface KitApi {
    /**
     * Checks if the KitApi API library has been initialized.
     *
     * @return true if the library has been initialized, false otherwise.
     */
    static boolean isInitialized() {
        return getServices().isProvidedFor(KitApi.class);
    }

     static KitApi api() {
        if (!isInitialized()) {
            throw new Exception("Api has not been initialized yet!");
        }
        return getServices().load(KitApi.class);
    }

    private static ServicesManager getServices() {
        return Bukkit.getServer().getServicesManager();
    }
dawn flower
#
    @Override
    public final void execute(ParsedElement parsedElement, Event event, ISyntaxParser syntaxParser) {
        counter = 0;
        do {
            executeIteration(parsedElement, event, syntaxParser);
            counter++;
        } while (shouldContinueIterating(parsedElement));
        counter = 0;
    }```
for some reason, if i try broadcasting the counter in ``executeIteration``, it's always 0
#

even if it does like 10 iterations

#

sometimes it updates

#

fixed it, just had to use recursion instead of while

#

nvm it worked for a second and now it's not consistant at all

gleaming grove
kind hatch
#

?paste code

undone axleBOT
dawn flower
dawn flower
#

oh wait, i'm making an infinite loop

#

how do i call super.execute of TurboSection in WhileSection

gleaming grove
dawn flower
#

?

gleaming grove
#

I presume you are parsing some string value into objects

dawn flower
#

i am

#
while chance of 50%:
  broadcast test```
#

i got it to work

gleaming grove
#

nice, making own programing language is fun project

dawn flower
#

yeah, it's prob one of the most fun projects i've worked on (not sarcasm)

onyx fjord
#

what do javadocs mean by "naturally" in PlayerExpChangeEvent javadocs?

#

i kinda need to modify exp even if its given using /xp for example

#

or by giving it directly to Player

worldly ingot
#

Don't think it's called for the xp command

onyx fjord
#

what about giving it to the player object

worldly ingot
#

No. It uses the same method that the /xp command does

#

(which doesn't call an event)

pliant topaz
#

naturally, as the same suggests, counts only natural picked up xp

#

for example from a furnace, or a mob kill

#

advancements may not count, not sure

worldly ingot
#

Yeah. It's called in each individual place that experience is earned, not in the Player's give experience method call

#

e.g. in EntityExperienceOrb#playerTouch() instead of EntityHuman#giveExperiencePoints()

lavish torrent
#

Hello, I am creating my network on my pc and when I turn on one of the servers the auth server I get an error and the server closes immediately, if you want I can pass the error that I get. Thank you.

tardy delta
lavish torrent
lavish torrent
tardy delta
#

whats big

tardy delta
#

idk some authme thing

blazing ocean
#

imagine using offline mode 🗿

lavish torrent
lavish torrent
twin venture
#

iam back to programming and thinking about finshing an old project .. but i think iam stuck xD

what is the best way to save cosmetic data for users?
uuid , cosmetic id , cosmetic type ,cosmetic enabled?

hybrid spoke
twin venture
#

PRIMARY_KEY uuid , cosmeti id , cosmetic type?

hybrid spoke
#

no

#

you will have 2 tables

#

one to map the cosmetic to a player (they got it) and one for the cosmetic itself

peak depot
#

table 1: UUID, Cosmetic ID
table 2: CosmeticID, Cosmeticdata....

wet breach
hybrid spoke
#

but yeah you could throw it all in one that would be fine as well

wet breach
#

otherwise 1 table is fine for this. Type can be an integer, not sure how you do types, but you can have an enum in your code that has the types mapped. And then I would probably also do cosmetic data as an integer as well, as you can just use that to extract binary values.

#

doing it this way, your db for this would actually be relatively small

hybrid spoke
#

i personally would have the type in a seperate table as well

peak depot
#

but if he got static cosmetics that are same for each player why would he store the data of them seperate for each one and not just in 1 sperate table so he just has to know the cosmetic id

hybrid spoke
#

and then use the id as a fk in the cosmetic table

wet breach
#

that is just too much data for something small

wet breach
#

wouldn't reallly see the advantage of it

hybrid spoke
#

you will have less data the more you work with ids crossover tables

wet breach
#

you can keep static stuff in code and out of the DB

hybrid spoke
#

its a good practice in terms of database refactoring

wet breach
#

right, but still wasting resources on something that doesn't need to be in the DB is my point

hybrid spoke
#

you are wasting resources by having it all in one

#

performance and memory wise

wet breach
#

no

hybrid spoke
#

yes

wet breach
#

I would like to see your tests then

twin venture
#

Well thanks for the info ..

iam using integer for COSMETIC_ID , so in database it will be like this :

  • uuid , 2 , kill_effect, 1
#

for example

wet breach
#

that proves this true

twin venture
#

2 is the cosmetic id or example

hybrid spoke
#

just google lol

twin venture
#

and 1 is enabled , disabled

wet breach
#

alright guess you don't want to show anything so I choose to believe you are not correct

hybrid spoke
#

dont have to redo tests which have already been made hundreds of times

peak depot
#

this no longer about you bud... the war has bewtwen them two has begun

wet breach
#

yep

#

anyways, static stuff should stay out of DB's when possible

#

useless to store such things when it can just stay in code where its already available

#

tests show not having such in DB's is more efficient, since you are not having to wait on a query to tell you something about a thing that never changes

peak depot
#

lets say you can add new cosmetics using db then you still gonna say dont use 2 tables

wet breach
#

I could add new ones via code

#

whats your point?

hybrid spoke
#

you build your code on the data you have

wet breach
#

neither one is easier or more difficult

peak depot
#

yeah but if he publishes it he aint gonna add new one

hybrid spoke
#

not the other way around lol

peak depot
#

thats what the user would do

#

bc prety sure the cassual guy that dont knows shit not gonna go through that hustle of compiling it again for new cosmetics

wet breach
hybrid spoke
wet breach
#

its not a personal prefefence

#

just facts

#

if its not in the DB its faster

#

plain and simple

#

mysql is efficient, but its not more efficient then something not in the DB

hybrid spoke
wet breach
#

but problem is, people love the lazy options so its fine 😉

hybrid spoke
#

and i doubt we will find a common denominator

wet breach
hybrid spoke
#

so im out of this convo

paper viper
#

Stinky coders 💨 👨‍💻

wet breach
#

static data shouldn't be stored in a DB unless there is a good reason for it.

peak depot
#

I save my ban reasons for ban plugin in db

#

hate me or love me

wet breach
#

or the static data I am referring to

umbral flint
#

Now that I think of it, Hypixel's ban reasons are probably static

#

They're always in the same format

peak depot
#

thats the same it is 2 tables 1 saying uuid ban start and the reason wich links to the 2nd where time text etc is saved

#

thats basicly the same thing

umbral flint
#

I wonder how much storage they have saved doing that

hybrid spoke
wet breach
#

oh no its hardcoded, like many things that still are today

#

its hardcoded because its not going to change or if it does its some years later but because its already defined its optimal and efficient then some dynamic set object

#

not everything needs to be dynamic you know otherwise we wouldn't have statics in java

#

or in many other languages for that matter

hybrid spoke
#

probably in a db or properties file or smth similar, but never ever in code

wet breach
# umbral flint I wonder how much storage they have saved doing that

hard to say without knowing exact setup, but it would make sense to have ban reasons static if you just only have generic ones that can be used. But its not a matter of storage being saved rather you are not needing to query for it and no reason to dynamically set such things when it isn't needed.

warm mica
warm mica
#

With mssql you used to do that for enums because there didn't use to have an enum type

hybrid spoke
#

^^ search it up, i spent hours in db trainings

wet breach
#

or rows I mean

warm mica
twin venture
#

Ops just relized i started something here xD

#

thanks guys for all your ideas

inner mulch
#

is there a way to have a method with the same name and params, just a different return type? or is this feature only in other languages?

eternal oxide
#

That really is so easy to test

inner mulch
#

yeah im getting errors, but i was wondering if i did something wrong or if my cache is corrupted

#

i had some issues with the cache earlier

civic crest
#

I don’t really get the benefits of using two tables nor of using a db for that specific case.
I would just store it in an yaml no?

civic crest
#

The cosmetics issue

eternal oxide
#

um seems you can have teh same method with a different return if you use generics

inner mulch
#

okay

civic crest
#

@inner mulch look into overloading maybe ?

inner mulch
#

does java even support method overloading

#

im pretty sure it doesnt

eternal oxide
#

yes

#

but what you want is not overloading

civic crest
#

Im pretty sure it does hahah

#

But yes maybe it’s not what he wants sorry I didn’t really understand it well

inner mulch
#

oh i thought overloading was that param thing from c++

#

overloading is simply same name more params

eternal oxide
#

yep

civic crest
#

Im pretty sure it works for return types as well

eternal oxide
#

it doesn;t

#

the return type is not a part of teh method signature

inner mulch
#

:(

#

i dont really get why that is tho

eternal oxide
#

using generics you can have multiple methods of the same name and args with different returns though.

inner mulch
#

alirght

lavish torrent
#

@hybrid spoke

civic crest
#

My bad

#

The compiler doesn’t look at return types 😦

#

If it applies to your case maybe you can use a bogus argument just to differentiate from the two

#

And then not doing anything with it

river oracle
#

or be a real man and do myMethod and myMethod0 and make myMethod0 private

#

you really shouldn't ever need to methods with the same name to have different return types

deft locust
hasty prawn
grim ice
#

how does spigot work with modularity?

#

is there any difference between normal maven projects and spigot when it comes to that?

candid galleon
#

the most you’d get is in the spigot.yml afaik

#

otherwise YMMV when it comes to actual plugins

humble tulip
#

What should I call my class that loads, removes and creates entries in a database?

#

it never modifies

#

basically i need the class to create these entries because i need to get the autoincrement id from the db

civic crest
#

EntryManager ?

#

Something manager

humble tulip
#

naming everything manager sucks

#

initally i wanted to call it EntryStorage

civic crest
#

Just go with something easy

#

Don’t overthink hahaha

viscid carbon
#

is this a bad way of doing creating/getting even if the file exists?

FILE = new File(Core.getInstance().getDataFolder() + File.separator + getDir(), getName());```
humble tulip
#

doing what?

viscid carbon
#

sorry i rephrased it lol

#
public class FileHandler {
    private final String DIR, NAME;
    private final File FILE;
    private final FileConfiguration CONFIG;

    public FileHandler(String dir, String name)  {
        this.DIR = dir;
        this.NAME = name;
        FILE = new File(Core.getInstance().getDataFolder() + File.separator + getDir(), getName());
        CONFIG = YamlConfiguration.loadConfiguration(FILE);
    }
    public void saveFile() throws IOException {
        getConfig().save(FILE);
    }


    public File getFile() {
        return FILE;
    }
    public FileConfiguration getConfig() {
        return CONFIG;
    }
    public String getDir() {
        return DIR;
    }

    public @NotNull String getName() {
        return NAME;
    }
}
restive sierra
#

hi guys

#

i keep on getting this error

#

anyone knows how to fix it?

humble tulip
#

sqlite db, do i close connection and reopen each time or no?

eternal oxide
#

no

#

sqlite is a flat file

agile anvil
restive sierra
#

here you got

tardy stump
#

can someone help me how to fake green ping bar on Tab?

tardy stump
agile anvil
worthy yarrow
#

Hi rolyn

agile anvil
agile anvil
worthy yarrow
#

I think we are quite opposite timezones haha

#

How’ve ya been

agile anvil
agile anvil
worthy yarrow
#

Shit is it the 23rd or 24th there?

worthy yarrow
agile anvil
#

2pm rn

worthy yarrow
#

Oh wat I thought Korea would be like 20 some hours ahead of us

agile anvil
#

where are you?

worthy yarrow
#

CST

#

Google says 14 hrs

#

Ahead anyway

agile anvil
#

Yeah that's still ok

#

what are you working on these days?

worthy yarrow
#

Hybrid skyblock / rpg core

#

Have you got anything cool in the works?

agile anvil
agile anvil
worthy yarrow
#

Always the hardest part isn’t it lol

agile anvil
#

problem is the domain I work on is on trend so any idea I have got released within a week or two by big companies.. just so hard to keep up with this

worthy yarrow
agile anvil
worthy yarrow
#

I think purple really only used my ideas for the season mechanics and some visual effect stuff, otherwise I got to the mechanic implementation stage

#

It was semi functional at the time with the effects (visual and mechanical) but then idk I got bored and moved on

#

But yeah now the hybrid core is where most of my time is going other than a couple smaller projects for work stuff

agile anvil
#

that's great. hardest thing is to keep doing what you plan to do ahah

merry sapphire
#

Hello everyone, good day! I just want to ask how to fix the effects in my sword? It only shows paper instead of the effects of the texture pack but the only thing that is showing is the particles, I suspect its the texture pack issue, so I need help 🥲

worthy yarrow
#

Well purple also helped with the architecture of the hybrid core, well he gave me a simplified thing for the dependency tree since this is quite a large project (multi module stuff ya know)

#

Still in the process of refactoring all the stuff / abstractions / interfacing etc

#

I think I’m about 4k lines deep now? Messed up a bit, ironically I write down plans for impl on work projects but not for the free time ones, so ended up implementing like skyblock mechanics first

#

Also a big fat thing I’m not looking forward to is implementing event driven stuff, similar to how towny handles their stuff

agile anvil
#

But keep it going it's really nice!

merry sapphire
worthy yarrow
#

?img

undone axleBOT
#

Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.

Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org

agile anvil
#

?img

undone axleBOT
#

Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.

Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org

worthy yarrow
#

Beat ya to it :p

#

And I’m on mobile!

merry sapphire
#

I verified, thanks

worthy yarrow
merry sapphire
#

I cant make this to work, it only shows the paper instead of the effects when I swing my sword

worthy yarrow
#

(Sorry to cut you off bolja)

merry sapphire
#

but it did show some particles, I do suspect its the texture pack issue, but I cant seem to solve it on my own

merry sapphire
#

do you know how to fix this by any chance?

agile anvil
worthy yarrow
#

Unfortunately not, texture packs and modeling are subjects I still have to learn

worthy yarrow
agile anvil
#

I mean how do you spawn the paper ?

worthy yarrow
#

Anyways I’ve had a long ass day today nearly 27 hours now kek so I’m gonna go sleep, good catching up and we’ll probably see each other later

#

Cya rolyn!

merry sapphire
agile anvil
agile anvil
merry sapphire
#

I can screenshare

agile anvil
#

?paste

undone axleBOT
agile anvil
#

Just paste your code here

merry sapphire
#

it only shows the particle but not showing the effects in texture pack

agile anvil
#

MMmh

#

This is not related to this channel

#

You might ask another discord server, or maybe in #help-server if you get lucky

cedar shadow
#

Hey, I was wondering if anyone used multiversecore api for their plugins and if so how did you do the world generation. I cant figure out how get the world type class, because importing org.bukkit.WorldType isnt found. For reference I am using spigot 1.21 via maven. I can send over my pom if its helps

cedar shadow
#

Nvm it’s an editor issue

hybrid turret
#

I have a List<Warp>.
If a warp exists (has same property values) I want to replace its values instead of adding a new one to the list. (or remove the old and add a new ig. i just wanna replace it bc there are not supposed to be multiple warps in said list)

How would I do that?

#

oh wait i should use a map, huh?

#

fck

agile anvil
#

You should definitely use a map

hybrid turret
#

alright, tbh not that much to change so it's fine

#

oh right put also just replaces, well, that makes sense. (cries in too stupid to know basic java apparently)

tardy delta
blazing ocean
#

his ide is transparent

tardy delta
#

rad is really everywhere

#

i used to have my terminal transparent but then people could see the stuff underneath

blazing ocean
#

😳

worthy yarrow
tardy delta
#

woah

worthy yarrow
#

Crazy I know

tardy delta
#

i cant even get outside

#

they breaking up the damn street

worthy yarrow
#

I usually don’t leave my house

blazing ocean
worthy yarrow
#

Why would I canoe by myself

#

That’s just dumb

blazing ocean
#

kayaking kinda sucks

worthy yarrow
#

And canoeing doesn’t?

#

You’re goofy

hybrid turret
#

i agree with rad tbh

#

canoeing > kayaking

tardy delta
#

aha neighbour looking outside what they are doing to the street

#

its over buddy

worthy yarrow
#

It’s literally the same activity with the exception of different boat/paddle

#

You’re both goofy

tardy delta
#

nerds, its just a silly boat

blazing ocean
worthy yarrow
#

Because we went kayaking duh

#

And a canoe is more expensive than a kayak

blazing ocean
#

we used to have three canoes

#

my dad still has two

worthy yarrow
#

Well it’s a bit harder to white water a canoe too

blazing ocean
#

it's a bit harder to what

worthy yarrow
#

White water / rapids / fast moving water / fast current water / uh

#

Another description

blazing ocean
#

then go to a calm river

worthy yarrow
#

That’s no fun

#

It’s more fun when my ass is clenched the whole time because I’m scared to flip myself trying to get through some rapids

blazing ocean
#

eh

#

i used to canoe in some polish river for like two weeks and do camping

#

when i was young

worthy yarrow
#

Well it depends on the vibe you’re going for

#

I grew up at a lake in Colorado literally right next to a part of the Colorado river, which we’d go down every once in a while

#

Rafting, canoes, kayaks, etc all the time were going by

blazing ocean
#

that sounds nice

worthy yarrow
#

Well the lake also flooded every year after winter

hybrid turret
#

if i define a permission in the plugin.yml the server will automatically check for this permission regardless of my own checks, correct?

worthy yarrow
#

Every year

blazing ocean
#

ohh damn

worthy yarrow
#

Oh bruh this is help dev

blazing ocean
#

i'm glad there's barely any floodings here

worthy yarrow
#

Well it was literally because of how close the Colorado river is

#

No joke you could walk to it in 3 minutes from either dock

blazing ocean
#

i live next to a lake but it's not as cool

worthy yarrow
#

Is it man made?

blazing ocean
#

no

worthy yarrow
#

Ah laku was

blazing ocean
#

oh well two lakes actually, one of them is

worthy yarrow
#

Technically two lakes at laku as well both are

#

I remember helping with buoy replacements, used to be able to hold my breath for like 1 1/2 - 2 minutes (keep in mind that’s like with moving around too)

#

Now my lungs probably suck because of all the nicotine and weed

#

Fun fact when I was 11 I was sponsored by syndicate skis

slate rose
#
                    set("LVL1",plyBottomBlock.getLocation());

                    System.out.println(config.getLocation("LVL1"));
                    System.out.println(plyBottomBlock.getLocation());
                    System.out.println((config.getLocation("LVL1")  == plyBottomBlock.getLocation()));
                    break;```  Output: ```[17:30:52 INFO]: Location{world=CraftWorld{name=world},x=39.0,y=71.0,z=48.0,pitch=0.0,yaw=0.0}
[17:30:52 INFO]: Location{world=CraftWorld{name=world},x=39.0,y=71.0,z=48.0,pitch=0.0,yaw=0.0}
[17:30:52 INFO]: false
``` Does anyone have idea why one exact thing doesn't match another exact value? Is it a data type issue or somthing?
peak tendon
#

any help with this would be really appreciated ^^^^

hybrid turret
#

== compares references

#

equals() compares values

#

use equals()

#

@slate rose

#

*ALWAYS use equals when comparing objects.
Only use == when comparing to null or when comparing primitives

worthy yarrow
#

I'd explain what == means compared to .equals but its bed time and I am lazy

hybrid turret
#

i'm on it rn

worthy yarrow
#

❤️

hybrid turret
#

but tbh i'm not sure if i get it right exactly lol but i'll try to explain it with an example

peak tendon
#

❤️ 💚 💙

worthy yarrow
#

Just think of it like == is a memory comparison whereas .equals is more so a contents comparison

slate rose
#

@hybrid turret Thanks heaps, that's makes alot of sense

worthy yarrow
#

So == is used to compare whether two objects are the same in memory where .equals means you're comparing the literal value I'd say is a solid way to think about it

hybrid turret
#
Object object1 = new Object("I am a value", 1, 0.0, true);
Object object2 = new Object("I am a value", 1, 0.0, true);
Object object3 = object1;

log(object1 == object2); // this will return false
log(object1 == object3); // this will return true
log(object1.equals(object2); // this will return true
log(object2.equasl(object3); // this will return true
worthy yarrow
#

phew look at that, not too lazy after all

hybrid turret
#

iirc

quartz gull
#

when trying to join my own test server im given the error There is no profile service available and immediately disconnected from the server. help please

hybrid turret
#

object1 and object3 have the same reference so it == will return true (iirc)

otherwise the comparisions will return false if equals is not used since equals compares the values inside the objects

hybrid turret
#

i mean since it's your "test server" i suppose you developed some sort of plugin?

quartz gull
#

yeah i did

#

but that plugin has nothing to do with it lol

slate rose
#

@hybrid turret don't feel like you need to break it down the objects to String.valueof and compared them even then the values wouldn't == each other but aren't they references at that point?

hybrid turret
slate rose
#

For example String.valueOf(playerLocation) == String.valueOf(new Location(world,0,0,0))

#

shouldn't this technically work

hybrid turret
hybrid turret
quartz gull
slate rose
#

Alright that make sense. I'm coming to java from other lanagues and trying to orient myself

hybrid turret
pseudo hazel
#

what does valueOf even return

hybrid turret
#

new String(...)

#

in the end

pseudo hazel
#

oh

#

yeah ofc

#

it returns a string

#

every string is created on the heap so they wont be equal in reference

#

(or atleast you should not rely on that)

#

so always use .equals

quartz gull
hybrid turret
#

Example:

String#valueOf(int)

  public static String valueOf(int i) {
    return Integer.toString(i);
  }

Integer#toString(int)

  public static String toString(int i) {
    int size = stringSize(i);
    byte[] buf;
    if (String.COMPACT_STRINGS) {
      buf = new byte[size];
      getChars(i, size, buf);
      return new String(buf, (byte)0);
    } else {
      buf = new byte[size * 2];
      StringUTF16.getChars(i, size, buf);
      return new String(buf, (byte)1);
    }
  }
pseudo hazel
#

which launcher are you using?

hybrid turret
quartz gull
hybrid turret
#

huh

tardy delta
quartz gull
pseudo hazel
#

what server version

quartz gull
#

1.20.4

#

tried 1.20.6

#

1.21

pseudo hazel
#

did you try the latest with build tools?

quartz gull
#

yes lol

hybrid turret
#

yeah i would say setup the server again from scratch

quartz gull
#

did that multiple times

hybrid turret
#

huh

#

uhm

quartz gull
#

at this point im going to use aternos or something

pseudo hazel
#

did you try relogging into the launcher?

quartz gull
#

yes

pseudo hazel
#

can you log on to different servers?

quartz gull
#

yes

worthy yarrow
#

it could be possible that the auth servers are down for their region

hybrid turret
#

this is some real weird shit what the heck

worthy yarrow
#

But the error doesn't really suggest this is the issue

pseudo hazel
#

that would give a different message

#

I have never seen this message before

worthy yarrow
#

It's still possible

quartz gull
#

some bs bruh

hybrid turret
#

fr

#

ig you tried, rebooting your pc, reinstalling the server from scratch, relogging into the account and you do not have the server in a onedrive or similar cloud folder (because this is funky)

worthy yarrow
#

I don't really think the issue is the auth servers, it would have given you that error instead so uh

quartz gull
#

ive tried everything i can think of

hybrid turret
#

hmm

#

you're running a plain spigot server?

quartz gull
#

spigot

hybrid turret
#

damn i'm actually out at this point, tf

quartz gull
#

yeah i fucking hate mc rn

#

i have a client waiting on me

hybrid turret
#

ig ask in the #help-server channel again, maybe you find better luck there :/

hybrid turret
worthy yarrow
#

Is it possible that this is a firewall thing

quartz gull
#

already checked that

hybrid turret
#

tbh not if it's on the local machine, no?

#

wait

#

is it on the local machine?

worthy yarrow
#

I mean there could still be some funky thing prohibiting server's access to something

hybrid turret
#

file permissions? maybe

worthy yarrow
#

Eh the error doesn't support that

#

But then again

#

that error isn't really helpful anyway

quartz gull
#

what the actual fuck

#

a regular minecraft server works

#

but not a spigot server

hybrid turret
hybrid turret
worthy yarrow
#

As in the error indicates that it just doesn't exist (.) so

hybrid turret
#

i mean

worthy yarrow
#

I don't think it'd be file perms

quartz gull
#

im running paper instead of spigot rn

hybrid turret
#

sometimes ppl use the same message for not having access and not existing

quartz gull
#

see if it works

worthy yarrow
#

yeah that is a fair point

#

But I feel like mojang...

#

yeah no

hybrid turret
#

mojank kekw

quartz gull
#

well great

grim ice
#

@worthy yarrow did u figure out

#

ur Skyblock api stuff

worthy yarrow
#

Sorta kinda

grim ice
#

with modules n shit

worthy yarrow
#

Still refactoring shit

quartz gull
#

i dont think im going to use spigot

grim ice
#

aight u gotta explain shit to me now

#

how do modules work with spigot

#

is it the same as usual maven multi module projects?

worthy yarrow
#

Yeah

quartz gull
#

nope

grim ice
#

where are the dependencies defined?

quartz gull
#

paper server doesnt work either

grim ice
#

on the parent?

#

or each modules pom

#

I'm guessing each module's

worthy yarrow
#

Well usually you'll have your dependency tree and just design it depending

grim ice
#

i just have 2 modules, core and api

worthy yarrow
#

I've got base api which has no depends right

#

Then we go to common and the apis for skyblock / rpg which are relying on base api

quartz gull
worthy yarrow
#

Then down to actual implementation modules which rely on the skyblock / rpg apis

worthy yarrow
grim ice
#

so I'd set it up the same as any maven project right

worthy yarrow
#

I'd say so yeah depends a bit on the use case

#

well per module but seeing as most multi modules are built for each other obv it's pretty similar

#

As in you just build off one another

grim ice
#

do u know a project that uses modules?

#

preferably a spigot plugin

worthy yarrow
#

Maybe towny if it's spigot

#

I rarely look at other projects though

grim ice
#

alr ty ill see

worthy yarrow
#

Yeah sure!

#

Purple is very knowledgeable on this if he's ever around

#

He's actually the one who gave me this kek

dawn flower
#

how would i implement continuation here?
this is my current attempt: https://paste.md-5.net/iqurewoqig.java
it works but sometimes afew code elements pass through and execute (that are after a continue element)

twin venture
dawn flower
#

please use string blocks

#

triple "

twin venture
#

Sorry :p

hybrid turret
#

omg wait

#

this is mysql, right?

#

does something like "ON DUPLICATE KEY" exist for sqlite?

twin venture
#

idk try ..

hybrid turret
#

oh apparently there is ON CONFLICT, interesting

#

this might make requests a lot faster bc i don't have to check then first seperately damn

gleaming grove
dawn flower
#

wait you can detect infinite loops?

gleaming grove
#

Sure

#

In this example I've set maximum numer of iterations to be 1000

pseudo hazel
#

for simple stuff sure

smoky anchor
#

Don't think you can "detect" them
That would require solving the halting problem which is impossible

dawn flower
#

maximum iteration of 1000 would also solve the halting problem

pseudo hazel
#

you can approximate by just stopping after some number of iterations

dawn flower
#

also are you just making the while block an interpreter itself

gleaming grove
#

Yes since it is

dawn flower
#

in my case, sections aren't that powerful

#

i'm just gonna make sections interpret their own code with a helper method

gleaming grove
#

The While condition and body can dynamically change during program rub

dawn flower
#

just like you're doing, not sure if u have a helper method tho

gleaming grove
#

In my case Helper method is InterpreterFactory

dawn flower
#

ah

gleaming grove
#

Like here I parsing while node body, and checking what is the result of the parsing

hybrid turret
#

is there any occation where a HumanEntity cannot be safely casted to Player?

hazy parrot
#

Not yet

hybrid turret
#

okay so i should still do an instanceof check?

hazy parrot
#

Yeah, that wouldn't hurt

pseudo hazel
#

🤷‍♂️

#

ill fix my code when they do add something that would break that

hybrid turret
#

both fair enough tbh

#

can't imagine that it could be anything else...
At least regarding InventoryClickEvent#getWhoClicked, lol

hazy parrot
#

Wait till they add Herobrine

hybrid turret
#

monkaW

#

I want to convert the size of a List to a paginable inventory.

my problem is: how do i set the inventory size by the amount of elements in the list?

my general idea is to shorten down the list so i have 36 elements so i can add an empty line and the pagination buttons but how would i set the correct point from where i want to start reading the list again for the next pagination and stiff?

#

(example for a list would be Bukkit#getOnlinePlayers)

#

it's kinda hard to explain i hope yall get what i mean, lol

sterile breach
pseudo hazel
#

you have q certain amount of items per page

#

and then each first item on each page has a certain index

blazing ocean
#

interfaces(-kotlin) cat_happi

hybrid turret
hybrid turret
blazing ocean
#

what about me :(

#

what about ebic, fourteenbrush and raydan :(

hybrid turret
#

no count

#

nuh uh

blazing ocean
hybrid turret
#

kotlin can suck my pp

blazing ocean
#

😳

hybrid turret
#

good emote tho

#

seen that somewhere i think

blazing ocean
hybrid turret
#

meow

blazing ocean
#

idk bro

#

never seen it

blazing ocean
hybrid turret
#

me no nitro :(

blazing ocean
#

L

hybrid turret
#

ay dont L me. I'm 20 in training and moved out. so essentially... i'm poor now

tall dragon
hybrid turret
#

is i the current page?

tall dragon
#

yes

sterile breach
hybrid turret
#

okay i see. i guess i have something somewhat similar but yeah that makes a lot more sense.

So I just have another List which is filled with the conditions you stated, Shuriken?

blazing ocean
hybrid turret
tall dragon
#

but i write the results to a Map<Integer, List<T>>

#

and render the gui with that

hybrid turret
#

Isnt a Map with an Integer as key just a List?

#

So just a List<List<T>>

sterile breach
tall dragon
hybrid turret
hybrid turret
#

i never really understood what each of those did

tall dragon
#

LinkedList just makes sure your entries stay in a logical order

slender elbow
#

wat

#

Lists are by definition ordered

#

no matter if it's a LinkedList or not

hybrid turret
#

yeah that's what I always thought

slender elbow
#

The author of java's LinkedList questions its own existence as well

Does anyone actually use LinkedList? I wrote it, and I never use it.

hybrid turret
#

XD

#

my former teacher always used LinkedList and i never understood why

sterile breach
#

Does client know tick concept ? Or it just execute packets when received?

tall dragon
#

huh. i guess you're right. ive always thought LinkedList was used for ordering

#

but thats not right at all

hybrid turret
#

what is not ordered is a Set for example

smoky anchor
tall dragon
#

its got to do with Execution speed tradeoffs

slender elbow
#

the client has its own tick loop yes

sterile breach
#

I know that spigot or nms "throttles" move packets in particular, can you tell me more? The most logical thing would be for move packets to be stored and every 50 ms (1 tick) reduced in a single movement?

grim ice
#

so I have a core and api module, I implement a singleton in the core, but I want the api user to have access to the implemented singleton by an interface, how would I do that without having both modules depend on each other?

#

so basically I have a HomeManager interface in my api module, and a BasicHomeManager as an implementation in my core module

#

how would I pass the BasicHomeManager as a HomeManager to the api's user

eternal oxide
#

you can create a default or static method in the Interface

grim ice
#

yes but what would the contents be?

eternal oxide
#

get your core instance?

#

its a singleton

grim ice
#

but then i'd need to depend

#

on the core module

eternal oxide
#

yes

grim ice
#

and that's alright?

eternal oxide
#

well it doesn't sound right. Seems you'd have a circular dependency

grim ice
#

between modules

eternal oxide
#

a module is the implementation which exposes an API

#

it should not depend on a higher level

grim ice
#

so then how do you pass instances?

eternal oxide
#

you pass an instance to the module in the method

#

the module shoudl not be passing an instance betweel clients

#

If your Manager is to be accessed behind the API then it should be behind the API not above it

grim ice
eternal oxide
#

Whatever your API is covering has to be behind it, so all depencies behind it

#

you can;t have an API depending on a dependency which depends on the API

grim ice
#

then how do people usually give the api's user access to certain data

#

e.g how does spigot allow us control over things

#

when we can't access nms

eternal oxide
#

it all goes behind the API

grim ice
#

how?

eternal oxide
#

Am I not explaining it well?

pliant topaz
grim ice
grim ice
#

then how'd you do anything

eternal oxide
#

you redesign your project so your core is behind your API

grim ice
pliant topaz
#

many ressources i found when searching on google

grim ice
#

can I see what you found?

pliant topaz
#

i found something a while ago, ill check but i dont know if i can find it

#

nope sorry, couldnt find it

grim ice
#

rip

#

so uh

#

im stuck 😭

gleaming grove
slender elbow
#

you can also do that on an arraylist

#

if you do it properly, but also, linkedlist doesn't support that if you don't do it properly either

gleaming grove
#

You are right

deft locust
ocean hollow
#

is Metadata resets after restart?

eternal oxide
#

yes

#

its not persistent

ocean hollow
#

is there anything similar that can be used for blocks?

#

(except for Jeff's library)

eternal oxide
#

?blockpdc

undone axleBOT
onyx fjord
#

i replace the fish caught with fishing event however the velocity doesnt apply as with the old item (how vanilla) does it

#

what do i do to reproduce vanilla velocity for this?

eternal oxide
#

only Blocks with a TileEntity can have a PDC

river oracle
#

BlockPDC is your best bet tbhh

ocean hollow
#

as I understand it, blockPDC data is stored in chunks? isn't this a crutch?

eternal oxide
#

yes because Blocks have no PDC

slender elbow
#

the only way to store data in blocks that are unable to store data is to not store the data in blocks that are unable to store data, but store the data in something that is able to store data

eternal oxide
#

good explanation. 😄

dawn flower
#

is there a regex to match arithmetic operations without explicity matching numbers

this should match: lol + idk + (lmao * (lmao ^ 2))

#

nvm

river oracle
#

I mean if you for some reason hate storing it in chunk PDC you'll need to either
A) Make your own region files and read and write to NBT files like minecraft does
B) Use a Database and implement a smart loading and saving system for blocks that doesn't slow chunk loading by an extreme amount

halcyon hemlock
# slender elbow the only way to store data in blocks that are unable to store data is to not sto...

So basically, you mean the paramount methodology for data retention within non-retentive cuboids is to eschew the futile endeavor of imbuing said cuboids with informational content, and instead, pivot towards the utilization of an amorphous, data-absorbent medium that possesses an intrinsic proclivity for informational osmosis. This paradigm shift necessitates a cognitive recalibration vis-à-vis our conception of data storage, transcending the rigid confines of block-centric thinking and embracing a more fluid, quantum-superposition-esque approach where data simultaneously exists and doesn't exist until observed by a compatible storage entity. It's akin to Schrödinger's data, if you will, existing in a probabilistic limbo until it collapses into a deterministic state within a receptive vessel, thus resolving the paradox of storing the un-storable through a metaphysical sleight of hand.

halcyon hemlock
#

Or like you mean when you're tryna shove data into blocks that are straight up not having it, you gotta pivot and find something that's actually down to clown with your bits and bytes. It's all about matching your info with a storage solution that's on the same wavelength, you know? No point in trying to teach a rock to swim when you've got perfectly good boats available. Just use your noggin, pick a data home that's actually built for the job, and boom - problem solved without breaking a sweat or bending the laws of physics.

blazing ocean
#

what

peak depot
blazing ocean
river oracle
#

its english

#

get gud

halcyon hemlock
# halcyon hemlock Or like you mean when you're tryna shove data into blocks that are straight up n...

Or you could say it's like trying to cram your entire Minecraft inventory into a chest that doesn't exist. Instead of banging your head against an invisible wall, just craft a real chest and toss your stuff in there. It's about finding the right data structure that can actually handle your information. No point in trying to store player stats in thin air when you've got perfectly good databases and config files at your disposal. It's just about using the tools the game (or in this case, the server) actually gives you, rather than trying to invent some wild new storage method out of thin air.

halcyon hemlock
#

I'm just like that

#

(im not)

ebon hawk
#

Hello, I am new to programming plugin and I want to know how to retrieve the update verification link for my plugin?

pseudo hazel
#

what do you mean by update verification link

hybrid turret
#

when using the 7's data handling guide with PlayerData, loaded on Join and unloaded onQuit, i suppose /reload should not be used anymore because the PlayerData will not be loaded anymore, right?

#

(or kick everyone onDisable i guess)

pseudo hazel
#

why

#

im not familiar with that method

#

but if its just listening to player join and leave events

#

reloading wouldnt make a difference?

slender elbow
#

reload 💀

hybrid turret
#

this is loaded with the AsyncPlayerPreLoginEvent

#

and unloaded with the PlayerQuitEvent

#

and since reload does not kick players (and therefore won't load the data again when they join) playerDataManager.get(player.getUniqueId()) will be null

slender elbow
#

or you can just load the data for all online players in onEnable, but also just don't reload, it's hideous and dreadful

hybrid turret
#

kicking all onDisable does work

hybrid turret
#

i don't need the data of a player loaded who is offline

#

I have my ServerData for that

slender elbow
#

load data of online players

#

not all data of all players of all time

hybrid turret
#

oh right

umbral ridge
#

Online prayers

hybrid turret
#

i can't read lol

umbral ridge
#

My cat cant read too

pseudo hazel
#

you need to load all online players on startup, as you dont want to desync them anyways

hybrid turret
#

not reloading, huh?

it's so annoying tho to restart the server every time xd

pseudo hazel
#

I mean this would probably only be an issue with reloading

hybrid turret
hybrid turret
#

and well

#

kicking everyone onDisable

#

fixes that

#

lol

umbral ridge
#

Lol

pseudo hazel
#

thats 1 second away from restarting the server

slender elbow
#

and breaks other plugins' expectations that players are online during disabling

hybrid turret
#

restarting takes so much longer

umbral ridge
#

Breaks emily betterjails

#

😸

hybrid turret
pseudo hazel
#

I would not kick players in any case

#

unless you are a ban plugin

hybrid turret
#

i kick players on my stop command since the PlayerQuitEvent is not called when the server is stopped

slender elbow
hybrid turret
#

why would plugins do that?

pseudo hazel
#

to save their player data maybe?

slender elbow
#

because that has been the behaviour for over a decade

hybrid turret
#

biggest thing is that it handles all data with DB and the ...Data thing... so, caching

hybrid turret
slender elbow
#

¯_(ツ)_/¯

#

i know people here and in other discord servers have asked about that and for whatever they do, they end up relying on that

#

but unfortunately i don't know every plugin to have ever existed that does that

hybrid turret
#

uhm

#

i just thought about something

#

which would be

#

very

#

uhm

#

wonky

#

what if i call the PlayerQuitEvent onDisable? lmao

slender elbow
#

saving player data in onDisable for online players as well?

hybrid turret
#

or that

#

that would make sense

slender elbow
#

just call the same method, creating and calling server events is not supported api

hybrid turret
#

oh

pseudo hazel
#

kicking players would call quitevent though right

#

or was that the goal with kicking the players

hybrid turret
#

yes

pseudo hazel
#

okay

hybrid turret
#

because the data is loaded with prejoin and unloaded with quit

pseudo hazel
#

then why not act like you kicked all players in your ondisable

hybrid turret
#

so essentially

#
Bukkit.getOnlinePlayers().forEach(player -> this.plugin.getPlayerDataManager().unloadData(player.getUniqueId()));
#

i guess

umbral ridge
#

Yies

pseudo hazel
#

yeah

#

that seems like the most reasonable thing

hybrid turret
#

i mean yeah, that makes sense

#

thanks

#

works

#

nice

slender elbow
#

epic

hybrid turret
#

frfr

peak depot
tender shard
#

idk why I made this but it looks fancy (it creates a text representation of any class)

copper spade
#

Hello I am working on updating a plugin for 1.21.1 rather than 1.20

I have found why it breaks, this should have the following
Bukkit.getServer().getClass().getPackage().getName() -> org.bukkit.craftbukkit.v1_17_R1

Although it seems the newer versions dont give the v<version> part.

Anyone got any ideas what this has been replaced with? I might be completely wrong

tender shard
# copper spade Hello I am working on updating a plugin for 1.21.1 rather than 1.20 I have foun...

Hi there! Today I’m going to explain how to setup a multi-module project using maven to support different NMS versions. Important notes about this tutorial: Every step will have detailled screenshots using IntelliJ. I explicitly chose not to include everything as copy/pastable source code, but normal screenshots (you can click on them to show th...

copper spade
#

Thank you 🙂

alpine cairn
#

Hello! I am looking to create a method on a listener for the PlayerMoveEvent that checks if the player hit the "W,A,S, or D" keys by comparing the direction the player moves to the direction the player is looking. I found this code but I don't know what "friction" or "MathPlus" are. Does anyone have any ideas?

//"e" is an instance of some move event.
double dX = e.getTo().getX() - e.getFrom().getX();
double dZ = e.getTo().getZ() - e.getFrom().getZ();
dX /= friction; //get block 1 below the player. friction = (onGround ? nmsblock.frictionFactor * 0.98 : 1 * 0.98)
dZ /= friction;
dX -= p.getVelocity().getX(); //Player#getVelocity() is broken. Make your own Player class.
dZ -= p.getVelocity().getZ();

Vector accelDir = new Vector(dX, 0, dZ); //horizontal acceleration direction
Vector yaw = MathPlus.getDirection(e.getTo().getYaw(), 0);

boolean vectorDir = accelDir.clone().crossProduct(yaw).dot(new Vector(0, 1, 0)) >= 0;
//This dot step is necessary since Bukkit's angle implementation is broken. Sometimes it will
//return NaN due to floating point precision error.
double dot = Math.min(Math.max(accelDir.dot(yaw) / (accelDir.length() * yaw.length()), -1), 1);
double angle = (vectorDir ? 1 : -1) * Math.acos(dot);

//Now you want to check if angle is a multiple of (Math.PI / 4)
//0.0 = W
//pi/4 = WD
//pi/2 = D
//3pi/4 = SD
//pi = S
//-pi = S
//-pi/4 = WA
//-pi/2 = A
//-3pi/4 = SA

chrome beacon
#

so why do you want to do that

#

Checking it in the move event is very unreliable

alpine cairn
#

Is there a better way to do it?

chrome beacon
#

Making the player ride something would probably work better

#

not sure what movecraft is though

chrome beacon
alpine cairn
#

I did see that but it is not ideal

chrome beacon
#

how so?

alpine cairn
#

Ideally the player could just do it from anywhere with a command

chrome beacon
#

and how is it more ideal to not have the player ride anything

#

You can just spawn something for the client to ride

alpine cairn
#

Is it only boats, minecarts, horses, and pigs, or would an armor stand work?

chrome beacon
#

I believe armor stands work

copper spade
#

Long shot, but doesnt anybody understand what on earth this is

V1_20(20, null, "b", "e", "c", "d", 89, 38, null, null, "B", "a", "g") {
@Override
public String getWatcherFlags() {
return versionMinor < 2 ? "an" : "ao";
}

             @Override
             public String getGuardianTypeName() {
                 return versionMinor < 3 ? "V" : "W";
             }

             @Override
             public String getSquidTypeName() {
                 return versionMinor < 3 ? V" : "W";
             }

What do these random valyes like "an" : "ao", V" : "W", V" : "W" correspond to? I am brand new to this and it just looks like jibberish

chrome beacon
#

I haven't done it myself before

blazing ocean
#

sounds like obfuscated field or class names

#

?mappings

undone axleBOT
chrome beacon
#

^^

#

Yeah obfuscated method/fields

alpine cairn
tardy delta
#

another cute one

copper spade
#

I fixed the versioning issue but now stuck on that lovely bit 😂

copper spade
chrome beacon
#

PacketEvents or ProtocolLib would probably be the easiest way to

echo basalt
peak depot
echo basalt
#

prob

#

but not everyone has seen it

worthy yarrow
#

I only remember the weird ass slide one

shadow night
#

Huh what are those lasers, display entities?

echo basalt
#

yes

peak depot
#

Why is maven such a bitch

tardy delta
peak depot
#

lags go brrr

echo basalt
#

not that hard

tardy delta
#

idk never used display entities, probably a simple aabb operation

#

looks like the last api version i used was 1.16

twin venture
#

Hello , how i can get Morphia to work on 1.8 java?

copper spade
hybrid turret
#

this stupid fucking skin changer thing

#

it just won't work ffs

#
  public static void applySkin(ServerCore plugin, Player player, String skinURL) {
    ServerPlayer nmsPlayer = getNmsPlayer(player);

    broadcastPacket(new ClientboundPlayerInfoRemovePacket(List.of(nmsPlayer.getUUID())));

    PlayerProfile playerProfile = player.getPlayerProfile();

    PlayerTextures textures = playerProfile.getTextures();

    try {
      textures.setSkin(new URL("https://textures.minecraft.net/texture/" + skinURL));
      // (playerProfile.setTextures(textures);) doesn't work with and without
    } catch (MalformedURLException e) {
      plugin.getLogger().log(Level.SEVERE, "Could not set skin", e);
    }

    broadcastPacket(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER, nmsPlayer));

    ServerLevel nmsWorld = nmsPlayer.getLevel();

    ClientboundRespawnPacket respawnPacket = new ClientboundRespawnPacket(
      nmsWorld.dimensionTypeId(),
      nmsWorld.dimension(),
      BiomeManager.obfuscateSeed(nmsWorld.getSeed()),
      nmsPlayer.gameMode.getGameModeForPlayer(),
      nmsPlayer.gameMode.getPreviousGameModeForPlayer(),
      nmsWorld.isDebug(),
      nmsWorld.isFlat(),
      ClientboundRespawnPacket.KEEP_ALL_DATA,
      Optional.empty()
    );

    sendPacket(player, respawnPacket);

    player.updateInventory(); // Update the player's inventory because it will be empty after the respawn

    Bukkit
      .getOnlinePlayers()
      .forEach(onlinePlayer -> {
        onlinePlayer.hidePlayer(plugin, player);
        onlinePlayer.showPlayer(plugin, player);
      });
  }
#

that's my current code and i don't fucking get it anymore ._.

#

Can I get a SkinURL by player name?

dapper flower
#

after the 1.20.6 api changes are 1.20.6 plugins compatible with previous versions or it breaks it straight up?

quartz gull
#

check the release, MD-5 usually says if it does

slender elbow
#

plugins are generally not backwards compatible

pseudo hazel
#

yeah you can play with older plugins on newer servers usually

#

but it also depends on the plugin

copper spade
#

I fix one problem and then get to another roadblock!

Any ideas anyone
[19:38:24 WARN]: java.lang.NoSuchMethodException: net.minecraft.network.syncher.SynchedEntityData.<init>(net.minecraft.world.entity.Entity)

tender shard
chrome beacon
#

^^

paper viper
#

?nms

paper viper
#

Use the remapping plugin or use paperweight

peak depot
#
        for (int i = 0; i < 3; i++) {
            c1.add(0, i, 0).getBlock().setType(Material.GLOWSTONE);
            c2.add(0, i, 0).getBlock().setType(Material.GLOWSTONE);
            c3.add(0, i, 0).getBlock().setType(Material.GLOWSTONE);
            c4.add(0, i, 0).getBlock().setType(Material.GLOWSTONE);
        }
``` why tf does that code result in this
#

like with that 1 block gap

chrome beacon
#

check the floating point precision

peak depot
# chrome beacon check the floating point precision
 // Define the corners of the region (16 blocks in each direction)
        BlockVector3 min = BlockVector3.at(loc.getBlockX() - size, -64, loc.getBlockZ() - size);
        BlockVector3 max = BlockVector3.at(loc.getBlockX() + size, 320, loc.getBlockZ() + size);

        Location c1 = player.getWorld().getHighestBlockAt(min.getX(), min.getZ()).getLocation().add(0, 1,0);
        Location c2 = player.getWorld().getHighestBlockAt(min.getX(), max.getZ()).getLocation().add(0, 1,0);
        Location c3 = player.getWorld().getHighestBlockAt(max.getX(), min.getZ()).getLocation().add(0, 1,0);
        Location c4 = player.getWorld().getHighestBlockAt(max.getX(), max.getZ()).getLocation().add(0, 1,0);

        if(!c1.getChunk().isLoaded())
            c1.getChunk().load();
        if(!c2.getChunk().isLoaded())
            c2.getChunk().load();
        if(!c3.getChunk().isLoaded())
            c3.getChunk().load();
        if(!c4.getChunk().isLoaded())
            c4.getChunk().load();

        for (int i = 0; i < 3; i++) {
            c1.add(0, i, 0).getBlock().setType(Material.GLOWSTONE);
            c2.add(0, i, 0).getBlock().setType(Material.GLOWSTONE);
            c3.add(0, i, 0).getBlock().setType(Material.GLOWSTONE);
            c4.add(0, i, 0).getBlock().setType(Material.GLOWSTONE);
        }
```  thats my code and min.getX() is an int so there should be none shoud it?
echo basalt
lunar current
#

Is there a way to use System.setIn() but for the console?

#

Could be fun to rewrite the console :)

copper spade
chrome beacon
#

If you wanted to add support for a new version you need to ensure that you gave it the obfuscated values and not the mojang mapped ones

copper spade
#

Reflection requires a reflection-remapper fir 1.20.5 onward.

This is fun 😶 I shall wait for developers to update themseleves in future, out of my depth. Thanks for the help anyway.

noble current
#

hello, can anyone help me with this issue? java.lang.NoClassDefFoundError: net/dv8tion/jda/api/hooks/ListenerAdapter

hazy parrot
#

You have to shade jda

noble current
hazy parrot
#

Or use library feature

chrome beacon
#

^^

noble current
#

i found a plugin but it says that

#

you can repair it?

#

if i send the jar file

hazy parrot
#

Lol

chrome beacon
#

?services

undone axleBOT
chrome beacon
#

^^ you can hire someone to fix the plugin for you

noble current
#

ok

#

how much it cost

chrome beacon
#

depends on the developer

noble current
#

but it is hard to do my issue?

echo basalt
#

afaik no

humble tulip
#

I have a free tool that can technically probably fix it for u

chrome beacon
#

That error no

echo basalt
#

winrar is a thing

chrome beacon
#

but if that error is happening something else is most likely also wrong

noble current
#

um

tardy delta
echo basalt
#

no

tardy delta
#

gotta be asked

noble current
#

i took the source from github and put it in eclipse ide

chrome beacon
#

such as you trying to run on an older version than supported

chrome beacon
noble current
#

the server load the plugin but it says that error

chrome beacon
#

you compiled it wrong

tardy delta
#

i know someone that pays for sublime but not for winrar

noble current
echo basalt
#

mans not shadowJaring it

chrome beacon
#

What plugin are you compiling

echo basalt
#

what's the github repo

humble tulip
#

Download jda. Jar from github

chrome beacon
#

The git name :kekw:

tardy delta
#

creditos para todos
lemme guess

echo basalt
#

jda 4.3 my love

humble tulip
#

And open a zip editor

hazy parrot
#

Oof

worthy yarrow
#

What a readme

humble tulip
#

Lmao

echo basalt
noble current
noble current
echo basalt
#

sure

chrome beacon
#

They're most likely using artifacts/eclipse equivalent

#

and not maven

#

to compile it

echo basalt
#

I see a pom.xml

chrome beacon
#

Yeah user error

humble tulip
#

But they're not using it

noble current
#

it doesn't let me to send photos

chrome beacon
#

?img

undone axleBOT
#

Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.

Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org

tardy delta
#

commit kill bot uwu

noble current
#

ok

#

!verify

undone axleBOT
#

Usage: !verify <forums username>

noble current
#

!verify Dakarem

undone axleBOT
#

A private message has been sent to your SpigotMC.org account for verification!

hazy parrot
#

I like the last commiter name

echo basalt
#

this code is ass btw

#

me when

tardy delta
#

what the

#

hey i found this today, dunno what to think of it

hazy parrot
#

If it works it works shrugging

humble tulip
noble current
#

this show eclipse ide

humble tulip
#

How are you building?

hazy parrot
#

Idk even how they come up with those specific magic values lol

noble current
humble tulip
#

Right

noble current
#

i clone url

humble tulip
#

But how do you build the jar file

noble current
#

export jar file

humble tulip
#

Nope

tardy delta
humble tulip
#

You need to build with maven

noble current
#

eclipse can do it?

#

or i need to install maven

humble tulip
#

Yes

#

Eclipse has maven

#

I thini

noble current
#

but how i build it

humble tulip
#

I don't use eclipse

#

I use intellij

tardy delta
#

good

noble current
#

i can download it

humble tulip
#

Send q screenshot of your entire screen

#

I'm sure it's there somewhere

noble current
tardy delta
#

first one to find it gets a cookie

noble current
#

yes

tardy delta
#

around here maybe

noble current
humble tulip
#

Click the dropdown

noble current
#

which

humble tulip
#

Run

noble current
#

as maven build?

hazy parrot
#

Where are eclipse boomers rn

humble tulip
#

Yes

noble current
echo basalt
#

me when I can run mvn clean install on the console and fuck off

humble tulip
#

Your goal is mvn clean package

#

Or clean package

noble current
#

um

#

its hard for me to understand

humble tulip
#

In goals

#

Type clean package

noble current
#

i can download intellij if its easier for you

humble tulip
#

Then run

noble current
#

where is goals

humble tulip
#

In that screenshot u sent

#

It's a text field

noble current
#

oh i see

echo basalt
#

it's quicker to run a single command than to do all this craze wackeroo

noble current
#

you did it?

echo basalt
#

yeah I just cloned and mvn clean package

noble current
#

you are my hero

#

and you too @humble tulip for help

echo basalt
#

if you were to hire someone, hire them to properly build the plugin instead of inserting jda somewhere

humble tulip
#

Isn't jda 4.0 outdated tho?

echo basalt
#

so is 1.17

#

updating jda and making sure all of the legacy API is properly ported over takes more effort than just running a command and waiting 17 seconds

noble current
#

i can pay a minecraft premium account lol

echo basalt
#

don't have like 5$ on paypal or something?

noble current
echo basalt
#

rip

noble current
#

it close my server

#

when i open it

echo basalt
#

blame the dev

noble current
#

oh

#

i think it is because i dont have world edit

#

ERROR: java.lang.NoClassDefFoundError: com/sk89q/worldedit/WorldEditException

tardy delta
#

this dev really did a great job, but itsnt that supposed to be provided as plugin?

noble current
#

and the owner make the source public