#help-development

1 messages · Page 1036 of 1

chrome beacon
#

Oh right 1.12

#

I forgot 💀

dawn flower
#

?

tardy delta
#

ig metadata on an entity isnt persistent then?

#

i wanted to look into that api recently

#

hmm looks pretty cool

prisma creek
#

Hi, i'm using Spigot 1.21
I'm trying to create my own craft but if I put recipe.shape(" S ", " P ", " S "); it's simply not working and I don't know why

 public void craftBandage()
    {
        ItemStack bandage = new ItemStack(Material.PAPER, 1);
        ItemMeta bandageMeta = bandage.getItemMeta();
        bandageMeta.setDisplayName(ChatColor.WHITE + "" + ChatColor.BOLD + "Bandage");
        bandage.setItemMeta(bandageMeta);

        NamespacedKey bandageKey = new NamespacedKey(plugin, "Bandage");
        ShapedRecipe recipe = new ShapedRecipe(bandageKey, bandage);
        recipe.shape("SSS", " P ", " S ");
        recipe.setIngredient('S', Material.STRING);
        recipe.setIngredient('P', Material.PAPER);

        Bukkit.addRecipe(recipe);
    }
late sonnet
prisma creek
turbid flame
#

Can i load plugin classes without enabling it?

hushed spindle
undone axleBOT
sacred mountain
#

Is this efficient?

#

Why is it done

#

As supposed to something like

TextComponent... textcomponent

#

I see it in like

#

List.of()

#

too

#

I might be missing something, my knowledge of java is mostly the front end stuff lol not the performance

tardy delta
#

well if you wanna get into stack operations...

sacred mountain
#

the italics are telling me not to do that

misty ingot
#

gib plugin idea or else 🔫 🙂

twin venture
#

Hi , sorry for bothering you again so now i finished , kits , cosmetics now i want to make a CosmeticUser (uuid , active, bought cosmetics) how would i go by doing that?

tardy delta
#

just create one?

twin venture
dusky crane
#

This is causing an EventException

@EventHandler
    public void handleActionEvent(PlayerInteractEvent event) {
        if (event.getItem() != null) {
            if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && event.getItem().getItemMeta().equals(TeleportSword.meta)) {
                if(event.getClickedBlock() != null) {
                    Location location = event.getClickedBlock().getLocation();
                    location.setX(randomDouble());
                    location.setY(randomDouble());
                    location.setZ(randomDouble());
                }
            }
        }
    }```
#

Could not pass event PlayerInteractEvent to untitledSpigotPlugin v1.0-SNAPSHOT
org.bukkit.event.EventException: null

tardy delta
#

?paste the whole error

undone axleBOT
dusky crane
tardy delta
#

whats line 18?

dusky crane
#

if (event.getItem() != null) {

#

or maybe this: if (event.getAction().equals(Action.RIGHT_CLICK_BLOCK) && event.getItem().getItemMeta().equals(TeleportSword.meta)) {

#

I think I forgot to update it

tardy delta
#

maybe the item in hand is null or air (thus meta returning null)

dusky crane
#

I think I solved it or the server is lagging

prisma creek
#
    @EventHandler
    public void onInteractBandage(PlayerInteractEvent e)
    {
        Player player = e.getPlayer();
        ItemStack item = e.getItem();

        if(item != null && item.getType() == Material.PAPER
                && item.hasItemMeta() && Objects.requireNonNull(item.getItemMeta()).hasDisplayName()
                && item.getItemMeta().getDisplayName().equals(ChatColor.WHITE + "" + ChatColor.BOLD + "Bandage"))
        {
            if(player.hasMetadata("Fracture"))
            {
                player.removeMetadata("Fracture", plugin);
                player.removePotionEffect(PotionEffectType.SLOWNESS);
                String guerisonMessage = mc.getString("survie.sante.guerison", replacements);
                player.sendMessage(guerisonMessage);
                item.setAmount(item.getAmount() - 1);
            }
        }
    }

When I use the item, the amount is not decreasing why?

dark moth
#

idk

#

sorry

dark moth
#

u just decreasing the amount of the bandage will give it to u

prisma creek
#

Yeah no I had an error before this it's working now

#

thx for your help 🙂

prisma creek
spice burrow
#

is there some sorta data corruption issue with the 1.21 release?

kind hatch
#

What does /about say for you?

#

Or better question.

#

Is your spigot up to date?

spice burrow
#

everything is up to date, I’ve recently moved to paper but am using spigot until the new paper release is out. people keep advising me against it as there’s apparently issues with item data randomly breaking. there’s also been a decent amount of people, from what i understand, having issues with crashes

kind hatch
#

Well, it's a good thing 1.21 isn't the default just yet.

slender elbow
#

known corruption issues? no, but considering 1.21 isn't deemed stable yet I would handle with care

#

make backups yada yada

spice burrow
#

yea yea everything is safe was just curious. I know it’s not completely stable just wasn’t sure if it was really being blown out of proportion or not

#

I personally haven’t encountered any issues besides the occasional crash

kind hatch
#

Do you have crash logs?

spice burrow
# kind hatch Do you have crash logs?

it was happening due to multiple mobs in trial chamber, in vanilla it works fine but not on spigot but as long as it’s not too overboard it should be fine until it’s more stable

kind hatch
#

I believe that issue has been fixed.

spice burrow
#

Hmm I’ll run buildtools again then, I’ve been on this build since saturday morning

novel parrot
#

I have a plug-in that I wrote and am currently bringing up to date (into 1.21) from 1.19.2

A few odds and ends left to fix… but one thing I don’t understand is that all the custom heads I access are now showing up as Steve rather than properly skinned. My assumption is that this is something I’ll need to figure out on my own and fix, but I thought to mention it here in case it was a known issue that I wasn’t aware of.

kind hatch
#

How are you applying the skin?

novel parrot
#

I’m not at the computer now… was just pondering the issue. I know it’s called by this long code I got from the heads database site (which is not a player guid, I understand that you can do that now in a way I didn’t know of before). I know they are all created when the server starts and stored for later use. If that’s not clear enough I’ll look into it as soon as I’m able to let you know more.

#

Oh excellent, thanks for the link I’ll be reading up on that asap.

#

Seriously… very much appreciated, what I have I worked out myself and it’s always felt a bit hack job but I didn’t know any other way.

kind hatch
#

Thank @tender shard for the tutorial. He's the one who wrote it after all.
goated community member btw

novel parrot
#

Yeah I’m still using the method I came up with prior to 1.18… this will be a longer job to convert to but lead to much cleaner code.

mortal hare
#

anyone familiar with sponge/fabric mixins?

#

is there any point of making Accessor interface if you actually use it for accessing a field inside mixin?

#

should i just make a concrete mixin class with Accessor annotation to access private field

#

or should i still create Accessor interface

kind hatch
mortal hare
kind hatch
#

Ikr

#

Now it's not so much of an issue.

#

API code makes life so much easier.

blazing ocean
#

paper moment

novel parrot
#

Thank god, yeah it’s always been one of the crappiest parts of my project to maintain.

slender elbow
novel parrot
#

So what I was using before, on the Minecraft-heads website is just called “Value”… if I only have this data stored but now I want to access the Minecraft URL, hmm… I hope it’s not a manual head hunt I’m going to be signed up for

#

(Fyi… I write code but have no formal education so sometimes I feel a bit backwoodsy and like I don’t know how to do things very smart)

kind hatch
#

The tutorial covers all of that. You can still use those base64 values.
I know I still do.

prisma creek
#

How can I create a custom recipe ?

novel parrot
#

Oh excellent. What a relief I literally use hundreds and they need to not be changed or it would be a huge loss

novel parrot
#

Yea thank you @tender shard!

mortal hare
sacred mountain
#

i cba to test but

mortal hare
#

i dont understand spigots stance against adventure

sacred mountain
#

will this do 2 lines or 1

prisma creek
kind hatch
#

Are you including the spaces?

prisma creek
#

Yep

jagged quail
#

@tender shard do you like pizza

prisma creek
# kind hatch Are you including the spaces?
 public void craftBandage()
    {
        ItemStack bandage = new ItemStack(Material.PAPER, 1);
        ItemMeta bandageMeta = bandage.getItemMeta();
        bandageMeta.setDisplayName(ChatColor.WHITE + "" + ChatColor.BOLD + "Bandage");
        bandage.setItemMeta(bandageMeta);

        NamespacedKey bandageKey = new NamespacedKey(plugin, "Bandage");
        ShapedRecipe recipe = new ShapedRecipe(bandageKey, bandage);
        recipe.shape("SSS", " P ", " S ");
        recipe.setIngredient('S', Material.STRING);
        recipe.setIngredient('P', Material.PAPER);

        Bukkit.addRecipe(recipe);
    }

This works but when I put " S ", " P ", " S " it's not working

kind hatch
#

Where are you calling the method?

#

And how often?

prisma creek
#

In my OnEnable()

#

With this : ```
Fracture.getInstance().craftBandage();

kind hatch
#

I mean, the code looks fine to me.
If you only call it in the #onEnable() method, then it might be a bug with spigot.
You may want to make a jira report.

prisma creek
#

Yep I will thanks for your help 🙂

tender shard
blazing ocean
#

does anyone here have experience with spring

#

do i return a byte array for serving files

novel parrot
#

I have custom recipes which require specific lore, and functionally this works well.

Is it possible (and if so is there an example of how) to make these custom recipes display properly in the recipe book? (idk if that’s the proper name, book in the survival inventory)

blazing ocean
grim hound
#

if I use gradle to build a project, can I use a jar I have on my pc to build with it?

blazing ocean
#

wdym

#

gradle wrapper?

chrome beacon
mortal hare
prisma creek
#

I upgraded my spigot to the latest version, I guess this bug will get patch soon

chrome beacon
#

?jira

undone axleBOT
chrome beacon
#

You can report the bug on JIRA ^

#

(If it isn't there already ofc)

blazing ocean
#

anyone good with spring? trying to run a spring app inside of a plugin

@SpringBootApplication
@RestController
class PackServer {
    @GetMapping("/global")
    fun getGlobalPack() = GlobalPack.bytes

    companion object {
        fun start() {
            val app = SpringApplication(PackServer::class.java)
            app.setDefaultProperties(mapOf("server.port" to Bukkit.getPort() + 1))
            app.run()
        }
    }
}
chrome beacon
#

Uh Spring inside of a plugin sounds like massive overkill

#

What are you trying to do

blazing ocean
chrome beacon
#

Oh yeah that's overkill 💀

hazy parrot
#

you dont need whole spring

#

to make webserver

blazing ocean
#

what do i use then

blazing ocean
chrome beacon
#

If you want the smallest jar write your own web server

#

Otherwise Javalin is a pretty nice option

blazing ocean
blazing ocean
tardy delta
#

just use jwebserver 💀

blazing ocean
#

kotlin support
get excited
it's just this concern

#

my messages are disappearing on desktop wtf

chrome beacon
#

Since the goal here is just to serve a file I'd go with my own web server

blazing ocean
orchid trout
#

this happens on all new projects i make

chrome beacon
#

Java has most of the tools already there for you

blazing ocean
chrome beacon
orchid trout
#

its not

blazing ocean
#

are you sure

orchid trout
#

100%

chrome beacon
#

Invalidate caches and remove the .idea folder

orchid trout
#

i removed the .idea folder reloaded and then it got like that

chrome beacon
#

So what was it before

blazing ocean
#

try reimporting the module from maven

chrome beacon
#

Also just give it a restart?

orchid trout
#

when i restart the files flash and disappear

chrome beacon
#

Stop IJ remove .idea

#

Start it again

orchid trout
#

work

mortal hare
blazing ocean
mortal hare
#

i always use a mod to disable that

#

and install EMI instead

chrome beacon
mortal hare
#

Too many items

prisma creek
mortal hare
#

i still remember downloading TMI from minecraft forums back in 2011 and patching the minecraft.jar manually by removing meta inf

chrome beacon
#

I started playing MC back in 2013

#

So I never had to do that

mortal hare
#

i've started to play in around beta 1,8 but my parents were too poor to buy me a copy, so i've pirated it from some kind of sketchy torrent site and played single player

#

back in the days minecraft was more depressing and it was pretty cool to play at night since nights were darker

#

also bedrock fog

chrome beacon
#

I used to play old pocket edition

#

Before I got it on PC

#

So 2011-2012

blazing ocean
#

i hate big ascii banners

chrome beacon
#

I still remember to tiny worlds and render distance

blazing ocean
#

in stdout

mortal hare
#

i didnt even had a smartphone at those days, smartphones were seen as luxury in my country, and computer was for whole family, so i've booted up minecraft on my 3GB ram winxp machine and played it

#

times had changed so much since then

chrome beacon
mortal hare
#

our country like progressed so much till then

chrome beacon
#

Probably easy to get rid of

hazy parrot
#

config option

tardy delta
chrome beacon
hazy parrot
blazing ocean
#

how is that invalid

hazy parrot
#

config.showJavalinBanner = false

blazing ocean
#

do i really need a http://

#

holy shit discord is so weird rn

chrome beacon
#

Discord is quite buggy tbh

blazing ocean
#

like ??

chrome beacon
#

Just switching accounts ends up with me in a state of being logged in with both at once

blazing ocean
#

lmao

#

i need to switch to mobile now

chrome beacon
#

Like seeing servers of one account while logged in with a another

hazy parrot
#

its only legit for binding

blazing ocean
#

i can't wait to set up an extra unproxied domain for the packs

mortal hare
#

i remember this logo

#

but there's no way i've played it in like 2009

#

so i might've been playing and old copy of minecraft back then

#

without even knowing lol

blazing ocean
#

am i supposed to get the raw byte data back when i visit the url and not the file

hazy parrot
#

i think there was similar logo (probably same) but red

mortal hare
#

chat gpt says that the last version it was beta 1.7.3 to have that logo

blazing ocean
#

because i don't think i should

#

i mean it is a valid zip file

chrome beacon
#

No you want the file

#

Don't forget the headers

#

Otherwise the browser won't understand what it's recieving

blazing ocean
tardy delta
#

anyone knows in junit if you can like make all tests execute twice with a different env (i basically wanna tests 2 envs without rewriting all tests)

public class ExecutionEnvTest {
    private ExecutionEnv env;

    @BeforeEach
    void setUp() {
        env = ExecutionEnv.empty();
    }```
#

ai told me to use a parameterized test and write my own provider

#

any better ways?

chrome beacon
eternal oxide
#

Live dangerously, throw it into production with no tests.

tardy delta
#

so i ddos my own db again?

#

you're a dangerous man

eternal oxide
#

If its a paying job, you get paid to fix it too 🙂

blazing ocean
#

i'm just returning some byte array

#

the file doesn't exist on disk

tardy delta
#

anways came up with this

    static Stream<Arguments> provideEnvironments() {
        return Stream.of(
                ExecutionEnv.empty(),
                ExecutionEnv.defaulted()
        ).map(Arguments::of);
    }

  @ParameterizedTest
    @MethodSource("provideEnvironments")
    void method1(ExecutionEnv env) {
#

sadly poor java doesnt have a nameof

#

all 272 tests still working

blazing ocean
#

damn

robust ginkgo
#

Does Bukkit.getPlayer(uuid) work with offline players?

chrome beacon
#

No an offline player isn't online

#

So they don't have a player object

#

Only OfflinePlayer

blazing ocean
#

Tf is it yapping

#

what is invalid about this

robust ginkgo
#

oh I found a non-deprecated getOfflinePlayer method

echo basalt
robust ginkgo
#

Regular Player objects can be casted to OfflinePlayer, right?

blazing ocean
#

idk it's an issue for tomorrow me

chrome beacon
devout kite
#

is there a possibility to change the design or color of the freez effect u get when your under powder snow?

chrome beacon
#

You can probably use a core shader

#

That does require a resource pack

blazing ocean
devout kite
#

can i give a player this effect with out putting them in powder snow?

blazing ocean
#

on the player object

devout kite
#

oh thats very nice

blazing ocean
#

idk the method names rn

devout kite
#

thanks i will defenatly use that 🙂

grim hound
#

If you send a packet to a player who's connected via some proxy (bungee, velocity, gate) it needs to go through that proxy first, but the proxy can intercept THE ACTUAL PACKET. And since what we send is a byte array that's (usually) compressed and merged with other packets, does this mean each packet on the proxy is: decompressed, framed, identified, read and only then modified, and only then recompressed and merged?

#

so the full encoding process happens twice with an additional decoding

#

is that right?

#

or are there some other mechanics at work?

elder dune
#

!help

#

Whats the pastbin command ?

grim hound
undone axleBOT
#
CafeBabe Help Menu
*Red V3*
__**Admin:**__

selfrole Add or remove a selfrole from yourself.

__**Cleanup:**__

cleanup Base command for deleting messages.

__**Core:**__

embedset Commands for toggling embeds on or off.
info Shows info about CafeBabe.
licenseinfo Get info about Red's licenses.
mydata Commands which interact with the data CafeBabe has about...
set Commands for changing CafeBabe's settings.
uptime Shows CafeBabe's uptime.

__**Downloader:**__

findcog Find which cog a command comes from.

__**Mod:**__

names Show previous usernames, global display names, and server...
userinfo Show information about a member.

__**ModLog:**__

listcases List cases for the specified member.
reason Specify a reason for a modlog case.

__**Permissions:**__

permissions Command permission management tools.

grim hound
#

ah paste bin

#

?paste

undone axleBOT
grim hound
eternal night
#

Why do I get a ping KEKW

grim hound
grim hound
elder dune
blazing ocean
eternal night
#

Well a proxy can be smart about it, but yea. If it wants to read shit it needs to be a proper man in the middle

blazing ocean
#

epic fail

#

?cc

#

does it not work here

eternal night
#

because that can be a heavy task

grim hound
grim hound
eternal night
#

Yea

#

Well some of it

#

idk how much

#

never worked much with bungee

grim hound
#

hmmm

#

is there a way to send a packet directly without the proxy butting in?

eternal oxide
eternal night
#

then the proxy wouldn't be a proxy

devout kite
grim hound
eternal night
#

you don'T have a client connection

#

the only thing you have is a connection to the proxy so

#

¯_(ツ)_/¯

blazing ocean
chrome beacon
#

Now we can just use a transfer packet instead of a proxy uwu

grim hound
#

10 000 * 600

#

packets

#

every 400 millis

eternal night
#

sounds pretty dumb

grim hound
grim hound
eternal night
grim hound
#

600 particle packets

eternal night
#

if you are on 10k players you don't have one proxy

blazing ocean
grim hound
#

6 * 10^6 packets every 400 millis

eternal night
#

no

#

whatever server this is for

chrome beacon
#

C mentioned

eternal night
#

that supposedly has 10k active concurrent players

grim hound
#

for example

eternal night
#

would have the infra to not have them behind a single proxy

#

that would be absolutely brain dead

chrome beacon
#

^^

grim hound
eternal night
#

your single point of failure there would be so large I could hit it while upstream updating paper

grim hound
#

Minestom handles thousands of players no problem

#

why would a proxy struggle?

blazing ocean
eternal night
#

you'd still not put all your 3000 players on a single minestome instance

#

that would also be brain dead

#

you don't want to scale horizontally

blazing ocean
#

Yeah

grim hound
blazing ocean
young knoll
#

I prefer scaling in a northeast diagonal

eternal night
#

yea you said a single instance can handle thousands

grim hound
#

no problem

eternal night
#

ah

#

okay so to lemme make sure I get this

young knoll
#

Doesn’t minestom have like

devout kite
young knoll
#

Very little content

eternal night
#

you are sourcing from "FUCK CAR DEPENDENCY!!!!!" that it handles 7k?

blazing ocean
#

Wondering how many that bash server can handle

blazing ocean
chrome beacon
grim hound
#

for you to judge based of a nickname

chrome beacon
#

And that's a nickname they got recently

eternal night
#

no but its a random message

#

with 0 prove

grim hound
eternal night
#

like, velocity proxy was struggling on the 1k folia test just with network

chrome beacon
#

Just because you can doesn't mean you should

grim hound
#

minor spelling error, I win

chrome beacon
chrome beacon
#

Not actual players network isn't a problem

eternal night
#

not the server CPU, the network

grim hound
eternal night
#

ah

young knoll
#

Did the bots behave like real players

grim hound
#

probably

eternal night
#

where did the bots connect from?

grim hound
#

from what I got

young knoll
#

Because that’s a lot of extra network usage vs standing around

eternal night
#

locally?

chrome beacon
#

Probably

grim hound
eternal night
#

so yea, w/e

blazing ocean
eternal night
#

random statement without anything tangible

#

split your work across multiple proxies

#

be happy

elder dune
eternal night
#

or don't send 600 particles every 400ms KEKW

blazing ocean
grim hound
#

correct /\

eternal night
#

and all currently active players solve that at the same time?

#

damn

#

wait

#

is this offline mode support??

grim hound
#

they disappear if it's longer than that

chrome beacon
#

Probably

grim hound
blazing ocean
#

they said anti bot

grim hound
#

I forgot

eternal night
#

Ah shit, aand off they go to the block list

grim hound
#

okay then fuck off

slender elbow
#

1 blocked message

eternal night
#

Welp

blazing ocean
quaint mantle
#

minestom goated

young knoll
slender elbow
#

is that the dmc logo lol

#

oh god it is

chrome beacon
#

Yes

eternal night
chrome beacon
#

They own that domain

#

Iirc

slender elbow
#

epic

young knoll
#

Aww it doesn’t embed the video

robust ginkgo
grim hound
#

I never understood this

#

"you haven't bought the game, you get no support"

#

when the game is owner by a money-hungry mega corporation

#

that has already made bilions on it

#

I was able to get into minecraft precisely because it was for free and bought it later on

#

there was even a confirmed study that pirated games have more people actually buy the game

#

because they can try it out for free

eternal night
#

"Hey we put a lot of our time into a game maintained by mojang, a studio that does need income. Without mojang, our work and community would break apart. You come here and want our help but decide to actively screw over mojang. Why u no support"

grim hound
#

it's like I'm talking to a wall

#

maybe the even worse

#

the wall is conscious and full of itself

eternal night
#

"that has already made bilions on it" Okay? Mojang isn't made out of money. That money went places, the game still needs to be profitable.
"money-hungry mega corporation" Yes, microsoft owns mojang but mojang still does most of this themselves. The input from their parent company is limited as fuck.
"there was even a confirmed study that pirated games" Interesting, seems like 0 companies in the gaming industry seem to have read this study? Nor have I.

#

not to mention that you seem to actively be working on making a server for offline mode players, which is weird, because at that point, shouldn't they already like the game enough to have bought it? Seems like there is 0 intention to have them buy the game.

grim hound
eternal night
#

me personally? no, probably not. But if the entire server is in consensus to not help people trying to make the life of pirats better, then maybe

grim hound
#

there was some game that was never possible to be pirated

#

and it was like a continuation series

#

and it had the least amount of sales

#

by a great margin

eternal night
#

Ah yes, some game

#

even if it exists, that game may also just have been shit lol

grim hound
#

possible, ye

#

anyway, why the hell am I arguing about piracy

eternal night
#

Yea, good question tbh xD

grim hound
#

aight, I'm sorry, we should just make up

#

no need to argue

#

Brother

eternal night
#

All good 👍

grim hound
#

Thanks 👍

robust ginkgo
#

Is triump GUI good?

#

that is not the message I meant to sent

grim hound
robust ginkgo
#

different paste lmfao

grim hound
#

xD

eternal night
robust ginkgo
#

there we go

eternal night
#

Probably best to just try and see

slender elbow
#

it's pretty good

eternal night
#

308 stars in github seem nice tho

slender elbow
#

one of the fan favourites

eternal night
#

LichtHund is also a classic

blazing ocean
#

interfaces-kotlin my beloved

eternal night
#

noxcrew everywhere smhduck

blazing ocean
slender elbow
#

truly

blazing ocean
#

smh

robust ginkgo
#

All I need is a library that lets me use multiple pages and maybe even storage slots.

slender elbow
#

yeah that'll be okay

#

just try it out

robust ginkgo
#

The one I'm using now feels hella inefficient

#

time to rewrite the entire ui yay ;-;

young knoll
#

Remember when noxcrew was all about maps

slender elbow
#

no

#

i dont

robust ginkgo
#

noxcrew isn't about maps?

blazing ocean
blazing ocean
#

smh my head

robust ginkgo
#

gotta love it when you're shaking your head your head

robust ginkgo
#

why did I have to pick the wrong library

blazing ocean
young knoll
#

Mcci?

blazing ocean
robust ginkgo
blazing ocean
#

they made some cool events too

robust ginkgo
#

the fact that I needed 221 lines for 2 3-row pages is weird

blazing ocean
#

the indents on here

    private val inventory = buildChestInterface {
        rows = 6
        initialTitle = buildText {
            append("Spectator Menu")
            lightPurple()
            bold()
        }

        withTransform(playersProperty) { pane, view ->
            val playersSplit = players.split(9)
            repeat(6) { i ->
                val playersOnRow = playersSplit[i]
                playersOnRow.forEachIndexed { j, eventTeamPlayer ->
                    pane[i, j] = StaticElement(Drawable.Companion.drawable(getSkull(eventTeamPlayer))) {
                        GlobalScope.launch {
                            view.close()
                        }
                        view.player.teleport(eventTeamPlayer.player!!)
                    }
                }
            }
        }
    }
blazing ocean
robust ginkgo
#

at least that one is paginated

young knoll
#

I played mcci for a bit

#

It’s alright but I got bored

blazing ocean
#

damn

sterile breach
#

good evening, I've spent the day looking for a way to synchronize inventory between 2 servers in real time on a proxy. I've tried every possible way and I've come to the conclusion that it's impossible to sync inventory without making the player go through limbo (it's impossible to sync just via the loading screen). has anyone tried the same thing?

robust ginkgo
#

I bet that could've been done in less than 100 (while keeping it clean)

twin venture
#

can i use generic keys in map?

#

for example :

  • map(Integer,Object or v) ?
blazing ocean
blazing ocean
grim hound
#

you can't deny that

grim hound
#

but it's like 16 000 bytes

grim hound
#

I tested it

#

for the player it's usually an even LESSER CPU usage

quaint mantle
grim hound
#

than going around on a busy large server

grim hound
#

but async

#

no sync

quaint mantle
#

yeah, thats ok

grim hound
#

to the main thread

quaint mantle
#

Like bandwith stuff

grim hound
#

since somehow, I found that message packets can be compressed into like 2 bytes (I still have no idea how I got that result)

swift dew
grim hound
#

and particle packets are usually like 60 bytes (so still, how the fuq did I get 2 on a message packet)

swift dew
twin venture
#

Hello guys , i need help with something 🙂
if i use this its kind of working .. but i want it to publish the any class that extends Cosmetic

#

for example i have SkyWarsKit abstract class it extends Cosmetics , and its implemented in SkyWarsKitImpl

#

and also i have other cosmetics not only the mentioned above

#

i have killCosmetic , win Cosmetic i want to make 1 method to update 🙂

#

if i put Cosmetic in the method i sent it will send this error :

grim hound
twin venture
#

that's what you are worried about

#

🙂

grim hound
#

could be a typo

#

I dunno

twin venture
#

nop i don't think so i checked twice

grim hound
#

anywhere here

twin venture
#

Class<? extends Cosmetic>

grim hound
#

is it scheduled for later on execution?

twin venture
#

maybe something like this?

#

yes

grim hound
twin venture
#

its a type adapter cuz redis use gson

grim hound
#

I've never used Redis

#

ppl that did

#

ASSEMBLE

#

(you gotta wait for a bit)

chrome beacon
#

I mean it looks like a gson error not a redis one?

#

Or did I miss smth

worldly ingot
#

You're implementing your type adapter weirdly

twin venture
worldly ingot
#

You wrote the write() method just fine, you should be able to write your read() method basically the same way, just in reverse :p

twin venture
#

ok

worldly ingot
#

Basically use the reader object you have, don't pass it to a JsonParser

#

beginObject(), nextInt(), nextString(), nextString(), etc. etc. etc. endObject()

#

Actually probably a shit way to write that lol. The JsonReader docs have a good example

#
   public User readUser(JsonReader reader) throws IOException {
     String username = null;
     int followersCount = -1;

     reader.beginObject();
     while (reader.hasNext()) {
       String name = reader.nextName();
       if (name.equals("name")) {
         username = reader.nextString();
       } else if (name.equals("followers_count")) {
         followersCount = reader.nextInt();
       } else {
         reader.skipValue();
       }
     }
     reader.endObject();
     return new User(username, followersCount);
   }
#

Could replace that if/elseif/else block with a switch if you wanted. Up to you. But definitely best to parse with names vs what I'm proposing lol

twin venture
#

like so?

worldly ingot
#

Yeah pretty much

#

Should fix up your NPE

#

As a matter of personal preference as well, because you're referencing raw string ids, I would probably pull those up into constants and re-use them between your write() and read() methods

slender elbow
elder dune
#

Does anyone know if their is a better way to do

        String[] enchantParts = enchantedItemData.split(":");
        String enchantName = enchantParts[0];
        int enchantLevel = Integer.parseInt(enchantParts[1]);``` as it works but i get this error ```java.lang.NumberFormatException: For input string:```
worldly ingot
#

Readability, makes it easy to change later, avoids typos

worldly ingot
slender elbow
#

I can't :(

worldly ingot
#

Damn. Tough problem

twin venture
#

testing it rn ..

acoustic pendant
#

To get if the player is in the network (using a spigot plugin)

twin venture
#

i think this is a diffrent bug?

acoustic pendant
#

The thing is, i've disconnected and when I send the message

#

The player still is marked as connected

#

Why does that happen?

eternal oxide
#

the player you are using to request the list is already disconnected, so the PMC never gets sent for an update

acoustic pendant
eternal oxide
#

yes

acoustic pendant
#

Okay, i'll try that

worldly ingot
# twin venture i think this is a diffrent bug?

If your Cosmetic class is a constructable type and you're trying to serialize/deserialize it, then yes, you need a no-arg constructor so Gson can create an empty "default" instance of it, then reflectively populate its fields

eternal oxide
#

any player that is not the one disconnecting

twin venture
#

i was hoping if i can do only Cosmetic so it can push all kind of Cosmetics..

#

now i need to make 3 ,4 methods 😦 for each Cosmetic type

worldly ingot
#

Gson will want a type adapter for each type of serializable object, yes

#

I'm sure you can find a way to generalize it but one way or another, all types that you want to be serializable, Gson has to be aware of it

twin venture
#

yeah ofc

#

i used it before its really painful

worldly ingot
#

It can be painful, yeah, but it's definitely one of the best json libraries for Java :p

#

At least the most type safe and flexible

#

JSONSimple is really your only alternative and PES3_Yikes

twin venture
#

naah xD

worldly ingot
#

Basically just a glorified Map<String, Object> with zero type safety

young knoll
#

When do we get Hson

acoustic pendant
#

like, the one that disconnected

eternal oxide
#

then you can;t ask

acoustic pendant
#

is there no way?

eternal oxide
#

not with PMC

#

you could just wait

#

for a player to join

#

your server doesn;t need to know who is on the network if there are no players on that server

acoustic pendant
#

Do i make a Set<Player> if Bukkit.getPlayersOnline is null and then when a player joins ask the channel?

#

I mean, you said not with PMC, is there other way?

eternal oxide
#

just request it when someone joins

acoustic pendant
#

yea

acoustic pendant
#

As i can't ask the server in that method

eternal oxide
#

if the server is being shut down why are you worying about who is on the network?

acoustic pendant
#

oh

#

i'm dumb

#

that's a great point xd

eternal oxide
#

the players online status shoudl not really be stored in sql

acoustic pendant
#

not doing that

eternal oxide
#

each server should hold a temporary List of online players

#

ie network players

acoustic pendant
#

in sql i'm just storing numbers not player status

eternal oxide
#

I see you doing a data.setOnline

#

or connected, something

acoustic pendant
#

that the db

eternal oxide
#

ah ok

#

you cna set that in yoru receive method

acoustic pendant
#

wdym

eternal oxide
#

playerList.size()

acoustic pendant
#

Ooh, sorry is not that xd

#

Global and Current is the timePlayed

#

nothing to do with players across the proxy

eternal oxide
#

ok

acoustic pendant
#

But as I need to use papi I can't make this plugin in a proxy

short drift
#

What the correct way to log a shutdown message?

eternal oxide
#

log?

short drift
#

Well, the issue is that because there's no guaranteed order of operations the logger might be already shut down by the time I try to log the shutdown message for a chat..

eternal oxide
#

what?

#

The server logs the shutdown

short drift
#

I have a chat plugin that I wrote.
The chat plugin has a log file.
I want to log in the chat log "server was shut down".

eternal oxide
#

so log it. your plugin has its own logger

short drift
#

The issue is that, well I tried:

    private void registerKuuChat() throws IOException {
        System.out.println("CriticalFixes: Loading KuuChat.");
        var kuuChat = new KuuChat(this);
        // Register onDisable hook from inside the KuuChat class.
        Runtime.getRuntime().addShutdownHook(new Thread(kuuChat::onDisable));
        pluginManager.registerEvents(kuuChat, this);
    }

#

But by the time the shutdown hook runs it's dead already.

eternal oxide
#

oh god why a shutdown hook?

#

just use onDisable

short drift
#

Because I didn't know what else to do.

#

Well, I can't use onDisable from inside the class.

#

Otherwise I would.

eternal oxide
#

of course you can#

#

add an onDisable method and call it from the plugins onDisable

short drift
#

Oh, that's a great idea.

#

I didn't think of that.

short drift
twin venture
#

this is in Lobby plugin :
moudle as you can see iam publishing the kit data

#

and in the game moudle plugin , i do this but it never sent anything it never sent synced

#

it only send kit storage enabled ..

river oracle
#

I love doing endless amount of print statements in CB NMS

#

😭

twin venture
#

iam so confused why it does not send any message :
?????
i checked entire console nothing is sent!

#

still need help ..

versed canyon
#

I suspected as much, but thanks for the extra info!

river oracle
#

for some reason just dropping the item in doesn't update the client but shift clicks or any other modification does!

#

what da hell

twin venture
river oracle
#

I feel like I need to add a sendAllDataToRemote in my patch somewhere but like where tf that would be is beyond me atm

twin venture
#

i tried to debug it :

real lagoon
river oracle
# river oracle I'm losing my mind

Bukkit.getScheduler().runTask(this, () -> ((Player) event.getView().getPlayer()).updateInventory());welp this fixed it, but now I need to figure out where tf to send remote data in ContainerAnvil

real lagoon
river oracle
#

death to AnvilInventory 💪

real lagoon
#

Interesting

sacred mountain
#

Rate the help menu part of my server core so far:

kind hatch
#

Nice

sacred mountain
#

It generates the listing based on the directory it's in

#

But should i make it show the whole directory like the ones that aren't being used

#

or should i like highlight the current one and grey out the rest

#

i need ideas lol

real lagoon
sacred mountain
#

fr

#

I find that I have to provide a LOT of user support when i develop for servers, i just decided that I wanted to add more to my core API

#

this is actually quite a fun part

viscid carbon
#

Why would it always return null?

glad prawn
#

What is it?

viscid carbon
#

just a hashmap with a pair

#

I went back to what i made, i tried to use a lib to see if i would get a different result but it was the same.

river oracle
#

why are we not using records here

river oracle
viscid carbon
#

i've never used records. i'll look into it. Thank you. been trying to debug this for a minute

#

So i have to make a new class from what im reading. sorry for stupid questions. still learning java

twin venture
#

i understand the problem now , so when ever i create a instance of DataSyncServerSync in (lobby and in game moudle ) it create new instance of it , and it create new map (empty map of kits) ..

sacred mountain
#

lil update

#

Yippee

real lagoon
#

Imagine manage files in-game

sacred mountain
#

i mean i could idk if spigot api allows you to modify other plugins

#

but also,

#

file editing in game would be like

#

hell

real lagoon
#

Of course

river oracle
sacred mountain
#

yeah i guess

river oracle
#

you technically could modify their jars, but its already loaded into memory so it wouldn't do anything

sacred mountain
#

only problem is that i only have like

#

1 plugin that's not my own

#

on my server

#

lmfao

#

so theres not much point anyway

real lagoon
sacred mountain
#

well no i didnt mean to develop it

#

that would be simple

#

just imagine being a server owner

#

and trying to edit a file using like

#

chat prompts or something

real lagoon
#

Ah, yes

#

miss a click
server explodes

kind hatch
#

skill issue

young knoll
#

I’ve made a yaml editor with GUIs

sacred mountain
#

I really feel like I should've just made a config file

#

🫠

#

i mean at least i have a readable-ish code version now

sacred mountain
real lagoon
sacred mountain
#

can't be simpler than just editing the file llol

real lagoon
#

I have a question

sacred mountain
#

i might make one that like has a similar thing to what i'm doing for my help menus, but instead of actually modifying the text, I just parse it and then allow the user to change fields like toggling booleans and changing text fields with anvils, then i'll just serialize it again

real lagoon
sacred mountain
#

where are you from

real lagoon
#

Pluto ✨

sacred mountain
#

dang

young knoll
sacred mountain
#

personally i'd do it with an anvil

#

theres a clickable field, with a confirm button lol

young knoll
#

Works for anything short

#

Not for long text tho

sacred mountain
#

don't anvils have the same length as the chat limit?

young knoll
#

Nope

#

Anvils are 50

#

Chat is 128

sacred mountain
#

hmm

#

I play a lot of modded stuff so

#

Might be that

#

I wonder if a book would work

kind hatch
young knoll
#

I lied

#

It’s 256

young knoll
#

Might be possible with some lectern inventory jank tho, never really tried

sacred mountain
#

surely you can use some interact packet to make the player open one

young knoll
#

Nope

#

Client side check

sacred mountain
#

o

viscid carbon
#

you cant update records?

glad prawn
#

no

inner mulch
#

just make a normal class

#

more freedom

viscid carbon
#

Well my issue is i need to store skills and be able to update them as needed

inner mulch
#

sure, why would a class not work?

ivory sleet
#

i mean if u wanna use records, use a method that creates a new instance of that record which changes one parameter

#

there is even a name for this pattern just don’t remember the name

viscid carbon
#

thats what im not getting. i need to store each player multiple values and be able to update them as i need. but i cant think of what that would be called

inner mulch
#

a class

#

call your class Skill, add fields like level, xp, whatever

ivory sleet
#

Sounds like you want to have a DAO (data access object) to access and store players by uuid, then a DTO (data transfer object) which is a class with the fields of the data u wanna store

#

I don’t think records is the right choice here I shall say as well ^^

viscid carbon
#

so, store each skill in a field with a value. but java will save that in memory?

ivory sleet
#

yes

#

all fields are stored in memory (basically)

viscid carbon
#

my brain kinda just exploded.

ivory sleet
#

that’s fine, mine malfunctions similarly at times

viscid carbon
#

thank you all... i feel dumb now

#

xD

real lagoon
#

If you only need to save couples of a String and an int for players you could simply make a Map<UUID,Map<String,Integer>>

inner mulch
#

i wouldnt recommend that

#

we have classes

ivory sleet
#

it’s appropriate to have a Map<UUID,PlayerData> where PlayerData is a proper class

#

but yea if u want dynamic string-integer pairs then that might be reasonable

real lagoon
ivory sleet
#

I mean, I bet there’s more than just a Map<String,Integer> field

#

and even if that weren’t the case, what if they wanna add another field in the future?

real lagoon
#

I don't know if he wants to add things or not

ivory sleet
#

yea but well, its often worth trying to write code that requires less refactorization in the future if possible without compromising anything else

sacred mountain
#

i just somehow spotted an unordered bracket logic error first try

#

aha

#

now the directory shows a color and highlight

#

along the right path

real lagoon
sacred mountain
#

i think i have a talent for creating plugins fully fledged without testing and they seem to work first try

#

yeahhh nested directory highlighting

#

ok imma go sleep

real lagoon
#

Good night

viscid carbon
#

is there a better way instead of using getters and setters for every value?

eternal oxide
#

your ide shoudl have a function to create all getters and setters

viscid carbon
#

it does. made all of them but i want to be able to have something like

skilldata.setSkill(skill);
if (skill.equals(skillData.getSkill())) {
skillData.updateXP(15);
}```
quaint mantle
viscid carbon
#

or would i be better off doing each if (getSkill().equals("Mining")) { skillData.setMining(xp); } if (getSkill().equals("Woodcutting")) { skillData.setWoodcutting(xp); } if (getSkill().equals("Digging")) { skillData.setDigging(xp); }

viscid carbon
#

Having the same issue i was earlier with it not saving in the fields...

#
            if (skillData.getMining() == 0) {
                skillData.setMining(xp);
                System.out.println("Data not populated..");
                return;
            }
            skillData.setMining(skillData.getMining() + xp);
            sendChat(getPlayer(), String.format("Skill: %s, XP: %s", skillData.getSkill(), skillData.getMining()));```
#

it always equals 0

#

so only static saves data?

eternal oxide
#

no

#

it just means you are not using the same instance

wet breach
viscid carbon
eternal oxide
#

you are creating one

viscid carbon
#

so it makes a new instance everytime i call SkillData skillData = new SkillData(skill);

eternal oxide
#

yes

#

new

viscid carbon
#

so how do i fix this problem?

agile anvil
#

Save your instance somewhere

viscid carbon
#

i have no idea what that means lol

sacred mountain
#

That's a help menu I made, those are just categories

#

It has an internal system

#

got nothing to do with filess

sacred mountain
#

that is literally the very first thing you learn

#

like how objects work in general

agile anvil
#

Yeah, please learn at least OOP if you use its concepts. Then learn java do know how to write the concepts you learned

quaint mantle
summer scroll
summer scroll
sterile breach
#

Hi I've spent the day looking for a way to synchronize inventory between 2 servers in real time on a proxy. I've tried every possible way and I've come to the conclusion that it's impossible to sync inventory without making the player go through limbo (it's impossible to sync just via the loading screen). has anyone tried the same thing?

wet breach
#

why exactly are you trying to sync 2 inventories?

sterile breach
drowsy helm
#

It’s definitely not impossible

#

When a player leaves, push to cache, then when the cache updates, apply on the next server

#

Rather then on player join

wet breach
#

if not, then you could just update their inventory on the server they transfered to at earliest convience instead of trying to do it right away

#

could even give a notification to player that their inventory is pending update

sterile breach
dawn flower
#

how do i check if a player can see a specific entity

agile anvil
#

It's not gonna be perfect, but the best option is to raytrace between the player and the entity

dawn flower
#

i don't want to check if he's looking at an entity

#

i want to check if he can see an entity

agile anvil
#

I know, it means you have to raytrace between the player and the entity for blocking blocka

wet breach
agile anvil
#
  • find some mechanics to handle the FOV
wet breach
#

you don't have to put the player in limbo if there is no requirement to have the inventory immediately

dawn flower
#

how do i spawn a fake entity to a player with nbt? in protocollib

#

this type of nbt (in this way of writing) {NoAI:1b,Whatever:1b,Idk:1b,etc}

agile anvil
#

Why do you need this?

dawn flower
#

i want to make some of my entities client-side so they dont just disappear (they do alot). so i serialized them as nbt

#

i dont want my server to be one /kill @e away from pretty much dying

umbral ridge
#

😿

dawn flower
#

?

#

anyone?

wet breach
#

and if your plugins have this major flaw

#

you could you know, just respawn the entities -.-

dawn flower
#

i dont give them /kill @e

proper cosmos
#

Accessing PersistentDataContainer for players every hit would cause performance issues? Is it loaded into memory at start?

dawn flower
#

but im 99% sure im gonna accidently do it at some point

dawn flower
#

and it isn't easy to debug the code that respawns tem since i have to wait for them to disappear which sometimes could take days

quasi gulch
dawn flower
#

i tried killing them manually and my code was working, but debugging it to fix the random disappearence could take months

wet breach
#

it is easy since multiple people here have successfully used entities in this way

dawn flower
#

yeah

wet breach
#

anyways, obviously when a server starts it makes little sense to respawn them

dawn flower
#

that's a good idea

wet breach
#

all you have to do is keep track of their locations and store that somewhere. When a chunk loads check if your entity is suppose to be there

#

if the command is used, just put your entities back in the chunks that are currently loaded

dawn flower
#

well, how would i check if the entity im looking for is the actual entity

wet breach
#

if its a custom entity, you can put custom data on it

#

and also checking if its custom entity

dawn flower
#

there could be multiple custom entities in the same chunk

wet breach
#

and you want a specific one?

dawn flower
#

i want both

proper cosmos
wet breach
#

well, not sure why you would have two entities in the same location

dawn flower
#

in the same chunk not in the same location

quasi gulch
dawn flower
#

i'm just gonna respawn them when the server restarts

#

and make them not persistent

proper cosmos
quasi gulch
#

also possible

wet breach
#

its very counter intuitive you know

clever lantern
#

how do you get itemstack from the block placed or just the PDC data from the item that was placed (blockplaceevent)

dawn flower
#

the other ways are either insanely complicated or dont fit my needs

wet breach
#

they are not that complicated

#

maybe a bit more code sure, but complicated? no

grim hound
#

How can I ensure a player connects to the server I give him first and doesn't change servers unless told so? On Bungeecord

dawn flower
#

i wasnt talking abt your method when i said complicated

wet breach
#

they could drop the connection though

#

but then that should start the process over

grim hound
eternal night
#

the player cannot instruct the proxy to switch servers

#

unless you fuck up permissions lol

wet breach
#

the player doesn't get to choose which server they go to when connecting to the proxy

grim hound
wet breach
#

they can only do that after they land on the lobby

eternal night
#

Well don't have plugins that allow that

#

or write a bungeecord plugin

grim hound
#

To ensure that they connect to my server if told so

wet breach
grim hound
#

I'd like to do the same for Velocity

#

But no support cuz am banned on papermc discord

wet breach
#

well not sure what issue you are having or why you are not able to prevent a player from switching to a different server

eternal night
#

in both cases, its just events fired on the proxy

grim hound
#

Basically: how to make sure the player connects to my server first

wet breach
#

what do you mean to your server first

grim hound
#

And no server switch occurd

wet breach
#

are they not all your servers?

grim hound
#

Can always connect to some lobby server

wet breach
#

is this your network or something. Not sure why you would need a public plugin to have this overriding feature

grim hound
#

I want them to connect to my server and only to that lobby server when I specify it to do so

wet breach
#

well that is what the proxy already does....

grim hound
#

No but

#

Aight

wet breach
#

you can disable the functionality that they go to whatever server they left off of. Doing this, they always connect to the lobby

#

unless you are letting players directly connect to the mc servers

#

which you probably shouldn't do that lmao

grim hound
#

Proxy -> my plugin tells the verdict -> either (the server he would normally connect to if he is in the db) or (my limbo server, the player does stuff to be added to the db -> connects to the original server)

#

Oh ServerConnectEvent overriding I guess?

wet breach
#

just fyi if you delay the connection too long they just dc

grim hound
eternal night
#

Well if you for some reason don't have control over your plugins and fear some plugin sends a player to a different server without your approval then yes

eternal night
#

events on the proxy is it

#

letting people connect directly to an MC server if the server is managed by a proxy means they skip authenti- oh wait 🤡

grim hound
#

Yeah I would need to use FastLogin

grim hound
eternal night
#

by just exposing your mc server port to the public?

grim hound
eternal night
#

yes

#

well on bungeecord at least

grim hound
#

No checks whether the connection is coming from the proxy?

eternal night
#

velocity's modern forwardign prevents that

#

^

wet breach
#

this is a non-issue

#

its not hard with networking to ensure connections come from the proxy lol

#

but atlas kids are too dumb to know networking though

eternal night
#

my tables are in shambles Sadge

wet breach
#

ideally you should setup a vpn between the servers if they are on spearate hosts

eternal night
#

Yea

wet breach
#

since if I recall, the connections between proxy and mc server are not secure

eternal night
#

Well, on bungee they aren't

#

velo has a symetric keyphrase

wet breach
#

but using a vpn though regardless just makes it easier to ensure you are getting the connections from the proxy host anyways

torn shuttle
#

I am waiting for so long for my delivery to get here that I literally did the entire 1.21 update for my plugin while waiting

twin venture
#

so i did what you guys suggested , i no longer use database to store and edit Kits.
and now iam using redis to push the kits when the lobby server start , or when i edit a kit in the lobby server
but its not working .. when i start the game moudle plugin , it create new Intstance of DataSyncServerSync class
which contains the hashmap

and i have a KitComunication but i don't thing its saving it into the map , or does the map reset when i create new instance of the class?

torn shuttle
#

I am so sleepy

twin venture
#

and in game moudle onEnable i try to run this for testing :
but it give me empty map ..

#

is there a way i can do it :

  • send kits , cosmetics data from lobby to other servers at once?
#

if it does not work , i think i will go back to save the kits into database (mysql) .

ivory sleet
#

Do you have the code on GitHub or something?

twin venture
#

not really its privite project ..

#

\

#

is it possible to :

  • in lobby when the server start save the kits , cosmetics into map
  • in game server when the server start it load all the kits , cosmetics from the redis map i used and put it in cached map in game moudle .jar
#

and when i edit the kits , cosmetics in lobby it should push the updates to all game servers

tender acorn
#

trying to shade mongodb into my plugin
getting error when running ./gradlew shadowJar.

org.gradle.api.GradleException: Could not add file 'E:\Idea Projects\Assignments\2\Saddam\build\classes\java\main\net\furium\saddam\commands\TeamCommand.class' to ZIP 'E:\Idea Projects\Assignments\2\Saddam\build\libs\Saddam-1.0-SNAPSHOT-all.jar'
and Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 65

#

It says unsupported version even tho I have java 22 and gradle using 21 for mc 1.21

chrome beacon
#

Make sure shadow is up to date

#

And that gradle is too

#

Might need a fork of shadow not entierly sure

young knoll
#

Yeah

summer scroll
#

Anyone knows any development library for bungeecord plugin?

river oracle
#

Bungeecord API

summer scroll
#

I mean like library that makes things easier, like helper by lucko if it's bukkit plugin.

#

Bungeecord plugin I mean, sorry

ivory sleet
#

Idk if there’s much u can abstract

dry forum
#

what would be the best way to go about checking if the green and red blocks have blocks connecting them like in this image?

https://imgur.com/a/zIiQFdz

wet breach
dry forum
#

mb the red and green boxes

wet breach
#

depends how far you want to search

dry forum
#

the green/red blocks can be anywhere

wet breach
#

not sure what you mean by anywhere

#

are you saying if they are separated by 10k blocks you still want to know if they are connected?

dry forum
#

no i mean like they might not be in a straight line of each other, but they will be within 30 blocks of eachother just anywhere within the 30x30 area

wet breach
#

and what is considered as them being connected?

dry forum
#

if the orange block is next to the green/red blocks

wet breach
dry forum
#

no not up/down

wet breach
#

do diagonals count?

dry forum
#

uhhh no

#

its like a road

wet breach
#

then all you have to do is follow the orange blocks and check the side to see if there is any red or green blocks if not, see if there is any orange blocks, if so, check around that one. It may be wise to cache the locations of these orange blocks in case the path circles so you don't end up in a circular check and all lol

young knoll
#

Sounds like pathfinding

#

Maybe A* is an option

dry forum
#

ok thanks

gilded forge
#

If I were to add a new class to CraftBukkit, where would I add it

spice burrow
blazing ocean
eternal night