#help-archived

1 messages Β· Page 42 of 1

vast hinge
#

oh god

#

ummm

paper compass
#

mhm

upbeat wyvern
#

well it requires some maths

vast hinge
#

ikr

paper compass
#

I meant 12 sections each are 30 degrees I think

vast hinge
#

some

paper compass
#

well ofc

#

I don't want to do it with schematics either

upbeat wyvern
#

I think you can loop all blocks of the circle and then check if they are in a "section"

vast hinge
#

omfg

#

i finally solved it

paper compass
#

lmao

#

solved what

vast hinge
#

there was bracket in the wrong place

paper compass
#

what was your issue

vast hinge
dusky herald
#

You really want to animate that? lol

vast hinge
#

getItem had a red underline

velvet marten
#

None of which Spigot collects
@subtle blade Replying to the above, so the account is some days old with 0 contributions anywhere. I am a citizen of the EU. So I assume the best solution is to send a support ticket for it to get deleted. Thank you πŸ™‚

dusky herald
#

Seems like a big waste of power to me, but maybe thats just me.

vast hinge
#

you could

#

like

#

just make a gui

paper compass
#

lmao

vast hinge
#

but you do you

paper compass
#

no

#

I want people to spin it if they have a ticket and if it lands on a certain section, they win something

vast hinge
#

seems easy except for the animation

dusky herald
#

I mean, you could make the wheel and memorize the positions, and create classes in your own plugin to do it

subtle blade
#

I am a citizen of the EU
Irrelevant. But report your account and state you want it deleted

#

md will get to it

vast hinge
#

blackveiled that would take way too long

dusky herald
#

It doesn't seem like it would be terribly hard to implement. More-so time consuming, and wasteful

#

I mean, it wouldn't take too long

#

You have 12 potential categories, and you could rotate them fairly easily

vast hinge
#

what if you just made it 4 sections?

#

it would be 90 degrees each

#

it would be alot easier

dusky herald
#

It wouldn't matter if it was 4, or 12

#

the functionality would be the same anyways

upbeat wyvern
#

it would be alot easier
@vast hinge no

vast hinge
#

ok

dusky herald
#

You would have fixed positions for all of them regardless.

#

You could create a runnable that begins after the player presses a switch

#

and generate a random integer/double as a "Strength"

#

and the Strength could determine the duration of the spin

#

and then you just iterate through a list, and move the "sections" in order

vast hinge
#

but wouldnt you also need a way to slow it down

#

like at the end of the duration

dusky herald
#

It depends how technical you want to get with it.

#

There's no reason to slow it down unless you plan to implement more quality in the way the blocks move.

#

I've already thought of how I would pull it off, but it wouldn't be animating like a wheel, just literally rotating blocks around the axis

upbeat wyvern
#

@vast hinge just count the number of rotation - the more rotation they are the less a new rotation is probable

dusky herald
#

^ either that, or just use a strength to determine the duration

ashen stirrup
#

Are there any plugins which make blazes drop blaze rods in water? They don't seem to be doing that on my server

dusky herald
#

It's by no means impossible, but you'd have to put in a lot of extra work to make it look like its fully animated.

#

You could do the basic work first, get it working, and then improve the "quality" later.

#

As far as math goes, I dont think you would need to do any math if you used fixed positions.

upbeat wyvern
#

however I think the block update should be done with packets, so only the player spinning the wheel should see the animation

dusty topaz
#

don't even need to use packets

dusky herald
#

I think packets would be wasteful if anything.

dusty topaz
#

pretty sure there is a method to make a player see a block

dusky herald
#

I would rather just have the server update it personally, that way people are aware it's spinning.

dusty topaz
#

player#sendBlockChange

#

if you wanted only one person to see it

dusky herald
#

Unless you want several people to spin it at the same time

#

then ^

vast hinge
#

wait is it possible to make a player not see a block while another player can see the block?

upbeat wyvern
#

that was what I was thinking

subtle blade
#

Whaaaat are you all on about... what's wrong with ray tracing along a rotating vector?

#

Have it be a set radius, rotate along the z axis

#

(or x depending on rotation)

#

Divide it up into set radians

upbeat wyvern
#

@vast hinge i do not know if there is a method in the api for this, but with packets it's possible

dusky herald
#

Nothing wrong with it, just trying to simplify it

subtle blade
#

You guys are needlessly overcomplicating it if anything

#

Packets and fixed sections

dusky herald
#

I didnt bring up packets πŸ˜†

#

If he's capable of doing it the way you suggested, then that's fine.

#

as long as he understands the calculations he would have to apply.

subtle blade
#

I mean, the math behind it is nothing more than sin/cos to rotate along a circle and being able to use > and < lol

#

Don't even need the sin/cos math

upbeat wyvern
#

packets seems to be nessecary if he want players to be able to spin the wheel in the same time

dusky herald
#

You'd be surprised how many people dont understand that πŸ˜†

#

no matter how basic it is

upbeat wyvern
#

You'd be surprised how many people dont understand that πŸ˜†
+1

subtle blade
#

If you can't > and <, you should reconsider learning programming πŸ˜›

upbeat wyvern
#

basic trigonometry isn't sometimes that "basic" for some begginners

vernal spruce
#

how would i get past this in someones else plugin?

#

@EventHandler (ignoreCancelled = true, priority = EventPriority.HIGHEST)

dusky herald
#

@subtle blade Lol, I'm not talking about > or <, I'm talking about the mathematical understanding behind it.

subtle blade
#

You can't

#

Stupid plugin doing stupid things

dusky herald
#

I would believe a person who understood how to apply mathematics, would probably not ask how to do it in the first place.

subtle blade
#

I mean at least those guys aren't using the MONITOR priority

#

Though HIGH would probably be more appropriate

vernal spruce
#

sadly problem is.. i made a nice plugin that changes a spawner based on X.. but this just listens if its a spawner and completly changes it

subtle blade
#

Yea. That's a stupid plugin

upbeat wyvern
#

I would believe a person who understood how to apply mathematics, would probably not ask how to do it in the first place.
@dusky herald well if we have an idea for how to do something, but we are looking for a better way to do it mathematically ?

subtle blade
#

Plugins released publicly listening on highest priority are stupid unless there's a justifiable reason behind it

#

highest should be reserved for private plugins looking to modify the outcome of public plugins

dusky herald
#

@upbeat wyvern If you're looking for a better way to do it mathematically, then you would need to set a radius, and determine your sections (as radians), like Choco said.

#

and animate those radians by updating the blocks / sending packets / update block for player, etc

subtle blade
#

Stellrow, what plugin is this?

subtle blade
#

You may have to change it through the HandlerList

#

Oh, great lol

dusky herald
#

you would also need to determine an arc length (basically the outline of the circle)

small nimbus
#

OS, just PR

vernal spruce
#

i might just do a workaround

#

or smthng

paper compass
#

The thing is I don’t know where to start

dusky herald
#

to determine how many blocks long the edges of your circle would be

#

or rather, the radian

#

I'm not sure of an easy way to explain it, you could just look it up and figure out how to apply it

subtle blade
#

Blackveiled, what I would do is get the handler list for BlockBreakEvent (I think that's what it is? Whatever the event is)

#

HandlerList handlers = BlockBreakEvent.getHandlerList()

paper compass
#

Don’t you think I’ve been googling

dusky herald
#

Googling what though? lol

#

All circles literally work the same way

vernal spruce
#

@subtle blade you want to temporarily unregister the event while i do my thing?

subtle blade
#

No no, but unregister theirs and re-register it with a lower priority

remote socket
#

How would I check if a spawned entity is a chicken jockey?

subtle blade
#

HIGH, preferably

#

Then have your listener be listening on HIGHEST

small nimbus
#

or you know just pull request, since it's a open source plugin

subtle blade
#

^ this is preferred.

#

I say all this assuming you're creating a private plugin lol

small nimbus
#

as if the author has anything wrong with it being HIGH rather than HIGHEST

subtle blade
#

oh ffs

#

SpawnerMineListener is modifying the event on MONITOR priority

upbeat wyvern
#

maybe there's a way to inject code to change that ?

vernal spruce
#

yeah i will

subtle blade
#

I would say bump all of his events down to normal

obtuse rose
#

@subtle blade isn't monitor priority reserved for observing only?

subtle blade
#

Yes

digital sphinx
vernal spruce
#

for now i gave it to a friend to test the plugin so i guess i will do a workaround for him as well

subtle blade
#

As in you should never modify the outcome of the event in the monitor priority

#

This author doesn't know what they're doing lol

vernal spruce
#

still 53k downloads damn

dusky herald
#

He just said, fuck everyone else

subtle blade
#

That SpawnerMineListener makes me hurt

digital sphinx
#

Say it something? If its finish?
@digital sphinx Hello?

subtle blade
#

Don't know what you're asking Adrian

#

BuildTools will let you know when it's done

paper compass
#

I don’t even know where to start with this so if you can help please DM me. (I’m trying to fix my pc)

vernal spruce
#

@subtle blade there is a problem with

#

asking him to lower event priority

subtle blade
#

Why's that?

vernal spruce
#

this is why he updated

#

"set event priority to highest to fix cancelled explosions from droppi"

#

dont think me requesting it lowered will make him do it

subtle blade
#

πŸ™„

vernal spruce
#

ohh boy.

subtle blade
#

Sounds like other plugins doing stupid things

#

So he was forced to do stupider things

vernal spruce
#

work around it is

sonic trout
#

the cycle continues

vernal spruce
#

guess ima just skip breaking my spawner forcing it to a admin command..

frigid ember
vernal spruce
#

at least for now

frigid ember
#

I'm getting this Buycraft error, with fetching players.

#

What could this issue be?

subtle blade
#

Fork. Speak to them instead

#

Also, beerspigot.jar:git-TacoSpigot-bf023c7d. lolwut. Which one is it?

#

Why is a TS jar named BS?

peak marten
#

Someone knows why this line isn't changing the block to a glowstone block?

        player.sendBlockChange(e.getBlock().getLocation(), Bukkit.createBlockData(Material.GLOWSTONE));
dusky herald
#

Just do e.getBlock().setType(Material.GLOWSTONE);?

peak marten
#

No, I want to send a package, not change the actual block

subtle blade
#

Wants it done client side I presume

peak marten
#

yes

dusky herald
#

Ah

subtle blade
#

Is it called? Because there's no reason for it not to work

peak marten
#

yes, it at least the lines right under are

#

so I gues

dusky herald
#

You could send a debug message

peak marten
#

I did

dusky herald
#

under the line

#

is the debug message running?

peak marten
#

yes

subtle blade
#

Anything strange about the Location? null world? Invalid block? I honestly don't know what else would be causing that issue

peak marten
#

well, only one thing maybe, I cancel the event?

#

before

dusky herald
#

that's probably what it is

subtle blade
#

That might actually be the cause, yea

#

Run that method a tick later

dusky herald
#

Sometimes cancelling the event screws things up.

peak marten
#

Or I can put the cancel at the end

#

let me try that

dusky herald
#

nah

subtle blade
#

No, won't matter

dusky herald
#

it wont make a difference

peak marten
#

no, doesn't work

dusky herald
#

Just do what Choco said, you could create a runnable

#

and run it later

subtle blade
#

The client has to re-assume that the block wasn't changed so it changes for a split second to whatever it thinks it should change to (air), then calls your change packet, then reverts back to what it should be after it was cancelled

dusky herald
#

set the values as final then refer to them in the temporary runnable

subtle blade
#

Your packet is sandwiched in the middle and snuffed out

peak marten
#

wut?

subtle blade
#

Call sendBlockChange() one tick later lol

peak marten
#

Sorry, but I did this in the past, without issues

#

how would I do that?? I mean, a different thread to send the package??

subtle blade
#

Bukkit.getScheduler().runTaskLater(plugin, () -> player.sendBlockChange(/* whatever you had here */), 1L);

peak marten
#

Yeah, but, it used to work without, anyhow, I'll try that

subtle blade
#

Maybe in another event or if it weren't cancelled

#

But I'm doubtful it worked if it were a cancelled block break event

peak marten
#

I'll try it

#

just a sec

#

okay, here we go

subtle blade
#

(plugin being an instance of your plugin's main class, obviously)

peak marten
#

yea

#

I really don't like that I have to pass an instance of my plugin there .. but okay

subtle blade
#

Gotta do what you've gotta do

peak marten
#

yea

#

yes

#

it works

#

but

#

as soon as I hit a block, the package that I placed are gone

#

so they change back

#

there is some strange stuff going on

vernal spruce
#

Don't the block get updated if you interact with them?

#

So the server sends new data about it?

peak marten
#

yea, indeed

#

but I don't interact with that block

vernal spruce
#

your hitting it?

peak marten
#

no

subtle blade
#

Yea that's how it works

peak marten
#

okay, everything looks good now

subtle blade
#

When the client left or right clicks the block, the client is sent a packet from the server with the result of the interaction and the block it clicks is updated

#

Realizes "oh shit... I didn't click a glowstone block" lol

vernal spruce
#

so catching the packet might fix it?

peak marten
#

it works perfectly

vernal spruce
#

k then nvm

peak marten
#

thank you all

#

the runnable is the correction option

hidden crest
#

kk. I'm yet to find an answer for this, wondering if someone can help. Buckle your seatbelts.

When i started my survival server, I introduced tools that are way too op, and they are affecting the game now, there is no need to grind when you can buy really really op stuff.
I need to remove them, They all have unbreaking 10 etc and have custom names.

My original idea. was to have the items rendered useless, aka, you try and hit with the custom sword 'noobslayer' and it just gives a message, giving the user the ability to sell the sword back for what they paid (fair) by taking it to a refund shop (different plugin)

and with the armour thats op, hopefully have that unequip itself and not allow it to be worn again.

I tried BANITEM plugin, but unfortunatly it only works with specific durability states. so i can block the sword at 0 durability. or 1562 durability. and not anything 'within' that range. and putting the code in 1500+ times for each weapon, isnt feasible at all. 10+ weapons

So does anybody know how i can fairly easily render these items useless? Thanks πŸ˜„

fading owl
#

When the client left or right clicks the block, the client is sent a packet from the server with the result of the interaction and the block it clicks is updated

#

what

#

the client is sent a packet

vast hinge
#

you could

#

just get a blacklisted items of the internet

#

it might work

hidden crest
#

I have scoured for plugins :/

subtle blade
#

What's wrong with that, BitLong?

hidden crest
#

Most of them dont support custom items, If i add my custom diamond sword to the config to blacklist, it bans all diamond swords.

fading owl
#

if the client performs an event it has to communicate that to the server

#

the server would only handle verification

#

if necessary

subtle blade
#

I'm aware. I simplified

fading owl
#

ehh

subtle blade
#

Client -> server -> client

#

Client requests interaction with block, server validates and sends back a packet saying what block was interacted with

fading owl
#

probably doesnt even server -> client

#

unless there is a correction to be made

vernal spruce
#

@hidden crest why not make it urself?

subtle blade
#

It does, otherwise the client wouldn't realized it fucked up lol

peak marten
#

That's why I never work with packages :p

#

such a pain

vernal spruce
#

they can be fun

fading owl
#

ehhh

vernal spruce
#

i mean creating npcs is fun

fading owl
#

i would assume it just updates the block for other players in chunk

#

server validates and sends back a packet saying what block was interacted with

#

that would be a waste of bandwidth

#

i could definitely be wrong

subtle blade
#
    @Override
    public void a(PacketPlayInUseItem packetplayinuseitem) {
        PlayerConnectionUtils.ensureMainThread(packetplayinuseitem, this, this.player.getWorldServer());
        WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
        EnumHand enumhand = packetplayinuseitem.b();
        ItemStack itemstack = this.player.b(enumhand);
        MovingObjectPositionBlock movingobjectpositionblock = packetplayinuseitem.c();
        BlockPosition blockposition = movingobjectpositionblock.getBlockPosition();
        EnumDirection enumdirection = movingobjectpositionblock.getDirection();

        this.player.resetIdleTimer();
        if (blockposition.getY() >= this.minecraftServer.getMaxBuildHeight() - 1 && (enumdirection == EnumDirection.UP || blockposition.getY() >= this.minecraftServer.getMaxBuildHeight())) {
            IChatBaseComponent ichatbasecomponent = (new ChatMessage("build.tooHigh", new Object[]{this.minecraftServer.getMaxBuildHeight()})).a(EnumChatFormat.RED);

            this.player.playerConnection.sendPacket(new PacketPlayOutChat(ichatbasecomponent, ChatMessageType.GAME_INFO));
        } else if (this.teleportPos == null && this.player.g((double) blockposition.getX() + 0.5D, (double) blockposition.getY() + 0.5D, (double) blockposition.getZ() + 0.5D) < 64.0D && worldserver.a((EntityHuman) this.player, blockposition)) {
            EnumInteractionResult enuminteractionresult = this.player.playerInteractManager.a(this.player, worldserver, itemstack, enumhand, movingobjectpositionblock);

            if (enuminteractionresult.b()) {
                this.player.a(enumhand, true);
            }
        }

        this.player.playerConnection.sendPacket(new PacketPlayOutBlockChange(worldserver, blockposition));
        this.player.playerConnection.sendPacket(new PacketPlayOutBlockChange(worldserver, blockposition.shift(enumdirection)));
    }```
hidden crest
#

@vernal spruce I'm nowhere near skilled enough

subtle blade
#

Last two lines

fading owl
#
  • client to server
  • server validates if necessary
  • update players in chunk
subtle blade
#

Always called

hidden crest
#

Wondering if worldguard blacklist supports custom item names

fading owl
#

sec

vast hinge
#

anyone know how to do this?

#

i need to implement multiple things

fading owl
#

separate with ,

vernal spruce
#

@hidden crest ask for a plugin in bukkits forum its most likely to be made

fading owl
#

don't need to indicate implements twice

#

JumpBoots implements CommandExecutor, Listener

subtle blade
#

Seriously advise separating your CommandExecutors and Listeners though

vast hinge
#

thanks

fading owl
#

^

#

what choco said

vast hinge
#

hmmm

fading owl
#

classes should only have a single purpose

vast hinge
#

oh

#

im making each class a command

vernal spruce
#

nah just slap everything in a god class πŸ˜‚

fading owl
#

:p

vast hinge
#

lol

#

wait so should the commands be a package

fading owl
#

sure

vast hinge
#

how do you do it?

fading owl
#

same with listener

#

com.mywebsite.listener
com.mywebsite.command

crimson sandal
#

Hey guys, does anyone know how to trigger the chest open/close animation without using NMS?

vast hinge
#

oh ok

#

thanks

subtle blade
#

.listeners > .events tbh

fading owl
#

true

subtle blade
#

That animation is triggered based on the amount of inventory viewers, james

vast hinge
#

should the main.java be in just com.mywebsite

fading owl
#

oof

vernal spruce
#

@subtle blade why openable doesnt have this? Kappa

fading owl
#

Main.java is a poor name but yeah

vast hinge
#

what

#

should it be like Core.java?

#

or something

fading owl
#

What is ur your plugin name

vast hinge
#

umm

#

Atlas-Core

#

its a private plugin

vernal spruce
#

most often the plugin name is the main

fading owl
#

AtlasCorePlugin extends Plugin

#

AtlasCorePluginLauncher { main(..) }

vast hinge
#

im confused

crimson sandal
#

That animation is triggered based on the amount of inventory viewers, james
@subtle blade Yeah so is there a way to have like a phantom inventory viewer? I basically open a different inventory when the player opens the chest.

vast hinge
#

im very new to java

fading owl
#

no worries

vernal spruce
#

you could spawn a fake player then open that chest for him

subtle blade
#

(extends JavaPlugin)

fading owl
#

oh is it JavaPlugin or Plugin

vernal spruce
#

not sure if it can do the job though

fading owl
#

I dont even recall

vast hinge
fading owl
#

yeah ur right its JavaPlugin

vast hinge
#

is this how the main is ment to look like?

crimson sandal
#

Can you spawn fake players with just the api? I thought that needed NMS?

fading owl
#

that looks fine

#

no need for this.

vernal spruce
#

it does indeed need nms i think

fading owl
#

and do something like

#

Objects.requireNonNull(getCommand("Help"))

vast hinge
#

what does it mean?

crimson sandal
#

Yeah ideally I'd like to do this without NMS

vernal spruce
#

basically as choco said you can't do it through the api

fading owl
#

just requires the command to not be null

#

if it is, an exception is thrown

#

at teh start of runtime

subtle blade
#

Can probably create API for it tbh

#

Just trying to figure out where that animation is sent

#

I remember seeing it when working with Forge. I know it's in the client model

#

But the server has to tell it how many viewers there are

vernal spruce
#

maybe the chest has a state?

#

like open/closed?

vast hinge
#

wait

subtle blade
#

It doesn't. It's all done through the model

wraith dew
#

does the windows cmd terminal support 256 colour ansi codes?

vast hinge
#

where do i specify what class it is in?

vernal spruce
#

damn

fading owl
#

what do you mean

#

the plugin class?

vast hinge
wet compass
#

Why is it recommended to restart your server once a day, what does it affect?

crimson sandal
#

Yeah it's definitely based on the viewers the chest has and then the client animates based on the viewers the servers provides.

vernal spruce
#

dont think i ever saw the windows cmd have a color @wraith dew

fading owl
#

because plugins are shit and hog resources

#

and probably dont dispose of them

#

@crimson sandal

wraith dew
#

ever used bungeecord @vernal spruce

fading owl
#

Help is undescriptive

#

HelpListener

#

or HelpCommand

#

rather

vernal spruce
#

doesnt Help override minecrafts default /help ?

wraith dew
#

yes

peak marten
#

Okay sorry again, but the package thing has one very shitty isssue ... if I break a block right next to the block which I sent a packet for, it also updates

wraith dew
#

if you specify it in plugin.yml it will override the vanilla one

vernal spruce
#

@peak marten i think it updates in a area

subtle blade
#

Yep. Updates neighbouring blocks

vernal spruce
#

imagine breaking a redstoneblock next to a lamp

subtle blade
#

All cardinal directions

vernal spruce
#

it has to update

vast hinge
peak marten
#

That is an issue

vast hinge
#

what does this mean?

fading owl
#

oof

#

requireNotNull takes an Object of type T as a value

#

not a Void

crimson sandal
#

It would be nice if Inventory had a method like .setViewers() or something along those lines

vernal spruce
#

@peak marten welcome to working with packets πŸ˜‚

fading owl
#

the purpose of requireNonNull is to ensure the reference from getCommand("help") is not null

peak marten
#

@subtle blade , are there any work arounds for that? :p

vast hinge
#

but what does it mean by required type: t?

fading owl
#

The type you provide is the type you get back

subtle blade
#

There's really no clean way to add in API to force a chest open animation

fading owl
#

look into a topic called Generics

subtle blade
#

Eh, I can think of a way I guess

vast hinge
#

where?

fading owl
#

google

vast hinge
#

oh ok

fading owl
#

oracle website

peak marten
#

Other then actually updating it?

fading owl
#

specifically look into type inferrence

peak marten
#

Maybe if I delay the task even more

#

ah that might be it ...

vernal spruce
#

what is the goal ur trying to reach?

peak marten
#

I could set all the blocks agian

#

so I got a collection of locations

#

and I update the block there

crimson sandal
#

Eh, I can think of a way I guess
@subtle blade How do you think it could be added?

peak marten
#

using packets

vernal spruce
#

couldnt you update X block if location is less than 2blocks?

peak marten
#

so I can send all packages to solve it

fading owl
#

when u say packages

#

do u mean packets

vernal spruce
#

yes

peak marten
#

packets yes

fading owl
#

if not, whats a package

peak marten
#

sorry

#

typo

fading owl
#

no worries

#

well u said it 2-3 times

#

so i had to ask

peak marten
#

typo *3? :p

subtle blade
#

CraftBukkit would have to patch in a boolean to TileEntityChest which could be set by an org.bukkit.block.Chest (the BlockState). It wouldn't be per-player though

fading owl
subtle blade
#

It would just be a stated thing

peak marten
#

hahahaha

#

sorry

vernal spruce
#

so everybody would see the chest open

fading owl
#

actually

#

there is like 7-8 occurances

#

lol

peak marten
#

hahahaah

fading owl
#

:p

subtle blade
#

Yea, it would be everyone

vernal spruce
#

hes talking about packets didnt even read packages

peak marten
#

packets

#

:p

#

Okay, I'll try something xd

vernal spruce
#

idk is it worth bothering adding that? @subtle blade

subtle blade
#

There has to be a packet that clients are sent to inform them of how many inventory viewers there are but we would have to manipulate that packet a bit to give the wrong number of viewers

#

Probably not, no

crimson sandal
#

Ah yeah, so if true set the inventory of the chest's viewers != 0

subtle blade
#

If you want, you could try reflectively setting viewingCount in TileEntityChest

#

I don't know if that would actually do anything but yea

fading owl
#

its a shame the interface system isnt more complex

vernal spruce
#

he doesnt want to use nms..

fading owl
#

would love to see some custom interfaces

subtle blade
#

I'm aware

#

but there's no API for it, so I don't know what you want me to say lol

vernal spruce
#

nope,no way to do it rn without nms πŸ˜‚

hidden crest
#

If one was going to take a first look into making plugins for my own server

#

what ide would one suggest?

vernal spruce
#

eclipse is the easyest i think

fading owl
#

i'd suggest taking a full week to learn about 30 minutes a day of java

subtle blade
#

The actual animation is done by modifying the a field incrementally by 0.1 until it reaches 1.0

fading owl
#

learn the fundamentals

#

gotta walk before you can run

crimson sandal
#

IntelliJ is the nicest though πŸ™‚

subtle blade
#

Funny enough, that's done on the server side to send sounds

vernal spruce
crimson sandal
#

Wait so the server actually controls the animation?

subtle blade
#

No, the server controls the sounds

#

Which it should

#

Though it keeps track of the animation in order to play said sounds at the right time

#
if (this.viewingCount == 0 && this.a > 0.0F || this.viewingCount > 0 && this.a < 1.0F) {
            float f1 = this.a;

            if (this.viewingCount > 0) {
                this.a += 0.1F;
            } else {
                this.a -= 0.1F;
            }

            if (this.a > 1.0F) {
                this.a = 1.0F;
            }

            float f2 = 0.5F;

            if (this.a < 0.5F && f1 >= 0.5F) {
                this.a(SoundEffects.BLOCK_CHEST_CLOSE);
            }

            if (this.a < 0.0F) {
                this.a = 0.0F;
            }
        }```
fading owl
#

break this up into 30-45mins/day

crimson sandal
#

Ohhh that makes sense actually

subtle blade
#

(and this one above for opening)

        if (this.viewingCount > 0 && this.a == 0.0F) {
            this.a(SoundEffects.BLOCK_CHEST_OPEN);
        }```
#

this.a() just plays it at the correct location once if it's a double chest

vernal spruce
#

hmm so changing it might not be that hard

subtle blade
#

Well that's in a tick method. It's constantly changed

frigid ember
vernal spruce
#

socked closed?

fading owl
#

looks like its unable to conenct

#

to some service

#

OkioL232

vast hinge
#

@fading owl i found out what generics are

frigid ember
#

OkioL232?

vast hinge
#

but how does that link to it?

fading owl
#

class Okio

frigid ember
#

What even is that? Also, what socket should I open?

fading owl
#

Line 232

#

is the culrpite

crimson sandal
#

But I'd need NMS to reflect the TileEntityChest class anyway wouldn't I?

fading owl
#

probably some type of blocking operation

frigid ember
#

It's BuycraftX, it's a plugin I did't code it.

vernal spruce
#

@frigid ember you would get better help on theyr help

fading owl
#

i figured, is it open source?

frigid ember
#

Let me check

#

@vernal spruce I'll ask haha, but just wanted to make sure here before I wait 20 days for a response from them

vast hinge
#

is it a good idea to put a package in a package

#

inside a package

vernal spruce
#

package-ception

fading owl
subtle blade
#

Can make as many packages as you'd like

vernal spruce
#

your IDE usually imports it for you

subtle blade
#

Organize how you'd please

vernal spruce
#

so it doesnt matter how many you make

subtle blade
#

Just... use common sense and don't go overboard lol

fading owl
#

and stay within the conventions

vast hinge
#

a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package inside a package

vernal spruce
#

a package for each event,ezyπŸ˜€

crimson sandal
#

Also is the API open source and available to make pull-requests to etc? I know it used to be on GitHub but not much else

vernal spruce
#

i believe u need to do it to bukkit

crimson sandal
#

And CraftBukkit is the implementation of the API right

fading owl
#

CraftBukkit is the glue that bridges the API and the vanilla server

vast hinge
#

BukkitCraft is the bridge that glues vanilla servers and the api

fading owl
#

lol

crimson sandal
#

Lul

fading owl
#

how are those generics coming along

#

xD

vast hinge
#

fixed the issue with main.java

fading owl
#

proud of u

vast hinge
#

thanks

fading owl
#

remove the call to this.

#

no need

#

should only use this. for potential self assignment

#

and a few other use cases

vast hinge
#

k

#

btw

crimson sandal
#

Okay and so is the repo currently working at 1.15 is it? How does it work with updating to 1.16 etc?

vast hinge
#

inception

fading owl
#

@crimson sandal they have a branch per version

#

master is 1.15.2

#

i believe

crimson sandal
#

Okay and so you just use BuildTools and that downloads the current branch?

vast hinge
fading owl
#

yeah i believe its --rev LATEST

#

or --rev 1.15.2

vast hinge
#

how do i do this?

fading owl
#

monty

#

whats ur question

#

bruh

vast hinge
#

im confused

#

its not working

fading owl
#

listen

#

dont try and run before you can walk

#

take some time to go learn some basics

#

then tackle plugins

#

ok

crimson sandal
#

Okay nice, and so no work on 1.16 has started yet then and master is the latest codebase at 1.15 correct?

fading owl
#
  • conventions
  • data types
  • modifiers
  • objects
  • interfaces
  • abstraction
  • polymorhism
  • design patterns
#

take a week to learn all of that

#

then tackle plugins

#

otherwise you'll spend a week doing nothing and getting nowhere

vast hinge
#

so

#

ok

fading owl
#

the best thing you can do is start learning java, open an IDEA like IntelliJ or Eclipse and play around after each time you learn something.

vast hinge
#

what is the most used CamelCase or Mixed case?

dusky herald
#

I suggest the Oracle tutorials to learn Java in conjunction with putting together your own plugin. Think of what you want to make, it's best to start off basic. Search up tutorials on good practices to utilize the Bukkit/Spigot API as well.

#

@vast hinge follow Java naming conventions

fading owl
#

ehhh

#

i would use oracle tutorials to gather the lsit of topics you need to learn

#

but i'd research alternative ways to learn those topics

#

Oracle can be pretty bland.

dusky herald
#

Yeah I meant more or less just to learn, not literally the entire thing.

#

Β―\_(ツ)_/Β―

fading owl
#

Sure

dusky herald
#

Sometimes bland is better.

fading owl
#

Good advice

#

Eh

left lintel
#

Is the iDisguise plugin there for 1.14.4?

dusky herald
#

A lot of tutorials can be long and drawn out, and provide too much information.

wicked sequoia
#

How do I find which plugin is overriding my /shop command? when I edited my commands.yml nothing changed

dusty topaz
#

You can use plugman /plugman lookup shop

vast hinge
dusty topaz
#

function

vast hinge
#

thanks

dusty topaz
#

(method)

crimson sandal
#

YouTube is often quite good because at first learning to use your IDE is sometimes the most challenging part

wicked sequoia
#

I don't really want to install another plugin. is there any other way?

dusty topaz
#

you can get rid of it after

#

but uhh, not that i know of

vast hinge
#

Fredthedoggy

#

what plugins do you have?

wicked sequoia
#

EssentialsSpawn

dusky herald
#

@wicked sequoia maybe disallow permissions to use the other shop command?

fading owl
#

you could use debugging software and listen for events that fire commands and step through them

dusky herald
#

Just a theory

vast hinge
#

wait what

#

essentialsspawn shouldnt have a shop

dusty topaz
#

Are you a developer Fred? If so you can code something to check

#

But I don't think there is a vanilla way to do it

vast hinge
#

well

#

there kinda is

#

look through all of the other plugins yml files

dusky herald
#

@crimson sandal that's up to how you learn best. Everyone is different. I personally learn best through experimentation. Watching videos is dull to me.

vast hinge
#

and check if they have a Shop:

dusty topaz
#

Yeah, but then you have to open every single jar file

#

As opposed to download one and run a command

wicked sequoia
#

I have shopGUI+, bentobox, the EsentialsX suite, Worldedit, and tokenamanger
I want the shopgui+ shop command

fading owl
#

@vast hinge could hve aded the command programatically

vast hinge
#

true

dusty topaz
#

and yeah, some plugins might be using ACF or something

#

which doesn't need plugin.yml iirc

crimson sandal
#

@dusky herald true, I like a combination of both, sometimes when you can't get something to work watching someone else is the best way

fading owl
#

does anyone know if Spigot can be used as a dependency

#

not the spigot api

#

spigot itself

dusty topaz
#

it is used as a dependency

#

every time you use it

fading owl
#

i meant publicly

dusky herald
#

@crimson sandal if you use IntelliJ IDEA though, just an example they do have a good document resource to figure out how to navigate their IDE.

fading owl
#

do they have it hosted

#

on a repo

dusty topaz
#

yes

fading owl
#

and packaged

dusty topaz
#
    <repository>
        <id>spigot-repo</id>
        <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
    </repository>
fading owl
#

i think

#

you're missing

#

what i said

dusty topaz
#

i don't think i am..?

dusky herald
#

And it's good to know too, because YouTube cant always cover specific problems you may encounter

fading owl
#

does anyone know if Spigot can be used as a dependency
not the spigot api
spigot itself

#

not the spigot api

silk gate
#

yes

crimson sandal
#

@dusky herald Oh yeah I know! I just mean when I first started learning 8 years ago I didn't even know what an IDE was or how it worked. But tbf eclipse back then was frustrating to set up

dusky herald
#

Lol I remember when I tried learning and I tried Eclipse and was like yup, not happening

#

I hate Eclipse.

crimson sandal
#

Yep IntelliJ is infinitely better πŸ˜›

vast hinge
#

i dislike it cause its glitchy

fading owl
#

to each their own

dusky herald
#

I use IntelliJ IDEA right now, but I learned on NetBeans, and I found NetBeans to be really easy to learn on

fading owl
#

im sure some ppl still sue NetBeans

#

lol

#

use*

dusty topaz
#

if you mean a literal server jar bitlong, then no

#

they aren't legally allowed to host that

#

which is why the whole build tools thing exists

silk gate
#

you can use it out of your local repo though?

fading owl
#

okay that makes sense

#

i assume because its compiling NMS code

dusty topaz
#

yeah you can use it out of your local if you have ran buildtools

dusky herald
#

I have no problem with Netbeans, lol.

fading owl
#

fair enough

wicked sequoia
#

/plugman lookup shop is returning shopgui+, but when I do /shop I get You can find our webstore at www.example.com/store!

#

how do I fix this?

fading owl
#

mojang should be open sourcing minecraft, permitting plugin development, and taking a % of the pie.

silk gate
#

what

#

no

fading owl
#

ez $

#

what, yes

dusty topaz
#

no

#

they do essentially open source it

hoary parcel
#

Minecraft is basically open source

dusty topaz
#

they release ob mappings

wicked sequoia
#

open source? then they loose money

hoary parcel
#

Plugin development is actively encouraged

#

What do you want?

fading owl
#

thats pretty sweet

#

didnt know they encourenged it

crimson sandal
#

Didn't they release the mappings to deobfuscate recently?

dusty topaz
#

yea

dusky herald
#

Make money off plugin dev? Sounds like double dipping, no-go

hoary parcel
#

Yes

#

Read the commerical usage guidelines

fading owl
#

yeah i read a bit of it

#

not all of it though

vast hinge
#

why dont people just use long instead of int?

hoary parcel
#

They want you to succeed and make money

crimson sandal
#

Does Bukkit make use of those mappings or not? πŸ˜›

hoary parcel
#

No

fading owl
#

@vast hinge there are reasons to use either ore

silk gate
#

@vast hinge more memory

dusky herald
#

Because, you dont want to use 64-bit datatypes for everything.

vast hinge
#

oof

fading owl
#

4 bytes vs 8 bytes

hoary parcel
#

The licence need to be fixed itst

#

First

crimson sandal
#

I heard they have lots of different names for classes, like TileEntity isn't a thing etc

hoary parcel
#

Yeah TE is a bukkit name

#

It's block entity

ashen stirrup
#

I'm having an issue dropping naturally.

                    Location blazeLoc = new Location(blaze.getWorld(), blaze.getLocation().getX(), blaze.getLocation().getY(), blaze.getLocation().getZ());
                    Bukkit.broadcastMessage("Location");

                    blaze.getWorld().dropItemNaturally(blazeLoc, new ItemStack(Material.BLAZE_ROD, 1));
                    Bukkit.broadcastMessage("Drop");
                    blaze.setHealth(0);
                    Bukkit.broadcastMessage("Death");

It broadcasts all the debug messages but it doesn't drop

dusty topaz
#

dropItemNaturally I've found tends to make the drop more unnatural

#

πŸ˜…

vast hinge
#

wait a minute

dusky herald
#

Does it make the blaze look like it drops it or something?

frigid ember
#

Someones know how to setup votifier on bungeecord,
Pm me if yes, i'm paying.

dusty topaz
#

?Services

#

damn captial s

dusky herald
#

Or could you just create an item stack at that position instead

vast hinge
#

why didnt minecraft make weapon enchantments a byte instead of an int?

crimson sandal
#

Why don't you just use blaze.getLocation() instead of making a new location?

worldly heathBOT
ashen stirrup
#

What I'm trying to do is drop blaze rods when the blaze dies in water. I have all of that setup but it doesn't drop it

wicked sequoia
#

How do I find which plugin is overriding ./shop? plugman is showing ShopGUI+ but I know for a fact that thats wrong

vast hinge
#

lol

#

its in the name

ashen stirrup
#

blaze.getWorld().dropItemNaturally(blaze.getLocation(), new ItemStack(Material.BLAZE_ROD, 1));
It doesn't seem to do it

fading owl
#

@wicked sequoia isnt there a priority setting

#

for events

dusty topaz
#

likely nothing to do with priority

#

since it's a command

fading owl
#

commands dont have priority? darn

dusty topaz
#

but if it doesn't come up in plugman, then it is probably being caught in a commandpreprocess

#

by some random plugin

#

Β―_(ツ)_/Β―

dusky herald
#

I heard aliases might have priority

#

Try using an alias

wicked sequoia
#

@fading owl I changed commands.yml to forward /shop to /shopguiplus:shop, and it still doesn't work

dusty topaz
#

are you sure you're not looking at the shopguiplus shop

wicked sequoia
#

yes

dusty topaz
#

disable every plugin but shopguiplus and it's dependencies

#

and see what happens

wicked sequoia
#

ok

dusky herald
#

You could also just make your command a synonym of shop too

#

Like store

vast hinge
#

Fred

dusky herald
#

if you want

vast hinge
#

do you have buycraft?

#

if you do it might be the reason

silver pewter
#

Hello, what's the best way to count down in a format of dd:hh:mm using runnables thanks

dusty topaz
#

you're welcome

fading owl
#

provide a SSCCE

#

i.e what are u doing, show some code

silver pewter
#

who me?

fading owl
#

yes

#

dd:hh:mm is a format

#

used to represent a date/duration

silver pewter
#

I'm making a count down so let's say you set the count to be in 12 days 30 mins and 0 seconds

frigid ember
#

1.12.2 any recommended way of checking if entity is specific player?

                continue;
// skips for loop```
seems to work, but 
```if(!Entity.equals(Player))
// carrys on, does not skip for loop```
does not

I think if entity instanceof Player then a comparison of UUID would be best? Any thoughts
fading owl
#

ZonedDateTime start;

ZonedDateTIme end;

#

Duration remaining = Duration.between(start, end);

#

DurationFormatUtils

#

for formatting

silver pewter
#

Okay thanks

ashen stirrup
#
if(event.getEntity() instanceof Player)
#

?

fading owl
#

np

#

@frigid ember are u checking if the entity is an instance of player or a specific individual player

frigid ember
#

specific individual

fading owl
#

then player#getUniqueId()

#

or something similar to that naming

frigid ember
#

thank u i can do basic code

fading owl
#

okay

frigid ember
#

so you wreckon that's best way?

#

Wasn't sure if comparing name or anything would be slightly faster

fading owl
#

if you're trying to distinguish between players hten yes

#

No

#

UUID implements the uquals/hashcode

#

its pretty fast

frigid ember
#

Ohh okay tyty

#

perf ty

fading owl
#

np

#

its also immutable, universally unique (by definition)

#

where as name is subject to change

frigid ember
#

Hello can someone help me or explain some spigot plugins?

fading owl
#

be less vague

#

help you with what

dusky herald
#

@frigid ember check if Entity is instanceof Player first. Then compare UUID that way you dont get a nullpointerexception

crimson sandal
#

I can explain my plugin to you if you want? πŸ˜‰

wicked sequoia
#

ah, it was a bungeecord plugin that overrid ./shop

fading owl
#

@dusky herald That's a good note to make.

dusty topaz
#

it's a bad note (β•―Β°β–‘Β°οΌ‰β•―οΈ΅ ┻━┻

#

entity has unique id

ashen stirrup
#
        if (e.getEntity().getType() == EntityType.BLAZE){
            Blaze blaze = (Blaze) e.getEntity();
            ItemStack br = new ItemStack(Material.BLAZE_ROD, 1);

            if (e.getCause() == EntityDamageEvent.DamageCause.DROWNING){
                World world = blaze.getWorld();
                if (blaze.getHealth() < 4){
                    world.dropItemNaturally(blaze.getLocation(), br);
                    Bukkit.broadcastMessage("Drop");
                    blaze.setHealth(0);
                    Bukkit.broadcastMessage("Death");
                }
            }
        }
fading owl
#

oh does it

#

thats cool

#

haha

#

nice anim tho

frigid ember
#

@frigid ember check if Entity is instanceof Player first. Then compare UUID that way you dont get a nullpointerexception
@dusky herald Course, ty

ashen stirrup
#

Can anyone help? It doesn't seem to be dropping naturally

fading owl
#

@frigid ember

#

Check AvroVulcans note

frigid ember
#

I need help with the plugin because I would like to add gui (mailbox) but I don't know how

dusky herald
#

I may be used to when Entities didnt have UUIDs then lol

dusty topaz
#

i will flip tables

fading owl
#

lol

dusty topaz
#
@NotNull UUID    getUniqueId​()

times have changed

#

old man

dusky herald
#

I still think it's good to check the instance

#

For other purposes

fading owl
#

kinda mad java doesnt support @NotNull inheritly

dusty topaz
#

what purpose would it serve if the comparing UUID is a players uuid

fading owl
#

sucks that its an intellij annotation

frigid ember
#
        List<LivingEntity> hit = new ArrayList<>();
        for (Entity entity : loc.getChunk().getEntities()) {
            if(entity instanceof Player) {
                if(entity.getUniqueId().equals(caster.getUniqueId())) {
                    continue;
                }
// do stuff...```
#

that's all I really need

dusky herald
#

If he wants to run actions specific to the Player lol

fading owl
#

oh

#

check if entity == caster

#

since you would be checking for reference

dusty topaz
#

but if the uuids are equal it's guaranteed a player

frigid ember
#

Entity.equals(Player) didn't work for some reason

dusky herald
#

lol

frigid ember
#

tyvm, will compare entity uuid to player uuid

fading owl
#

lol

frigid ember
#

lol

fading owl
#

wrecked

dusky herald
#

That's new info to me anyways good to know for later

dusty topaz
#

there we go ┬─┬ γƒŽ( γ‚œ-γ‚œγƒŽ)

fading owl
#
   private List<LivingEntity> affectedEntities(Player caster, Location loc, int max, double radius) {
        List<LivingEntity> hit = new ArrayList<>();

        for (Entity entity : loc.getChunk().getEntities()) {
            if (entity == caster) {
                continue;
            }
            if(entity instanceof Player) {

            }
         }
    }
#

ngl its a shame we cant do shit like

#

if entity.getType() == EntityType.PLAYER

#

or even
entity.getClass() == Player.class

#

due to wrapping

#

by CraftBukkit CraftPlayer

#

not that instanceof is expensive in 2020 but still

dusky herald
#

lmao

dusty topaz
#

o.O

subtle blade
#

You... you can do that

vast hinge
#

wdym by expensive?

subtle blade
fading owl
#

you cant

dusty topaz
#

you can

fading owl
#

to my knwoeldge

dusky herald
#

$$$ obv

fading owl
#

are you sure?

vast hinge
#

lol

subtle blade
#

EntityType you most definitely can

fading owl
#

oh

subtle blade
#

getClass(), you cannot

fading owl
#

entitType is possible?

#

wasnt aware that was a thing lol

subtle blade
#

Yea, absolutely. That's why it exists

fading owl
#

oh fuck

#

didnt know it exists

#

thats cool

dusky herald
#

Lel

#

Good night all

fading owl
#

fairly new to plugins

#

be gentle

sacred wave
#

@ashen stirrup have you considered using EntityDeathEvent? There is getDrops method

subtle blade
#

Wait did you just guess getType() and EntityType existed? Or did you know they at least existed? lol

#

Because that was a spot on guess

fading owl
#

I didnt know it existed

#

haha

#

yeah jsut guessed

subtle blade
#

That's literally how you would do it

fading owl
#

thats amazing

silk bane
#

instanceof isn't remotely expensive either

fading owl
#

i know

dusky herald
#

getType returns an EntityType lol

fading owl
#

but an enum comparison

#

is a lot faster

dusty topaz
#
            if (entity == caster) {
                continue;
            }

would this work

#

im torn between yes and no

silk bane
#

a virtual method call is more expensive than instanceof

fading owl
#

yeah i assume getType() would return some EntityType of tpye Enum

dusky herald
#

EntityType is an Enum

#

And getType does return an enum

silk bane
#

@dusty topaz yes

dusty topaz
#

because they're the same reference in memory right

fading owl
#

i assume CraftBukkit isnt creating a new reference

subtle blade
#

Correct

#

All NMS entities hold a reference to CraftBukkit wrappers and those are used

#

(this includes Players)

sacred wave
#

Does anyone know how to reset Advancement progress for player (or at least for everyone) as would /advancement revoke <player> everything command do via the api? I could call the command, I am just wondering if there is cleaner solution...

fading owl
#

informative, ty

subtle blade
#

So referential equality does work as well

fading owl
#

i'm shocked that he said that entity.equals(caster) didnt work

#

because i assume they would have checked for if (obj == this) { return true } in equals impl

subtle blade
#

It most likely does. Entity#equals() compares UUID equality

dusty topaz
#

.equals doesn't tend to implement ==

subtle blade
#

It does by default

fading owl
#

^ what

dusty topaz
#

overridden

subtle blade
#

Though Entity overrides and compares using UUID

#

(and referential obviously)

fading owl
#

okay

#

is UUID the only unique descriptor

#

for Entity/Player

subtle blade
#

Actually not even. It compares entity ID

#

Thought it was UUID

#
@Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final CraftEntity other = (CraftEntity) obj;
        return (this.getEntityId() == other.getEntityId());
    }```
fading owl
#

oof

subtle blade
#

Arguably faster

fading owl
#

why wouldnt they check if (obj == this)

#

is there a logical reason?

subtle blade
#

In the end it's reference vs integer. Won't be much different

fading owl
#

yeah but kinda breaks the equals contract

ashen stirrup
#
    @EventHandler (priority = EventPriority.HIGHEST, ignoreCancelled = true)
    public void onDeath(EntityDeathEvent e){
        if (e.getEntity().getType() == EntityType.BLAZE){
            Blaze blaze = (Blaze) e.getEntity();
            ItemStack br = new ItemStack(Material.BLAZE_ROD, 1);

            if(blaze.getLastDamageCause().equals(EntityDamageEvent.DamageCause.DROWNING)){
                e.getDrops().add(br);
            }
        }
    }
subtle blade
#

not necessarily. If an entity's id is ==, its reference must be as well

#

Otherwise that's broken server logic

sacred wave
#

@ashen stirrup does it work?

ashen stirrup
#

No

fading owl
#

ehh its the reflexive aspect of the contract though

subtle blade
#

priority = EventPriority.HIGHEST Not necessary. Go to normal priority

dusty topaz
#

would it not make more sense to do an == though

#

since you could reflectively change id

ashen stirrup
#

Something seems to be cancelling it though

#

It doesn't drop anything

subtle blade
#

Entity#getDrops() does not reflect changes

#

It's a copy of a collection

sacred wave
#

@subtle blade this is not Entity, it is EntityDeathEvent instance

subtle blade
#

Oh it is, my bad

#

This is why you name your variables properly

frigid ember
#

Hello there is a plugin that increases the durability of the armor and also the resistance ?

sacred wave
#

@subtle blade well E is both for entity and event, so... πŸ˜„

subtle blade
#

getLastDamageCause() returns an EntityDamageEvent, not a DamageCause

#

Confusing name, I know

#

It will never be equal. Surprised your IDE didn't tell you that

#
EntityDamageEvent lastCause = entity.getLastDamageCause();
if (lastCause != null && lastCause.getCause() == DamageCause.DROWNING) {
    // add drops
}```
ashen stirrup
#

I'll give it a try

sacred wave
#

@subtle blade I know why, he used equals... I guess equals accepts Object, so IDE won't warn him...

#

if he used == it would warn him, imho

gloomy dew
#

Help

fading owl
#

lol

#

im getting a sense of urgency

gloomy dew
#

If i want to Code FFA with Skript how ?

#

Im searching from too long

#

and i cant find ):

vast hinge
#

give a bunch of people diamond swords in a survival server and turn hardcore on

#

your welcome

gloomy dew
#

If you help me i will give you free rank on my servewr

#

server*

subtle blade
#

No, your IDE would warn you, Dawon

vast hinge
#

do you need help or do you need a plugin?

gloomy dew
#

I need help

sacred wave
#

@subtle blade ah, I see

gloomy dew
#

or

#

Plugin

#

I need plugin

vast hinge
#

do you know how to make a plugin

ashen stirrup
#
print("hello world")
#

Yes

vast hinge
#

wrong language

gloomy dew
#

no i don't know how to make a plugin

vast hinge
#

well

gloomy dew
#

Im learning how to code on skript rn

vast hinge
#

oh ok

#

you could try making a ffa with skript

gloomy dew
#

But i need a Good FFA Plugin

vast hinge
#

its not that hard

#

oh

gloomy dew
#

or

subtle blade
gloomy dew
#

Code FFA

vast hinge
#

plugins are alot harder than skript

gloomy dew
#

rlly ?

vast hinge
#

ye

gloomy dew
#

So how to code ffa ?

vast hinge
#

you could also just get a free plugin

sacred wave
#

@subtle blade ha, I underestimated IDEs, I guess you were right πŸ™‚

vast hinge
gloomy dew
#

I need a good ffa plugin

dusty topaz
#

bukkit πŸ‘€

vast hinge
#

uh oh

subtle blade
#

?resources

#

Oh Fake CafeBabe is gone? :((

vast hinge
#

what do you mean by good

subtle blade
#

BukkitDev is fine too though

vast hinge
#

a plugin thats free or a plugin that costs?

gloomy dew
#

Idk

#

Just i need a nice one Works 100/100

vast hinge
#

just cause its free dosent mean its bad

#

you could just pay someone to make you the plugin

gloomy dew
#

Im using uKitPvP rn

vast hinge
#

it would take less time and may have a better outcome

gloomy dew
#

rip

vast hinge
#

but costs money

gloomy dew
#

Np

#

i will pay

#

Just give me a nice ffa plugin

vast hinge
#

not me though

ashen stirrup
#

What's your budget though

vast hinge
#

im not that good at java

dusty topaz
#

Just post on:

#

?services

#

told you, it's slow!

vast hinge
#

lol

dusty topaz
ashen stirrup
#

@gloomy dew
What's your budget?

gloomy dew
#

There is someone know how to create a Domain for a server ip ?

vast hinge
#

ye

gloomy dew
#

Hwooawowoaowwodwoaowaodwa

vast hinge
#

but

gloomy dew
#

Howowowowowowo

vast hinge
#

it costs money

gloomy dew
#

I KNOW

#

I WILL PY

#

PAY

#

JUST TALE ME HOW

vast hinge
#

lmao

gloomy dew
#

I WANT MY SERVER TO BE

#

play.[name].net

#

JUST TAALE MEAHREAME ME HOW

vast hinge
#

hmmm

sonic trout
#

im sure you could find a good tutorial on how todo it on google

vast hinge
#

^^^

dusty topaz
#

you need a domain, and then just plug it into cloudflare

#

is basically it

gloomy dew
#

i said i need a domain for my server ipp

#

iP*

vast hinge
#

ImSuma how old are you

#

just wondering

gloomy dew
#

im 107 years old

#

no

#

i mean

vast hinge
#

are you 7?

gloomy dew
#

im 108 years old

vast hinge
#

lmao

gloomy dew
#

nah im 7 ?

#

LMFAO

sonic trout
#

haha