#help-development

1 messages · Page 1328 of 1

wet breach
#

thank you and lol

mortal vortex
#

is there any guide on the forums for mod x plugin communication?

#

In regards to spigot plugins that act as the service layer between client side mods.

sullen marlin
#

Plugin messages

dense geyser
#

might be doing something silly, using paper 1.21.11 jar, 1.21.11-R0.2-SNAPSHOT, getting this when I try to set gamerules?

Class org.bukkit.GameRule does not have member field 'org.bukkit.GameRule MOB_DROPS'

happening with a few, SPAWN_MOBS is doing it too

#

yeah, these are the fields that the server has [06:34:59 INFO]: [Pink-Core - INFO] ANNOUNCE_ADVANCEMENTS, COMMAND_BLOCK_OUTPUT, DISABLE_PLAYER_MOVEMENT_CHECK, DISABLE_ELYTRA_MOVEMENT_CHECK, DO_DAYLIGHT_CYCLE, DO_ENTITY_DROPS, DO_FIRE_TICK, DO_LIMITED_CRAFTING, PROJECTILES_CAN_BREAK_BLOCKS, DO_MOB_LOOT, DO_MOB_SPAWNING, DO_TILE_DROPS, DO_WEATHER_CYCLE, KEEP_INVENTORY, LOG_ADMIN_COMMANDS, MOB_GRIEFING, NATURAL_REGENERATION, REDUCED_DEBUG_INFO, SEND_COMMAND_FEEDBACK, SHOW_DEATH_MESSAGES, SPECTATORS_GENERATE_CHUNKS, DISABLE_RAIDS, DO_INSOMNIA, DO_IMMEDIATE_RESPAWN, DROWNING_DAMAGE, FALL_DAMAGE, FIRE_DAMAGE, FREEZE_DAMAGE, DO_PATROL_SPAWNING, DO_TRADER_SPAWNING, DO_WARDEN_SPAWNING, FORGIVE_DEAD_PLAYERS, UNIVERSAL_ANGER, BLOCK_EXPLOSION_DROP_DECAY, MOB_EXPLOSION_DROP_DECAY, TNT_EXPLOSION_DROP_DECAY, WATER_SOURCE_CONVERSION, LAVA_SOURCE_CONVERSION, GLOBAL_SOUND_EVENTS, DO_VINES_SPREAD, ENDER_PEARLS_VANISH_ON_DEATH, ALLOW_FIRE_TICKS_AWAY_FROM_PLAYER, TNT_EXPLODES, LOCATOR_BAR, PVP, SPAWN_MONSTERS, ALLOW_ENTERING_NETHER_USING_PORTALS, COMMAND_BLOCKS_ENABLED, SPAWNER_BLOCKS_ENABLED, RANDOM_TICK_SPEED, SPAWN_RADIUS, MAX_ENTITY_CRAMMING, MAX_COMMAND_CHAIN_LENGTH, MAX_COMMAND_FORK_COUNT, COMMAND_MODIFICATION_BLOCK_LIMIT, PLAYERS_SLEEPING_PERCENTAGE, SNOW_ACCUMULATION_HEIGHT, PLAYERS_NETHER_PORTAL_DEFAULT_DELAY, PLAYERS_NETHER_PORTAL_CREATIVE_DELAY, MINECART_MAX_SPEED, and these are mine https://sourceb.in/qEXCPV1hYh ?

smoky anchor
dense geyser
smoky anchor
#

Paper hard forked so there can now be bigger changes.

#

Someone please correct me.
I think you need multi-module dev setup to create parts for spigot and paper if you want to support both.

dense geyser
#

ah, thanks for that, the branch im working on for the project hasn't been transferred to folia which is something that we're doing slowly yet, so once that happens, I'll probably end up using the paper api anyway - ill just leave the missing ones commented for now, thanks 🙂

blissful salmon
#

I had a question what is considered a good tps for 500 villagers inside of one chunk? without the AI turned off?

#

I am making my own custom TPSResilience plugin right now and I have been able to get 13.78 tps at 722 chickens and 655 villagers in one chunk. it isnt great but I dont think its bad?

smoky anchor
#

Try playing survival with that TPS then.
It's bad

blissful salmon
#

Sorry I mean its not bad in retrospect of not limiting spawn rates and removing AI functions from villlagers I am kinda curious what other servers tps would be at at that many villagers from my understanding tps would start plummiting at 50 villagers 500 is definitely a stride and 1,000 has been achieved with turning off the AI that the villagers use.

#

I am still refining currently what is occuring is that collisions are causing issues which I am fixing that as we speak.

rotund ravine
#

You’d want tps to be 20 you’re welcome. Mspt 50 or less

blissful salmon
#

The idea is to create server resistance against people who like to lag out servers so we can identify it before it gets out of hand.
@rotund ravine No durr, but again I am trying to compare to other servers with high entity situations like villagers.

#

it helps me understand where and what I can refine for my plugin

#

I am running a factions + survival server on one map on one server with both claims occuring on the same map, I know I will get people who troll which is why I am trying to create my own solutions to problems ahead of time.

hybrid spoke
blissful salmon
#

I see, I was able to get to 750 entities in one chunk with 20tps but my plugin ran into issues past that. Thats super interesting about multiple clusters, I plan to run this on a dell r720 with 48 cores. Interesting I will have to implement my own parallel processing for mobs it might actually help with what I am trying to accomplish, I decided to add a secondary system which stacks mobs by closes neighbor if over the 300 base entity limit. Good to note you can parallel process them W reply.

#

750 villager entities to be specific

drowsy helm
#

many factors to consider with that, it's not smooth sailing unfortunately

#

Also with an R720 expect far worse performance than your pc. Core count won't be of much use

blissful salmon
#

My mistake I am tired
"
Async is a Fabric mod designed to improve entity performance by processing entities in parallel using multiple CPU cores and threads. It aims to maintain stable TPS (ticks per second) even with large numbers of entities, such as 9,000 villagers, by leveraging multithreading.< multi threading leveraging."
It seems this is difficult as we cannot modify how minecraft itself handles it. I am instead taking the approach of manipulating the AI functions to see if that helps push me into the 1000 villagers range in a chunk.
You are more than likely correct, I do wanna fix that at one point but I just recently got into creating my own plugins. So I am simply having fun and seeing the limitations to minecraft with quick wins and losing where I need to to figure out a architecture that might allow me to fix these issues.

onyx fjord
#

Why you need so many villagers in a chunk

#

U are gonna fry the client

#

No matter how beefy

drowsy helm
#

I've seen many plugins which claim to fix large entity count stuff and none really ever work well. Best course of action is just entity stacking

blissful salmon
#

I am testing my plugins resilience since it is a custom plugin. I am attempting to run a factions / survival server on one map while attempting to keep it semi vanilla including redstone (other than custom plugins that reduce TPS issues from autofarms)

hybrid spoke
drowsy helm
#

The problem with async AI is that chunk access isn't threadsafe

blissful salmon
#

Entity stacking is great I am implementing that but allowing a base amount of mobs that stick to original AI functions.

hybrid spoke
#

i think best option would be to write a detection system for the bad-intends, rather than trying to fight them

#

which is really hard, since you have to differentiate "i want to have a HUGE chicken farm!" from "i will crash the server with LOTS of chicken!"

onyx fjord
#

There's a billion solutions for that

hybrid spoke
#

game over once someone builds a KFC fabric

hybrid spoke
onyx fjord
#

That's like the use case for stacking plugins

#

Excluding vanilla spawns

#

Only area based merging

hybrid spoke
#

yeah you're right. i was joking anyways. but in terms of villagers which have a profession it's not that easy i fear

onyx fjord
#

Villagers have no use at this quantity

#

They have no drops, most farms need 5 at most

blissful salmon
#

Agreed its more that villagers cause higher tps issues because of their AI and how it works their tickrate cost per say.

onyx fjord
#

To get all trades you need what like 40

blissful salmon
#

I have every spawner in the game in my /shop I do not doubt someone will find an abuse.

hybrid spoke
#

yeah, but you can't just stack them together since you can't cover all trades in a x40 villager

#

so you basically have to let them slide

onyx fjord
#

You can dumbify villager ai if in closed area or sum

hybrid spoke
#

sure you can detect A TON of villagers and automatically merge them as a safety thing

blissful salmon
#

Technically the correct method is to disable their AI but struggling is more fun.

#

In retrospect the best decision in these cases is to used stack mobs, and limit mob counts per chunks. I guess I like to see the hordes of mobs in my grinders which I dont doubt others enjoy too its why I am attempting to have fun tackling these sorts of problems.

hybrid spoke
#

just write a plugin which automatically turns villagers with a profession into a static shop. if one already exists, others get merged into it, giving you a multi-page shop

blissful salmon
#

^^ not a bad idea lowkey

onyx fjord
#
  1. Limit smart villagers in chunk
  2. Villagers exceeding the limit become dumb
  3. Alternatively player can dumbify a specific villager to not hit the quota
#

With a name tag for example

blissful salmon
#

Yeah thats essentially what I am doing I call it "sleep" mode. 300 are enabled in 1 chunk at a time the rest are put in "sleep" minecraft had a limit on how many mobs can be in one chunk I disabled it and got around 1,000 villagers at 10 tps ;-; but ill keep playing around with it I was thinking of taking those 1,000 entities and stacking them in stacks of 10 for example which leads to 100 entities but it feels like cheating doing so ngl.

#

at 750 I get around 18-20 tps which isnt bad at all.

onyx fjord
#

Just define a hard limit

#

Soft being smart limit
Hard being smart + dumb

#

And that's your solution

#

And honestly that can work for any mob

blissful salmon
#

I think your missing the point, the point is I want the max amount of mobs possible with minimal tps reduction without using generic solutions But I appreciate the solution and will likely use that for my implement till I come back to developing this plugin.

onyx fjord
#

Hmm, what's the point of having this many mobs in a chunk tho

#

As I said, no PC will handle that with playable fps

#

Without crazy culling

#

And even with that you'd need them not close together but separated

blissful salmon
#

Of course THATS the point. If people who abuse this system will crash their pc before the server.

hybrid spoke
#

i feel like his intention is to not reduce the vanilla feeling while providing max performance at any cost

blissful salmon
#

we will have information of where its occurring and cull the enormous amounts of mobs.
GodCipher gets it!

onyx fjord
#

Hmm, what about sending some mobs as fakes

#

That aren't on the server

#

But client

blissful salmon
#

Interesting!!!

hybrid spoke
#

wouldn't that break some logic, for example farms.. chicken laying eggs etc?

onyx fjord
#

Not sure, but for villagers it seems valid

#

You can simulate the trading menu and villager's state

hybrid spoke
#

so saving performance on the server in expense of the player

onyx fjord
#

Fake vs real has no difference for the client

hybrid spoke
#

would prefer stacking over that honestly

blissful salmon
#

well my code already have a re enable state for mobs that are in sleep mode allowing for user to interact with villagers that are in sleep mode, the multi page and multi stacking might not be a bad idea, but differentiating them when you are trying to place names might become risky.

#

well a player that is playing the server normally and walks into their chunk at 10 fps will realize hey maybe this is to much for my pc to handle ill cool down.

onyx fjord
#

I wonder what's the biggest hit for the client from an entity

blissful salmon
#

Probably doors / minecarts/ tnt or the armor stands on pistons getting pushing up with slime.

onyx fjord
#

So collisions and other calcs

blissful salmon
#

Ye

#

Collisions are hard to calculate because its always calculating 1 block at a time forward backwards left or right.

#

3d essentially

onyx fjord
#

Guys we are getting GPU accelerated chunk gen

#

Isn't that crazy

blissful salmon
#

Only took 50 years

#

the float points go hard

onyx fjord
#

Wonder when it's gonna be on gh

blissful salmon
#

gh?

onyx fjord
#

Afaik development rn isn't public

#

It's for c2me mod

#

But can be ported to spigot etc

blissful salmon
#

Noice

lilac dagger
#

I can't see servers benefing from accelerated chunk gen

onyx fjord
#

Why so

lilac dagger
#

They don't come with a gpu no?

#

The servers

onyx fjord
#

Then you can get one with a gpu

lilac dagger
#

I guess

blissful salmon
#

Usually you need a gpu cluster you can add gpu's sometimes like my dell r720 has a 1080 ti on it.

onyx fjord
#

If you're a big single map server you'll benefit from that

#

The cost would be valid for the gain

blissful salmon
#

Well you wouldnt need a beefy gpu either. since gpu's process so fast. depending on how it works of course.

onyx fjord
#

I'd say even integrated cards would bring significant gains

#

Def won't need anything current gen

#

Or even last

blissful salmon
#

If anyone wants to mess with the AI generated slop plugin im making I wouldnt mind sending it over.

onyx fjord
#

Oh gosh what is it

blissful salmon
#

Its essentially a plugin that assists in reducing tps issues from mobs but I am updating it.
I can send you the goal that I have for the plugin if youd like (kinda long for this chat and unsure if its welcomed to be posted here)

onyx fjord
#

Post it on GitHub I'll have a look

blissful salmon
#

Sent

#

use the .bat to build the .jar just search .jar to find it.

#

at 1000 mobs with 19.98 tps hmm lets see how much more abuse it can take.

wet breach
#

this means hosting centers will end up with them as well

echo basalt
#

different boxes for different purposes

#

compute nodes generally don't

#

AI nodes do

#

storage nodes don't

#

you aren't gonna toss a gpu on a storage box for the sake of maybe repurposing it for AI in the future

wet breach
#

that is not what I am talking about

echo basalt
#

more servers will come with GPU's out of the box

#

You'll have more purpose-built AI machines

wet breach
#

manufactures typically limit the varieties they sell

#

This means, it will most likely just be standard that servers will just have GPU's

#

leaving the customer to remove such things if they don't want it

#

in fact, even if they were to keep such things separate hosting centers may still order them as the cost may not be significantly different in having a GPU come with it.

lilac dagger
#

gpus are quite expensive tho

#

if we're gonna see hosting centers having them it will be for a good reason

wet breach
lilac dagger
#

even if you buy in bulk it's still expensive

wet breach
#

it is still cheaper

lilac dagger
#

and nobody will put gpus in their data center without a demand from costumers

#

majority of costumers don't train ai

#

if it makes sense

wet breach
#

gpu's are not just for AI, however datacenters don't always get the choice of what the box comes with

#

if the demand is high enough for the manufacturers to focus on putting GPU's into server boxes, they may just streamline their process where they just put GPU's into all boxes. This keeps cost down on your assembly line by not having multiple varieties of assembly lines or too many

#

this means for customers regardless of who they are, except personalized contracts, would not have a choice getting a gpu in their box when they purchase it. Most hosting places would just leave them in as they would need to figure out what to do with all the GPU's they rip out

lilac dagger
#

we'll see

#

i still think it's too expensive to buy in bulk gpus

wet breach
#

not sure why

#

the basics of economics disagrees on that

#

otherwise no one would bother putting in massive bulk orders or limit bulk orders. This would remove marketing in negotiating contracts on bulk orders

#

normal consumers obviously wouldn't benefit but that is because typically your average person is not able to order the minimum amount in regards to bulk to where the cost is lower vs buying individual

blissful salmon
#

Or just throw a 1080 ti in it and call it even

thorn isle
#

eyeballing the current prices of gpu hours on gpu hosting and the supply-demand graph for gpu's, i don't think that's going to happen

blissful salmon
#

^ 1080 ti's are 100$

thorn isle
#

besides, for things like ai/llm's which are the main driver behind the gpu hype right now, you typically don't just want one gpu, but multiple

#

so the box in your datacenter coming with a gpu doesn't really help

#

the current meta of gpu compute and cpu compute being sold and housed separately is probably going to continue

waxen plinth
lilac dagger
#

does it have a maven repo?

waxen plinth
onyx fjord
#

Maybe it's not in central

#

Check the readme

lilac dagger
#

yeah

waxen plinth
#

its under dependinces

dependencies {
compileOnly("io.papermc.paper:paper-api:1.21.11-R0.1-SNAPSHOT")
testImplementation(platform("org.junit:junit-bom:5.10.0"))
testImplementation("org.junit.jupiter:junit-jupiter")
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
compileOnly("de.tr7zw:item-nbt-api-plugin:2.15.5")
}

lilac dagger
#

you need to specify the repository otherwise

waxen plinth
#

i think i did

lilac dagger
waxen plinth
#
repositories {
    maven {
        name = "CodeMC"
        url = uri("https://repo.codemc.io/repository/maven-public/")
    }
    maven { url = uri("https://repo.papermc.io/repository/maven-public/") }
}
lilac dagger
#

you're missing this

waxen plinth
#

yee

#

i put that in

lilac dagger
#

good

waxen plinth
#

and then here's my plugin.yml

name: EnderBite
version: 1.0.0
main: io.github.meletion.enderbite.ExamplePlugin
description: Enderbite Plugin
author: Meletion
website: https://meletion.github.io
api-version: '1.21.11'
depend: [NBTAPI]
lilac dagger
#

for depends i recommand doing it like this:

#

depend:
- NBTAPI

waxen plinth
#

wait where

lilac dagger
#

depend: [NBTAPI]

#

here

#

it's easier to add a new dependency

waxen plinth
#

ahh

#

still doesnt fix my problem though lol

#

thx for that though haha

#

don't need it twice haha

lilac dagger
#

just wanted to show you how ugly it can get later

waxen plinth
#

yeah def

#

do you know of anyway to fix it or no?

lilac dagger
#

fix what

#

api version?

#

i'm not sure 1.21.11 is valid

#

it should be 1.21

young knoll
#

I think it is, minor versions were added at some point

lilac dagger
#

ah i see

young knoll
#

Tho why would you need NBT api in 1.21

lilac dagger
#

oh yeah

#

true

#

persistent storage is amazing

waxen plinth
#

im using craft engine and i want to pull down custom data so i can program in sfx and right click detection

#

1.21.11

#

is my version im using

young knoll
#

I mean surely they have an api for that

waxen plinth
#

who

waxen plinth
young knoll
#

CE

waxen plinth
#

java is more complex though, like i could do a ring of flame particles with for loops

waxen plinth
lilac dagger
#

did you reload in gradle?

thorn isle
#

Do you have it on your compile classpath

waxen plinth
#

using net.minecraft now

lilac dagger
#

so you're not using the api?

grim hound
#

How does something like this even happen

#

Like genuinely

#

No shading

#

One class

#

HOW DOES ONE ACHIEVE A LINKER ERROR IN PURE JAVA

lilac dagger
#

it might be the unsafe api or how it's called

grim hound
#

No-

thorn isle
#

when resolving interface method 'boolean FloodgatePlayer.sendForm(Form)': PluginClassLoader @30135202 of the current class, and the class loader PluginClassLoader @44afefd5 for the method's defining class, FloodgatePlayer, have different Class objects for the type Form

#

sounds like ABI incompatibility

grim hound
thorn isle
#

are you building against and running the same version

grim hound
#

A guy using my plugin got this and I can't really reproduce it

chrome beacon
#

hm? Is org/geysermc/cumulus/form/Form loaded twice in two different class loaders?

grim hound
#

But I can tell you that I use the geyser api by linking its built jar as a runtime dependency

chrome beacon
#

Make sure you're not shading the Form

grim hound
#

Am not

thorn isle
#

this can also happen if there has been ABI breakage in between the artifact you're building against and they are running

#

e.g. if Form used to be an abstract class and is now an interface, or vice versa

chrome beacon
#

right that too

thorn isle
#

i don't remember if it will emit this specific error, but it will look very similar

chrome beacon
#

I don't think that's the exact message you get

#

but I can check real quick

thorn isle
#

it will still compile (is API compatible) but the binaries (the B in ABI) are no longer compatible since the bytecode is different

grim hound
#

Alr I'll check if that's the case

chrome beacon
#

java.lang.IncompatibleClassChangeError: Found interface org.bukkit.inventory.InventoryView, but class was expected
yeah it will look like this

#

if the type changed

#

so I don't think that's whats happening

thorn isle
#

have them send you the jar they're using an unzip it and see if it has the form class or whatever else inside it

#

you're declaring whatever that is as a dependency as well, right

#

i know the paper guys do weird classloader shit with dependencies for paper and i think possibly velocity plugins

chrome beacon
#

Could also be one of them hotswap plugins installed

#

though idk if they exist on Velocity

solid heart
#

How would I detect when a player equips armor via right click? Minecraft version 1.8.9

lilac dagger
#

playerinteract event

#

on highest priority

#

check for is cancelled

#

if not it should go through as equiped

#

@solid heart

solid heart
lilac dagger
#

just check if the item in hand is armor

#

event.getItem();

solid heart
lilac dagger
#

this one works for either main hand or offhand

#

yeah, check armor slot if it's empty

solid heart
lilac dagger
#

ah then just player.getitem in hand

solid heart
#

Dumb question, I just wasn't sure if there was an easier way. Thanks for 🦆

#

There's a lot of ways to equip armor...

#

I might just make an event for all of them

lilac dagger
#

equip like via a plugin?

mortal vortex
solid heart
lilac dagger
#

yeah well

#

if it's only what players can equip then interact is your go to

#

sure you'll need a list of materials

#

but that's about it

#

or map actually

#

get that O(1) contains

solid heart
lilac dagger
#

you can get the slot of the armor type pice

solid heart
lilac dagger
#

map.put(Material.LEATHER_HELMET, 0);

#

map.put(Material.LEATHER_CHESTPLATE, 1);

solid heart
#

Why is that faster?

lilac dagger
#

you're gonna check later the material on equip no?

#

and if the slot of armor is empty

#

Integer slot = map.get(iteminhandtype);
if (slot != null && player.getinventory.getArmorContents()[slot] == null {
//item is armor and can be equiped
}

#

you can even replace the integer with method functions

#

for get helmet, chestplate

#

and not call on the array every time with the slot

solid heart
#

Ahh I see

#

So in the map, all helmet materials would have a value of 0, and all chestplates 1, etc?

lilac dagger
#

i think so yeah

#

i don't remember exactly how the indexes are put in the armor contents array

solid heart
#

Probably not substantially faster but I see what you're saying

lilac dagger
#

it is faster than having all the armor items type in a list

#

every call would iterate through quite a few armors

#

and you also won't get the slot of the armor type

solid heart
#

Definitely faster yeah

#

Just, not that many types of armor and equipping an armor piece does not happen very frequently

lilac dagger
#

well, you can do it any way you like

solid heart
#

So probably little noticeable impact, but definitely faster

solid heart
lilac dagger
#

it is true too

solid heart
#

Yeah

lilac dagger
#

you can make the map static final

#

so you don't create the map every time you interact

#

that wouldn't make sense

solid heart
#

Yep, toss it in the ol' Util class

lilac dagger
#

or you can put it somewhere in the class tree where it would make sense

#

but static final makes the most sense to me for something that will remain the same all the time

#

also make sure it's immutable 😄

thorn isle
#

lol apparently the paper hangar guys forgot to actually put auth on the upload api

#

Anyone could've uploaded any plugin "update" with malware and infected any server downloading from hangar

#

For God only knows how long

lilac dagger
#

is that a site?

thorn isle
#

Basically their spigot forums/resources

lilac dagger
#

oh paper itself

#

ouch

thorn isle
#

Doesn't matter that much since probably all of 20 people use the site

lost schooner
#

So how do I get my Maven project pulled from Github to properly download sources and stuff because none of the bukkit stuff and a lot of other stuff isn't resolving
Also I have no build or run configurations

#

I'm not sure how to build it

lilac dagger
#

click install

#

it'll download all the dependencies

#

install in maven's lifecycle

#

it's on the right marked with an m in intellij

lost schooner
#

Is it Download Sources and Documentation?

lilac dagger
#

no

#

click lifecycle

#

and then click package

#

or install

#

if you don't care about your local repository package is sufficient

lost schooner
#

Ohh I remember this kind of thing from Gradle

lilac dagger
#

they do the same task so yeah 😄

lost schooner
#

location of system modules is not set in conjunction with -source 15

#

what do I have to set to fix this

#

It's giving me CLI flags but I don't know what GUI options they correspond to

#

Does this actually mean that they are using JDK 15?

#

Seems really old

lilac dagger
#

<properties>
<maven.compiler.source>21</maven.compiler.source>
<maven.compiler.target>21</maven.compiler.target>
</properties>

#

put this in the pom above dependencies

#

or add them to your existing properties

#

if they have one

lost schooner
#

class file has wrong version 61.0, should be 59.0 ?

#

This is after trying to install JDK 15, clean, and then install

lilac dagger
#

make sure you have a jdk of at least 21

lost schooner
lilac dagger
#

it'll be solved by the maven compiler

#

but you can set it to 21 if you want

lost schooner
#

compile seems to work for building the thing

#

So is there a good way to just put that in the build configs

lilac dagger
#

the jar should be in the target folder

lost schooner
#

It does

#

Just mostly asking if I can link the Maven scripts to the main run/build options

lilac dagger
#

what do you mean by build/run configuration

#

like gradle run script?

#

maven doesn't come with something like that

lost schooner
lilac dagger
#

we don't have a main in plugins like you would in standalone applications

lost schooner
#

Well thank you for your help 😄

lilac dagger
#

no problem

#

to load a plugin just drop it in the server

#

the one you find in target

lost schooner
#
@Override
public void open() {

    Config config = Config.getInstance();

    gui = Bukkit.createInventory(null, config.getCategoriesMenuSize(), category.getFormattedDisplayName());

    // Main category item

    gui.setItem(
            config.getCategoryItemSlot(),
            MarketMenuManager.getInstance().generateItemStack(
                    category.getMaterial(),
                    category.getFormattedDisplayName()));

    // Fillers

    Component fillerComponent = MiniMessage.miniMessage().deserialize(Lang.get().message(Message.GUI_FILLERS_NAME));

    ItemStack filler = MarketMenuManager.getInstance().generateItemStack(
            config.getCategoryFillersMaterial(),
            BukkitComponentSerializer.legacy().serialize(fillerComponent)
    );

    for (int i : config.getCategoryFillersSlots())
        gui.setItem(i, filler);

    player.setMetadata("NascraftPage", new FixedMetadataValue(Nascraft.getInstance(), 0));
    update();
}
```In the plugin on my server, the category menu gets filled as normal. However, when I build the plugin myself, it shows up like the below image. There should be a bunch of items in there. Not sure what's going on ?
#

Let me know if more context is needed

lilac dagger
#

error?

lost schooner
#

It doesn't throw any

chrome beacon
#

Do you have the same config?

lost schooner
#

yes

#
[10:30:37 WARN]: [Nascraft] path to 'plugins/Nascraft/data/sqlite.db': '/Users/lthoerner/IdeaProjects/Nascraft/server/plugins/Nascraft' does not exist
[10:30:37 WARN]: [Nascraft] Task #6 for Nascraft v1.9.3 generated an exception
java.lang.NullPointerException: Cannot invoke "java.util.HashMap.keySet()" because "debtors" is null
        at Nascraft-1.9.3.jar//me.bounser.nascraft.managers.DebtManager.lambda$checkMargins$0(DebtManager.java:44) ~[?:?]
        at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1761) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1616) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:427) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.processPacketsAndTick(MinecraftServer.java:1672) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1340) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:388) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at java.base/java.lang.Thread.run(Thread.java:1474) ~[?:?]
[10:30:57 WARN]: [Nascraft] path to 'plugins/Nascraft/data/sqlite.db': '/Users/lthoerner/IdeaProjects/Nascraft/server/plugins/Nascraft' does not exist
[10:30:57 WARN]: [Nascraft] Task #6 for Nascraft v1.9.3 generated an exception
java.lang.NullPointerException: Cannot invoke "java.util.HashMap.keySet()" because "debtors" is null
        at Nascraft-1.9.3.jar//me.bounser.nascraft.managers.DebtManager.lambda$checkMargins$0(DebtManager.java:44) ~[?:?]
        at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1761) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1616) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.dedicated.DedicatedServer.tickServer(DedicatedServer.java:427) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.processPacketsAndTick(MinecraftServer.java:1672) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1340) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:388) ~[paper-1.21.11.jar:1.21.11-110-c59990d]
        at java.base/java.lang.Thread.run(Thread.java:1474) ~[?:?]
```I got this warn on plugin startup. No idea if it's related
lilac dagger
#

might be

lost schooner
#

I don't know why it says path doesn't exist, it definitely does

lilac dagger
#

if plugin doesn't load properly it can't pull items from config

#

'/Users/lthoerner/IdeaProjects/Nascraft/server/plugins/Nascraft' does not exist

lost schooner
#

It does tho lol

lilac dagger
#

do you start the plugin from this location?

lost schooner
#

I start the server from ...server/

#

let me check rq

#

might be a first-startup warning

lilac dagger
#

onEnable first line do

#

getDataFolder().mkdirs();

#

recompile and try again

lost schooner
#

Mb, red herring

#

It was just cuz first startup

#

No errors or warnings

#

Still not working tho

lilac dagger
#

add debug messages

#

see if it reaches what it should reach

lost schooner
#

I tried to do that with println but it doesn't seem to work

#

It prints out some text but not the actual object

#

But maybe I forgot how to do debug messages in Java lol

#

I'm used to Rust

lilac dagger
#

it debugs whatever you gave him to do

lost schooner
#

would normally do eprintln!(":#?", item)

lilac dagger
#

some objects extend tostring to display a string

#

System.out.println(item);

lost schooner
#
@Override
public void open() {

    Config config = Config.getInstance();

    gui = Bukkit.createInventory(null, config.getCategoriesMenuSize(), category.getFormattedDisplayName());

    // Main category item

    gui.setItem(
            config.getCategoryItemSlot(),
            MarketMenuManager.getInstance().generateItemStack(
                    category.getMaterial(),
                    category.getFormattedDisplayName()));

    // Fillers

    Component fillerComponent = MiniMessage.miniMessage().deserialize(Lang.get().message(Message.GUI_FILLERS_NAME));

    ItemStack filler = MarketMenuManager.getInstance().generateItemStack(
            config.getCategoryFillersMaterial(),
            BukkitComponentSerializer.legacy().serialize(fillerComponent)
    );

    System.out.println("Item adding to GUI:");
    System.out.println(filler);

    for (int i : config.getCategoryFillersSlots())
        gui.setItem(i, filler);

    player.setMetadata("NascraftPage", new FixedMetadataValue(Nascraft.getInstance(), 0));
    update();
}
```Yeah I added these `println`s but I have no idea whether I did it right so I can't tell if it's not generating anything or if it's just written wrong
#
[10:46:44 INFO]: [Nascraft] [STDOUT] Item adding to GUI:
[10:46:44 WARN]: Nag author(s): '[bounser]' of 'Nascraft v1.9.3' about their usage of System.out/err.print. Please use your plugin's logger instead (JavaPlugin#getLogger).
[10:46:44 INFO]: ItemStack{BLACK_STAINED_GLASS_PANE x 1, UNSPECIFIC_META:{meta-type=UNSPECIFIC, display-name={"text":"","extra":[" "]}}}
#

Oh wait that's filler stuff

#

let me check the item itself

#
[10:53:05 INFO]: [Nascraft] [STDOUT] Item adding to GUI:
[10:53:05 WARN]: Nag author(s): '[bounser]' of 'Nascraft v1.9.3' about their usage of System.out/err.print. Please use your plugin's logger instead (JavaPlugin#getLogger).
[10:53:05 INFO]: ItemStack{GRASS_BLOCK x 1, UNSPECIFIC_META:{meta-type=UNSPECIFIC, display-name={"text":"","extra":[{"text":"N","color":"#8C8C8C","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"a","color":"#8E8B8C","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"t","color":"#8F8A8C","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"u","color":"#91898C","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"r","color":"#92878C","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"a","color":"#94868C","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"l","color":"#96858C","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":" ","color":"#97848D","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"b","color":"#99838D","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"l","color":"#9B828D","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"o","color":"#9C808D","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"c","color":"#9E7F8D","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"k","color":"#9F7E8D","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false},{"text":"s","color":"#A17D8D","bold":false,"italic":false,"underlined":false,"strikethrough":false,"obfuscated":false}]}}}
#

Strange

#

It seems like it's not even doing this more than once

#

So this is just the header item

thorn isle
#

i hate component::tostring

#

mmm yes i certainly want to know all the 25 things that are unset on every individual component

slender elbow
#

that is not even toString, that's just the json serialized which does have all those fields specified because spoogot legacy serialization

lost schooner
lost schooner
#

Is there any way to debug a Spigot plugin with an actual debugger like I would with Fabric mods

#

Instead of just logging

chrome beacon
#

yeah

chrome beacon
buoyant viper
#

or overriding hashCode

tender shard
buoyant viper
#

records my beloved

#

i had a project that used records and then someone PR'd fixes for stuff for it and undid my record classes 🫩

warped shale
#

does anyone wanna help me with making a server?

lost schooner
#

I am driving myself insane trying to build and test this plugin Nascraft. The release works, but my build does not. I have not made any changes other than loading it in Java 21 instead of 15.

Would anyone be willing to help me debug it? I am so confused and I really feel like I'm missing something stupid and wasting all my time. I'm not well-versed enough in Spigot development or Java tooling in general to navigate this fluently, I only know enough to understand the actual code.

warped shale
#

nothing that out of boundaries

lost schooner
warped shale
mortal vortex
warped shale
mortal vortex
#

Why would you develop a custom lifesteal plugin when there is already an amazing, open source one available, developed, in part, by @mortal vortex

warped shale
lilac dagger
#

and neither do i override hashcode as i don't use my objects as keys

#

most often keys i have are uuids and strings

calm dust
#

hey, i want to ask something about nautical ranks v2, can someone help me?

calm dust
#

the plugin version is 1.20.6, my server is in version 1.21.11, i've added viabackwards. does the recource pack will still work if i add it to the server?

drowsy helm
#

But i'd assume so

#

can't you test this yourself?

calm dust
#

i've tested it, its worked, thanks for help

#

does anyone know how to give fly permission/feature to spesific rank only in their own claim?

pure dagger
#

it works for some reason lol

zealous osprey
pure dagger
#

the , is just ignored

#

but you cant put 2

zealous osprey
#

weird

shadow pumice
#

Hey! Quick question plz, is there a way to cancel camera and player movement completely? (Like the same feel when an armor stand is spectated)
Why not spectate an armor stand? Cuz I cannot customize the spectator bar

chrome beacon
#

Should lock the camera and as a bonus it'll still send movement packets you can capture to do some cool stuff

shadow pumice
#

Oo that’s sick! I hope it is still there, and turned into a feature.

drowsy helm
# pure dagger

yeah java has some weird usecases where arrays can be comma terminated. You can also do this with enums,
so something like this is still valid

young knoll
#

It’s for convenience

drowsy helm
#

yup

young knoll
#

So you can quickly add more entries later

sullen marlin
#

I knew that for enums, didn't know for arrays

calm dust
#

hey what's the resolution for bedrock, so they can see rank prefix, i've tried to make my own but, itsvto small for bedrock i use nautical ranks v3

sullen marlin
#

spigot doesnt support bedrock so this is a plugin question

#

I also dont understand the question

calm dust
#

i cant share the screenshoot here, maybe you'll understand the problem

sullen marlin
#

?verify

chrome beacon
#

!verify

undone axleBOT
#

Usage: !verify <forums username>

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

buoyant viper
drowsy helm
#

i honestly don't notice it anymore

cinder abyss
#

Hello, how can I cancel the opening of the villager inventory in order to do something else ?

#

Is it inventory open event ?

chrome beacon
#

You can cancel the interact event

#

Otherwise try the InventoryOpenEvent 🤷‍♂️

hollow topaz
#

Guys someone left a bad review on my resource

#

Saying that it doesn't work at all

#

EVEN THOUGH IT DOES

#

And now my resource has 1 star

#

can i do anything about this

chrome beacon
#

And hope they remove it

hollow topaz
#

Bruh

chrome beacon
#

Welcome to the world of reviews

hollow topaz
#

😭

drowsy helm
hollow topaz
#

Bruhhh

#

This is literally my first time submitting smth to spigotmc

buoyant viper
#

have u considered making it Work

hollow topaz
mortal vortex
#

Can you not just see the ratio / resolution that Nautical Ranks uses?

shadow pumice
chrome beacon
shadow pumice
#

how on earth do i freeze the camera 😭 i cant figure it out for the life of me.. the closest i got is readjusting the player's yaw but that produces a jittering effect
tbh i wana disable everything.. that why i wanted to have the "spectate" effect but in survival.. so i assumed if i can find a way to freeze the camera in place, sneaking, looking, walking will not affect the camera movement

chrome beacon
#

Did you send the spectate packet

umbral ridge
#

they sent the packet of bananas

cinder abyss
cinder abyss
lean arch
#

hello, is there any way to replace a mob safely and without lag?

#

my problem is, im trying to replace all the bats which spawns, for blazes

#

and that is causing infinite blaze spawning

#

because im cancelling the bat spawning event

thorn isle
#

set a boolean flag in your listener to true to represent recursion

#

then check for it, clear it, and immediately return if it's set

#

that said infinite recursion shouldn't happen in the first place if your spawning only runs when a bat spawns; as you're not spawning bats, but blazes

wet breach
high vessel
#

what is the best gui for using custom chest size and anvil gui?

wet breach
#

the one that works

young knoll
#

The problem is the game will keep trying to spawn bats until the mob cap is full

#

Bats are in the AMBIENT mob group, and are the only entity in it, so turning them into blazes means it will never fill

wet breach
chrome beacon
#

Now you don't get natural spawning of them

wet breach
#

ok, so the 1 bat must die then XD

lean arch
#

then the fix is letting 1 bat alive in the chunk?

wet breach
#

have no idea, but something tells me that would oddly work 🤔

#

It would just be a matter of determining when the bat should die and then how many blazes you want to spawn in and then spawn in another bat lol

thorn isle
#

honestly at that point you might almost as well do the spawning yourself

lean arch
lean arch
wet breach
#

pretty sure you can just make the bat invisible

#

or do what vcs2 said, just handle spawning yourself

lean arch
thorn isle
#

kind of silly but would somewhat work

#

the only issue i foresee is that if someone kills the blazes, they won't respawn

#

until the player either kills the invisible bats somehow or gets them to despawn

lean arch
thorn isle
#

you could associate each blaze with its bat and kill the bat when the blaze dies 🤡

wet breach
#

that actually would work

lean arch
#

ye

#

thats a good idea

#

and making the bat silent so no one hear it or see it

thorn isle
#

mount the bat on the blaze so despawning won't desync it

#

for the bat, use the entity visibility api rather than potions, so the player client won't know about it at all

wet breach
#

just don't mount the other way, otherwise the blaze will fly off somewhere

thorn isle
#

custom blaze ai ™

wet breach
#

lmao

#

well seems you have a creative solution now instead of the boring usual way 😉

lean arch
#

thanks guys

#

ill try it

high vessel
#

if i wanna make an simple plugin with custom sized gui and anvil gui where i can enter text. do i need any api or how?

thorn isle
#

you need the bukkit api at a minimum

wet breach
thorn isle
#

i think they might be water-ambient

#

or maybe that was fish;i don't remember, the categories make no sense

wet breach
#

guess not now that I look at it

thorn isle
#

none of the water mobs are technically ambient since i think they all drop something or do something, but there is a water-ambient category with some random assortment of mobs in it

wet breach
#

interesting

#

Yep

#

its called Water_Ambient

young knoll
#

Squid are water creature

#

Water ambient are the fish

thorn isle
#

i guess they're sort of ambient in that you can get their drops through fishing anyway, so disabling their spawning doesn't break the game

jade lance
#

I'm making a plugin, where do I download the spigot api

wet breach
#

?bt

undone axleBOT
wet breach
#

?maven

undone axleBOT
jade lance
#

thanks

lean arch
#

if the bat is a passenger of the blaze, minecraft stills spawn bats

shadow pumice
chrome beacon
shadow pumice
chrome beacon
#

Right clicking causes the client to interact with itself

#

Blocking that interaction will stop the server from kicking the player

lean arch
#

hey, what would impact more in the server, having 200 entities in the world or cancelling an entity every tick continuously?

chrome beacon
#

Time to test and see

lean arch
#

but idk if that is correctly

hybrid spoke
#

well, not really. having the entity has always more impact

lean arch
#

that will cause infinite spawning, but if i limit like 2 mobs per chunk, it will keep cancelling like 50 times per second continuously

hybrid spoke
#

basically the same just with an extra step i'd say

hybrid spoke
#

yeah make sure that you don't trigger your own event

#

you can just set a flag

customSpawn = true
spawnMob

in the next event you check

if customSpawn
customSpawn = !customSpawn
return

#

or you store the uuid of your custom spawn and check in the next event if that triggered the event

lean arch
# hybrid spoke oh the infinite spawning

if it is infinite spawning and you limit every chunk to cancel the events if there are more than 2 mobs in the chunk for example, that will keep cancelling infinitely entities and will not cause lag?

hybrid spoke
#

i think we're not on the same page here. what are you trying to do? just cancelling vanilla spawns to a certain limit per chunk, or replacing zombies for example with your own custom mob?

#

hijacking the spawn logic to not write your own

lean arch
hybrid spoke
#

gotcha, and what's the issue you're facing?

lean arch
#

if i listen the event and cancel the bat spawn to spawn the blaze instead

#

it will cause infinitely blaze spawning

#

you can code for example to limit if there is 2 blaze in the same chunk then cancel the event to don't keep spawning

hybrid spoke
#

well, your fix would be to only listen for bats 🤔

lean arch
#

if minecraft detects that there no are bats then it will continuously trying to spawn them

hybrid spoke
#

ahhhh okay that makes sense

#

yeah i can see where your impact on performance thoughts are coming from

lean arch
#

and it will cause so much lag

hybrid spoke
#

hmm, can you show us the code and run spark profiler so we can see where exactly the lag is coming from?

#

?paste for code

undone axleBOT
lean arch
#

it would impact in the lag if there is many people in the server

#

for only one or few players i don't think it should

thorn isle
#

spawning entities is somewhat expensive

#

that is, the natural spawning logic

echo basalt
#

anyone experienced with making gradle plugins by any chance joe

thorn isle
#

it's very aggressive and will generate a lot of garbage trying to find valid spawning positions nonstop

echo basalt
#

got an issue at work where it compiles both java + kt but only bundles java code in the .jar

thorn isle
#

sounds like an easy fix is to toss kt out the window

echo basalt
#

need kt for some reason

#

I can prob rework it as java ngl

echo basalt
#

it's like 3 classes of kt

lean arch
#

are 200 entities better for the server than being cancelling 50 spawning events per second infinitely?

thorn isle
#

it might not be as catastrophic for bats, but for monster spawns that's an easy way to brick the server

#

for the mounting, i suppose you can just not mount the bats on the blazes if that's the issue

gusty silo
#

hello guys! I have a question about a custom gui that i need to make.
I need a sort of new menu like the furnace, brewing stand etc... something that has a totally different graphics if you know what i mean, is there anyone that knows how to do it?
My first instinct was to use a plugin to check for the slots, make some slots of the generic54 unusable and a texture pack to cover them. But idk if a generic_54 can have a different texture based on a nbt tag (so i can use the same generic54 to create multiple custom GUIs)

lean arch
thorn isle
#

the spawns going out of sync probably shouldn't be a big issue, since blazes despawn as well

#

so not mounting the bats shouldn't be that critical of an issue

lean arch
#

make it invincible, invisible, and with noai

#

then spawning the blaze with him

thorn isle
#

myeah that should be fine

lean arch
#

minecraft spawn like 15 bats in total per player

#

is 15 blazes and 15 bats without ai better than cancelling 50 spawning events per second continuously?

thorn isle
#

definitely

lean arch
#

thanks

lean arch
#

@thorn isle

#

can i ask you something

smoky anchor
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!

knotty gale
#

hey I was wondering how would I make a custom scoreboard? Just where to start and how I would set it up. I basically just want a scoreboard with 2 teams that you can change the name and color of with a score (not the mc score) that you can change just by doing commands or using a listener to check if players have write clicked with a certain item in their hand

#

I know how to do a lot of this stuff, but not how to set the scoreboard up

lilac dagger
#

teams for the sidebar? @knotty gale

knotty gale
#

yeah basically, I just want one thats extremely customizable and easy to control with fast updates

sacred monolith
#

if anyone is looking for a plugin developer, im that guy, dm me, i charge cheap.

lilac dagger
#

if you want to use both prefix and suffix you'll need to do some checks

#

you'll need to move the colors from the prefix to the suffix

sacred monolith
#

i have a website where i create mods/plugins and publish them , i need some devs to help me out here.

knotty gale
lilac dagger
#

enjoy 😄

undone axleBOT
gaunt galleon
#

hey everyone! Does anyone know if/when the next version of specialsource is going to be released? (for java 25 support :D)

chrome beacon
#

Around the time the next Minecraft drop is would be my guess

#

since that's when it's required

#

If you cannot wait you can just build the latest commit yourself and use that

gaunt galleon
#

yess already did that, just curious about the release, tyvm

high vessel
#

im trying to make an plugin where you can change your player tag name color. but it will show in the chat and tab but not if go in f5 or othe players see your player tag color above your head just the regular white one

thorn isle
#

teams are an easy way of doing this

high vessel
thorn isle
#

that's fine

high vessel
# thorn isle that's fine

can i also make it compatible with minimessage for custom text colors? and would this affect like performance on server?

young knoll
#

Pretty sure team colours only support the original 16 colours

#

If you want full rgb you’d need a text display Or something

pliant topaz
#

couldnt u just set the list name for tab? and handle the chat seperately?

high vessel
olive idol
#

!verify

undone axleBOT
#

Usage: !verify <forums username>

olive idol
#

!verify Xenonical

undone axleBOT
#

This account is already verified!

buoyant viper
#

Tuff

pliant topaz
high vessel
lilac dagger
#

they're entities on newer versions of minecraft @high vessel

#

designed for displaying text

lilac dagger
#

There's BlockDisplay entity and TextDisplay entity

thorn isle
#

essentially armorstand holograms/items but actually designed for that purpose

lilac dagger
#

Oh yeah item displays too

high vessel
thorn isle
#

you'd use a text display instead of an armor stand

mortal vortex
#

idk if thats something you set but its cool.

#

Armor stand nametags always revolve to face you.

thorn isle
#

it's adjustable

#

they can be set to not track (aka billboard) billboard only vertically, only horizontally, or both

#

"both" being the one used by armor stands and player names

short pilot
#

does anoyne know why isPreferredTool returns TRUE when I test breaking a leaf block with a pickaxe

I thought it would be only true for shears

mortal vortex
#

Returns if the given item is a preferred choice to break this Block. In some cases this determines if a block will drop anything or extra loot.

One would imagine from this, it means whatever breaks it with a speed > base

short pilot
#

Ah yeah

#

I guess I'll just check block tags

young knoll
#

Pickaxes don’t break leaves any faster btw

#

Hoes and swords do

mortal vortex
#

lol then thats weird

young knoll
#

Pretty sure it’s mostly for blocks that require a specific tool to drop items

buoyant viper
#

at least for swords

#

wait i think thats only for bamboo

young knoll
#

Swords yes

#

Hoes no

thorn isle
#

swords break most things slightly faster but also take double damage doing so

dry forum
#

to teleport a player to another server on a bungee proxy, would the best way to do it be to make a bungee plugin that handles teleporting player between servers and using the teleport methods from that plugin in my spigot plugins

chrome beacon
#

If you just want to send a player to a different server you can use the Bungee messaging channel

dry forum
#

so id be able to move a player to another server then teleport them without needing to use bungee?

chrome beacon
#

If you want to teleport them to a specific location on the other server you'd need a plugin on that server to do so

dry forum
#

ok thanks

young knoll
#

Technically no, you could use plugin messaging to send them to the server and then plugin messaging again to teleport them

chrome beacon
thorn isle
#

you write a plugin that teleports players on command and deploy it on the destination server

young knoll
#

No but you can send arbitrary data with plugin messaging

thorn isle
#

on command as in over plugin messaging

young knoll
#

And have another plugin read that message on the destination server

chrome beacon
#

And you'd need a plugin to recieve that

young knoll
#

Yeah

chrome beacon
#

yeah but why did you say no to me saying that you need a plugin to handle the teleportation then

thorn isle
#

i only read the very first message

#

or very last i suppose

young knoll
#

Oh I thought you said you’d need a bungee plugin to handle that

thorn isle
#

or the rcon port 🤡

young knoll
#

If you want to get super technical and all the servers are on the same filesystem you could have the plugin edit their player.dat on the other server to modify their location :p

#

Can a bungee plugin even move players? I don’t really know what the proxy is capable of

thorn isle
#

not without the sort of plugin messaging discussed above

#

that state exists on the backend server and so to change it, it needs to be done by the backend server

#

similarly to how the state of what backend a player is connected to exists on the proxy, and to "send" players to other backends, the proxy needs to do that

#

there is built in handling for a plugin message that does the latter however, so it can sort of be "done" by a backend server, but only in the sense that it tells the proxy to do it

dry forum
#

errrr so dont smite me for what im about to ask but, my goal is to move a player from server A to server B at a certain location, i wanna give them effects, spawn particles when they teleport so its cool on both servers, i asked chatgpt and it says i need to use a bungee plugin to communicate this so now im confused

young knoll
#

I would just use a spigot plugin and plugin messaging

#

The plugin will need to be on both servers

#

?pmc

dry forum
#

yeah i was gonna add it on al my servers

prime tartan
#

is there a way i can create complex block displays? looking to create a sort of grenade thingy

young knoll
#

Custom models with item displays

#

Or just multiple block displays

#

There’s a tool to make stuff with them, one sec

prime tartan
#

oh wow

#

and i can easily spawn these?

#

and like teleport them / move them around

young knoll
#

Uhh

#

Spigot doesn’t really like teleporting stacked entities

#

But you can unstack, teleport, and restack

prime tartan
#

my idea was for a grenade with gravity that i can throw, wait a few seconds and then it explodes

thorn isle
#

does this actually allow exporting the models as anything more useful than some dumb summon command

prime tartan
#

that's what im thinking 😭

thorn isle
#

if you can use a resourcepack, the better option is to open up blockbench and create an item model, then spawn an item display

#

this'll perform better, generally look better, and is easier to deal with since there aren't a bunch of entities you have to move and rotate around independently

#

without a resourcepack, the best i can think of is to get the command, spawn it in singleplayer, save it into a structure and then bundle the structure with your plugin jar... or manually writing in all the entity offsets and rotations in java sources

#

i've wanted to use this blockdisplay site for a long time but importing the models in any sensible way into a plugin always kills off my interest

prime tartan
#

aw, shucks 🙁

thorn isle
#

i'm willing to do a great many things, but writing a parser for some 100-levels nested summon command with 25 passengers per entity is not one of them

dry forum
young knoll
thorn isle
#

connecting to the server takes time

#

your plugin message telling the destination server arrives there before the player does

young knoll
#

Yeah you can’t send a message to an empty server either

dry forum
#

how would i go about doing this then

thorn isle
#

honestly a cookie might work better here

young knoll
#

You could also store the teleport location in the players cookies and check that in the join event, however modified clients could technically mess with that cookie data

dry forum
#

who knew teleporting players between servers would be so complicated 😭

thorn isle
#

you could have a plugin on the proxy after all, and have it relay the plugin message to the destination backend once it sees the player is connected

dry forum
thorn isle
#

that is also an option, though i would probably use a messaging service like rabbitmq instead

young knoll
#

Tbf the switch is done by the proxy, so it shouldn’t vary much in how long it takes

thorn isle
#

a database is kind of the wrong tool for this

young knoll
#

Could just hardcode a delay

dry forum
#

idk i dont rly wanna do that cuz ppl will load at different speeds

thorn isle
#

i think as long as the player is past the login phase, plugin messages will go through

#

but you will want to record them in memory on the backend and act on them once the join event fires

dry forum
#

so i should have plugins on my servers and a plugin on the bungee to check when a player connects to the server?

thorn isle
#

well if you use the delay approach, you only need plugins on backends

chrome beacon
#

Delay is less than ideal

#

What if you were thr last player you were teleporting from

thorn isle
#

🤡

young knoll
#

I think an empty server can still send messages

chrome beacon
#

Also connecting to other server can take a varying amount of time

young knoll
#

Maybe?

thorn isle
#

just use a messaging service

chrome beacon
thorn isle
#

plugin messaging is trash

dry forum
#

ye i rly dont wanna use a delay

young knoll
#

Ah, unfortunate

chrome beacon
#

Plugin messaging goes through the player connection

thorn isle
#

so either you have a proxy plugin relaying the message, or you have a dedicated messaging server/service relaying the message

young knoll
#

Clearly you just need a dummy player on each server!

dry forum
#

i think ill just use a database to store the intended destination

chrome beacon
#

Ie allowing custom data to be sent between client and server

young knoll
#

Tbf I don’t know why bungee can’t just keep a dummy connection open to each backend server

chrome beacon
#

Not the cursed stuff Bungee does

thorn isle
#

fair enough

young knoll
#

I guess at that point bungee might as well open a proper socket between the proxy and backend

#

Though that would require another port

thorn isle
#

it should be doable over tcp and the main port as long as the backend is spigot and rigged to handle that

#

i guess the reason is that it's kind of feature creepy

#

don't really want to maintain a fully fledged message queue impl in bungee

#

though one thing the connection would be very nice for, is checking when backends shut down/start up

young knoll
#

Time for FeatureCreepBungee™

#

New fork

rotund ravine
#

It’s also easy to spoof if you don’t know what ur doing

#

Since it’s sent through the player

young knoll
#

Doesn’t it get sent from the server to the bungee and then the bungee to the other server, over the players connection

#

I don’t think it reaches the client

#

Since that would require the client to then send a packet back and I don’t see how you would force it to do that

thorn isle
#

it doesn't rely on the player's client, no

#

but it's a bit unclear whether or not the client receives it

#

the client can also opt to send a plugin message of its own accord, and the proxy will relay it to the backend

#

there was a forcelogin exploit related to this in authmevelocity recently, where a client could just send the "player x is now logged in" message (which was supposed to be sent by authme on the backend), and the proxy would treat it as the ground truth, since it didn't bother checking whether the message came from the player or a backend

#

in sum trust nothing you see and send nothing you don't want to be seen

echo basalt
#

Both bungee and velocity have a "Plugin Message Event" where you can check the source of the message

#

Ideally you can block it at the proxy level and prevent it from reaching the backend server

#

Venturechat allowed anyone to spoof cross-server messages

#

CommandAPI would throw an error and print the entire payload (and people used this for DOS attacks)

#

I think coreprotect had sumn about it but you needed some crazy debug mode on

#

Worldedit should be safe

#

I don't recall if lunar's apollo was safe but likely yes

dry forum
#

from.getWorld().spawnParticle(Particle.DRAGON_BREATH, loc, 3, 0.01, 0.01, 0.01, 0.03f);

why am i getting this error?
java.lang.IllegalArgumentException: missing required data class java.lang.Float

sullen marlin
#

That particle needs a final float param

onyx fjord
#

whats the prefered place for loading player data from db these days (which event)

#

playerjoinevent has the downside of data being not available if something needs it before data got fetched

#

is asyncprelogin fine?

slender elbow
#

yes

onyx fjord
#

w/checking the result as well right

#

well thats obvious nvm

#

is it relatively new tho

#

i know the whole joining mechanism changes a lot

#

especially recent versions

slender elbow
#

Async pre login has existed since pretty much forever

fathom fable
#

lmao

slender elbow
hybrid spoke
echo basalt
#

Block the thread on async prelogin

#

uhh save it on a cache for 20 seconds

#

grab it from a cache and throw it on a map

#

or invalidate the cache on disconnect / quit

#

thing is if every plugin does this the client might timeout

#

but if it's a couple and latency is minimal I'd say it's the best alternative

#

and if you're sharding or something use a distributed lock

#

like an etcd lock or a redisson RLock or something

thorn isle
slender elbow
#

that's smart

#

too smart for the average plugin developer

slender elbow
#

yeah vcs did a really good job there

#

congratulations

hybrid spoke
#

we love you vcs!

elder fossil
slender elbow
#

sure are

elder fossil
slender elbow
hybrid spoke
#

@young knoll

ancient jay
#

Hey all, I'm in the market for a new in-game Broadcast Plugin. We currently use BroadcastPlus by LOJJ_Scaler, but the plugin doesnt support HEX formats, or anything to support custom colors. Anyone know of an alternative for what Im looking for? Any information is greatly appreciated.

mortal vortex
ancient jay
#

My apologies, I did not see the Help server page; I don't use this server often. @mortal vortex I'll have to look at the formats again, but I'll switch to the right channel

mortal vortex
#

Yeah, Discord can be a pain in the ass now, whenever you join a server just hit that "Show All Channels" button.

ancient jay
#

Good to know. I'll do that right now 🙂

sullen marlin
#

Does it just pick random channels

mortal vortex
#

I think its most frequented channels.

onyx fjord
#

Discord loves hiding stuff

#

I often forget threads are a thing

mortal vortex
#

IRC was better

#

ideally if Discord has a falloff, Spigot should move to like XMPP or Matrix

lilac dagger
#

i didn't like irc too much

#

but i can't deny it gets the job done without infringing on privacy

mortal vortex
#

XMPP or Matrix are a bit nicer.

#

They both offer channels, and markdown support which i believe IRC does not.

#

And obviously, you dont need to be constantly online to grab old messagees.

lilac dagger
#

matrix i believe it's p2p no?

#

or is it with hosted servers?

#

wait let me check

#

ah nice

#

you can host your own servers if you want to, but don't have to, and it's not p2p

#

i still remember the skype days where your ip was up for grab by anyone

robust helm
#

matrix is cool but i dont like any of the clients

#

also i cant use a terminal client because of course matrix needs reactions, gifs and html formatting

#

irc with bouncer is really alright tho. but of course thats not accessible at all

viscid maple
wet breach
wet breach
#

it is in fact what discord did

slender elbow
#

it's not like people don't do that with discord already

mortal vortex
#

ugh this guy again

#

Trying to sell us simple folk TUI

thorn isle
#

i don't really mind the age restrictions and id verification, but i do wish there was like a proper government mandated audit that the data really is "deleted quickly" so they don't end up accidentally leaking 70,000 more users' dox like last time because bob from accounting set the mysql password to 123123123

slender elbow
#

a chat app is just not worth your biometrics and personal identity information

vital umbra
slender elbow
#

granted you don't have to provide them, you can just not do that and you'll be restricted of "safety features"

mortal vortex
slender elbow
#

but many people would be missing out on heaps of things

thorn isle
#

honestly this is probably going to be the new normal going forward, i expect to see most of social media and most of internet 2.0 requiring id verification within 5-10 years

#

it's sort of understandable as well, kids really are exposed to all sorts of shit they aren't supposed to be exposed to on the internet

#

grooming is just one of the many problems

mortal vortex
#

I don’t think there’s a problem with this system. You only need to verify to see NSFW content.

If you’re a child this is good— no nsfw.

If you’re an adult— who cares? Porn sites exist. You don’t need Discord for NSFW content, so you certainly don’t need to verify.

thorn isle
#

i mean ideally this would be solved with better parenting and maybe babby-mode on hardware rather than in each individual app, but unfortunately i don't think there is any way for the government to make people be better parents

#

so we're stuck with a technofeudal surveillance state

mortal vortex
#

Some people think parenting is sticking an iPad infront of a kid because it stops them from screaming.

We can’t live idealistically thinking that people will monitor their children properly.

thorn isle
#

microsoft already demands a trusted platform module for win11 compatibility

#

no reason they can't demand a babby platform module

#

apple is even harder locked down

#

either way, the main problem with this system as it's implemented right now is that it has been proven again and again that companies are 🅱️ tarded and can't be trusted with personal information, let alone biometrics, because it always gets leaked within 1-2 years

#

they also can't be trusted to "delete it quickly", whatever that means in practice

mortal vortex
#

LOL yeah and now Discord, Roblox and everyone else are resorting to a third party certification agency.

#

It just makes it easier for a centralised attack.

#

If all of the internet relies on the same identity auth platform, then a single leak is 2/3rds of the world exposed.

thorn isle
#

it's a 🤡 world

#

we'll see if the US or the EU or someone manages to push through some double-blind id system where the app doesn't know your identity, only that it's valid, and the certifying party (i.e. the gov) doesn't know which apps you use

#

i kind of doubt it, especially with where the UK is looking to be going, but one can hope

thorn isle
echo basalt
#

I mean

slender elbow
echo basalt
#

part of our culture has to do with unsupervised access

slender elbow
#

absolutely

echo basalt
#

kangarko reference

slender elbow
#

true

echo basalt
#

and that's a little fucked

#

part of us being so desensitized is all the shit we've seen growing up

#

I've been doxxed a couple times on this discord server alone

#

well... somebody has

#

the info wasn't 100% accurate but close enough

slender elbow
echo basalt
#

only if the services are p2p

#

services that provide e2ee would require a backdoor afaik

thorn isle
#

they'll backdoor your computer and tell it to do math that records your screen and keystrokes and sends it to the Ministry of Love for review

cold bobcat
#

glad to see I am not the only one thinking a bunch about a discord alternative

slender elbow
#

self host matrix for you and your friends and call it a day

cold bobcat
slender elbow
#

not really

#

people just don't like decentralised because all they want is install, hop in and chat

thorn isle
#

come to think of it

#

i've been trying to think of a reasonable and simple way to age verify my players for a good while, to turn off the ingame profanity filter

cold bobcat
slender elbow
thorn isle
#

last time i asked here someone recommended i set up some microsoft app or something where people would have to log in with their microsoft account and offer all their personal details

#

but now, can't i just have a nsfw discord channel and see who can post there 🤡

echo basalt
#

isn't discord planning on using some algorithm to determine our age

#

feed all the data to chatgpt and ask it to make an educated guess

cold bobcat
#

I saw a great meme the other day (unsure if true) about using garrys mod to pass the face-based age verification

sly topaz
echo basalt
#

and claim your family will die if he gets it w rong

thorn isle
#

i've considered this, but iirc the tos on openai prohibit using their models to "classify" people based on behavior

slender elbow
wet breach
thorn isle
#

i already feed all the data to chatgpt to dispense "good boy points"

cold bobcat
#

Also, on the #help-development front... I came here cos BuildTools.jar is failing on my new Debian 13 container 🫠

thorn isle
#

which can be used in the web shop

cold bobcat
#
[INFO] Reactor Summary:
[INFO] 
[INFO] Spigot-API 1.21.11-R0.2-SNAPSHOT ................... FAILURE [  0.668 s]
[INFO] Spigot-Parent dev-SNAPSHOT ......................... SKIPPED
[INFO] Spigot 1.21.11-R0.2-SNAPSHOT ....................... SKIPPED
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.724 s
[INFO] Finished at: 2026-02-12T12:54:19Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0:compile (default-compile) on project spigot-api: Fatal error compiling: error: release version 17 not supported -> [Help 1]
slender elbow
echo basalt
#

set your java home to 21

#

not 17

cold bobcat
#

I have java 21 🫠

sly topaz
#

then set your java home as Illusion mentioned

echo basalt
#

java -version

hybrid spoke
#

or use the specific java version for the build

cold bobcat
#

debian 13 doesn't seem to have JDK 17 in its packages

thorn isle
#

release version 17 not supported -> [Help 1]

cold bobcat
#

might have to go to backports

echo basalt
#

or yeah "C:/Users/Illusion/.jdks/..." -jar BuildTools.jar --rev 1.21 is what my script looks like

cold bobcat
#

From my thread:

I think the issue is that the Spigot-API package has still a compiler release of JDK 17 set, whereas Spigot-Server is set to 22:

$ grep 'maven.compiler.release' Spigot/Spigot-API/pom.xml
      <maven.compiler.release>17</maven.compiler.release>
$ grep 'maven.compiler.release' Spigot/Spigot-Server/pom.xml
      <maven.compiler.release>21</maven.compiler.release>
#

weirdly though I wouldn't have thought this would be an issue (compiling a jdk17 target on jdk21)

wet breach
cold bobcat
#
 $ java -version
openjdk version "21.0.10" 2026-01-20
OpenJDK Runtime Environment (build 21.0.10+7-Debian-1deb13u1)
OpenJDK 64-Bit Server VM (build 21.0.10+7-Debian-1deb13u1, mixed mode, sharing)
thorn isle
#

jdk 21 definitely should be able to emit java 17 binaries

#

or god forbid java 1.8

chrome beacon
cold bobcat
#

hmm ok so adding --rev 1.21 to the buildtools CLI call is having more success

chrome beacon
#

It's usually caused by Ubuntu users wrongly assuming that the JRE release of OpenJDK means the jdk is installed

thorn isle
#

OpenJDK Runtime Environment

#

mmm yeah

wet breach
sly topaz
#

you can still get a jre if you want, it is just not the standard anymore given they push for people to create specialized images with jlink

wet breach
#

seems its behind in terms of the official road map of java on that o.O

thorn isle
#

OpenJRE 🤡

chrome beacon
cold bobcat
#

well hot damn

chrome beacon
#

due to the amount of people installing that

cold bobcat
#

it appears I indeed only installed default-jre / openjdk-21-jre

wet breach
sly topaz
#

just install sdkman and direnv 🤑

cold bobcat
#

Oracle 🤮

wet breach
#

Well, I rather have things work the first time and so far oracle JDK has done that

cold bobcat
#

"but at what cost"

wet breach
#

and I typically get better performance with oracle jdk over openjdk

wet breach
cold bobcat
#

the cost is larry ellison's private island

#

oracle is one of the worst companies to ever grace this green earth

wet breach
cold bobcat
#

thanks to sun engineers not oracle

mortal vortex
#

Ellison Files when?

wet breach
cold bobcat
#

most of java hasn't been touched in over a decade tho amirite wheyoooo

wet breach
#

in fact, java would have died if Oracle didn't buy them out

thorn isle
#

to be fair everything new or useful or interesting language-wise has been in the ice for a decade

#

i guess we did end up getting virtual threads after 4000 years of waiting

mortal vortex
#

Oracle only owns the trademark. Most java decisions are made by the Java Community Process. Oracle isn’t spearheading development at all

cold bobcat