#help-development
1 messages ยท Page 1134 of 1
Life
trueeeeeeeeeeeeeeeeeeeeeeeeeeee
As expected of magma guy
Hey, Could someone help me? I have a code which is crashing my server (Don't know why because error doesn't register in logs and I cannot see the error in the console)
I think the code is pretty normal, but could someone tell why it may be crashing?
@EventHandler
public void onDamageWithZeusArmor(EntityDamageByEntityEvent e) {
if (!(e.getEntity() instanceof Damageable entity))
return;
if (!(e.getDamager() instanceof Player player))
return;
ItemStack helmet = player.getInventory().getHelmet();
ItemStack chestplate = player.getInventory().getChestplate();
ItemStack leggings = player.getInventory().getLeggings();
ItemStack boots = player.getInventory().getBoots();
if (plugin.armorUtils.isWearingZeusArmor(helmet, chestplate, leggings, boots)) {
Entity nearestEntity = getNearestEntity(entity);
if (nearestEntity == null)
return;
if (!(nearestEntity instanceof Damageable nearestDamageable))
return;
double damage = e.getDamage() * 0.2;
nearestDamageable.damage(damage, player);
nearestEntity.getLocation().getWorld().spawnParticle(Particle.REDSTONE, nearestEntity.getLocation(), 1, 0.1, 0.1, 0.1);
}
}```
Literal genius
It doesn't make sense to me
I should make a plugin that displays the server's tps and adds +20 if I am logged into that server
call it "aura"
you'll get a stackoverflow
nearestDamageable.damage(damage, player); calls the event again which calls the method again and so on
you're making a damage event damage entities
you're in an endless loop
If I just use nearestDamageable.damage(damage) that would be solved right ?
Or should i be using setHealth instead?
you can also trick a bit around and have a list storing the entities damaged, then check in the event if the list contains the entity and cancel + remove if so
by that you break the endless chain
not sure, could work
Yeah, could make that too
e.getEntity will be null that way
gl with that
Lol
Define a boolean in the listener class, set it to true before u damage the entity, then in your listener, if that boolean is true, don't do anything. Set the bool to false after you deal dmg
hm
I'll just make the location point to null
boom
ez
bedrock broken
trust the process
Works because mc is single threaded so u dont need a collection since only 1 entity can be damaged at a time
so you take the location of the bedrock away sending it to the void, making it a literal god between space and time
you just destroyed minecraft sir
guys java is too hard how do I solo dev an mmorpg that is a 1:1 scale of our solar system and can run 10bil concurrent players? I really want to future proof it for future demographics
ask ChatGPT of course
good point
If anyone can do it you can
You're the greatest developer ever sauce
๐ฅ
can someone lead me a to gradle runtask to try the plugin in a local srv ?
lame I have to like follow steps n shit
hit him with the "no, you do that for me"
ask to do it in Jython
it can't edit unity so really it just just make its own engine
in python since chatgpt can run python
Jython not python
I would use jython but I'm afraid the performance would just be too good
time travel
I don't want the game to run higher than 25fps because the human eye can only see 24.7 fps
Hi, there is a way for prevent someone from closing inventory?
Because InventoryCloseEvent doesn't contains e.setCancelled(true)
yeah maybe if you are disabled
you sound like the kind of person that can only think at 12fps
idk what server-authoritative is but I'm all about being against authority
- notch, 2011
classic
or some heavy networking shit and a somewhat big rewrite
How tf u do long screenshot
Teach me
I'm finally going to implement procedurally generated builds
except it's the fancy kind
the real fancy kind
I'm going to try to do some wave function collapse
Teach me beard man!!
watch the yt video I'll make about it loser
I hope your wave function collapses
or if you're talking about long screenshots you have addons or in my case a 4k monitor in portrait mdoe
but there's chrome and ff addons for this anyway
but yeah I'm hyped for wave function collapses
finally something fun
I kinda want to buy an 8k monitor
hmmm
What on earth wpuld you use that for
work
The characters in your ide not clear enough or smth lol
definitely not games nothing is made for or would run properly at 8k
no, I'd want an 8k monitor that is also over 60 inches, maybe 70
that way I can comfortably have 3-4 IDEs open
Isnt that just a tv atp
yeah and I already have one in my setup
Pretty sure entity interact gets called
Rip your neck
lol on the keyboard
rip your everything
what exactly is the difference between EntityInteractEvent, PlayerInteractAtEntityEvent, PlayerInteractEntityEvent and PlayerInteractEvent?
what in the actual sigma
we don't fuck around
Ignore interact at entity
Entity interact is when a non player entity interacts with world
interact at entity still fires once in a while
"that also contains the location where the entity was clicked"??!!
Player interact is with world objects, player interact entity is with entities
like where you click the entity on their body or something??
Itโs just player interaction entity with extra stuff
is entity a world object
oh fuck off
PlayerInteractAtEntity is basically only ever called when you interact with an armor stand
istg they should just expose them ffs
they know how many developers use packets
i mean
all the byte buffer ctors are private
since they are only ever created from the network, not really the game
you should use the codec :3
I think it's called for interaction entities too
actually, i don't understand this
the event should be called every time alongside the regular PlayerInteractEntity except for amor stands? :thonk:
Does anyone happen to know if worldguard bases its whole system on playermoveevents or does it only use to avoid players entering regions theyre not supposed to
apparently java 22 on ZULU breaks everything at work
like resourcepacks don't apply
if we switch to temurin or back to java21 it works
the fuck
java 22 broke my graalvm dependency one day
not just on zulu
everywhere
What happened
temurin works fine
not for moi
it calls all handlers' testMoveTo and onCrossingBoundary or whatever it is
that includes entry and exit flags, and whatever other handlers plugins have registered through the api
although worldguard only uses the event if you are crossing block boundaries, so movements within a same block are ignored
can I nuke that check
sounds pretty useless
it handles all this https://github.com/EngineHub/WorldGuard/blob/version/7.0.x/worldguard-bukkit/src/main/java/com/sk89q/worldguard/bukkit/listener/PlayerMoveListener.java which isn't just the PlayerMoveEvent
and yes there is a setting in the worldguard config for that
use-player-move-event or whatever
but it really doesn't impact that much at all given it only checks things when crossing block boundaries
how to make boat
immobilized (including its rotation) ?
?mysql
no?
how do I use mysql then
any tutorial mby?
im using YamlConfiguration atm btw
so I'd need some good way to transition
i
g
some googling
ty
What's the difference between running async through scheduler and completable futures?
well one gives you a future the other doesnโt
And by default futures use the common thread pool while async task use the cb thread pool
.
and if I just do .runAsync
and dont save it in a var
then it doesnt give me a future
whats the difference then
between it giving me a future
and not
uhm
this is CompletableFuture.runAsync
btw
Ohhhh
Ok yes
You're right
With a future you can cancel it, and use values it returns or run code when your future finishes execution
So you can CompletableFuture.runAsync(getUserFromDb).thenAccept(Bukkit.getScheduler.runSync(do something with player daya sync))
no difference?
No difference i suppose
imma need to figure DBs out first
which I really don't wanna do
cuz it looks painful
First start by learning some myswl
W3 schools is great for that
Just to learn syntax and how it works
hmm
You modify the transformation
holy cow
I didn't need to learn another programming language rn
๐ญ
https://misode.github.io/transformation/ I useful for visualizing
so many sliders lol
It's simple
Learn how to create a table
Then learn how to select, insert update and delete from a table
The 4 main operations
After that u can start using databases
There's a lot more to it but that's the basics
crud 
sound like ill kms
what is this, excel?
whats the method for that
kk thank u
CELECT
INSERT
UPDATE
DELETE
Strict excel kinda yes
But better for certain usecases
sounds like a lot of fun for sure
Also important to learn are primary and unique keys
๐๐ซ
It's really not that bad
normal forms :nodders:
@glossy laurel is ur current plugin public?
It's okay to register a bunch of listners dynamically right?
no
and wdym
Meh depends how often etc you have to remember their is reflection that must be done you gain a lot by just leaving them
well wdym public
open source public?
Yes
no
When it comes to mini game development is almost certainly easier to cleanup your listeners
If you're taming user chat input etc its not a great idea to clean them up as they'll likely be used often
Reflection is fast comparatively to what it used to be but having it done all the time probably isn't great
I mean I'll be putting registeredlisteners directly into the handlerlist
So no reflection there
It's just sm more work to write a system to have only one listener per priority as needed and then pass the event to my consumers
But also easier to unregister them this way
too bad the way spigot (and paper) use it for events isn't the way that actually takes advantage of it :')
Ugh now I'm on like 2 layers of side quest for my project
Can you explain btw?
Just for knowledge purposes
You mean methodhandles?
hotspot will inline method calls if the Method/MethodHandle is a constant (static final or resolved from the constant pool), it makes it "trusted" as it cannot be changed to another Method instance, therefore it can inline the call, but the way spigot does it is just a regular field so hotspot can't do that
Ofcourse ofcourse who would've guessed
Hey how can I make a transformation that just rotates 90 degrees, itsso complex
Show how you use that
Actually wait why are you setting the offset to the location
what offset
idk what do i pass in instead
ok ill try it now
aights it not doing anything now
its staying unrotated
but not dissapearing
im was testing the website olivio send you, im just curious can you switch:
this line:
new AxisAngle4f(0, 1, 0, (float) Math.toRadians(degrees)),
to:
new AxisAngle4f(0, (float) Math.toRadians(degrees), 0, 1),
Aye ill try it
Still nothing happens
Ah kk, was just curious about that
mannnnn how can i rotate dis ruh
What do you try to rotate?
itemdisplay
algebra ๐ป
Show us how you're using the transform
Yeez i screamed after reading algebra
rotate an itemdisplay
yes, but what exactly
you need to tell us EXACTLY what you are doing so we can answer. rotating is simple, but HOW/WHY you want to rotate is what we need to hear
Idk if im stupid but a ItemDisplay is a entity so setRotation would work if you "just" want to rotate it, or not?
ok so the itemdisplay spawns when the player runs a command and the itemdisplay must face the player
can i just do that
Try it?
so just set it the directyion between them
both locations to Vector, subtract one from the other and normalize
nah it has to be facing north east west or south
im stuck at "moonrise" idk my head plays several movies in my head like minions and steal the moon
not directly in the players eyes
you didn;t say that
I feel your comment, ew but it works
deadline's tomorrow I can't ask for much
ah found the error
much better
what can go wrong
Ah your reference was like first: zombie.entityId but it needed entity.entityId?
yeah @fair rock that worked idk why they told me to use a transformation
Because your description of your problem could be better
I'm trying to intercept entities async so I can sync their movements
because running stuff on a timer results in nasty desyncs
lol how
what can i put in plugin.yml so my plugin loads last?
console isn't exploding anymore I think this works
why do u need that
its a minigame, some people's depends need to be loaded before the minigame
LoadBefore:
you don't
No
You could use the event
add dependencies you need
declaration: package: org.bukkit.event.server, class: ServerLoadEvent
you can not use an event if your plugin is not enabled
You can listen on that event and load everything there instead in onEnable
instead of abusing events and attempting to load first
just add listener in onEnable
actually use the dependency system
kk, no worries. load-before works well
I didnt saw that message
I was like loading plugin after all plugins every time xD
ItemStack itemStack = new ItemStack(Material.DIAMOND_SWORD);
ItemUtils.setItemMeta(itemStack, meta -> {
meta.setDisplayName("name");
meta.addItemFlags(ItemFlag.values());
});
player.getInventory().addItem(itemStack);
How do I hide attributes on 1.21.1?
how to make the name above player's head display differently to different players and custom? I suppose nms but where do I start
anyone know how to make minecraft finding a safe spawn location in a world async?
Dont think u can do that async
you can get chunks async now so why not?
get a chunk snapshot and use it async
i think your using paper
do i have to use the command
Take snapshots of chunks and check them on different threads
You can do this concurrently and destroy all threads as soon as one is found
stores the setSpawn thingy in paper
You have to load the chunks syncrhonously in spigot
But the searching can be done concurrently
any example plugin?
Erm no my friend this is one of those figure it out things where you test yourself to improve your skill
wait in chunKGenerator there is a canSpawn method, is this useful?
@Override
public boolean canSpawn(@NotNull World world, int x, int z) {
}
I want to see how minecraft does it
but I cant find it in papers source code
it would be in the chunkgenerator class of the overworld but idk where that is
how to make the name above player's head display differently to different players and custom? I suppose nms but where do I start
0 nms experience btw
try display entites
start by googling it
p much just update the profile n respawn the player
if you want diff players to have diff names you need to do some funky packet interception
What the actual hell did you just say
Hi could anyone help me fill this command in from the coin plugin?
/coin drop <x,y,z,world>
I did
3 cords and world name?
๐ค it's actually one coordinate with four dimensions
No actually
"one of a pair of numbers and/or letters that show the exact position of a point on a map or graph"
One of
Well this is referring to a 2d map but my point still stands
I mean emily isnโt wrong, world name is just some linearly independent data on top of the three coordinates already
what about time
I mean you can probably find a homomorphism between the two
How to update the skin for NMS version 1.20.6
I can install the skin but it appears only after I reboot to the server and not dynamically?
private void reloadPlayer(@NotNull ServerPlayer serverPlayer) {
serverPlayer.connection.send(new ClientboundPlayerInfoRemovePacket(List.of(serverPlayer.getUUID())));
Bukkit.getScheduler().runTaskLater(Anarchy.get(), () -> {
serverPlayer.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER, serverPlayer));
serverPlayer.connection.send(new ClientboundPlayerInfoUpdatePacket(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LISTED, serverPlayer));
serverPlayer.teleportTo(serverPlayer.getX(), serverPlayer.getY(), serverPlayer.getZ());
}, 60L);
}
Hi everyone, can someone help me with this?
this makes an helix but just vertically, i wanna make it to spawn where player faces but i suck at maths so if anyone can explain to me how to do it (not givin me da answer but explaining) it would be fantastic :D
for (double angle = 0; angle <= Math.PI * 10; angle += 0.35) {
double x1 = radius * Math.cos(angle);
double z1 = radius * Math.sin(angle);
double x2 = radius * Math.cos(angle + 0.05);
double z2 = radius * Math.sin(angle + 0.05);
double y = (angle / (2 * Math.PI)) * ySeparation;
Location tempLoc1 = loc.clone().add(x1, y, z1);
Location tempLoc2 = loc.clone().add(x2, y, z2);
final Location particleLocation1 = tempLoc1.clone();
final Location particleLocation2 = tempLoc2.clone();
new BukkitRunnable() {
public void run() {
player.getWorld().spawnParticle(Particle.FLAME, particleLocation1, 0);
player.getWorld().spawnParticle(Particle.FLAME, particleLocation2, 0);
}
}.runTaskLater(Main.getInstancia(), delay);
delay += 1;
}
btw, double radius = .625; double ySeparation = .625;
you'll want an anchor point and an axis through it to rotate your locations around
dont ask me for the specific math behind it, did it once and forgor in the decade since
though i think bukkit does have some helper classes for it
@quaint mantle
actually i think you dont need an anchor point if you just want to rotate the entire structure
the rotation axis would serve as one
โ ๏ธ
?
ok
@quaint mantle I don't get itClick to apply
@quaint mantle I just spent half a day on this to solve this problem, tried many variants of packages and it does not work and even the slightest hint is not why
All I know is that on the client side, the skin doesn't update for some reason until I teleport to another world or log back into the server
And I'm already burning a little bit
ok
and?
wait to someone to answer
i don't know
if i knew i would answer
english only
Well, I didn't write to you directly and ask you, I don't know why such aggressio ๐
you are literally pinging me
twice
To answer you, so that you can understand that this is about you, where have I been pinging you since the beginning?
.
.
The screenshot is not sent to me
This is my answer to you
3 times
i don't care
now you pinged me
dont ping
stop arguing
close the chat if you dont want to answer, you arent obligated
well u got a point
Can you explain what to you try and your problem a bit more because im confused reading your question tbh
I set a skin for a player, but I don't know how to change the display of the skin for the player and players, because the update is performed either when I teleport to another world or when I re-enter the server or when I die, then the skin is updated
I believe the solution is "respawn the player" but it may be outdated
Packets or use hidePlayer showPlayer
I can't hide myself from myself, it doesn't work that way
ะฆะต ัะบ ?
Please use English
And I do not know how
Respawn yourself
Then the player will lose his items or am I missing something?
Yes and No, the client thinks he lost his item, you have to sync it back
The default method is not only kill ?
What do you mean, โI don't know an example?
I tried it, but the revive button doesn't work, I had to log out of the server -_-
serverPlayer.connection.send(new ClientboundPlayerCombatKillPacket(serverPlayer.getId(), net.minecraft.network.chat.Component.empty()));
why not just check how SkinRestorer does it
Because he uses ProtocoLib, you think I didn't think of it sooner? ))
First of, thats a legit answer, dont act like that.
You can "copy" how he has done it with ProtocolLib to make it yourself without
they do not use protocollib for this
you actually have to send quite a bunch to do it properly it seems
The refresh method is only nms based for checking version and using the right classes and not ProtocolLib
3 years old, you have to fix some packets but its working
I tried to respawn, but it respawns somehow crooked and a loading window appears like when you zap to the server says Loading...
final CommonPlayerSpawnInfo commonPlayerSpawnInfo = new CommonPlayerSpawnInfo(
serverPlayer.level().dimensionTypeRegistration(),
serverPlayer.level().dimension(),
serverPlayer.level().getWorld().getSeed(),
serverPlayer.gameMode.getPreviousGameModeForPlayer(),
serverPlayer.gameMode.getPreviousGameModeForPlayer(),
serverPlayer.level().isDebug(),
true,
serverPlayer.getLastDeathLocation(),
serverPlayer.getPortalCooldown()
);
serverPlayer.connection.send(new ClientboundRespawnPacket(commonPlayerSpawnInfo, ClientboundRespawnPacket.KEEP_ENTITY_DATA));
Which version are you currently? I testet in 1.21
serverPlayer.connection.sendPacket(new ClientboundRespawnPacket(
new CommonPlayerSpawnInfo(
serverLevel.dimensionTypeRegistration(),
serverPlayer.getRespawnDimension(),
serverLevel.getSeed(),
serverPlayer.gameMode.getGameModeForPlayer(),
serverPlayer.gameMode.getPreviousGameModeForPlayer(),
false,
false,
serverPlayer.getLastDeathLocation(),
0)
, ClientboundRespawnPacket.KEEP_ALL_DATA));
Thats working for me without problem in 1.21
this essentially does the same thing as SkinRestorer (however it is much more clear since you don't have to look at all the cross-version support noise), only thing they didn't do is resend the op level/permission level
And the open enderchest and closing can be replaced with player#updateInventory() xd In 1.21 the opening enderchest didnt updated the inventory
1.20.6
Try the code above you would be interesting if you get the same result with loading world
and since they're using internals anyway, they could call ServerPlayer#onUpdateAbilities and ServerPlayer#resetSentInfo (resets health and xp) instead for a few of these, but it's the same either way
Ok
I copy pasted your code, its working for me in 1.21 so its interesting xd
it is most likely the kept data field
But both working for me thats why im curious ๐
Yes Yes
I don't really understand why.
Bukkit.getScheduler().runTaskLater(Main.main, new Runnable() {public void run() {
player.getInventory().setHeldItemSlot(slot);
player.addPotionEffects(effects);
player.setExp(player.getExp());
player.setHealth(player.getHealth()-0.0001);
player.openInventory(player.getEnderChest());
player.closeInventory();
}}, 2);
yikes old school lambdas and the main class being called Main
Idk i copy pasted it just to try if it works
I would say the dude didnt wanted to sync all the stuff by himself with packets
xd
() -> {} love it
Main.main
eh, it's just code style. It does make my eyes bleed a little but I've seen worse
if() {
if() {
if() {
if() {
if() {
if() {
if() {
if() {
}
}
}
}
}
}
}
}
yeetr
the lack of a space before the parenthesis hurts me more
you mean if () { instead of if() {? (im not good with english thats why i had to google what the hell parenthesis is)
Real question now:
if () return true;
or
if () {
return true;
}
bottom
I usually do:
if (condition)
return true;
switch
thats gonna hurt if you wanna add something else in there anyways
go back to haskell
but if you are sure its gonna stay at return ,its fine ig
I thought emily said switch as joke for another reason ๐
trollface
It's cool, in principle, you can do the rest to +- normally and quickly
private void updateSkin(ServerPlayer serverPlayer) {
serverPlayer.connection.send(new ClientboundPlayerInfoRemovePacket(List.of(serverPlayer.getUUID())));
serverPlayer.connection.send(ClientboundPlayerInfoUpdatePacket.createSinglePlayerInitializing(serverPlayer, false));
final Player player = serverPlayer.getBukkitEntity();
Bukkit.getScheduler().runTaskLater(Anarchy.get(), () -> {
player.teleport(Bukkit.getWorld("spawn").getSpawnLocation());
player.teleport(Bukkit.getWorld("world").getSpawnLocation());
}, 1L);
I tested it and it works fine
doesn't it send you to configuration phase tho
I thought that was what we were trying to avoid
besides that may generate chunks, no?
not ideal but ยฏ_(ใ)_/ยฏ
Now im hurting you all in purpose
public boolean isEven(int number) {
return switch (number) {
case 1 -> return false;
case 2 -> return true;
case 3 -> return false;
case 4 -> return true;
case 5 -> return false;
...
}
}
at least you used a switch expression
that doesn't compile ๐ค
you don't have to return on the case tho
I messed up writing a messed up method
fair
Thanks to you, I solved the problem, I can say I found a new way to understand the essence
by the way, you can try it with a teleport type package
Ah fair, i forgot that i put a return in front of switch
ouch, i dont needed a return in case
So basically
My plugin ran normally for a while and now started throwing NPEs, command runtime errors, and cant pass event checks. Any clue?
That was what happened the first time
But I dont think anyone did that the second
Nvm
Someone did ๐
Thx
break their fingers
Real
Is replacing their server jar in a running server a thing every plugin dev has to go through
it generally only happens a few times when you start learnign to dev
Yeah
But like
Everyone done that at least once
Right
yep
yes
create an update folder and put the new jar there
teh server wil auto update it at startup
I believe the jar name needs to match
pretty sure it also works by teh plugin name now
as well as jar name
rings a bell
Update folder?
But yea, jar names have to match
Like identical?
me putting the commit ref number in the jar name
No versions in brackets?
yes
I thought only the plugin.yml name had to match though, the more you know
What exactly happens when I put the plugin into an update folder?
Same
What happens to the jar in the update folder
next server start it gets copied into the plugins folder
a ?tas moment
Does it have to necessarily be called "update"
Im not on pc
Welllll
Pls dont bite
?tas
on a popular server fork, the plugin name in plugin.yml is enough
๐ค โ๏ธ
Lynx
coll
Start runnin boi
:(
it shouldn't even be that hard
We had a patch for the old spigot plugin loader
but given we ripped out all of spigot plugin loading these days
ยฏ_(ใ)_/ยฏ
but I assume the update process is done way earlier, before the plugin.yml in plugins get parsed
Yea, far earlier
Which, tbf, is fine, you can still do it. Just need to do some doubled work
there's nothing that stops one from reading the plugin.yml earlier and just keeping the file streams open till plugin loading is necessary
not like it is gonna take a lot of resources to keep them open
Well you can make a PR :p
unless you are on a shitty bsd system with a low file count
I could but I don't use spigot 
nor paper for the matter, I just hang around in the minecraft communities
He's a spy!
Whats a pr
pull request
recommend any good gui api
lol
It's up to date!
we did
maybe someone named @river oracle would make a new pr and update it
You know how some mods allow to close gui without packets? Is there a way to detect that?
If no packet is sent, no
What if its being used for duping?
Not exactly my clip because my friend needs help
If its a client mod thats closing the inventory and not sending a packet, there is no way for the server to detect that
Do you think I can do anything based off the clip?
no
All you can do is check if the inventory click event relates to the currently open view
If the client is not notifying of any close then the server can;t tell
creative mode ๐
Their server got duped on soo they are pretty sure it works in survival no op
Recreate in survival
This is the wonderful part of using inventories for GUIs and Mojang not allowing us to create custom UIs 
creative mode should just straight up be deleted from the dedicated server
can't wait to patch that into spigot
Who even needs creative mode
Who even needs survival mode?
That shit's just Minecraft with extra steps
Why isn't the whole game just adventure mode?
Nah just spectate
Watching the lovely Parrots
While my friend takes a video of that in survival
I had my own solution to it
Adding an nbt tag to it when its inside the inventory
why are there base java classes that inherit from multiple classes?
the plugin loader needs to be updated a tad for bootstrapping I'll get to it when I get to it
read the convo
im not talking about bootstrapping
theres an existing pr doing it
"a tad" :copium:

we need a whip emote

well the plugin loader is a bit of a mess already considering it allows circular dependencies
literally though ๐
Wonder how many plugins would break by dissallowing circular dependencies ๐
atleast 60
paper deprecates paper-plugin.yml when?!
paper-plugin.yml is unequivacly based, probably, idk haven't looked at it
You can create yml in build files now right?
but I assume its great!
i know you can in gradle
no clue about maven
with gradle maybe
yea with gradle
probably not maven I doubt theirs a plugin for maven
I love Maven but gradle has the cool stuff
if I used maven I honestly would rather write my file in YML kekw
A Gradle plugin that generates plugin.yml for Bukkit/Paper/BungeeCord/Nukkit plugins based on the Gradle project - Minecrell/plugin-yml
Miles is just a closeted paper feature enjoyer
I don't have thoughts on his work that just brings features paper has had for years to a dead project
How can I enjoy the features for which I have never used!

I am a pure spigot user I do not dabble in the dark arts
Tbh components are better
and like &l instead of <bold>
legacy is actually readable
It makes readability better
ยงxยง0ยง0ยงFยงFยงEยง0mยงxยง0ยงDยงFยง1ยงEยง2eยงxยง1ยงAยงEยง3ยงEยง3oยงxยง2ยง7ยงDยง5ยงEยง5w ยงxยง4ยง1ยงBยง8ยงEยง9mยงxยง4ยงEยงAยงAยงEยงAeยงxยง5ยงBยง9ยงCยงEยงCoยงxยง6ยง8ยง8ยงEยงEยงEw ยงxยง8ยง3ยง7ยง1ยงFยง1mยงxยง9ยง0ยง6ยง3ยงFยง3eยงxยง9ยงDยง5ยง5ยงFยง5oยงxยงAยงAยง4ยง7ยงFยง6w ยงxยงCยง4ยง2ยงBยงFยงAmยงxยงDยง1ยง1ยงCยงFยงCeยงxยงDยงEยง0ยงEยงFยงDoยงxยงEยงBยง0ยง0ยงFยงFw
That shi is not readable
it's perfectly readable
god that's way more readable than color:0FFE00
No its not
yeah it is are you dense??
idk
bro hasn't been outside his "walled" garden
I like using string templates with components
You can't extend multiple classes, but you can implement multiple interfaces, which is probably what you're referring to. Nothing wrong with that
It's part of composition
Real, cool kids like us know that anything remotely XML like is unreadable garbage
yep that's why we use minedown
obviously
minimessage format is garbo
@worldly ingot so you're making us a mini message parser next right???
finally rust in spigot
i just do MM.string for mini messages
That was unironically the plan. Just sucks that my job is made more difficult by MM being directly part of Paper now instead of its own repo
Gotta start from scratch
What
maybe imrpove Bungeechat then smh smh then adventure will add an adapter /s
MM isn't in paper, it's just shaded in
How did components come into play anyways?
The repository is dead, no?
It moved to adventure itself
It's part of Adventure now
Not paper
Yeah
minimessage ๐
Whats wrong with mini message?
Yea so like, fork and off ya go lol. Adventure licence is MIT
I would have made and maintained a BungeeChat module if it were still in its own repo
Dark red
Now it's pretty tightly knit into Adventure
MiniChoco
Message
ChocolateyMessage
java can
Don't worry guys PineappleChat to the rescue
its definitely not my first ever parser and its definitely not scuffed
I see only one extends
and its definitely as capable as minimessage
SneakyChat
oh its in the generics
Yes
i got baited
@eternal night You guys are late on your payment this month hurry up or I'll start patching CabernetMC
carbonaramc
ConstipationMC is none of my concer
Will be soon bucko I'm about to monpolize Inventory PRs
I willl also monopolize uhm taco related PRs
Btw, on a scale of smart to not smart, where do you put naming something ViewBuilder
What view miles, what view are we building
Probably closer to Not smart
I should rename it to MenuBuilder for maximum inconsitency
honestly might PR rename InventoryView to Menu and then ofc we just do some Commadore and patch it all up
๐ช god commadore is great time to break some more things
I'll rename it to InventoryViewBuilder ig
I just didn't feel like typing all that out
like that's a lot to ask of me you know
Yea but given no sane human will ever actually store it, it can be a bit more verbose
Especially with a name as generic as View
๐ nah homie
we need more standards

InventoryViewProviderConstructorBuilder
My standards are below-ground for this server
I haven't tested any of that PR yet, I hope it actually works when I feel like testing it
more lower!!
Don't test PRs
how about I rename it to PaperSucksHaHaHaDeprecateThisYouSuckersInventoryViewBuilder
That's what reviewers are for
CraftEvil
Go for it
I did wanna see how long we can survive without anyone noticing we haven't pulled spigot
just type some random sentence in chinese characters
Current record iirc is 2 months
dayumm
I need to start adding stuff
I feel like everything I add ends up already being in paper no matter how hard I try though
the feeling of defeat
Hey, we are always looking for more contributors over at he who must not be named
go merge my pr smh
I wouldn't PR unless you sucked my soul out of my boddy
and held me hostage
Was about to say
Y2K_ blushing now
Sounds like a challenge
I'll PR for paper if I get 75% of the company
๐
wait no it probably loses money that's not a great idea
lmfao
How much of spigot do you own rn
I don't need a % of my beloved
Fair
@sullen marlin can i have 10% share for my uh
hey lynx hows the PR look so far
greed
maybe PR before you talk
Beyond that iirc good enough
where's your pinned post
low PR to yap ratio here
hey lynx whens my pr getting merged
I'll poke Kenny again
aint doxxing myself
As a "meh" PR it's kinda there
meh is crazy
Just get a PO box MD don't know where I live he knows wher emy PO box is tho :(
its essential for stuff im doing
Well you know what I mean XD with the whole "it kinda just guesses"
?whereami
This is the spigot discord ebic
trueee
what is this "paper" thing
Ruthless
thats you
i am not a piece of paper
you want to be
AHHH don't put somehting like that in spigot chat
some people here have signed the CLA you know
I HAD TO EXPOSE HIM
I'll die if I click that
nah im good
I'm not really super fond of the internal MenuBuilder being separate, but I didn't really think of a great way to combine the two yet
I thought I survived http based repositories until I used BuildTools ๐ข
Could not transfer artifact org.spigotmc:minecraft-server:pom:1.8.8-SNAPSHOT from/to maven-default-http-blocker (http://0.0.0.0/): Blocked mirror for repositories: [md_5-releases (http://repo.md-5.net/content/repositories/releases/, default, releases+snapshots)] -> [Help 1]
I'll read over it tonight, I have some paper work first but after that I got some spare time
Http 
someone should fix this outdated garbage
1.8.8
1.8.8
1.8.8 is the outdated garbage
Instead of outdated garbage
this is peak irony right here
real
I forgot I'm using 10 years old jar for a moment lmfao
when do I get Head CabernetMC Developer role??
Isn't that your project???
yeah
Click the role button
lynx is it k8s paperwork
Easy fix
or is it taxes
uhm Sorry I think you misunderstood Paper is going to be my Main HQ
gonna take all bug reports etc there
Ah fair, makes sense
papermc work XD
the biggest slap in the face would be stealing their majority market share infront of their own eyes
that's why I'm doing it
๐ช
Facts, single person maintained projects do well
absolutely
cant believe papermc wastes so much paper making a random contributor print 900 pages for something
some would even say hes a machine maker
well I'm a 10x developer so Its pretty much better than having your entire team
plus I'm down 1 owen so its basically 15x development
miles did you forget something
I have one EpicEbic to so its pretty much 12x development
miles who sleeps on ur far left
Most based statement in a while
idk some girl probably
no that would be left, not far left
usually my GF does, but otherwise it'd be owen
or do you social distance while asleep
there you go
you arent down 1 owen
If I ever found paper owen I would ask him what happened to him as a child to end up the way he did
fair
A lot of circular dependencies
thats one way to say hes inbred
Hey wait I don't think I have the jurastiction to be making fun of owen unfortunately
so I should probably apologize
lynx endorses it so its fine
Well, as the proud creator of InventoryView#setTitle I indeed think your comments are questionable
time to slap a good ol @Deprecated on it
DW paper already did
I was young and dumb at the time
I've grown so much in the past
uhm
like 8 months
year

its not copium I've devved for 4 years including the year break I took ๐ช
don't challenge me
what is wrong
T doesnt extend anything btw
just a generic
so enums arent objects?
Does it compile
Class<Enum> is indeed not Class<Object>
it is not a cache issue
it's a your code issue
okay after cache clear class<?> works but that isnt really different from Class

why
because you seem to misunderstand java generics
im making serialization every other serializer uses normal objects but i also have one for enums
so Class<T> was pretty cool
except for enums
so
Enum.class == Class<?>
none of those casts are necessary lol
but Enum != ?
yes but java cries about Enum type not being
?
Enum apperently isnt wildcard
๐
show more code
ok
and made it ?
everything that is wildcard was T before
but enums seem to not be objects
how do you know
Hi, who i can import in gradle NMS ?
?nms pretty sure it has a bit at teh bottom for gradle
repositories {
mavenLocal()
mavenCentral()
maven("https://jitpack.io")
maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/")
maven("https://repo.papermc.io/repository/maven-public/")
}
dependencies {
compileOnly("org.spigotmc
1.12.2-R0.1-SNAPSHOT:remapped-mojang")
}
this not work for me is normally ?
?fork
SpigotMC maintains the Spigot server. If you are using a fork of Spigot (such as Paper, Airplane, Purpur, or other derivative works), you should seek support in the appropriate Discord servers.
?whereami
and IF you are using Spigot run buildtoosl as the link told you
is an int[] also Object[]?
๐ค
can it be cast to that
You can almost definitely cast it to Object, dunno about Object[] tho, that is why you should
?tas
spigotmc
also
welp unused
int[] is not Object[], however Integer[] is
there is no moj maps for 1.12
so for every primitive array a custom serializer?
pretty much
only the import will get me the NMS?
does something else get called without PlayerInteractEvent when stepping on a pressure plate?
ass pressure




