#help-development

1 messages · Page 1344 of 1

mortal vortex
#

TPS != Hz?

#

when you send a packet it goes through Netty, it isnt buffered til the next tick

#

the 20tps 'constraint' (cant think of a better word) is tied to game logic, like entity movements and block updates, which followed scheduled movement, the transport layer (netty) is async and not tick gated.

mortal vortex
#

who tf is vro and why does he have me blocked

#

😭 what

drowsy helm
#

whats your question

#

?img

undone axleBOT
#

Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.

Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org

mortal vortex
#

Not an intelliJ issue, this is an issue with your Extension

drowsy helm
#

which plugin are oyu using

mortal vortex
#

MC Development

#

just redownload

#

no i just realized im somehow running 2024.2-1.8.6 but i also have minecraft 26.2 which is weird

undone axleBOT
buoyant viper
#

smh

winter jungle
#

Is there a specific event being called when ever a block breaks no matter if breaked by the player/explosion/etc..

mortal vortex
#

Not in Spigot.

#

BlockDestroyEvent if Paper

#

In Spgiot, I imagine you need to check: BlockBreakEvent, BlockExplodeEvent, BlockBurnEvent, BlockFadeEvent, RetractEvent

winter jungle
#

Thank you!

buoyant viper
#

?jd-s

undone axleBOT
buoyant viper
mortal vortex
#

Don’t “the fuck” me.

buoyant viper
mortal vortex
#

oh

#

*blushes*

#

// pixiechan wants me???

#

sugoi!!!

buoyant viper
#

Nevermind

mortal vortex
#

bruh what.

#

Am I that much of a turn off

quaint basin
#

verifyItem.getType() != Material.AIR works fine to items right?

#

just does not work fine to blocks

slender elbow
#

for items i'd rather use ItemStack#isEmpty()

quaint basin
#

I know it's not recommended and I'll change it; I just want to know if my plugin is currently broken yk

#

if i need restart or smth

hybrid spoke
slender elbow
#

the method I mentioned is on ItemStack, therefore it only applies to ItemStacks

kindred halo
#

@ashen turtle I need to send you a message but it won't let me or send you a request, and I need urgent help.

ashen turtle
kindred halo
spare anvil
#

whats the best code ide for spigot dev intellij is not working

chrome beacon
#

IntelliJ is by far the best IDE uwu
|| Disclaimer this is personal opinion ||

#

What about it isn't working

spare anvil
#

i downloaded a really old version by accident i think i fixed it now

#

the thing thats not working is importing towny

#

closed intellij to get a newer version so cant remember the error msg tho

chrome beacon
#

oh well if you run in to it again let us know

spare anvil
#

its summit abt class file versions i think

#

possible i did summit wrong in pom.xml file but heres the error

#

java: package com.palmergames.bukkit.towny does not exist

#

this is highlighted in red on the url so maybe this in pom.xml

#
            <groupId>com.palmergames.bukkit.towny</groupId>
            <artifactId>towny</artifactId>
            <version>0.103.0.0</version>
            <scope>provided</scope>
        </dependency>```
#

im new to java if you cant already tell lol

lilac dagger
#

Do you have the repository set up for towny?

spare anvil
#

lemme check

#

i think so

#
            <id>glaremasters repo</id>
            <url>https://repo.glaremasters.me/repository/towny/</url>
        </repository>```
lilac dagger
#

Maybe look for the newest version?

#

Usually wikis have a very old placeholder version

spare anvil
#

mayb

#

lemme check the jitpack thing first but thats a good idea actually

#

quick question

#

surely it would just import an older version of towny?

#

not completely break

#

idk im new to java

#

on the gh releases page the latest version is the same as the one in the wiki

#

i dont think its a version issue

lilac dagger
#

You did show that a package was missing

#

I think if you hover over dependency it tells what's wrong

spare anvil
#

is this what you mean?

#

hangon screenshot wont paste

#

lemme try imgur

chrome beacon
#

?img

undone axleBOT
#

Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.

Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org

spare anvil
#

kay

#

imgurs blocked cos uk gov lmaoo

#

thx for being so patient this must be so annoying lol

lilac dagger
#

You sure the repo contains this thing?

#

Did you reload maven after?

spare anvil
#

no

#

how do you reload maven lmaoo

#

idk what im doing

lilac dagger
#

Click the maven button on the right

#

There's a reload icon in the menu

kind hatch
#

There's a button on the right side

spare anvil
#

oh

#

thanks

#

no didnt work

#

worth saying i switched to jitpack.io for the repo cos its supported on the wiki

#

com.palmergames.bukkit.towny:towny:jar:0.103.0.0 was not found in https://jitpack.io

kind hatch
#

Switch to 0.102.0.13

#

3 recent builds have failed

spare anvil
#

switch towny ver ?

kind hatch
#

Yea

spare anvil
#

kay

kind hatch
#

Unless you absolutely need the latest

spare anvil
#

no i think its fine

#

also lemme change the aretifact id i think i was meant to do that when i switched to jitpack

lilac dagger
#

Not just version

spare anvil
#

omg it might have worked thx so much

lilac dagger
#

The package name also

spare anvil
#

yeah i did tat i think

lilac dagger
#

Jitpack has a different name scheme

spare anvil
#

IT WORKED I THINK

lilac dagger
#

Nice

spare anvil
#

TYSM :))

#

it worked thanks for your time youve been so helpful 🙂

#

succesfull build 🙂

wise fractal
#

Anyone got help with ChestShop

chrome beacon
wise fractal
#

my bad

#

no ones on tho

thorn isle
#

shoo

wise fractal
#

i quit being a dev

chrome beacon
thorn isle
buoyant viper
#

just watched whatever that was in real time

#

LOL

#

?services

undone axleBOT
calm ingot
#

thx

#

didnt see nun in rules

#

so felt it was okay

young knoll
#

Ah yes pictures of jar files

#

Very good proof

calm ingot
#

Well i would attach them but last time I did that ppl tried to say it was theirs and i copied them

quaint basin
#

reduce view-distance will help the server tps?

echo basalt
#

I think you're GCing a bit too often

#

could do w more ram

thorn isle
#

or less allocation pressure

#

a good portion of that 10% of the "unknown native" stuff looks to be zgc related

#

and also a bunch of hidden libc stalls on stuff that looks like it allocates, adding up to another 10% at least, probably more

#

...have you taken an allocation profile yet

slender elbow
#

I feel like Phil in Groundhog Day

chrome beacon
#

Can't read your mind

#

So you'll have to show us the code

lean pumice
worldly ingot
young knoll
plain vessel
#

Has anyone worked with Redis in Minecraft plugins?

#

What's best for two-way communication between a plugin and a website?
Jedis, Lettuce, Redisson?

slender elbow
#

pick your personal poison

umbral ridge
#

EmilyJails

young knoll
#

Lettuce?

#

Like, the plant?

echo basalt
#

I prefer Redisson

sly topaz
#

but lettuce so fancy, so good

slender elbow
#

crispy water

quaint basin
quaint basin
#

I also experience CPU usage spikes to 80% sometimes; I suspect it's when GC is called

quaint basin
#

This server is practically vanilla; therefore, I don't think I can do much either

ivory sleet
thorn isle
#

allocation pressure = how much memory is being allocated / how much memory is being freed

#

increasing your total memory allows the gc to work more efficiently (generally speaking), increasing how fast it is freed

#

optimizing your actual allocations is going to reduce the amount of work the gc needs to do in the first place

#

and to do this you need to take an allocation profile, a heap dump tells you nothing about what is allocating how much

slender elbow
#

i'm just watching a vinyl skip back over and over again

quaint basin
#

i see

quaint basin
#

And I'm going to increase the heap dump size to see if garbage collection is called less frequently

remote swallow
#

allocation profile, free? nahhhhh
more ram, hundreds of dollars? yuhhhhhhh

quaint basin
#

i have 7 servers running

#

in which 5 servers, each with an 8 GB heap dump and every support a maximum of 50 players

sly topaz
#

I wouldn't go that route until ultimately necessary

quaint basin
sly topaz
#

there's probably a lot you can do to optimize your memory usage

quaint basin
#

This is the most premature solution I can do

sly topaz
quaint basin
#

The price of calling will certainly be much higher

#

And I won't know if it will help me since my server is almost vanilla

sly topaz
#

I do feel like you're being outpaced by your server growth, you will need an extra set of hands with more expertise than you sooner or later

#

so I would consider it if I were you

quaint basin
#

The plugins that can probably consume the most RAM on my server are geyser, floodgate, viaversion,viabackwards and grim

#

Waiting for a solution from these free software plugins won't solve it so quickly either

#

So, upgrading will solve this for now, and then I can analyze and learn more calmly later

buoyant viper
#

why would floodgate be consuming a lot of RAM

#

isnt that just a login authentication plugin

thorn isle
#

usage != allocation

#

grim eats up a fair bit of memory for its per-player clientside data like chunks and shit, but a fairly recent pr improved this considerably by making the chunk data make use of fastutil collections for block palettes

#

off the top of my head, it barely has any ongoing allocations, however

ivory sleet
#

pretty insane to think u pmuch need fastutils if u work w primitives n collections n u want it scalable

thorn isle
#

cue the fucking skeleton rotting in a chair meme captioned with "waiting for valhalla" or panama or whatever the codename for the value types project was

#

surely this decade

#

not that i like any of the proposals

#

most of them end up making the type system even more difficult to reason about than it already is

#

i'll honestly stick to fastutil over any of them

ivory sleet
#

yea, tho im not sure how well fastutil complements on the thread safe part regarding colls

#

apart from the standard synchronized wrappers

sly topaz
ivory sleet
#

ig like identity and value types for example

sly topaz
ivory sleet
#

yes and no

#

cuz u have array types also for example

sly topaz
#

if anything null-restricted types is the more pressing matter as far as the type system goes

#

that does get funny when you have to think "is this type null-restricted or not"

ivory sleet
#

serial was already nieched for smaller system, assumption would be they havent really tried to optimize or improve serial by much in comparison to all the other gcs

#

hence g1 is competing w it

sly topaz
#

I just liked it because it was much easier to grasp

ivory sleet
#

yea thats fair

sly topaz
#

I can not follow recent G1 or ZGC changes, let alone others like Shenandoah that I have no clue where it's even useful lol

ivory sleet
#

yea I mean on a very detailed level, dont even think every official java employee knows that, but on a high level its kinda easy to grasp

thorn isle
# sly topaz how so

it depends a bit, but one proposal would have you use e.g. List<!Integer> for non-null, or ?Integer for nullable, and Integer would remain as undefined nullability, same way how List remains a valid but unparameterized type

#

generics are already kind of clunky and thecombinatoric explosion resulting from this would not help

#

this isn't the value types proposal itself iirc, it was something like null-restricted types, which tries to solve the problem of primitive specialization through a different route

#

https://openjdk.org/jeps/401 on the other hand, with the more sensible value types proposal, bundles in undesirable shit like "larval objects" and "safe constructors", which I don't like because, at least from what I understood by reading the proposal, it isn't limited to value types; it will fuck me over in the constructors of all types

#

sometimes premature publication is necessary to get things working the way you need them to

#

https://openjdk.org/jeps/8277163 this one for the actual value types is more reasonable but i still foresee things getting hairy, it's in some sense just a more implicit and invisible null-restricted type

#

it avoids the combinatoric explosion but will definitely take some getting used to if it goes through, and we will probably realize it doesn't work as well as we thought after the fact

thorn isle
#

there are no actually concurrent impls that I know of, they're all just wrappers

#

it's kind of difficult to justify since doing something like the java concurrent hashmap relies on the data being laid out in buckets, and a large portion of the fastutil savings comes from stuff being laid out in parallel arrays instead

#

i did write an actually-concurrent lockfree linear probing fastutil hashmap, but it required an obnoxious amount of twiddling with low-level primitives like compare-and-set through varhandles

wraith spade
#

hey all, so I switched from maven to gradle and all of a sudden my listeners aren't working, i think my command executors are broken too, anyone know why?

slender elbow
#

is the plugin even enabling? what do you see in the server log? and what does your build script look like? and project folders layout

thorn isle
#

i'll venture a guess that either

  • plugin.yml isn't getting packaged in as a resource anymore, so the whole plugin isn't loading at all
  • some command framework or other dependency you're using isn't getting shaded in anymore, so it throws on onEnable
#

post your things

slender elbow
#

or not

#

we shan't find out

quaint basin
#

what's causing the low tps now?

#

now i think is not gc

mortal vortex
#

nonheap

quaint basin
mortal vortex
#

idk

quaint basin
#

I think it's just paper being paper

#

That's because my servers without chunk loading don't have low tps

thorn isle
#

looks to be mostly entities

#

i don't see anything related to chunk loading

#

net.minecraft.world.level.entity.EntityTickList.forEach()46.56%

#

this is ticking entities directly

#

net.minecraft.server.level.ChunkMap.tick()5.32%
net.minecraft.server.level.ChunkMap.newTrackerTick()5.32%

#

this is entity tracking (not chunk loading)

#

i see about ~4% sinking into chunk loading/unloading

#

i don't know what an "island server" is, but if it's something like skyblock, it's much more about the size of the world and the amount of stuff in it than "chunk loading"

#

in a skyblock world, the only things that exist in the world are the things that players create in them

#

in a regular world with regular world gen, you have a high baseline of stuff in the world and then additionally everything players create in it

#

you have about ~100 entities per player, which seems a bit high

mortal vortex
#

is it the mnecarts

thorn isle
#

looks to be just a ton of monsters at the top of the tick times

#

Entity Counts:
creeper: 303
zombie: 273
item: 266
skeleton: 263
chicken: 259
sheep: 222
pig: 199
enderman: 185
falling_block: 180
cow: 110
spider: 80
chest_minecart: 64
strider: 56
wolf: 53
zombified_piglin: 51

#

this is quite a few monsters for 40 players

#

server.properties
bukkit.yml

settings
spawn-limits
    monsters: 70
    animals: 10
    water-animals: 5
    water-ambient: 20
    water-underground-creature: 5
    axolotls: 5
    ambient: 15
#

yeah uh

#

are you running the default settings?

#

you should probably look up an optimization guide or something and set things to the recommended values

#

these numbers are whack

quaint basin
#

purpur dev said I should use docker/ptero to solve this

thorn isle
#

what

#

i'm fairly sure no guide recommends 70 for monsters

#

it's usually like 20

quaint basin
#

let me see

slender elbow
#

docker increase tps 60%

#

absolutely

thorn isle
#

🤡

quaint basin
#

oh

#

nvm

thorn isle
#

i don't remember any optimization guides off the top of my head (you'll have better luck asking in help-server as this is not really a dev issue any longer) but i think there is one on spigot

#

but uh

#

reduce monsters

#

reduce all the numbers

#

reduce spawning range

#

reduce despawning range

#

make sure despawning range isn't less than spawning range

quaint basin
#

And don't you think this has to do with not installing Docker/Ptero to isolate resources ?

thorn isle
quaint basin
#

But I think he's right

thorn isle
#

Does your processor even have P/E cores? It doesn't look like the system is overloaded, either

quaint basin
#

TPS went up to 14 at some points

#

I changed to this:

spawn-limits
monsters: 20
animals: 5
water-animals: 2
water-ambient: 2
water-underground-creature: 3
axolotls: 3
ambient: 1

thorn isle
quaint basin
#

i think i should use docker idk

thorn isle
#

Well docker isn't going to magically solve it either unless you know what to tell it to do

quaint basin
thorn isle
#

He's saying your servers are competing for the perf cores and e.g. the island server is shoving some useless background work like async bukkit tasks onto the perf cores, kicking the resource server's main thread off of them

kind hatch
#

Get a better cpu :kek:

quaint basin
#

When I ask if a particular CPU is good before buying it, people say it's good

#

People only say it's bad after I buy it

#

aaaaaaaaaaaaaaa

thorn isle
#

We're not saying it's bad, just that it's not good enough

#

There is always a better cpu

#

And without optimizing your server, no cpu is going to be enough

slender elbow
#

i mean there also reaches a point where you can't just shove a factions, smp and towny into a single pentium 3

quaint basin
#

What I find strange is that the box servers are fine, but the SMP server isn't

quaint basin
kind hatch
#

Wdym box servers?

quaint basin
#

box servers = island servers

thorn isle
#

Chunk loading isn't your issue

#

What is an island server

kind hatch
#

Well, that's just a given. (Small isolated area = less resource usage regardless)

quaint basin
#

yes

quaint basin
#

And I use software where the world is in RAM instead of on disk

thorn isle
#

Chunk loading isn't your issue on the resource server

slender elbow
#

🥱

thorn isle
#

It accounts for maybe 4% of the load

quaint basin
#

I changed the entities amounts

#

and the problem persists

thorn isle
#

Have you read anything I've said

quaint basin
#

yes

thorn isle
#

So then you should know normal worlds are inherently different from whatever an island world is

kind hatch
#

^

quaint basin
#

a island server suppostly have mobs gen too

kind hatch
#

Different challenges with different setups

thorn isle
#

Normal worlds start with shit already in them

#

Players add to it

kind hatch
#

Depends

thorn isle
#

Read the message above that message

quaint basin
#

my island world suppostly have the same spigot/paper config than smp servers

thorn isle
#

Yeah but 90% of the fucking world isn't there

quaint basin
thorn isle
#

You are begging to get clown emoted

quaint basin
#

But the world has blocks for mobs to spawn

kind hatch
#

all my homies hate imgur
-# My VPN doesn't let me view images from them.

quaint basin
#

A player on the SMP server doesn't load more chunks than a 300x300 world

kind hatch
#

What's managing those worlds though?

quaint basin
#

smp servers = just mining bc is a resource world

kind hatch
#

Question still stands.

#

I can only assume it's some plugin handling those instances.

#

Even if it is, those worlds are not your problem.
Combining all of your 300x300 per person worlds is still going to be less than the 30,000,000x30,000,000 resource world that you have.
Plus the additional management that the plugin likely does (which is only loading those worlds when the player is online anyways)
It's no wonder one is more performant than the other.

It's a different problem altogether

ivory sleet
#

one box server per player?

#

that sounds wasteful

kind hatch
#

I'm assuming it's actually world instance management.
Not actual server instances.

(That would be very expensive and wasteful)
-# But it would be pretty cool

#

A quick fix for SMPs is to just reduce the view-distance down from the default, but it's not ideal for the player experience.

young knoll
#

Imagine every hypixel skyblock instance is a separate server

#

@worldly ingot get on that for maximum performances!!!

thorn isle
#

i'm not sure how it works now with paper and mojang both having implemented the same thing, but you can set the simulation distance to something low like 4, and the view distance to something more reasonable

#

on paper with async chunk loading, the view distance (that is, no-tick view distance as we used to call it, idfk what it is now) is essentially free except for chunk ticket updates, bandwidth, and memory pressure

#

alternatively, you can use a view distance extender plugin; some of them promise to reduce at least chunk ticket updates, maybe memory pressure as well

#

in my experience however all the extenders I've used are fucking 🅱️tarded and actually allocate like 5x more than nms/paper no-tick view distance would

young knoll
#

Pretty sure paper removed their no tick view distance in favour of simulation distance

thorn isle
#

yeah i think it's implemented by mojang now

#

simulation distance is the old view distance

#

view distance is the old no-tick view distance

#

the new names make more sense but it's kind of confusing historically

#

either way, async chunk loading benefits from paper carry over

#

it's "free" except for having to propagate chunk ticket updates farther, and except for the dumb fuck nbt parser allocating 5gb/s ShortArrayTag or whatever the shit when parsing the region file into a chunk

inner mulch
#

guys how do yall save ur minigame maps, with for example also in the case of bedwars locations of spawners and such?

tender shard
#

yaml anchors are great, I wonder why so few people know about them

kind hatch
#

What are they? Pointers?

thorn isle
#

it's one of those parts of the spec that nobody implements properly and every implementation behaves slightly differently

ivory sleet
#

Used to not be widely supported neither

thorn isle
#

e.g. recursive anchors are technically supported by the spec, but most parsers will oom/stackoverflow trying to parse them

#

they are definitely very useful, though

#

it's a shame they don't support back-references

#

i.e. they're forward only

thorn isle
#

e.g. in the above screenshot <<: *base merges all the entries from whatever section was anchored as &base, which is kind of (but not quite) like using that section as defaults

#

if you did foo: *base it'd create a subsection that's a copy of/reference to &base instead

#

so when you do

mySection: &anchor
  foo: bar
  child: *anchor

90% of parsers will naïvely recurse forever and oom/stackoverflow

young knoll
#

Does SnakeYAML handle it

thorn isle
#

i don't remember

#

i think it shits out an error but i don't think it was a stackoverflow

ivory sleet
#

iirc it handles it gracefully

#

or at least it should do if memory serves

thorn isle
#

snakeyaml does support anchors, but not back-referencing (you can't reference anchors that aren't "yet" defined "above" your position), and i remember it breaking on recursion, but that was a long time ago and i could be wrong

#

it should be pretty easy to fix since snakeyaml uses a tree structure internally anyway, so it probably got fixed since

slender elbow
#
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:161)
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:161)
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:161)
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:161)
at org.bukkit.configuration.file.YamlConfiguration.fromNodeTree(YamlConfiguration.java:161)

:q

young knoll
#

Just get a bigger stack

thorn isle
#

a graceful stack overflow

pseudo hazel
#

surely + 1024 stack depth will fix it

quaint basin
#

this is a world per player

quaint basin
rotund ravine
#

The actual TPS as long as ur now loading new chunks / movin fast / loading old chunks. Is only affected by simulation distance and not view distance.

buoyant viper
#

?jd-b

#

?jd-bc

buoyant viper
#

404???

#

thats fuckin awkward, i was gonna read that

#

?jd-bcc

buoyant viper
#

@sullen marlin bungeecord api (not bungee chat) docs dont seem to be web-viewable rn

undone axleBOT
#
CafeBabe Help Menu

**Syntax:
**?customcom Alias:```
?cc

Base command for Custom Commands management.

**__Subcommands:__**

cooldown Set, edit, or view the cooldown for a custom command.
create Create custom commands.
delete Delete a custom command.
edit Edit a custom command.
list List all available custom commands.
raw Get the raw response of a custom command, to get the proper...
search Searches through custom commands, according to the query.
show Shows a custom command's responses and its settings.

sullen marlin
#

?cc edit

undone axleBOT
#
CafeBabe Help Menu

**Syntax:
**```
?customcom edit <command> [text]

Edit a custom command.

Example:

  • ?customcom edit yourcommand Text you want

Arguments:

  • <command> The custom command to edit.
  • <text> The new text to return when executing the command.
sullen marlin
undone axleBOT
#

Custom command successfully edited.

sullen marlin
#

?jd-bc

sullen marlin
#

?jd

undone axleBOT
sullen marlin
#

?cc show jd

undone axleBOT
#
Command: jd
Author: conclube (299969655915806741)
Created: 12/06/2021 00:13:40
Type: Normal
Responses:
- [Spigot](<https://hub.spigotmc.org/javadocs/spigot>)
[BungeeCord](<https://ci.md-5.net/job/BungeeCord/ws/api/target/apidocs/index.html>)
[BungeeCord Chat](<https://javadoc.io/doc/net.md-5/bungeecord-chat/latest/index.html>)
sullen marlin
undone axleBOT
#

Custom command successfully edited.

sullen marlin
#

?jd

undone axleBOT
buoyant viper
#

i lowk forgot why i needed the bungee web docs rip

sullen marlin
mortal vortex
#

?cc show jd

#

:( i cant do it

tender shard
quaint basin
tender shard
quaint basin
#

i alr see ppl running 200 palyers on a single server instance

#

and my server is being dead with 50 players lol

thorn isle
#

depends on the game mode

quaint basin
tender shard
quaint basin
#

but they are using universespigot

#

and they are on i9

tender shard
thorn isle
#

i don't think anyone is running a survival 1.21 server with 200 concurrent players on any existing hardware

#

1.8 maybe

#

skyblock maybe

quaint basin
thorn isle
#

but not modern versions

quaint basin
#

now i need pay more 200$ installation fees

#

if i get another machine

thorn isle
#

well yeah you were beginning then

tender shard
#

we're using Ryzen 9 9950X3D for all our servers and we're at about 15 tps at 150 players per instance (1.21.11 too)

thorn isle
quaint basin
#

no

#

they are on 1.21

#

with 200 players on a single server instance

#

on a smp

thorn isle
#

not survival

#

definitely not

quaint basin
#

i can you send the server ip

thorn isle
#

i'll believe it when I see it

quaint basin
thorn isle
#

and you know it's a single instance how?

quaint basin
thorn isle
#

i still don't believe it; even if they somehow did it, i definitely wouldn't set it as a goal

quaint basin
#

idk if is the universpigot doing miracles

#

prob not lol

#

bc they dont have 1 fucking benchmark on their website

#

maybe just their cpu doing miracles idk

thorn isle
#

interval 10ms
try running a lower-interval report, the default interval of 5/10ms is a bit coarse

quaint basin
#

how can i see the current interval

thorn isle
#

view-distance: 7

#

this is quite high

quaint basin
#

oh is 10ms

quaint basin
young knoll
#

How much of an impact does view distance have on tps though

thorn isle
#

simulation-distance: 4
nevermind i forgot we call it this now

thorn isle
quaint basin
#

i desincreased mob-spawn-range and entity-activation-range

thorn isle
#

but that doesn't seem to be the case here

quaint basin
#

im doing some changes

#

following purpur guide optimization

thorn isle
#

reducing entities definitely helped

#

entity ticking went down from like 50-60% to 38%ish

#

but you added like 20 more players

quaint basin
#

entity-tracking-range:
players: 128
animals: 96
monsters: 96
misc: 96
display: 128
other: 64

#

ill reduce this too

quaint basin
#

on this report?

thorn isle
#

in this one you have 55, in the previous one it was 30-something

quaint basin
#

oh

#

idk what changes i did

thorn isle
#

you might be able to squeeze a bit more out of it by like banning enderman grinders or something

quaint basin
#

i think just on simulation distance

quaint basin
#

i think endermans are important

thorn isle
#

i see a bunch of endermen

quaint basin
#

on mining world

#

oh

#

bc have the _end world

#

too

thorn isle
#

Entity Counts:

falling_block: 486
item: 265
chicken: 225
sheep: 201
pig: 192
skeleton: 144
cow: 142
strider: 128
creeper: 127
chest_minecart: 107
zombie: 97
piglin: 86
zombified_piglin: 78
enderman: 70
rabbit: 60

or i don't know, i see not that many endermen but they take up a lot of tick time relatively speaking, i guess they're just expensive

#

not sure what's up with the 500 falling blocks

tender shard
#

dude just needs a better cpu

quaint basin
#

despawn-ranges: ambient: hard: default soft: default axolotls: hard: default soft: default creature: hard: default soft: default misc: hard: default soft: default monster: hard: default soft: default underground_water_creature: hard: default soft: default water_ambient: hard: default soft: default water_creature: hard: default soft: default

#

idk the default value too let me see

#

i didnt applied some optimizations on purpur guide

#

yea the default value is not on docs

thorn isle
#

just make sure the hard despawn range is greater than the spawning range or else you will be thrashing mob spawning

#

keep in mind that mob spawning range is a square measured in horizontal chunk distance and the despawning range is a sphere

#

so something something square root of two

quaint basin
#

i think they are good

#

i know i didnt applied some purpur configs

#

update-pathfinding-on-block-update
Good starting value: false

Disabling this will result in less pathfinding being done, increasing performance. In some cases this will cause mobs to appear more laggy; They will just passively update their path every 5 ticks (0.25 sec).

quaint basin
#

I wouldn't want to disable it, but if I have to, I will

thorn isle
#

i hardly see any pathfinding calls

#

it's just death by a billion cuts of moveTo and travel and a gazillion collision lookups and other mundane shit

young knoll
#

If you limit mob collisions that will probably help if you have a bunch of enderman farms

quaint basin
#

ppl will not do farms here suppostly

thorn isle
#

i mean, looking at the flat view

net.minecraft.world.entity.Entity.move() 4.35ms
just the hard-collisions with blocks, which are one of the most basic things that needs to be done and you can't just optimize out or defer, is already using 10% of the tick budget

#

cue the fucking napoleon "there is nothing we can do" meme

#

there are around 40 entities per player (what is up with the 500 falling blocks?), you can probably try reducing it further, but you'll start impacting gameplay negatively

#

beyond that you're kind of fucked

#

reducing view-distance might improve the chunk ticking just by virtue of it having to sort down far fewer chunks to find the ticking one

#

i don't know, it probably won't help

young knoll
#

Just remove block collision

#

Who needs it

thorn isle
#

one of those forks that does entity movement asynchronously, supposing one still exists and doesn't just segfault the server, could help

#

i looked into doing it as a mixin at one point but it wasn't really worth all the diff surface with nms

#

and it turned out my hardware's instruction set didn't include a certain bit-fiddly primitive which i would've wanted for doing the collisions through SWAR nonsense

foggy void
#

I'm making a passive ability where if the player is holding a specific item in their offhand, they will get 4 absorption hearts from eating a golden apple instead of just 2, however I am not sure how to do this. Every time I try to, it never works for some reason, I have tried using the absorption potion effect, doing player.setAbsorption(), delaying the absorption to allow minecraft to register it, and much, much more but it never works.

young knoll
#

?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.

quaint basin
#

like sand being broken etc?

thorn isle
#

i don't know

#

there are 500 falling blocks

#

that's all i know

foggy void
#

here


import com.armorability.core.ArmorAbilityCore;
import com.armorability.core.data.AbilityStone;
import org.bukkit.Material;
import org.bukkit.attribute.Attribute;
import org.bukkit.attribute.AttributeInstance;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerItemConsumeEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

public class GappleListener implements Listener {

    private final ArmorAbilityCore plugin;

    public GappleListener(ArmorAbilityCore plugin) {
        this.plugin = plugin;
    }

    @EventHandler
    public void onConsume(PlayerItemConsumeEvent event) {
        if (event.getItem().getType() != Material.GOLDEN_APPLE) {
            return;
        }

        Player player = event.getPlayer();
        ItemStack offHandItem = player.getInventory().getItemInOffHand();

        if (plugin.getAbilityStoneManager().getStoneType(offHandItem) == AbilityStone.BLOOD) {
            
            new BukkitRunnable() {
                @Override
                public void run() {
                    if (!player.isOnline()) return;

                    AttributeInstance maxAbsorption = player.getAttribute(Attribute.MAX_ABSORPTION);

                    if (maxAbsorption != null) {
                        maxAbsorption.setBaseValue(8.0);
                    }

                    player.setAbsorptionAmount(8.0);
                }
            }.runTaskLater(plugin, 3L);
        }
    }
}
rotund ravine
#

?

foggy void
rotund ravine
#

Have you tried debugging everything ensuring each line is running?

foggy void
#

yes

#

the max absorption attribute and the player.setAbsorptionAmount dont seem to be doing anything

#

well they probably are but its probs just being overwritten by the golden apple

rotund ravine
#

What does /version output

foggy void
#

as in?

rotund ravine
#

If you run the command

foggy void
#

on my server?

rotund ravine
#

Yes

foggy void
#

lemme check

#

the server is on 1.21.11

rotund ravine
#

And what else

foggy void
#

[21:40:58 INFO]: This server is running Spigot version 1.21.11-132-ver/1.21.11@c5eb079 (2026-05-11T11:43:09Z) (Implementing API version 1.21.11-R0.1-SNAPSHOT)

#

thats the console message

thorn isle
#

quickly

#

delete it before anyone sees

#

and re-post it with "spigot" in place of paper

ivory sleet
#

lol

thorn isle
#

otherwise they will send you to the gulag (paper discord)

young knoll
#

It’s too late

rotund ravine
#

Didn’t paper do stuff with attributes? (Which is why i asked)

young knoll
#

Bake him away toys

foggy void
#

😭

rotund ravine
#

I’d ask Paper

#

Though, i’d still want to see your debugging and the debug output

foggy void
#

u cant really call it debugging

#

cuz idrk how to debug a server tbh

#

well, a plugin on a server

#

this is kinda my first plugin so like

rotund ravine
#

That works

#

I wanna see that i passes each if statement etc.

foggy void
#

im a lil busy so i cant test rn

#

oh wait ok so its not running

#

cuz I added the System.out.println functions

#

and its not working

#

so yea

#

I think its this line tbh

#
        return;
}```
#

bcuz my code def works

#

I use getStoneType literally everywhere and it works

#

so its definately that line

#

but idk why

thorn isle
#

so what's the type

foggy void
#

idk

#

its supposed to be a golden apple

#

like a normal golden apple

#

so i have no idea why that wouldnt work

thorn isle
#

okay so print the type

remote swallow
#

so above that line add a sys out

thorn isle
#

and see what the type is, if it isn't a golden apple

#

i have a fair idea of what the issue is already, but in the interest of teaching you how to solve your own problems, try the sysout

foggy void
#

ok

#

wait ok im kinda stupid cuz apparently system.out.println doesnt work on server consoles or something idk

thorn isle
#

is your plugin even enabling

foggy void
#

yes it is

#

cuz all the abilities are working

#

ok wait no something is very wrong

#

either the listener is just not running at all

#

or something is wrong 😭

#

bcuz i did event.getPlayer().sendMessage(event.getItem().getType().toString());

remote swallow
#

did you re-build, make sure to copy the new jar and restart your server?

foggy void
#

yes

#

I did

#

wait I think i know the probleem

#

ok no

#

its just not running

#

the listener

#

because I ate a steak instead of a golden apple to verify

#

and it didnt say anything

young knoll
#

Did you register it

foggy void
#

OH MY FLIPPING GOSH I FORGOT TO REGISTER IT

#

im such an idiot 😭

#

im actually such an idiot oh my gosh

#

yea its working now

foggy void
stuck tendon
#

Hello, is PlayerInteractEntityEvent working on spigot 26.1?

chrome beacon
#

It should be

stuck tendon
#

Weird, tried to use it but didnt seem to be working, i'll try again without other plugins

chrome beacon
#

Do make sure you're actually running Spigot as well

stuck tendon
#

Definitely

rotund ravine
stuck tendon
rotund ravine
stuck tendon
#

umm, i'll try again in some hours

young knoll
#

PlayerInteractEntityEvent is a seperate event

umbral ridge
#

JishunaEntityEvent

#

@Experimental

quaint basin
chrome beacon
quaint basin
chrome beacon
quaint basin
chrome beacon
#

Then just ignore that

#

It's usually caused by a bunch of client mods

#

If you really want to fix it paper has a flag to disable that check

stuck tendon
onyx fjord
#

is there some refresh variant of Player#sendBlockChange?

#

to update with the real block data ^

echo basalt
#

you can just send the block's data

#

sendBlockChange(loc, loc.getBlock().getBlockData())

quaint basin
#

how many servers u can run on AMD EPYC 4464P?

quaint basin
#

[19:23:56 ERROR]: Error executing task on Server
java.lang.IllegalStateException: Thread failed main thread check: Accessing poi chunk off-main, cont
ext=thread=Paper Common Worker #0, world=resources_world, chunk_pos=[2555, -5167]
at ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(TickThread.java:65) ~[pap
er-1.21.11.jar:1.21.11-131-6d5b910]
at net.minecraft.world.entity.ai.village.poi.PoiManager.getOrLoad(PoiManager.java:89) ~[pape
r-1.21.11.jar:1.21.11-131-6d5b910]
at net.minecraft.world.entity.ai.village.poi.PoiManager.exists(PoiManager.java:338) ~[paper-
1.21.11.jar:1.21.11-131-6d5b910]
at net.minecraft.server.level.ServerLevel.lambda$updatePOIOnBlockStateChange$18(ServerLevel.
java:2325) ~[paper-1.21.11.jar:1.21.11-131-6d5b910]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[paper-1.21.11.jar:1.21.11-131-6d5b9
10]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:177) ~[pap
er-1.21.11.jar:1.21.11-131-6d5b910]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLo
op.java:24) ~[paper-1.21.11.jar:1.21.11-131-6d5b910]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1525) ~[paper-1.21.11
.jar:1.21.11-131-6d5b910]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:188) ~[paper-1.21.11.
jar:1.21.11-131-6d5b910]
at net.minecraft.util.thread.BlockableEventLoop.execute(BlockableEventLoop.java:123) ~[paper
-1.21.11.jar:1.21.11-131-6d5b910]

#

wtf is this? this happened on server disabling

ornate haven
#

free custom mods/plugins service. DM me if you intrested

chrome beacon
#

?services

undone axleBOT
supple elk
#

I can give them a compass which can open a kit menu

paper viper
#

hm yes?

supple elk
#

this is an example of a child class

sharp hawk
#

Can anyone help with NMS?

I am trying to create an enchantment that spawns a chicken. This chicken will then chase a hostile mob and explode similar to a creeper.

I have the enchantment setup and it works perfectly, but my custom chicken entity called Cockatrice targets the hostile entities correctly, but doesn't chase them correctly.
I am using PathfinderGoalNearestAttackableTarget to select the target, but this doesn't make the Cockatrice follow the targe. I tried using PathfinderGoalFollowEntity as a goalSelector, which actually worked quite well, it would follow entities very well, but wouldn't always follow the targeted entity (E.g targets a zombie -> follows a skeleton).

I want to make the chickens explode when they are within a few blocks of their target, but because of the whole following the wrong entity it won't work.

I have tried all current PathfinderGoal's I could see but none have worked, the best ones are the FollowEntity goal and the MeleeAttack one (crashes server when used with chicken).

Any advice would be great!

ivory sleet
#

Jet did you just want to initialize a value ?

supple elk
#

yeah

ivory sleet
#

Then you could use a supplying function instead

#

Like

ivory sleet
#

abstract class Upper {
final X x;
{
x = x();
}
abstract X x();
}
class Lower extends Upper {
X x() { return new X(); }
}

#

@supple elk

supple elk
#

uhhh

paper viper
#

just basically overidding

paper viper
#

stoopid

sleek pond
#

Bru

supple elk
#

ok but this means that I have to have the field in my parent class

#

In the example I posted earlier, the compass is an InteractableItem (wrapper of Item)

#

I don't want to store an InteractableItem field inside the parent class

#

and what if in one class I need to give people multiple items?

ivory sleet
#

That was an example I’m not at home rn but maybe us an array or define a list ?

ashen verge
#

Does anyone know of a RP friendly "make money" plugin. Having Salaries?

supple elk
#

Ideally I'd be able to define this stuff statically, however to define my item statically I need to define a GUI statically, but the GUI needs a manager which is passed in as a dependency which I can't really get statically?

cinder thistle
ivory sleet
#

lol yeah

supple elk
ivory sleet
#

👀

cinder thistle
#

wha

cinder thistle
#

^

sour rampart
#

wtf is this:

Could not pass event PlayerDeathEvent to DeathMessages v1.0
org.bukkit.event.EventException: null

cinder thistle
#

yeah we need the full error

#

and the relevant code

#
        if(!plugin.getConfig().getBoolean("Lockdown_enabled")) {
            plugin.getConfig().set("lockdown_enabled", true);
#

case sensitive

sour rampart
#

full error:

Could not pass event PlayerDeathEvent to DeathMessages v1.0
org.bukkit.event.EventException: null
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:319) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:589) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:576) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory.callPlayerDeathEvent(CraftEventFactory.java:780) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.EntityPlayer.die(EntityPlayer.java:566) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.EntityLiving.damageEntity(EntityLiving.java:1241) ~[server.jar:2991-Spigot-018b9a0-f3f3094]

#

at net.minecraft.server.v1_16_R3.EntityHuman.damageEntity(EntityHuman.java:745) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.EntityPlayer.damageEntity(EntityPlayer.java:719) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.EntityLiving.killEntity(EntityLiving.java:194) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.CommandKill.a(SourceFile:32) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.CommandKill.b(SourceFile:22) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:262) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at com.mojang.brigadier.CommandDispatcher.execute(CommandDispatcher.java:176) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.CommandDispatcher.a(CommandDispatcher.java:182) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at org.bukkit.craftbukkit.v1_16_R3.command.VanillaCommandWrapper.execute(VanillaCommandWrapper.java:45) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:763) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:1788) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1631) ~[server.jar:2991-Spigot-018b9a0-f3f3094]

cinder thistle
#

thaaaat's weird

sour rampart
#

at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1584) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(SourceFile:144) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(SourceFile:118) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:942) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:935) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:919) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:851) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[server.jar:2991-Spigot-018b9a0-f3f3094]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_271]

cinder thistle
#

oh ?paste

#

?paste

queen dragonBOT
sour rampart
cinder thistle
#

at com.mounterisastudios.deathmessages.listeners.ListenerJoin.onDeath(ListenerJoin.java:28) ~[?:?]

#

what's on line 28

sour rampart
#

event.setDeathMessage(attacker.getDisplayName());

#

line 28

cinder thistle
#

^

sour rampart
#

oooooooooooh

#

oof

#

how do you say if it is a zombie then?

cinder thistle
#

I would get the entity's type and then have a good ol switch statement

sour rampart
#

k thx

cinder thistle
#

isn't java c-based

#

The syntax of Java is largely influenced by C++ and C. Unlike C++, which combines the syntax for structured, generic, and object-oriented programming, Java was built almost exclusively as an object-oriented language. ... Java reuses some popular aspects of C++ (such as the printf method).

paper viper
#

it is

cinder thistle
#

thought so

paper viper
#

in fact, have you heard about JNI

cinder thistle
#

never

#

oh interesting

paper viper
#

it is able to run native code

cinder thistle
#

oh I've heard of this

paper viper
#

like C/C++

cinder thistle
#

never heard JNI before tho

paper viper
#

by using the built in native keyword

#

that is in java

#

some things in Java can't be done in Java like the fundamental fundamental stuff

#

that is done by stuff like C and C++

cinder thistle
#

native is poggers when you need it

sour rampart
#

is it posibble to have:

getConfig().getString("stuff").replace("<Player>", "bluh bluh bluh").replace("<OtherPlayer>", "bluuuuh");

paper viper
#

wat?

sour rampart
#

my code:

event.setDeathMessage(Utils.chat(plugin.getConfig().getString("death").replace("<Player>", victim.getName()).replace("<Killer>", attacker.getName())));

#

a .replace on a .replace

#

replace().replace()

paper viper
#

that code doesn't make any sense at all

ripe coyote
#

the replace method defined in the string class returns a String that you could then call replace on again, yes. Regarding your specific code I agree ^

jovial abyss
#

yes you can have multiple replaces

eternal oxide
#

Yes multiple replace works fine, but if there is no config entry it will error with an npe

drifting halo
rotund ravine
#

Dirty

supple elk
rotund ravine
#

You got wet tho

paper viper
#

lol

supple elk
#

wot

#

I was just calling him out. Only a horny person would misread like that all I'm saying

dusty herald
rotund ravine
#

Just tag @humble stirrup if someone is horny and let him interact with her.

rotund ravine
#

😋

jovial abyss
#

@fervent robin you have to use § instead of & or ChatColor.translateAlternateColorCodes('&', text);

shrewd marsh
#

Random design question not sure if this is the best place to ask, but how expensive is a sql call? If I have an economy plugin with a database that tracks player currency, should I be updating the DB on every transaction? On player log out? Does it matter?

cinder thistle
#

I would update it periodically on a seperate thread

#

queue updates

humble stirrup
#

more thirsty teens looking for an Actual Real-Life Girl™️ to simp over?

rotund ravine
#

Yeah, someone was horny.

humble stirrup
#

epic

rotund ravine
#

You should request money from the thirsty teens

humble stirrup
#

i could pull a belle delphine

#

jump in the bath, dye my hair pink and sell some bathwater

#

profit :D

rotund ravine
#

Nah, i've seen some of the latest stuff, she does hardcore porn shit now.

humble stirrup
#

yeesh

#

yeah no thank you

supple elk
#

lmao

stark linden
#

Anyone here familiar with EulerAngels and knows how to translate an Movement from an json file to Euler Angels tried different formulars but non is working (Sorry for my trash english)

cinder thistle
#

angels or angles

stark linden
#

Angles

#

Not angels

#

Auto Correct is kicking in

cinder thistle
#

Any ideas?

open vapor
#

How do I transfer every single property of one entity to another

cinder thistle
#

manually

open vapor
#

(execpt uuid of course)

rotund ravine
#

Which kind of property?

open vapor
#

all of them

sage swift
#

sadly

cinder thistle
#

don't think you can clone entities

open vapor
#

oh

cinder thistle
#

ooh an HK fan

open vapor
#

what about nbt

cinder thistle
#

probably manually as well

open vapor
#

can you directly get and set the nbt of an entity?

candid galleon
#

yes

#

not sure why you wouldn’t use the api tho

open vapor
#

if i want it to work with every kind of entity

#

then there would be thousands of properties to manually set?

#

or am i missing something

cold tusk
#

How to change the Y of a player without changing the others(X, Z, Yaw, Pitch)?

eternal oxide
#

location.add

open vapor
#

location.setY

lost matrix
jovial abyss
#

Try not to put a space between the message and the colorcode

sharp bough
#

is there anything wrong on those two screenshoots?

lost matrix
# sharp bough is there anything wrong on those two screenshoots?

There are quite a few things wrong here... But im just gonna point out the critical ones:

  1. You should return true in your last line of your command
  2. You probably never called the start method so your tagsInv as well as your tagsInvName are null
    But thats exactly what your stack trace tells you.
sharp bough
#

ah yes i see it now sorry

#

i forgot to call the start method

barren locust
#

Feel like this question has been asked a hundred times, but can't seem to get a straight answer for 1.16.5. What's the correct way to place a door?

eternal oxide
#

place one half, then cast to bisected, get th eother half and place it

#

set one as top and one as bottom

split light
#

I am trying to add a config file that records the number of times a player gets a special Beer potion item through a command, but I'm having some strange results. The code snippet included runs every time the player receives a new beer using the command: https://pastebin.com/CN481Kt7 I want the value of <UUID>.name.beers to increase by one every time, but that isn't working. Neither is storing data under "name". The results in the config and terminal repeat every time I enter the command. Any ideas?

eternal oxide
#

@split light there is nothing wrong with your code

#

The two printed nulls are because they are ConfigurationSections, not strings

split light
#

Well functionally there may not be, but it’s not achieving the goal I want

#

But why isn’t the Beers subsection not increasing?

eternal oxide
#

the first time it runs its setting zero, so there is no config entry.

#

It then set the section and increments by 1, so saves 1

split light
#

What is a configurationsection vs a string?

#

I think I’m mixing up how they’re stored

dusty herald
#

configurationsection is the path of everything that is below a path

#

like a section of the config

barren locust
# eternal oxide set one as top and one as bottom
below.setBlockData(blockData, false);
above.setBlockData(blockData, false);

((Bisected) below.getState()).setHalf(Bisected.Half.BOTTOM);
((Bisected) above.getState()).setHalf(Bisected.Half.TOP);

doesn't seem to work. am I casting correctly?

eternal oxide
#

you have to update as you are using BlockStates

barren locust
#

ohh my bad

#

thanks

#
below.setBlockData(blockData, false);
above.setBlockData(blockData, false);

((Bisected) below.getState()).setHalf(Bisected.Half.BOTTOM);
((Bisected) above.getState()).setHalf(Bisected.Half.TOP);

above.getState().update();
below.getState().update();```
doesn't work either
split light
#

@eternal oxide if I were to try to store the player name and number of times they’ve run the command, what would that look like? The wiki article I’ve been trying hasn’t been helpful

eternal oxide
#

no because you are calling getState again

barren locust
#

what object do I need to update?

eternal oxide
#

the state you aready obtained

barren locust
#

even when I store the state it still only places half

#
BlockState belowState = below.getState();
BlockState aboveState = above.getState();

((Bisected) belowState).setHalf(Bisected.Half.BOTTOM);
((Bisected) aboveState).setHalf(Bisected.Half.TOP);

belowState.update();
aboveState.update();```
split light
#

Because ideally I want it to look like

<UUID>:
name: OpticsVision
beers: 4

eternal oxide
#

try update(false) as you don;t want to update with physics

barren locust
#

still no luck :\

eternal oxide
#

I'm assuming you are setting the blockdata

barren locust
#

yeah, OAK_DOOR

#
private void placeDoor(Block below, BlockData blockData) {
    World world = Splinter.getInstance().mainWorld;
    Block above = world.getBlockAt(below.getLocation().add(new Vector(0, 1, 0)));

    below.setBlockData(blockData, false);
    above.setBlockData(blockData, false);

    BlockState belowState = below.getState();
    BlockState aboveState = above.getState();

    ((Bisected) belowState).setHalf(Bisected.Half.BOTTOM);
    ((Bisected) aboveState).setHalf(Bisected.Half.TOP);

    belowState.update(false);
    aboveState.update(false);
}```
#

this is the entire function as of now

eternal oxide
#

you are settign blockdata on the blocks

#

then overwriting when you update teh state

barren locust
#

should I set the state first?

eternal oxide
#

do everything on teh states

barren locust
#
BlockState belowState = below.getState();
BlockState aboveState = above.getState();

belowState.setBlockData(blockData);
aboveState.setBlockData(blockData);

((Bisected) belowState).setHalf(Bisected.Half.BOTTOM);
((Bisected) aboveState).setHalf(Bisected.Half.TOP);

belowState.update(false);
aboveState.update(false);

I think I'm missing something. The bottom half places fine

raw swallow
#

is there a way to do tab completer for other plugins trought externals plugins?

barren locust
#

if you get the plugin object, and call getCommand it might work

eternal night
#

Which you can get through Server#getPluginCommand I believe

#

on there you can simply call setTabCompleter

barren locust
#

^^

minor fox
#

whats the maven dep for nms

barren locust
#
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.16.5-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
minor fox
#

that's just the spigot api

eternal night
#

no lol

minor fox
#

unless they added it?

eternal night
#

that is the entire spigot server

barren locust
#

you just remove the -api from the artifact Id

#

just dont include it in your build

minor fox
#

hm I already added that so it makes no sense getting class not found exceptions

unreal quartz
#

run buildtools

barren locust
#

intellij?

minor fox
#

yeah

barren locust
#

right click, maven, reload project?

minor fox
#

did they change it from 1.8 to the latest in terms of that?

round finch
#

not sure why it doesn't out put enchants in chat

Map<Enchantment, Integer> enchants = Chest.getInventory().getItem(i).getEnchantments();
            
   
for (Entry<Enchantment, Integer> en : enchants.entrySet()) {
                    
   int level = en.getValue();
                    
  Bukkit.broadcastMessage("" + en.getKey() + ":" + level);
              
        
}

face palm myself wut i'm doing wrong

barren locust
#

yeah it'll be under net.minecraft.server.SOMEVERSION....

eternal night
#

I mean, just NMS used to be:

<dependency>
    <groupId>org.spigotmc</groupId>
    <artifactId>minecraft-server</artifactId>
    <version>1.16.5-SNAPSHOT</version>
    <scope>provided</scope>
</dependency>
#

but that does not really help you much

dusty herald
#

are you sure there are items in that inventory and that item has enchants?

#

it could be that the entry set is empty

minor fox
#

well this is what I have now <dependency> <groupId>org.spigotmc</groupId> <artifactId>spigot</artifactId> <version>1.8.8-R0.1-SNAPSHOT</version> <scope>provided</scope> </dependency>

dusty herald
#

1.8?

#

👀

eternal night
#

oh god

barren locust
#

oh it might be different for 1.8

minor fox
#

yeah that's what I thought

barren locust
#

i've only developed for 1.15+

unreal quartz
#

run buildtools

dusty herald
#

so what are you trying to do Fersk?

eternal night
#

I mean, check your local maven repo ?

minor fox
#

just trying to edit some entity stuff through nms

#

but getting class not found exceptions

#

so I'm just wondering what the correct depends are

dusty herald
#

ASsmug maybe they don't exist in 1.8.8

minor fox
#

You could certainly edit entities through nms in 1.8

dusty herald
#

I didn't say that you couldn't

#

but when it says "class not found" it means that the class you're seeking doesn't exist

#

did you run buildtools for 1.8.8?

minor fox
#

yep

dusty herald
#

check the javadoc

minor fox
#

what do I look for there?

dusty herald
#

the class you're missing

#

see if it's there or not

waxen plinth
#

That forces it to update the material

#

update(true, false) is what you want actually

#

But at the same time you shouldn't need block states at all

barren locust
#

@minor fox you can also check under external libraries, to see if you can find NMS there

#

if maven updates without errors, you probably have the right dependencies

waxen plinth
#
Bisected data = (Bisected) Material.OAK_DOOR.createBlockData();
data.setHalf(Half.BOTTOM);
Bisected top = data.clone();
top.setHalf(Half.TOP);
block.setBlockData(data, false);
block.getRelative(BlockFace.UP).setBlockData(data, false);```
round finch
minor fox
#

the jar with nms

round finch
# dusty herald check the javadoc

still don't understand i loop though every item and some of the items in the chest have enchant or is it different for enchant books?

dusty herald
#

uhh

#

I was speaking to Fersk with that message but make sure that the item isn't air

round finch
#

i did

#

?paste

queen dragonBOT
round finch
#

@dusty herald dam me
i figure out it only enchanted items and not enchant book enchants

dusty herald
#

why are you checking if it's empty in the loop kekwhyper

#

what a madman/woman

round finch
#

@dusty herald it was to understand what the problem was

#

😂

#

@dusty herald how i loop enchant on enchant books?

dusty herald
#

uhh no idea

round finch
#

if you know

#

ok i will google

#

ty

barren locust
#
private void placeDoor(Block block, BlockData blockData) {
    Bisected belowData = (Bisected) blockData;
    Bisected aboveData = (Bisected) belowData.clone();
    belowData.setHalf(Bisected.Half.BOTTOM);
    aboveData.setHalf(Bisected.Half.TOP);

    block.setBlockData(belowData, false);
    block.getRelative(BlockFace.UP).setBlockData(aboveData, false);
}

for reference (and for anyone searching for this) here is how to place an entire door

waxen plinth
dusty herald
#

question

#

why are you placing a door

barren locust
#

for walking through

dusty herald
#

I mean why place it with code

barren locust
#

syncing worlds

#

over the 'net

outer crane
#

um

dusty herald
#

seems a bit uh

outer crane
#

why not use A-SWM?

dusty herald
#

dangerous

barren locust
#

it's all a work in progress

#

big project tho, if you're interested DM me

dusty herald
#

i uh

#

thanks though

barren locust
#

Note that SWM is not intended to be used on big survival worlds

dusty herald
#

SWM sounds pretty fucking neat

barren locust
#

it is pretty cool

#

just not up to what i'm trying to do

dusty herald
#

I'll use it for a big survival world

lyric grove
#

Hi, how would i block all commands with : in (making a bungeecord plugin that blocks it)

outer crane
#

make sure to use Advanced-SWM because the original one isnt maintained

round finch
#

**update note: ** i just did this works well for enchant books 🙂

 if(Chest.getInventory().getItem(i).getItemMeta() instanceof EnchantmentStorageMeta) {
                    EnchantmentStorageMeta meta = (EnchantmentStorageMeta) Chest.getInventory().getItem(i).getItemMeta();
                    Bukkit.broadcastMessage(meta.getStoredEnchants().toString());
}
outer crane
round finch
#

😮 mini game maps? @outer crane

outer crane
#

right now for lobbies

#

working on a minigame

round finch
#

that would be so cool

outer crane
#

tnt run is pretty basic for me since im young

round finch
#

for generating map

round finch
outer crane
#

i actually did spleef earlier

#

it was a mess though

#

right now im working on a common lib

cunning ermine
barren locust
#
private void placeBed(Block block, BlockData blockData) {
    Bed footData = (Bed) blockData;
    Bed headData = (Bed) footData.clone();
    footData.setPart(Bed.Part.FOOT);
    headData.setPart(Bed.Part.HEAD);

    block.setBlockData(footData, false);
    block.getRelative(footData.getFacing()).setBlockData(headData);
}

how to place a bed, for anyone searching

pulsar schooner
#

so I am trying to switch from eclipse to intellij and I am just making a test plugin just to see how everything works, and for the life of me, I cannot figure out how to export my test plugin. Can anyone help?

barren locust
#

make sure you include your plugin.yml

pulsar schooner
#

ok

#

I will see if I can figure that out

barren locust
open vapor
#

what is "plugin attempted to register task while it was disabled'"

quaint mantle
#

or export it using maven if its a maven project

unreal quartz
#

you tried to use the scheduler when your plugin was disabled

open vapor
#

disabled?

unreal quartz
#

yes

open vapor
#

when would it be disabled?

unreal quartz
#

if your onenable threw an error or you disabled it yourself

open vapor
#

it just randomly happened when I placed a block

#

none of my plugins do anything related to that

quaint mantle
#

did u reload the server

open vapor
#

yes, but like 10 minutes before that happened

#

I just looked at the logs and it's filled with luckperms error spam

quaint mantle
#

restart

#

if it’s fixed don’t reload

rotund ravine
#

init = not eabled

#

onEnable = enabled

open vapor
#

I know, i worded the question wrong

rotund ravine
#

No you just gave not enough info 😉

open vapor
#

but I don't know what info to give

rotund ravine
#

The stacktrace and the class mentioned.

open vapor
#

there is no stacktrace, it just kicked me

#

if there was, I couldn't find it because of error spam

#

from a plugin that isn't the one I'm working on

daring sierra
#

Was wondering, How could I make it that if a player eats a specific food it gives them a potion effect?

open vapor
#

Listen for the player eating food event, see if it's the right type of food, then apply the effect

daring sierra
#

Thanks!

oak mica
#

How should I make a player slowly lift in the air on right click?

unreal quartz
#

give them levitation

outer crane
#

Listen to PlayerInteractEvent, check the Action, give them levitation or apply velocity

#

@oak mica

barren locust
#

anyone know how to catch when a tnt block turns into an entity? I don't want to use playerinteract since it won't catch spreading, or ignition through other means

outer crane
#

EntitySummonEvent or something

barren locust
#

doesn't catch it :(