#help-development

1 messages ¡ Page 694 of 1

young knoll
#

Easy enough to make a set for it though

kindred sentinel
#

and use .contains

young knoll
#

Mhm

kindred sentinel
#

Why did i wrote this.. I don't remember this

gilded granite
#
@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
    if (event.getEntity() instanceof Player) {
        Player damagedPlayer = (Player) event.getEntity();
        int damageAmount = (int) event.getDamage();
        Random random = new Random();

        Location displayLocation = damagedPlayer.getLocation().clone().add(random.nextDouble(0, 1), random.nextDouble(0, 1), random.nextDouble(0, 1));

 damagedPlayer.getLocation().clone().add(random.nextDouble(0, 1), random.nextDouble(0, 1), random.nextDouble(0, 1));

        displayDamage(damagedPlayer, displayLocation, damageAmount);
    }
}
#

@last temple

lilac dagger
#

looks cool

quaint mantle
#

I really like how you can legit add an optional argument mid command

kindred sentinel
#

random.nextDouble doesn't accept arguments

lilac dagger
#

i have something similar

gilded granite
#

its making 2 damage displays

lilac dagger
#

random next double is from 0 to 1

quaint mantle
lilac dagger
#

and multiply it yourself

#

yes 😄

quaint mantle
#

Oh wow

lilac dagger
quaint mantle
#

is there a lot of gernical and abstract stuff

lilac dagger
#

it's simpler

#

but works well

kindred sentinel
#

so you need just random.nextDouble() not random.nextDouble(0,1)

gilded granite
#
@EventHandler
    public void onEntityDamage(EntityDamageEvent event) {
        if (event.getEntity() instanceof Player) {
            Player damagedPlayer = (Player) event.getEntity();
            int damageAmount = (int) event.getDamage();
            Random random = new Random();

            Location displayLocation = damagedPlayer.getLocation().clone().add(random.nextDouble(0, 1), random.nextDouble(0, 1), random.nextDouble(0, 1));


            displayDamage(damagedPlayer, displayLocation, damageAmount);
        }
    }





    public void displayDamage(Player player, Location location, int damageAmount) {
        World world = location.getWorld();

        ArmorStand stand = world.spawn(location, ArmorStand.class, armorStand -> {
            armorStand.setVisible(false);
            String damageDisplay = ChatColor.GRAY + "" + damageAmount;
            armorStand.setCustomName(damageDisplay);
            armorStand.setCustomNameVisible(true);
            armorStand.setMarker(true);
            armorStand.setGravity(false);
            armorStand.setVelocity(new Vector(0, 2, 0));
            armorStand.setPersistent(false);

        });
        Bukkit.getScheduler().runTaskLater(Finepixel.getInstance(), stand::remove, 20L);

    }

#

its like that ?

#

yes its spawning 2 entities idk why

#

its calling twice

#

idk

#

i fixed nice

#

i registered the events 2 times

#

now its registering 0 times

tender shard
#

try registering it once lol

#

not twice, not 0 times, but once

gilded granite
#

Expected 1 arguments but found 0

#

getServer().getPluginManager().registerEvents(new SkyblockPlayer(), this);

#

'SkyblockPlayer(org.bukkit.entity.Player)' in 'net.finepixel.Core.Player.SkyblockPlayer' cannot be applied to '()'

#

how to do that?

#

skyblockplayer class

#

wat?

#

i know i stated coding for 1month

remote swallow
#

lets take a look

#

fuck

#

me

#

the first thing i see is a text wall of imports

#

and static

gilded granite
#

whats the prob?

remote swallow
#

if your keeping a player instance use a weak reference and exprire the instance when they quit, it shouldnt be its own listener, it should hold all skyblock player playerdata

gilded granite
#

tell me what to fix then

#

im new to coding i dont know everything

#

wat then?

#

private static Map<UUID, WeakReference<SkyblockPlayer>> playerData = new HashMap<>();

smoky oak
#

dafuq

#

why weak?

quaint mantle
#

why weak reference?

smoky oak
#

can't you make an object handling player while they're on the server and remove it when they leave, at the very least? that way it can't be not existing

quaint mantle
#

do you at least know what it does

gilded granite
smoky oak
#

actually this doesnt do anything does it

#

the uuid is technically not a weak link

remote swallow
#

that would also go in a manager class

smoky oak
#

anyways different topic
is there a way to sub-tick spawn stuff (read: particles) visually
I want to make smooth animations

remote swallow
#

no

gilded granite
#

this isnt working now

quaint mantle
#

wait why is that 463 lines class duke

remote swallow
#

do you want an example

gilded granite
#

yes please

remote swallow
#

ignore the annotations

gilded granite
#

what does it do?

remote swallow
#

the annotations?

gilded granite
#

no

#

the class

remote swallow
#

the manager class keeps the reference, and supplies access

#

the wrapped player includes the info

gilded granite
#

Ok thx

quaint mantle
#

also wouldn't it be better to use weak map?

remote swallow
#

wrapped player has the weak reference

#

on leave it gets expired and then the class is yeeted

smoky oak
quaint mantle
#

then the uuid key holds null value

remote swallow
remote swallow
#

we are adding a cache to provide relogging

quaint mantle
#

so weakmap?

gilded granite
remote swallow
#

get the statistic plugin

remote swallow
#

bc the wrapped player instance can still exist if they leave

#

it will also be reused if the relog with X minutes at some point

gilded granite
remote swallow
#

what did i say about the annotations

#

and you shouldnt be copy pasting

#

its an example, taylored to my usage, you can use it to create your own to be how your usage is

gilded granite
#

so i should recode my entire code?

#

skyblockplayer?

remote swallow
#

yes

#

use my class as an example

gilded granite
#

what can i keep?

remote swallow
#

private WeakReference<Player> player;
private UUID uuid
private boolean valid is all you would need from it

gilded granite
#

ok thx

#

and what about the playemanager?

remote swallow
#

depends on needs

smoky oak
#

so apparantly nobody's actually writing libraries for spigot anymore

pseudo hazel
#

wdym

tender shard
smoky oak
#

oh are yall serious, the moment i complain you are awake?

tender shard
#

I was awake the whole day except for the 3 times i was sleeping

smoky oak
#

i mean
fair

#

do you know that particle momentum thing though? Can i do that manually?

#

some of the effects im trying to do have a direction

#

if the particles go all over the place it'd look much worse

tender shard
#

Use the huge spawnParticle method

smoky oak
#

isnt the offset the position it spawns in?

tender shard
#

No the offset is a random location offset

#

Eg if you use 0,0,0 as offset they all are on the same place

smoky oak
#

ah

gilded granite
smoky oak
#

k thanks

remote swallow
ivory sleet
#

because entries derive weak ref and wraps iirc the key as the referent

gilded granite
#

how can i load or save it for each player?

tame wolf
remote swallow
#

create a storage class that takes the player and one that returns it

gilded granite
#

see at the bottom

smoky oak
remote swallow
tame wolf
gilded granite
gilded granite
remote swallow
#

in the manager class

gilded granite
#

I need to add it?

tender shard
remote swallow
#

yes you need the manager, how else are you gonna keep track of these instances

gilded granite
#

I copy urs or?

smoky oak
#

thats kind of why im asking

#

i want to make a beam, more or less

remote swallow
smoky oak
#

wait a moment

smoky oak
#

offsetX - the maximum random offset on the X axis

#

alex

#

i cant actually determine the vector they fly in

tender shard
#

idk you'll have to try it

smoky oak
#

I've done particle constructs before

#

you need a lot more so that it looks continuous

tender shard
#

check 0:47

smoky oak
#

you talking about the barriers?

tender shard
#

yeah that's particles

gilded granite
smoky oak
#

probs easier than faking thoes blocks

#

is that lag in them spawning a thing of barrier particles?

#

or did you just batch them for some reason?

gilded granite
#

will it work?

young knoll
#

The barrier particle can show any block too

#

Which is cool

tender shard
smoky oak
#

from testing i know that the client can easily eat 3500 packets a tick if its not followed by other particles in the second before or after

tender shard
smoky oak
#

this gotta be something else

sterile token
#

What causes an overflow exception? Are there any particulas things

remote swallow
#

recursive method calls

sterile token
#

Like embeddign returns with booleans?

#

Because i realized that my command framework is calling an execute() twice so thats so its an overflow issue as i suppoused

remote swallow
#

public void method() {
    System.out.println("method");
    method();
}
#

that will cause a stack overflow

worldly ingot
#

It's thrown when your stack pointer overflows :P

#

Technically you could also do it by declaring a lot of in-scope variables, but it would probably take way too many to actually cause that

#

Usual culprit is recursion because it's infinite stack frames

gilded granite
#

@remote swallow should i add getInstance in SkyblockPlayer?

tender shard
#

the stack is basically "how many nested method calls did you do"

smoky oak
#

whats that number right now anyways?

#

💡

#

i can test that

sterile token
tender shard
smoky oak
#

stack overflow count

tender shard
#

-XX:ThreadStackSize=1024
-Xss1m

worldly ingot
#

The size of the stack varies from machine to machine, and in the case of Java, VM args to VM args

tender shard
#

it's defined by those settings

smoky oak
#

ah

sterile token
tender shard
#

hotspot e.g. can only use between 144kb and 1gb according to some article

#

(for the stack alone)

#

1gb for the stack is a huuuuge amount lol

worldly ingot
#

Recursion is hard to catch and control

smoky oak
#

was about to do

static int count;
void run(){
  try{ recursive(); }
  } catch(Exception ex) {
    print(count);
  }
}
void recursive(){
  count++;
  recursive();
}
eternal oxide
#

usually spawning a mob when a mob spawns

worldly ingot
#

I've definitely broken blocks in the BlockBreakEvent before

young knoll
#

Yep

#

Those are the main two

#

Also damaging an entity in the damage event

smoky oak
#

cant you flag those as 'dont call event'?

tender shard
#

I got a stackoverflow at 15495

smoky oak
#

oh thats not even close to a 2^n number is it

#

can you check the args?

silent cove
#

can you teleport a dead player?

smoky oak
wet breach
silent cove
smoky oak
#

well

wet breach
#

at least that is supposed to happen, but I suppose once you get that many objects on the stack anything is a guess really in what is supposed to happen 😛

smoky oak
# silent cove how is that too vague?

do you want to teleport their body? the items? relocate the animation?
do you want them to see that location? Do you want to temporarily displace their spawn? Should it happen right as they die, or while they're about to click the respawn button?
etc etc
what's your goal here? Which part of it is important?

silent cove
#

heh

#

my question really is as simple as i stated it

wet breach
smoky oak
#

still missing details

silent cove
#

But I will definitely give you my goal

smoky oak
#

beyond adding -1

silent cove
#

I want to teleport a player to a location, and... do some things, and then at some point i want to teleport that player back to where i teleported them from, and have them in the exact same state they were before i moved them.

smoky oak
silent cove
#

gee why didn't i think of that

smoky oak
#

cant tell if youre sarcastic or not lol

silent cove
#

it was.

smoky oak
#

well you didnt mention if that worked or not

#

so i wasnt sure myself since i havent ever done something similar

silent cove
#

lol yeah i definitely tried. they don't get teleported if they're dead

smoky oak
#

hm

silent cove
#

so i devised a soution to respawn them, track that, and then kill them when i put them back if they were previously dead

tender shard
# smoky oak actually, name your method something much shorter and do it like i did, im curio...

main0: 14973
$: 15178
$ another run: 15354
thisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodNamethisIsAnExtremelyLongMethodName: 18061

silent cove
#

but that just gets messy and i end up killing them twice, which inflates stats incorrectly, and then i have to cancel the death messages, etc

#

i dont want to have to do all of that

tender shard
#

probably it automatically uses more heap if it sees such method names, idk lol

smoky oak
#

hm, do you need that manipulation visible for the target player only?

#

if yes you might be able to fake them respawning and dying in very quick succession using packets at the location you want them at

tender shard
#

these are my default values

sterile token
#

What do you think up to know? I have re written whole logic

opal juniper
#

bleh what’s this main.sendDetailedUsage

sterile token
#

I will replace that one, will just be sendUsage(), i dont think i will need that one

sterile token
silent cove
smoky oak
#

i dont think they have a physical body while they're dead

silent cove
#

at the very least i need their camera there

#

but id rather have them there entirely

opal juniper
#

i don’t really like this whole “sub command” structure personally but i would just have each command have a nullable child and if the child is null, it will just be a value. Each command wraps the possible values it could take or whatever

#

that’s just one idea after just landing from a flight lol

#

so probably wrong / don’t work lol

sterile token
smoky oak
# silent cove at the very least i need their camera there

I havent worked with dead players much, so here's my two ideas, both would potentially require packets:

  1. 'explain' to them 'you respawned here and died instantly'
  2. Set em to spectator, teleport them to where you want em, and set em back or put them into a mob. I'm unsure if setting them to surrival would respawn them tho
#

cant really think further than that with how late its getting

gilded granite
remote swallow
#

wrong way to load players

gilded granite
#

how to?

remote swallow
#

call getPlayer(uuid) not SkyblockPlayer.getInstance

wet breach
smoky oak
#

cant you force a respawn

wet breach
#

before they die yes

#

but not when that respawn screen comes up

smoky oak
#

?

gilded granite
smoky oak
#

use serverEvent -> toggleRespawnScreen

wet breach
smoky oak
#

its a packet

remote swallow
smoky oak
#

serverevent notifies the player of changes to the server

remote swallow
#

line 27 in skyblock player should never exist

smoky oak
#

weather for example

remote swallow
#

it should be held in Playermanager

wet breach
#

haven't messed with the packet part

remote swallow
#

line 24 in player manager should be SkyblockPlayer skyblockPlayer = getPlayer(uuid);

gilded granite
remote swallow
#

add a case if their playerdata doesnt exist at all and you need to create it

#

rest is fine ish

gilded granite
#

wich i should register in main class?

remote swallow
#

listeners should get their own class

gilded granite
#

what name?

#

SkyblockPlayerLiseners

remote swallow
#

PlayerListener

gilded granite
#

ok

quaint mantle
#

What y’all talking about

gilded granite
#

coding

quaint mantle
#

Coding what

gilded granite
#

plugins

quaint mantle
#

Vague

#

anyone here do C#?

ivory sleet
#

Yea

quaint mantle
#

They

gilded granite
#

tysm @remote swallow it worked

quaint mantle
# ivory sleet Yea

You know when you build a project and get like all these files, is there a specific file I can run to run the program I tried the exe but it opens my terminal then closes it

#

I am tryna learn some C#

ivory sleet
#

why do u work in the default file explorer

#

lol

quaint mantle
#

Im on windows

#

im using rider but im just currious

ivory sleet
#

well you have IDEs and Code Editors

quaint mantle
#

but is there a specifric file I can run to run the application

#

I dont wanna rely on running through ide the entire time

worldly ingot
#

you should just be able to run the executable file. If it's opening and closing a terminal it means your program has no output or crashed for some reason

silent cove
quaint mantle
hazy parrot
#

Intellij?

#

It supports dotnet?

#

Anyway ij is probably adding system pause call or smth

#

Try running it from terminal, you should see output then

quaint mantle
quaint mantle
#

oh

#

I didnt have a runtime downloaded let me try downlimng and retrying with that

subtle folio
quaint mantle
#

yeah

gilded granite
#

what is the event that trigers when a farmland turn into dirt if not having water near?

hazy parrot
#

Nice to hear 👍

quaint mantle
# gilded granite what is the event that trigers when a farmland turn into dirt if not having wate...

Direct Known Subclasses:
BellResonateEvent, BellRingEvent, BlockBurnEvent, BlockCanBuildEvent, BlockCookEvent, BlockDamageAbortEvent, BlockDamageEvent, BlockDispenseEvent, BlockDropItemEvent, BlockExpEvent, BlockExplodeEvent, BlockFadeEvent, BlockFertilizeEvent, BlockFromToEvent, BlockGrowEvent, BlockIgniteEvent, BlockPhysicsEvent, BlockPistonEvent, BlockPlaceEvent, BlockReceiveGameEvent, BlockRedstoneEvent, BlockShearEntityEvent, BrewEvent, BrewingStandFuelEvent, CauldronLevelChangeEvent, FluidLevelChangeEvent, FurnaceBurnEvent, HopperInventorySearchEvent, InventoryBlockStartEvent, LeavesDecayEvent, MoistureChangeEvent, NotePlayEvent, SignChangeEvent, SpongeAbsorbEvent, TNTPrimeEvent

One of these

#

or FluidLevelChangeEvent

#

just add debuging and see which one triggers

gilded granite
#

what is the command to change the tick i forgot

#

oh yeah

hazy parrot
#

Change the what

wary topaz
sterile token
#

Just some issues like re writting it 4 times up to now

wary topaz
#

sorry took so long lo

sterile token
#

na its all good

sterile token
wary topaz
#

sure whats up

sterile token
#

I have some dudes with mine

#

I have these structure

tender shard
sterile token
tender shard
#

I'm currently writing a tiny PAPI extension to properly replace %formatter_text_replace% with a properly working replacer lol.

I currently got the following format which works 100% fine:

%replacer_"<search>"_"<replacement>"_text in which to search and replace%

As you see, both <search> and <replacement> must be put into quotes, so that the search and replace string can both contain underscores just fine. It also works with "quotes" being included in the search and replacement string by simply escaping them like usual:

%replace_"\"jeff\""_"\"alex\""_my name is "jeff"%

I'm using this relatively easy regex:

    private static final Pattern PATTERN_BOTH_QUOTED =
            Pattern.compile("^\"(?<search>([^\"]|\\\\\")+)\"_\"(?<replace>([^\"]|\\\\\")+)\"_(?<text>.*)$");

Outside of java it looks like this: ^"(?<search>([^"]|\\")+)"_"(?<replace>([^"]|\\")+)"_(?<text>.*)$

Now I'm thinking of making the " quotes optional if search or replace doesn't contain any underscores, however I'm unsure how I'd do that using just one regex - ofc I could just use 4 different patterns (current one for both search and replace quoted, one for only search quoted, one for only replacement quoted, and none quoted) but that seems a bit unperformant I guess. Anyone got any idea? Maybe I could add another named group (?<searchWithoutQuotes>(...)) and same for replace, and then combine them with the existing quoted named groups using (|) ?

#

I managed to paste it correctly now ^

silent cove
#

I am trying to use protocollib to cancel some sounds.. is this possible? I have a packet listener created that's not getting triggered, at all. What am i doing wrong?

protocolManager.addPacketListener(new PacketAdapter(instance,
        ListenerPriority.NORMAL,
        PacketType.Play.Server.NAMED_SOUND_EFFECT
) {
    @Override
    public void onPacketSending(PacketEvent e) {
        Sound sound = e.getPacket().getSoundEffects().read(0);

        System.out.println(sound.name());
    }
});
tender shard
sterile token
# tender shard what?

If your app doesnt contain CEO configuration then discord doesnt output the details from the app

#

Meaning it doesnt display the small imagen, description, etc

#

like does with this, for example

sterile token
#

If you see carefully when he sent the link discord didnt display the info on discord which it used to

silent cove
#

what you're referring to is SEO, not CEO

#

and that doesn't matter either. its just the meta og tags

sterile token
#

Ohh i sispell it

silent cove
#

but i guess that's SEO.

#

well yeah, but those are 2 very different things

sterile token
#

oh too much

#

i coding since i ask you for help

#

didnt fixed up

silent cove
#

still no luck?

hazy parrot
#

It's not even seo, u are talking about meta tags

sterile token
sterile token
hazy parrot
#

But pretty sure Alex was not talking about discord displaying site embeds

silent cove
hazy parrot
#

Well seo is much more, but ig

tender shard
sterile token
#

why you make fun of me?

#

lmaoo discord went down some seconds?

hazy parrot
#

Yap

glad prawn
sterile token
#

didnt allow to send messages here, does happen to any other?

tender shard
# glad prawn yeah

yeah well sure I can change that, but that's not the issue - the issue is matching either the escaped search/replace, or an unescaped one, with the same regex

#

but using ` I can't show it properly in code blocks lol

silent cove
#

damn, i guess player hurt/death sounds are not send from the server.. does that mean they can't be cancelled?

sterile token
#

There are things nto managed thru server and are via client. So you cant fully disabled all of them

tender shard
silent cove
#

gah i so badly want to know how origin realms is able to teleport me when im dead, and then teleport me back and im still dead. with zero evidence of them respawning/killing me again

#

its gotta be all packets but like they're even able to do it from another dimension

kind hatch
#

There's something you can do with resource packs that removes that loading terrain screen while switching worlds.

silent cove
#

yes, but this is with no resource pack

#

they require a resource pack for you to play on their server, and when you join you are teleported to an area (remember we talked about this at length trying to figure it out. I did figure it all out by the way, I've replicated it almost entirely)..
but anyway, you're teleported to a location to "accept the resource pack". Even if you're in the server, and you die, then you quit the game, then change your resource pack options back to "prompt" then rejoin. it will still teleport you to this place, and after you accept it, it teleports you back to your death location, and you're dead. but they did not kill you (or so it seems)

#

that's the only part that I have no been able to replicate precisely

#

my poor mind cannot rest until i figure out final piece to this puzzle

sterile token
#

I wont lost the fight haha

silent cove
#

oh ive been trying to reverse engineer this for a couple of days now. i have it to a point where its passable, but i dont like killing the player, that has its own negative caveats

sterile token
#

what you doing?

rare rover
#

how would i improve this for users? I'm wanting the users to be able to edit the options but rn they have to check the docs aka:

#

builder:

#

is there a way to improve this?

#

i was thinking of certain enum classes for each particle type but that doesn't seem efficient

#

which i can see this being very un-user friendly

silent cove
# sterile token what you doing?

trying to replicate the resource-pack flow on origin-realms, just as an exercise. overcomplicating things just for the sake of trying to figure it out

torn shuttle
#

charlemagne is now charmeleon

silent cove
#

i have it figured out, minus how they handle players who are dead. it works the way i have it, but its clunky because if players are dead im forced to respawn them so I can teleport them, and then im forced to kill them again once i teleport them back to where they came from, which is pretty lame

torn shuttle
#

at least he didn't say charizard I guess

worldly ingot
silent cove
glad prawn
sterile token
#

Arrays#asList() isnt mutable right?

#

Because im so dumb i was using it and i just realize it wasnt mutable 🤡

rare rover
#

why is the vector y-coord +129? and yet i have it as:

particleOffsets.add(new Vector(x, 0, z));```
#

i dont understand 😭

silent cove
sterile token
tender shard
#

my current regex 💀

private static final Pattern PATTERN =
            Pattern.compile("^((`(?<searchBt>([^`]|\\\\`)+)`)|(?<search>([^_`]|\\\\`)+))_((`(?<replaceBt>([^`]|\\\\`)+)`)|(?<replace>([^_`]|\\\\`)+))_(?<text>.*)$");
^((`(?<searchBt>([^`]|\\`)+)`)|(?<search>([^_`]|\\`)+))_((`(?<replaceBt>([^`]|\\`)+)`)|(?<replace>([^_`]|\\`)+))_(?<text>.*)$
rare rover
#

idk why this is happening lol

slender elbow
#

it's directly backed by the array and arrays are not resizable

silent cove
#

dude i wonder if they're just doing all of the resourcepack stuff in a separate server entirely!

sterile token
tender shard
torn shuttle
silent cove
#

what are you doing with the regex/discord ?

slender elbow
tender shard
#

I have even commented them D:

glad prawn
#

method name 😭 omg

tender shard
slender elbow
#

hah, wait until you read the names of test functions in other languages that allow for spaces and stuff

#

I think it's even worse in ruby lol

glad prawn
#

speechless fr

quaint mantle
#

whats good

quaint mantle
opal juniper
#

plugin / theme

rare rover
sterile token
#

I need some help i fucking strugglign with my command framework

#

Its killing me

#

I cant find how the fuck to do, to when you run /faction points receive only the sub command names, without including any argument child. Meaning that output should only be:

/faction points list
/faction ponts test

#

I sound really dumb but 16 hours! I have re written it 5 times and from scratch 1 time

lilac dagger
vital sandal
#

Anyone have any clue about that cube ?

topaz panther
#

how can i possibly make a specific block stop rendering?

#

from a specific block distance?

lilac dagger
#

from server side?

#

you can make it air

#

if that's alright

topaz panther
#

client side

#

is it even possible lol

#

some sort of Anti ESP

topaz panther
vital sandal
#

have a look at oresobfuscated plugins

echo basalt
final monolith
#

It's possible to change the title of a gui?

#

lol

#

xD

pseudo hazel
#

yes

final monolith
#

How?

pseudo hazel
#

what version

final monolith
#

Since it doesn't not even have packets for this

#

Latest 1.20.1

pseudo hazel
#

iirc there is inventoryview.settitle

final monolith
#

it dont

#

Ohh it does

#

i'll check, thank you!

#

My bad! hahah

pseudo hazel
#

lol, but dont use packets if you dont have to i guess

final monolith
#

I'll use the Bukkit one. If i don't have the aswner for something i first look into packets to see if it's really possible hahah

echo basalt
#

Yeah you just send a packet

ripe moat
#

how would i use YamlConfiguration.loadConfiguration with the boosted yaml library?

lilac dagger
#

server spigot, client the game with what you see

gilded granite
#

can som1 tell me what is wrong with my code

pseudo hazel
#

I would think if anything the client can be manipulated the easiest xD

humble gale
#

e/pv 1

gilded granite
#

how to set a block to be fully grown?

upper hazel
#

I heard about some criteria for evaluating the code in IT "BIG 0" ​​ is called right?

#

Are there APIs for working with packages in a more abstract way?

#

not protocolLib

#

more simple

echo basalt
#

has to do with algorithm time complexity

#

As in how well it scales

#

Something that's O(1) means it runs in constant time regardless of how many inputs there are

#

O(n) is linear with input time

#

etc

lilac dagger
#

you can tell how well the code will run simply by lowering the time complexity

grizzled oasis
#

how can i generate hash securly (im using this for private world), using sha256/sha512

quaint mantle
#

why do you want to generate hash
easily, just find library for hashing

quaint mantle
#

you can even make own hashing method lol

#

it isnt hard

lilac dagger
#

should be enough

grizzled oasis
#

for the project that it is, creating one is not that much, only me and the other 2 owner know the password of the database and even with that they don't know how access it and its only locked in localhost

lilac dagger
#

then you could just as well go with md5

#

but if you're fearing

#

then use salt

quaint mantle
#

or use something like MD6 or Blake3

grizzled oasis
#

just don't know if using it

grizzled oasis
lilac dagger
#

try this instead

grizzled oasis
lilac dagger
#

just go with java

grizzled oasis
tawdry pilot
#

how can i simulate op for players with * permission spigot 1.8.8

lilac dagger
#

👍 you're welcome

grizzled oasis
tawdry pilot
#

giving the "*" permission using the setPermission() method without the player getting added to the ops.json list

tawdry pilot
#

im pretty sure the * perm itself isnt recognized by bukkit and is just a placeholder

grizzled oasis
tawdry pilot
#

thanks ill give it a go

grizzled oasis
dense geyser
#

I'm trying to update my old hologram system which worked by spawning invisible armor stands. At some point since 1.8, PacketPlayOutSpawnEntityLiving was removed which is something I relied on. Does anyone know what it was replaced with, or know a better way of spawning holograms?

#

oh I didn't even spot clientbound packets, hmm

lilac dagger
#

playerConnection.send(new ClientboundAddEntityPacket(this));

#

this one

#

the first one was for remove

#

assuming you got

#

?nms

lilac dagger
#

set up

dense geyser
#

just buildtools'ed it and it seems to be in already so I believe so

lilac dagger
#

awesome

dense geyser
#

so whats the difference between PacketPlayOut and Clientbound 🤔

lilac dagger
#

nothing

#

just a different name

dense geyser
#

oh

lilac dagger
#

packetplayout was the guess of bukkit/md5

#

and clientbound is what mojang named it first

#

or i assume this

#

if they changed it meanwhile, i don't know

dense geyser
#

¯_(ツ)_/¯

#

so does the whole livingentity part not matter anymore lol

lilac dagger
#

nope

#

everything is named differently

#

it should be much closer named since it's no longer a guess really

dense geyser
quaint mantle
#

i like blake3 more

lilac dagger
#

it's up to whoever decides what shash they like

dense geyser
#

thanks for your help 😄

lilac dagger
#

no problem

misty current
#

can I use DateFormat to parse an unix timestamp to 1d, 4h if the timestamp is higher than a day, to 5h, 53m if the timestamp is higher than an hour and so on?

#

this channel is for development help, not plugin requests

tidal kettle
#

hello i try to set a message when a playerr join the server but it don't work
any idea why?

#

ah yes

topaz cape
#

dude has been waiting all his life for this moment

#

you had it pre-written

shadow night
#

Lol

topaz cape
#

eventhandler

tidal kettle
#

ok you understand

#

don't wan't to ping

hazy parrot
misty current
#

i guess just a chain of checks if the unix date is higher than a certain amount and format based on that

hazy parrot
#

Then make sec moduo of that and divide with 3600 to get hours

quaint mantle
#

you can just use format function from Date

grim hound
#

Is there a way to kick a player async?

glad prawn
#

for what

grim ice
#

You cannot @grim hound

lilac dagger
#

why would you ?

#

pretty sure the kicking does happen in async

#

just the bukkit part is in sync

grim ice
#

The thread blocks until the player is kicked

lilac dagger
#

yes like any single action you take

#

but that doesn't mean it stops your server for more than the time the computation happens

#

there's no writing to a file or sending data to some far away server

grim hound
#

hmm

#

Let's say that I have the exact same byte array pixels that need to be rendered on a map. Is the MapCanvas#setPixel the only method I can set it with? Like there's no way to just set it all to the bytes I have with one method?

echo basalt
grim hound
#

I'm not using nms

echo basalt
#

Routing through MapCanvas#setPixel is about 50x slower

grim hound
#

ye

echo basalt
#

So ideally you'd just write into the map directly

grim hound
echo basalt
#

hm

#

Seems like the buffer is in CraftMapCanvas

grim hound
#

this is the fastest method I've come up with

echo basalt
#

uhh

#

Reflections might be faster

grim hound
#

huh

echo basalt
#

time to try and see

#

At work I just write the contents into a packet directly

grim hound
echo basalt
#

cache the field

#

n all

grim hound
echo basalt
grim hound
#

buttt

#

so many construction parameters

onyx fjord
#

it is what it is

#

sonarlint wouldnt like

echo basalt
#

sonarlint complains if I have a continue and a break in a for loop

grim hound
onyx fjord
#

or two continue statements

#

youd have to lose performance a bit to satisfy it

echo basalt
#

Like this is fine

#

this is not

grim hound
# echo basalt

One thing: Will the map be shown even if the player isn't holding a map item?

echo basalt
#

Because the map item has the view ID in its nbt

#

And we're sending data to the view ID

grim hound
#

hmmm

#

but then wouldn't the normal packet override our custom one?

#

or do we have to override them in the server write method in ChannelDuplexHandler?

echo basalt
#

What normal packet

grim hound
#

or maybe block them and send ours instead?

grim hound
#

when you give

#

player a map

echo basalt
#

yes

grim hound
#

the server sends a map view packet

echo basalt
#

uh

#

no

grim hound
#

wouldn't that override my own packet?

grim hound
#

uh

echo basalt
#

It's weird

grim hound
#

soo...

echo basalt
grim hound
#

can you elaborate?

echo basalt
#

The itemstack has a view id attached to it

#

When a view id is created, the packet is sent

#

So you can just

#

Create a view id (sends packet) -> assign it to the item -> send map packet -> give item

grim hound
#

uh

#

but when you create a view id

#

I mean

echo basalt
#

just trust me, it'll work

grim hound
#

the view id is created when you create a map view?

echo basalt
#

ye

#

Like mapviews are entirely a bukkit concept

grim hound
#

so when you pre-generate the item there would be no one to receive that packet?

quaint mantle
# echo basalt this is not

why r u checking for holiday itrm everytime someone crafts? why not instead check everytime a player joins or something

echo basalt
quaint mantle
#

and also use parallel stream ig

echo basalt
quaint mantle
echo basalt
#

.. no

#

It just prevents you from crafting with the custom items

#

No need for parallel streams or whatever the heck

quaint mantle
#

what

echo basalt
#

it's just added overhead

onyx fjord
echo basalt
#

no point in multithreading looping over 9 entries

quaint mantle
#

i thinked of something else

echo basalt
#

or 4 sometimes

quaint mantle
#

also i still cant understand the whole for loop

grim hound
onyx fjord
#

?

echo basalt
#

here's the whole class

#

figure it out

quaint mantle
#

but whats the point of for loop tho

onyx fjord
#

to iterate

quaint mantle
#

but why

onyx fjord
#

for fun

grim hound
#

and the get is probably from a Set or a Map which take very little time to find their assigned value

echo basalt
#

uhh

#

in this case it checks nbt

#

which is also fast

shadow night
#

Is it possible to code in only craftbukkit?

quaint mantle
#

onRename i can understand
but onCraft, why there is loop???

grim hound
#

also that

echo basalt
#

my sharex is broken fml

grim hound
quaint mantle
#

why there is loop in onCraft and not in onRename

grim hound
shadow night
grim hound
#

if that's the case

onyx fjord
#

anvil always results in one itemstack

quaint mantle
#

but crafting returns only one itemstack

#

from 9 items

grim hound
echo basalt
#

sharex pls

onyx fjord
#

it clears the result

#

if one of the items is special

#

in the registry thing

echo basalt
#

it's nothing special

grim hound
#

Okay I have a question

quaint mantle
#

couldnt you like do checks already on loop in the game code that checks for crafting instead of adding another loop ontop?
but whatever, i dont think there is either event on when item is checked or possibility of using mixins in spigot lol

grim hound
#

This is the 1.14 constructor

#

and this is the 1.17+ constructor

echo basalt
grim hound
#

dimensions?

grim hound
#

ah

echo basalt
#

just set them to 0, 0, 128, 128

#

or whatever your array length is

quaint mantle
#

does paperweight works with spigot

echo basalt
#

not quite

quaint mantle
chrome beacon
distant wave
#

i have 2 points on x axis, which dont have to be in order and now i have 3rd how do know if 3rd is between those 2? yes its a simple math probably but im bad in math

#

maybe theres method for it

echo basalt
#

uhh

#

Math.min(num1, num2) <= whatever <= Math.max(num1, num2)

distant wave
#

oh my god java doesnt support multiple <

echo basalt
#

just split it up

distant wave
#

ye

echo basalt
#

and reuse stuff

distant wave
#

this is about to be a long if statement

echo basalt
#

you want a cuboid class or somN?

distant wave
#

forgot to swap the variables

#

smh

#

for posY and posZ

echo basalt
#

ew

distant wave
#

yes its ugly

#

but can you do it better?

grim hound
grim hound
echo basalt
#

mappings

grim hound
#

so it's a library?

distant wave
#

does Bukkit.getPlayer(UUID) work for offline players?

echo basalt
echo basalt
distant wave
echo basalt
#

There's something called "obfuscation mappings" which basically allow you to somewhat de-obfuscate a bunch of fields

#

?mappings

undone axleBOT
distant wave
#

cool

distant wave
#

i can use it for my project

echo basalt
#

So we can say like

#

Mojang's ClientboundMapItemDataPacket is Spigot's PacketPlayOutMap

#

And in fabric's yarn it's MapUpdateS2CPacket

distant wave
#

so this method returns offline player only if it was ever on the server otherwise null??

echo basalt
#

Correct

distant wave
#

why is there no version with UUID parameter? this makes it a big mess ig

echo basalt
#

It's a paper method

#

go ask them

distant wave
#

how do you know

echo basalt
#

Just trust me

#

I've been around for long enough

distant wave
#

haha okay thanks

twilit roost
#

are callbacks async or something?
because I can't seem to send plugin message inside callback

#

the teleport method sends the plugin message

grizzled oasis
#

i don't know why and how but, if i load a plugin with this function

public static void registerListeners(@NotNull String packageName) {
        for (Class<?> clazz : new Reflections(packageName + ".listeners").getSubTypesOf(Listener.class)) {
            try {
                Listener listener = (Listener) clazz
                        .getDeclaredConstructor()
                        .newInstance();
                Instance.getServer().getPluginManager().registerEvents(listener, Instance);
                Instance.getLogger().info("new listener registred");
            } catch (NoSuchMethodException | InvocationTargetException | InstantiationException | IllegalAccessException e) {
                e.printStackTrace();
            }
        }

if i use it into an another plugin then it doesn't work like magic
Class i used to test:

public class testEvent implements Listener {

    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        Bukkit.broadcastMessage("UWU");
    }

}
mellow pebble
#

?paste

undone axleBOT
smoky oak
#

no youre not nevemind

#

there's nothing in the logs is there?

mellow pebble
#

Hi I am trying to use Kraken Tablist API which is free and open sourced on github https://github.com/bizarre/Kraken I know this is legacy and that my plugin im working with is for legacy version but I have like 3 errors which are packet oriented basically i have erros for PacketPlayOutPlayerInfo and in the code from GitHub there are functions used like updateDisplayName() and removePlayer() which couldnt be found by my IDE for some reason (things changed in api ofc) but im asking how and with what should i replace those functions to get the same thing but for 1.8.8 version

https://paste.md-5.net/uyafulafag.cs

GitHub

Light-weight object-oriented Tab-API for the Bukkit/Spigot API - GitHub - bizarre/Kraken: Light-weight object-oriented Tab-API for the Bukkit/Spigot API

tender shard
lilac dagger
#

oh

#

but this seems fairly easy via coding

#

some sort of placeholder replacer

#

not sure how it would work with papi

#

but i'd just tokenize the string in java

#

and then do things with it

smoky oak
#

if you build using maven, does it automatically end up in your maven local?

lost matrix
smoky oak
#

uh

#

the arguments for the run command?

tender shard
#

"run command"?

lost matrix
#

mvn install

tender shard
#

the arguments for "install" is "install" obv

smoky oak
#

the configuration thing

tender shard
#

no clue what you mean with run command

smoky oak
#

button

tender shard
#

?

#

question

#

try speaking in full sentences

smoky oak
#

it says 'run <plugin name> [argument list]'. I'm pretty sure thats what you meant

#

to add install to that argument list

remote swallow
#

no

tender shard
#

no, just go to maven tab -> lifecycle -> double click install

lost matrix
#

This button launches whatever you configure it to.
Show us your current configuration for it,

smoky oak
#

'clean compile package verify install' rn
I looked at the maven tab, cant seem to find the lifecycle thing. Are there more than one spot you can change maven stuff in?

remote swallow
#

what the frick

smoky oak
#

nvmind

#

its in that submenu

lost matrix
#

"Which maven lifecycles do you want?"
Yes. And twice.

tender shard
#

declaring "compile package and verify" is pointless if you already used install

#

and cleaning everytime is also quite pointless

smoky oak
#

noted
though that only builds it once right? I was trying to figure out how to make it do that every time
I'm trying to figure out the difference between build and rebuild right now in that pop up menu if you right click

tender shard
tender shard
smoky oak
#

im using the config cuz of the shortcut, mostly

tender shard
#

clean = cleanup (do that if you changed plugin.yml or pom.xml or similar)

pacakge = compile
install = compile + install to repo
deploy = install + upload to online repo

tender shard
smoky oak
#

wouldn't they overwrite each other long as the version number doesn't change?

tender shard
#

not if they are -SNAPSHOT versions

tawdry pilot
#

PermissionAttachment attachment = e.getPlayer().addAttachment(plugin);
attachment.setPermission(str,true);
Field field = e.getPlayer().getClass().getDeclaredField("perm");
field.setAccessible(true);
field.set(e.getPlayer(), new PermissionBase(true));
this code is throwing this exception java.lang.NoSuchFieldException: perm
does anyone know why

lost matrix
#

Because there is no field "perm" in CraftPlayer

tawdry pilot
#

h m

smoky oak
lost matrix
tawdry pilot
#

1.8.8

lost matrix
#

XDDD

eternal night
smoky oak
#

?1.8.8

#

?1.8

undone axleBOT
tawdry pilot
#

2953 days

smoky oak
#

yea good luck

tawdry pilot
#

tysm

lost matrix
#

Wont be long until the average 1.8 player wasnt alive when the version came out

smoky oak
#

i see. So removing that part would fix it then?

tender shard
#

maven then updates snapshots once per day from online repositories

#

that's the point of snapshots

smoky oak
#

ah

#

lright thanks

tender shard
#

if you really want to overwrite the same file again and again, you must use ANY version that doesn't end in -SNAPSHOT

#

e.g. -dev

#

1.3.3.7-dev e.g., when you install that again, it replaces the existing version in your repo

smoky oak
#

well, I probably need to rebuild quite frequently, since I'm figuring out how to create libraries right now

tender shard
#

the purpose of snapshots is also exactly that they don't overwrite each other, because public repositories usually never allow overwriting existing files

#

if you uploaded me.whatever-1.0 to maven central, it's there. if you want to overwrite this, no. you must use 1.0.1 etc for the next time, 1.0 is now uploaded and can't be overwritten

#

and yeah that's the purpose of -SNAPSHOT

smoky oak
#

I see. On a similar topic, how can i also make it build javadoc?

#

its a plugin? huh

tender shard
#

maven-javadoc-plugin and then add an execution for it

#

One second

remote swallow
#

javafoc

tender shard
#

This automatically creates javadocs and also installs / deploys them

smoky oak
#

It works, thanks

grizzled oasis
smoky oak
#

yea I've worked with reflection befeore, but not dynamic, so I'm a bit out of my depth here, sorry. Can you step through it with a debugger?

tender shard
tawdry pilot
#

thanks

grizzled oasis
smoky oak
#

I suddenly feel a lot less secure about making libraries lol

grizzled oasis
tender shard
#

oh btw please send your pom.xml - I have to check it for one specific, very important common mistake lol

smoky oak
#

?paste

undone axleBOT
smoky oak
#

i mean

#

it works

tender shard
#

ok great, looks good. I thought maybe you would be having <createDependencyReducedPom>false in your maven-shade-plugin

#

because you should never do that

remote swallow
#

why

tender shard
#

but you don't even use the maven-shade-plugin, so all good

lilac dagger
#

uh oh ^^

#

i do have it

tender shard
#

because it

  1. only has downsides
  2. has not a single advantage
#

it leads to transitive dependencies being shaded into the plugin that uses the library

#

meaning, you'll have them twice in the plugin

gilded granite
#

what is WolrdServer but for nms pleae

smoky oak
#

i mean, if regular maven does the job

tender shard
remote swallow
#

?mappings

undone axleBOT
remote swallow
#

mojmaps is ServerLevel

tender shard
#

Imagine LibraryA shades ACF

  1. Library uses co.aikar.commands and shades it into my.library.acf
  2. Now PluginB shades LibraryA and relocates it to my.plugin.shaded.my.library
  3. Now you'll have ACF twice in your plugin: Once at co.aikar.commands (because maven shades it directly into Plugin B because the pom for Library A declares it as dependency and hence it becomes a transitive dependency of Plugin B) and then again at my.plugin.shaded.my.library.acf because that's included in Library A

If you let maven create the dependency-reduced.pom for Library A, then that pom won't include ACF as dependency because it's already shaded and hence the lib doesn't requite as additional dependency anymore

#

This is the reason why disabling dependency-reduced can lead to problems. ANd disabling it does have not a single advantage

lilac dagger
#

good to know

#

i guess i never shaded stuff into my plugins for this to be a problem

tender shard
#

yeah it's really only a problem if you shade stuff into "library A" while also relocating it inside library A's pom and then shade "library A into Plugin B"

smoky oak
#

ah i do remember now, and why i dont use shading

#

my argument is 'why waste perfectly good disk space'

gilded granite
#

?nms npc

tender shard
# tender shard Imagine LibraryA shades ACF 1. Library uses co.aikar.commands and shades it into...

Many people who are using the maven-shade-plugin commonly set to false for reasons beyond my grasp. This is generally a bad idea, as it can lead to problems if you’re writing a library, and has absolutely no advantages. Here’s a rule of thumbs: If your project shades dependencies, it should create a dependency-reduced.pom. The...

humble heath
#

i have multiple config files but how do i pull from a certen config

tender shard
austere cove
#

boys when building surefire does not print to my terminal if/when tests are aborted, let alone the abort message

#

am I doing something wrong?

humble heath
austere cove
humble heath
#

my create file section i have created and loaded the file but cant access it

smoky oak
#

I know that DRM isn't really a thing for spigot, but I wanted to ask if there's a way so that it takes more than 20 minutes and a decompiler to rip out safety checks

#

I want to make it so that i can hard-code something (IP, hardware serial number etc) into a plugin so it can't be run on other computers than the one it's intended for

lilac dagger
#

you're not allowed to make plugins hard to read

#

you are allowed to obfuscate code and very rarely to do more if you're allowed

#

you can't do any of those stuff from your second question

remote swallow
smoky oak
#

how the f

#

this isnt about obfuscation lol

#

I want some way to ensure the plugin can only be run by the one it's made for, but i dont know if that's possible slash allowed

remote swallow
#

it might crash it

#

idk

smoky oak
#

probs not but you know, the moment more than 1 person has access to root...

lilac dagger
#

or for private usage like to a specific person

smoky oak
#

specific

remote swallow
#

if it isnt going on spigot, you can do whatever you like

smoky oak
#

that doesnt actually mean i know how to do it

#

i mean

#

i could check if a certain player by UUID has joined a server, or run the plugin file through a hash function, but whats anyone preventing from just ripping out that check

lilac dagger
#

i'm sure you can get the hardware id of a server

#

just look online

#

there has to be a way

smoky oak
#

thats not the issue
the issue is idk how to prevent the plugin to get modified to run anyways

lilac dagger
#

you can hardcode that in the plugin

#

proguard

smoky oak
#

the java part of that website isnt loading, any other ideas?

#

oh now that i complained it works

#

typical

#

oh actually, would it be allowed to publish obfuscated plugins on spigot if an unobfuscated copy is made available to the staff along proof that it's the same logic?

lilac dagger
#

wdym?

#

you can put an obfuscated plugin up to a limit

#

where then it becomes too hard to tell what it does then the stuff won't allow you to publish

remote swallow
smoky oak
#

i mean if it's still reaedable whats the point

remote swallow
#

stop in-experienced people

smoky oak
#

he point

#

btw

remote swallow
#

obsfucation on free plugins is entirely pointless

smoky oak
#

🤷 I'm just curiuos about the details right now

#

btw is that a restriction on spigot, the codebase, or spigot, the website?

#

for published stuff i mean

remote swallow
#

just rules

lilac dagger
#

it's a restriction by the stuff to prevent malicious plugins

#

we have optic, but optic can do so much

remote swallow
tawdry pilot
#

how can i use craftbukkit in spigot 1.8.8

#

is the only way shading

chrome beacon
#

Don't shade that won't work

tawdry pilot
#

oh?

chrome beacon
#

Also your plugin will be massive

quaint mantle
#

reflection?

tawdry pilot
#

lmao

#

i tried adding dependencies but that didnt work

chrome beacon
#

Why include the server in your plugin

smoky oak
# remote swallow

so apparantly I'm not allowed to publish any code on spigot
part 4.1.6.4

chrome beacon
#

Anyways just add the spigot dependency

#

That will work

#

oh and don't forget to run BuildTools

quaint mantle
smoky oak
tawdry pilot
#

<repository>
<id>bukkit-repo</id>
<url>http://repo.bukkit.org/content/groups/public/</url>
</repository>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>craftbukkit</artifactId>
<version>LASTEST</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
im using these and intellij says the groupid and artifactid doesnt exist

quaint mantle
chrome beacon
#

That's ancient where did you even find that

tawdry pilot
#

a lot of googling

chrome beacon
tawdry pilot
#

im already using spigot for my plugin i just want to use craftbukkit specific classes

chrome beacon
#

The Spigot artifact contains them

tawdry pilot
#

<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.8.8-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
this is also causing an error

chrome beacon
#

Did you run BuildTools like I told you to?

#

?bt

undone axleBOT
tawdry pilot
#

oh dang

#

does intellij automatically pick up on that or do i need to do seomthing on my part

remote swallow
#

once youve ran bt reload maven

tawdry pilot
#

oh

#

can i run bt in any folder or does it have to be the project folder

remote swallow
#

it can be ran anywhere

chrome beacon
#

^^

#

BuildTools will put the jar in your maven local for you

#

So where you run it doesn't matter

tawdry pilot
#

huh

tender shard
#

Oh

dawn flower
#

is it possible to register a command just like registering it into plugin.yml but without actually registering it into plugin.yml just using java code

tender shard
#

Then

echo basalt
#

inject into the command map

tender shard
#

Many people are confused on how to use NMS classes when they’re new to writing Bukkit/Spigot plugins because their IDE doesn’t find those classes. Don’t worry. What is NMS? NMS refers to net.minecraft.server. This package contains all the classes that Mojang wrote for the vanilla Minecraft Server. You can use them to change the server’s...

chrome beacon
dawn flower
chrome beacon
dawn flower
#

k

#

ty

lost matrix
lilac dagger
#

i don't like the idea of hardcoding stuff into plugin.yml

#

but it makes sense since the plugins shouldn't have too much power to overwrite other plugin's commands

lost matrix
#

Dont tell me what to do squint

ivory sleet
#

i dont like to have commands at all in plugin-yml, don't think that belongs to the plugin meta info at all

#

but bukkit being bukkit long time ago made one thing lead to another pepe_shrug

tawdry pilot
#

after reloading my maven it says cannot resolve symbol bukkit

tender shard
#

?paste your pom

undone axleBOT
remote swallow
#

remove the bukkit dependency

tawdry pilot
#

oh ok

tender shard
#

if you use spigot 1.8.8 for maven, you should only have one dependency: org.spigotmc:spigot:1.8.8-R0.1-SNAPSHOT

tawdry pilot
#

alright

#

Dependency 'org.spigotmcspigot1.8.8-R0.1-SNAPSHOT' not found
hm

remote swallow
#

?paste ur pom

undone axleBOT
tawdry pilot
tender shard
#

you did not run buildtools