#help-development

1 messages · Page 1017 of 1

dim frost
#

Concerned code:

https://hastebin.skyra.pw/yoromocexo.java
(pet -> playerUUID if null tells the player has not mounted the pet)

Intention:

Completely cancelling dismount if player tries to dismount from a pet/its interaction entity

#

Issue in the code:

If shift is spammed irregularly or simply occasionally, the code doesnt work and player is dismounted

#

Attempted fix:

Cancelling dismount on both the packet and the bukkit event

misty ingot
#

is there a way to create a chat input thing easily? like a public api maybe

#

so like i do a thing and if a player types something i get that one message then no more

pseudo hazel
ivory sleet
dim frost
#

By default when the pet is spawned with /pets spawn, its null

pseudo hazel
#

oh mb im just blind i guess

dim frost
#

nw

pseudo hazel
#

so you want players to not unmount ever?

eternal oxide
#

Forcing them to mount again

dim frost
#

Its like it isnt even cancelled when I ask it to cancel

#

(In bukkit events ^ for mounting)

#

(In packet I tried it but it was being weird, so I settled for remounting)

dim frost
#

but only if they do a command (in future there will be a gui button)

pseudo hazel
#

oh i see

#

you might have to delay the remount

#

maybe its not fully dismounted when the event gets called, so add passenger would get overriden right after

dim frost
#

that would effect the purpose of it happening before the player gets dismounted

dim frost
#

Give me a bit to process that in my peanut brain

pseudo hazel
#

thats just a guess

#

like they call the dismount event, but in the next line they remove the passenger

#

so if you add passenger before that it wont matter

#

check if there is a passenger on the pet in the dismount event

#

if not then idk

dim frost
#

so then I should add a passenger after doing a line that cancels the event

#

aight I have one more issue which is related to setting velocity of an interaction entity

#

ill get to it if I manage to fix this

pseudo hazel
#

yeah or schedule the remount to be in the next tick

#

but idk if that looks good in game

dim frost
#

and imagine that being as buggy while you are flying a plane

#

since ill need it to parse controls like throttle

pseudo hazel
#

its only a single tick

#

why would players wanna dismount on purpose

dim frost
#

Thats not the intention

#

intention is to override shift for another purpose

pseudo hazel
#

unless you tied some plane control to dismount key I guess

dim frost
#

that is to act like a control key, just like WASD

pseudo hazel
#

right

dim frost
#

The way pet works is that its basically a combination of seat and the vehicle

pseudo hazel
#

then its hard to say

dim frost
#

so player right clicks to get on it

#

but to get off must use /pets dismount

#

but with current code he can spam shift irregularly and manage to get off

#

But I want to use shift to say do something else

#

and that something else can require shift to be spammed irregularly

eternal oxide
#

What version of Spigot are you writing this for?

dim frost
# eternal oxide have you tried setting them as a passenger as well as canceling the event?

Okay so I tried using event cancel again and just like before the weird behavior occurs

if(pet.getPlayerUUID() != null) {
                    i.addPassenger(Objects.requireNonNull(Bukkit.getPlayer(p),"Bukkit Player from UUID fetch failed."));
                    event.setCancelled(true);
                }
``` and I also tried 
```java
if(pet.getPlayerUUID() != null) {
                    event.setCancelled(true);
                    i.addPassenger(Objects.requireNonNull(Bukkit.getPlayer(p),"Bukkit Player from UUID fetch failed."));
                }
dim frost
#

(actually papermc which brings note to should I be asking this in spigotmc discord)

eternal oxide
#

ok, just there was a bug with dismounting in 1.16 (fixed in 1.17)

dim frost
#

oh okay

eternal oxide
#

behavior may differ

dim frost
#

I can only record and show you the video regarding the behavior if u want

dim frost
wispy abyss
#

Hey there, I'm currently working on a small MC plugin (it's a gamemode where you collect points) to play with friends and I'm kinda stuck on a problem I can't seem to resolve, could anyone please help me out?
The problem is basically, that when I start the gamemode, I set a scoreboard on the sidebar, when I leave, the sidebar dissapears and I would like to add the sidebar back, I have a listener that waits for the PlayerJoinEvent to then add the sidebar back but when I set the sidebar there, it never shows up, I tried many things already like creating a new instance, delaying the creation a bit etc. but it still just doesn't show up anymore :/

eternal oxide
#

?nocode

undone axleBOT
#

It’s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.

wispy abyss
#

Of cource! Wanted to wait first 😄

eternal oxide
#

?paste to make it readable and not spam

undone axleBOT
wispy abyss
eternal oxide
#

thanks

tardy delta
#

and whats not working? gotta keep track of the score somewhere

eternal oxide
#

Show where you implement this code

#

join event etc

wispy abyss
#

This is the participant of the game, that holds the player and the scoreboard

#

And this is the join event where it triggers that

eternal oxide
#

ok I can see one issue

wispy abyss
eternal oxide
#

You are storing a Player reference in yoru Participant class

wispy abyss
#

I removed some code in the example to only show the relevant stuff

eternal oxide
#

When a player leaves adn rejoins the Player object is new

#

Its not the same Player object you had before

tardy delta
#

conclusion: use an UUID (player.getUniqueId())

wispy abyss
#

Ohhh okay that makes sense

tardy delta
#

dont even use a name, names may change, an uuid always stays persistent

dim frost
# pseudo hazel then its hard to say

umm okay so id just like to apologize for wasting yours and elgarl's time all because I mistook what .getDismounted and .getEntity meant.... damn it xd

#

thanks for trying to help!

wispy abyss
#

I'll try to adjust it with that in mind, thank you, didn't know that! 🙂

glacial moth
#

after death event, if you set a drops itemstack amount to 0, would that remove it or error?

dim frost
#

Btw stefan theres also an OfflinePlayer in bukkit I think

#

im not sure if my addition to the discussion is relevant but thought I should try mentioning

eternal oxide
#

OfflinePlayer is safe, but its best to use UUID

dim frost
#

ok

#

UUID would be cheaper to process as well

wispy abyss
#

Thank you, I'll look at that too!

dim frost
#

I am facing an issue at the moment

if(e.getKey() == ControlKey.JUMP) {
            PetFrame pet = Pets.getInstance().checkPetRider(e.getPlayerUUID());
            if(pet == null) return;
            Interaction i = pet.getInteraction();
            Vector velocity = i.getVelocity().setY(4);
            i.setVelocity(velocity);
            pet.getModel().setVelocity(velocity);
        }
``` (small bit of code so I didnt use paste bin)
Trying to make the "pet" jump but nothing happens
#

Nothing as in nothing literally, no errors or issue in code not being processed

#

Ive tried putting a p.sendMessage at the end of the if statement body and it printed just fine

eternal oxide
#

Not sure Interact entities support the use of gravity

dim frost
#

^ was wondering, is there no way to get them to?

#

since they do seem to have .setGravity

eternal oxide
#

Thats just because they extend Entity

dim frost
#

oh okay... still question is it not possible to apply velocity on them?

eternal oxide
#

Like setting noAI on an entity stops it applying gravity

dim frost
#

oh I see

#

so I have to use a different entity you say?

#

I do need the interaction and display item entity moving still...

eternal oxide
#

most likely

dim frost
#

Is it a good idea to make my own velocity system for them?

#

In the form of teleporting them from pos to pos

eternal oxide
#

it may be better than adding more entities

dim frost
#

Hmm okay thanks

dim frost
#

The calculations would be hard for me to manage think you can help?

#

The idea would be to teleport it by a very small distance every tick?

eternal oxide
#

just have a single task running every tick

wraith dagger
#

Hey guy

dim frost
#

or would it actually be smooth

wraith dagger
#

how to make monster spawn naturally at daytime like nighttime?

eternal oxide
#

if you do it every tick (if it moved) it would be smooth

#

one task to handle all your entities

wraith dagger
dim frost
#

no he was talking to me

dim frost
#

As in performing multiple checks and randomizing then spawning your entity

twin venture
#

hi uhh, i got this problem

#

only this moudle

#

the other works just fine

wraith dagger
eternal oxide
dim frost
#

Being a rookie here i cant help in detail but the general idea would be to get a random surface block and spawn the monster if conditions like no water, no lava, biome, etc match up

#

now the random surface block part sounds like a beating to the performance

eternal oxide
#

The SImplest way (without forking Spigot). Copy your world and set it to alwasy night.

#

then copy mobs from it to your daytime world

twin venture
#

weird it works now ...

dim frost
eternal oxide
#

You would have to track chunks being loaded/unloaded in your main world and duplicate in the dark world

drowsy helm
#

Just set the time to always night

#

And fake player time

eternal oxide
#

oh thats a good idea. Players have a local time

twin venture
#

iam getting this problem now :

#

what should i add?

#

also i need this specfic versions ..

drowsy helm
#

Why are you ysing system files?

twin venture
#

cuz this versions are not online like i can't use normal way

chrome beacon
#

The system scope is deprecated and shouldn't be used

#

if you must do it install the jar to your local maven repo

#

also I don't see why you need to depend on fawe like that

#

Just use the WorldEdit API

drowsy helm
#

Whats in those versions that others dont have

#

Or are they experimental builds

twin venture
#

and i also have support for newer versions

#

🙂

chrome beacon
#

so you have no reason?

twin venture
eager rock
#

Hello I'm trying to do a multi language system and I ran into the first problem. When I try to save every supported language then it's only generate the messages_en.yml but not the others. (The files are generated but it's empty except the english one)

https://paste.md-5.net/zuneruxuho.js

fair rock
#

?paste

undone axleBOT
eager rock
#

thx

chrome beacon
#

are they empty in the jar

eager rock
#

No

eternal oxide
#

show more (actual) code

eager rock
chrome beacon
#

Did you remove the old files before testing

eager rock
#

Yes

eternal oxide
#

you create your language = new Language before you have saved yoru resources

#

and yoru Language class saves

eager rock
#

Damn, I didn't notice it. Thanks! 😄

twin venture
#

is this correct?

tender shard
#

yes but why not use the latest version? and also bukkit depends on core, no need to specify both

#

just only use worldedit-bukkit version 7.3.2

wispy abyss
#

Thank you guys, got it to work with the UUID! 🥳

shadow night
#

Does spigot generate a data directory (plugins/{plugin_name}) for all plugins or only for those that create a config or the dir itself

tardy delta
#

the latter

#

iirc

shadow night
#

I hope, thanks

pseudo hazel
#

why would you hope for that

#

what kinda cursed code have you written

shadow night
#

Lots of cursed code

#

Will show it when it's ready

pseudo hazel
#

what does it do though

shadow night
#

Do you want a short or a long explanation

pseudo hazel
#

short

shadow night
#

Fake plugins inside of real plugins that immidiately get unloaded so the real plugin can get loaded by my plugin without spigot complaining or loading it itself or needing a seperate directory

worthy yarrow
shadow night
worthy yarrow
#

For all the flat files I’ve been using kek

#

I would hope I had an idea

pseudo hazel
#

I read fake plugins and can confirm that this is indeed cursed

shadow night
#

yes

worthy yarrow
shadow night
worthy yarrow
#

Sec getting off the plane

shadow night
#

you what

worthy yarrow
#

What the hell is a fake plugin inside of a real one

shadow night
#

Ehh hard to explain

worthy yarrow
#

Then don’t I won’t remember it’s been too long of a day

icy beacon
shadow night
tender shard
blazing ocean
#

how do i approach making leaderboards

shadow night
blazing ocean
#

idk bc you're blind?

tardy delta
#

i would begin mindlessly typing class LeaderBoardManager...

blazing ocean
#

(i use objects bc i only have one instance)

tardy delta
#

no nerd, it will need di

#

inject plugin and cry

blazing ocean
#

i don't use di in kotlin

#

companion objects my beloved

blazing ocean
#

ok bro

tardy delta
#

probably abusing kotlin now lol

blazing ocean
#
class Plugin : JavaPlugin() {
    override fun onEnable() { plugin = this }
    companion object {
        lateinit var plugin: JavaPlugin
    }
}
#

how is this abuse

tardy delta
#

oh god

#

static instance

#

AAAAAAAA

blazing ocean
#

lemme just add @JvmStatic rq

tardy delta
#

not even JavaPlugin.getPlugin

blazing ocean
#

that makes zero sense to do

#

when there is ✨ lateinit ✨

pseudo hazel
#

wtf is lateinit

blazing ocean
#

allows you to delay initialising a variable and be like "trust me bro, i got this" when accessing

#

will throw if uninitalised

tardy delta
#

to avoid declaring a variable as nullable and having to initialize it in a constuctor of some sorts

primal stirrup
#

Hi there I have a weird issue with my plugin that I made where it says the libraries field is empty and because of that it doesn’t load on bungee.
The field is indeed not set because I am not using it but why doesn’t it load the plugin then?
Using the latest proxy version with 1.20.6 sub servers

sullen marlin
#

No log, no plugin.yml

#

What do you have expect us to do

river oracle
#

🪄

tardy delta
#

just shout HELP HELP and a magic fairy will come and fix it

worthy yarrow
#

I’m no fairy but I do have a wand to wave

vague swallow
#

Hello friends, do you know if there is a way to mute a goat horn? I haven't seen anything in the docs but maybe I've overseen smth

eternal oxide
#

Yes I know.

#

😄

tardy delta
#

who even writes MineCraft like this

worldly ingot
#

Bukkit developers from 2011 ish

lilac dagger
#

we need a more stable way to get sounds

#

i guess via keys?

worthy yarrow
#

Isn’t that enum already keyed?

tardy delta
#

looks like it was wolverness himself

worldly ingot
#

fwiw, Sound should probably become registry based as well

#

No, Wolverness just made JD changes. The commit I linked is the original

tardy delta
#

nah thats another commit, i see

eternal oxide
worldly ingot
#

They are, but the Sound class is still an enum

#

They're not pulled from the registry

eternal oxide
#

ah

worldly ingot
#

Oh Zocker's already done that in his PR

#

Okay, so it's WIP :p

worthy yarrow
#

Programming is aids sometimes, why do we do it? Because it’s fun and logical to intentionally hurt our own brains

lean arrow
#

I have this code for hiding/showing players on the tab list which works well but I cant help but think it looks a bit scuffed so I was wondering if there are better practices :p also hi mr radsteve o/

private fun sendTablistPacket(visible: Boolean, bukkitPlayer: Player) {
        val profile = (bukkitPlayer as CraftPlayer).profile
        val entry = ClientboundPlayerInfoUpdatePacket.Entry(
            bukkitPlayer.uniqueId, profile, visible, -1, GameType.DEFAULT_MODE, null, null
        )

        val packet = ClientboundPlayerInfoUpdatePacket(
            EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LISTED),
            Collections.singletonList(bukkitPlayer.handle)
        )
        val field = packet.javaClass.getDeclaredField("c")
        field.isAccessible = true
        field.set(packet, listOf(entry))

        Bukkit.getOnlinePlayers().forEach { (it as CraftPlayer).handle.connection.send(packet) }
    }
worthy yarrow
# blazing ocean facts

I mean, if your brain never hurts then you know it’s not growing cuz no growing pains duh

blazing ocean
#

hello suit

lean arrow
#

so ominous

blazing ocean
blazing ocean
#

this is totally possible without reflection

lean arrow
#

oh yeah

#

packet.entries().add(entry)

blazing ocean
#

check mci repo

lean arrow
#

ill be honest no clue why i used reflection

lilac dagger
worthy yarrow
#

I mean you guys are fun 😄

#

Also I’m bricked in the head sometimes and need guidance

#

But mainly the former

#

Gonna get lessons from trooper soon, that’ll be fun

blazing ocean
#

@lean arrow you can totally just ```kt
fun sendTabListPacket(visible: Boolean, bukkitPlayer: Player) {
val profile = (bukkitPlayer as CraftPlayer).profile
val entry = ClientboundPlayerInfoUpdatePacket.Entry(
bukkitPlayer.uniqueId,
profile,
visible,
-1,
GameType.DEFAULT_MODE,
null,
null
)
val packet =
ClientboundPlayerInfoUpdatePacket(EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LISTED), entry)

    Bukkit.getOnlinePlayers()
        .forEach { (it as CraftPlayer).handle.connection.sendPacket(packet) }
}
lean arrow
#

nop

#

im using 20.6 i cannot do that

blazing ocean
#

same

#

works for me tho

lean arrow
blazing ocean
#

what

#

it literally worked for me

worthy yarrow
#

🤓 nerds

blazing ocean
#

add the ServerPlayer ig?

lean arrow
#

tried that but then it doesnt remove it it just keeps it

#

tried to make a new ServerPlayer instance too

#

but couldnt get that to work

#

i could make a new one

#

but it wouldnt hide

#

idk why

blazing ocean
#

nvm that's paper PlayerProfiles

lean arrow
#

cold

worthy yarrow
blazing ocean
#

try with packetevents then lol

worthy yarrow
#

Someone help

#

I need sleep send me medicine

lean arrow
#

it just looked ugly so i was curious if there was a neater way for it

blazing ocean
#

oh i thought you meant it didn't work

#

what does that even do

lean arrow
#

it does what youd think it does

#

this what the tablist looks like with everyone hidden la wl

blazing ocean
#

idk what it would do

blazing ocean
# lean arrow

idk this totally works for me on .6

    fun hidePlayer(bukkitPlayer: Player) {
        val profile = (bukkitPlayer as CraftPlayer).profile
        val entry = ClientboundPlayerInfoUpdatePacket.Entry(
            bukkitPlayer.uniqueId,
            profile,
            false,
            -1,
            GameType.DEFAULT_MODE,
            null,
            null
        )
        val packet =
            ClientboundPlayerInfoUpdatePacket(EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LISTED), entry)

        Bukkit.getOnlinePlayers()
            .forEach { (it as CraftPlayer).handle.connection.sendPacket(packet) }
    }
lean arrow
#

weird

#

you using remapped mojang?

#

wait no ofc you are

blazing ocean
#

yea

#

do i look like a spigotmap enjoyer

lean arrow
#

who is

blazing ocean
#

good question

lean arrow
#

variable: says its mutable
i try to add elements
variable: i am not mutable wtfrick

lilac dagger
#

probably is mutable but not everywhere

#

i dunno why would it extend immutable stuff

pliant topaz
#

so relatable tho

tardy delta
#

its java code, kotlin cannot know if its mutable or not

#

all java collections are mutable by definition

lilac dagger
#

oh it's kotlin

#

no idea how stuff works there

#

but if you can achieve something as broken as this, well, it's not really fun

tardy delta
#

i assumed it was kotlin, no reason why it would say (Mutable) otherwise

pliant topaz
#

same in Java tho with IJ

#

iirc

hexed hinge
#

item flags are not working

eternal oxide
#

ok

pliant topaz
#

?nocode

undone axleBOT
#

It’s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.

remote swallow
blazing ocean
#

yea

#

7smile7 contributing to paper

#

kek

remote swallow
#

i havent seen smile here in a while

#

has he moved to paper now

shadow night
blazing ocean
#

it feels like

remote swallow
#

raydan no

shadow night
blazing ocean
#

don't you even dare

#

go fork yourself

shadow night
#

Lmao

tardy delta
#

im gonna kill your child with a fork

blazing ocean
#

wild

shadow night
#

Aggroed three kotliners

#

Well, two

tardy delta
#

libc terms ofc

blazing ocean
blazing ocean
shadow night
#

One left

blazing ocean
shadow night
#

Ye

dim frost
#

IF we are comparing

shadow night
#

Never said it's bad

dim frost
#

Hating something generally refers to the feeling of it being bad

shadow night
#

It just became a lil meme I'm posting every kotlin time

dim frost
#

Lol

#

ive coded in kotlin once when i used android studio

shadow night
#

I sometimes use kotlin too

dim frost
#

What do you think python worse than kotlin?

shadow night
#

Kotlin is kinda the python of jvm langs

dim frost
#

hmm on second thought I should talk about things I have a clear idea of

#

im out

shadow night
#

Lol

#

This is way too subjective to be an "idea"

#

Ideas are subjective, but this one is too subjective to be an idea

dim frost
#

true

blazing ocean
acoustic pendant
#

Hey, do someone know a resource on making npc for 1.20? I can't find anything useful

ivory sleet
floral drum
#

tbh kotlin is probably similar to plain java, just basically the syntax is different right?

acoustic pendant
floral drum
#

that's about it?

acoustic pendant
#

using nms

tardy delta
#

less bloat

floral drum
#

fairs

worthy yarrow
floral drum
#

honestly probs not even hard to learn

blazing ocean
#

nah

floral drum
#

I'd just recognize it from damn gradle kts 💀

blazing ocean
#

p easy to switch acc

floral drum
#

I mean I aint looking to switch entirely

#

just to learn the syntax

#

then I'll become an android dev! 💀

worthy yarrow
blazing ocean
tardy delta
#

just follow the jetpack compose tutorial to become an android dev

blazing ocean
#

yea

tardy delta
#

i believe it has a native variant too now

acoustic pendant
tardy delta
#

no more css or other bullshit

blazing ocean
#

yea

#

fuck css

#

all my homies hate css

floral drum
#

oh god I aint wanna work on frontend, nvm, backend it is

worthy yarrow
blazing ocean
tardy delta
#

might look into react native

#

windows uses reactive native

#

react

blazing ocean
blazing ocean
worthy yarrow
#

Fourteen what did that reply mean when I asked about swift btw, I don’t get it

tardy delta
#

for their home button app list

acoustic pendant
tardy delta
#

swift where

worthy yarrow
dim frost
#

.setVelocity is a method in Interaction entity (or actually what it extends-> Entity) but when I try to set its velocity nothing happens. Is there a way to get around this if its intended or am I actually doing something wrong?

#

(yes ive asked this before but now I see more faces in this channel so im asking again as its not solved)

worthy yarrow
#

Did you see the javadoc by chance?

acoustic pendant
worthy yarrow
dim frost
worthy yarrow
#

Yes

dim frost
#

i will rn yes give me a second

worthy yarrow
dim frost
#

It doesnt mention .setVelocity thats for sure

worthy yarrow
#

Well

#

I hate to do this but

#

?whereami

dim frost
#

but in Entity class which it extends... it did

worthy yarrow
#

If you’re using paper, go get help from them haha or else you’ll get bullied here

acoustic pendant
worthy yarrow
blazing ocean
#

spigotmc moment

worthy yarrow
worthy yarrow
blazing ocean
#

true lmao

worthy yarrow
#

And I least I put it in a nicer way

acoustic pendant
#

so i asked if someone knew a resource

worthy yarrow
#

I meant what’s this npc you’re talking about

#

What’s its function

#

How is it visually represented, ie: like a zombie or villager or wtv

acoustic pendant
#

a fake player?

worthy yarrow
#

Oh Breh

eternal oxide
#

I shoudl write a tutorial on NPC's

#

but I'm too lazy 🙂

worthy yarrow
#

Had me thinking you were doing something else

acoustic pendant
#

xd

worthy yarrow
#

@eternal oxide you should help because I am not gonna be useful here especially not with no sleep 😦

blazing ocean
#

yes please 🙏

worthy yarrow
#

Anyways bedtime goodbye friends

eternal oxide
#

There are two ways to create "fake" players. You have to decide which you prefer.
Creating an actual Entity that players can interact with, or a Packet based one.

acoustic pendant
#

what are the differences between them?

#

apart from the way of making them

blazing ocean
#

nms one only exists for the client

#

can be customised for each player iirc

eternal oxide
#

In both instances you will be sending packets but one is less work (packet based) if you just want a representation that stands there

#

Both require nms

worthy yarrow
#

I was wrong imagine that

blazing ocean
#

:o

acoustic pendant
eternal oxide
#

I prefer the spawned version as it's easier to deal with and you can listen to Bukkit events for interactions etc

acoustic pendant
#

I think the one I'm trying to do is the packet based

eternal oxide
#

Step 1, setup a plugin to use spigot --remapped (special source)

acoustic pendant
#

Is that what you mean?

eternal oxide
#

yes

#

so long as you also have the special source plugin

#

brb 5 mins. have to make wifes dinner

acoustic pendant
alpine urchin
#

@eternal oxide 😂

eternal oxide
acoustic pendant
eternal oxide
#

ok then with just packets you will need java ClientboundPlayerInfoPacket ClientboundAddPlayerPacket ClientboundRotateHeadPacket ClientboundSetEntityDataPacket

ivory sleet
floral drum
#

lmaooo

river oracle
#

I write kotlin somewhat similarly to my java I just use the syntax sugar

eternal oxide
#

as you are only looking to spawn ti you can just use a ServerPlayer (as you are doing no more)

river oracle
#

I don't like extension functions in most scenarios etc etc

shadow night
acoustic pendant
eternal oxide
#

?paste

undone axleBOT
quiet ice
shadow night
acoustic pendant
ivory sleet
river oracle
ivory sleet
quiet ice
shadow night
quiet ice
#

well not main main - but I'm getting the gist of most of it

shadow night
ivory sleet
#

but yea I suppose if u dont like kotlin for gradle

#

groovy it is

quiet ice
#

I mean it's not that bad

ivory sleet
#

Idk, I’ve had pretty bad experiences w it

quiet ice
#

or better said, aside from it being near impossible to debug it's a good language

ivory sleet
#

Couldnt say it better

shadow night
#

Most groovy users are java users that use gradle

acoustic pendant
eternal oxide
#

to any player you want to see it

acoustic pendant
#

Can that cause some lag or is minimal?

eternal oxide
#

no lag

acoustic pendant
acoustic pendant
eternal oxide
#

no

#

well

ivory sleet
eternal oxide
#

its easy to find them when using remapped

#

just start typing ClientBound...

#

Your ide shoudl start suggesting

acoustic pendant
#

Oh yea, it does

#

Okay, thank you so much!

#

I'll try and see what i can make with this

eternal oxide
#

come back when you get stuck 🙂

acoustic pendant
#

Should I change my remap or just use it like that?

eternal oxide
#

probably, mine is still coded for 1.19 so needs updating

acoustic pendant
#

And instead of AddPlayer AddEntity

eternal oxide
#

btw using packets like this you have to update for EVERY version of Spigot

acoustic pendant
#

It's the same but yea

eternal oxide
#

I don;t think so

eternal oxide
#

addEntity is different I believe

#

Not really. You could use ProtocolLib and leave it upto others to update

acoustic pendant
eternal oxide
#

what version spigot?

acoustic pendant
#

1.20.6

eternal oxide
#

checking 1.20.6

#

um, lots of changes it seems

acoustic pendant
acoustic pendant
#

also NMSUtils doesn't exist

eternal oxide
#

oh my Spigot deprecated org.bukkit.util.Consumer

tardy delta
#

finally

blazing ocean
#

why tf does bukkit have its own

tardy delta
#

old times

quiet ice
#

Java 6 days

#

Or somethin, idk

acoustic pendant
chrome beacon
#

if you want the player that joined to see it

#

then yes ofc you need

eternal oxide
#

yes

#

ClientboundPlayerInfoPacket is now ClientboundPlayerInfoUpdatePacket

acoustic pendant
#

yes

restive jackal
#

quick question. datapack I threw together worked fine in 1.20.4, but the loot tables no longer work in 1.20.6. is it a name change issue?

acoustic pendant
#

btw elgar, ClientboundSetEntityDataPacket changed as well

#

It requires now a List with entity data if i'm not wrong

#

and I don't think a cast as intelijj is suggesting will solve that

#

At this point i'm thinking protocollib is the way xd

river oracle
#

Datapaxks break quite frequently

eternal oxide
acoustic pendant
eternal oxide
#

ClientboundSetEntityDataPacket entityData = new ClientboundSetEntityDataPacket(npc.getId(), npc.getEntityData().packDirty());

acoustic pendant
#

oh yea

#

thx

restive jackal
#

annoying but it's fine

acoustic pendant
#

@eternal oxideI'm sorry, but tried compiling and it says "Unsupported class file major version 65" even if I'm using java 21 - tried with 17 as well

eternal oxide
#

sounds like your IDE is not running 21

acoustic pendant
#

It should

eternal oxide
#

is your JAVA_HOME also set for 21?

acoustic pendant
eternal oxide
#

show the full error

#

its during compile from maven?

acoustic pendant
#

I think so

chrome beacon
#

Outdated special source plugin?

eternal oxide
#

looks like

acoustic pendant
eternal oxide
#

special-source plugin in your pom

#

update to 2.0.2

#

I think thats latest

acoustic pendant
#

Here right?

chrome beacon
#

2.0.3

eternal oxide
#

yep

acoustic pendant
#

I think i got it from a guy with version 1.17 so it makes sense xd

#

mb thanks

#

It did compile now, thanks!

misty ingot
#

man so in my vault plugin i just had the idea that if an admin is viewing someones vault and the person is also viewing their vault how would i sync the changes live
cuz id have to right cuz otherwise the player or the admin could risk loosing items

#

is there maybe a way that I could store the vault itself as an inventory object and just open it to both people....?

chrome beacon
#

Open the same inventory instance

lilac dagger
#

1.2.2 is like forever ago

misty ingot
remote swallow
#

you should use open me

misty ingot
#

i will use whatever that is im done rewriting a heck ton of code

#

i have to change how the code is structured almost entirely

#

would be quite smart to prolly do the same for the vault list menu too

remote swallow
misty ingot
#

worst thing is that i thought of that literally as i wrote the last line of code for the admin viewing thing

#

so it works perfectly fine but because of that tiny detail i must now rewrite it all

acoustic pendant
#

1.20.6 changed a lot of its methods lol

#

I think i'll downgrade version, as thing aren't working

wet breach
misty ingot
#

yeah yeah i will but i still have to rewrite a bunch of code

wet breach
#

to just make them a viewer?

misty ingot
#

well you see i didnt think of this one edge case till quite literally the very last moment

wet breach
#

it shouldn't drastically change your code to make them a viewer, its part of the inventory api to do it

misty ingot
#

well there will be quite big changes because of how my plugin is doing what its doing

#

but well.

#

wait one query
InventoryCloseEvent will fire when the last of them closes the inventory right

wet breach
#

depends on which inventory it is

#

but I am pretty sure it fires for every player that closes said inventory

young knoll
#

yes

shadow night
#

Just implement an inventory and viewer system

misty ingot
#

also ehm what if theres some specific stuff the admin isnt supposed to be able to view in the inventory

cuz like in my current thingy the admin view allows the admin to see the vault but at the bottom theres a few buttons he may not be allowed to see
but the normal player might be able to see said buttons

wet breach
#

idk why you have to over complicate it

misty ingot
#

well basically they can only view the buttons if they have perms for using the button

#

its a feature

#

i swear

#

so the player might have perms to delete his vault
but the admin wont have perms to delete others' vaults

wet breach
#

Well, either they are admin with adminstrative powers or they are not. If they are, don't really see why anything should be hidden from the admin

wet breach
misty ingot
#

well they are but i want to make sure the server owner can give them only the perms they wanna

wet breach
#

who cares if they see the button or not? it shouldn't work if they have no perms

misty ingot
#

alright ig ill just show the button anyway but instead stop them when they wanna press it

#

reason i like to do it that way is because if i then send them a message that they arent allowed to do that then they have to close the gui and look at chat to see it and it could also get lost in a busy chat

#

so i just hide the button alltogether

wet breach
#

well, if nothing happens pretty sure they get the idea that they are not allowed to use it 😛

misty ingot
#

yeah i guess...

#

welp

#

still have to rewrite quite a lot of code

#

better get going

#

actually.... um... the players can change the names of the vaults so if a vault is open for the admin and the name is changed i dont think the inventory will lemme change the title at that instant

#

nvm ill just get a viewer list and rename their open inventories

wet breach
#

title of an inventory should be irrelevant and not used for anything special other then just visuals

misty ingot
#

just realised multiple admins could view one vault so ig its useful to have that viewer list

wet breach
#

my point is, inventory object will be the same whether the title changes or not

#

and therefore it makes no difference if an inventory is opened at the time. When it gets opened again it can be updated

misty ingot
#

ye ye

#

ill just maintain a viewer list

#

also whos decision was it to not make inventorycloseevent fire when a server stops

remote swallow
#

how call event if server stopped

analog mantle
#

finally block lol

misty ingot
#

well you could close every player's inventory when the server's closing

#

you fire playerleaveevent dont you

#

wait you dont

#

damn.

remote swallow
#

cant say i fire any events

wet breach
#

why would you bother closing anything in the game if the entire application is going to stop

misty ingot
#

well yeah

#

anyway with the new structure i have in mind it should solve theoretically any issue that the plugin may currently have

#

noice.

#

so much FRICKIN typing

#

for a goddamn vault plugin

misty ingot
#

bit much work for a public plugin but ITS FO DA PEEPLE

wet breach
#

if that is what you want

misty ingot
#

PlayerVaultsX charges 11 USD for less features

wet breach
#

is that who you are trying to compete against?

misty ingot
#

not exactly competing

#

are there any better ones out there?

pseudo hazel
#

it sounds exactly like competing

misty ingot
#

the thing is, im bored, and i need something to do

#

atleast till tomorrow

wet breach
#

I just play some games when I am bored

misty ingot
#

ye ill play some games tomorrow, and the rest of june

wet breach
misty ingot
#

oh no way
cant even imagine competing with that

#

how could i ever compete with a plugin with a poorly formatted .md file

#

e

wet breach
#

o.O

#

not sure why you care about the md file?

misty ingot
#

i dont

#

no one really ever does

wet breach
#

anyways, just saying good news doubt your plugin would become as complex as that 😛

#

fyi, holoapi was the first holograms plugin to exist 😄

#

the second was holographicdisplays

misty ingot
#

my most popular public plugin rn is

#

an older version of whaat im making

#

my v2 of this is solving all the issues it has and adding some good stuff

eternal oxide
#

lol my highest user base is in China

wet breach
#

group manager?

eternal oxide
#

GM

misty ingot
#

ngl
earth's highest user base is in china

wet breach
#

Interesting its China that uses it

#

I suppose it didn't help that many people kept claiming GM to be bad and horrible 😦

floral drum
#

ayo wait elgar was the one who made gm?

wet breach
#

yeah

eternal oxide
floral drum
#

wot da fook

#

I used to use that shit

wet breach
#

I still use it 🙂

misty ingot
#

what exactly is gm because i think i have no idea

wet breach
#

I am properly one of the few proud users of it and supporter of it that I recommend people to use it lmao

floral drum
#

groupmanager

wet breach
#

its a permissions plugin

floral drum
#

I mean I transitioned onto my own permissions system

misty ingot
#

oh i think i might have heard of it

#

i think some people i know use it but 99% use lp

eternal oxide
#

before LP came out it was teh most used permission plugin. Being the first

wet breach
#

^

#

And it helped it was bundled with another popular plugin

#

well used to be

eternal oxide
#

yep, had over 2 million servers installs at one point

floral drum
#

elgar is a W confirmed

wet breach
#

W?

misty ingot
#

winner

wet breach
#

ah

misty ingot
#

/ win

wet breach
#

I think its cool such people like us exist here

floral drum
#

woo

misty ingot
#

im just grateful people liked my first vault plugin and it got 1k+ downloads considering how badly written it was

wet breach
#

HoloAPI and then later holographic displays made Holograms so popular that it made Mojang hesitate in fixing the horse age bug, and that is how we got armorstands

floral drum
#

lmaoo

wet breach
#

Then we have ElgarL with GM and basically bringing permissions to the world

floral drum
#

I mean tbh bukkit kinda brought permissions to the world - we just had to figure out how to use it Thonk

#

in a way

wet breach
#

well, not really. The permissions were quite basic and there really wasn't much api for it

#

most of the functionalities came from plugin

eternal oxide
#

actually GM existed before Bukkit. I forget the name of the API even

wet breach
#

oh it existed on hMod?

eternal oxide
#

yeah that was it

floral drum
#

oh sick

wet breach
#

nice, never knew

echo basalt
#

wtf is this code

#

looks obfuscated

pseudo hazel
#

please ban this person

echo basalt
#

being commissioned to work on this

#

do I charge a shit ton or do I just refuse

eternal oxide
#

lol

#

and they don;t have the original source?

echo basalt
#

this is the original source

eternal oxide
#

oh

echo basalt
#

main class listener my beloved

eternal oxide
#

I like their synchronized, but thats about all

wet breach
eternal oxide
#

Charge an absolute fortune. That formatting is horrid

echo basalt
#

I figured it out in like 10 seconds thanks

wet breach
#

Chulist?

#

XD

echo basalt
#

He made a list wrapper that instead of throwing errors it just returns null

wet breach
#

lmao

echo basalt
#

holy fuck

eternal oxide
#

CTRL+SHIFT+F

echo basalt
#

I'd charge like 150$ just to clean this up

eternal oxide
#

easily

echo basalt
#

6 classes of pure disgust

#

my bad miscounted 5

quaint mantle
eternal oxide
#

so now he has to type Conf.AIR. Its shorter 🙂

broken nacelle
brittle geyser
tardy delta
#

what the

#

dont tell me this is really written by a person

pseudo hazel
#

it def is

#

and this is what we use to train gpt 69

misty ingot
#

well now i know i definitely do not write the worst code

pseudo hazel
#

whenever you do something, there is always someone that can do it better

lilac dagger
#

unless that's me, i write the best code ever, yeah

misty ingot
#

real

tough parcel
#

hello, i want to write a spigot plugin which can execute a bungeecord command on the proxy.

just to confirm, i need to register the messenger:

Bukkit.getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");

and execute it like this?

ProxyServer.getInstance().getPluginManager().dispatchCommand(ProxyServer.getInstance().getConsole(), your_command);

#

its a bit confusing

wet breach
#

just fyi, plugins don't need to "Execute commands"

#

they are not like players

tough parcel
#

well yeah

#

wrong term

lilac dagger
wet breach
#

easiest way to do it I suppose

#

or just initiate a connection to your own plugin

#

both are easy to do

tough parcel
#

or the plugin message

short drift
#

What's the best way of making an entity make a sound when player is near the entity?

#

I mean, I don't want to create too much overhead.

eternal oxide
#

its just a packet

short drift
#

But I was thinking it would be pretty nice if these made sounds.

lilac dagger
#

schedule it every second

eternal oxide
#

If its loaded, tick it

lilac dagger
#

yeah

short drift
#

You might have to be a little bit more specific how you mean exactly. I might not be familiar with this approach.

#

Do you mean like bukkit scheduler and loop all entities ?

lilac dagger
#

i would recommend you to store location

#

just the chunk entities

#

or via locations

#

and you can tick the distance to locations

short drift
#

I would get those via player's ? Or is there some way to just get all loaded chunks?

lilac dagger
#

player get location get block get chunk

short drift
#

Right and create a list from those. And then loop all entities which are item frames which contain clock from those chunks.

lilac dagger
#

you can also offset if you're close to the edge

#

to loop the other chunk too

wet breach
#

get the chunk coord entity is in, store that as a key, anytime player moves check the chunk coord compare with the key

short drift
#

But what do you mean by ticking the distance to locations?

lilac dagger
#

that's method 2

#

you store location in a map when a player puts a clock in item frame

wet breach
#

you will want to avoid looping lists in this case as that would be your major slow down

short drift
#

Oh?

lilac dagger
#

exactly

short drift
#

Well, what then?

lilac dagger
#

it's faster

#

up to you really

wet breach
short drift
#

Oh you just meant the literal List<T>. Okay. Sure.

lilac dagger
#

probably a list would be enough

wet breach
#

or a List, but I recall you needed to loop with a list?

#

yeah, contains is proportional to the size of the list

#

alternative to hashmap is a hashset

lilac dagger
#

well, you can't really contains it

#

list is the best

#

you can loop it and check distance to the player

#

you can use a map if you have multiple worlds

eternal oxide
#

I'd not bother with a distance

lilac dagger
#

Map world list<location>

eternal oxide
#

if its loaded play a sound at the location

short drift
eternal oxide
#

sounds have a range so only play when a player gets close enough

lilac dagger
short drift
#

That seems like the opposite of what you just said.

eternal oxide
#

if you send a playSound packet to a client that is out of range it will not play

lilac dagger
#

oh

eternal oxide
#

Yep you need the location is all

short drift
#

Right so just always play?

lilac dagger
#

yeah

#

let the client handle it

short drift
lilac dagger
#

it's a lot of chunks to handle

#

it's O(n^3)

short drift
#

So you would grab the entity when it's placed and store in a database?

lilac dagger
#

yea

eternal oxide
#

if you don;t do the check too often just use World#getEntitiesByClass

short drift
#

Well, how would you detect if it's in a loaded chunk then?

lilac dagger
#

it will return null

eternal oxide
#

will give you a Collection of that specific Entity.

lilac dagger
#

oh it's world, yeah

short drift
#

I'm not sure I understood what the advice was for this last one 🤔

short drift
#

If I store all the item frame-placed clocks in a database - my question was, how would I efficiently check if they are in a loaded chunk and should be playing sounds?

eternal oxide
#

The issue with you storing them is when your db gets out of sync

#

somethign breaks a clock

short drift
#

Okay ... so you recommend I get all entities by class instead?

lilac dagger
#

just have an event for that

eternal oxide
#

just grab all the clocks every 5 sconds.

short drift
#

And does that return only entities in loaded chunks?

eternal oxide
#

unloaded entities shoudl not be returned

short drift
#

Okay, well that sounds like a plan then.

eternal oxide
#

but it doesn;t even matter if one is, you are only sending a playSound to its location. You are not interacting with anything

#

so update your list every 5 (or so) seconds, and do a playsound every second for any in the list

short drift
#

I should do a null check probably for them?

eternal oxide
#

if it can be null check for it

short drift
#

In case they have been unloaded in the mean time.

eternal oxide
#

yep

young knoll
#

It won’t be null it’ll be invalid

short drift
#

Or maybe we only care about the Location 🤔

#

That might be better.

lilac dagger
#

i wanna write this myself

eternal oxide
#

no need to extra process when getting the entities

#

thats the heaviest part of teh code

#

just get them and put in your list

short drift
eternal oxide
#

do it all in one task

#

well you could do two

short drift
#

Why?

eternal oxide
#

I guess two is ok

short drift
#

Well this way I was thinking I could update it less often and just keep playing the sounds there a few times.

lilac dagger
#

one slow for getting the item frames and another one faster for playing the sound

short drift
#

Yeah, okay. Thanks a lot for the guidance. I'm going to test this out and see if i can get it working.

fringe yew
#

how do I check if a player is currently holding no item/has their fist out

carmine mica
#

can check if the item in their main/off hand is empty

fringe yew
#

what would I need to do to do that though

#

i have the item stack and that's it

carmine mica
#

get the players inventory and call the methods to get the itemstacks in their hands

fringe yew
#

which i haver

#

but i don't know how to check if it's a fist or what

young knoll
#

Null or air

fringe yew
carmine mica
#

if its from a player, its not null

fringe yew
#

console says it's null

#

how would I check for it being null then

carmine mica
#

...

fringe yew
#

i've tried .equals(null) and it errors

#

i've tried using not and it doesn't work

young knoll
#

== null

fringe yew
#

thanks

tidal kettle
#

hey you think it's possible to add a precreate .yml file in the plugin folder?

ocean hollow
#

[ERROR] Failed to execute goal on project GreenTavernAPI: Could not resolve dependencies for project org.gt:GreenTavernAPI:jar:1.0-SNAPSHOT: Failed to collect dependencies at me.clip:placeholderapi:jar:2.11.4: Failed to read artifact descriptor for me.clip:placeholderapi:jar:2.11.4: Could not transfer artifact me.clip:placeholderapi:pom:2.11.4 from/to placeholderapi (https://repo.extendedclip.com/content/repositories/placeholderapi/): repo.extendedclip.com: Temporary failure in name resolution: Unknown host repo.extendedclip.com: Temporary failure in name resolution -> [Help 1] why i have problem here?

https://jitpack.io/com/github/MrTvistYT/GreenTavernAPI/v1.0.10/build.log

tardy delta
#

seems to work

chrome beacon
#

^^

ocean hollow
#

Should I then make another release and see if it works?

wary harness
#

So got strange problem I am compiling NBTAPI to my plugin

#

and after I relocate/shade it

#

on virustotal it is detected as virus

#

Ikarus
Trojan.Java.GenericGBA

#

and some windows users get it detected sometimes

#

if libs are not shaded there is no detection found

young knoll
#

Yeah so are a lot of plugins

wet breach
#

otherwise, its just a false positive. If it was a real virus they wouldn't call it Generic lol

wary harness
#

but why does it behave like that after shading

#

if I keep original package locations

#

there is not problem

wet breach
#

because virus scanners are not in the habit of checking code of java applications thoroughly

wary harness
#

but for example NBT api need to be shaded

young knoll
#

Is it after shading or relocating

river oracle
#

relocations probably break some hash check or something idfk antiviruses suck ass for java

young knoll
#

Those are 2 different things

wet breach
river oracle
#

oh true

wary harness
wary harness
young knoll
#

Doubt it

#

MD put an announcement out about this for a reason

wet breach
#

and its most likely related to some kind of fetching from the jar

#

IE zip code related and something complaining about it in a non-specific way because its not exactly dangerous but can be if used incorrectly

#

but also not exactly malicious, hence virustotal giving it a generic status

#

as I said, if it there really was a virus, it wouldn't be a generic virus and would have an actual name for said virus XD

wary harness
#

well I will just leave it then

river oracle
#

If you're releasing this plugin publicly please put a PSA

#

people are idiots

young knoll
#

Free Trojan with every download

sullen marlin
#

Bargain

tough parcel
#

crazy

junior geyser
#

I am tring to contribute a new method to spigot Bukkit, which obvoisly requires changes to CraftBukkit as well. I have forked both repos, and have both open in intellij, and have made the appropiate changes in both repos. I would like to test it before I pull request it, but I am not sure how I am supposed to test it. The Contribution readme says run build tools, but how does that know where my changes are? Also, they are two different repos, so how do I connect them so I can actaully import the Bukkit interfaces?

young knoll
#

Tbf idk how to do it with buildtools

#

I just mvn install Bukkit and then mvn package craftbukkit

#

With -P development

junior geyser
#

Just the command "mvn install Bukkit"

kind hatch
#

just “mvn install” in your Bukkit project

young knoll
#

Just mvn install in the project

#

IntelliJ probably has buttons for it

remote swallow
#

it do

kind hatch
#

It does

#

Maven tab go brrr

junior geyser
#

Okay thanks I am going to give this a go, I thought the docs were saing it should be complied with build tools

#

Might try and update the contrubutions docs as I figure this out for myself

kind hatch
#

The docs are probably referring to compiling spigot itself.

young knoll
#

You can do it with buildtools I just never got it to work

#

Kek

kind hatch
#

Craftbukkit can be compiled by itself.

#

Although if you want an actual spigot jar, then yes, BuildTools has to be used.

junior geyser
#

Get this when I try to mvn install

#

What am i missin?

acoustic pendant
#
 public ServerPlayer createNPC(Player player, String name) {


        CraftPlayer craftPlayer = (CraftPlayer) player;
        ServerPlayer serverPlayer = craftPlayer.getHandle();

        MinecraftServer server = serverPlayer.getServer();
        ServerLevel level = serverPlayer.serverLevel();

        String translatedName = hexTranslator(name);

        GameProfile gameProfile = new GameProfile(UUID.randomUUID(), translatedName);

        ServerPlayer npc = new ServerPlayer(server, level, gameProfile, ClientInformation.createDefault());

        npc.setPos(player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getY());

        showAll(npc);


        return npc;
    }


    private static void showAll(ServerPlayer npc) {

        ClientboundPlayerInfoUpdatePacket playerInfoAdd = new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER, npc);
        ClientboundAddEntityPacket playerSpawn = new ClientboundAddEntityPacket(npc);
        ClientboundRotateHeadPacket headRotation = new ClientboundRotateHeadPacket(npc, (byte) Math.floor(npc.getYHeadRot() * 256f / 360f));
        ClientboundSetEntityDataPacket entityData = new ClientboundSetEntityDataPacket(npc.getId(), npc.getEntityData().packDirty());

        for (Player player : Bukkit.getOnlinePlayers()) {
            ServerGamePacketListenerImpl connection = ((CraftPlayer) player).getHandle().connection;
            connection.send(playerInfoAdd);        // Inform client this Entity exists.
            connection.send(playerSpawn);            // Spawn this entity on the client.
            connection.send(entityData);            // EntityData (Packet based Entity) to show skins.
            connection.send(headRotation);
        }
    }```
young knoll
#

You need to mvn install Bukkit first

acoustic pendant
acoustic pendant
young knoll
#

The NPC doesn’t have a connection

#

And the server is unhappy about that

junior geyser
#

works

acoustic pendant
acoustic pendant
#

Oh, you need reflection for it

#

lol

acoustic pendant
alpine urchin
#

that packet removes from tablist correct

acoustic pendant
alpine urchin
#

its midnight

fluid cypress
#

is there something from the spigot api to log to a file, creating a new file each time, compressing the files to .gz files, etc? or do i have to do all that manually

alpine urchin
#

cba ill keep it real to open up that page

#

gn

wet breach
fluid cypress
young knoll
#

I believe that’s what minecraft uses, yes

hazy parrot
#

just write an appender

#

log4j have default file appender

lone aurora
#

Is there any way to detect when a player changes the command within a command block, or edits its settings?

eternal oxide
#

Not that I know of. Command blocks are similar to Creative. The client has full control

lone aurora
#

yea i've tried that, it doesn't even fire when a command block is updated

eternal oxide
#

Then its not covered in the API

young knoll
#

A physics event probably fires when the type of command block is changed

#

Other than that tho

echo basalt
#

Having the weirdest issue at work 🤔

#

I made a little flood fill thing that scans locations, filters them and makes a "surface"

#

Except it's shifted a bunch and refuses to work if it transitions from negative coordinates to positive

eternal oxide
#

math is hard 😉

echo basalt
#

I'm not doing anything that'd break like this

#

legit just changing every axis by 1 in each direction

#

no reason why it should stop

eternal oxide
#

With no code my best guess would be you are fluffing some max/min calculation