#help-development

1 messages · Page 1320 of 1

echo basalt
#

it could be the server also sending packets on top

wet breach
#

quite possible since there is like 3-4 packets that cause updates in general

#

which is quite annoying

echo basalt
#

it's one big light update packet

#

and a light + chunk update

#

I'm not sure if the server's fighting me or if it's the client

#

I think it's the client

wet breach
#

only way to know if it is the client would be to intercept on the client but that would be a pain to implement

echo basalt
#

Uhh remind me was there a way to have an invisible entity display

#

they have a brightness thing

wet breach
#

yes entity displays can be invisible

#

as they have the invisible tag

echo basalt
#

I don't think they'd display the data then

wet breach
#

/data merge entity <selector> {Invisible:1b} this is how you would do it using vanilla commands

young knoll
#

Display entities are already invisible

#

Except for whatever they are displaying of course

wet breach
#

I assumed they meant completely invisible?

young knoll
#

Just don’t have them display anything

#

But then what’s the point in it even existing

wet breach
#

true you could do that too

echo basalt
#

we probably need scale or something idk

#

I just need its brightness feature to work

young knoll
#

That just controls how bright it gets rendered

echo basalt
#

hm

wet breach
young knoll
#

If you want invisible light use light blocks

echo basalt
#

yeah but light blocks scatter

#

I don't need scatter

wet breach
#

sounds like you would be better off with some kind of custom shader

echo basalt
#

This guy basically wants a spotlight

#

could be doable with shaders but I'm not a shader dev

wet breach
#

that doesn't look too bad

echo basalt
#

but if the build's tiny the scatter's too big

#

we could lower scatter but that means lowering brightness

wet breach
#

if only you could lower the darkness instead

echo basalt
#

you mean apply high brightness and darken everything around? yeah gl with that too

#

the lighting engine adds light, it doesn't remove

#

if I have a source of 15 + a source of 4

#

the 15 outshines the 4

wet breach
#

well, not quite. Just meant that if you could lower the darkness you wouldn't need to lower the brightness as it would appear to get brighter or dimmer

#

but yeah, can't really do that either

#

would be nice

young knoll
#

Clearly we need dark blocks

mortal vortex
#

add antimatter to minecraft

young knoll
#

It’s already there

#

You just can’t see it

echo basalt
mortal vortex
#

shaders?

echo basalt
#

no

#

still lights

#

still packets

#

Batch updates instead of a packet per block

#

and it only works if the ceiling is covered

#

doesn't work with natural light afaik

#

well it kinda does

#

but it's cursed

#

it also breaks a lot

young knoll
#

Oh good lighting glitches are back

#

I missed those after Mojang mostly fixed them

echo basalt
#

I can probably fix those by tracking light data

#

but that's not worth the price I'm charging

buoyant viper
#

in mojangs defense, spigot is not intended

echo basalt
echo basalt
#

In case someone needs it later

#

bit hacky with multi world support but I dgaf

#

and I just realized I'm looping over the same collection twice

thorn isle
#

i ended up sending each light update several times so it would for sure get processed by the client

echo basalt
mighty mountain
#

Hi guys can anyone help me how to make rpg class work in mmoitem mythic mobs itemsadder model engine cause mine is a rpg server

#

I appreciate if someone could help me

echo basalt
#

Buddy you'll have to get into detail about what you want instead of asking the same question every hour

mortal vortex
# mighty mountain Hi guys can anyone help me how to make rpg class work in mmoitem mythic mobs ite...
public final class RocketPropelledGrenade extends ExplosiveProjectileWeapon {

    private final float blastRadiusMeters;
    private final float directHitDamage;
    private final float splashDamage;
    private final float projectileSpeedMetersPerSecond;
    private final int maxAmmo;

    private int currentAmmo;

    @Override
    public boolean canFire() {
        return currentAmmo > 0 && !isReloading();
    }

Here's how I would design an RPG class tbh

mighty mountain
#

Like how do I make it work

#

Could I send u the file?

thorn isle
#

meters

buoyant viper
thorn isle
#

also that but in the game you usually see things being measured in blocks

thorn isle
#

what are you trying to do

buoyant viper
#

i mean a block is a metre

thorn isle
#

maybe

#

though i'm not sure if that's defined anywhere

young knoll
#

I believe it is

thorn isle
#

or no, maybe the player statistics refer to distance as metres

young knoll
#

Through the travel distance stats

thorn isle
#

myeah

#

i'd still prefer block, though, since that is more immediately clear

buoyant viper
#

i would ditch a measurement form altogether lol

#

blastRadius and projectileSpeed

#

the metrics? fuck around and find out

young knoll
#

Nautical miles per minute

#

Technically light year is also time!

#

But it’s just a year

crimson token
#

player.getWorld().spawnParticle(
Particle.REDSTONE,
loc,
25, // number of particles
new Particle.DustOptions(Color.fromRGB(255, 255, 255), 1.0F)
);

// Yellow particle
player.getWorld().spawnParticle(
Particle.REDSTONE,
loc,
25, // number of particles
new Particle.DustOptions(Color.fromRGB(255, 255, 0), 1.0F)
);

#

Im getting this error "Cannot resolve symbol 'REDSTONE'"

#

how could i fix

worldly ingot
#

It's just called "dust" now isn't it?

crimson token
#

let me try that

#

omg ty

tranquil pecan
crimson token
#

i put it through ai to fix it

#

but it made it weird

umbral ridge
#

i also think dust can be custom color

#

rgba

umbral ridge
#

is there a simple way to retrieve all chests (and their contents) within a region? double/single

#

I feel like doing a for loop through all blocks would be bad? because.. what if theres a double chest, how do i check if its a double chest or a single chest?

eternal oxide
#
    public List<Chest> getAllChests(Chunk chunk) {

        return Arrays.stream(chunk.getTileEntities()).filter(Chest.class::isInstance).map(Chest.class::cast).collect(Collectors.toList()); //newer Java .toList();
    }```
pseudo hazel
#

the real question is how to handle double chests on the edge of the border where one half is outside

umbral ridge
#

that cant happen in my case

solid cargo
#

Maybe just check if the chest has 27 or 54 slots?

umbral ridge
solid cargo
#

Thats my schizo approach

umbral ridge
#

thank you for that, ill play around

pseudo hazel
#

yes, chests are tile entities

cinder abyss
#

Okay thanks, do you know how can I generate a loot table in a chest too ?

#

Is there something in the api for this or do I need nms ?

chrome beacon
#

The loot table has a fill inventory method

cinder abyss
chrome beacon
#

Or if you want to set the loot table on a chest theres a different method for that

cinder abyss
#

I see on spigot api that there is fillInventory for the inventory but it's different for chest inventories ?

chrome beacon
#

Setting a loot table is different than putting in items

#

If you want to set the loot table call set lootable on the Chest

surreal wadi
#

?paste

undone axleBOT
leaden veldt
#

Hi, how can I serialize an ItemStack to Base64 and a Base64 value to an Itemstack?

hybrid spoke
#

to deserialize you just flip the table and use the input streams

autumn zinc
#

How i can create a Sign object, without using a placed block?

thorn isle
#

would that be the blockstate or the blockdata

autumn zinc
#

i think there is no way to do it

#

only using nms

thorn isle
#

are you intending to show the sign editing gui? there's an api method for that iirc

slender elbow
#

you can create a Sign blockstate via the respective sign BlockData

#

Material.FUCKALL_SIGN.createBlockData().createBlockState() or something or the other

#

and yes there is an api method to open a sign with it

#

no nms needed

buoyant viper
#

u know what would be kinda cool

#

if ServerListPingEvent was cancellable

#

like one niche use-case as a pseudo-firewall and thats all i got

slender elbow
#

or just disable enable-status in server.properties, though neither option would stop connections from knowing there's a minecraft server there

thorn isle
#

send a red "can't connect to server" as the motd

#

🤡

young knoll
#

Just reply with 404 not found

buoyant viper
buoyant viper
autumn zinc
autumn zinc
thorn isle
#

that is a blockdata sign

#

or no, that is a blockstate sign

#

but like emily said you can create one without placing a block

autumn zinc
#

the sign must be placed by the player (or only in client)

thorn isle
#

iirc what people do is they create a sign block at the bedrock level for 1 tick before sending the packet

#

but i vaguely recall the method doing that internally already

autumn zinc
thorn isle
#

similarly to how Player::openBook places a written book in your hand for a tick

#

yea but that one is doing it through throwing packets at the player, not the api; i could be wrong but i recall the api method doing the sign placement for you

autumn zinc
#

for some reason, signBlockEntity.getUpdatePacket(), don't change any lines

thorn isle
#

It looks sound

#

All I can think of is maybe delaying the editor open packet by a tick

#

And confirming that the sign lines are actually set on the client by looking at the sign without the editor

wet sinew
#

Hello. I'm new to NMS and I'm getting these errors during compilation

cannot access org.bukkit.craftbukkit.v1_21_R1.CraftServer
cannot access org.bukkit.craftbukkit.v1_21_R1.CraftWorld
cannot access org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol

cannot access org.bukkit.craftbukkit.v1_20_R4.CraftServer
cannot access org.bukkit.craftbukkit.v1_20_R4.CraftWorld
cannot access org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol

  <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-1.20.6</artifactId>
      <version>1.20.6</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/libs/spigot-1.20.6.jar</systemPath>
  </dependency>

  <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-1.21.1</artifactId>
      <version>1.21.1</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/libs/spigot-1.21.1.jar</systemPath>
  </dependency>

Im using remapped mojang jars

tranquil pecan
wet sinew
#

But 1.17-1.16-1.18-1.19 nms doesnt have error

quaint mantle
wet sinew
#

i used buildtools and saved local repository

#

And i getted jars in local repo

vital sandal
#

I have an issue with horses about horse keep rearing after jump

#

also tested with no plugin but still issue

#

it doesn't have this on vanilla

thorn isle
#

latency? i feel like this is how it's always worked, but then again i haven't touched vanilla since horses were added

vital sandal
#

is there any other way to resolve this :l

quaint mantle
#

Get closer to hosting region 🥀

thorn isle
#

i like that cactus

#

very cool

slender elbow
#

true

thorn isle
#

there should be a plugin that makes cacti grow with bulbous outgrowths like these

buoyant viper
#

when will we get sideways cactus

thorn isle
#

come to think of it, the way how the purpur plant things work is quite cactus-adjacent, isn't it

buoyant viper
#

the what is huh now

thorn isle
#

the shit in the end

buoyant viper
#

oh that purpur

#

i forgot that existed

thorn isle
#

it should be retextured to be green

buoyant viper
#

i thought u meant the server software and just could not wrap my head around what u were saying

thorn isle
#

chorus fruit i think it's actually called

#

most forgettable plant in the game

buoyant viper
#

maybe

#

true

wet sinew
# quaint mantle Use local repository. And can you give us the reason you're using NMS?

Could not find artifact org.spigotmc.spigot:spigot-1.17.1-R0.1-SNAPSHOT-remapped-mojang:pom:1.17.1-R0.1-SNAPSHOT in sonatype (https://oss.sonatype.org/content/groups/public/)

C:\Users\nixol.m2\repository\org\spigotmc\spigot-1.17.1-remapped-mojang\spigot-1.17.1-R0.1-SNAPSHOT-remapped-mojang.jar here have a jar but saying error:

  <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-1.17.1-R0.1-SNAPSHOT-remapped-mojang</artifactId>
      <version>1.17.1-R0.1-SNAPSHOT</version>
      <scope>provided</scope>
  </dependency>
young knoll
#

Did 1.17.1 have mojmap?

quaint mantle
#

Classifier remapped-mojang?

young knoll
#

Iirc it started in 1.17.2

wet sinew
eager roost
wet sinew
#

<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-1.17.1-remapped-mojang</artifactId>
<version>1.17.1-R0.1-SNAPSHOT</version>
<classifier>remapped-mojang</classifier>
<scope>provided</scope>
</dependency>

#

i did but same error

young knoll
#

Doesn’t mean spigot did

wet sinew
eager roost
tranquil pecan
#
    private void applyFortune(Player player, Block block) {
        var skill = config.getSkill(block.getType());
        if (skill == null) return;

        var fortuneStat = skill.getFortuneStat();
        if (fortuneStat == null) return;

        var user = plugin.getUser(player);
        var total = (int) user.getStat(fortuneStat);
        if (total <= 0) return;

        var bonus = total / 100;
        var chance = total % 100;

        var tool = player.getInventory().getItemInMainHand();
        for (var drop : block.getDrops(tool)) {
            if (drop.getAmount() > 0) {
                int amount = drop.getAmount() + bonus;
                if (ThreadLocalRandom.current().nextInt(100) < chance) {
                    amount++;
                }
                drop.setAmount(Math.max(amount, 1));
            }
        }
    }```

Why does this work on farming stuff but not for foraging or mining?
Like when i mine carrots, potatoes i get modified amount but it's not same for ores or logs
wet sinew
#

Hello. I'm new to NMS and I'm getting these errors during compilation

cannot access org.bukkit.craftbukkit.v1_21_R1.CraftServer
cannot access org.bukkit.craftbukkit.v1_21_R1.CraftWorld
cannot access org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol

cannot access org.bukkit.craftbukkit.v1_20_R4.CraftServer
cannot access org.bukkit.craftbukkit.v1_20_R4.CraftWorld
cannot access org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol

  <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-1.20.6</artifactId>
      <version>1.20.6</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/libs/spigot-1.20.6.jar</systemPath>
  </dependency>

  <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-1.21.1</artifactId>
      <version>1.21.1</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/libs/spigot-1.21.1.jar</systemPath>
  </dependency>

Im using remapped mojang jars

buoyant viper
#

ur dependency paths look strange

eternal oxide
#

if you pulled those jars from buildtools, they are not remapped jars

tranquil pecan
buoyant viper
#

?bootstrap

undone axleBOT
#

Bootstrap Jar
The main spigot-1.18.jar is now a bootstrap jar which contains all libraries. You cannot directly depend on this jar. You should depend on Spigot/Spigot-API/target/spigot-api-1.18-R0.1-SNAPSHOT-shaded.jar, or the entire contents of the bundler directory from your server, or use a dependency manager such as Maven or Gradle to handle this automatically.

Please read the release notes for further information: https://www.spigotmc.org/threads/9-years-of-spigotmc-spigot-bungeecord-1-18-1-18-1-release.534760/#post-4305163

buoyant viper
#

?nms

tranquil pecan
glacial spindle
#

could anyone make me a free custom plugin for my server with t pack too ?

undone axleBOT
glacial spindle
quaint mantle
glacial spindle
#

ya

#

is for a smp

hybrid spoke
#

cool! how much do you pay?

glacial spindle
#

bro do u not see free in the sentences

hybrid spoke
#

ohh you‘re right, my bad! let me sacrifice my own time and energy into something i dont believe in for free

wet sinew
glacial spindle
#

can any one make me a custom free minecraft plugin for a server ?

hybrid spoke
glacial spindle
hybrid spoke
#

must be a pathetic plugin if its not worth any money

glacial spindle
#

bro

#

-_-

glacial spindle
#

?

smoky anchor
undone axleBOT
wet sinew
#

Hello. I'm new to NMS and I'm getting these errors during compilation

cannot access org.bukkit.craftbukkit.v1_21_R1.CraftServer
cannot access org.bukkit.craftbukkit.v1_21_R1.CraftWorld
cannot access org.bukkit.craftbukkit.v1_21_R1.entity.CraftPlayer
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol

cannot access org.bukkit.craftbukkit.v1_20_R4.CraftServer
cannot access org.bukkit.craftbukkit.v1_20_R4.CraftWorld
cannot access org.bukkit.craftbukkit.v1_20_R4.entity.CraftPlayer
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol
cannot find symbol

  <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-1.20.6</artifactId>
      <version>1.20.6</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/libs/spigot-1.20.6.jar</systemPath>
  </dependency>

  <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot-1.21.1</artifactId>
      <version>1.21.1</version>
      <scope>system</scope>
      <systemPath>${project.basedir}/libs/spigot-1.21.1.jar</systemPath>
  </dependency>

Im using remapped mojang jars

glacial spindle
smoky anchor
#

Make a post, it's a forum

glacial spindle
smoky anchor
#

I don't know, I never did that. Try using your brain perhaps ?

wet breach
smoky anchor
# wet sinew Hello. I'm new to NMS and I'm getting these errors during compilation cannot ac...

You don't need to repost the whole wall of text
What is giving you 404, "download link" is not specific enough. But I assume it's the link under Bootstrap Jar which is not what you want rn
You use BuildTools to generate the jars you want, then you depend on them as described in the post
Not whatever system bs you're doing
And if you're trying to depend on 2 versions at once... don't

wet breach
#

obviously they can't read and would rather be spoonfed instead

#

lazy kids these days -.-

wet sinew
#

I'm new to NMS, and currently 1.16.5 - 1.17 - 1.18 - 1.19 are not causing any issues, but even though I'm using remapped jars with buildtools, it's the same.

wet breach
#

anyways, the two posts clearly tells them how to setup their maven pom

#

for what they are doing

wet breach
glacial spindle
#

Surely someone can make me a good plugin ?

#

For free

wet breach
#

surely you could make your own

smoky anchor
glacial spindle
#

I'm fumb

glacial spindle
smoky anchor
#

this is not the place to ask such question

wet breach
#

well keep on asking here and one of the mods may just remove you just fyi

glacial spindle
#

I'm using chat gpt ig

tranquil pecan
wet sinew
#

but there are files on Recaf

orchid trout
#

do i have to use mojang mappings if i want nms on 1.21?

tranquil pecan
#

BlockDropItemEvent exists in 1.16.5 - 1.21?

#

ah man my head

#

nvm i found it

chrome beacon
orchid trout
#

is this maven issue?
cannot access net.minecraft.server.MinecraftServer
cannot access net.minecraft.server.level.ServerLevel
cannot access org.bukkit.craftbukkit.v1_21_R3.CraftWorld

chrome beacon
#

you'll be forced to do so in upcoming versions anyway

orchid trout
chrome beacon
#

How are you building

orchid trout
#

maven package

chrome beacon
#

Through your IDE?

orchid trout
#

yers

chrome beacon
#

If you're using Intellij make sure you have a Java 21 jdk set in project settings

orchid trout
#

ty]

#

didnt think to check that

quaint basin
#

Can I run 300 players on an Intel Xeon-E3 1270 v6
4 c / 8 t
3.8 GHz / 4.2 GHz?

#

in the latest version

thorn isle
#

sure

slender elbow
#

sure

#

it probably won't be nice but you can

quaint basin
#

And I'm going to divide the players into several servers

dry hazel
#

no lol

buoyant viper
#

20 tps @ 300 players?

#

if ur not running Minecraft, maybe

quaint basin
#

If each server has 50 players, and I have 6 servers, that already supports 300 players

#

A server running version 1.21 can handle 50 players with teleportation on 1.21 version I would say

#

The question is whether the processor can handle 6 Minecraft servers simultaneously

young knoll
#

Well it only has 4 real cores

dry hazel
#

if you think that it'll work, just try it and see

#

I doubt it's going to work well with even one server with 50 players

thorn isle
#

running the numbers you need like 12 cores + headroom for the gc and jitter

#

and you're not going to run 50 players on a single instance on those specs either

quaint basin
#

So maybe I should look for better options at OVH

young knoll
#

How many threads does a modern server use at minimum

thorn isle
#

too slow

slender elbow
young knoll
#

Obviously there’s the main thread, idk what the limits are for the worker threads and Netty threads

quaint basin
thorn isle
#

yes

#

too low single thread performance

slender elbow
#

you can configure the netty thread count on spigot.yml

dry hazel
#

the cpu is webhosting-tier

quaint basin
slender elbow
#

yeahhh you need beefy single-core perf for minecraft

young knoll
#

Surely you need at least 1 Netty thread

quaint basin
thorn isle
#

the server will definitely reserve probably a dozen or so threads at a minimum

#

but most of them will be sleeping almost all of the time

#

off the top of my head i'd throw an absolute minimum of 6

#

gc needs threads, chunk io, netty io, server main thread

slender elbow
#

yeah at an absolute minimum it'll be, like, 1 for main, 1 for netty, 1 for chunk gen, uhhhhh chat, idk if that's configurable on spigot or how many it uses

#

let's not forget plugins

thorn isle
#

oh yeah chat is its own thread

dry hazel
#

judging by the number it's the same level of old and slow

quaint basin
thorn isle
#

paper adds a watchdog thread

slender elbow
#

i have an i7 7700 and i can play with my gf that's all i need it for

quaint basin
#

I want the cheapest option possible, based on what I told you. Any recommendations?

young knoll
#

Isn’t the watchdog vanilla

thorn isle
#

my recommendation is lowering your expectations

young knoll
#

Also didn’t the chat thread get nuked with chat signing

thorn isle
#

you get what you pay for

slender elbow
#

i mean, async chat event is still a thing so idk

thorn isle
#

for 300 players, get the best hardware you can physically source

slender elbow
#

oh yeah and the auth pool too

thorn isle
#

and then pray it's enough

slender elbow
#

geez

quaint basin
thorn isle
#

it might not if you don't optimize well enough

slender elbow
#

a lot of these threads by percentage are going to be mostly sleeping, but yeah it's still a lot of work

dry hazel
#

not at 20 tps

thorn isle
#

oh an old cpu? definitely not

quaint basin
thorn isle
#

default settings + old cpu = maybe like 10 players

wet breach
thorn isle
#

if you optimize it well, i give you barely 20

quaint basin
thorn isle
#

and that's with like deleting villagers and bees and making hoppers tick once a millennium

wet breach
slender elbow
#

it means a lot in the world of minecraft servers

quaint basin
slender elbow
#

not web servers, but this is not it

thorn isle
#

this isn't a webserver frost

wet breach
#

Anyways what they are wanting to do is perfectly fine. The only server they will have issues regardless is survival server

wet breach
wet breach
#

on that box if you do it right, it can handle 1k players with no problems

dry hazel
#

yeah sure

young knoll
#

Box smp is fairly compact iirc

thorn isle
#

single thread rating 2451

young knoll
#

Won’t have to worry about a ton of loaded chunks at least

thorn isle
#

i give you 20 players per instance

quaint basin
thorn isle
#

this is also true

wet breach
#

yes and no

quaint basin
young knoll
#

Do I not understand wtf a box smp is

quaint basin
thorn isle
#

pvp servers without any chunk loading or ticking blocks can run 10x the players a smp server can

wet breach
#

your issue is going to be survival regardless of your specs. Recommend pre-genning it to avoid generating chunks. And tailor the entity limits.

thorn isle
#

mmm on 1.8 i'd maybe guesstimate that to 50 with good optimization

wet breach
#

As for other game modes where its not super dynamic, those are not a problem

young knoll
#

Okay it seems boxsmp is just Gen alpha skyblock

thorn isle
#

ironically the laggiest servers are skyblock servers

quaint basin
# young knoll Do I not understand wtf a box smp is

Box SMP is a Skyblock game, but then there's a world you can mine, and there will be chunk loading. This game mode is good because several players can have hoppers in their homes, and then the hopper load is divided among servers, which usually lags a lot

quaint basin
thorn isle
#

not because of anything intrinsic to skyblock but because the meta is to throw huge farms at them and sell spawners and make it a "farming server"

wet breach
quaint basin
#

I've seen 700 players running on an i7-7700k at 1.8 version

thorn isle
#

i pulled it out of my ass

quaint basin
#

I no longer believe your estimate 😂

thorn isle
#

i know 1.8 runs much faster than modern versions, but i don't remember seeing single smp instances with more than 300 players

#

just anecdotally though, i haven't run a 1.8 smp server so i don't know the specs

young knoll
#

Hypixel struggles with like 100

#

Granted idk what they throw their servers on

thorn isle
#

yea to clarify i meant a single instance

dry hazel
#

you could just try it and come back with your findings instead of doing stuff based on the conjecture here

young knoll
#

Maybe they’re on Chocos laptop

slender elbow
#

wdym hypixel is currently running 30k players :kappa:

wet breach
quaint basin
#

And it's survival

thorn isle
#

is that a single instance?

quaint basin
#

yes

thorn isle
#

shooould probably be fine then if you just want to scale to 300 players

#

what's your mspt?

quaint basin
wet breach
#

minecraft is horribly unoptimized, even their protocol. So you will have limits because of that. Anyways, just make your servers. The hub I recommend no more then 2GB and use a stripped down version of the server where you remove anything you are not using. Typically you would do this with other game modes too

quaint basin
#

i dont have 80 players anymore

torn badge
young knoll
#

Simon runs all the servers on his old laptop

#

In his basement

wet breach
#

the box you have will easily run 4-5 instances of MC. for survival I recommend running it in a ramdisk and throw like 10GB at it lol

#

seems to do the best that way, all other servers would need no more then 4-6 gb of ram

quaint basin
wet breach
#

you are going to want to use JVM arguments too to tailor your jvm's

quaint basin
#

Or are you pulling this data out of your ass?

wet breach
#

and I only had 3-4 phyisical boxes

quaint basin
#

and what was the server name

wet breach
#

of course? do you mean chunk generating?

quaint basin
#

yes

#

like heavy chunk generating

#

and past = old version

wet breach
#

I limited chunk generation. When you start to get into high player counts your servers simply don't have the time to be generating chunks all over the place. You can however simulate this instead

#

There is more to running servers then just simply having hardware

#

and you will always have limitations regardless of what you do

#

the goal is to run your applications to those limits and then learning how to bypass or get around those limitations

#

most of your limitations are going to come from MC

#

also, I never ran SSD's either

quaint basin
#

I know how to do that, but there are things that only miracles can accomplish, and I don't want to buy a CPU that's only usable by performing miracles

wet breach
#

caveat though is that I did run the survival server in a ramdisk

wet breach
#

see, something for you to learn about

quaint basin
#

Maybe if you use different words I'll understand what you're saying

wet breach
#

also, when it came to updating the servers, I utilized network file system (NFS)

thorn isle
#

filesystem in random access memory

#

chunk loading is fast when you don't go to the hard drive to get the things to load

quaint basin
#

I use SlimeWorldManager. I imagine it changes the approach you're talking about

wet breach
#

odd you know what that is but not a ramdisk

quaint basin
wet breach
#

if you have no idea what these things are or even how to use them, you need to do some learning. Fortunately you can learn on the go 🙂

quaint basin
#

lmao

wet breach
#

no?

#

This is all part of server administration

torn badge
quaint basin
wet breach
#

everything else however was fine since it wasn't needing to generate anything or load massive amounts of chunks

#

my reason for using HDD over SSD was simply because HDD lasted longer and at the time it was cheaper to get mass amounts of storage space

#

so I worked around the limitation of HDD

torn badge
#

Yeah I get that, but pretty sure most modern configurations will provide enough SSD storage so you can use your memory more efficiently

wet breach
#

also I made sure that the MC stuff was on the inside of the disk and had the OS always sit in the middle of the disk since rebooting and the sorts was not common

quaint basin
# wet breach caveat though is that I did run the survival server in a ramdisk

"No performance impact. SWM uses in-memory worlds, which means that the whole world is loaded at once. Then, every time the server needs to load a chunk, it just grabs it from memory, instead of having to read it from the filesystem, and then converting it to something usable. As a result, chunks are loaded seamlessly, without anyone noticing."

wet breach
quaint basin
#

Is that what you're talking about?

wet breach
#

literally a ramdisk is taking a portion of your ram and treating it like a harddisk. It gets formatted and everything

#

the OS handles that

torn badge
quaint basin
#

whats better? aswm or ramdisk

torn badge
#

Windows

wet breach
#

you would have to do test to determine which is better

thorn isle
#

i assume the manager uses the slime world format?

wet breach
#

however some of the advantages of a ramdisk is that you can take a snapshot images of it

quaint basin
#

If I have to do this to determine which is best, then my approach is good enough

thorn isle
#

the server generates huge heaps of garbage when parsing anvil format chunk data from disk into in-memory chunks

#

whether the disk is backed by ram or is actually sitting on a drive doesn't affect this

#

so if slime whatever addresses that, it could well be better

#

though come to think of it, did 1.8 even use the anvil format? it's been so long

young knoll
#

Yes

#

Anvil is like 1.2

#

The slime format is mostly for storage size afaik

#

Hypixel designed it for housing

wet breach
torn badge
wet breach
#

if I recall the slime format was to remove a bunch of garbage data that was not always needed or ever needed

#

and yes it was to control the size on disk

torn badge
#

Yeah, useful for things like skyblock worlds which are very limited in size anyways

wet breach
#

the side affect of removing the garbage data is that you got a boost to loading and saving

#

eventually when you get super large like past 2k players you will need to think of doing stuff like that

#

because as I said, most of your limitations come from MC lol

thorn isle
#

the issue with loading the data is that it first gets loaded as a massive nbt tree and all the block palettes and light nibbles allocate byte array tags and string tags

wet breach
#

because I ran the survival server in a ramdrive, my backups were simply disk images 🙂

thorn isle
#

in principle you could probably just mmap a file and shove your chunk data into it as-is and that'd be your region

#

but i suppose nbt is much more robust

#

i did want to look into a garbageless chunk data parser at some point but then got distracted by something else

#

plus maintaining patches on top of all the refactorings mojang does these days is a chore

#

easier to just throw more memory and gzgc at it

young knoll
#

I mean the lazy way to do that would just be to reuse objects a ton

thorn isle
#

myeah, though there is still a lot of surface area with nms; you have to replace all constructors with factory calls and then you also have to track where the object goes and release it back into the pool when it's no longer in use

young knoll
#

0 GC but a higher base memory usage

wet breach
# thorn isle but i suppose nbt is much more robust

nbt is really compact, the only mistake before they moved to strings was how they stored chunks. There was a more optimal way to store such things, which I had saved. Other that though it is pretty optimal

thorn isle
#

nbt as the format is great

young knoll
#

I wonder how moonrise compares in terms of garbage

thorn isle
#

it's just that it has the same problem as gson json trees vs json streams

young knoll
#

When do we get to stream NBT

thorn isle
#

as in the impl mojang ships with the server doesn't have the latter; doing anything allocates trees

wet breach
#

so don't allocate the trees

#

we don't need trees >>

thorn isle
#

i am lorax and i speak for the trees

young knoll
#

Did someone say deforestation

#

I can manage that

thorn isle
#

it's still in principle parseable from a stream just like json is, but i don't know if an impl for it exists

#

it probably does but it's probably written by someone chinese and is on google docs and was last updated in 2015

young knoll
#

Quick make a mod about a sky dimension and then get hired at Mojang and then make a streaming impl

thorn isle
#

the end dimension is a colossal disappointment

young knoll
#

No no not that sky dimension

thorn isle
#

it was "based" on the aether mod, wasn't it?

#

just they took everything good out of it

#

and made it lame and boring

#

or maybe i misremember, god knows at this point

young knoll
#

The original end was just a single island in the sky

#

I mean maybe they claimed it was based on the aether but that’s like saying a bicycle is based on a rocket ship

#

Ones a bit more advanced

thorn isle
#

odd, i remember being mad about it

wet breach
#

its quite possible they added the end because of it but didn't base it off of it

thorn isle
#

that sounds vaguely right

outer ember
#

How to make a licence system for my plugin?

wet breach
#

Kind of pointless to do

#

Second its not allowed on spigot last i recalled

outer ember
#

it's a paid plugin and im scared to my plugin get leaked

pseudo hazel
#

still kinda pointless

#

wdym by leaked

solid cargo
#

It will happen sooner or later

solid cargo
pseudo hazel
#

oh

lilac dagger
#

?nms

pseudo hazel
#

well, thats usually a luxury problem

#

first make sure your plugin gets enough attention for that to be an issue

lilac dagger
#

?mappings

undone axleBOT
solid cargo
#

Just be cisco and charge for everything

wet breach
solid cargo
#

If you make it like license key stuff, then it must ask your api if its valid. And if you just change if isValid to just if (true), then boom

outer ember
outer ember
wet breach
#

that is just it, there is no layer of protection regardless of what you do

solid cargo
outer ember
summer scroll
#

As someone who sell premium plugin, just don't bother doing that lmao, it's all useless.

wet breach
#

I don't even have to run your jar directly to bypass anything, I can load your jar by using another jar, remove anything I don't like. I can decompile your jar, remove what I don't like and recompile. I can use bytecode manipulation. It doesn't even matter if you change the name of the methods or classes as the names are not what are necessary but the code itself etc.

summer scroll
#

The people who downloaded cracked version will never be your customer anyway since they don't have money to purchase it.

wet breach
#

The best thing you can do, is one make sure you do good with your followers and routinely update

outer ember
#

So u guys saying it's useless?

summer scroll
wet breach
#

it doesn't really matter the reason why they can't buy it. If they sourcing it by other means then they had no intention of buying it usually.

#

its like getting upset at a thief that routinely steals becaus they didn't buy your stuff but stole it instead

#

Anyways, the worst you can expect is you have some people who don't buy your plugin. As for stealing code that isn't really a thing unless you made some revolutionary thing

#

Fun fact, it took like 3-4 years for someone to duplicate a piece of code in one of my open source projects 🙂

#

simply because they couldn't understand how it worked

outer ember
#

Nvm i'm just not doing it

wet breach
#

but aside from that one feature everything else was easy to do, just thought it hilarious that even for it being an open source project many had a hard time duplicating that one feature of it XD

outer ember
wet breach
#

no, they didn't understand how it functioned

outer ember
#

Oh

#

In iran not many people don't know how to decompile the code and edit it for themselves

#

That's the reason i want to make a license system in my plugin

wet breach
#

about half the code used NMS and reflection. But anyways the feature was touch holograms

outer ember
#

gtg

#

bye

wet breach
#

cya later

#

should come back 🙂

solid cargo
outer ember
solid cargo
#

How come. What will you be making that makes it exceptionally popular in iran?

tender pond
#

Does anyone know if there's an event for when a copper golem fires?

smoky anchor
#

"when a copper golem fires"
what, a gun ?

pseudo hazel
#

lmao

#

is there an event for when my pet rabbit hacks the nuclear launch codes?

autumn zinc
#

How to set RGB display name for item?

drowsy helm
#

Or a gradient

autumn zinc
drowsy helm
#

Wot

autumn zinc
#

i want to get away from ChatColor enums

drowsy helm
#

Other options are translateColorCodes or you could use something like minimessage

autumn zinc
#

translateColorCodes isn't support RGB, only default color codes and minimessage is paper-api

autumn zinc
#

It is possible to use minimessage with net.kyori:adventure-platform-bukkit, but it allows only send messages to play and something else

#

but there is no way to set display name for ItemMeta

drowsy helm
#

It’s just super verbose

autumn zinc
autumn zinc
#

It just converts difficult RGB into simplified color codes

drowsy helm
#

Im on phone but you just do each char preceeded by your character and an x at the start

#

It’s not great

autumn zinc
#

it's unbearable

drowsy helm
#

Can definitely make a wrapper function for it

autumn zinc
dry hazel
#

you need to make a custom instance of the LCS if you wanna use hex rgb with it

autumn zinc
#

Where i can find net.md_5/org.spigotmc javadoc and are they up to date?

slender elbow
#

?jd

undone axleBOT
autumn zinc
# slender elbow ?jd

thanks, so what about org.spigotmc, there is no any classes org.spigotmc classes in spigot java doc

slender elbow
#

? yes there are

#

in that first link

#

not that there are many to begin with

autumn zinc
#

hm... Why in the my IDE i see many classes, for example org.spigotmc.SpigotCommand or org.spigotmc.ActivationRange, but in the javadoc only one class CustomTimingsHandler??

slender elbow
#

those are internal classes

#

internals do not have javadocs published

smoky anchor
#

Back working with Brigadier (non MC)
Creating custom arguments, and just now I realize that this things flow is controlled by exceptions 💀
I find this horrifying

thorn isle
#

exceptions can be good for flow control when used judiciously

smoky anchor
#

I guess ?
It's just that his way of working is new for me so it took me a bit to get my head around it

slender elbow
#

i fail to see how throwing a command syntax exception when the syntax of the command is not to be accepted by the arguments is used for control flow

hard socket
#

?paste

undone axleBOT
thorn isle
#

if you think about it, throwing an exception with an informative message when you encounter exceptional (i.e. unexpected) input during command parsing, is the exact same way you use exceptions in programming in general

#

same can be extended to state, such as not having an applicable command target selected, or not being a player

slender elbow
#

yeah mfw properly handling exceptions is control flow

#

all exception handling is control flow

thorn isle
#

conversely, explicitly checking conditions and returning is roughly comparable to explicitly checking status codes as you'd do in low level languages, and there's a reason why high level languages use exceptions instead

wet sinew
#
Exception in thread "main" org.eclipse.jgit.api.errors.CannotDeleteCurrentBranchException: Branch patched is checked out and cannot be deleted
    at org.eclipse.jgit.api.DeleteBranchCommand.call(DeleteBranchCommand.java:104)
    at org.spigotmc.builder.Builder.startBuilder(Builder.java:623)
    at org.spigotmc.builder.Bootstrap.main(Bootstrap.java:60)```


im getting this error in BuildTools i cant get 1.8.8 craftbukkit jar
orchid trout
#

restart and never try again later

alpine solar
#

holdup

#

Instead of

#
            List<String> lines = Arrays.asList(ChatColor.translateAlternateColorCodes('&', "&eWhile your within this region, the bleed amount of redstone is increased."));
#

I can do

            List<String> lines = Collections.singletonList(ChatColor.translateAlternateColorCodes('&', "&eWhile your within this region, the bleed amount of redstone is increased."));
#

?

#

Ignore ze grammar please

#

What's the difference?

smoky anchor
#

fist one creates modifiable array list

#

second creates unmodifiable whatever this is

young knoll
#

It’s a list without the list

slender elbow
smoky anchor
#

huh, pretty sure you can add more elements if you construct it from array

slender elbow
#

this is well specified in the javadoc for Arrays.asList, you're just confusing java.util.ArrayList with the private java.util.Arrays.ArrayList :3

smoky anchor
#

bruh I am
I didn't look that closely lol

alpine solar
tranquil pecan
#

how does noDamageTick and attack speed work together?

thorn isle
#

if noDamageTicks > 0, the attack doesn't deal damage

#

attack speed affects the strength of the attack

#

both are in play at the same time; noDamageTicks on the receiver, attack cooldown on the attacker

tranquil pecan
#

so even if i set the attack speed to 10000 the mob will get 0 damage as long as it is on cooldown right?

thorn isle
thorn isle
#

this is so that e.g. a mob taking 0.5 damage from burning doesn't become immune to a 20 damage attack from the mace

#

essentially the no damage ticks is a time window during which at most, not the total damage over all attacks, but the highest damage of any attack in that window, can be received by the mob

tranquil pecan
#

okay

quaint basin
#

I need to create a server that has 3 servers, and since they are multi-instance, I need all 3 servers. But my dedicated server currently doesn't have enough RAM to start 3 more servers (it's in production). What should I do? Is the only alternative to create a localhost?

rotund ravine
#

Get more ram or lower the amount of ram per server?

quaint basin
young knoll
#

Doesn’t sound like a very good dedicated server then

thorn isle
young knoll
#

So it’s just a fancy array wrapper

#

Well, normal array lists are also a fancy array wrapper, but they can resize the backing array

#

So it’s a less fancy array wrapper

sullen marlin
young knoll
#

Oops all arrays

thorn isle
#

always has been 🔫

slender elbow
#

mfw pointers

slender elbow
#

oi!

elfin isle
#

everything is a pointer with the right attitude

young knoll
#

Just store all 256 possible bytes in memory and have everything else be a pointer to them

eternal oxide
#

a pointer to a pointer to a pointer

short pilot
#

Is there any new events to do with the Code of Conduct Mojang added

young knoll
#

What

eternal oxide
#

mojang added? Are you talking about the eula message when you first start a Spigot server? If that still happens

young knoll
#

That’s all servers

#

And yes it still happens

eternal oxide
#

its been so long since I setup a NEW server

young knoll
#

Apparently it’s a new server.properties setting that will just show a text file to players

short pilot
# eternal oxide ??

for example right now if you try to set game mode using join listeners and the player has not accepted the code of conduct, The Listener was still trigger but none the code will work since the player hasn't been loaded into the game

#

interesting side effect

onyx fjord
#

is there any tool to preview minecraft's included fonts?

#

like illageralt for example

buoyant viper
#

minecraft has fonts?

pseudo hazel
#

yes?

#

how else is it drawing text

wet breach
#

it has like 5 fonts

buoyant viper
#

i meant to ask what fonts minecraft has besides the """main""" font and enchanting text

#

(and ig the unicode font option)

wet breach
#

Mojangles (default font)
Alternative ("alt")
Uniform
Illageralt
Standard Galactic Alphabet (used for enchanting table)

thorn isle
#

They're not like tff's or anything sensible so you can't very easily throw them into your editor of choice

#

But the mojangles default font exists as a tff and probably every other font spec under the sky, if that's the one you want to preview specifically

shrewd tapir
#

Is there an API for camera distance feature (was added in 1.21.6)

chrome beacon
#

Highly recommend checking out the javadocs

thorn isle
#

camera distance? lmao

#

what is this

quaint basin
#

Is there a TPA plugin that supports multiple server instances?

thorn isle
#

this would i think probably get a faster/better answer in help-server since it's about an existing plugin

eternal oxide
#

did you bother to search for "bungeecord tpa plugin"

quaint basin
thorn isle
#

now it's definitely a help-server question

eternal oxide
#

Steak or roast pork dinner is teh best

thorn isle
#

yeees

quaint mantle
#

"What's the best X" 🫩 js try every plugin and pick one

quaint basin
molten hearth
#

"whats the best plugin" mfs after having to try out every plugin on spigot

thorn isle
#

should be fairly simple to write from scratch

#

since both the source and destination servers are guaranteed to have a player online, you can use plugin messaging

slender elbow
#

but is that lag free ?!?!?!

quaint mantle
#

Rewrite everything in Rust

thorn isle
#

make it async 🪿

slender elbow
#

omg yes

#

async fast

solid cargo
#

Arent virtual threads the new hot thing?

thorn isle
#

they are, but unless you're on java 25 or something they are still kind of shit

#

since synchronized and some other operations still pin them to os threads

slender elbow
#

unless you are performing blocking IO or other blocking ops with locks or whatever, VTs are useless

thorn isle
#

java 24

#

well yeah

#

in my experience though, it makes concurrent programming much easier, since you can do away with e.g. complicated completablefuture chains

azure zealot
#

completablefutures are goated

thorn isle
#

you spawn a virtual thread that just blocks on whatever you want to do, possibly joining said futures instead of chaining on them

#

they are, but they get nasty when you have to do e.g. flow control with them

azure zealot
#

yes virtual threads are also goated

slender elbow
#

eh

#

they are heavily misunderstood and people use them when they really shouldn't

thorn isle
#

probably

azure zealot
#

thats not the virtual threads problem

#

you should just use them for networking stuff

slender elbow
#

they are certainly overhyped

#

which leads to misuse

#

don't get me wrong, it's cool stuff and it definitely has lots of uses

azure zealot
#

yes but you could missuse any programm language or librarry feature if you're a bad dev

slender elbow
#

but more often than not people are like "omg virtual threads fast and async" and it's like :harold:

young knoll
#

ChatGPT write me a spigot plugin that makes heavy use of virtual threads kthx

thorn isle
#

new $200 paper fork that changes all the executors to use virtual threads

#

now you can have unlimited async io threads

young knoll
#

I’ll take your entire stock

azure zealot
#

guys

#

do you think the bungee schedular uses the correct executorservice

#

i dont like it right now

slender elbow
#

people asking to switch the chat thread pool or the bukkit scheduler thread pool to use VTs every now and then :harold:

thorn isle
#

noo but what about my blocking mysql queries on the chat thread

thorn isle
#

although honestly

azure zealot
#

u ensure chat is not spammed to much by adding some blocking stuff there

thorn isle
#

with how hard the bukkit async scheduler gets abused, i wouldn't mind it being made use a virtual thread executor

slender elbow
#

yeah i suppose

thorn isle
#

right now it's an unbounded thread pool which means if some plugin fucks up you oom with 25,000 bukkit task threads

azure zealot
#

i wanna change it

young knoll
#

But that’s half the fun

thorn isle
#

the bungee scheduler iirc just spawns a thread and then sleeps it for every task to "schedule" it to run later

#

not a bad case for virtual threads either

#

but that's not really the right tool for the job lmao

#

it should use a proper scheduler instead

azure zealot
#

its also using a no limit thread pool

slender elbow
#

i'd argue that bukkit/bungee providing built-in ("async") schedulers is a mistake to begin with

thorn isle
#

for bungee definitely

#

but remind me, how does async scheduling work on bukkit again

slender elbow
#

well, which definition of the word async? the bukkit one or the real one?

thorn isle
#

does it still count ticks and run them at the start of a tick? or is it just like any scheduled executor

#

bukkit async tasks

slender elbow
#

every tick it pushes the scheduled tasks onto the threaded scheduler

#

which is kinda cringe, the dispatching of tasks is bound to the tick loop

lilac dagger
#

Wait, when is it a bad case to use virtual threads?

thorn isle
#

makes sorta sense if you want your logic to be bound to the tick loop, as for most "in-game" tasks you probably do

azure zealot
#

how else would youe schedule something in a specific tick amount

slender elbow
#

well yeah but that means that if i want to fire something to a separate thread from the main thread there is at a minimum 50ms delay

thorn isle
#

i'd say that if the bukkit scheduler still counts ticks for the async tasks, it's not entirely redundant; to get the same effect without it, you'd need to schedule a sync task to n ticks and then pass your task to some async executor in it

#

this makes is a little bit distinct from throwing tasks at an executor service

slender elbow
#

eh

thorn isle
slender elbow
#

the async one has no reason to be tick-bound

thorn isle
#

the other issue, which isn't really intrinsic to them, is that pre java24, you can easily exhaust your os threads if your virtual threads happen to get pinned to them, which is completely out of your control and can't be accounted for

#

eeeh i still sometimes use the async scheduler when i need something to happen n ticks later, but async

#

for stuff i want done immediately i toss them into an executor service

slender elbow
thorn isle
#

doesn't really make any difference if the server is running at 20tps i guess but in principle some things should be bound to the tick loop despite being async

slender elbow
thorn isle
#

i can't exactly recall an example either but i'm sure it has happened at least once lol

thorn isle
#

except for something that's very throughput sensitive like the main server thread maybe

#

no clue though, i haven't actually tested making everything virtual and seeing what happens

slender elbow
#

i am just not a fan of the idea of hogging the underlying scheduler with compute-bound tasks when doing so provides no benefit

thorn isle
#

mmmaybe, though that's pretty similar to how thread pools work; you shove your tasks into a queue and they get done at the pace the pool can keep up

#

what i'd like to see with virtual threads is more control over how they get assigned to os threads

#

right now i think they have free reign to mount any hardware thread completely willy nilly, so one virtual executor with a billion tasks can easily exhaust another

#

i wouldn't mind having a bounded thread pool and then a virtual executor on top of it that can only mount the os threads from the pool

#

though i suppose that does go against the point of virtual threads; short-lived and mostly-blocking

slender elbow
#

they've been experimenting with allowing for custom scheduling and stuff but it isn't going to be here tomorrow, lol

slender elbow
#

why

#

idk anything about advancedban or deluxemenus

eternal oxide
#

?ask

undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

thorn isle
#

do it here in this channel; random people who happen to chat here aren't your personal plugin support hotline

#

and yes ask your specific question (here) if you need help with something

eternal oxide
tight cliff
#

minecraft can detect if player made correct structure like nether portal and end frames

#

so how do I add new something like that

#

For example check if the structure match what it should be .
In short How can I check player made a custom portal like ether gate?

slender elbow
#

manually, by checking the surrounding blocks of the structure you want to identify

#

that's how the game does it

young knoll
#

You can create a system to check against a collection of blocks

#

And then load that collection of blocks from something like a structure file

short pilot
#

is PlayerSpawnLocationEvent called after PlayerJoinEvent

#

What's the best listener to use for when a player actually goes in Minecraft server

#

so I can display welcome text on their screen

sullen marlin
#

Join Event

thorn isle
#

with some caveats

short pilot
#

wait no

thorn isle
#

e.g. the resourcepack loading screen and the new code of conduct screen

short pilot
#

with the new code of conduct, join event is called when it first shows

#

but the player hasnt spawned in yet

#

i think (?)

short pilot
#

wow we both had the same thought

thorn isle
#

yeah several things can pop up immediately after the join event

short pilot
#

is that an intended effect by the way

thorn isle
#

personally since i run a 🏴‍☠️ server i just run the welcome things after players /login; you might have to listen to them moving for the first time or something

#

right

#

there is an event for the resourcepack being loaded

#

so you can use that to delay the messages until that screen goes away

#

about the code of conduct, i'm not sure

#

you ought to be able to intercept the packet if nothing else

buoyant viper
#

can i sail the seven seas

quaint basin
#

For a pool of operations in MySQL, should I use newCachedThreadPool or fixed?

quaint basin
#

I'm using Executors.newFixedThreadPool(10); which is the maximum number of connections in my database pool. Am I correct?

Sets the maximum size of the MySQL connection pool.

- Basically this value will determine the maximum number of actual

connections to the database backend.

- More information about determining the size of connection pools can be found here:

https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing

maximumPoolSize: 10

buoyant viper
#

so funny how copying text from what im assuming is a github wiki page copies the markdown

young knoll
#

Pretty sure a fixed thread pool will always have that many threads active, they’ll just be idle if not needed

#

Whereas a cached one can grow and shrink dynamically, but you don’t have direct control over it

#

However you can make your own ThreadPoolExecutor with specific limits

#

Or, you could just use Hikari

quaint basin
quaint basin
#

return CompletableFuture.supplyAsync(() -> {

        try (DatabaseExecutor executor = database.execute()) {
             executor.query(..);
        }

  }, databaseExecutor);
quaint basin
young knoll
#

I mean you don’t

#

You can technically just use the default

quaint basin
quaint basin
quaint basin
young knoll
#

Hey the common pool needs to earn its pay!

thorn isle
#

anything that is blocking or io

#

network operations like mysql queries are blocking io

ancient plank
tardy lodge
#

hi guys when can we expect the latest 1.21.11 version in build tools

sullen marlin
#

When 1.21.11 is released

vast ledge
#

xD

mortal vortex
#

Surely John Spigot gets early access builds?

cursive kite
#

Is there any place I can go for outdated help?

sullen marlin
#

There's no rule against asking here, but it's up to people if they want to help you

#

If it's something trivially done in newer versions then people are especially unlikely to help

cursive kite
#

Spigot 1.8.... Invisible players in teams (Tab sorting) name tags show, I searched all of google can't find a solution... I tried ProtocolLib. What should I use to fix it?

chrome beacon
#

Did you place the players in the same team

cursive kite
#

Nope P1 in one team P2 in another

#
            TeamTemplate template = rank.getTeamTemplate();

            for(String entry : template.getPlayers()) {
                User target = Server.getUser(entry, "FSB");
                if(target == null) continue;

                Team team = sBoard.registerNewTeam(rank.getOrderID() + (entry.length() > 6 ? entry.substring(0, entry.length() - 6) : entry));

                String relationColor = ChatHandler.getColor(user, FactionManager.getFaction(target));

                team.setPrefix(ChatColor.translateAlternateColorCodes('&', template.getPrefix()) + 
                        ChatColor.translateAlternateColorCodes('&', target.getNameTagPrefix()) + 
                        ChatColor.translateAlternateColorCodes('&', relationColor));

                team.setAllowFriendlyFire(true);
                team.setCanSeeFriendlyInvisibles(false);
                team.addEntry(entry);
            }
        }```
#

and name tags still shown to each other

umbral ridge
#

Why is everythibg in a for statement

cursive kite
#

Max team name length

tranquil pecan
#

Currently, I have a loop that runs every 20 ticks, constantly checking the player's main-hand item. It stores the item in a map and applies its stats to the player. On the next tick, if the held item doesn't match the current item, it retrieves the old item from the map, removes its stats, and applies the stats of the new item if it is valid.

I want to know which approach is better
checking every 20 ticks, or using event listeners like the held item change event, player item drop event, player right-click event, etc.

sly topaz
sly topaz
#

what you are doing right now sounds like attributes, is there any chance you could just use those instead? What stats do you apply onto the player?

#

also, you'd want to check every tick instead of every second, otherwise it is just inaccurate

tranquil pecan
#

Some are attributes and some are custom

sly topaz
tranquil pecan
#

Actually, it's just a simple skill plugin

sly topaz
#

though criticals are a mechanic and not a chance thing so unsure how that works

tranquil pecan
#

oh yes Why I didn't think of this beforeinflatable

tranquil pecan
#

Anyway thanks for the suggestion!

outer ember
#

Why there is diffrence between bukkit velocity and bungee?
why make devs work harder?

sly topaz
#

too bad Spigot doesn't expose DamageSource#isCritical, would've made things simpler

sly topaz
onyx fjord
#

Bungeecord and velocity are standalone proxies

sly topaz
#

it doesn't make anyone's job harder, you just choose one and go with that if their goals align with yours

onyx fjord
#

Bungeecord is constructed api-wise similar to spigot

#

Sharing some apis

#

And velocity is its own thing

#

With googles DI

#

Forgot what it was called

sly topaz
#

guice or dagger

onyx fjord
#

Guice

#

Personally very annoying to work with

#

Things that would normally be compile errors become runtime errors

sly topaz
#

but the same thing applies when trying to support spigot and paper, or spigot and fabric. At some point your life will be harder because you are making your scope bigger, but that's a decision for you to make

onyx fjord
#

Spigot and paper isn't much work

#

Just use spigot api

#

And optionally paperlib

sly topaz
#

that was before hardfork, it isn't so simple anymore

onyx fjord
#

Hardfork isn't a thing yet

sly topaz
#

it has been a thing for a good while now

#

you've been out of the loop huh? Lol

onyx fjord
#

I'm aware of the development

#

Honestly I don't think it would get much attention

tight cliff
sly topaz
#

oh nevermind, they seem to have replaced that

thorn isle
#

Tools for their jobs

#

Nobody wants to eat soup with a spork

pseudo hazel
#

first of all bukkit and bungee/velocity do completely different things

#

secondly, velocity is maintained by the paper team iirc

#

its like asking why there are multiple soda brands because it makes it hard to choose one to buy, its just because they do different things in different ways, but are ultimately used for the same goal

thorn isle
#

Velocity is to bungee roughly what paper is to spigot; setting aside that it's a rewrite rather than a fork, it serves the same purpose

young knoll
#

I think it would be more like what fabric is to spigot

slender elbow
#

i reckon sponge would be a fairer comparison

young knoll
#

Hmm

#

Fair

slender elbow
#

precisely!

buoyant viper
#

sponge is basically fabric server

#

ezpz

autumn zinc
#

Does a server sends a persistent data container of ItemStack to a player?

thorn isle
#

it is sent as part of the item, yes

#

specifically the custom_data component

autumn zinc
#

for entities, chunks and worlds similarly?

young knoll
#

No

thorn isle
#

worlds i don't think so, not chunks either, but entities yes

young knoll
#

I don’t think it’s sent on entities

thorn isle
#

i'm faaairly sure it is since it's just shoved in the same nbt that gets thrown at the player in the entity meta packet

#

or hold on, entities use that watched data property shit now

young knoll
#

It wouldn’t even be saved on entities if spigot didn’t patch it

thorn isle
#

might not get sent in that case

#

it definitely exists in the nbt, but i recall that entity meta packet isn't just a nbt blob now, but that each entity has "properties" that are sent over individually, similarly to item components

young knoll
#

That’s been a thing for a while :p

#

Look at the entity and press F3 + Shift + I to copy it’s clientside data

thorn isle
#

BukkitValues: {

#

looks like it is sent

#

odd

young knoll
#

You held shift right?

#

Should say it copied client side data

thorn isle
#

hm

#

alright yeah looks like i didn't press shift

#

what an unwieldy key combination

#

but yeah doesn't appear in clientside data, makes sense

autumn zinc
#

So... only itemstacks?

thorn isle
#

seems like so

young knoll
#

Yeah

sullen marlin
#

Yep because the client sends back ItemStacks to the server

#

So if it's not sent, then fun

vivid zodiac
#

Hi, I'm trying to find the net.md_5.bungee.api dependency.
Where is it located now?

#

MB i import the wrong jar..

onyx tiger
#

Whats up devs, with Uautorestart, is it
possible to send all players connected to one server, to a different "limbo" server while the other one boots back up, once it is finished all players are sent back to respective servers ?

#

Should i be using a different restart plugin ?

thorn isle
#

that's feasible, and i do that

#

just a few lines of code on a proxy plugin + a companion backend plugin

onyx tiger
#

i have 0 knowledge on writing plugins and very little on scripts

thorn isle
#

there is a command that links java tutorials but i don't remember what it is

onyx tiger
#

agh i think i know what you're talking about

thorn isle
#

if you're looking for a pre-existing plugin, you probably should ask in help-server

onyx tiger
#

how hard is it to get into making plugins?

#

even ones that small

thorn isle
#

depends; i know some who couldn't get into it to save their lives, to others it comes almost naturally

#

if you've done any sort of scripting before, it makes things easier

#

it's not that complicated in the end, but then again, that's what everyone says about everything

onyx tiger
#

thanks

onyx tiger
#

took 2 hours

echo basalt
#

Do any of y'all nerds have a FastBoard variant that lets me change player nametags and stuff

#

cba doing it myself

lavish wing
#

Hello guys!
Can anyone help me with spigot stash downloading?

#

After 5 minutes it just shows EOF error

#

I ve also tried to download via Gitea but..

sly topaz
#

I would recommend just running BuildTools, that way you have all the relevant repos cloned in a place

lavish wing
#

From 1.8 to 1.3.2 and 1.6.4

sly topaz
#

I don't think those versions are in the repository anymore

#

if git history was kept clean, you might be able to

#

but for those versions, I would recommend just running LegacyFabric

lavish wing
#

That's the main question: is buildtools contains .git history?

sly topaz
#

yes

lavish wing
#

Oh, nice

#

Thanks

sly topaz
#

like, it clones the respective repositories (That is, Spigot, Bukkit, CraftBukkit)

sly topaz
#

there's little benefit to running spigot in 1.3.2 (if that even existed, not sure when Spigot started their Bukkit fork)