#help-development

1 messages · Page 1282 of 1

sly topaz
#

did you leave and join again

lilac dagger
#

maybe

storm wind
#

Does anyone have any suggestions on how to implement a bot system to give the impression that the server is full? Having more bots according to the number of players so that the bots can be communicative, have actions, etc.

sly topaz
#

because either way the answer is that it's futile

#

instead of trying to fake a community, what you can do is try and create a story-based server where players have to interact with NPCs

#

that way it doesn't feel that empty

echo basalt
#

even if you try to commercialize it they don't bring in enough to make a living

#

and there is competition in the market

storm wind
sly topaz
#

it most likely is, you just have to find the niche where players feel like they belong

echo basalt
#

I'm speaking from experience buddy

echo basalt
#

making a spoofer also needs a bunch of money

sly topaz
#

a lot of money for what, the most money you'll need when you start is to host the server

#

the rest you can make-do by sacrificing your time

storm wind
#

I already have my own community and I have over 1000 members on discord. I've tried to engage with a well-made trailer etc but I still got the same number of players that I usually get 40, and a lot of people don't play because 40 is not enough

storm wind
sly topaz
#

it isn't about the amount of players, it is about the experience

echo basalt
sly topaz
#

40 concurrent players is a lot if there's a tight community around it

storm wind
#

I get 40 on openings but 20 is what I get every day

echo basalt
#

Spoofers get pretty complex specially if you're running a proxied network and/or want the fake players to actually chat

sly topaz
#

hence why I said they're not worth it

#

players won't feel compelled by number going up, they'll feel compelled when they have more actual people to interact with

storm wind
#

the proxy part is the easiest. the hard part is the other part you said, they chatting etc

#

they go pvp too

sly topaz
#

ultimately, it is up to you. My take on it is that it is wasted effort

#

building a community takes a lot of time, so you'll just have to bear that in mind

drowsy helm
sly topaz
#

eh, that's more than most people get on an opening

#

I got like 5 players on my first few servers lol, and they just stuck around because I gave them items

storm wind
sly topaz
#

investing in media is a form of attracting people, but making them part of the community takes a whole different skillset

drowsy helm
#

a good product advertises itself

sly topaz
#

I always hated that quote, because it is hardly true and even more so for minecraft servers were a few big servers have the monopoly on players

drowsy helm
#

What is the premise of the server and what sets it apart from other servers?

sly topaz
#

a good product doesn't necessarily advertise itself, otherwise the whole marketing career would be pointless

drowsy helm
#

anyways my point being- players will stay on your server if it is fun and engaging

#

If you aren't retaining players it simply means your server isn't engaging

pliant topaz
#

And bots won't help keeping people online

sly topaz
#

and the biggest issue is, even if you make it engaging, then you have to figure out how to commercialize it if that's your end goal

#

so yeah, hard problems to think about

drowsy helm
#

Yeah only thing bots will do is maybe get more people to join initially, but doesn't help retention

pliant topaz
#

For figuring out if its engaging, you can ask your friends or other people to playtest

echo basalt
#

bots can hurt retention by making the community feel dead

sly topaz
#

dead internet theory becoming more real by the second

pliant topaz
storm wind
#

our server is raiding and pvp, but we have such a high retention rate because it has new systems and really captivating systems. what i really need is visibility on social platforms

storm wind
# pliant topaz And bots won't help keeping people online

I just asked a clan for feedback on the server and they really thought the server was amazing and said they were playing alone because their clan stopped playing and those same clans who stopped playing said the server was really good but stopped playing because they thought the server would get more players and those players didn't even play Minecraft anymore.

drowsy helm
#

Ah that makes sense , factions type stuff is a hard market to get into

thorn isle
#

adjust the goals a little, implement some smoother movement/attack skill libraries, and it'll get you pretty far

storm wind
drowsy helm
storm wind
storm wind
sly topaz
#

the issue with factions is that it is a gamemode that inherently needs a lot of players, so you ca't really do much if you don't have a lot of players from the get-go

thorn isle
#

a server is just another computer

storm wind
#

has pve and quests system

thorn isle
#

it's not a plugin, if that's what you're asking

#

you'll need a box with some python and other libraries installed

thorn isle
#

and an api key to your llm provider of choice

storm wind
#

rust is better than factions in this aspect

sly topaz
#

that is just factions with a theme, I've never played rust without friends lol

storm wind
#

and in rust there is pve. in factions there is no

sly topaz
#

well, whatever it is that your server does, if it has a pve aspect but as per feedback, players just want to do normal factions-like activities, it could very well be that the PvE aspect of the server isn't as well-developed

#

then again, as someone said before, factions is a hard market to get into because even if you have a well-developed PvE ecosystem, most seasoned players just want to play factions without changing the rules they already know, so you do have to find a balance there

echo basalt
#

the problem with gamemodes like factions and skyblock is the lack of originality imo

#

SaberFactions and SSB2 came out and it was a no-brainer to use them

#

It went from "who can make the best plugin" to "who can optimize it best"

sly topaz
#

I don't really like gamemodes where I have to actively interact with players so I cannot say honestly, I've briefly played factions before and didn't like it

#

Skyblock I did play HP's because of course, everyone played HP's skyblock

#

I got addicted to it for a good while, but stopped at some point and went back to bedwars where I belong

storm wind
#

bedwars literally you can only play if you have players

sly topaz
#

that's usually some newb, but it doesn't matter. If I can't carry them through the whole session then it's a skill issue

pure dagger
#

how do you make sure the npc (citizens) stays there? and not spawn another one on reload?

#

i mean i got npc information in config so i need to spawn them but i dont wanna spawn an npc 2 times

pliant topaz
thorn isle
#

rather than trying to make them appear as players, how about embracing the npc aspect; if they can chat and do pvp and execute simple tasks, i probably wouldn't mind recruiting some into my faction

pure dagger
#

what does it dooo

sly topaz
thorn isle
#

then toss some extra game mechanics at them, like having to provide them with quarters and resources or something and you get uh

#

what's what mod with the self-building npc villages

#

millionaire or something

#

that but factions, that ought to be new and niche

#

alternatively, hire 40 third world country children with robux to play on your server

#

this is probably easier and cheaper

pure dagger
#

actually whenever i enable my plugin i probably should spawn them again cause

#

the config changes

#

so should i just remove them at onDisable or what

sly topaz
#

you should create a trait for that instead

#

I recommend reading the wiki about it

#

more specifically the persistence API part

sly topaz
pure dagger
#
npc:
  - name: "Kowal"
    world: "world"
    x: 0
    y: 70
    z: 0
    pitch: 0   #optional
    yaw: 0     #optional
#

this is the yml

#

idk if you understand

#

but there is a list of them

#

i dont really imagine how that would work

sly topaz
#

that kind of thing is already saved on Citizens's storage if you add the Spawned trait to it

#

no need to save it yourself

pure dagger
#

i dont save it

#

its for player editing

sly topaz
#

I am unsure whether Citizens has a way to configure your own storage for NPCs, that way you don't have to reinvent the wheel

#

you could make your own Spawned trait which essentially saves to a custom DataKey instead of Citizens's default one

#

try asking in their discord, maybe they'll know better how to handle that kind of thing

pure dagger
#

oki doki

plush sluice
#

2025-06-09 19:33:52 49923 [Warning] Aborted connection 49923 to db: 'unconnected' user: 'unauthenticated' host: 'connecting host' (Out of memory.)

#

i think i fd up something

sly topaz
#

out of mem, smells like a memory leak

plush sluice
#

surprisingly it has memory left

#

its not filled

pure dagger
#

why do these servers have lgbtqia flags

plush sluice
#

221/4096mb used

sly topaz
plush sluice
#

or im dumb and it doesnt work like that

sly topaz
#

out of mem doesn't necessarily mean it is out of total memory, but rather that it can't allocate more than what it was allowed to use

plush sluice
#

ah

#

i think i know what could be the problem

#

i use self hosted pterodactyl panel and to restart servers i use restart button

#

could it be it and the db connection doesnt get shutdown?

#

even tho its in ondisable?

sly topaz
#

not sure honestly, I don't even know what you're using for db connections

plush sluice
#

hikari mariadb driver

torpid zinc
#

I was hoping to make a plugin work with both spigot and bungee. I found I could use submodules, but I found very little content online about how to do so. I was hoping someone could help me a bit to do this with gradle

thorn isle
sly topaz
thorn isle
torpid zinc
plush sluice
#

they dont showup for ~10h after restarting db

pure dagger
#

a bit misleading thoguht

sly topaz
#

I do recommend not asking that question in these discords directly since that'll probably just get you a punishment

#

a lot of trolls often come and attack servers with the logo so even if it is a genuine question, it might come off just another troll attempting to well, do what they want to do

plush sluice
#

im not gonna point a finger to the person that created that connector BUT that person created shutdown method where there is lets say 100 connections he creates new connection and closes that connection and done server is down and we left with 100 connections

#

thats where the mem leak appears

#

i hope so

sly topaz
#

it could just be you forgetting to close connections tbh

#

make sure to use a try with resources for all database connections

#

let the hikaricp pool handle the rest

plush sluice
#

yeah

#

thats what i did now

#

didnt think of that at first because as I said I didnt even know how it worked because it wasnt me who created it

pure dagger
#

😨

sly topaz
mortal hare
#

how do you guys handle configurations of the plugins?
do you generally create a class/interface which will be populated with the elements the program might need to read, or do you instead make interface/class for plugin and a factory class for it which will be populated with configuration values via factory method?

@NullMarked
public interface Configuration {
  interface Messages {
    Component registered();
    Component unregistered();
    Component fail();
    Component success();
    Component unavailable();
  }
  
  Messages messages();
}

vs

public interface Plugin {
  // methods
  
  static Plugin load() {
    // load plugin implementation from plugin's "config.yml" and dont expose config values
  }
}
#

i feel like hiding configuration is cleaner as Plugin wouldn't need to expose values that might be needed in the plugin's object instances

paper viper
#

Idk I just use configurate lol

sly topaz
#

same

#

I have a love/hate relationship with it but it is good enough for most usecases

sly topaz
#

i can't imagine every message being its own method

paper viper
#

Just make it a constant

sly topaz
#

I would either go an enum or a record for each message

paper viper
#

Also this is random but I just found out enums can implement interfaces yesterday lmao

sly topaz
#

yeah, it's pretty handy

paper viper
#

I don’t know why I barely see it

#

Like I’ve only see it once

sly topaz
#

you can have enum constants which override methods, and that makes it rather powerful

paper viper
#

Yeah

mortal hare
#

just inject those components through constructor inside plugin factory when loading from config file

#

it even reflects reloading the plugin which is done via command

sly topaz
#

it is immediately clear what I am trying to do for anyone when I do Messages.SUCCESS.send(player, context)

#

and then I can just go to Messages class and inspect the message keys

young knoll
#

My config system just injects stuff into fields

#

Either static or instance

mortal hare
sly topaz
mortal hare
#

localization based on player

thorn isle
#

if i need to send the player an arbitrary message i'll accept an arbitrary message as a parameter, possibly with type information about the formatting parameters required

sly topaz
#

code-wise I mean, you still should be able to change the message on a configuration

thorn isle
#

otherwise, DI for messages is just completely overkill

#

the player-based localization should be encapsulated in the Message object and resolved when send is called

#

no point passing around different message instances for that

young knoll
#

Or you can handle that in a packet listener

#

Might be better in some cases

#

Alternatively use a resource pack and just use actual translations

thorn isle
#

will be cleaner in the message class since you can make more informed assumptions about what's going on

sly topaz
#

resource packs for localization sounds like ugh

young knoll
#

I mean if you already have one it’s not bad

thorn isle
#

myeah that's fair on both sides; i wouldn't set one up for translations, but if i already required one, it'd be the ideal way of going about translations

#

supposing you have a pipeline in place to make sure your players always get the newest version of the pack and aren't missing any localization keys...

young knoll
#

You can do fallbacks

sly topaz
#

I mean, you should be always versioning that type of stuff so you know what players are receiving

young knoll
#

That’s what the uuid is for

#

And/or the hash

mortal hare
#

i just recently started to follow YAGNI a lot. If your plugin needs to setup commands, why expose all those manager, localization classes inside plugin interface when you can just expose command instances which the glue code factories will use to hook it up to bukkit

sly topaz
#

that sounds like extremism

#

a bukkit plugin is a simple enough system that you can just repeat yourself enough times about this kind of stuff

#

it all depends on how integrated you want it to be, you could get away by making a global system by using things like service loaders and what not but it ends up complicating the pipeline for no reason if you aren't working with multiple people

#

my goal is to always make a plugin behave as expected, regardless of what design philosophies I might impose in my code

#

users will expect messages to be in a locale file inside the plugin data folder, so that's what I do

young knoll
#

Nah I make sure my plugins behave wildly

sly topaz
#

HideAndSeekLocale the plugin

young knoll
#

Now we’re talking

mortal hare
#

i feel like the more your code resembles black box functionality the better since then you have strong type checking in place and more info embedded into types

sly topaz
mortal hare
#

instead of generalizing functionality into low level managers you should make it as high level as possible and then move to managers if you really need it for polymorphism (for example for api's)

sly topaz
#

I feel like you probably should get a job at a company using Jakarta EE

#

you'll get tired of the mental gymnastics people do with code around enterprise software

#

plugins simply don't require that much thought on them

mortal hare
#

that was just example

#

im just being philosophical here

plush sluice
#

what is the recommended max pool size for db connections?

slender elbow
#

10000000000000000000000000000000

vast ledge
#

xD

#

Integer.MAX

slender elbow
#

the answer really is "it depends"

#

it depends on your expected query throughput

sly topaz
#

are you asking for your connection pool or how many you allow in the db in general

vast ledge
#

If you're syncing player inventories into a db every time a item is added / removed then its gna be higher than whena player joins / leaves

sly topaz
#

for the db, you allow as many as your resources allow

#

for the connection pool, as Emily stated it depends

plush sluice
#

redis ofc

vast ledge
#

So you're syncing inventories?

plush sluice
#

nah

#

at least not for now

vast ledge
#

Then what's the usecase?

slender elbow
#

god damn, log4shell was 3 and a half years ago

#

it feels like it was yesterday

#

why do i keep doing this to myself

sly topaz
#

is this the connection pool for a single plugin or the whole server

plush sluice
#

it will be saving skyblock island data and other plugins like friends plugin on proxy, saving player data like if they left with with vanish, flymode, etc

#

single plugin

vast ledge
#

So F list / player state

#

What island data?

#

Does it change often?

sly topaz
#

then just play around with the value, start at 10 or something and see how that scales

vast ledge
#

Just see when it breaks

#

and if it breaks add more

plush sluice
young knoll
#

I just use whatever the default is for Hikari

#

Seems to work

plush sluice
#

and what is the default?

young knoll
#

Not sure tbh

sly topaz
#

it is on their readme

mortal hare
sly topaz
#

do you think you'll have more than 10 concurrent connections at a time? If so, up it

#

by concurrent I mean connections that haven't been returned to the pool once their query was executed

mortal hare
#

try to visualize a concurrent situation and roughly guess how many connections it might need based on the server population and the usage of the function

#

blindly guessing it just doesnt work

young knoll
#

10

vast ledge
#

xD

buoyant viper
worldly ingot
#

"Not enough connections"? I don't know why all these DBAs exist when you can just crank the number of connections in the pool.

restive mango
#

Is there any way to adjust the activation or tracking range of an individual mob?

buoyant viper
#

probably

mortal hare
#

any idead why suddendly minestom server starts to throw this error:

Exception in thread "main" java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: Index -1 out of bounds for length 0
    at net.minestom.server.registry.DynamicRegistryImpl.loadStaticSnbtRegistry(DynamicRegistryImpl.java:247)
    at net.minestom.server.registry.DynamicRegistry.create(DynamicRegistry.java:108)
    at net.minestom.server.item.enchant.Enchantment.createDefaultRegistry(Enchantment.java:33)
    at net.minestom.server.ServerProcessImpl.<init>(ServerProcessImpl.java:123)
    at net.minestom.server.MinecraftServer.updateProcess(MinecraftServer.java:84)
    at net.minestom.server.MinecraftServer.init(MinecraftServer.java:78)
    at lt.breakout.gateway.Server.main(Server.java:22)
Caused by: java.lang.StringIndexOutOfBoundsException: Index -1 out of bounds for length 0
    ... 6 more

whilst trying to run the server?

#

i dont get it stack trace, traces it back to MinecraftServer.init()

paper viper
#

Why are you asking spigot discord

#

Ask minestorm

fluid goblet
rough ibex
#

With?

fluid goblet
#

so im trying to make the axe throable with a right click but when i do it, its just stuck in the air

#

and not moving either

echo basalt
#

What's the new cool nbt lib people use for standalone projects nowadays?

#

querz/nbt is giving me validation errors on valid nbt I cba making abandonware work

#

NBT-API doesn't have a standalone version afaik

#

and making my own takes so much effort to make and maintain

slender elbow
#

adventure-nbt i suppose

echo basalt
#

Does it do SNBT parsing?

slender elbow
#

sure

echo basalt
#

Does that snbt parsing break if I pass it an empty object?

#

"my_key": {}

slender elbow
#

idk

echo basalt
#

fuck it we try

slender elbow
#

got nothing to lose

echo basalt
#

time

#

which I don't care aboutu because I'm being paid hourly

slender elbow
#

oh then you totally got nothing to lose

#

like, what is 5 minutes anyway

#

round it up to the nearest 60 minutes

echo basalt
#

I've been here for 6 hours already :)

#

goal is to serve husksync data over a rest api

slender elbow
#

woa

echo basalt
#

except instead of just serving raw json / snbt

#

I'm decoding the item components, rendering it as html with adventure-webui

#

and then serving them :)

#

along with a bunch of player data

#

TagStringIO is a horrible name for a compund parser btw

#

no intellisense when I do StringIO or TagIO

slender elbow
#

i can only assume it works given it was updated for the 1.21....5? .4? snbt changes

echo basalt
#

we're running it all in .4

#

so who cares

#

also found it absolutely comical that husksync's dumping thing is called Toilet

slender elbow
#

lol

paper viper
#

I’m going to call all my memory dumps toilet dumps

echo basalt
#

I love writing stubs

#

yay adventure-nbt works

#

Any standalone itemstack apis :3

#

please don't make me write a datacomponent system

#

alright boys I'm writing a datacomponent system

#

Does mojang still use json for serializing item names or is it snbt now 🤔

echo basalt
#

this only took 7 hours

echo basalt
#

@slender elbow you lied this doesn't handle some empty tags properly

#

it has code for it

#

for some reason it no worky?

#

I managed to get it to read a negative index

#

ah it shits the bed with byte arrays

#

I'll just make it save items in snbt makes it easier to serve too

#

it still shits the bed

slender elbow
#

hm?

#

snbt is a disaster for a reason

echo basalt
#

fetching the last char causes and IOOBE

#

and it's a regular ass snbt string nothing crazy

#

The only nbt parser that has reliably worked is the nbt linter I use

#

I think it's because it's detecting "0b" as the beginning of a binary string instead of it just the byte 0

#

yup that's it

dawn flower
#

how do i make density 3 the max you can get from an etable

smoky anchor
#

✨ datapacks ✨

#

nevermind, I don't know if you can limit it there

#

You can change the enchant level in EnchantItemEvent
not sure what to do with it showing the value tho

slim wigeon
#

What datapacks?

somber scarab
#

is there an easy way to make players look like other mobs? including their vision and interactions?

#

actually screw the interaction.. I just want a player to look like a zombie

paper viper
#

Vision as in like spectator mode?

#

You can try using libsdisguises

#

But for the spectator vision, it’s kind of hard to implement from what I remember

#

You have to send a fake death packet and spawn a fake entity

somber scarab
#

all good then it's not needed

#

its only for one video so I don't want anything that needs too much work

mortal hare
#

any gradle users here? how can i restructure zipped distribution directories using distribution plugin (which bundled with application plugin) in gradle?

#

i want bin/ folder to be at the root directory of zipped distribution file

wraith delta
#

Is uuid and ip the only possible way at all to identify a player? Verifying it’s actually you

mortal vortex
#

pretty much

#

even like geographic location consistency still depends on IP

wraith delta
#

What’s a good way to verify it’s you without needing to fill in a password? Currently I’m making sure uuid = name

#

Some ip seems to be dynamic, therefor that can’t be the reliable way

eternal oxide
#

You can't

wraith delta
#

Cuz people can just spoof your name and join your server to have admin perms. With bungeecord

#

So I’m making sure the admins name matches their real uuid

eternal oxide
#

No they can't

#

UUID is unique, name is not

wraith delta
#

They can spoof uuid, or name. One of them can be swapped and that lets someone join bungeecord subserver to have staff perms

eternal oxide
#

they can't spoof uuid as thats verified by Mojang

wraith delta
eternal oxide
#

then you have failed to setup your servers

mortal vortex
eternal oxide
#

backend servers should have no direct link to the outside

chrome beacon
#

^^

#

if that's not possible you need something like Bungeeguard

mortal vortex
#

and yes, this is true, your Bungeecord subservers are all validated through the proxy.

wraith delta
# eternal oxide then you have failed to setup your servers

You aren’t understanding. Someone can create their own proxy then use your servers ip:port to the backend, this lets them have their own bungeecord setup yet be on your server. Thus allowing them to have offline mode to spoof their uuid as a staff member

eternal oxide
#

Your servers shoudl not be accessible via an ip:port

chrome beacon
#

Which is why you use Bungeeguard or only allow your Bungee to connect

eternal oxide
#

you have failed to correctly configure your servers

chrome beacon
wraith delta
eternal oxide
#

no

#

your servers shoudl be behind your proxy with no direct path

wraith delta
chrome beacon
#

Firewalls exist

#

or you just have everything on the same machine and don't expose the servers in the first place

wraith delta
eternal oxide
#

Your servers shoudl only be accessible vcia your proxy. ie all on localhost ports

wraith delta
eternal oxide
#

thats wrong

#

0.0.0.0 is bind to all

chrome beacon
eternal oxide
#

127.0.0.1 is localhost

wraith delta
eternal oxide
#

then its impossible to directly connect to any of yoru subservers

wraith delta
#

Bungeeguard got a data breach leaking servers tokens, this allowed someone to do it to my server

eternal oxide
#

impossible. localhost is not externally routed

#

it is physically impossible to connect to a localhost without going through a proxy

chrome beacon
#

Bungeeguard did have an exploit that has been fixed

#

but if you only let localhost through that wouldn't be a problem

wraith delta
#

which setting is wrong?

eternal oxide
#

?paste your proxy config

undone axleBOT
wraith delta
eternal oxide
#

config is fine

#

so you have an expoit elsewhere (bungeeguard?)

wraith delta
#

but they had a data breach leaking everyones tokens

chrome beacon
#

Not a data breach really

#

It was just leaking tokens

wraith delta
#

well whatever it is it worked for hackers lol

chrome beacon
#

you should prevent your backend servers from being exposed to the internet

#

There is no need for them to be

wraith delta
chrome beacon
#

Get all traffic through the proxy

azure zealot
chrome beacon
#

^^

wraith delta
chrome beacon
#

It's not setup correctly

eternal oxide
#

get new tokens for bungeeguard

chrome beacon
#

if people can connect without the proxy

azure zealot
#

if someone can join on the backend , your firewall is somehow not correctly configured

eternal oxide
#

your bungee config is fine, but are your server setyups?

#

they also have to bind to 127

wraith delta
#

so this is where its incorrect?

azure zealot
#

put 127.0.0.1 their

lilac dagger
#

or localhost

azure zealot
#

if you proxy is on the same server as your bungee

lilac dagger
#

easier to memorize

eternal oxide
#

else it binds to default

wraith delta
#

ok ill give it a try next restart. but anyways, still thinking of a plugin to put on the subserver that would prevent someones name using your uuid

eternal oxide
#

its really not needed

azure zealot
#

you can do that but if your server is bound on localhost is 100% fixed

wraith delta
#

good to have in case, cuz for example I had bungeeguard working for 10 years but all of a sudden it had this exploit

eternal oxide
#

thats because your backend servers are binding to all available ips

azure zealot
#

thats why in the first place you should never expose the backends to public

mortal hare
#

this is unsafe unless you use VPN with database even in that case thats sketchy

wraith delta
#

with the current setup im not able to add the ip+port to my minecraft list, because i didnt input any ip in the properties

#

so yes it is already localhost

#

right now you need bungee to join it, so thats how the hackers do it... they just launch their own bungee and put your backend ip in their config - exactly how we setup our own bungee

eternal oxide
#

thats impossible

#

127.0.0.1 is not routable. Its impossible to add that as an IP

chrome beacon
#

If the firewall is configured and the server is only bound to localhost

#

The only way they could setup their own bungeecord would be to do it on your machine

#

and then expose that

#

in which case you already have a way worse situation at hand

eternal oxide
#

yoru servers have no IP and I'm sure that is the same as 0.0.0.0 so bind to all available IPs

#

they will listen to anything on the correct port

#

specify 127.0.0.1 or localhost an ONLY your bungee will be able to passthrough

wraith delta
#

well all i know is i am not able to add my bungee ip+subserver port to my minecraft server list, and yes they are on the same host, someone managed to still join the backend

mortal vortex
#

Your understanding of the whole point of a proxy is completely backwards

wraith delta
mortal vortex
#

uhh no, im saying ur point is stupid

#

im saying thats not factual

#

the whole premise of a proxy is to have a single entrypoint, with no way around it, to facilitate a connection.

eternal oxide
mortal vortex
#

No one outside of the closed system should be able to even maintain a connection to your subservers, let alone create their own bungee???

eternal oxide
#

if you could your servers are directly accessible and vulnerable, as you have found

wraith delta
chrome beacon
#

What happened when you did

eternal oxide
#

just bind to the correct localhost and you will not have issues

mortal vortex
#

i dont think bungeecord, or any proxy software for that matter, would get so far, if it had such a blatant vulnerability.

young knoll
#

But

#

I wanna add hypixels backend servers to my proxy :c

eternal oxide
#

I'm sure if you pay a few million they will let you

young knoll
#

I'll just ask @worldly ingot for a backdoor

#

We're besties so he'll do it

wraith delta
#

unless bungeeguard is preventing the backend server from showing up on the server list. seems like it already is localhost when not assigning it a ip

thorn isle
#

just use velocity and velocity forwarding and don't worry about it

eternal oxide
#

its not localhost if you did not specify an ip

#

no IP = bind to all available interfaces

#

including localhost

wraith delta
#

Starting Minecraft server on *:25565 it says that when i start it

eternal oxide
#

yes

#

* = all

wraith delta
#

ok will try to change it

#

thats strange tho since it wont let me add my backend server to the minecraft server list tho

eternal oxide
#

that would be bungeeguard

chrome beacon
#

Bungeeguard still lets you add it to the server list

eternal oxide
#

it does?

chrome beacon
#

You just won't be able to connect iirc

eternal oxide
#

I've never used bungeeguard so do not know

chrome beacon
#

I guess it could be blocking the ping as well

wraith delta
#

it wont let me ping it, ye

chrome beacon
#

You can remove Bungeeguard and make sure it won't let you ping without it

#

and then add it back

eternal oxide
#

however, just fix your backend server bindings to localhost and your issue is done

wraith delta
#

but as you see, just never know.. therefor to be safe I figured id ask a smart way to make sure even if someone did manage to spoof your uuid to their name that they couldnt become you. i figure just use a command to link your real name to your real uuid then if anyone elses name uses that uuid it kicks

thorn isle
#

raaaah velocity

thorn isle
#

existing problem, existing solution

chrome beacon
#

Velocity just has Bungeeguard like solution builtin

thorn isle
#

it does, but it's implemented more reliably

#

you're still "supposed" to put the backend behind a firewall/tunnel so it's not exposed to the internet at all, but that's tinfoil-hattery; just the velocity key is sufficient

#

if you can and know how to set up a firewall or a private network by all means do so but it's not strictly necessary

wraith delta
#

feel like bungeecord should come with that feature like velocity does. silly it would ever be a possibility for someone to do this exploit. and thats something that has gone on for a decade. and sure i can go into detail setting up the proxy to use localhost, but im sure the majority dont.

mortal vortex
#

🤦‍♂️ its not an exploit man

wraith delta
#

alright well, you know what i mean. a capability

eternal oxide
#

Its literally in the instalation guide for bungee

#

Most don;t seem to read the post instal section though

wraith delta
#

thats if its on the same machine. 🤷‍♀️ oh well. thanks. i input localhost as the ip in the properties

drifting halo
#

you can use any ip big brain

wraith delta
thorn isle
#

securing bungee on shared hosting is ass

drifting halo
#

If you're dealing with shared hosts, yeah that will suck

eternal oxide
#

yeah needs a firewall to be secure really

drifting halo
#

depends how their network is handled though. If they're on the same subnet adding the ip will work, if not you're gonna have to ask their support or get a dedi

wraith delta
#

suppose im glad im not using shared. but uhh, yikes its scary this is such a feature you can do backend joining anyones server thats on a minecraft host

drifting halo
#

Anyone can enter your home if you leave the door open

thorn isle
#

i will enter your home even if you lock it

drifting halo
#

Idk what the original conversation was. But if it's about the players being able to join directly to the server thats because it's just a proxy forwarding all the packets to other servers. So the end server has no way to distinguish between what is a forwarded packet and what isn't

#

thats why online mode has to be disabled too, otherwise auth will fail since the source and destination ip's don't match

#

The ideal setup is that you only whitelist your proxy server and block all other traffic

#

Either with a software or with a hardware firewall

lost skiff
#

Hello there, is there a way to add end dimension sky and effects to overworld in mc 1.21 ?

lilac dagger
#

i think it's bound to world type

sly topaz
#

you can send a respawn packet with a different dimension type and it'll work

#

people have said that you can also change it with a custom biome but I doubt anyone wants to deal with that

lilac dagger
#

oh wow, it's this easy

young knoll
#

Idk if the biome can replicate the fancy end sky

#

It just changes the colour

slender elbow
#

biome and dimension type

#

the bane of my existence

young knoll
#

Oh?

sly valley
#

Anyone know how to remove the permission of writing in the chat i using EssentialsXChat & LuckPerm

slender elbow
#

i don't think essxchat has a permission for chatting altogether

#

you'd need to ask essentials support

sly valley
#

do you have any other chat plugins ?

young knoll
#

There’s essentials.chat.local for local chat

#

But idk if that applies if you don’t have local chat configured

slender elbow
#

i mean, you can also just mute them, lol

sly valley
#

I want at the first connection they cant talk need to do the little intro receive rank and then talk

shut field
#

Why does "world#locateNearestStructure" (with unexplored tag false) not always return the nearest structure? I am using Structure.FORTRESS, and I am plugging in my location to the location of the fortress (the locations that locateNearestStructure returns) into these distance squared:
Dist A: 619139.8055829474 | Dist B: 1522.0620079845075
but for some reason it returns location A

worthy yarrow
#

I’ve messed with that bit of api before and was never able to get solid results

shut field
#

Is there any easier way to actually find the closest nether fortress to the player?

worthy yarrow
#

Not without your own searching algo I don’t think, it’s sorta like the conversations API… it works but just barley

young knoll
#

Seems weird it would return one that far away

#

Unless the unexplored flag is broken

dawn flower
#

is it possible to fix the "mace damage hack"

#

through listeners

shut field
#

I thought it would just do like, "explore the entire nether, and return the closest fortress to the player, regardless of whether it has been explored or not yet"

young knoll
#

It believe it starts at the location provided and does a spiral search

#

And just returns the first valid one it finds

chrome beacon
#

It should work the same as the locate command

#

stash shows it just calling a nms method to find it

shadow rover
#

Hi, I'm trying to make some generation world using terrain control into making only one biome on the world map. Is there somebody who knows the plugin ?

young knoll
#

Yeah

#

And I’m fairly sure that’s how NMS does it

young knoll
#

However if you just want a single vanilla biome you can use the api

#

Assuming you are in a somewhat recent version

shut field
shadow rover
#

I'm in 1.8

young knoll
#

Doesn’t vanilla have single biome worlds

chrome beacon
#

It does

young knoll
#

Granted idk if that existed in 1.8

shadow rover
shadow rover
shadow rover
slender elbow
#

idk, that sounds like some seed changing stuff or having the closest structure being generated in an old version

pure dagger
#
@EventHandler
    public void onNPCRightClick(NPCRightClickEvent event ){
        if (event.getNPC() == null || !event.getNPC().hasTrait(BlacksmithTrait.class)) return;
        //doSomething
    }


// Create an NPC
        NPCRegistry registry = CitizensAPI.getNPCRegistry();
        NPC npc = registry.createNPC(EntityType.PLAYER, "Steve");
        npc.addTrait(BlacksmithTrait.class);
        npc.spawn(new Location(Bukkit.getWorld("world"), 100, 80, 100,90,90));

does anyone know why it doesnt work ?

#

i dont understand anything

chrome beacon
#

profile api likes to fail at times

#

can't say I've ever had it do that to me personally but I've seen a bunch of reports of 403s

pure dagger
#

what exacly does that mean ??

chrome beacon
#

403 means forbidden

#

in this case it just didn't want to process your request

#

The api call that was ran was the server looking up the uuid, skin information etc

#

from the name

pure dagger
#

[Citizens] Cannot register a null trait. Was it registered properly?

chrome beacon
#

as far as I know there's not much you can do about it

chrome beacon
pure dagger
#

why is it nul

#

i passed the class

chrome beacon
#

Was it registered properly?

pure dagger
#

oh.. how do you do that

chrome beacon
#
API

Citizens has an extensive API for working with NPCs. Make sure you always are using an up-to-date build of the CitizensAPI to ensure that your plugin works with the latest release of Citizens.

rough bronze
#

Hello, I need help. I have already asked LuckPerms support but they couldn't help me either because I have set everything up correctly. Unfortunately, the ranks are not displayed correctly in the TAP list and they said I have to change something, but I have no idea about it. Can someone please help me.

chrome beacon
#

You mean the tablist

pure dagger
#

that was the problem

#

now it works

chrome beacon
#

the trait became null because of the failed api request?

#

odd

trim lake
#

Hi, its possible to show while effect applied? I got this:

player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, Integer.MAX_VALUE,0,true, true, true ));

But it still showing duration. I know thats basically infinite, but its small detail for me if its possible to show the infinite symbol.

trim lake
#

Im blind lol, didnt notice that. thanks!

pure dagger
#

i mean

#

event.getNPC().hasTrait(BlacksmithTrait.class)

#

this was the problem

#

i guess

#

not registered BlacksmithTrait

chrome beacon
#

so it wasn't the api request issue

#

?

pure dagger
#

i dont really know..

#

what happened there

chrome beacon
#

oh well

#

it works

mellow edge
#

Hello, let me ask this directly, is there a way to setAcceleration to a fireball through the API in pre-1.21 era?

chrome beacon
#

setDirection

#

might work 🤷‍♂️

worldly ingot
#

Yeah I think it was direction before. Fireballs fucking suck

pure dagger
# chrome beacon oh well

uhm.. okay but when i realodad, it says it couldnt load the "trait" for npc id: somenumber, and i get this message agsin. when i spawn new npcs it works, after reload not

chrome beacon
#

are you registering it in on enable

#

and is your plugin set to depend on citizens

pure dagger
#

yes yes

chrome beacon
#

hm not sure what would cause that

#

does it happen during a restart?

#

or just when you reload

pure dagger
#

i can check

mellow edge
#

Thanks to you both. So if I set the direction to a normalized vector multiplied by some scalar it will apply the direction and acceleration, acting as the fireball motion mover XYZ?

pure dagger
#

it doenst work on stop

mellow edge
#

But I do remember that setDirection used to use gaussian algorithm which made the thing unpredictable, I think that changed using the setDirection?

grand flint
#

Hey, if I am using SignedVelocity and on the backend I got a plugin listener on AsyncPlayerChatEvent, is that why SignedVelocity cannot cancel the message?

harsh ruin
#

Do you know of a technique that involves creating a vehicle with realistic movement, a real rotation of the vehicle and not just eye tracking, like the vehicle's mod?
The boat on land seems like a good solution, but it's too slow, and I don't see how to make it faster, or is there a plugin that exists?

thorn isle
#

listen to the vehicle control packets/user input for key presses of A and D and make the vehicle behave accordingly

#

if it's a car just pressing the buttons won't make it rotate, you also need to move backward or forward

#

if it's a tank with tracks or some shit then it might rotate in place

harsh ruin
#

This is not exactly my question, I am looking for a way to create an alternative to the center of gravity of an object, here a vehicle to be able to create a realistic rotate system

thorn isle
#

intersect the vehicle mesh with the terrain and apply force vectors perpendicular to the intersecting terrain geometry at the positions of intersection, then convert those forces to a rotation around the center of mass

harsh ruin
#

easier said than done unfortunately 🥺

thorn isle
#

is there a particular part of it that you're having trouble with

harsh ruin
#

to code all this in general, yes, the management of vectors, and the velocity can easily cause rollbacks and visual bugs

earnest girder
#

I need to make mob spawners work regardless of light level. Is there any way to do this?

harsh ruin
#

otherwise, I like the movements of the boats, like increasing their speed on the ground

grand flint
#

it had a mount controller

thorn isle
#

i don't remember if it has rigid body physics

torn shuttle
#

great

#

my computer just tried to melt down to a puddle

#

ran so hot it bricked itself

buoyant viper
#

Hmm

harsh ruin
random compass
#

Hey there
Ive been working on setting up a server, and i want my alt to be able to join and leave without messages, as well as vanish on join. however, another mystery plugin seems to be overriding my essentials permissions for this, and my custom plugin for this.

My question is, is there some kind of debug i can run that is deeper than essentials debug mode and server logs so that i can see what is sending join and leave messages when i have silent join and leave permimssions, or is there a way to override whatever is sending them and cancel the messages anyway.

Cheers

#

Its a massive plugin list so i cant really remove them all and test them 1 by 1

mortal vortex
random compass
#

?paste

undone axleBOT
mortal vortex
#

Your question seems #help-server related, so I'm trying to see how it might fit here, in the case that it was intentional.

echo basalt
#

There's a really cursed way to debug it

random compass
echo basalt
#

and a couple less cursed ways

mortal vortex
#

because u didnt explicitly state anything development wise.

random compass
#

mb

random compass
mortal vortex
#

You could do this from an admin perspective, and not a development perspective.

#

A plugin like "invsee" wouldnt do it.

echo basalt
#

Cursed way #1: instrumentation

random compass
echo basalt
#

Use something like Bytebuddy to make an interceptor that detects setWhatever calls on that given event class

#

drawbacks: it's incredibly cursed

#

Cursed way #2: extend the pluginManager, override callEvent, do your filtering and call a modified version of the event

#

pros: it's less hacky than instrumentation
cons: not by much and it's more convoluted to write

#

Cursed way #3: Create that same modified version of the event, but call it yourself, assume plugins will handle it
pros: less jank
cons: you might need to use fake players otherwise a lot can break

mortal vortex
#

Rule out what could not be possibly doing it.

Then, copy the join message, and try to do a grep search for your plugins folder, in the hopes the join message is a message.yml string literal. For example, an unknown plugin might send:

Howdy <player> welcome to...

Just do a grep search for :

grep -rP --include="*.yml" "Howdy\s+.+?\s+welcome to\.\.\." .
#

This is like the easiest method.

#

If a plugin is giving you a join message, that plugin probably has a config

#

This is lowkey how I've debugged any case where an unknown plugin is doing something.

random compass
#

it gives me my rank prefix, followed by the default "player" left the game

#

its not a unique join or leave message

mortal vortex
#

Stilllll

#

might be configurable??

random compass
mortal vortex
#

awwyy

#

fucky wucky

#

do whatever illusion said

random compass
#

i was kind of hoping there was something i could do to see whats interacting with playerjoinevent

#

but thats probably not possible

mortal vortex
#

"that given class" would be the event

echo basalt
#

You can print out the handlerlist and manually check out the code

#

doing it with bytebuddy gives you fine control (ie run this method every time setWhatever is called)

#

You can then print out the stacktrace to figure out what plugin did it

#

You will have to fight with classloaders tho

random compass
#

thx for help guys, i just translated and installed a random polish plugin and that seemed to override whatever was happening lol

unique shuttle
#

How can I get the value and the discount? I basically need the 9 and the 3

#

I assume the value comes from checking the item's amount, but how do I get the discount?

mortal vortex
#

I think?

unique shuttle
#

I was testing this

#

I can't find a class called TradeOffer

echo basalt
#

yeah these discounts are tied to the player not the villager?

mortal vortex
#

There is MerchantRecipe, but it doesnt take an instance to a player meaning you cant get the per player discount

unique shuttle
eternal oxide
#

get the Merchant/MerchantRecipe from the view

unique shuttle
#

villager.getRecipe(0) already returns the MerchantRecipe

eternal oxide
#

you have to check the merchant is trading

#

if he is you can call getSpecialPrice()

unique shuttle
eternal oxide
#

thats the discount

#

9 - 6 = 3

unique shuttle
#

💀

vast ledge
#

9-6 != 3

unique shuttle
#

What happened to my brain

echo basalt
#

huh?

vast ledge
#

isnt it -3?

echo basalt
#

no

vast ledge
#

bruh i don't know how to read

echo basalt
#

6 - 9 = -3

#

9 - 6 = 3

#

the fuck

unique shuttle
#

xDDD

vast ledge
unique shuttle
# eternal oxide thats the discount

Do you know if there’s any way to get this discount without trading, or how to get the data that leads to giving that discount to the player? It’s to replicate the villager a long time later

unique shuttle
vast ledge
#

I am the excuse

unique shuttle
#

lmao

eternal oxide
#

you have to be in a trade

unique shuttle
#

I guess I can try to replicate this (fabric mapping)

#

If it gives you a discount, it must be based on something

vast ledge
#

There's a function for making a villager shake his head?????

vast ledge
#

I need this for real life

unique shuttle
#

xD

#

I guess I'll have to use NMS to assign this to the villager

mortal vortex
#

ohh old mesg

unique shuttle
#

The order of the factors does not affect the product

mint nova
#

How i can create ItemDisplay for specific Player? (With ProtocolLib cuz idk)

chrome beacon
#

you don't need to use protocollib

mint nova
#

Thanks

drowsy helm
#

me and my homies dont like protocol lib

lilac dagger
#

how to trigger left click in player interact event while spectating?
it seems in newer versions this isn't triggered

smoky anchor
#

?xy ?

undone axleBOT
lilac dagger
#

okay, is there some other way to simulate a left click?

#

while spectating?

#

playerinteract event works while facing a block

thorn isle
#

huh?

smoky anchor
#

"simulate left click"
Do you mean force player to spectate something ?
I don't understand what you're trying to accomplish by "simulating left click"
Or even what it means

lilac dagger
#

actually let me repharse it

#

if you are in GameMode SPECTATE and right click a player you are seeing through his eyes, what i want is on left click to open a spectator menu of my own

#

in older versions player interact event just worked

#

but now it doesn't trigger

smoky anchor
#

investigate if a packet is ever sent I guess
if it's not then you're out of luck for newer versions ?

#

Could also just be spigot bug if the packet is sent

thorn isle
#

i could see the client just not sending an interact packet when spectating

lilac dagger
#

alright, i found the swing packet, let's see

#

the packet works

#

thanks guys

mellow edge
#

on an older version even

sly topaz
lilac dagger
#

there is?

#

even better

#

i thought playerswing is tied to playerinteractevent

sly topaz
#

interact is fired whenever a player swing packet is sent usually, yeah

#

there are other scenarios were the interact event is sent and whatever you're doing might be triggering a false negative

mellow edge
#

so what is the difference between the events?

sly topaz
#

the player interact event covers more interaction cases than the swing one

#

and you can't get the interacted element on the animation event, you'd have to raytrace

lilac dagger
#

yay

#

it works

wet breach
slender elbow
#

huh

#

the arm doesn't swing when justw alkign

sly topaz
slender elbow
#

do you mean tge view bobbing?

mellow edge
#

does the event trigger alongside the interact event?

sly topaz
#

yes, for the most part

wet breach
#

but the arms move when players walk/run

slender elbow
#

the big swing

#

view bobbing is purely client sided screen effect

mellow edge
#

^^

slender elbow
#

can be disabled even

wet breach
#

weird to call it view bobbing?

slender elbow
#

that's what Minecraft calls it

sly topaz
#

are you referring to the 3rd person arm swinging? As in when you see a player walk and their arms swing? Because that's also purely client-sided as far as players go

slender elbow
#

because the whole view bobs

wet breach
#

ok....doesn't bob when you have others looking

slender elbow
#

i have no idea what you're talking about then

wet breach
#

obviously the arms swinging

#

you can see players arms swing whether it be your own or others?

slender elbow
#

the 3rd person swinging of both arms?

sly topaz
#

yeah, that's just the walking animation, doesn't count as arm swinging

slender elbow
#

the server is unaware of that

wet breach
slender elbow
#

view bobbing is the first person.. bobbing

#

the arm slightly moves back and forth

sly topaz
#

these are two different things, view bobbing is the mild screen shake when you walk in 1st person and the 3rd person walking animation is just well, the walking animation

wet breach
#

well you don't have to be in 3rd person, since you can observe other players have the animation. Anyways, you answered the question though

#

was just curious as to what counted as swinging lol

slender elbow
#

3rd person with respect to others

#

not necessarily 3rd person camera view

wet breach
#

obviously

slender elbow
#

for yourself yes it does require the 3rd person camera view

wet breach
#

not like you are going to be in 2nd person view

slender elbow
#

it's still 3rd person regardless

sly topaz
#

I am going to play the game as if I am hearing it from the background

slender elbow
#

there are two games that I know of that feature 2nd person viewpoints

#

very cool

sly topaz
#

I haven't had this feature enabled in forever so I forgot

wet breach
#

I hate bobbing effects so I generally disable such things in all my games

sly topaz
#

yeah, bobbing effects and blurred FOVs are my enemy

#

don't know how people can play like that

wet breach
#

ah, motion blur, hate that too especially when you need to pay attention to whats going on

#

nothing like, everything getting blurry and then suddenly dying to something on the ground because your vision was blurred unnecessarily XD

sly topaz
#

the Outlast experience

mortal hare
#

why do i feel like java beans are kinda awful concept

#

getter and setter for everything is abuse of oop

#

its basically separates logic from the data and smells like more procedural approach

#

sure it works but yuck

#

enterprise java is a mess

solid zealot
#

Hello. Is anyone else experiencing 403 error issues connecting to the Minecraft Login API? 403 Forbidden Microsoft-Azure-Application-Gateway/v2

wet breach
#

not all standards are equal, but at minimum there must be a standard though

mortal hare
#

procedural programming

wet breach
#

not necessarily and not exactly its primary purpose

mortal hare
#

enterprise java is something straight out of the horror movie

#

it barely resembles anything that modern java introduced since java 8

#

its like stuck in 2000s

wet breach
#

not sure what you mean

#

EE builds upon SE

#

which means everything in SE is present in EE, just EE has more to it that is tailored to enterprise level stuff like web servers or distributed systems

slender elbow
mortal hare
slender elbow
#

and it doesn't have to

wet breach
#

not sure what records has to do with anything

mortal hare
#

i just hate javabeans as a concept

wet breach
#

then don't use it?

mortal hare
#

im forced to

wet breach
#

for work or something?

#

or school?

mortal hare
#

yes

wet breach
#

not sure what you expected when taking a job as a java developer

mortal hare
#

🥲

slender elbow
#

if you wanna play with all the fancy new features modern java enterprise has to offer, go to a startup until it goes bankrupt the following year

wet breach
#

and so forth

#

until you get lucky and find one that sticks around 🙂

#

and then when you are in one of the top corporate spot because you were one of the few to stick around, you can then be responsible for forcing old standards on everyone else 😉

#

and the cycle will repeat itself just with someone else

graceful patrol
#

hello, sorry for the response after 5 days 😭, I tried to get the server and send data to it, still didnt receive it

ivory sleet
#

initially at least

#

and i dont think setters + getters is abuse- or I mean enlighten me why itd be that way :>

mortal hare
slender elbow
#

"i just don't like them, it constrains my design ideals" ahh moment

mortal hare
#

at this point just use structs from c

graceful patrol
#

for some brave soul, this is the bungee side, sending the message, you could try to figure it out and stop my suffering 💀

        ByteArrayDataOutput out = ByteStreams.newDataOutput();

        out.writeUTF("VANISH");
        out.writeUTF(vanish ? "on" : "off");
        out.writeUTF(player.getName());

        System.out.println("vanish message - " + player.getName());

        player.getServer().sendData("staff:vanish", out.toByteArray());
    }```
^ this actually does send, but the paper does NOT receive it:
```@Override
    public void onPluginMessageReceived(String channel, Player player, byte[] message) {
        //if (!channel.equals("aa:main")) return;

        plugin.getLogger().log(Level.FINE, "fired onPluginMessageReceived event");

        try (ByteArrayInputStream byteIn = new ByteArrayInputStream(message);
             DataInputStream in = new DataInputStream(byteIn)) {

            String subChannel = in.readUTF();
            if (subChannel.equals("VANISH")) {
                String action = in.readUTF();
                String targetName = in.readUTF();

                Player target = Bukkit.getPlayerExact(targetName);
                if (target != null) {
                    boolean vanish = action.equalsIgnoreCase("on");
                    for (Player p : Bukkit.getOnlinePlayers()) {
                        if (vanish) {
                            p.hidePlayer(plugin, target);
                        } else {
                            p.showPlayer(plugin, target);
                        }
                    }
                }
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }```
ivory sleet
#

principally that is

mortal hare
#

lso you basically cant encapsulate private behaviour within java beans classes because internals are being exposed to the public via getters

wet breach
mortal hare
ivory sleet
slender elbow
ivory sleet
#

even at larger corps

wet breach
mortal hare
# wet breach I don't see how this is true

well you use getters and setters to manipulate the data on the container which makes it anemic in a sense that now your classes only define data and not behaviour just like normal classes do

#

you can use fields but at that point public getters exposing internal just defeats the whole purpose of instance methods to begin with

graceful patrol
wet breach
#

encapsulation involves combining data (attributes or properties) and the methods (functions) that operate on that data into a single unit

slender elbow
#

well uhhhh

#

the channel name is different

mortal hare
wet breach
#

java bean follows OOP in the most strict sense of the definition

mortal hare
#

via the getters/setters

#

that makes it anemic in a way that breaks encapsulation of internals

ivory sleet
graceful patrol
ivory sleet
#

i feel like you're blaming the paradigm due to one interpretation of the paradigm dovidas

slender elbow
#

no, the "mcwistaff:vanish"

slender elbow
#

to "staff:vanish"

graceful patrol
mortal hare
#

its just feels wrong to manipulate data using behaviour from the outside class scope, at this point you can just have public fields and manipulate those fields altogether

#

for me it closely resembles programming to a struct

#

all jbeans classes do most of the time is just store data

ivory sleet
#

more so, your code is less defended, when you have a getter as a middle man you have a layer of protection at least

mortal hare
#

i feels it just a compromise for reflections api to parse those classes externally via libs like jakarta

#

a hack in some sort

slender elbow
graceful patrol
wet breach
#

because java has those built in and intended to be used. The way java beans uses them is not the only way they can be used.

slender elbow
#

the connected event is probably too early to send it, though i don't know when bungee exactly sends the registration to the server but it's late in the login process

#

command should work, proxy command, right?

graceful patrol
mortal hare
#

ik wording is a bit lame from me what i wanted to say that to parse jbeans by utilizing reflections api you need some kind of convention of how the data should be manipulated and declaring getters/setters and no args constructor is the easiest to impl

#

jbeans is just a convention to manipulate data from the outside of classes scope in a sense. i just dont like it that now the responsibility of data behaviour is on some kind of reflections layer and not explicitly declared inside class. DX and quickness to implement over proper syntax for frameworks wins

graceful patrol
wet breach
#

this would be when the brand channel is established in the plugin channels

#

specifically the server sends it right after this packet is sent

#

client does the same thing

slender elbow
#

the protocol allows it anytime during play yeah

#

that is, technically a payload for any channel can be sent, but the server has that funny channel registration logic, the proxy first needs to send the register payload, then you can send your payload on your channel

wet breach
# mortal hare jbeans is just a convention to manipulate data from the outside of classes scope...

reflection is not strictly necessary however java beans are designed so that tools and applications can interact with it dynamically at runtime and to be interacted by other applications from the outside etc. This means you wouldn't necessarily know anything about the Java bean at compile time, however there are times where you possibly could and therefore wouldn't need reflection in that sense.

pure dagger
#

@chrome beacon
someone responder this, but they havent responded now and i need to know
do you know what this could mean? (i tried today and it still says the same thing)

pure dagger
sly topaz
pure dagger
#

My own

sly topaz
#

send both the error and the trait code here if you can

#

?paste

undone axleBOT
pure dagger
#

ye

sly topaz
#

not much you can do about that except contact mojang support and ask them to unblock you

#

it might only be for a few days if you're lucky

pure dagger
#

what did i do lol

#

...

#

what could i do ??

sly topaz
#

contact mojang support and ask them to unblock your IP

pure dagger
#

but what could i do, where are the rules

buoyant viper
#

contact Mojang support, and possibly build a caching system in the event ur sending the same request multiple times

sly topaz
#

they aren't public, you just happened to trigger one of them by testing your plugin too many times probably}

#

if anything, Citizens's docs could probably warn people about that, I don't know

pure dagger
#

i just spawned like 22 npcs

sly topaz
#

with the same name/skin or all different?

#

also, all at the same time?

pure dagger
#

same

#

no, i realoaded a bunch of times and spawned them 1 by 1 to test

sly topaz
#

yeah, that must be it

pure dagger
#

whyyyy

rotund ravine
#

Don’t reload

#

Restart if needed

sly topaz
#

it's weird though, if it was the same name then it should be hitting the gameprofile cache

pure dagger
#

it was steve, then i spawned 2 with different names

#

repeatedly

#

i mean like a 3 times

#

yeah i forgot

#

but its 3

echo basalt
#

mm I love reworking my menu lib a billion times

#

task for today was to reinvent pagination to allow for partial shifts

sly topaz
#

the one where you reimplemented NMS?

echo basalt
#

yeah

#

apparently we have a fancy ass menu that paginates

#

BUT the pagination is partial and works in weird conditions

#

and some elements start offset to others

#

how did I fuck this up

pure dagger
#

does this use texture pack ?

echo basalt
#

ofc

echo basalt
#

Yeah fts I'm changing pagination to effectively work in all directions

#

Basically making a 2d game engine atp

slender elbow
#

"we have 2d game engine at home"
2d game engine at home

buoyant viper
#

i got some fuck ass graphics library ive been workin on

#

but dont actually consider it.. sux lol

slender elbow
#

she do the glawt glawt

#

why am i like this

buoyant viper
#

i originally called it awtogl (awt-to-gl "auto gl") but i was like that sucks

#

so then i called glawt ("glaut")

slender elbow
#

you know what else sucks

buoyant viper
#

the whole repo

high pumice
#

hey is anyone can help me for just create an npc with nms 1.21.1

echo basalt
#

I should make pokemon in this little tiny 9x6 screen

buoyant viper
#

True

#

if i ever find a server where i can play pokemon in my inventory and like

#

the grass block (not the dirt one with grass layer like the actual grass item) is just straight up the grass

echo basalt
#

fantasy rpg server with a gameboy color

buoyant viper
#

i might lose my shit from laughing so hard

#

idk why but that just seems so like Lol to me

echo basalt
#

I might make a demo if I actually get this to render items

#

I still need to make a title layer system

#

and the camera's clipping too soon fml

#

I mean nothing stops me from just rendering the entirety of pokemon with fonts why tf do I need this

peak depot
#

what is the event for interact with entity event since PlayerInteractAtEntityEvent seems to miss the getEntity part

slender elbow
#

getRightClicked

peak depot
#

thx

warm mica
molten hearth
#
image: node:latest

stages:
  - deploy

services: []

deploy:
  stage: deploy
  only:
    - no-masters
  tags:
    - mcscans_runner
  before_script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - mkdir -p ~/.ssh
    - echo "$ENCODED_SSH_KEY" | base64 -d > ~/.ssh/id_ed25519
    - chmod 600 ~/.ssh/id_ed25519
    - eval "$(ssh-agent -s)"
    - ssh-add ~/.ssh/id_ed25519
    - ssh-keyscan -H $PROD_SERVER_IP >> ~/.ssh/known_hosts
  script:
    - echo "Deploying via SSH..."
    - rsync -avz --exclude=".git" ./ root@$PROD_SERVER_IP:/var/www/api/
  environment: production
``` do you guys have any idea why this pipeline would be stuck on `Checking pipeline status` in gitlab
sly topaz
molten hearth
sly topaz
molten hearth
#

I can in like 1 hour sorry im getting food atm

molten hearth
# sly topaz can you show the gitlab runner list output
root@ns3124261:~# sudo gitlab-runner list
Runtime platform                                    arch=amd64 os=linux pid=33696 revision=4e717029 version=18.0.3
Listing configured runners                          ConfigFile=/etc/gitlab-runner/config.toml
ns3124261                                           Executor=shell Token=REDACTED URL=https://0xacab.org```  my config atp is ```yml
# This file is a template, and might need editing before it works on your project.
# You can copy and paste this template into a new `.gitlab-ci.yml` file.
# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.
#
# To contribute improvements to CI/CD templates, please follow the Development guide at:
# https://docs.gitlab.com/development/cicd/templates/
# This specific template is located at:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Nodejs.gitlab-ci.yml

# Official framework image. Look for the different tagged releases at:
# https://hub.docker.com/r/library/node/tags/
image: node:latest

# pls work?

stages:
  - deploy

deploy:
  stage: deploy
  before_script:
    - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
    - mkdir -p ~/.ssh
    - echo "$ENCODED_SSH_KEY" | base64 -d > ~/.ssh/id_ed25519
    - chmod 600 ~/.ssh/id_ed25519
    - eval "$(ssh-agent -s)"
    - ssh-add ~/.ssh/id_ed25519
    - ssh-keyscan -H $PROD_SERVER_IP >> ~/.ssh/known_hosts
  script:
    - echo "Deploying via SSH..."
    - rsync -avz --exclude=".git" ./ root@$PROD_SERVER_IP:/var/www/api/
  environment: production
#

and this is my runner configs

#
# cat /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0
connection_max_age = "15m0s"
shutdown_timeout = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "ns3124261"
  url = "https://0xacab.org"
  id = 1658
  token = "REDACTED"
  token_obtained_at = 2025-06-12T08:40:02Z
  token_expires_at = 0001-01-01T00:00:00Z
  executor = "shell"
  tags = ["mcscans_runner"]
  [runners.cache]
    MaxUploadedArchiveSize = 0
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]```
sly topaz
molten hearth
#

is it not supposed to

#

i only put shell commands in the yml file so idk