#help-development

1 messages Β· Page 2228 of 1

jade perch
#

I remember making a neural network to detect movement hacking

humble tulip
#

Hence why i said they're masochists

subtle folio
jade perch
#

Then I'd only store the network weights so the hackers couldn't see the src of the check

jade perch
subtle folio
#

get out

humble tulip
#

I always wanted to do ml stuff

jade perch
#

but really fun

lyric grove
#

yeah it's going to be a big undertaking, did that anticheat run off netty by any chance?

sterile token
#

Alternative for BlockPlaceEvent#getItemInHand()?

lost matrix
#

And they injected a netty pipeline ofc. In 1.8 it is really important to check TCP sandwitches and packet order.

#

They also sent ICMP packets to the client to detect lag spoofing

lyric grove
lost matrix
#

And i dont think they used any spigot events at all. It was all protocol based.

lyric grove
#

ah

humble tulip
#

In general

lost matrix
sacred schooner
jade perch
lost matrix
#

Other than that ?stash is the gateway

#

?stash

undone axleBOT
sacred schooner
sacred schooner
lost matrix
#

?contribute

lost matrix
#

If you want to fork spigot then you should take a look here

sacred schooner
#

ah okay, thanks a lot

brittle lily
#

?paste

undone axleBOT
lethal roost
#

bit crap at java, how do i fix this?

tall dragon
#

by getting an instance to your main class

#

and calling that method on that

humble tulip
undone axleBOT
lethal roost
#

so uh... what's going on here?

tall dragon
#

its final

#

you need to initialize it

river oracle
#

its final which means you have to initialize it to null immediately so you get a ton of errors

ivory sleet
# lyric grove impressive, how did it send the processed data back? using redis?

In spite of redis popularity concerning pub/sub, it isn’t what it really is nor was intended for initially, kafka, rabbit or sth like active is much more horizontally scalable in the long term if you need an event service of some sort

(Hazelcast can process high throughput so it is scalable enough, probably more than redis, and when j19 with virtual threads/fibber releases it’ll be even more powerful)

humble tulip
neat maple
#

Can anyone tell me how to get to these methods in 1.19?

import net.minecraft.world.item.ItemStack;
ItemStack nmsItemStack = null;

&

import net.minecraft.nbt.NBTTagCompound;
NBTTagCompound compound = new NBTTagCompound();
humble tulip
#

Which methods?

neat maple
#

I mean variables xD

river oracle
#

how do you get the variables

#

you make them

#

by assigning them to values

neat maple
#

net.minecraft was removed completely now the question is how I can use this again or differently

river oracle
lethal roost
ivory sleet
#

Using moj maps is almost a prerequisite when developing nowadays ^

neat maple
#

is it available via maven or do i have to compile it myself

river oracle
#

the same way you did for 1.18

neat maple
#

This is in the current post on spigot but this does not work

<dependency>
    <groupId>org.spigotmc</groupId>
    <artifactId>spigot</artifactId>
    <version>1.19-R0.1-SNAPSHOT</version>
    <classifier>remapped-mojang</classifier>
    <scope>provided</scope>
</dependency>
river oracle
neat maple
ivory sleet
#

Early access

sterile token
#

?tools

#

?buildTools

#

?status

ivory sleet
#

?bt

undone axleBOT
sterile token
#

Oh thanks

sterile token
ivory sleet
#

Sure

#

?buildtools

undone axleBOT
ivory sleet
#

@sterile token

sterile token
#

Allright thanks

lost matrix
humble tulip
#

Java 19 wot

tender shard
ivory sleet
tender shard
#

you should create a grindr profile and meet some dudes if you really want to support it lol

minor otter
#

Don't mean to necroreply but do you mind sharing how you did it πŸ˜…

modest garnet
#

Can someone give me a project, anything just trying to improve

ocean lion
#

if (!player.hasPermission(Hub.instance.getConfig().getString("lockchat.bypass_permission") && commandLockchat.globalmute) {

    }
#

it says && cannot be in a boolean BUT

#

I have used this line of code before and worked perfectly

#

Is it maybe spigot api updated?

ivory sleet
river oracle
#

spigot API has nothing to do with java πŸ‘€

ocean lion
#

xD

river oracle
#

&& has nothing to do with spigot

ocean lion
#

but could you please help me figure out why

tender shard
ocean lion
#

Still the error. I understand the error but what I dont understand is that ive been using that same exact line in another code and it worked

iron glade
#

where did you put the ) ?

quaint mantle
#

no

#

hes doing String && boolean

river oracle
#

he's missing a ')'

quaint mantle
#

that too

ocean lion
#

I took ) into

#

still the error

river oracle
#

player.hasPermission(Hub.instance.getConfig().getString("lockchat.bypass_permission")

quaint mantle
#

?learnjava

undone axleBOT
river oracle
#

i'll give you a minute

ocean lion
#

but again, why did it work before and not now

quaint mantle
#

because it isnt valid java syntax

river oracle
#

syntax errors are so easy to fix I don't think anyone is gonna sit here and tell you considering your IDE and compiler should tell you exactly where your missing the syntax at

ocean lion
#

I KNOW

quaint mantle
#

Player#hasPermission is a boolean, they are just missing an extra )

iron glade
#

^

ocean lion
iron glade
#

told ya just a ) missing lmao

iron glade
river oracle
#

just watch

ivory sleet
#

Any% speed run πŸ‘€

river oracle
#

so

pliant oyster
#

Lmao

river oracle
#

its possible

#

I have 10 monitors 3 keyboard and mouses all hooked up to seperate computers I actually had surgery to add multiple extra hands to my body and segmented my brain in a fashion where I can concentrate on 3 things at once at max mental capacity which is a 333.33x developer. So I end up being a 1000x dev

dusk flicker
#

wow

river oracle
#

Now you may be wondering how many IQ points do I have that I can do this. Well I've taken multiple online IQ test to confirm my IQ is greater than the range they can test. Its so high they can't evne place me on the bell curve

tender shard
#

if you do 2 iq tests and both result in 80 points, you now have 160 IQ

#

its basic math

river oracle
#

I've done so many online IQ tests that My IQ is growing

#

I actually sometimes set up a monitor to take IQ tests so I can gain more IQ

tender shard
#

i hire people to do the iq tests for me

vocal cloud
#

You have to say you're Mensa so you can sound like an arrogant jerk Kek

tender shard
#

true

river oracle
#

Mensa actually won't let me in because I'm so much smarter than all of the other members they were scared it would make mensa less welcoming to the other arrogent jerks

tender shard
#

idk about english but in german mensa is also the word for the place where university students go to eat food

vocal cloud
#

I'm pretty sure this guy is trolling but he's a mod and he's very obnoxious

river oracle
#

As a mensa

#

I'm in mensa

vocal cloud
#

As a Capri sun

river oracle
#

Yea btw guys I scored an IQ score that could get me into mensa but I rejected the offer

eternal oxide
#

Clearly not in Mensa

river oracle
#

as a mensa

#

As a mensa that guy clearly isn't in mensa

vocal cloud
#

Btw idk about you guys but if I joined a group and google looked like

tender shard
#

my google only shows places to eat

vocal cloud
#

mensa is

river oracle
#

All its good for is food anyways

tender shard
#

still only about food lol

vocal cloud
#

essen gesund ja

compact haven
#

mensa is a group of people with planet-level IQs that will be worn out by their parents before they reach college

iron glade
#

how much to get into mensa? 130?

compact haven
#

a lot more than that

#

oh all right

tender shard
vocal cloud
#

They claim you need to be in the top 2% of IQ's

compact haven
#

not much more, a few points it would seem

vocal cloud
#

Although you can cheat your way in apparently

compact haven
#

I mean IQ tests aren't perfect lol

#

very far from

vocal cloud
#

IQ tests are a very poor method of determining intelligence

willow widget
#

Any ideas on how to cancel the mechanic of villager -> witch? πŸ€”

#

so far I've thought about

public void onEntityTransformEvent(EntityTransformEvent event) {
        if(event.isCancelled()
        || (TownyAPI.getInstance().isWilderness(event.getEntity().getLocation()))
        || !(event.getEntity().getType().compareTo(EntityType.VILLAGER) == 0))
            return;
        TownBlock tb = TownyAPI.getInstance().getTownBlock(event.getEntity().getLocation());
        if(!tb.getPermissions().mobs) {
            event.setCancelled(true);
        }
    }

(it has some stuff from Towny but that already works ||i think|| so dw)
But it just despawns the villager without spawning the witch xd
idk how to keep the villager in there

river oracle
#

granted this thread is outdated

eternal oxide
willow widget
willow widget
#

actually I'll just delete the towny thingies

river oracle
#

you could fiddle with the LightningStrikeevent

#

or the EntityDamageEvent

willow widget
river oracle
#

unsure how the mechanics are implemented

#

if that doesn't work you'd need to check out NMS

willow widget
#

what is NMS? xd

river oracle
#

net.minecraft source code

#

its a pain in the ass

willow widget
#

oh

river oracle
#

its a last resort if the API doesn't contain what you need

#

and no other sources have solved the issue

vocal cloud
#

Does canceling the lightning damage fix it?

willow widget
#

not sure, will try the 2 options

river oracle
vocal cloud
#

I imagine it should since they technically it's the damage from source lightning that causes the transformation

willow widget
#
@EventHandler
    public void onEntityDamageEvent(EntityDamageEvent event) {
        if(event.getCause().equals(DamageCause.LIGHTNING)) 
            event.setCancelled(true);
    }

should be enough right?

#

nope, actually it does nothing xd it literally just cancels the damage

#

and doesnt work for pigs either

echo basalt
#

not really pain in the ass

willow widget
#

what's the actually link? xd

#

oh wait

#

I just looked it up

willow widget
#

ty, actually was wondering if that was the right way of comparing xd

#

You can see I did !(event.getEntity().getType().compareTo(EntityType.VILLAGER) == 0)) above xd

echo basalt
#

compareTo lmao

#

don't

#

boolean isStoneBread = Material.STONE == Material.BREAD;

#

that's how you compare enums

willow widget
#

yeah xd

#

I changed it to (event.getEntityType() == EntityType.VILLAGER)

#

Guess who forgot to register the Event 🀑

#

omg I'm so dumb

#

yeah my code worked before lol

#
    @EventHandler
    public void onEntityTransformEvent(EntityTransformEvent event) {
        if(event.isCancelled() || !(event.getEntityType() == EntityType.VILLAGER)) return;
        event.setCancelled(true);
    }

That is good enough lol

vocal cloud
#

That's what I thought

worthy yarrow
#

I'm getting a console error saying that my plugin is out of date, even though I wrote it in the same api version as my server is running

quaint mantle
#

show your plugin.yml

worthy yarrow
#
version: '${project.version}'
main: treposts.ne.nuclearkat.main.Ne.NuclearKat.Main
api-version: 1.19
authors: [ NuclearKat ]
description: Trailor repost rewards
commands:
  tr:```
sharp flare
#

What spigot version u using as dependency

dusk flicker
#

what is that plugin name

worthy yarrow
#

I messed up with this project so the name is what the package is supposed to be called,

river oracle
#

you can just

#

change it

worthy yarrow
#

spigot is 1.18.2 I believe

sharp flare
#

Change the api version

#

In your plugin.yml

worthy yarrow
#

alright

sharp flare
#

You can even go lower since its backwards compatible

iron glade
#

Is there a way to set the same tab completer for several commands without doing getCommand("command")setTabCompleter(...); for all of them?

eternal oxide
#

I generally make a base TabExecutor class, then extend it for every command I want

#

have a standard tab completer in your BaseCommand

#

then override in any special cases

iron glade
#

alright thanks

humble tulip
#

u dont need xampp i think

vocal cloud
#

Get xampp off your system what the heck

#

Xampp is gross 🀒

lone flint
#

How would i iterate over multiple values in a yaml list that is laid out like this:

abilities:
  -
    name: Ability
    description: Placeholder Description
  -
    name: Ability 2
    description: Placeholder Description
#

im completely lost and dont know what to type as the question for google because i keep finding unrelated problems

eternal oxide
#

thats not valid yaml

lone flint
#

supposedly it is

#

i cant believe w3schools lied to me

#

i feel betrayed

humble tulip
#

dont do it like that

lone flint
#

what would the correct yaml be

#

i have a list of abilities with a bunch of values under it

humble tulip
#
abilities:
  ability1:
    name: Ability
    description: Placeholder Description
  ability2:
    name: Ability 2
    description: Placeholder Description
eternal oxide
#

well a yaml validator says its valid, but I'd question it

humble tulip
#

like that

eternal oxide
#

that is correct ^

humble tulip
#

then u can do config.getConfigurationSection("abilities").getKeys(false)

#

which will give you a set that contains ability1 and ability2

#

u can use those in a loop to load each ability

lone flint
#

sure

tawny otter
#

How could I make my Spigot Plugin send data to my Bungeecord Plugin?

delicate lynx
#

use the messaging channel

tawny otter
#

= (

delicate lynx
#

as in, bungeecord plugin messaging channel

#

or whatever it's called

tawny otter
#

I know

quaint mantle
#

getLogger logs it

eternal oxide
#

first one goes through the logger, second one straight to java console

quaint mantle
#

println prints it

viscid wharf
#

https://pastebin.com/mG0d54zC
bungee.chat.ComponentSerializer.parse got exception when parsing a json sent to players to BaseComponents.
when ACTION in CLICKEVEVT is empty, this will occur.

quaint mantle
#

it logs it to the log file

eternal oxide
#

not a lot

quaint mantle
#

but it also prints it to the console

#

if you're just debugging

#

println is fine

#

just make sure it doesnt end up in production code

humble tulip
#
<relocation>
    <pattern>com.zaxxer.hikari</pattern>
    <shadedPattern>me.saif.backpackplus.hikari</shadedPattern>
</relocation>
#

should i do that^

quaint mantle
#

whats the point

#

i dont get why people do relocations

humble tulip
#

i actually faced an issue where my plugin had an older version of a lib

#

and another i was testing had a newer version

#

the newer one kept throwing exceptions

#

cant rem what exception

#

did a relocation and fixed

iron glade
#

does sender.getName() return anything for console?

quaint mantle
#

probably

#

CONSOLE

iron glade
#

okay

#

Is there a way to force my tab completions for a command?

#

as another plugin has the same command and its tab completions override mine

#

just found out by accident lol

eternal oxide
#

all your commands should really be prefixed with your plugin name

#

like /we for worldedit

iron glade
#

and add it without the prefix as alias?

#

ah got it

worthy yarrow
#

How would I make a console send a command on a gui click event?

eternal oxide
#

anywhere you can use an API to perform actions, but Bukkit.getConsoleSender I think

worthy yarrow
#

Would I just send it like a string?

#

for example: ("/mcrate give <player> june 1")

eternal oxide
#

its console so no /

worthy yarrow
#

alright cool

#

I'm having a bit of trouble with the gui protection as well, I dont want people taking items out or putting them in

eternal oxide
#

cancel both the click and drag events

worthy yarrow
#

I've got a switch statement for a one row gui, would I set it cancelled there?

eternal oxide
#

InventoryClickEvent and InventoryDragEvent

scarlet frigate
#

Is there a way I can have a custom resource pack on my server but have it only apply to certain players?
(like a plugin or setting or something like that) (The server is version 1.19 spigot)

eternal oxide
buoyant viper
humble tulip
buoyant viper
#

i can understand why it would be good practice

eternal oxide
#

it keeps your commands unique and under your plugin

#

aka /lp for LuckPerms, /we for worldedit, /wg for worldguard

humble tulip
#

alrenatively you can make your plugin assert it's dominance by registering commands 1 tick after the server starts and remove anything frmo the commandmap that conflicts with ur plugin

buoyant viper
#

altho it does have its alt cmds

#

like /e<command>

eternal oxide
#

essentials is really old though. before there was any conventions

#

people were just throwing things at the wall and seeing what stuck

tawny otter
#

how do I make a placeholder for my Spigot plugin

quaint mantle
#

like for placeholderapi?

tawny otter
#

Yeaper

#

the API usage page and other tutors only mention how you could use other Placeholders within your plugin, but not how to make your own placeholders

#

nevermind, I got it

noble forge
#

@minor otter you listen for the event and check if it has to do with leaves and then cancel it

solid cargo
#

How could i disable players from writing /server <server> until told otherwise?

smoky oak
#

you cant, however, you can change the response the server gives

solid cargo
#

Ahh. How could i do that?

smoky oak
#

should be by editing the onCommand method of whatever that /server command is

solid cargo
#

Ok will check later

wide coyote
#

sending json messages is not a part of api

#

you can use nms

wide coyote
harsh totem
#

after debugging i noticed that when i setCurrentItem() nothing happens. any ideas?

    public void tradeGet(InventoryClickEvent event){
        if (event.getClickedInventory().getHolder() instanceof Villager && event.getSlot() == 2){
            event.setCurrentItem(getRandomItem());
        }
    }```
#

getRandomItem() does work and it does return an itemstack

#

I was debbuging like this:

    public void tradeGet(InventoryClickEvent event){
        if (event.getClickedInventory().getHolder() instanceof Villager && event.getSlot() == 2){
            ItemStack item = main.getRandomItem();
            System.out.println(item);
            System.out.println(event.getCurrentItem());
            event.setCurrentItem(item);
            System.out.println(event.getCurrentItem());
        }
    }```
and I got this:
```[10:24:00 INFO]: ItemStack{GOLD_BLOCK x 17}
[10:24:00 INFO]: ItemStack{BREAD x 6}
[10:24:00 INFO]: ItemStack{BREAD x 6}
wide coyote
#

unload and delete the file

hybrid spoke
#

?notworking

undone axleBOT
#

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

chrome beacon
#

Why are you using unmapped

#

Well yeah

#

Read the 1.19 spigot release post or find mfnalex web guide for it

wide coyote
#

idk whats the problem but shouldnt you call the event before the cancelled check

wide coyote
#

and what is the problem exactly?

vital trout
#

Hi, someone knows how to get the precise health value of a player ? getHealth() method returns a rounded value and it's not what i'm looking for

grim oak
#

I need to store cooldowns for users on the server for the plugin, so to store it i think ill use sqlite (which i havent used before so im new to it) but what do i do when creating a table if i dont know how many records there will be, do i have to predefine the size?

chrome beacon
#

getHealth shouldn't be rounded

vital trout
#

didn't think about it thanks

chrome beacon
#

The attribute is for max health

#

not actual health

tender shard
#

but for simple things like cooldowns, why not just use the player's PDC?

chrome beacon
#

You're using Max health to get real health????

#

There is no health attribute

vital trout
chrome beacon
#

hm interessting

vital trout
#

But you can take like 1% or 2% of damage sometimes

smoky oak
#

well you still take that damage

#

iirc that adds up

vital trout
#

yep but it's not showing with that method

chrome beacon
#

I guess you could go for NMS

vital trout
#

maybe but i'll try with attribute maybe i can do with that

#

didn't try

chrome beacon
#

CraftPlayer is the implementation of Player

#

Player is just an interface

#

So when you use it in your code there is no difference

#

I mean they might be on a fork which rounds health

#

speed

#

DiggerItem

#

which ShovelItem, PickaxeItem etc extend

#

Don't screenshot code

#

also sent the entire class in a paste

earnest forum
#

we need context

chrome beacon
#

?paste

undone axleBOT
smoky oak
#

ur prob in the wrong scope

chrome beacon
#

the NMS itemstack does have getItem

hybrid spoke
#

probably a { too much or a } left somewhere

smoky oak
#

correction definitively

#

i recall that error

chrome beacon
#

How are you building your plugin

#

Make sure you're actually using maven

#

so it remaps back

hybrid spoke
#

?paste

undone axleBOT
chrome beacon
#

That's your pom

#

Why are you putting a method in a another method

#

Also haven't we told you like 100 times to learn some basic java before spigot

grim ice
#

umm

#

can someone tell me

#

why my resources folder

#

isnt being copied into my jar

#

bruh

#

im not using spigot tho

#

imma send my pom

hybrid spoke
#

tell us

grim ice
#

?paste

undone axleBOT
chrome beacon
#

You skipped the special source plugin

hybrid spoke
#

some context

#

and try to

#

use your

#

space bar

grim ice
#

in my resources folder

#

but when i decompile the jar

#

i cant find any of them

#

and when i try to use them in my code i cant

#

this is my pom

earnest forum
#

thats amazing

grim ice
#

mhm

#

exactly

earnest forum
#

they arent doing spigot

subtle folio
#

so why are you here?

grim ice
#

yes

earnest forum
#

that was said earlier

grim ice
earnest forum
#

its just a general question

grim ice
#

bruh

subtle folio
#

this is for spigot related..

grim ice
#

well call a mod

#

and see what he says

earnest forum
#

surely just help him..

#

it isnt that big of a deal

chrome beacon
#

Make sure your resources folder is in the right location and that your file actually is in it

smoky oak
#

well to be fair the intellij discord requires a spare phone to chat in

chrome beacon
#

I've seen that being the issue a couple times

#

Double check

subtle folio
chrome beacon
#

outside of your IDE

grim ice
#

its in src/main/resources

#

oh ok

dire marsh
#

the channel topic does say "ask other questions here"

grim ice
#

nope its completely right

subtle folio
#

learn one at a time?

chrome beacon
#

It's not impossible. I did learn both at the same time when I started. I do not recommend it

grim ice
#

@chrome beacon so um

subtle folio
#

learning java is essential to even begin to use the spigot api

grim ice
#

what do i do

chrome beacon
grim ice
#

heres the whole project structure

#

and im pretty sure its the same in my folder

hybrid spoke
# grim ice what do i do

check if the dir is in the jar. try to not explicit add the resources folder since it is already mavens default. otherwise try to not explicit add *

grim ice
#

to

#

and directory isnt in jar

#

because it wouldnt eitherway

#

the files get copied but the folder doesnt (in normal cases)

#

not in my situation

#

man wtf

#

its been a day and i still cant fix such a simple issue

#

im almost just gonna upload the files to my website

#

and get them from there

#

...

dire marsh
#

just take a break for 3 days

#

and it will fix itself

hybrid spoke
#

otherwise try to use a different plugin

grim ice
hybrid spoke
#

hm, weird. whats your config command

#

with what you build it

grim ice
#

mvn clean

#

mvn install

#

mvn package

#

so

humble tulip
#

Did u create a new project and see if it adds resources to the jar?

grim ice
#

yes

#

it didnt

hybrid spoke
#

so either try a different command just like mvn clean dependency:copy-dependencies package

#

or another plugin just like maven-assembly

grim ice
#

a

humble tulip
#

Did you invalidate caches and restart?

grim ice
humble tulip
#

Show the class?

#

It's protected

#

Maybe try getField

grim ice
#

shouldnt u set accessible first

#

im not a reflection genius tho its just a guess

humble tulip
#

Yeah that's it

subtle folio
#

reflection 😍

humble tulip
#

Just read his code and was like where's the set accessible

#

Reflection is cool but i hate using it

short raptor
#
lives:
  some-uuid: 8
  another-uuid: 5
  player-here: 1
  uuid-four: 0

I have a config that's formatted like this, and I want to get everyone whose lives are at or below zero. I tried to do config.getStringList("lives") but it just returned an empty list

humble tulip
#

Well it's not a list

#

It's a section

hybrid spoke
#

reflection is awful

short raptor
humble tulip
#

What's the exception

short raptor
#

What's that

humble tulip
#

No such field?

#

A configurationsection

short raptor
#

Oh you mean as in lives is a section that contains things

#

Oh yeah

humble tulip
#

Print all declared and regular fields

earnest forum
#

a list's children start with -

short raptor
#

But will doing an access like "lives.some-uuid" to retrieve 8 break if I convert it to a list?

humble tulip
#

U should really use a db

short raptor
#

I know but I just want to make this work for now

humble tulip
#

Well u need to go thru all then keys of the section and get the value if it's at or less than 0

subtle folio
#

sqlite

humble tulip
#

A flatfile db is faster than mysql

short raptor
#

So format the config like

lives:
  - some-uuid: 8
``` and then getStringList, iterate through that doing getInt("lives." + x)
humble tulip
#

I always opt for that when plugin doesn't have to be cross server

short raptor
#

I know, but this is a private server with <20 people, and I want it to just work now, instead of taking days to learn how to use a DB

humble tulip
short raptor
#

I know I should use one, and I will convert it to one in the future, but I am trying to fix this now

grim ice
short raptor
humble tulip
short raptor
#

Alr I will try thgat

humble tulip
#

OHH

#

Obfuscation

#

Ur using remapped filed name

#

N o or p is the speed field

#

Probably p

#

32?

#

Speed is a float

#

Let me see how u printed it

#

So it's one of the first

#

Did u send all?

#

No i mean

#

The declared fileds are first

#

Extend the class

hybrid spoke
humble tulip
#

And use the field

#

Compile andnsee whatnit changes to

#

Best way tbh

#

Since it's protected

#

Ye

#

I realized hence why I deleted

#

Just extend and do this.speed

#

And compile

#

Then decompile it and see what the name is

#

Or look at tje class without mappings

earnest forum
humble tulip
#

It's b

#

In 1.18

#

Idk what ver ur using

#

For access in subclasses

grim ice
#

i used ur whole build tag

#

and replaced some values with my own

#

but its same

humble tulip
grim ice
#

i love life

#

the files are copied to the classes folder

#

in my project

#

but not to the jar

#

ffs

#

isnt there some app or smth

#

that makes class files into a jar

#

:(

humble tulip
#

:(

#

Do u have ultimate?

humble tulip
grim ice
tawny otter
#

How do I make perms for my Bungeecord commands

formal bear
#

Can someone help me how to host repository and change the pom file? I got jars from the owner who abandoned the plugin

sweet pike
#

i've recently seen a Sign exploit that is allowing players to somehow run a execute command via a TileEntitySign? How is this ran, how does it work, and how can I design a plugin to patch this exploit?

[Tue 07:37:47 INFO Minecraft/TileEntitySign] {example player} issued server command: /execute at @a run fill ~ ~ ~ ~60 ~10 ~40 air destroy

formal bear
topaz moon
#

you mean like host the repo on the webserver?

humble tulip
topaz moon
#

with git?

formal bear
#

Because i'm remote 1/2 of the time

humble tulip
grim ice
#

anyone??????

#

why is my resources folder not being copied to the jar

sweet pike
humble tulip
humble tulip
sage dragon
sweet pike
humble tulip
#

How ppl built jars before maven

humble tulip
sweet pike
#

I believe they are using a Purpur server

humble tulip
#

Are you sure it's not something u saw online?

formal bear
#

I mean something like

<repository>
<url>repo.botprzemek.com/apis</url>
</repository>

and then
<dependency>
...
</dependency>

formal bear
#

because owner abandoned it and SSL certifiacate expired i cannot use it

sweet pike
humble tulip
humble tulip
grim ice
#

still needing help, why is my resources folder not being copied to the jar

sweet pike
#

are there any possible fixes? i know that not being able to replicate the exploit is quite fundemental to fixing it but, any possible solutions?

grim ice
#

Bruh what

humble tulip
#

Ur pom is fine

#

Project structure is fine

grim ice
#

wtf

topaz moon
humble tulip
#

So it's supposed to work

sage dragon
humble tulip
#

Check ur maven settings

grim ice
#

im crying

grim ice
#

no

#

im not using spigot

humble tulip
#

Forget that ur using spigot

topaz moon
humble tulip
#

Did u reinstall windows?

#

See if u can reset maven settings

unreal moat
#

clear lagg:
how can i prevent minecart from being removed when clear lagg passes

grim ice
#

and that forum is just about that kid having a weird structure anyways

grim ice
topaz moon
grim ice
#

i read that

#

useless too

topaz moon
#

Start over again and try with a clean project

#

search for the delta then to identify ur problem

humble tulip
#

He did that

#

Same problem

topaz moon
#

then it's his setup

grim ice
#

lol wdym setup

humble tulip
#

Did u reset maven settings?

#

In intellij?

#

Send ur pom quick

humble tulip
formal bear
grim ice
#

MAN

sweet pike
#

ion know what i can do with this tho

#

i guess i could check if a commadn sender instanceof like TileSignEntity but that doesnt implement CommandSender so kind of lost there

agile anvil
#

What are you trying to do !

#

?*

grim ice
#

welp

#

i gave up on using resources folder

#

imma use my website

#

and store files there

humble tulip
#

That won't let them execute without permissions?

hybrid spoke
humble tulip
#

Nit for purpur maybe

granite owl
#

does someone by chance have a tutorial to get started into generating custom capes by plugins?

subtle folio
#

capes?

granite owl
#

yes?

earnest forum
#

you can't

granite owl
#

but cant i apply skins including capes to players. is it not possible to get the default skin of said player and then alter the cape info

summer scroll
#

You can done it by using resource pack but it will not be the same as minecraft cape.

smoky oak
#

actually no

#

capes have set textures and linked to player profiles

hybrid spoke
#

fake a banner to the players back

earnest forum
#

thats locked to the block grid though

granite owl
#

nah before i use banners im going to directly alter the skin itself

#

and add it as an arm badge or on the back

earnest forum
#

i dont think the server actually has any jurisdiction on what happens with the cape

granite owl
#

it must

earnest forum
#

its a client thing no?

granite owl
#

from my understanding

smoky oak
granite owl
#

the server draws the skin and cape info from the skins.minecraft.net server and then passes them to the clients

earnest forum
granite owl
#

xD

#

always that head thing

#

nah like ive said before im going to use armor stands or other shenanigans

#

im going to put it onto the player skin directly

#

since actual capes would interfere with this, prob as arm badge

grim ice
#

sooo um

#

in my jar

#

japanese looks like dis

#

in JLabels

#

but

#

in my ide

#

it looks normal

#

why

dense falcon
#

How can I do a temp ban? I know how can I do the ban but what I can use to do a temp?

tardy delta
#

add it date when it should expire

dense falcon
#

Date?

#

Like this? ```java
Date aujourdhui = SystemClockFactory.getDatetime();

tardy delta
dense falcon
#

?

agile anvil
#

Find a way to translate a string like "5d6min34sec" to a Date. Google should help you easily

tardy delta
#

depends on how he inputs the date

humble tulip
crude loom
#

I'm using player.launchProjectile(Fireball.Class)
Is there a way to set the projectile speed?

eternal oxide
#

Either use the method that accepts a Vector (length is the velocity) or apply a velocity after you spawn it

crude loom
#

Oh so something like this then?

 Fireball fireball = p.launchProjectile(Fireball.class);
fireball.setVelocity(new Vector(0,0,0));
eternal oxide
#

kinda. you are setting a velocity of zero

crude loom
#

Yeah it was just for the example haha

eternal oxide
#

fireball.setVelocity(fireball.getVelocity().multiply(2));

crude loom
#

Oh I see, thank you!

smoky oak
#

wonder what happens if you loop that

#

can you edit entities async?

eternal oxide
#

Making changes to any World objects Async is either blocked or not recommended

hybrid spoke
#

multiply by 1000

#

zoom

warm mica
#

Is there any good way of teleporting a player riding an entity without dismounting him?

tardy delta
#

teleport the entity too πŸ‘€

warm mica
ornate mantle
#

ok so the Item class has a method called .getOwner()

#

what does this mean

#

it usually returns the uuid of the owner of the item

#

but what does that mean?

#

what if i break a block?

tardy delta
#

entity which threw it ig

ornate mantle
#

whose the owner of that item

humble tulip
tardy delta
#

you i think?

eternal oxide
#

I think thats for picking it up. only the owner can for a set amount of time

tardy delta
#

cuz you broke it

humble tulip
#

it's nullable

dense falcon
#

https://gyazo.com/657afb53d0ba067de774dd15e020bcb2 Why I am getting this and no : Wed Jun 22 14:58:15 CEST 2022 ?

        Player player = event.getPlayer();
        player.getInventory().clear();

        if (!plugin.getConfig().contains("players." + player.getUniqueId())) {
            plugin.getConfig().set("players." + player.getUniqueId() + ".name", player.getDisplayName());
            plugin.getConfig().set("players." + player.getUniqueId() + ".banned", false);
            plugin.getConfig().set("players." + player.getUniqueId() + ".muted", false);
            plugin.getConfig().set("players." + player.getUniqueId() + ".time_ban", 0);
            plugin.getConfig().set("players." + player.getUniqueId() + ".time_mute", 0);
            plugin.getConfig().set("players." + player.getUniqueId() + ".reason_ban", "N/A");
            plugin.getConfig().set("players." + player.getUniqueId() + ".reason_mute", "N/A");
            plugin.saveConfig();
        }

        if (plugin.getConfig().getBoolean("players." + player.getUniqueId() + ".banned")) {
            if (plugin.getConfig().getString("players." + player.getUniqueId() + ".time_ban") == "0") {
                String reason_ban = plugin.getConfig().getString("players." + player.getUniqueId() + ".reason_ban");
                player.kickPlayer(ChatColor.RESET  + "[" + ChatColor.LIGHT_PURPLE + "Pranction Ban" + ChatColor.RESET + "]" +
                        " \n Raison : " + reason_ban.toString() +
                        " \n DurΓ©e/Date : " + ChatColor.BOLD + "Permanante");
            } else {
                String reason_ban = plugin.getConfig().getString("players." + player.getUniqueId() + ".reason_ban");
                player.kickPlayer(ChatColor.RESET  + "[" + ChatColor.LIGHT_PURPLE + "Pranction Ban" + ChatColor.RESET + "] " +
                        " \n Raison : " + reason_ban.toString() +
                        " \n DurΓ©e/Date : " + ChatColor.BOLD + plugin.getConfig().get("players." + player.getUniqueId()) + ".time_ban".toString());
            }
        }
tardy delta
#

aaa

ornate mantle
#

java jumpscare

ornate mantle
humble tulip
#

reason_ban is a configuration section

tardy delta
#

also conventions pls

pastel juniper
#

So I created a plugin that creates npcs but I get an error when I run the plugin.
This is the error:

humble tulip
#

can we see what ur config looks like?

humble tulip
#

u need to use the plugin to reobfucate ur code

pastel juniper
dense falcon
humble tulip
#

yeah

quaint mantle
#

you closed the bracket after player.getUniqueId() instead of toString

#

so its getting the uniqueId of the player which is a memory section PLUS the .time_ban

pastel juniper
quaint mantle
#

pls use ide to debug next time, cuz we cant help you with that every time

humble tulip
quaint mantle
dense falcon
quaint mantle
#

great gg

dense falcon
tardy delta
#

config.get("").toString() -> config.getString("")

river oracle
#

No that's nms

humble tulip
# pastel juniper So I created a plugin that creates npcs but I get an error when I run the plugin...
<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.17-R0.1-SNAPSHOT:txt:maps-mojang</srgIn>
                <reverse>true</reverse>
                <remappedDependencies>org.spigotmc:spigot:1.17-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.17-R0.1-SNAPSHOT:csrg:maps-spigot</srgIn>
                <remappedDependencies>org.spigotmc:spigot:1.17-R0.1-SNAPSHOT:jar:remapped-obf</remappedDependencies>
            </configuration>
        </execution>
    </executions>
</plugin>
#

do u have that in ur pom?

quaint mantle
#

i think he got the wrong classes

river oracle
#

No he didnt

#

It's correct and it's nms

quaint mantle
#

no its not

#

decompile and check

river oracle
#

Yes it is

#

He just didn't reobfuscate

humble tulip
#

isnt it called EntityPlayer?

#

exactly

quaint mantle
#

theres not a literal Player class in minecraft

#

its only in spigot

#

it is called EntityHuman

#

or whatsoever

humble tulip
quaint mantle
#

oh alr

river oracle
#

Those are mapped

quaint mantle
#

my bad i noob

#

how do i get obfuscation mappings and use them?

humble tulip
#

?paste your pom.xml as well

undone axleBOT
tardy delta
#

hewwo @river oracle

quaint mantle
#

UwU

#

UwwwwwwU

tardy delta
#

deleted users have no rights

eternal oxide
#

Go straight to Jail! Do not pass go. Do not collect 200 Bitcoin!

tardy delta
#

i want 200 bitcoin lol

#

ElgarL just exposed how rich he is πŸ’€

crude loom
#

Can I detect which blocks are being exploded as a result of World.createExplosion()?

mortal hare
#

NMS is so weird

tardy delta
#

i really need to know if api code calls events or not

mortal hare
#

somehow CraftInventory.getInventory()

#

changes

tardy delta
#

fun

mortal hare
#

everytime menu is initialized

#

THAT FIELD which getInventory() uses IS FINAL

#

HOW TF

mortal hare
#

i wouldnt believe that NMS uses reflections

#

in this case

hybrid spoke
tardy delta
#

was wondering if that dude could use a listener

hushed spindle
#

does anyone else have issues with building 1.19 from buildtools

eternal oxide
#

nope

#

Its just you

hushed spindle
#

it can build a jar but i cant seem to get nms to work with it

eternal oxide
#

?bootstrap

undone axleBOT
#

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

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

mortal hare
#

how can field which is declared final in CraftInventory can change via OBC

#

i literally open the same craftinventory

#

and i get two different instances of Container

tardy delta
#

magic

mortal hare
#

number is Object.hashcode()

eternal oxide
#

what inventory are you opening?

mortal hare
#

Im trying to open merchant inventory by implementing custom Menu class

#

but still

#

it makes no sense

#

that final field would change in craft inventory

#

it works fine

#

its just that the instances are changing

#

i would like to use merchant inventory like a chest container

#

where you can store items inside its slots

eternal oxide
#

Pretty sure Merchant inventory is created each time its accessed

mortal hare
#

im not creating inventory via Bukkit.createMerchant()

#

i have implemented my own NMS merchant menu class

#

which works fine

#

and you can store the items

#

but somehow bukkit messes it up

#

and changes the object inside that field

eternal oxide
#

What actual issue are you having? Not getting the same inventory opened when you expect it?

mortal hare
#

yes

hushed spindle
#

im doing something wrong but i cant figure out what, maven keeps being unable to find nms dependencies

mortal hare
#

it opens different inventory container

hushed spindle
#

im only able to access 1.16 and 1.17 but not above

mortal hare
#

instead of the one i provided

#

its hard to explain here since the definitions of Inventory in OBC and NMS are different

#

and mixed matched

humble tulip
#

why does intellij keep suggesting i turn random classes into records?

mortal hare
#

InventoryView -> InventoryMenu
Inventory -> Container

In mojang mappings

eternal oxide
#

Afraid I've not done anythign with custom Entities

glossy venture
eternal oxide
hushed spindle
#

i have

eternal oxide
#

are you using Maven?

hushed spindle
#

yes

eternal oxide
#

?paste your pom

undone axleBOT
hushed spindle
#

i had buildtools run its stuff for all the versions i want to use in a separate folder and i put that folder in my project build path

#

sec

eternal oxide
#

then you are not using Maven

#

you just included teh jars BuildTools produced and didn;t read the bootstrap I linked

#

?bootstrap

undone axleBOT
#

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

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

hushed spindle
#

i mean i also tried using maven but its unable to find any of the artefacts

ocean lion
#

What should I add to my Hub-Core plugin. Now I have vanish lockchat and freeze

hushed spindle
#

my dependencies

    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.17.1-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.18.2-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.19-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.17.1-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.18.2-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.19-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
tardy delta
eternal oxide
#

You will not get Mojang Mappings though

hushed spindle
#

would manually imported jars really break anything though

#

i just removed em and maven still isnt doing its thing

eternal oxide
#

You also can;t include spigot like that. Multiple versions in teh same pom is going to explode

#

You need to use Modules to use multiple versions in one plugin

hushed spindle
#

i also tried simply replacing spigot-api with spigot which said the same thing

#

Cannot resolve org.spigotmcspigot1.19-R0.1-SNAPSHOT

#

the emoji lol

sand rune
#

Which better. In coding plugins

Skript
Or
Java Coding

Note :- I'm a PHP & python & mc bedrock plugins developer so I have a background of programming

eternal oxide
#

that says you didn;t run buildtools for 1.19

hushed spindle
#

java

#

i did though

sand rune
hushed spindle
#

and i think its because there are errors with it

eternal oxide
#

if there are errors it did not build

hushed spindle
#

skript is only good if you dont know java but its much slower

#

i know but why is the question lol

eternal oxide
#

No clue, you've not shown any errors

sand rune
#

Yes I don't know java I only know

Variable
Conditionals

hushed spindle
#

and you should never use skript on bigger serious servers

eternal oxide
#

Probably java version?

vocal cloud
#

Then if you want to do plugins you should learn it I imagine

sand rune
hushed spindle
#

using java 17 also

#

it would give errors much sooner if im not using the right java version

sand rune
hushed spindle
#

its at the very end, the spigot jar builds just fine

#

use skript if you absolutely have no other choice

#

but java is better

sand rune
#

Yes I have no choice
When I learn Java I will move to spigot API
Is that okay ?

eternal oxide
#

You need to delete the contents of your buildtools folder and run it again

vocal cloud
#

Yup

hushed spindle
#

ill try that

hushed spindle
#

why dont you have a choice

#

do you need a plugin developed so badly

vocal cloud
#

Lifesteal SMP probably

sand rune
#

No man , but because I want to make a Minecraft server and my school vacation will end soon and , yeah the idea reached

hushed spindle
#

skript is quite literally just if you dont want to learn java to make quality plugins and more so just want a feature implemented regardless of speed

#

its like using python to make an enterprise backend

tardy delta
#

πŸ’€

hushed spindle
#

what kind of plugins are you looking for anyway, im sure they're out there

#

ones where you dont need skript

tardy delta
#

imagine having holiday already

hushed spindle
#

gotta get a blood check lol cya

eternal oxide
#

No need, I can assure you you do have blood

sand rune
vocal cloud
#

You could? I mean it really depends on what you want to do

sand rune
#

I have finished like 30% or 40% of java

#

And I don't think they enough to make a good server , right ?

hushed spindle
#

that doesnt even make any sense

eternal oxide
#

if you understand Classes, Objects, Instances and dependency Injection you are good to go

tardy delta
#

not to forget methods

sand rune
#

I understand classes & objects

#

& methods

vocal cloud
#

Inheritance, interfaces as well

sand rune
eternal oxide
#

Not essential to start

tardy delta
#

do you also understand multithreading with a three layer model?

eternal oxide
#

well inheritance yes

hushed spindle
#

Design patterns are also nice

eternal oxide
#

Thats all for later

sand rune
#

If that
I need to know only one yhing

hushed spindle
eternal oxide
#

So Classes, Inheritance, Objects, Instances,dependency Injection

sand rune
#

Thing*

eternal oxide
#

Know about those and you can do it

quaint mantle
#

e

eternal oxide
#

If you know about Objects Instances will not be difficult and that also leads into dependency Injection

#

?di

undone axleBOT
sand rune
eternal oxide
#

Many here have started with less knowledge πŸ˜‰

quaint mantle
#

I started with copying absolutely everything ever brainless

#

you will cope with it later on

#

just do it

tardy delta
#

stackoverflow dude kekw

quaint mantle
#

I learnt it later thru books after getting the motivation by doing brainless things

eternal oxide
#

Yep a good google-fu, putting "Java" before everything will get you there.

mortal hare
#

Is this really a question

#

oh sh

mortal hare
vocal cloud
#

Worked for me

quaint mantle
# tardy delta will it?

private static Bitch bitch;

public static Bitch getBitch(){
if(bitch == null) bitch = new Bitch();
return bitch;
}

tardy delta
eternal oxide
vocal cloud
#

That's some nasty sudo code

tardy delta
#

lets code da bitch

quaint mantle
#

what does bitch mean btw

eternal oxide
#

female dog

quaint mantle
#

oh

hushed spindle
eternal oxide
#

or very nasty woman

quaint mantle
#

if bitches can fly my neighbourhood will be an airport

#

oh

#

i aint got no nasty woman

tardy delta
#

hot dog actually

quaint mantle
#

I eat a lot of bitches every day

tardy delta
#

my head is hurting from doin c#

#

now im here and im like wtf

quaint mantle
#

my head is hurting from cpp

vocal cloud
#

What you don't enjoy header files?

quaint mantle
#

hurting from pointers
pointers debugging is the most painful thing in life

glossy venture
#

how is deque pronounced?
i always pronounce it like "de-queue"
but this guy im watching pronounces it like "deck"

formal bear
quaint mantle
cerulean jasper
#

Whats most reasonable way to gather "Player Camera Direction" and whats a function to return this? Preferraby 2 axis points

#

Basically, how rotated player is.. I mean

humble tulip
#

Get eye location

#

Get direction

tardy delta
#

get the pitch or the yaw idk which one

eternal oxide
#

Player#getEyeLocation().getDirection()

cerulean jasper
#

Oh ye ptich and yaw

#

Or that, lemme check

humble tulip
#

Get eye location and get pitch and yaw

tardy delta
#

whats getdirection returning?

humble tulip
#

A vector

eternal oxide
#

a Vector of Pitch and Yaw

tardy delta
#

oh

humble tulip
#

Vector form of pitch and yaw right?

eternal oxide
#

yep, unit Vector

summer scroll
#

I was using some utils from apache and was using 1.18, but when I switched up to 1.19, it no longer include apache, what should I do?

eternal oxide
#

use guava or add a depend for apache 3

summer scroll
#

should I shade the apache?

eternal oxide
#

I believe its on the server, but you'll have to check

#

its just not in the API anymore

summer scroll
#

alright, i'll test it.

#

thanks btw

#

wait

#

If I use apache 3, what happens to server below 1.19?

#

Will it throw CNF exception?

eternal oxide
#
As foreshadowed with the 1.18 release, commons-lang has now been removed from the API. Plugins will not yet be broken as it is still included with the server, however it will eventually be removed in a future release. Please consider switching to Google Guava (which is a supported bundled API) or using your own copy of the much more recent commons-lang3.```
summer scroll
#

okay

#

So I'm using Choco UpdateChecker, and it uses commons-lang, specifically NumberUtils class.

eternal oxide
#

if it were me, I'd add the commons lang as a library in the plugin.yml

summer scroll
#

Would it be better to switch to google guava?

eternal oxide
#

that way Spigot will download it on all build above 16

#

yes

summer scroll
#

alright

eternal oxide
#

adding it to the library entry in plugin.yml will make spigot download and use that lib in 1.16+ prior to that will will use teh bundeled lib

summer scroll
#

i'm trying to add support for version below 1.16 too

eternal oxide
#

below 1.18 has the commons lang included in Spigot

summer scroll
#

The path is different

eternal oxide
#

ah its using a shaded version

coarse shadow
#

how do we shade api's while using kotlin

summer scroll
#

apache 3 import is like this import org.apache.commons.lang3.math.NumberUtils;, and the previous version is without the 3 on the lang

coarse shadow
#

i get NoClassDefFoundError exception when i try to shade any api

eternal oxide
#

Kotlin, no idea