#help-development

1 messages ยท Page 225 of 1

echo basalt
#

well

#

if they don't pay me ;)

sterile token
#

If you work on programming must alrdaus have dmca without paid without getting money. Because once smth happen you can win

echo basalt
#

but they have proper budgets n all

#

they can afford everyone there

#

and have always paid them

#

Like our particle developer does VFX work for marvel n all

#

that doesn't come cheap

sterile token
#

In my case Im paying dmca but i havent done so much money this month, but im sure that if something happen I will get the money

#

I dont care loding money with dmca because un the worst he will be with me

#

๐Ÿ˜‚

#

Also imagine

wet breach
#

DMCA is not an entity

#

DMCA = Digital Millennium Copyright Act

echo basalt
#

this mf talking about DMCAs like they're ICAs

sterile token
#

Oh my bad

#

Here there is smth like dmca but you pay and you are protected by law when talks about in terms of your projects and things you sell digital or physic

wet breach
#

you must be thinking of something different

sterile token
#

Of course you must be associated with them and pay smth like 30$ each year

wet breach
#

in the US, copyright protections are free

sterile token
#

Oh I dont know uderstnaf how they work

#

Because how they would know you really own that resource

#

And you are not lying cuz

echo basalt
#

imagine being american lol

sterile token
#

Also in the other hand dmca takes a small a out of money when they help you to win

wet breach
sterile token
#

I mean the problem is thst you cannot apply dmca by self

wet breach
#

What do you mean?

sterile token
#

Because you have 0,01% probabity win ing while github could have +80, 8%

#

Do I explain?

wet breach
#

idk what you are talking about

echo basalt
#

he is the law

sterile token
#

Dmca doesnt apply the same when its used by personal nor big companies

#

Thst is wha ti want to mean

wet breach
#

DMCA applies equally

sterile token
#

In the us!

#

Outside doesnt really apply equally

#

Cuz us doesnt have rights over other xountries law

#

There is the trixk

wet breach
#

They do when the Countries sign provisions to join together for copyright protections, which there is quite a lot of countries that have signed an international copyright agreement

wet breach
sterile token
#

Im not talking to just to talk im talking with Arguments which were told and explained by a really important lawyer and specifictly talked about programming restrictivos

wet breach
#

well sounds like whatever country you are from doesn't really like copyright protections

sterile token
#

๐Ÿ’€

river oracle
#

Verano where u frome

sterile token
#

Pocitos, Montevideo, Uy

#

Tell me if need to be more specific

#

I can provide the address so if you want

river oracle
#

Whay

#

No lmao was just wondering country xD

sterile token
#

Oh Hahaha

#

Im from Uruguay

river oracle
#

Is Uy Uruguay or sum

wet breach
eternal oxide
#

I've never heard of anyone being extradited over copyright

#

Thats a civil matter

sterile token
eternal oxide
#

Also India has no Copyright system and China has it's own which you have to specifically register on and they don;t recognize copyright thats not registered with them

river oracle
#

Classic China momwnt

wet breach
#

anyone else want to claim the US doesn't extradite over copyright? lol

#

Richard O'Dwyer is another, however in leu of being extradited he instead paid a fine and was on probation however had he not agreed to that he would have been extradited

#

Hew Raymond Griffiths

eternal oxide
#

George Bridi was not extradited over copyright. That was ONE of the charges but it was wire fraud which allowed for extraditionGeorge Bridi, a 52-year-old British national originally from Ghana, was arrested in Cyprus in August 2020 on an international warrant with multiple charges including copyright infringement and wire fraud.

wet breach
#

Still was extradited for it

#

if wire fraud wasn't on there, they would have still extradited for it

eternal oxide
#

No thats the point, thats not why he was extradited

#

Copyright is a civil matter and not extraditable, as far as I know

wet breach
#

it is

#

should read international laws a bit more

#

telling me Griffiths wasn't extradited from Australia ?

#

to the US

#

for copyright infringement?

eternal oxide
#

For extradition from the UK it has to be a criminal act, so it has to have a commercial component, ie they made money selling a copyrighted item.

#

if there is no commercial component it's only a civil matter and does not warrant extradition

wet breach
#

ah right, that is why Richard O'Dwyer was being extradited unless they paid a fine

eternal oxide
#

yep

wet breach
#

must been made up

#

Anyways keep believing the US doesn't extradite for Copyright Infringement ๐Ÿ™‚

eternal oxide
#

Not on copyright alone

wet breach
#

yes on copyright alone

eternal oxide
#

no

wet breach
#

Griffiths was Extradited on nothing but that

#

Hew Raymond Griffiths (born 8 November 1962, UK) has been accused by the United States of being a ring leader of DrinkOrDie or DOD, an underground software infringement network, using the online identity of "Bandido". Griffiths was living in Berkeley Vale in the Central Coast Region of NSW, Australia before he was placed on remand at Silverwater...

#

Anything to say on this? In Australia it wasn't a criminal act

#

but hey, still served 51 months in prison plus 3 years in Australian jail

eternal oxide
#

Yep, a very controversial extradition

wet breach
#

still happened

eternal oxide
#

Yes it did, a one in a million

wet breach
#

as I said, US extradites for copyright infringement

eternal oxide
#

One which shoudl not have actually happened if the actual extradition laws were correctly applied

wet breach
#

they were

eternal oxide
#

No they were not, it was a specific agreement between AU ans US

#

under international extradition law it must be a crimial act to warrant extradition

wet breach
#

in Australia copyright infringement is a criminal act

eternal oxide
#

is it? Not here in the UK

wet breach
#

anyways whether it is classified criminal or not isn't even part of the international law

#

just that you can be punished with a 1 year jail sentence in both countries

#

is enough for to be valid for extraditable offense

eternal oxide
#

Even if you made ยฃ1 it becomes criminal

#

but on Copyright alone its not extraditable from the UK

#

This is why they always tack on other criminal charges to make it extraditable

#

even if they drop those charges later

wet breach
#

ok that doesn't mean the US doesn't extradite for copyright infringement

eternal oxide
#

um, thats exactly what it is

wet breach
#

from the UK sure might not be enough alone, but that doesn't mean it doesn't happen elsewhere

eternal oxide
#

they ensure at least ONE charge is criminal so they can extradite on that alone.

wet breach
#

depends on the country being extradited from

eternal oxide
#

Yes

#

I can only comment on the UK

wet breach
#

I am not talking about the UK specifically

#

you are the one trying to say it never happens at all anywhere which I have shown it obviously has happened

eternal oxide
#

Then its pot luck, your experience may vary

red sedge
#

is there anyway to do smth like Location.add() but wihtout modifying the original location

wet breach
#

clone it

mighty pier
#

๐Ÿ’ฉ

#

๐Ÿ˜ฌ

fierce terrace
#

question

#

I have a org.bukkit.entity.Player

#

how can I convert it into a net.minecraft.world.entity.player.Player

sterile token
#

ask?

tardy delta
#

isnt that just CraftPlayer::getHandle?

glossy venture
sterile token
#

If im not wrong you have to cast it from CraftPlayer to Player

tardy delta
#

๐Ÿ’€

eternal oxide
#

cast to CraftPlayer and getHandle()

glossy venture
#

((CraftPlayer)player).getHandle()

glossy venture
#

thats sick

tardy delta
#

why does it work both ways ๐Ÿค”

sterile token
#

So they can be opened in diff positions

glossy venture
#

yeha here too

#

but thi sis on anither level

sterile token
#

Sorryf or ping zacken ๐Ÿ‘‰ ๐Ÿ‘ˆ

fierce terrace
#

also question: how can I set the tags?

sterile token
#

I just realize i tag you

fierce terrace
#

I am using paper-nms

#

on a player

glossy venture
sterile token
#

?whereami

sterile token
#

Sorry but i had to say it

#

๐Ÿคฃ

glossy venture
#

yo ur in spigotmc yeha

sterile token
glossy venture
#

yo udidng ping zackbe

tardy delta
#

what tags

glossy venture
#

jezus my spellih

fierce terrace
sterile token
tardy delta
#

stfu

glossy venture
#

bro its a bukkit api question

#

not paper

sterile token
#

HMN

glossy venture
#

yes

sterile token
#

I can see

eternal oxide
#

nms != api

glossy venture
#

craftplayer

#

bukkit

#

craftbukkit question

#

not api

#

doesnt natter

#

matter

sterile token
#

craft bukkit !? paper?

#

๐Ÿค”

glossy venture
#

the question was abt nms player rigth

sterile token
#

ohh ok

#

My bad i thought that CraftBukkit was part of Paper

glossy venture
#

nah

sterile token
#

But i just remember that CraftBukkit is the thing that works over minecraft sever making relections

glossy venture
#

its the implementation of the bukkit api over the minecraft server

#

bukkit doesnt do shit by itself

#

its all interfaces

#

almost

sterile token
#

So let say, bukkit itself its an api

glossy venture
#

yes

#

it is

sterile token
#

And spigot is another api, over an api, over NMS

#

๐Ÿ’€

glossy venture
#

api: bukkit <- spigot api
impl: minecraft <- craftbukkit <- spigot

sterile token
#

hmnn

glossy venture
#

spigot server is a fork of craftbukkit

sterile token
#

Bukkit: bukkit api -> bukkit core -> CraftBukkit -> minecraft
Spigot: spigot api -> spigot core -> bukkit core -> CraftBukkit -> minecraft

glossy venture
#

yes

#

craftbukkit isnt nms tho

sterile token
#

oh ok

#

So?

glossy venture
#

there should be -> minecraft at the end

sterile token
#

Because CraftBukkit is not an impl of minecraftr sever, cuz its obfucated

glossy venture
#

no CraftBukkit is sort of a fork of the official mojang minecraft server

#

so yes

#

i guess

sterile token
#

Wait no

wet breach
sterile token
#

I mean i bad written what i mean

#

i was saying that CraftBukkit is not an implementation of minecraft server because mc server is obf

wet breach
#

just because it is obfuscated doesn't mean it can't be implemented

#

Craftbukkit just does so without deobfuscating

#

Anyways, Craftbukkit is an implementation of the vanilla server

#

since it adds its own code on top of vanilla

fierce terrace
#

Paper is a modification of spigot using spigot as a base for its plugin API with fixes implemented

restive elm
#

How do I put entities on player's head?

#

Pig, Cow, Chicken

paper rain
#

Hii, do someone know how to make in java something like add max hp? No set but add.

#

if u know how i mean it..

fierce terrace
#

question: how can I store persistent data on the player

wet breach
undone axleBOT
wet breach
#

this isn't a place to be spoonfed everything

#

?spoon

undone axleBOT
#

Spoonfeed a newbie for a day and they'll come back with more questions. Teach them to find their own answers and you'll both be better off: you won't get stuck answering the easy questions and they'll be much more productive than before.

fierce terrace
#

Thing is: I want to store it in the players CompoundTag

#

but I can't find it

wet breach
#

when it comes to NMS you are for the most part on your own. Need to go learn NBT

fierce terrace
wet breach
#

not sure what I said has to do with items

fierce terrace
#

reason I want to set data on the players NBT is simple: I need to somehow read data on the client

wet breach
#

you won't read data on the client that way

fierce terrace
#

its for a thing where moderators can see custom popups when a player swears

wet breach
#

you are limited to packets and that is whatever the client sends via packets

eternal night
#

Which is certainly not the entire entities compound Tag unless I am tripping

fierce terrace
#

also how can I send a packet to the client to check if the mod is installed, without making the client go disconnect

wet breach
#

spigot doesn't support mods

#

and there is no packet from the mc protocol for such things either

eternal night
#

You can still interact with stuff through the plugin message channel

#

There is

wet breach
#

Plugin Message channel alone won't tell you mods though and even if it does, it is only if the mod self reports

eternal night
#

Mods can send pretty arbitrary data over ehhh- what's the name of the packet

#

Yea

#

But that is what they want right ?

#

Communicate with their mod

#

To show their moderation popups

wet breach
#

I suppose that may work

eternal night
#

It is a bit of a mess with registering channels

#

But certainly possible

#

No idea what those clients do, I don't use them ๐Ÿ˜…

#

Presumably they announce themselves then

wet breach
#

some clients self report the client you are using

#

when you connect to the server

eternal night
#

Easily preventable if you want tho

ancient plank
#

Choco's veinminer plugin has a mod for doing a custom keybind, I use that as an example when I'm remembering how to do it myself

fierce terrace
#

question: is it possible to merge NBT when a player tries to combine items?

sterile token
#

Hi, im again having problem with my wand and region system. Last time i asked i was having problem with the wand system which was allowing me to break do actions while i was claiming (break, place, interact, drop, etc). But now im experimenting another problem which in theory should allow the player to do actions while you are inside a claim. But from what i have tested its not allowing you do to that

rotund ravine
#

?justask @sterile token

undone axleBOT
sterile token
sterile token
rotund ravine
#

?notworking

undone axleBOT
#

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

sterile token
#

LMAO

#

BRUH If you wont help just dont answer

rotund ravine
#

There was not a ?nocode

#

I need code and explanation of what you expect.

#

Not just some random stuff about how it should work and everything is perfect. If it is not working clearly something is wrong.

sterile token
#

ok

#

So let me refactor

#

I mean its something between the WandListener and RegionListener

#

Because before i add the Wand system for claiming, everything was okay

rotund ravine
#

No clue what those are.

sterile token
#

Let me send my code 1m please

#

So before i add the wand listener i already tested the cuboid class to see if it was working correctly and the result was the one expected. So that is not issue here. Also the cuboid just for letting you know is an utility class which i use for coding on 1.13

rotund ravine
#

So what is the issue? Nvm i read the message.

#

What have you debugged so far?

sterile token
#

The cuboid, wand and region all separated

rotund ravine
#

What was the result of your debugging?

sterile token
#

the 3 of them were successfully alone

rotund ravine
#

What would be your next step in debugging then?

sterile token
#

But when i put them together the problem started haha. The main one is that while you are a member of a claim you should be able to do actions which is not happening

rotund ravine
#

Then debug each if statement in your code that checks if they're members and allowed to build.

sterile token
#

This the wand and cuboid debug

rotund ravine
#

Your issue is the building right?

#

Debug your listeners in the RegionListener class

#

Do they run?

#

Do they pass the ifs? (By pass do the ifs return properly)

sterile token
#

The issue are the actions, yeah building

#

I have divided the logic into Region (name, cuboid, list of member) and Cuboid (max and min locations)

#

So far what happen is that being member of claim right? Doesnt allow to build

rotund ravine
#

You can debug each if statement

#

See why each of them return false.

sterile token
#

Have you seen my code?

rotund ravine
#

Yes

sterile token
#

I have been trying hours this

#

Annd i still cannot find it by debbugging my self

#

If not i wouldnt come to ask smth simple like this

rotund ravine
#

Have u tried the good old printout everywhere it calls to and see what it does wrong?

sterile token
#

yeah, that is what its called debug or primary debug

#

Its the first you do when smth is not working

rotund ravine
#

So what was the results.

#

Where did it fail?

#

which part of it failed

#

if you debugged it you would have checked each section and part of it.

sterile token
#

It doesnt fail in any part

rotund ravine
#

Then it works.

sterile token
#

No

rotund ravine
#

Then it fails at some part.

sterile token
#

maybe

#

Atleast on region listener doesnt fail

rotund ravine
#

So it runs everything properly in there?

sterile token
#

Wait wait

#

Oh no it shouldnt fail on wand listener cuz it returns when he is not claiming

rotund ravine
#

You've checked it returns the proper things here right?

Region region = this.regions.getRegion(profile.getUuid());
if (region != null && region.getCuboid().contains(block.getLocation())) return;
sterile token
#

No im an idiot sorry

#

Sorry bro that problem went off

#

Now the issue is different, its allow me to do actions outside the region

#

๐Ÿคก

#

Its really trolling to test mc code

grizzled bridge
#

Hello, how I can print text in subtitle bar?

rotund ravine
#

is the server

grizzled bridge
#

1.16.5

rotund ravine
#

By subtitle bar do you mean actionbar

grizzled bridge
#

yes

grizzled bridge
rotund ravine
grizzled bridge
#

thank you

hushed pawn
#

i have location1 and location2, i need to figure out how to move from 1 to 2 with relative movement type in (byte)

hushed pawn
#

protocol wiki says i have to Change in X position as (currentX * 32 - prevX * 32) * 128

#

but im not sure if it is

#

and dont know how to do it

#

i get values in double, how should i preperly turn it to byte ?

#

i tried just (byte)(currX-prevX), but its toomuch already

hushed pawn
echo basalt
#

the bytes are used for rotation

#

(int entityId, short deltaX, short deltaY, short deltaZ, byte yaw, byte pitch, boolean onGround)

#

the other one is just for rotation

#

defined as (int entityId, byte yaw, byte pitch, boolean onGround)

#

or you can make the full packet

#

with

#

(int entityId, short deltaX, short deltaY, short deltaZ, byte yaw, byte pitch, boolean onGround, boolean rotate, boolean positionChanged)

alpine cairn
#

Can anyone help me with a plugin that won't work? The problem has to do with the plugin.yml

#

These are the errors in the console:

#

Could not load 'plugins\CreeperSpawn.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml

#

Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml

tardy delta
#

can you show me the file structure?

#

should be smth like this

worldly ingot
#

(*if you're using Maven or Gradle)

tardy delta
#

^^

#

hopefully he does ๐Ÿฅบ

alpine cairn
#

Maven on eclipse

worldly ingot
#

Yeah, so you should have a src/main/java and src/main/resources directory structure

#

plugin.yml goes in the src/main/resources

alpine cairn
#

I have that

#

?img

undone axleBOT
alpine cairn
hushed pawn
#

mby it bcs i just use 1.8.8 NMS

alpine cairn
#

@tardy delta

worldly ingot
#

How is it you're building/exporting your project?

#

Also, TIL Eclipse's Outline view shows YAML outline. Had no idea lol

worldly ingot
#

Yes

alpine cairn
#

I added the spigot archived libraries to POM

rotund ravine
#

He wants to know how you are getting a jar. What are you pressing

worldly ingot
#

Yeah but to turn your project into a .jar file. How is it you do that?

alpine cairn
#

Export > jar file > finish

worldly ingot
#

Yeah, so with Maven and Gradle you do things a bit differently

#

You'll have to setup a build profile

#

It'll open a wizard for you. In the "goals" line, write "clean package", then hit run

#

Then you can re-use that build

alpine cairn
#

What is the difference between 1,2,3,etc maven build?

worldly ingot
#

The options in my screenshot you mean? Just different default ways to run your build is all

alpine cairn
#

I got a "BUILD FAILURE"

worldly ingot
#

What's the output?

#

?paste it please

undone axleBOT
alpine cairn
worldly ingot
#

error: invalid target release: 18
It doesn't know what release 18 is. What does your pom.xml look like?

#

Oh wait no, nevermind

#

Open up your build config.

#

Make sure you have the correct JRE set

sterile token
worldly ingot
#

It's work projects, I have to lol

fervent gale
#

So I've got a question I keep trying to call
private val manager: ScoreboardManager = Bukkit.getServer().scoreboardManager

and it keeps returning an error java.lang.NullPointerExceptiongetServer().scoreboardManager must not be null

worldly ingot
#

It's null in onEnable()

sterile token
alpine cairn
worldly ingot
#

Click the down arrow next to the Play button at the top

#

I guess Eclipse doesn't make that super clear heh

fervent gale
worldly ingot
#

Yes

#

ScoreboardManager is only initialized after the worlds are loaded

alpine cairn
#

The only option for me is "jre"

worldly ingot
#

Whatever you named it. It defaults to your project name

#

Oh, you mean the JRE stuff

#

You should have Java 18 installed on your computer somewhere. If so, you can point to it in Execution Environment. Or (and imo the better approach) you can setup an execution environment under Window -> Preferences... -> Java -> Installed JREs

fervent gale
#

Should I change my load up method to Post world then?

worldly ingot
#

No you can just schedule a task

#

Bukkit.getScheduler().runTask(this, () -> { /* Do your scoreboard stuff in here */ });

faint cypress
#

Hey there. (Apologies for the long message, but I figured it best to include lots of detail).
I want some advice on how to pass large amounts of data in ArrayList<ComplicatedClass> to a BukkitRunnable for saving its contents to a file.
In this use-case the file I want to write out to is a .csv , but this won't always be the case...

In my ComplicatedClass I have a method:

public String getCSVLine() {
    return String.format("%s,%s,%d,%s", this.getA(), this.getB(), this.getC(), etc);
}

When the functionality to save the ArrayList<ComplicatedClass> is invoked, I do something like:

public void save(String fileName) {
    // Loop through each item and add it to the list as a csv string line.
    List<String> csvList = new ArrayList();
    for (ComplicatedClass c : this.complicatedClassList) {
        csvList.add(c.getCSVLine());
    }
    // Start async, passing the string list.
    new SaveComplicatedClassListRunnable(this.plugin, fileName, csvList);
    this.runnable.runTaskAsynchronously(this.plugin);
}

The BukkitRunnable extending class then does:

@Override
public void run() {
    BufferedWriter bw= new BufferedWriter(new FileWriter(this.fileName));
    // Loop through passed ArrayList and write each String.
    Bukkit.getScheduler().runTask(this.plugin, () -> { // Callback });
}

I find this implementation easy to understand, but I acknowledge that it's only simple because I'm using a .csv file.

Q1). Is this actually thread-safe?
Q2). What are the caveats of this design?
Q3). What are my other options?
(I've looked into cloning, serialization / deserialization and deep-copies, but don't quite understand what I actually have to do...)

fervent gale
#

@worldly ingot would changing plugin loadup to POSTWORLD do the same

worldly ingot
#

POSTWORLD is default, so no

fervent gale
#

I have it set to STARTUP

worldly ingot
#

Oh

alpine cairn
worldly ingot
#

You have to add a new entry and point it to your JDK installation

#

Wherever it is on your local computer

#

This is one of my JDKs for example

#

(the checked one is the default by the way)

alpine cairn
summer agate
alpine cairn
#

And I don't know what either means tbh

worldly ingot
#

A JRE is fine if you have one. Mine just happen to be JDKs

#

As long as you have some version of Java installed

#

If you're writing against Java 18, I'd like to hope you have Java 18 actually installed on your computer

alpine cairn
#

I think I do

#

Is there a way to check?

worldly ingot
#

The default install path is under C:\Program Files\ usually

#

Then depending on the distribution under either Java, Oracle, OpenJDK, AdoptOpenJDK, etc.

alpine cairn
#

I see jdk -16.0.2

#

and jre1.8.0_251

worldly ingot
#

So I would add both of those (just so you have them readily available), but you can really only run Maven using Java 16, so that's the highest version you can support atm

#

If you want to be able to build for Java 18, you'll have to install it too using the link I sent above, add that as an Installed JRE, then update your Maven build config

alpine cairn
#

What is the difference?

worldly ingot
#

Well plugins depending on Bukkit can, in theory, be compiled against Java 8. So that's fine if you want to do that. Though Minecraft 1.17 forces servers to be run on at least 17, so you can use those features if you so choose

alpine cairn
#

Uhh

worldly ingot
#

Basically you can compile your project against any version between Java 8 - 19, depending on which features you want to use. However it's worth keeping in mind that whatever your plugin is compiled against will be the minimum version the server will require to use it

#

I would personally compile against Java 17

alpine cairn
#

I am looking to code in minecraft version 1.19.2

worldly ingot
#

Yeah so Java 17 is fine

alpine cairn
#

And I have 16 atm?

worldly ingot
#

Correct

#

You can definitely compile against 16 if you want though! You'll just have to edit your pom.xml to use release 16 instead

#

The differences between 16 and 18 are pretty miniscule so you won't be missing out on anything

alpine cairn
#

Okay

#

How do I edit pom to use 16?

worldly ingot
#

Somewhere in your pom.xml you probably have <release>18</release> and <target>18</target>

#

Or maybe <maven.compiler.source>18</maven.compiler.source>

worldly ingot
worldly ingot
alpine cairn
#

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>18</source>
<target>18</target>
</configuration>

worldly ingot
#

YES, update those 18s to 16s

dire salmon
#

im using bukkit runnable in a gui, when a player clicks an item, it runs. how can i make it stop running when the player clicks other item?

alpine cairn
#

Or now I can

#

Oh wait nvm

worldly ingot
#

C:/Path/to/your/project/target/ThePlugin.jar

#

Thatโ€™s how youโ€™ll build and export your project with maven from this point on

alpine cairn
worldly ingot
#

Sounds good ๐Ÿ™‚ glad you got it sorted

sterile token
#

Why do ppl still use eclipse ๐Ÿ’€ . I think they should heavly move from there and give a try to Intellij

alpine cairn
#

Minumum effort

worldly ingot
#

I still use it

#

Almost 8 years later

sterile token
#

LMAO

#

You really have big illnesses

#

๐Ÿคก

alpine cairn
#

You're the clown why do you care?

sterile token
#

I really prefer suffering with Ram using Intellij than suffering about dirty Eclipse interface

#

๐Ÿคฃ

#

But as Zacken says, they are just preferences

fallow violet
#

how can i get the itemstack of the killer of a player?

#

in PlayerDeathEvent

vocal cloud
#

yes

sterile token
#

yes

sterile token
#

Im not sure if its called getKiller(), i just remember that the getEntity() returns the killed player

dim bronze
#

What's the easiest way to get the players cardinal facing direction?

#

i.e the opposite direction an orientable block would face if it were placed by the player

worldly ingot
worldly ingot
#

if you want the opposite, entity.getFacing().getOpposite();

fallow violet
#

i mean he can hold something different but killed him with bow or something

worldly ingot
#

getItemInMainHand() will always be the item they killed them with, unless it's a bow. That's significantly harder to track because that information is lost

#

There's a reason bows don't support looting ;p

#

If you want to track the bow used if killed by a projectile, you will have to do that tracking yourself by recording what item was used from an EntityShootBowEvent

fallow violet
#

okay so itemInHand is in most cased the kill item?

fallow violet
#

can i check if the display name got changed with anvil or something?

sterile token
#

But for getting that item dont get it from PlayerDeathEvent#getEntity() cuz it will return the main hand item of the killedp layer

sterile token
fallow violet
#

can i get the default name somehow?

#

like its an TrasnlateComponent right?

sterile token
#

Im not sure, i just know Item names and lores are stored as TextComponent

solid cargo
#

Is it possible to send an email from alias email using the Java mailing API?
example:
Main email (non alias): josh@johnson.com
Alias (The one i want it[the message] to be sent from): joe@johnson.com

quaint mantle
#

Does anyone have an idea how to make a plug in which makes the player take no damage when he wears a full set of armor with protection 4 on it? The important thing is that he still loses durability of his armor but shouldn't take real damage as long as no piece breaks.

solid cargo
#

you can achieve that by doing EntityDamageEvent => check if the damaged entity is player => check if all armor pieces have prot 4 and if they even have the armor pieces=> if yes, cancel fall damage and decrease durability of armour.

#

@quaint mantle do you need pseudo code?

quaint mantle
#

Thanks man but maybe i explained one thing a bit bad. Of course he shouldn't take fall damage too but the important thing is that he doesn't get damaged when another player or entity hits him. I mean its pretty much equal to what resistance potion effect does. It prevents the player from getting damaged in form of hearts but he is still losing durability during fighting. So the idea is that not hearts are relevant in pvp, but the durability the armor has.

solid cargo
#

oh well then take out the fall damage part

quaint mantle
solid cargo
#

okay. do you know how to convert it to normal code?

quaint mantle
#

I don't

solid cargo
#

class SomeClass implements Listener {
@EventHandler
public void onDamage(EntityDamageEvent event) {

if (event.getEntity() instanceof Player player) {

if (player.getInventory().getHelmet != null && player.getInventory().getChestplate != null player.getInventory().getLeggingst != null
&& player.getInventory().getBoots != null) {
if (player all armor slots have prot 4 (not hard to tell, check some tutorial)) {
event.setCancelled(true);
}
}
}
} 
}

#

ik it can be better

#

i just wanna sleep

#

its 11pm

quaint mantle
#

Thanks

sterile token
solid cargo
#

yeah probably

sterile token
#

I think its much eff than checking if contain manually the properties

#

But you are on cellphone so much you cannot do

grizzled bridge
#

Somebody can help me with registerEvents?

sterile token
sterile token
solid cargo
#

YES

sterile token
#

Its well explained on the events page

sterile token
dim bronze
grizzled bridge
sterile token
dim bronze
#

My question might have been unclear

#

I want to get the cardinal direction the player is facing

sterile token
#

I dont understand phrase

grizzled bridge
solid cargo
grizzled bridge
#

yes

solid cargo
#

class blahblahblah implements Listener

#

did you do @EventHandler

grizzled bridge
#

yes

sterile token
#

?paste

undone axleBOT
grizzled bridge
#

how can i send it? xd

grizzled bridge
static ingot
sterile token
sterile token
#

Hmn

#

I cannot if you class implements Listener or not

#

๐Ÿ˜‚

grizzled bridge
#

Can i send picture what the package structure?

sterile token
#

I need to know the class you have

#

I mean the full source code of the class

grizzled bridge
#

Main or JoinEvent class?

sterile token
grizzled bridge
#

?paste

undone axleBOT
grizzled bridge
sterile token
#

Oh just realize that

#

Spigot event-listening doesnt work like that

prime berry
#

pls help

undone axleBOT
#

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

sterile token
#

For none programming realted questions please move to #help-server - Thanks

static ingot
sterile token
#

So just dont disturb in other channels

#

And wait patientlly

static ingot
grizzled bridge
#

The problem was solved, thanks!!!

static ingot
#

i just got curious and wanted to look, lol

sterile token
#

if need things fast just give your ... and you will have everything fast

#

yeah im tired of none imptaient ppl

#

With other words if need things fast just put money or paying someone to fix it fast

#

you related to smth else hahaha

echo basalt
trim creek
#

Is here an event to disable chickens spawning from eggs?

crimson terrace
trim creek
#

uhhh

#

Maaaaybe...

crimson terrace
#

yeah thatll do it

trim creek
#

Just disabling spawning chickens...

#

Thanks :D

crimson terrace
#

the egg spawning fires that event

quaint mantle
crimson terrace
trim creek
#

It works great. Thanks :D

#

basically I used EntitySpawnEvent, checked if entity is chicken, and just cancelled the event

#

it all is only because of one cosmetic haha

crimson terrace
#

oh tbh i read that entirely wrong, I thought you wanted to prevent chickens from spawning eggs

#

but its the same thing

#

youd need SpawnReason too

trim creek
#

Is it a thing?

#

Good to know ๐Ÿ˜น

#
@EventHandler
    public void chickenSpawn(EntitySpawnEvent e) {
        if (e.getEntity().getType().equals(EntityType.CHICKEN)) {
            e.setCancelled(true);
        }
    }
#

this code perfectly does btw

crimson terrace
#

yes, just check if the CreatureSpawnEvent.getSpawnReason() == CreatureSpawnEvent.SpawnReason.EGG

crimson terrace
trim creek
#

But a KitPvP server doesn't needs chickens anyway

sterile token
trim creek
#

Basically the cosmetic that would've made it possible to spawn chickens is something like... a kill effect... If it is active, and you kill someone, eggs will spawn in a cube sphere above you, and so yes.. xd
However there is a rank that has eggs replaced to snowballs

trim creek
#

1st programming rule: if it works, don't touch it

#

since it works, I won't touch it

#

no, since the thing that matters is that if it works

fallow violet
#

someone have a tutorial that explains how to get user input from sign via packets? (with nms)

river oracle
#

for something that simple sure, but as you scale just do the right thing get in the habbit of doing it even for small tasks

vague stone
#

Somebody know how I could enable fly for everyone (also in survival mode) when he joins the server?

trim creek
#

I don't really care. The only thing I care about is that it needs to work.

fallow violet
#

i imported the fresh build spigot.jar with buildtools compileOnly files('libs/spigot-1.19.2.jar') in gradle but i cant use nms? why?

remote swallow
chrome beacon
#

See the paperweight test plugin for example usage

fresh timber
#

I am trying to remove a certain number of items in someone's inventory with this line:

player.getInventory().removeItem(getItem(new ItemStack(Material.GOLD_BLOCK, i3 * 64), "ยง6Compressed Nether Gold"));

but when I do, it does not remove any items. I am for sure that the block I want to remove is in my inventory and i3 is for sure equal to 1 even though no items are removed from my inventory. The picture is the item I have in my inventory that it removes nothing of. I have 74 of them in my inventory. Anyone know why?

dim bronze
#

Will mushroom block data be reset as soon as the block is updated?

#

If so, what's the best way around this

remote swallow
fresh timber
#

the 74 items are in 2 stacks

remote swallow
#

the item stack you are removing unless i3 is1

#

will be over 64

#

so probably wont work

fresh timber
#

i3 is equal to 1

#

also im using .removeItem not .remove

misty current
#

!paste

fresh timber
#

xd

misty current
#

whats the prefix

fresh timber
#

?paste

undone axleBOT
misty current
#

thanks

fresh timber
#

np

misty current
#

getter inside CommandAPI:

    public static CommandAPI getPlugin() {
        return getPlugin(CommandAPI.class);
    }
#

getter inside the other plugin depending on CommandAPI

    public static EvolvedPrison getPlugin() {
        return getPlugin(EvolvedPrison.class);
    }
sterile token
#

The error is okay tho

misty current
#

a method to register commands is called inside EvolvedPrison and that method invokes getPlugin in the CommandAPI plugin

sterile token
#

You cannot cast EvolvedPrison to CommandAPI

misty current
sterile token
misty current
sterile token
#

Send your full code please

misty current
#

for some weird reason, CommandAPI's classloader holds the wrong JavaPlugin instance

misty current
sterile token
#

what contains CommandAPI?

misty current
#

because something's going wrong there

#
package me.kill05.commandapi;

import org.bukkit.plugin.java.JavaPlugin;

public final class CommandAPI extends JavaPlugin {

    private CommandManager commandManager;

    @Override
    public void onEnable() {
        this.commandManager = new CommandManager(this);
    }

    @Override
    public void onDisable() {
        commandManager.unregisterCommands();
    }

    public static CommandAPI getPlugin() {
        return getPlugin(CommandAPI.class);
    }

    public static CommandManager getCommandManager() {
        return getPlugin().commandManager;
    }
}
sterile token
#

so that is your command api?

#

Hmnnn

#

I wouldnt do that its really weird

echo basalt
#

mans got a whole plugin just to wrap 1 class

#

just do what most sensible servers do

#

have a core with the most commonly used utils

#

like fake entities, commands, guis, listeners n all

#

and then all other plugins depend on the core

misty current
#

it used to be a plugin with more stuff inside, i've extrapolated the module

echo basalt
#

Core might be singleton, in some companies

sterile token
#

I would use:

CommandAPI command = (CommandAPI) getServer().getPluginManager().getPlugin("CommandAPI");
command.noneStaticMethods();

misty current
#

that's what i'm doing anyways but the issue right now is not about my server's internal design

remote swallow
#

?di

undone axleBOT
sterile token
#

Im against shity static

echo basalt
#

im against static

sterile token
remote swallow
#

getServer().getPluginCommand("mycommand").setExecutor(new CommandClassName(this));

misty current
#

if you want i can send you more of my code so you'll see why i'm using statics in this specific case

misty current
sterile token
remote swallow
#
public class CommandClassName implements CommandExecutor {
  private final MainClassName plugin;
  public CommandClassName(MainClassName plugin) {
      this.plugin = plugin;
  } 
}
```'
sterile token
#

Epic

#

In that case should use wha ti sent tho

misty current
#

it doesn't really show in the code so that's fine

sterile token
#
CommandAPI command = (CommandAPI) getServer().getPluginManager().getPlugin("CommandAPI");
command.noneStaticMethods();
echo basalt
#

this is how you handle static at work

ivory sleet
#

kill05 its a bit weird

echo basalt
#

lol discord doesn't like pngs apparently

sterile token
sterile token
#

hahaha

ivory sleet
#

but like, you made sure the classes are loaded by the right class loaders?

sterile token
#

I thought it was my pc

misty current
#

just can you stop making assumptions about my code and can anyone actually focus on the issue

echo basalt
misty current
misty current
#

not sure what you mean by that

ivory sleet
#

cz like, JavaPlugin::getPlugin basically takes the class loader and retrieves the plugin instance associated with given class loader

sterile token
undone axleBOT
sterile token
#

Its not really diff

ivory sleet
#

and then performs a cast also via Class::cast

misty current
echo basalt
remote swallow
#

di would only work if they didnt register via cmd map

sterile token
ivory sleet
sterile token
#

4th i sent it

misty current
#

how am i supposed to DI from a plugin to another

sterile token
#

Just follow what i tell you

#

5th time in a row

#

That is what spigot api provide to get a plugin instance from anothe rplugin

#

There is no need to use static

#

okay do what like more i will leave it here ๐Ÿ˜‚

misty current
#

basically what i'm getting from this is that the PluginClassLoader associated with CommandAPI holds EvolvedPrison's instance in the plugin field

wary topaz
#

quick question, how does essentialsx support multible minecraft versions

remote swallow
#

building for lower versions

#

nms stuff by checking versions so triggering different classes probably

wary topaz
#

thanks

fallow violet
#

can i somehow get a custom head in my plugin?

remote swallow
#

what type of custom head

fallow violet
#

if i have a list like this: ObjectA, ObjectB, ObjectC
and i get ObjectA from the list somewhere and change a value in it, is it changed for the ObjectA in the list too?

wet breach
#

in most cases yes since objects themselves are not stored in the list rather just the reference

fallow violet
#

and

#

if i have a class with a list and i get it with something like getList() (returnst the raw list) and i run something with removeIf() the list is updated too?

vocal cloud
#

Yes.

raw prairie
#

is anyone good with oracle cloud?

#

I kinda need sum help

#

Basically how do I store my server in a block volume instead of a boot volume?

#

(Extra storage)

vocal cloud
#

by not using oracle /s

raw prairie
#

So please?

vocal cloud
#

Is it a VM with an OS or something else?

raw prairie
#

VM

#

Yea

#

It has a block + boot volume attached

#

But how do I store the actual minecraft stuff on the block volume

fallow violet
vocal cloud
#

df should tell you where it's mounted

raw prairie
vocal cloud
#

The command

#

df

raw prairie
#

k

vocal cloud
#

Mounted on section

vocal cloud
fallow violet
#

oh

vocal cloud
#

Also whereever the get members is you should add a removemembers

raw prairie
#

udev

#

or

fallow violet
vocal cloud
#

Remove the ;

#

Also use a HashMap

fallow violet
raw prairie
#

sda2 perhaps?

fallow violet
#

da fuq

raw prairie
fallow violet
#

should i remove whole class now? Lmfao

raw prairie
#

mb

vocal cloud
#

Not at the end

#

In the anonymous method itself

fallow violet
#

i just did this

vocal cloud
fallow violet
#

yeah

vocal cloud
#

there you go

#

much cleaner

fallow violet
#

thx

raw prairie
#

@vocal cloud

#

so what now

vocal cloud
#

does oracle docs say it gets mounted automatically? You might need to mount it yourself

raw prairie
vocal cloud
fallow violet
#

u thin hashmap better than list?

raw prairie
#

Idk how to move the stuff doe

vocal cloud
fallow violet
#

ooh ik what u mean

#

now im too lazy to change it but thanks

raw prairie
vocal cloud
#

mounted or attached?

raw prairie
vocal cloud
#

cause you might need to mount it

raw prairie
vocal cloud
raw prairie
#

lmao

#

as well

#
Disk /dev/sdb: 150 GiB, 161061273600 bytes, 314572800 sectors
Disk model: BlockVolume
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 1048576 bytes
vocal cloud
#

where is it mounted to?

raw prairie
#

appearntly

vocal cloud
#

that's the disk not the mount point

raw prairie
#

again

vocal cloud
#

df shows you mounted partitions

raw prairie
vocal cloud
#

Well if it's mounted df will tell you where

raw prairie
#

blockvolume

#

or

#

any name in particular

halcyon estuary
#

Hey, just a simple question.

How do I get for example imports like net.minecraft.server.<version lets say>.Entity ?

Cant find a way for it to work ๐Ÿ˜„

Also, the same with craftbukkit, I need CraftWorld import, cant find how do I do the import for lets say import org.bukkit.craftbukkit.<version>.CraftWorld

It's quite simple questions, but cant find the way to make it work :/

vocal cloud
#

/dev/sdb

raw prairie
vocal cloud
#

where

raw prairie
#
Filesystem     1K-blocks     Used Available Use% Mounted on
udev            12247496        0  12247496   0% /dev
halcyon estuary
vocal cloud
raw prairie
#

I ran df on /dev/sdb

vocal cloud
#

if it doesn't show up in df it's not mounted

vocal cloud
halcyon estuary
#

I did run the buildtools, added the jar file in project structure from BuildTools, but didnt work

remote swallow
#

use maven or gradle

halcyon estuary
#

I use maven

remote swallow
#

so add the dep

#

not the jar

vague heron
#

hey all! I am looking for a spigot plugin developer for my server, if this interests anyone please reach out to me and be prepared to show off some of your work!

remote swallow
#

?services

undone axleBOT
vague heron
#

ah thankyou!

halcyon estuary
halcyon estuary
sterile token
#

Loving java errors, every time they are more and more descriptive "Caused by: java.lang.LinkageError: loading constraint violation"

#

Nah forget what i have said the plugin was stupid hahaha

naive jolt
#

How do I control particles so that they don't just burst?

loud frost
naive jolt
#

Alright, so this is my code:
player.spawnParticle(Particle.SQUID_INK, player.getLocation(), 200, 0,0,0, 5);
And I want the particle to not burst I'll send a video of how I need the particles to act

sterile token
#

It doesnt even have a translation tho

loud frost
#

burst as in break/disappear?

naive jolt
#

More like explode

naive jolt
loud frost
#

Do you want there to constantly be particles?

naive jolt
#

As in they never stop?

#

Or they are consistent with their pattern?

loud frost
#

I dont know, its your question

naive jolt
sterile token
#

Because i dont think he is being really explainfully

loud frost
#

The video is still processing

sterile token
remote swallow
naive jolt
#

Thanks

loud frost
#

To me they look like they are bursting in this video

sterile token
naive jolt
#

Oh no

#

The particles go all over the place with my code

sterile token
#

still not understand, are you none native enligsh speaker?

naive jolt
#

Uh no I'm not

sterile token
#

because any particle is designed to go to place via code

#

Making ref that you can do lot of things with code

naive jolt
#

I don't think you get what I'm trying to say, thanks for your time I guess.

sterile token
#

yeah is what im saying to you - hahhaa

sharp kayak
#

How can i replace a word in a string? For example, replacing just the name of the player in a death message.

loud frost
#

string.replace

sharp kayak
loud frost
#

In the event the death message is sent, can you get the player name from somewhere else?

remote swallow
#

message.replace("thingtoreplace", player.getName())

sharp kayak
#

oh didnt think of that, thx

meager lynx
#

how do we get ServerPlayer without using the CraftPlayer from using the mojand mappings <classifier>remapped-mojang</classifier>

#

when i try using the mojang mappings, for NMS

#

i get the error

Unresolved dependency: 'org.spigotmc:spigot-api:jar:1.19.2-R0.1-SNAPSHOT'
remote swallow
#

remove the -api

meager lynx
#

from artifact id?

remote swallow
#

ye

meager lynx
#

got more errors now

remote swallow
#

have you ran buildtools

meager lynx
#

i dont think so

remote swallow
#

?bt

undone axleBOT
meager lynx
#

may i know what that is?

remote swallow
#

it builds spigot and creates the stuff to use nms

meager lynx
#

ok

quaint mantle
#

Hey guys, can I add the enchant of drop item? ( version on 1.19.2)

meager lynx
#

its downloading lots

#

btw i couldnt do it directly on the project, as my folder was in onedrive

#

so im downloading it out of onedrive

#

and will move it to the project

remote swallow
#

you dont need to move it to the project, you just need to run it

meager lynx
#

oh

#

so after it ends

#

i should be good to go?

remote swallow
#

yeah

meager lynx
#

great

jagged quail
#

do you still have the steak ๐Ÿ‘€

wet breach
jagged quail
#

ok

fallow valley
#

what causes this error?

#

incompatible types: org.bukkit.Sound cannot be converted to net.kyori.adventure.sound.Sound

remote swallow
#

bukkit sound cannot be converted to adventure sound

#

?paperdev also

undone axleBOT
#

Make sure to ask in the appropriate server concerning development towards different JAR types such as PaperMC. (Tip: Google them!)

fallow valley
#

ahh

#

Alright sorry

meager lynx
#

but not exactly sure

remote swallow
#

ItemDropEvent probably

quaint mantle
remote swallow
#

check PlayerFishEvent out

meager lynx
#

thought it was from a mob xd

#

@remote swallow ok so i finished installing it, and its still showing the same error

remote swallow
#

reload the project

meager lynx
#

i closed and opened it again twice

#

still doesnt work

#

@remote swallow

eternal oxide
undone axleBOT
meager lynx
#

one sec

quaint mantle
meager lynx
#

its really long, and that website wont save it for some reason

#

but it does say success

eternal oxide
#

cut off the beginning, only need the last page or so

meager lynx
meager lynx
#

since you want to change the item from fishing

eternal oxide
#
  - Saved as .\spigot-1.19.2.jar``` is not a valid .m2 path
meager lynx
#

wdym

eternal oxide
#

your local repository shoudl be called .m2 not .

#

yours is all messed up

meager lynx
#

damn

#

i just made a folder called test and downloaded it

eternal oxide
#

what command did you use to run buildtools?

meager lynx
#

this

#

inside my test folder

eternal oxide
#

in that case I have no idea what to advise your maven is so messed

meager lynx
#

๐Ÿ’€

#

so the download is correct?

quaint mantle
meager lynx
#

or

meager lynx
#

scroll up

quaint mantle
#

Oh Yeah I try with that event,

meager lynx
#

thanks

#

but im unable to import ServerPlayer

glossy venture
eternal oxide
glossy venture
#

joined a tthe wrong time

meager lynx
#
<dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.19.2-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
#

i changed it

wet breach
#

?bootstrap

undone axleBOT
#

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

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

meager lynx
#

ow

quaint mantle
# meager lynx a person
@EventHandler 
public void onFish(PlayerFishEvent event) {
        Player player = event.getPlayer();
              if (event.getState().equals(PlayerFishEvent.State.CAUGHT_FISH)) {
            if (event.getCaught() instanceof Item item) {

                 ItemStack result = fishType.item(1);
                 item.setItemStack(FishType.RAWMUDCARP.item(1));
              }
            }
      
        
    }
 

    public ItemStack item(int amount) {
        ItemStack itemStack = new ItemStack(material, amount);
        System.out.println(itemStack);
        ItemMeta meta = itemStack.getItemMeta();
        itemStack.addUnsafeEnchantment(Enchantment.CHANNELING, 1);
        meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "ยงf[" + fishRank.getName() + "] " + translate + " ยง7(" + size + "cm)"));
        meta.setCustomModelData(modelData);
        itemStack.addUnsafeEnchantment(Enchantment.CHANNELING, 1);
        itemStack.setItemMeta(meta);

        return itemStack;
    }

```  But It works only without addUnsafeEnchantment
wet breach
#

read the post and the following post it directs you to

#

to setup maven appropriately

meager lynx
#

ok

meager lynx
#

so maven should work right?

#

btw, they discourage the use of NMS

#

how can i make NPCs without it?

wet breach
#

Well, there is an NPC entity

#

in the API

meager lynx
#

can i use it to create an NPC

wet breach
wet breach
meager lynx
#

and when right-clicked should say something

wet breach
#

yeah might need NMS for the custom skin part

#

but everything else can be done from the api

meager lynx
meager lynx
#

just like NPC npc = new NPC();?

#

would make a new npc?

wet breach
#

you would just use the spawn methods

#

but, since you want custom skin you would need to spawn it from NMS I believe

#

not sure if skins can be changed on entities already spawned

#

if that is true, then you could spawn the npc from the api, then use NMS to change skin only

drowsy helm
#

nah it cant be

meager lynx
#

sad

#

well

eternal oxide
#

you can change teh skin on a player

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

is it possible on it

#

or maybe you could get the NPC as a player?

eternal oxide
#

what is the base of your NPC?

meager lynx
#

wdym

eternal oxide
#

the base MC class

meager lynx
#

uh

#

NPC?

quaint mantle
eternal oxide
#

Do you mean ServerPlayer?

meager lynx
quaint mantle
#

Oh Is there an enchantmentType for food?

remote swallow
quaint mantle
eternal oxide
meager lynx
remote swallow
meager lynx