#help-development

1 messages · Page 1878 of 1

tardy delta
#

A, C, B, D :(

tender shard
#

if you use getProtocolThing in your onEnable, then Protocollib was LOADED but not ENABLED

tender shard
#

I wanted to show that

willow widget
#

even copy-pasting I get confused and mess it up and take a while xd

calm whale
#

I already tried to move the code in the onEnable the result is the sale

tardy delta
#

autism

analog prairie
#

What does the version number of this spigot mean

tender shard
#

show your pom.xml please, I want to check the getProcolManager source

willow widget
tardy delta
#

thats weird stuff

tender shard
#

yes, as I explained here 🙂

analog prairie
lavish hemlock
analog prairie
willow widget
tardy delta
#

no instant ban

willow widget
analog prairie
#

There isn't number 3378

willow widget
tardy delta
lavish hemlock
tender shard
lavish hemlock
#

HAHAHA

willow widget
tardy delta
#

damn

willow widget
lavish hemlock
#

Good for her then

willow widget
#

her? now we assuming genders?

#

smh my head

calm whale
#
<repository>
  <id>dmulloy2-repo</id>
  <url>https://repo.dmulloy2.net/repository/public/</url>
</repository>```
```xml
<dependency>
  <groupId>com.comphenix.protocol</groupId>
  <artifactId>ProtocolLib</artifactId>
  <version>4.7.0</version>
</dependency>```
lavish hemlock
#

Well if she's a mom

#

That means she's a female

#

Otherwise she'd be a dad (male: him) or parent (gender-neutral: them)

willow widget
quaint mantle
#

How do you change a Glass_PANE ItemStack color

rough drift
#

?

calm whale
quaint mantle
calm whale
#

so use material

tender shard
#

it indeed gets initialized in onLoad

#

did you check your log files whether it actually supports your MC version and enabled correctly? 😛

tender shard
calm whale
#

well it support 1.17 and 1.18 so I guess is supports 1.17.1

tender shard
#

when you have cyclic dependencies, it loads plugins in random order

calm whale
#

already checked

#

no because I configured my plugin.yml

tender shard
#

no...

calm whale
#

really ?

tender shard
#

not if you have cyclic dependencies

#

e.g. if A depends on B, and B depends on C, and C depends on A or A is a loadbefore C (which rarely happens, but sometimes is DOES happen), it gets loaded in a random order

#

or sometimes two plugins softdepend on each other, which is totally stupid. it messes up the entire plugin loading order. at least it used to do so

calm whale
#

so what can I do to get my instance correctly ?

tender shard
#

I'd ask on ProtocolLib's discord or github or sth

#

tbh I don't like ProtocolLib and avoided it everytime I could

#

it's like 12 times more complicated than just using NMS packets

feral wing
#

hi there,

trying to use the libsguise API and i want to be disguised as the block the player is currently clicking on, so i wrote this :

@EventHandler
    public void onInteract(PlayerInteractEvent e){
        Player player = e.getPlayer();
        if (e.getAction() == Action.RIGHT_CLICK_BLOCK){
            Block b = e.getClickedBlock();
            try{
                Material material = (b.getType());
                MiscDisguise md = new MiscDisguise(DisguiseType.FALLING_BLOCK, material, 0);
                DisguiseAPI.disguiseToAll(player, md);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        }
    }

but when i click the console is sending a error ( java.lang.NullPointerException: Cannot invoke "me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher.setBlock(org.bukkit.inventory.ItemStack)" because the return value of "me.libraryaddict.disguise.disguisetypes.MiscDisguise.getWatcher()" is null)

can someone please help me with this ?

rough drift
tender shard
#

I mean one that supports your current MC version?

#

getWatcher looks like pre 1.18 code

feral wing
#

my server version is 1.18

#

and i downloaded the latest LD version

spiral light
#

is the latest LD version for 1.18 ?

feral wing
#

i think so

tender shard
#

you might ask on their discord / github / etc

feral wing
#

ok, thank you !

hollow sand
#

Does anyone have an article or a video on how to do 1.8 custom enchants?

#

searched all over yt, google and haven't found an answer

quaint mantle
rich inlet
#

Hi!
How do I import the Chat Component API into my project? (using maven in IntelliJ)
I want to use clickable Text messages etc. :)

vocal cloud
rich inlet
#

Yes :)

spiral light
#

its already in spigot ?

vocal cloud
# rich inlet Yes :)

That's an API for Bungee. It's built into the dependency net.md-5:bungeecord-api

tacit drift
#

if i don't mention any memory args for a jar, the jvm will use memory on demand?

rich inlet
tacit drift
#

oh not good

vocal cloud
rich inlet
#

So theres no way for me to have clickable text in my spigot plugin?

brave sparrow
#

Yes there is

#

That bungeecord api is packaged with spigot

candid galleon
#

the bungee components are built into spigot

brave sparrow
#

You can use them just like you’d use the rest of spigot

rich inlet
#

Oh no, now I see it.. sorry for bothering xD Now I got it

vocal cloud
#

So it is. It's not importing properly in my project for some reason.

cosmic dagger
#

How would I send a HTTP POST request from a minecraft plugin in java?

vocal cloud
stray crater
#

Where is the updated DeluxMenus plugin?

cosmic dagger
#

haven't done alot of base java, so not 100% how id do that. ive tried a couple of ways but doesnt work.

long story short. this is the curl command i want to do. but from a minecraft plugin.

curl "http://192.168.10.189/api/application/servers" \
  -H 'Accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer myapikey' \
  -X POST \
  -d '{
  "name": "[ongoing event] - Testing",
  "user": 1,
  "egg": 18,
  "docker_image": "ghcr.io/pterodactyl/yolks:java_17",
  "startup": "java -Xms128M -Xmx10240M -jar paper-1.18.1-140.jar",
  "environment": {
    "": ""
  },
  "limits": {
    "memory": 10240,
    "swap": 0,
    "disk": 20480,
    "io": 500,
    "cpu": 0
  },
  "feature_limits": {
    "databases": 5,
    "backups": 1
  },
  "allocation": {
    "default": 4
  }
}' 
vocal cloud
#

Can always use postman it'll do a lot of the work for you.

eternal night
#

Not like java has an inbuilt http client

#

That got a lot of love in java 11

cosmic dagger
#

ive tried using that with no results

#

it worked when using a public website. but not when using localhost/lan

cosmic dagger
dense heath
vocal cloud
tender shard
eternal night
#

Java 9 added it and 11 improved it afaik

#

So if you can, go with it

tender shard
vocal cloud
#
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n  \"name\": \"[ongoing event] - Testing\",\n  \"user\": 1,\n  \"egg\": 18,\n  \"docker_image\": \"ghcr.io/pterodactyl/yolks:java_17\",\n  \"startup\": \"java -Xms128M -Xmx10240M -jar paper-1.18.1-140.jar\",\n  \"environment\": {\n    \"\": \"\"\n  },\n  \"limits\": {\n    \"memory\": 10240,\n    \"swap\": 0,\n    \"disk\": 20480,\n    \"io\": 500,\n    \"cpu\": 0\n  },\n  \"feature_limits\": {\n    \"databases\": 5,\n    \"backups\": 1\n  },\n  \"allocation\": {\n    \"default\": 4\n  }\n}");
Request request = new Request.Builder()
  .url("http://192.168.10.189/api/application/servers")
  .method("POST", body)
  .addHeader("Accept", "application/json")
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer myapikey")
  .build();
Response response = client.newCall(request).execute();

Or you can add more bloat with OkHttp

vocal cloud
#

Postman does the work for me so I can drink more coffee.

tender shard
dense heath
vocal cloud
dense heath
cosmic dagger
vocal cloud
cosmic dagger
#

thankss

vocal cloud
#

I use the alpha build but there are more stable releases

tender shard
#

I wish I'd had a use for Postman because it looks awesome

vocal cloud
quaint mantle
#

today i learned that you can use
Collection<? extends Foo> to make collections immutable

quiet ice
#

not really

#

You can always break the generics contract

quaint mantle
#

i mean, at compile time

#

oh nvm we have remove that takes objects

ivory sleet
#

Well I don’t know if remove would accept a capture of ? extends Foo

quiet ice
#

Well removeIf would work

glossy venture
#

i dont understand why Map<K, V> takes Object as a parameter to get instead of K

ivory sleet
#

Hmm yeah maybe if that predicate has the type ? super Foo maybe?

cosmic dagger
quiet ice
#

Generics in java are strange

glossy venture
#

but at runtime everything is an object

quaint mantle
#

but there's no point of having K generic

glossy venture
#

generics dont exist

ivory sleet
#

Untrue

#

there are refiable generics or whatever you call it

#

For instance a derived class which passes the type to the super type constructor

quaint mantle
#

It uses only methods ob Object? So you'll have at least less problems if you dont about map generic types

vocal cloud
glossy venture
quiet ice
#

Oh, perhaps if you have a subclass that says K extends Subobject javac would compile the method down to put(Subobject, V) if not handled properly

glossy venture
#

true

quaint mantle
#

Maps without generics are.. Eh

quiet ice
#

So in order to not mess with this strange behaviour they opted to just apply this to the key? Idk

quaint mantle
glossy venture
#

yeah

#

but still

#

idk it just makes sense to me

cosmic dagger
#

i dont even know what i did

#

thanks!

vocal cloud
cosmic dagger
#

yea yeaaa

quaint mantle
#

Well okay

#

At least users of my api are not going to add elements or put anything in unmodifiable maps

ivory sleet
#

I assume you will annotate your collection return methods with @Immutable/@ImmutableView or sth if you simply expose the abstract collection type

cosmic dagger
ivory sleet
#

Very pog

vocal cloud
#

This is where postman helps. You can use it to test the API before adding it to java.

cosmic dagger
#

ah right i was gonna try that

#

woah postman is like really cool 👍

silent coyote
#

for some reason why I went to make my account and activate it, it would not allow me to activate.

#

could someone help me with that if possible?

tender shard
#

your spigot account?

hybrid ledge
#

What is good way to modularize stuff so it is nicely separated and without cyclic dependencies?
My idea is to have one IntelliJ IDEA project with all Maven artifacts from all my plugins - and each JAR file would consist of two artifacts - one API module and one IMPL module... so basically 2x pom.xml for one plugin... and plugins would rely only on API modules and nothing would rely on IMPL modules. But I'm not sure if this is the correct approach.

quaint mantle
#

Yep, thats how you do it

cosmic dagger
#

hm

vocal cloud
cosmic dagger
#

im running it async already

royal vale
#

EntityDamageByBlockEvent doesn't return the block when being damaged by a respawn anchor.

#

Is there a solution for this?

cosmic dagger
#

i have a suspicion it has to do with that im running the server in a docker container and it cant access localhost on the host

spiral light
vocal cloud
spiral light
#

@royal vale its 99% the BlockExplodeEvent

lost matrix
vocal cloud
glossy venture
#

ohk

spiral light
tender shard
royal vale
quaint mantle
#

Okay so I've made this class on another project that built the project with gradle, then imported it with gradle on my main project, but I cannot seem to use
CommandHandler example = new CommandHandler();

tender shard
#

run ip a and check for the docker network

#

mostly it's 172.17.0.1

#

oh

#

I marked the wrong line

#

it's of course the device one above

#

the one with "docker0"

royal vale
spiral light
# royal vale How would I get all damaged entities

catch all block explosions, since both events will happen in the same 1 or mabye 2 ticks you can assert that the entitys will get damaged right after the blockexplosion, remove the cached blockexplosion after 3 ticks to be sure

and between within those 3 ticks all entitys that get dmged by respawn anchors got their dmg from that block (of course check same world, distance and closest respawn anchor)

quaint mantle
#

Cannot use Classes from my Library. Im new in making libraries

fathom cobalt
#

new libraries addition to plugin.yml seems to be working odd for me...

I defined my dependency in there, and server downloads it... However, when the plugin is trying to load, it complains about a missing class, even though it says a few lines before that it loads the library containing said class...

any ideas why this could be?

vocal cloud
fathom cobalt
#
  1. check
  2. neither, it's a library under the libraries-option defined like group:library:version
  3. nope, this jar is in <SPIGOT_ROOT>/libraries/<PATH_TO_DEPENDENCY>
  4. it's not another plugin, it's a development dependency library
mighty pier
#

is it possible to get all of the luckperms groups in a list?

#

with a loop or something

quaint mantle
#

Hello i have a problem with the spigot 1.12.2 API, my code line thats the error caused is if (player.getInventory().getChestplate() != null && player.getInventory().getChestplate().getType().equals(Material.ELYTRA)) {

look in the ScreenShot, i have a nullPointer when the player run the code line with right click on block or air. Please Help?

#

I had the same problem yesterday with event.getItem().getType() which I then solved with event.getMaterial()

#

I cant add a picture wait

cosmic dagger
vocal cloud
#

You switched the IP for the one where the IP is?

vocal cloud
quaint mantle
cosmic dagger
#

not sure if thats correct

quaint mantle
vocal cloud
quaint mantle
tender shard
#

what actually is the problem? you want to ping / access the host system from within a docker container?

#

if so you will have to use the IP of the docker0 interface that's shown on the Host system

quaint mantle
#

It must come from this line because it only happens when this query is made.

vocal cloud
#

Throw the log file in pastebin and send it over.

cosmic dagger
#

and it says "connect timed out"

#

which im assuming is due to something with docker

tender shard
#

show ip a from inside the container pls

#

it must be attached at least to the bridge interface

#

otherwise it cannot see anything outside of the container

#

if you do docker network ls it shows a list of all networks

tender shard
#

you can also do docker inspect <containerid>, then check the attached networks. if it is not connected to the brdige, it can't access the host

cosmic dagger
#

alright ill try that

tender shard
#

e.g. this container has IP 172.17.0.2 and can access the host at 172.17.0.1 (gateway)

#

you can connect a container to the bridge using docker network connect bridge <containerid>

#

or any other network but you probably want to use "bridge"

cosmic dagger
#

im pretty new to docker and i havent really gotten to learning the networking things

tender shard
#

docker is a pain to setup imho

cosmic dagger
#

ive realised that a bit lmao

#

not really sure what to do with this information lol

quaint mantle
vocal cloud
quaint mantle
#

i have try very much methods, all methods nullPointer

quaint mantle
vocal cloud
quaint mantle
tender shard
#

but normally it's 172.17 and not 172.18

#

unless you changed it

golden turret
#

@eternal oxide im trying to use groupmanager but when i add it to my build.gradle, it says that it cannot find the bstats

vocal cloud
golden turret
#

?paste

undone axleBOT
eternal oxide
golden turret
quaint mantle
eternal oxide
cosmic dagger
# tender shard yep

and i wont need to add anything else to the docker run command or anything

eternal oxide
golden turret
#

you could say the repository of the bstats

#

https://repo.codemc.org/repository/maven-public

#

got from your pom.xml

tender shard
#

as said you'll have to check whether it shows NetworkSettings -> Networks -> bridge

#

if not, you have to connect it first

eternal oxide
vocal cloud
# quaint mantle Its Only on this event

So it's the line

if (player.getInventory().getChestplate() != null && player.getInventory().getChestplate().getType().equals(Material.ELYTRA)) {
                        player.sendMessage(config.getString("paraglider.messages.alreadyUse").replace("%prefix%", LobbySystem.getPrefix()));
                    }
golden turret
#

i added that and everything worked

eternal oxide
#

odd but ok

vocal cloud
hybrid ledge
#

Finally managed to properly handle my modules... it was a pain

cosmic dagger
torn shuttle
#

this is sort of peripheral to making plugins but does anyone have a better markdown editor for github wikis than the default github editor, because it suck ass

worthy scarab
#

Hello, how can I fix player spawn location I mean I get spawned in the block or something ```public class RTPCommand implements CommandExecutor {

final Random random = new Random();

@Override
public boolean onCommand(@NotNull final CommandSender sender, @NotNull final Command command, @NotNull final String label, @NotNull final String[] args) {
    if (sender instanceof Player) {
        final Player p = (Player) sender;
        final Location rtp = new Location(p.getWorld(), random.nextInt(10000), 100, random.nextInt(10000));

        if (getSafeLocation(rtp) == null) {
            p.teleport(rtp);

        }
    }

    return false;

}

public Location getSafeLocation(final Location location) {
    final Block blockNotEmpty = location.getWorld().getHighestBlockAt(location);

    if (blockNotEmpty.getType().isSolid() && blockNotEmpty.getRelative(BlockFace.UP).isSolid()) {
        return blockNotEmpty.getLocation().add(random.nextInt(1000), 100, random.nextInt(10000));
    }

    return null;
}

}```

young shell
#

How can I create Maven Sources

chrome beacon
#

Maven source plugin I'd assume

tender shard
#

idk if restarting the container is required, but after that you should be able to ping the IP that's shown in ip a under docker0 on the host from inside the container

#

oh wait @cosmic dagger

#

connect it to "host", not "bridge"

cosmic dagger
#

some weird error when doing docker network connect host <id>

tender shard
#

ugh

#

you'll have to stop and remove the container, then run it again with the --network host option

#

strange, I didnt know that is necessary

#

I hate docker so much lol

#

it makes EVERYTHING 12 times more complicated lol

#

but maybe just try it with the bridge first

#

you can always connect it to the bridge and that might work too

#

iirc I got it to work with bridge

cosmic dagger
#

i tried bridge, didnt work

#

ill try host

#

with those steps

tender shard
tropic stream
#
    public void OnBowFire(EntityShootBowEvent e){

        Projectile projectile = e.getProjectile();


        }
    }```
#

why can't i do this?

hexed hatch
#

What do you mean “why can’t I do this”

#

What’s the error?

tropic stream
#

incompatible types: org.bukkit.entity.Entity cannot be converted to org.bukkit.entity.Projectile

hasty prawn
#

Why? No idea.

#

But you'll just need to check & cast

tropic stream
#

Thank you

tropic stream
#

How would one go about getting the distance the projectile travels I assume I use two .getlocations ??

tender shard
tropic stream
#

Sorry I am very new to Java and plugin coding

#
    public void ProjectileHit(EntityDamageByEntityEvent e){
        Entity player = e.getDamager();
        Location shoterlocation = player.getLocation();
        Entity shot =  e.getEntity();
        Location shotlocation = shot.getLocation();

        distance(shotlocation, shoterlocation);

    }```
#

but can someone please help me with how to do the distance part of this

young knoll
#

Location1.distance(Location2)

young knoll
#

Also

vocal cloud
#

Realize that if the shooter moves then when the arrow hits you'll have screwed data.

tender shard
#

Your "player" is the arrow

young knoll
#

?learnjava before plugins

undone axleBOT
tropic stream
#

yikes seems like i have alot more googling todo on how to code anything like this at all

tender shard
tropic stream
tender shard
# tropic stream okay thank you
    @EventHandler
    public void ProjectileHit(EntityDamageByEntityEvent event){
        Entity victim = event.getEntity(); // The entity who was hurt
        Entity damager = event.getDamager(); // The entity that dealt damage
        if(!(damager instanceof Projectile)) {
            // This is not a projectile. Do nothing
            return;
        }
        Projectile projectile = (Projectile) damager; // Now we know it's a projectile, we can cast it
        ProjectileSource source = projectile.getShooter(); // The source, i.e. whoever shot this projectile. Can be a dispenser, player, skeleton, ...
        
        if(!(source instanceof Player)) {
            // The shooter is not a player. Do nothing
            return;
        }
        
        Player player = (Player) source; // Now we know it's a player, we can cast it. ALthough we don't need to
        double distanceBetweenShooterAndVictim = player.getLocation().distance(victim.getLocation());
    }
#

I assume this is what you want to do

tropic stream
#

Yes excatly

#

Thank you i will try and extend on this an hopefully i'll learn a bit more about java and plugin development

somber hull
#

Ive used maven

#

With gradle

#

WHats the package command?

#

Ive been using shadow cause i needed to shadow on another plugin, but idk how to package normally

#

Build?

vocal cloud
#

The only issue with this is it assume the shooter hasn't moved though. I imagine the calculation involved the distance between from initial point of firing the arrow and impact.

onyx fjord
#

@somber hull build or jar

somber hull
tender shard
onyx fjord
#

gradle build shadowJar

#

This is what u wanna use

tender shard
#

typically "gradle assemble" builds the .jar

onyx fjord
tender shard
#

so assemble is the package thing

#

if you also want to run unit tests, it would be build instead of assemble

somber hull
#

Well i dont need to shadowjar on this project

tender shard
#

do you have unit tests?

#

anyway just use build or assemble

somber hull
#

I honestly have no idea what that is

#

Alright

onyx fjord
#

Shadow is a shading tool

#

Soo

somber hull
#

Ik

#

But i dont need to shade on this project

onyx fjord
#

It builds dependencies into your project

#

Then dont

somber hull
#

On my other project someone helped me set up shading, but i didnt know how to build normally

onyx fjord
#

Gradle build

#

Or assemble

somber hull
#

Alright

quaint bough
#

I am calling an custom event ( Bukkit.getPluginManager().callEvent) but when I am trying to listen for it using event handler it never triggers how can this happen?

#

No console logs either

torn badge
#

@quaint bough Show your event class

tender shard
#

if so did you shade the event into the other plugin as well?

#

because you must not do that

quaint bough
#

within the same plugin

#

nothing fancy but the debugger shows it is getting to that line but nothing is happening

tender shard
#

why do you overwrite your handler list

#

you must not do that

quaint bough
#

yeah ive been figuring out how to make good custom events but its kinda weird

#

i tried extending the InventoryClickEvent but that creates a loop I believe

tender shard
#

why don't you just make your event extend InventoryClickEvent

#

well

#

in your own listener check if event is instanceof your event

#

if yes, return

quaint bough
#

ahh

#

that will make it much cleaner ye

#

but that doesnt explain this behaviour though

tender shard
#

well you overwrite your handler list

#

that breaks everything related to the listeners of your plugin

#

you replace your handlerlist with the one of the normal inventoryclickevent

#

and you listen to your custom event, so your listener is not included in your custom event's handler list anymore

quaint bough
#

so if i dont assign that value it will still work

tender shard
#

you should never touch the handler list

quaint bough
#

but why does that break it does it magically get a value once called?

tender shard
#

it will probably work the first time you call it, then never again

quaint bough
#

ill refactor all my events and see where that brings me, thanks though

tender shard
#

np

quaint bough
# tender shard np

do I still need the getHandlerList method? Cause ive had errors of that before

tender shard
#

Represents an event. All events require a static method named getHandlerList() which returns the same HandlerList as getHandlers().

quaint bough
#

still need the second viarable HANDLER_LIST?

tender shard
#

this is how a minimal cancellable event should look like:

public class ChestSortEvent extends Event implements Cancellable {

    private static final HandlerList HANDLERS = new HandlerList();
    boolean cancelled = false;


    public static HandlerList getHandlerList() {
        return HANDLERS;
    }

    public @NotNull HandlerList getHandlers() {
        return HANDLERS;
    }
    
    @Override
    public boolean isCancelled() {
        return cancelled;
    }

    @Override
    public void setCancelled(boolean cancel) {
        cancelled = cancel;
    }


}

#

since InventoryClickEvent is already cancellable you can make it even shorter if you extend it, but of course have a matching constructor:

#
public class ChestSortEvent extends InventoryClickEvent implements Cancellable {

    private static final HandlerList HANDLERS = new HandlerList();

    public ChestSortEvent(@NotNull InventoryView view, @NotNull InventoryType.SlotType type, int slot, @NotNull ClickType click, @NotNull InventoryAction action) {
        super(view, type, slot, click, action);
    }


    public static HandlerList getHandlerList() {
        return HANDLERS;
    }

    public @NotNull HandlerList getHandlers() {
        return HANDLERS;
    }

}

tender shard
#

I wonder... when kotlin only has "static" methods inside the Companion object, how can I do stuff like having a static deserialize method for ConfigurationSerializable?

ivory sleet
#

Believe just a function inside the companion object + @JvmStatic annotation

tender shard
#

really different from java 😄

#

I'll do some small plugins to get used to it

ivory sleet
#

Pog

tender shard
#

okay I need help

#

Error shows when I damage an entity

#

what's supposed to happen is that ALL entities in that world get the same damage as the one I actually hit

#

I have no idea what that error is supposed to tell me

quaint bough
#

since when does java use :

tender shard
quaint bough
#

oh never heard of that before

tender shard
#

it gets compiled to something that's compatible with the java runtime

quaint bough
#

and why would you use that over java?

tender shard
#

tbh, I don't see any reason

#

but it can't hurt to learn it anyway

quaint bough
#

looks like python

ivory sleet
#

Alex do u use gradle or maven

tender shard
#

it does indeed have some interesting things

#

maven

ivory sleet
#

It’s not python

#

it’s very different

quaint bough
#

yeah but the syntax looks kinda like it

#

ofcourse still different

tender shard
ivory sleet
#

A bit

#

Important part is that both have decent support for monads (:

quaint bough
#

and that is ?

ivory sleet
#

It’s a wrapper essentially, very pervasive in functional programming

#

for instance it’s a good way to abstract away side effects

quaint bough
#

wait does kotlin have stuff like extension methods that java doesnt support? or is it not like that

ivory sleet
#

Even in Java they can be found if you consider functional interfaces as first class functions

tender shard
#

wait - do I really have to shade the kotlin std lib?

ivory sleet
#

well if you compile kotlin to jvm bytecode it’ll make it compatible somehow

#

yes

#

it’s huge kinda

tender shard
#

ugh I thought it gets compiled to java bytecode

ivory sleet
#

Hmm yeah but like w/o std lib, you won’t get far

ivory sleet
#

unsure but yeah

tender shard
#

I read that today at least

quaint bough
#

sounds interesting but making abstract plugins is easier with kotlin?

ivory sleet
#

Hmm Idk

#

Define easier

tender shard
#

wtf it added 1.6mb to my plugin

ivory sleet
#

Lol yeah

tender shard
#

that means I can't even use it for spigot plugins because all my plugins would exceed the upload limit

quaint bough
#

cleaner I find it really hard to make something abstract and scalable with spigot feels like its hard to pull off idk

ivory sleet
#

You could technically download at runtime mfnalex

tender shard
#

alright fuck kotlin lol. I never liked it but now it literally became useless for me 😄

quaint bough
#

might also be that im not that up to date with the api

ivory sleet
#

Tho that’d require the bootstrap classes in Java probably

#

Lol

tender shard
ivory sleet
quaint bough
#

probably XD

ivory sleet
#

A bit dumb but everything comes at a price

quaint bough
#

but everyone uses spigot so cant do much about that huh

tender shard
#

and somehow my main class works

ivory sleet
#

Lol

tender shard
#

it's just the event listener that needs this lib

ivory sleet
#

What type of scalability are you seeking?

#

And what type of abstraction?

quaint bough
#

its w/e

ivory sleet
#

Alr

#

Because the complaints are a bit ambiguous and arbitrary unless you concretize, not because I believe every design choice in spigot is perfect but yeah

quaint bough
#

yeah I cant explain idk how to but sometimes it feels like im typing everywhere just to pull small things off

#

@tender shard

#

is that the way to prevent that loop?

ivory sleet
#

Does that even work

quaint bough
#

I dont know XD

ivory sleet
#

Cuz it’d only invoke that method when an InventoryClickEvent instance gets passed to the plugin manager

quaint bough
#

yeah thats fine but does my custom event trigger InventroyClickEvent if it is extended by that class?

ivory sleet
#

That’s exactly what I was trying to explain

#

the Bukkit event api does not support inheritance event reactivity

sterile token
#

Why use kotlin for plugins? Its like creating the wheel when its already invented

ivory sleet
#

No it’s not

quaint bough
ivory sleet
#

You could say that about most stuff, but kotlin has sort of become another purpose that just a reinvention of the wheel

ivory sleet
#

They’re not that fundamentally different, and at the end this event api is a Bukkit implementation

sterile token
#

Why people use kotlin for Scoreboard?

tender shard
ivory sleet
#

Idk why scoreboard specifically

ivory sleet
#

But kotlin has null safety, it has coroutines, in fact it has a lot of qol features

sterile token
#

Like they use scoreboard made on Kotlin because they support more lines

quaint bough
tender shard
quaint bough
#

yeah but there is other events getting called in the same method

#

so cant do that

buoyant viper
#

^

ivory sleet
#

I mean kotlin spigot plugins are just kotlin compiled to jvm bytecode

tender shard
ivory sleet
#

So I don’t see how that’d somehow produce some advantageous extra lines lol

ivory sleet
#

I dislike kotlin for other reasons than the lib, since it isn’t really that big of a deal

tender shard
#

I'll try to see if it works using plugin.yml libraries

sterile token
ivory sleet
#

o

tender shard
sterile token
#

You can use maven if you have size problems

tender shard
#

erm

#

are you drunk?

#
  1. I am always using maven
  2. how would that in any way reduce the .jar size?
sterile token
#

Maybe I drunk a voodka but nothing else

buoyant viper
#

thats a funny heehee line when usay it in ar ussian accent

sterile token
buoyant viper
#

??

tender shard
#

?

sterile token
#

That why I dont use normal java project

ivory sleet
sterile token
#

I use maven instead

tender shard
#

lol

#

.jar too big? just shade in some dependencies to reduce its size lol

#

makes toootal sense

ivory sleet
buoyant viper
#

jar not working? shade the JRE into it

ivory sleet
#

Oh god

tender shard
#

I once saw a plugin on spigot

#

it had about 50mb

#

that dude actually shaded the whole NMS stuff, bukkit, craftbukkit etc into it

buoyant viper
#

it just has freetts in it its fine

tender shard
#

it was literally a standalone server with a plugin included

sterile token
#

Difference btween maven repo 2 and 3?

ivory sleet
#

1

buoyant viper
#

jesse what the fuck r u talking about

sterile token
#

The libraries are not compatible?

tender shard
#

a maven repo is a maven repo

ivory sleet
#

|2-3|=1 (:

buoyant viper
#

oh yeah forgot i uninstalled a shit ton of jdks

sterile token
#

Im having problems with libraries because they look compile in different maven versiones

#

Its fucked amazing this

ivory sleet
#

Init

buoyant viper
#

am i fucking drunk or

buoyant viper
#

zero coherency

tender shard
buoyant viper
#

i wonder if a markov chain with input data supplied by everything hes ever said in here would produce something accidently correct

sterile token
#

Like I cannot implemente a library on my maven Project because the library was deployed on a different versión

#

You understand

tender shard
tender shard
buoyant viper
#

gonna go on an adventure today to try and get scala+java working on gradle

#

why not just use SBT u ask?

#

im lazy

#

but not in the right way

ivory sleet
#

Hmm good luck

#

Personally gonna try make a motd plugin in clojure

buoyant viper
#

making a ping plugin in haskell

ivory sleet
#

Can Haskell compile to jvm bytecode 🌝

buoyant viper
#

i think theyre compatible?

sterile token
#

Why no one had the intellence for creating a maven plugin for deploys via http

ivory sleet
#

Hmm it’s not a jvm lang, maybe a transpiler exists

buoyant viper
#

eta and frege might be the closest

ivory sleet
#

Also GRADLE

#

It’s objectively better

#

(;

buoyant viper
#

is it

buoyant viper
#

or is that gradle propaganda fed to u by the team

ivory sleet
buoyant viper
#

me neither

ivory sleet
#

Well only thing might be that maven en fucking forces declarative

#

But that’s mostly irrelevant

sterile token
#

Gradle looks like the zzz of js type script really low le el sintaxis

ivory sleet
#

You can use java

#

And kotlin

tender shard
sterile token
#

Are you using which plugin?

tender shard
#

works fine without any additional plugins

sterile token
#

And what configuration?

ivory sleet
#

🌚

sterile token
#

The other configuration

#

The settings pom

tender shard
tender shard
sterile token
#

Yeah

#

So without any plugins its possible to deploy to a normal webserver right?

#

I will kept it

tender shard
#

and no, that's not the real password

sterile token
#

Yeah I know

#

🤣

tender shard
#

😄

sterile token
#

I can be drunk but no idiot

#

I have tríed your code without the Username and password part on credentials file. And using http instead of http. And im getting a 403 error (Method not alllow)

tender shard
#

403 = not authorized

#

of course you need credentials

#

also why would you upload to http instead of https

#

only valid reason I can see is some internal network, otherwise http should never ever be used anywhere

sullen marlin
#

You also need a snapshot repository for snapshots

unreal quartz
ivory sleet
#

Doesn’t sound the slightest like gradle

quaint bough
#

how could this happen again?

unreal quartz
#

Tfw you can't test your project because you're having to debug a build system

#

Had way more of that with gradle than maven, probably because I am too impatient to learn

quaint bough
#

sadge

buoyant viper
#

XML alone looks like voodoo and i write HTML

ivory sleet
#

Hmm I do agree gradle is damn radical and exposes so much shitty configurability sometimes which gets sloppy and inconsistent

lavish hemlock
#

I recently looked at a buildsystem called Bazel

#

It's like CMake for people who dev Java

ivory sleet
#

Google

#

Ye

lavish hemlock
#

I mean tbf it's multi-lang

#

but Java is the most in need of a good buildsystem

ivory sleet
#

Yeah consider how pervasive it still is in enterprise apparently

lavish hemlock
#

I hate enterprise >:(

ivory sleet
#

FactoryFactory at your services

unreal quartz
quaint bough
#

now that i fixed my events another issue popped up they are not getting canceled anymore

sterile token
quaint bough
#

set Cancelled should still work but it doesnt

arctic moth
#

changing yield isnt changing explosion radius

#

is there smth else instead?

sterile token
ivory sleet
#

Why tag me

#

I haven’t touched maven in ages

tender shard
lavish hemlock
#

because your nick says to ping you for help

#

duh

ivory sleet
#

Argh

#

This is why Alex here should have a similar nick

unreal quartz
#

@ivory sleet can you help me with my uni assignment? Thanks

unreal quartz
tender shard
#

can't change my niiiick

unreal quartz
#

We can't nick ourselve

ivory sleet
#

😳

unreal quartz
#

s

ivory sleet
#

Yeah normally people don’t get cool nicks

lavish hemlock
#

can I have a cool nick

#

can I have a cool Nick

tender shard
ivory sleet
#

True lol

lavish hemlock
#

I want a cool human named Nick

ivory sleet
#

Maowcraft -> Maow

lavish hemlock
#

send him to me

tender shard
#

you have a cat/dictator nick @lavish hemlock

lavish hemlock
#

true

#

remove the slash :)

#

cat dictator

quaint bough
sterile token
tender shard
sterile token
#

Express

unreal quartz
#

Are you trying to write your own maven repository

arctic moth
#

how would you make one of those crafting recipes where it can use like any color of wool and stuff

tender shard
tender shard
sterile token
#

A library for node js

unreal quartz
#

Yeah but like, why

tender shard
sterile token
#

The backend no matter

tender shard
#

ah easy @arctic moth

#

use a MaterialChoice and add more than one material

#

or just add a Tag<Material>

sterile token
#

Mfnalex I can create a catch for the put request and then see what paramos are sent?

quaint bough
#

why doesnt custom event that extends for instance InventoryClickEvent not get canceled by using the method that is implemented by InventoryClickEvent

tender shard
#

@arctic moth

ShapelessRecipe recipe = new ShapelessRecipe(new NamespacedKey("some","key"),new ItemStack(Material.DIRT));
recipe.addIngredient(new RecipeChoice.MaterialChoice(Tag.WOOL));
unreal quartz
tender shard
sterile token
#

Yeah

#

I only need to know the parameter

quaint bough
#

is canceled is running but nothing happens to the item that is being moved

tender shard
quaint bough
#

yeah

tender shard
#

After you called it, just check if it was cancelled with yourEvent.isCancelled()

#

then do whatever you like with that result

quaint bough
#

nah after I call it i check if the item that is being moved or interacted with is a custom item of mine then I cancel the event

#

but nothing seems to happen when i cancel it

tender shard
#

what do you expect to happen?

sterile token
#

I have the same problemen I cancell the event so people cannot take out the items buy they can

#

Its something big

#

I think

quaint bough
#

that the item that is being interacted with or is being moved gets put back into the original position

#

so you cant take or move it

sterile token
#

My problems is that I dont want people be a le to take out the items

tender shard
tender shard
sterile token
#

Oh are you trolling me?

quaint bough
unreal quartz
#

Alex trolling alex huh

tender shard
unreal quartz
#

the items

arctic moth
#

any idea why this isnt triggering

@EventHandler
    public void onTNTExplode(ExplosionPrimeEvent event) {
        if (event.getEntity().getPersistentDataContainer().has(new NamespacedKey(Main.plugin, "smalltnt"), PersistentDataType.INTEGER)) {
            if (event.getEntity().getPersistentDataContainer().get(new NamespacedKey(Main.plugin, "smalltnt"), PersistentDataType.INTEGER) == 1) {
                event.setRadius(2f);
                Main.plugin.getLogger().log(Level.INFO, "e");
            }
        }
    }
tender shard
#

after the line where you called your event, cancel the InventoryClickEvent if your custom event was cancelled

#

basically

onInventoryClickEvent(InventoryClickEvent event) {
  // Call your custom Event
  MyEvent myEvent = new MyEvent(...);
  Bukkit.getpluginManager().callEvent(myEvent);
  if(myEvent.isCancelled()) {
    event.setCancelled(true);
  }
}
quaint bough
#

one more thing

#

what if the event is not cancelable

#

what then

unreal quartz
#

Then ya don’t

tender shard
#

then you can't cancel it

#

it would be helpful if you could explain what you are actually trying to do

tender shard
quaint bough
#

why is making a gif so hard

tender shard
quaint bough
#

i just want to make a screenshot

#

but then a gif

#

you know

#

like lightshot

#

but then gif

tender shard
#

a screenshot as gif? why that?

#

or do you want it to be a "video" gif?

quaint bough
#

just a way to record my screen and share it to gyphy or w/e

#

so i can show

#

like the classic screenshot share software but then it will make a gif of what i select

#

make sense?

#

there

#

you cant actually see that im moving it but i am

#

that is what should happen

#

but I thought it was good to make my own event whenever bag is being interacted with

#

listen to that event and check if the item is a bag and then cancel it

#

but that does not seem to work

#

custom events seem like too much work and they are barely working lol

#

or i am doing something wrong

tender shard
#

creative inventory is client sided

lavish hemlock
#

Yeah

#

That's the reason

#

...Totally

tender shard
#

of cooourse

quaint bough
#

nah itsn ot because of creative mode

tender shard
#

I don't really get what you want to prevent though

#

moving the custom item into ANY other slot?

quaint bough
#

so doing this with standard InventoryClickEvent would work

#

you just check if item is my custem item

#

cancel event

#

seems easy right

#

but what i do is listen to InventoryClickEvent check if inventory is bag holder then call BagInventoryClickEvent

#

then listen to BagInventoryClickEvent

#

and then cancel that one

#

but that does nothing

tender shard
#

...

#

I already explained to you how to do it

#

of course cancelling YOUR event doesn't do shit

#

you call that event, so YOU have to respond to it being cancelled or not

quaint bough
#

im retarded

tender shard
#

didn't you read that message? 😄

quaint bough
#

i thought i did

#

but not good enough

tender shard
#

lol np

quaint bough
#

if it works now

#

ill go to sleep

#

3 am kek

#

but this custom event stuff seems really wacky

tender shard
#

custom events are awesome, you just have to understand that your custom event is totally independent from the inventoryclickevent if you call it yourself

#

other plugins will cancel it thinking its a normal clickevent

#

but it doesn't cancel anything if you, as the caller of the event, actually respond to that cancelling

quaint bough
#

well now it should

#

is there an interface for event that is cancelable?

unreal quartz
#

Yes

quaint bough
#

what is it called?

unreal quartz
#

Cancellable

quaint bough
#

oh its actually an event didnt know

#

wait

#

ah nvm

tender shard
quaint bough
#

yeah i was trying to do something but that aint possible cuz its stupid

#

but time to go to bed

#

thanks for the helps

tender shard
#

np

quaint bough
#

just canceling a certain item from moving is kinda wacky

#

cuz there are so many ways to move an item

tender shard
#

I'd just cancel all inventoryclickevents on that item

young knoll
#

That's all ya need

quaint mantle
#

Okay so, I followed the "Creating a custom library" guide on spigot, and I get this error.

java.lang.NoClassDefFoundError: net/cryptolib/CryptoLib```
Anyone knows how to fix it ?
buoyant viper
#

never realized how fucking fat scala is

#

almost 6mb of pure scala lib

tender shard
#

like is the library a standalone plugin?

quaint mantle
tender shard
#

the article you sent is about a library library

#

not a library plugin

quaint mantle
#

Well, making shorter code?

tender shard
#

what?

quaint mantle
#

If thats what you mean by library library

tender shard
#

library plugin = it shows up in /plugins and actually has its own plugin.yml

#

library library = you have to shade it with maven

#

the article is shit, it doesn't explain shading

#

you basically also must add the maven-shade-plugin to your plugin's pom

quaint mantle
#

And would you help me to do that, if you don't mind ofc.

tender shard
#

one sec

#

so you will need to add sth like this to your plugin pom (ignore the relocations):

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.1</version>
                <configuration>
                    <relocations>
                        <relocation>
                            <pattern>de.jeff_media.updatechecker</pattern>
                            <shadedPattern>de.jeff_media.replant.updatechecker</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>de.jeff_media.daddy</pattern>
                            <shadedPattern>de.jeff_media.replant.daddy</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>co.aikar.commands</pattern>
                            <shadedPattern>de.jeff_media.replant.acf.commands</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>co.aikar.locales</pattern>
                            <shadedPattern>de.jeff_media.replant.acf.locales</shadedPattern>
                        </relocation>
                        <relocation>
                            <pattern>de.jeff_media.jefflib</pattern>
                            <shadedPattern>de.jeff_media.replant.jefflib</shadedPattern>
                        </relocation>
                    </relocations>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
quaint mantle
#

Alright, thank you for taking your time, sir?? dont mean to be disrespectful

tender shard
#

you can ignore everythinf inside <configuration>

quaint mantle
#

Oh thanks!

tender shard
#

then, compile your plugin using mvn package. unzip it with winrar or anything and see if your library classes are actually inside your .jar

quaint mantle
#

I have to make a mvn project now.

quaint mantle
tender shard
#

shading means "include all the stuff I need into my .jar", so yes

#

be sure to set the <scope> of spigot to "provided" and of your library to "compile"

quaint mantle
tender shard
#

oh lol no

quaint mantle
#

Why is maven so hard..

tender shard
#

you need to setup the pom as usual

tender shard
quaint mantle
tender shard
#

look at this, I wrote a blog post

#

after you have set that up, you can add the maven-shade-plugin

quaint mantle
tender shard
#

decompile? whut? 😄

quaint mantle
#

oh no

quaint mantle
#

yall should ping this

#

goes from having minecraft to decent knowladge of maven

analog prairie
#

How to check if BlockBreakEvent is cancel

tender shard
#

fr?

#

event.isCancelled()

buoyant viper
#

god gradle really is painful

analog prairie
#

I want to know block whether be broken

tender shard
#

listen to BlockBreakEvent on Monitor priority and then check if the event #isCancelled()

shut field
#

how do you set the results of piglin barter?

tender shard
#

getOutcome returns a List<ItemStack>

#

you can remove items and/or add items there

shut field
tender shard
#

the event gets called the moment the piglin picks up your item

#

This event can be triggered by a piglin picking up an item that's on its bartering list.

shut field
#

gotcha

young knoll
#

Most events in spigot run before the actual action

tender shard
#

at least every cancellable 🙂

runic hull
#

Is it possible to stop horses from rearing (standing on back legs) when players are riding them with the spigot api?

somber hull
#

Leme see if i can find smthng

tender shard
#

can other players even hear it?

#

I assume it's client sided

somber hull
somber hull
tender shard
#

oh they edited the message

#

I thought it was about the sound they make when I read it 20 minutes ago

somber hull
#

lol

#

f

#

@runic hull Theres a leave vehicle event i think

tender shard
#

I actually now think they are just talking about this animation a horse does

tender shard
#

the horse doesn't actually throw them off, it just goes on two legs and makes a noise

somber hull
#

found it

young knoll
#

When they are tamed they don’t throw you off, but it does interrupt movement

somber hull
#

Ohhhh

tender shard
young knoll
#

When they aren’t tamed the rearing throws you off

somber hull
#

I see

#

Would it be a horse jump event?

#

Maybe?

runic hull
#

I am using a horse as a vehicle but don't like it when the horse stop (rearing) for a moment.

somber hull
#

You could see if theres some weird NMS thing for it (i dont work with nms idk how it works)

runic hull
#

Yeah I want to avoid doing nms

somber hull
#

oop- i gtg

runic hull
#

Maybe there is no solution for it with using the spigot api

young knoll
#

I imagine it’s a AI goal

#

So you could remove that via NMS

runic hull
#

Seems like the only way to do it

#

Thanks everyone for your input

sonic osprey
#

Hey, so getOfflinePlayer is deprecated, what do I use instead?

            OfflinePlayer player = Bukkit.getOfflinePlayer(vote.getUsername());
            String uuid = Bukkit.getOfflinePlayer(vote.getUsername()).getUniqueId().toString();```
outer sorrel
#

havent done any 1.18 plugin yet and its building but it takes like 7 minutes
anyone know how i could fix it?

#

pom.xml

worn tundra
#

You use their UUID method instead

#

From Spigot Javadocs:

chrome beacon
#

If you still choose to use it for some reason make sure to do it async

worn tundra
#

Why

#

Using a Bukkit method async?

opal juniper
#

because getOfflinePlayer is slow

chrome beacon
#

It's a blocking web request

#

You do not want it on the main thread

worn tundra
#

Unless it takes it from local storage? Or does it do that?

young knoll
#

If it’s not cached it will make a web request

glossy venture
#

you cant take it out?

#

do you have any other plugins or code cancelling taking it out

#

hm

#

oh

#

wtf

#

you cant cancel an anvil prepare event tho

#

right?

#

are you using an old version

#

because the current version has PrepareAnvilEvent

#

oh

#

can you send me some code from the event handler

#

maybe its something before or after that influences it

#

so it sets it in every condition

#

oh

#

maybe you can use the anvil inventory to directly modify the item in the slot?

#

using like

event.getInventory().setItem(2, ...);
granite burrow
#

Hey I know this isnt a spigot thing but do yall know how to link 1 file on your computer (windows) to another? so say I add something into a file, it will then get added to both file 1 and file 2

glossy venture
#

using network sharing or ftp

#

if you use ftp you need to set up an ftp server and download something like filezilla client

#

still cant take it out?

#

oh

#

i dont know srry

#

make sure theres nothing preventing you

#

like no InventoryClickEvent listeners

#

otherwise try commenting them out and testing it again

outer sorrel
hardy swan
#

nvm

#

are you testing with other plugins? if so, you can try setting result one tick later

#

using #setResult(ItemStack)

#

lol

#

or set the event handler to be of highest priority

vocal cloud
#

Have you tried?

granite burrow
#

So I have a bit of a pickle, I wanna make a GUI that refreshes for everyone on the server at the same time, but I dont wanna make it laggy. However I also wanna make it so that said GUI contains the stats of the player. The issue that I run into is that when updating the GUI it will show the most recent player to enter the GUI's stats to everyone, is there any good way to prevent this? or would creating a GUI for each person be the best thing?

ivory sleet
#

Per player might be necessary

granite burrow
#

dam alright, what would be the best way to make them? just when they join and delete it when they leave? or create it when they make an inventory then delete it when they exit the inventory.

quaint mantle
#

Add an update button to the gui 🙂

brave sparrow
#

If the stats are going to change frequently then just create it when they open an inventory

#

It’s not as expensive as you’re imagining

vocal cloud
#

As long as the data is stored somewhere it's relatively cheap to create on demand. Do not create them all and store/update every second as that's using up too much memory for no gain.

granite burrow
#

alright so create on command

#

I have an auto updater that I can run when the inventory is created, so should be relatively easy

granite burrow
brave sparrow
#

well you were talking about lag

lost matrix
# granite burrow So I have a bit of a pickle, I wanna make a GUI that refreshes for everyone on t...

Have one runnable for all of them with something like a Map<Player, GUI> which can be ticked.
If nobody has the guy open then the map is empty and the overhead of the runnable is negligible.
Start the runnable when the server starts and stop it when the server stops.
Its important that you have a proper observer pattern in place. The GUI should ONLY display data
and delegate user input. It should not have any other functionality.

granite burrow
granite burrow
steady kiln
#

[1.8.8 question] Is there a way to send action bars, without the use of NMS? I want to use nms, but I simply do not understand how to. 😆

If it's not possible without nms, please direct me towards a tutorial on how to set it up and use it. Thanks in advance

lost matrix
#

Also almost nobody uses that version anymore

steady kiln
#

Yeah i know mold is growing on 1.8.8, and it's hella deprecated, but that's what i have to use sadly. There must still be a way, right?

lost matrix
#

Does Player have the .spigot() method for you?

lost matrix
steady kiln
#

Wish i could send pictures, but intellij underlines it all with red. inside of the sendMessage()

vocal cloud
#

Um you migrate it to a 1.15.2 project?

lost matrix
#

reverse engineer what the methods do lul. nms is undocumented and unsupported.
If you use 1.17+ you can use moj mapped files so you have properly named variables and names.

vocal cloud
#

You have to make your questions more specific. Asking "how to migrate" is way to generic and asking somebody to walk you through an entire process rather than a single question.

night patrol
#

someone help please

lost matrix
#

oh god...

night patrol
#

this is my plugin but when i run it don't sendmessage on console and actionbar not working

vocal cloud
#

Please send it in a pastebin so it doesn't take up a kilometer of chat

night patrol
#

someone help please

quaint mantle
#

Is anyone german and can help me on a nullpointer-Exception

lost matrix
#

I am. But i will help you in english 😄

night patrol
lost matrix
night patrol
quaint mantle
#

But my english is very bad

night patrol
lost matrix
quaint mantle
#

Okay thanks i try

night patrol
quaint mantle
#

This error is cooming by this line: if (player.getInventory().getChestplate().getType().equals(Material.ELYTRA)) {

#

This line is run by rightclick on block or air

lost matrix
#

So you have to check if the player has an item in his chestplate slot.

quaint mantle
#

Yes i have already checked this and its not better

#

Its a so weird error

lost matrix
night patrol
lost matrix
lost matrix
night patrol
quaint mantle
lost matrix
# night patrol Ohh

This wont fix anything. Add some
System.out.println("Something")
calls into your code to see what was actually executed.
Does your plugin appear when you type /pl?

lost matrix
quaint mantle
quaint mantle
#

its a new line thats the error came

#

and its a new error

#

Already is a nullPointer when send the Messages, from the Config. But i can fix this. Thanks for the Help

dense heath