#help-development
1 messages · Page 1139 of 1
And to prevent weird issues on the client you hide the tag from them
unless you assign 1 id for an individual item
i.e. a full 64 stack would have 64 ids
and then on crafting you run into small issues
you would need to keep track of what ids were used to craft which new id(s)
.
Yeah and that can be offloaded to a db
or
item id -> crafted into <crafted_identifier>
Yea, already planned on using SQLite or MySQL. Just trying to figure out how to go about it code wise
PostgreSQL 
If I can get something good enough, it would be useful to determine user fuckery & what not
what are you trying to do
.
user fuckery in what way
If robust enough, it could be a way to detect dupes, for example without having to check for specific methods
how though
stackables are a PITA but you could do it by the following:
- Track every inventory update that could ever be done
- Store the slots for each stack
- If an item is dropped and the inventory matches the correct hash prior to dropping (i.e. based on the changes you've observed, because sometimes events aren't fired or players can edit their inventories with NBT), store that UUID as a dropped item that you want to track
- On pick-up put remove the UUID -> Item and change it to Inventory -> Slot -> Item
- On item destroy, prevent or remove UUID -> Item
this should be pretty resistant to every change you could make
also how would you even let players stack items with different ids
unless nothing is stored on the item itself
pita?
well, I'd say this
Pain in the ass
ah
of event -> inventory hash
Shouldn't be toooooooo annoying. Gonna look into unstackables first, since I can just fuck with their PDCs directly since again, it doesn't matter
Those will likely be the only consistently good way to determine duplicated stuff as well, given how some of the dupes work
also what about anvil repairs and stuff
like repairing a near broken pickaxe with a fresh diamond
does the pickaxe keep the same id
or is it basically a new item
for unstackables, it shouldn't matter as the PDC (should) stay the same
unless it's stackable item + unstackable item merging, in which case a new id is assigned, and logged as such w/ the relevant older ids
yeah
I think you would have to make a new item every time
otherwise you would have a situation where you repair a pickaxe with some id, and an item was used for that, but if you dont assign new id you cant easily determine when the item was used to basically merge into the existing item
Actually, wait no. I think it would need to change even then đ€
Eh. I can just assume and just assign a new ID regardless
yeah
as long as the older ids get logged, it (hopefully) shouldn't matter lol
any operation involving multiple items need to create new ids
Yea, luckily not too much of a hassle. It is only a hassle for stackable items though, since you can't easily add anything to an item w/o making it impossible to stack lmao
Luckily, still possible, just a bitch to impl
wdym
the usecase I just explained involves and keeps an unstackable item
or do you mean the opposite
there are like 4 negations in that sentence
Unstackables are stupidly simple to implement (thank god) but still a hassle, due to a bunch of things that need to be taken into account. Stackables are a bitch, but still possible to support properly even though you can't modify an item directly w/o making it unstackable
right
you would have to edit the item after its been stacked or whatever
or like voodoo said, keep track of the inventories the items are in
Which is what I'll go off of for stackable support, gonna focus on unstackables though since that'll be easiest to support
yeah
I usually start with the hardest case
since it usually means I dont have to refactor everything once I get to the other cases
something that works with stackables automatically works for non stackables if its a bit flexible
I'll probably end up refactoring it a bunch anyways lol
Plus, they're usually one of the main things that are likely to trigger automated checks (e.g. nerds duplicating armor, swords, enchanted books, etc and the like), might as well get that out of the way first
and, again, in the case of unstackables I can rely purely on PDC so for the most part it's just gonna be a bunch of if statements & logging lol
Yea, or those. Stackables still get duped, but unstackables are higher priority due to ease of implementation & the fact that they're (usually) higher priority in regards to being duped
checking is also easier, since it's just a matter of looping the inv and checking unstackables for the same ID
If you know someone's duping, you'd be able to track the items & do a mass punishment, and get rid of said items in the process if given away. Among other moderation stuff
Honeypotted items, think gps in bank money kinda thing. Niche, but has its uses
remembered itemstack hash a hashCode impl, not useful for this though
int hash = 1;
hash = hash * 31 + getType().hashCode();
hash = hash * 31 + getAmount();
hash = hash * 31 + (getDurability() & 0xffff);
hash = hash * 31 + (hasItemMeta() ? (meta == null ? getItemMeta().hashCode() : meta.hashCode()) : 0);
I feel that it would collide waaay to often for it to actually be of use lmao
well yeah
its made to compare itemstacks with the same item meta
a single potato will always have the same hash
which is the polar opposite of what you want
whats the best way to process events in an order, i heard the priorities aren't the best approach as at some point there wont be enough of htem?
ok
what if i wanted to treat it like a pipeline? i had imagined making decoupled systems, for example when creating a burger there could be listeners adding beaf, one adding lettuce, one tomato and the last one delivering it
You can do that if you want
Just have your own pipeline code and don't rely on the Spigot event api too much
So one listener to trigger pipeline code
and then the pipeline takes care of the rest
how is this List<Map<String, List<String>>> and not list<list<string>>
is this even correct syntax? these 2
for what usecase exactly
ah i see
olivo basically told you everything
Because you've given the "inner list" key names
making it a map
and yes as I said yesterday both are valid
though I wouldn't use the second one
fck I have to spent hours why the hell when I convert yaw to degree, it doesn't translate well in-game just because it has an offset of -90, why mc why
ugh
how to make a list in list without name?
list:
- a
- b
a and b don't have named keys
they are numbered keys since it's a list
if I want to give them named keys I would do something like
notAListAnymore:
nameOne: a
nameTwo: b
- [a, b, c]
- [x, y, z]
- - o
- m
- n```
List<List<String>>
^^
looks weird the second one
yeah
still a list tho
is there an easy way to set a cooldown on item usage
Player#setCooldown or soemthing
okay thank u
afaik it's the only way
what?
as far as i know
oh... that explains
i mean it is the only way thats like built in, you can implement your own
do you need to put quotes in config?
i mean in plugin yml some strings have it, other dont
do events run before or after code
like PlayerItemConsumeEvent would run before setting the absorption for golden apples or after
after
would there be any way to run code before
if thats what u mean, you can cancel event in you code, so thats obvious that it runs before event
it depends on teh event, but almost all run before
If event cancelable, before otherwise undefined.
code runs before, i said that events run after
really?
I want to set my own potion effects for gapples but I don't want to run it if they already have the effect
yes, when it starts with a special character
but I really dont want to store a list of all the players with my effect
like 1?
&[]{}
which is literally absorption with a shorter timeframe
what does amplifier and ambient actually mean with potion effects
what do i set to "sender" in Bukkit.dispatchCommand() i dont have any sender but it says not null
Console or Player
so console
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/Bukkit.html#getConsoleSender() if there is no player
because i dont have any player
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "say jajko");
why does it say unknown command? i have tried
say
/say
minecraft:say
/minecraft:say
can i use it do execute minecraft's command?
well, you probably shouldn't use it like that
so like what
For saying, you should use built-in methods
i was testing
im gonna need it to execute a command from another plugin
but i was testing it and it does not work
Hmm
Can you try making it run version or something
Without /
Yeah, bukkit looks up commands only in the command map, it does not delegate handling to brigadier
It will only work with non-minecraft commands
oh
so
thats actually not my problem
i can use it for another plugins command? right
you should be able to
but i write "nameoftheplugin:nameofcommand arg1 arg2"
But you should probably just depend on the plugin and run its code
what? how
Doesnât always have an API exposed
Heâs saying to use the pluginâs API and use their methods/classes instead of running a command
But if the plugin doesnât have an API you might have to use commands
what if i dont even know the plugin
or this scenerio
Then use a command
like that?
this is so ass, lol
Help. It doesn't work
I think it's a new discord thing
Groups/guilds if you will
Idk if you have to buy it that'd be kinda dumb imo
click on it bro
for example me
It's a guild
icant click on it
idk whats that
Guilds are private servers you have to be invited to to get in, there is also a max of 200 people that can be in one, and guilds can have a 4 character tag too to represent the guild
they're called clans internally, which makes more sense
This aint coc bro
discord clans lovely
the 4 characters aren't unique though, so you can have multiple guilds with the "CUTE" suffix for example
cant you just create one urself
Yes, but I can't because I don't have that feature yet
because guild was already taken and.... they had the brilliant idea of naming them guilds lmao
discord in their infinite wisdom
i ont know about that its weir
d
It's not weird, it's cute
what is wrong with your d key, you missed it twice
can i get it?
real
LOL
I aint inviting anybody anymore
i dont have G
last sentence letter curse
It is
bro is trying to kill themselves
I got that good D!
:3
The will of D that is!
.
.
Imagine having wifi in your car
Cuz they said they weren't gonna accept anymore from here
I just share mobile data with my phone, infinite data plan so I don't really worry about it
Only close people and their friends are the people I only invited
Technically I do too, oddly enough the hotspot data usage is not infinite
mine isn't infinite either, tops at 100GB from what I have seen
I found that out that one time wifi went down in the classroom and I just shared with the whole class
We could never get cell signals in class lol
I mean the whole building is concrete
Also the school I went to in georgia, was literally designed like a prison
cool
Why
what? never
What does that even mean
smh why
why do I have to use some random stuff
like
packetevents
and like
mojang mappings
The entire api is an abstraction over NMS
If thereâs something you canât do without NMS, make a pull request or open a feature request
hm
you don't have to use packets at all for most things nowadays anyway
where
if there was no spigot you had to do all the packets yourself
change player name above head without packets when
?contribute
You can find information about contributing to Spigot at the following links:
https://www.spigotmc.org/wiki/cla/
https://www.spigotmc.org/wiki/guide-contributing-to-spigot/
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/README.md
https://hub.spigotmc.org/stash/projects/SPIGOT/repos/craftbukkit/browse/CONTRIBUTING.md
Display entity
there actually only a few select things you would need to use nms for, qnd most of those uses are pretty advanced
just use a text display
changing the actual nameplate only causes issues and is rather limited
right
;-;
doesn't exist in 1.7 :(
â ïž
Wtf is a consumer, Java 7 doesnât have that?!?!
Half the people playing minecraft didnât exist in 1.7
what is .getFirst() ?!
fr though đ
bukkit had a consumer?!!
Yeah we did
yeah
Back before java did
that isn't true lol
it was added even after they started to depend on java 8
uhm
Ah
Well, lol
where do i start tho
Either way itâs deprecated now
declaration: package: org.bukkit.util, interface: Consumer
And isnât used in the code anymore afaik
Use Team to hide the existing name tag
Adjust the translation to position it right
but!
And then this ^
?
What about them
hold up can I just get them
with permissions
and prefix.weight.
đ
or what
do you even have to use a team? I thought riding an entity would hide it
what if no vault dependency đ„ș
ah, that sucks
So youâd just mount 2 entities on the player
this whole thing sounds wacky as fuck
(Idk how well teleporting would cooperate with that tho)
where is my Player.setNameAboveHead() ???
this is how pretty much everyone does it nowadays
Itâs certainly less wacky than messing with the players gameprofile
if you don't want to deal with implementing it, just use something like NametagEdit or whatever the API for that is nowadays
but here's the twist
no fork implements this kind of functionality
I want one player's nametag to appear differently to different players
so supposedly I can just make 50 text displays ride one guy
and then hide all but 1 to another player?
yes, basically
You can control which entities are shown to which players
Just change the text
set the text a text display displays?
Yes
sick
it is wacky, but that's simply because Minecraft doesn't support this functionality by default. So you gotta work it around
Next youâre gonna tell me item displays let you customize what item gets displayed

Maybe
wait fr?
I thought it was like
a final entity
yk
hear this one out, a minecart with tnt explodes
đ€Ż
Well
wait whattt
thats actually crazy
You can have a tnt minecart or a minecart with tnt
if not camman18 I'd think you were joking
what
Camman18 is a joke
đ
who is that
The explosive minecart is its own entity
A YouTube shorts YouTuber
guys so youre telling me I need to create like a bunch of text displays to ride all players when someone joins
You can also just make a normal minecart display a block of tnt in it
But it wonât actually explode
fair
again, just use a library that does it for you if you don't want to implement it
uh I can't find a library that does this with a quick google search actually
there is no way someone hasn't done this before
LibsDisguise can customize name tags afaik
yea
conceptually speaking, both of them run at the same time
Whichever one is registered first will run first
you can give your eventhandler a priority
Assuming they have the same priority
If they have different priorities then itâll follow the normal priority order
ah, I was assuming it was the same Listener class, if it is different listener classes then yeah order matters
im fine with implementing it ig
im just asking if thats what I need to do
it is indeed
cool
performance isn't much of a concern since display entities don't tick
whatever that means
ur right my code just isnt working
(They do actually tick)
entities have behaviour, they tick
Shh donât tell anyone
display entities dont
heyo
i have not at all started making plugins yet (although iâve made a few small datapacks) but iâm just wondering if this is possible
iâm trying to make a plugin where it asks the youtube api how many subscribers i have and every tick does worldborder set [sub count divided by 5] 5
is this typa thing possible?
sure it is
Yes
just cache the subscriber count and update it async
Display entities do tick, itâs just to check if something is riding it
lol hammer ytube api 20 times a second đ
for (PotionEffect pot : player.getActivePotionEffects()) {
System.out.println("Potion effect: " + pot.getType().getName() + " " + pot.getAmplifier());
// if level 10 damage resistance, the same potion effect applied during spawn protection, cancel hit
if (pot.getType() == PotionEffectType.DAMAGE_RESISTANCE && pot.getAmplifier() == 9) {
event.setCancelled(true);
damager.sendMessage(ChatColor.RED + "This player is currently spawn protected...");
return;
}
}```
printing
`[02:55:33 INFO]: Potion effect: DAMAGE_RESISTANCE 9 `
however the event isnt cancelled and the message isnt sent
am I crazy?
could be every second doesnât really matter
yeah it is
check out runTaskTimer
awesome
will start to learn how to make plugins before i do this lol but ill ask here if i need help after i do
And runTaskTimerAsyncronously
that means that if check isn't passing
is it just my or all async things with schedulers are kind of useless because of CompletableFuture
how though look at what it prints
why wouldnt it be true
gl đ
seems to be just you
i happily use the async timer
CompletableFuture only runs once
you can just put a completable function inside a sync timer tho no?
You could just make your own thread, but thereâs really no need to
The asynchronous scheduler allows you to schedule something asynchronous with server ticks
Thatâs the benefit compared to like using an executor with CF
^
Yeah itâs also still aligned to the server ticks
I mean even live subscriber counting websites only poll once every 2 seconds, https://socialblade.com/youtube/user/mrbeast6000/realtime
uhm
what
Also is his YouTube channel id really mrbeast6000? lol
yeah thats his old name
Thatâs his lawsuit count
lol he didnt change it?
yeah, it is kinda weird, it might just be the fact that PotionEffectType isn't an enum so reference equality might not do
do .equals on it instead ig
dont you wanna use .equals?
Itâs not an enum
yeah
with enums it doesn't matter if you do equals or reference equality since it is always the same constant
PotionEffectType.DAMAGE_RESISTANCE is not an enum?
for enums yes, it does matter
always compare them by their adress
makes sense actually
The scheduler allows you to schedule stuff accordingly to those game ticks. If you have a CompletableFuture, you canât schedule a delay based on game ticks
I mean thatâs what .equals does
With just slightly more overhead
It's fine being referentially compared, it's registry backed
yes, but whats the point of scheduling something async
At least I believe methods pulling PotionEffectType pull from the Bukkit constants. They should be
What
I remember having an issue with it before
equals always has the risk of NPE
Yeah and == has the risk of being wrong lol
Objects.equals :p
im not asking .runTask vs CompletableFuture, I'm asking .runTaskAsync vs CompletableFuture inside of .runTask
in terms of an enum?
There's a risk someone will call my static method when I don't want them to
There's a risk someone will reflectively call my private constructor
There's a risk of everything
Thereâs a risk choco will ban me from hypixel
you can do that? đ
ah you're that type of guy
then just call the equals on the one thats not null
đ€Ż
5head
I'm just saying, don't not use .equals() because you're afraid of an NPE lol
Thereâs a risk someone will find a way to instantiate my private utility class constructor but theyâll be met to their demise with a horrible exception
yeah I have a big brain
im praying that effect isnt null so shouldnt be a problem
im aware
Thatâs why people do âTestâ.equals(myString)
Those people are psychopaths
Even though my brain doesnât like that for some reason
anyways, comparing enums with == is the best practice
double negative!!!
those people are smarties
so microsoft java
now this doesn't make sense
been there, done that
if what Choco said is true then it should have worked with reference equality to begin with
lolll
Why would use a CompletableFuture inside a run task, whatâs the context
RunTaskTimer, whatever
also I have this
player.setVelocity(player.getVelocity().zero());
player.teleport(new Location(world, 0.5, 66, 0.5));```
running when the player falls below a certain distance
have a server handled async scheduler which once registeres a task vs register it over and over again using the common pool (CF)
however it seems to still have velocity I assume because the player takes damage when they teleport
what is .zero() đš
(0, 0, 0) vector
.
Set their fall distance to 0 after teleporting them
wait thats a thing
damn
And perhaps set the velocity after the teleport too
No
no?
once they jump ig
why not
Theyâd have to be airborne
Itâs constantly reset to 0 when on the ground
ohh
you cant fall while standing
hear me out
tp them 0.000001 blocks upwards
you underestimate me
physics says you can
and set fall distance to 10000

Hear me out
Just deal 10000 fall damage
Hmm
declaration: package: org.bukkit.entity, interface: Entity
yeah
doesnt that work?
Guys, can someone once and for all explain me something
what's the difference between SomeClass.someMethod
and SomeClass#someMethod
The first is static
the one with the dot is static?
The second is within class instance
The # is just used to indicate itâs an instance method
damn
Yes
alright makes sense
I thought it was something like that
but never knew which was which
noones gonna beat me if I just use . for everything tho right
no one cares tbh theyâll know what you mean
tbf I didnt know what # is for in first place
frr
(Back then I 100% didnt try litterly Player#teleport(postion))
guilty..
is that what setMaximumNoDamageTicks is?
but my defense is it was 2020 or stmh
valid
setNoDamageTicks
whats that
a clothing brand
lmfao
It's where you get the cheapest shit tho
still died
20 of the "cheaps" is still less then the original
so a casio watch it is
player.setVelocity(player.getVelocity().zero());
player.setFallDistance(0); // prevent fall damage
player.setNoDamageTicks(1);
player.teleport(new Location(world, 0.5, 66, 0.5)); // todo: team based tp
player.setMaximumNoDamageTicks(1);
player.setVelocity(player.getVelocity().zero());
player.setFallDistance(0); // prevent fall damage```
still dying even with this shit
List#add(player) if(List#contains) event.setcancled (Damage event)
would be a work arround
I am not doing that
my brother in christ just write the fucking code
there is a better way I just don't know what it is
Set the no damage ticks longer and see what happens
set to 20 still didnt work
Remove the setMax no damage ticks whayever
List<Player> sigmas = Lists.newArrayList();
@EventHandler
public void checkSigmaStatus(EntityDamageEvent f) {
if(f.getEntity() instanceof Player) {
Player potSigma = (Player) f.getEntity();
if(sigmas.contains(potSigma))
f.setCancelled(true);
}
//before tp sigmas.add(player);
//after tpsigmas.remove(player);
}
I did
i am not doing this bro
hater
where are you teleporting them that they're dying, in the sky?
when they reach under 30 or something y level im teleporting them one block above the spawn point
which is just a clay block lol
ah, so this is just a void teleport kind of thing
what everyone does for this kind of thing is just check the damage event for void damage, if so cancel the event and teleport
nah as you saw he dont want to do seperate event
I mean, it could be a different thing, I don't know
getting to the teleporting isnt the problem its the actual teleporting
teleporting shouldn't cause players to die tho, even less so if fall distance was set to 0
did you try not setting the velocity?
and keeping no fall distance?
yes
figured it out I think
oh, what was it
yeah just use the sigmavalidator
lmfao
Guys how do I spawn a TextDisplay and make it ride a player
okay well it now plays a damage sound but does no damage but I guess thats probably just client side
yeah definitely is
World#spawn then Entity#addPassenger
ight
how do I disable the players normal tag?
btw what happens to displays riding player when he leaves
someone said something about interact component of size 0 or sum
what does "deep" mean - config.getKeys(boolean deep);
Add them to a team with name tag visibility = NEVER
its in the config
gets keys from keys
key2:
key3:```
if you get keys on key1
with deep it will get both key2 and key3
if without only key2
okay i get it
wb no team
what
how do i specify from which location i want to get the keys lol, like you said from "key1"
how do I do it without teams
you don't
yamlConfiguration right?
or what
fileConfiguration, what you mean?
hah
oh
get the configuration section then use getKeys(false)
what
how do I do that though
@glossy laurel
team system is only incredibly ass
it works
it's still ass
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Player.html#hideEntity(org.bukkit.plugin.Plugin,org.bukkit.entity.Entity) why tf do you need to pass a plugin instance into this method
declaration: package: org.bukkit.entity, interface: Player
Ye to be fair itâs not like Iâm gaining subs every few seconds lmao I just want it to be sooner than later probably every few seconds
if (Bukkit.getScoreboardManager().mainScoreboard.getTeam("players") == null) {
val playersTeam = Bukkit.getScoreboardManager().mainScoreboard.registerNewTeam("players")
playersTeam.setOption(Team.Option.NAME_TAG_VISIBILITY, Team.OptionStatus.NEVER)
}
how is that hard
btw guys
can you
make a textdisplay
thats hidden to everyone by default
without looping first
Entity#setVisbileByDefault
sheesh
You don't want to do that on the passenger
I dont?
configs are cool
how come
true
...just use teams...
Well if the client doesn't see it the nametag will be there
general java question: can i get when a mouse is clicked without a jframe?
i only find stuff about mouselisteners
That interaction entity thing will only be more painful than it has to be
but they need to be added to components of a jframe
yeah ik
Worst case hook the Windows API with FFI
le pain
The new FFI makes it a lot easier
No Java 22
oh
what happens to textdisplays that are riding a player when player leaves?
It has new Foregin Function and Memory API
Kotlin has had good ffi for a while
They will stay
ight
Don't use lunar
not what I asked but you got a point
Just kick all people who have the lunar client brand đ§
epic
this server dev thing is easy
lol
That's for Kotlin native? So outside the JVM?
kick wurstâ kick lunarâ
oh lmao
how get player prefix no vault api
Hook in to every plugin you want to support
ight bet
why the first one is ok but the second can produce null pointer exception?
ConfigurationSection configSection = config.getConfigurationSection("ranks");
if (configSection == null) return null;
return configSection.getKeys(false);
if (config.getConfigurationSection("ranks") == null) return null;
return config.getConfigurationSection("ranks").getKeys(false);
i think i may know the answer but i need to ask to make sure
Intellij doesn't know that getting the section again won't return null
yeah
it wont? for sure?
yeah
i thought it can
how
because second time its like different time and it may be already changed
Just use a variable it's safer and cleaner
its literally running instanteniously
unless you're changing configurations async
for some reason
but even then it wont change
yeah, i was talking about it
cuz the config is already loaded
omg intellij warning đ±
?
would this work or would there be some reason it wont cuz of the entity not really being spawned yet and I need to pass it as a consumer
nvm it's the opposite
đ
should players be comared using == or .equals
don't compare player objects
why
just compare uuids
why
player objects are (somewhat) expensive
Where/When are you trying to compare players
== should be fine then
how do I make textdisplays always face the player?
billboard: center i think
^^
transformation
who that
need to add all the transformation tags, one of which is translation x, y, z
such as
Vector3f offset = new Vector3f(0, 0.15f, 0);
AxisAngle4f rotation = new AxisAngle4f();
Vector3f scale = new Vector3f(0.75f, 0.75f, 0.75f);
Transformation transformation = new Transformation(offset, rotation, scale, rotation);```
what the hell đ
This also scales it btw
Vector3f scale = new Vector3f(0.75f, 0.75f, 0.75f);
You can play with this to make it bigger / smaller
can I also somehow remove the nametag from hitboxes?
so it doesnt show that direction arrow
why not just change the playerâs name?
đïž đ đïž
I cant
I need a different nametag displayed to all players
and I need it to look identical to a normal nametag
you could probably intercept the packets
okay so youre telling me
5 people convincing me not to use packets
was for nothing?
Are you trying to replace the players nametag?
thereâs diff ways to go about it
yes.
you making Werewolf in MC? đ
pretty sure if your text display is overlapping with the normal nametag it already removes it kek
So just set a transformation a bit higher than the players head
đ
someone just told me it doesnt
last time I checked it does, tested on multiple environments
đ
dyk the exact offset of players nametag?
I don't
?notworking
"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.
shit dont work bro
relatable
and thats on skibidi
from F3 show hitboxes you mean?
yeah
dont think you can, as its just a regular entity like any other
can I atleast make it like
point
downwards
not without changing the direction the tag faces
which would be a worse issue for you id think
đ God speed
oh, how do?
ah I see
billboard is client side so it doesnt care the orientation of the actual entity, nice
so you rotate the entity to face downwards. đ nice thinking
i wonder if you hide the entity from the player entirely, if the clienside billboard would also hide
it does
darn
:/
OH!
if shulkers have it shorter
I can make textdisplay shorter too
right?!
wdym shorter
I'm confused on what is shorter
the blue line
blue line
ah
Assuming that angle is directly down from the shulker I'd say its the same
it is the same
now how do I remove the blue line
fr
if everything is working
but the lbue line
I have no idea
and I have to switch everything cuz of that line
i will literally
đȘ đ©ž
okay not literally
đ«ą
You can't remove the blue line
is this the part where I start crying
but you can use teams like you were told many times
which does get rid of the entity and there for the blue line
can I use teams to make a player have a different nametag for 2 other players?
you mean shown to some and hidden for others?
Or like actually changing the display name
actually changing
No
exactly
im about to punch a hole through a wall
...
||tempted to say no u||
||no u||
?nsms
my hands are literally shaking
im scared of nms
?nms
if you want diff things to show on diff clients i think you have to use packets
Yeah you do
my plugin wont break on a different server though right?
right?
it's not really used much in new plugins
whatâs the new defacto?
packet events on top
or do people just use packet wrapper?
packet events with moj mappings is usually the go to
damn thatâs new, very cool
I mean, it updates faster than ProtocolLib and is cross-platform, so it indeed has PL beat in that aspect
I still believe PL is more intuitive to use, but I haven't really used PE extensively to say for sure
paper still uses nms
bro, stop flooding the chat
and sotp spamming
alr
paper just uses moj mappings from the jump
someone told me something about gradle
and then I ragequit
nms still exists
?!?!
I'd argue otherwise tbh. PL doesn't provide packet wrappers (anymore) so its more of a chore to figure out variable type etc