#help-development

1 messages · Page 1289 of 1

thorn isle
#

or well

#

a guy created 16x16 1-pixel sized colorable overlays for an item texture

#

so the entire texture was directly pulled from the item components, pixel by pixel

#

it supposedly is somewhat heavy on the gpu

#

in fact we tried a 64x64 bitmap as well and that seems to be about as far as a consumer grade gpu will go

#

but it does work

echo basalt
#

so

#

instead of maps and item frames

#

you just use those

thorn isle
#

if i want to nuke the player's gpu

#

interestingly at least this portion of the resourcepack model predicate matching seems to happen on the gpu

#

and it of course happens every frame

#

or at least that's my theory, i don't see how this would perform this terribly otherwise

#

which sadly means there aren't many practical applications for this

#

i was planning on doing some procedurally generated custom item textures, without having to like refresh the player's resourcepack every time they create a new item

misty ingot
#

im getting error "depend is of wrong type" when starting my server with my plugin
what did i do wrong?

name: HypingBids
version: '${version}'
main: dev.siliqon.hypingbids.HypingBids
api-version: '1.21'
prefix: HypingBids
authors: [ SiliQon ]
depend: HypingCounters
soft-depend: PlaceholderAPI
#

Caused by: java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Iterable (java.lang.String and java.lang.Iterable are in module java.base of loader 'bootstrap')

grim ice
#

why doesnt translateAlternateColorCodes not translate this hexcode? &#d39e14A&#d9a413J&#dea913T&#e4af12H&#e9b411E&#efba10B&#f4bf10O&#fac50fL&#ffca0eD

grim ice
#

that gets that error

eternal night
#

depend is an array not a single string

#

depend: [ HypingCounters ]

misty ingot
#

just saw that

grim ice
#

same for the soft depend too probably

misty ingot
#

ive never had that happen

misty ingot
#

dont you have to give it the char

eternal night
#

ehhh, spigots chat colour does not do RGB

#

so translate alternate colour code also probably doesn't do anything there

young knoll
#

The bungee version should

#

But the format is &x&r&r&g&g&b&b

fast jasper
#

hello, I'm trying to create a simple function in my 1.8.8 minigame plugin which "sends a packet of what block is currently there". goal is to resync a block that's not shown on the client's screen. my lobby has a mode where it can "show/hide certain blocks", which is specific each per player

I already got the function almost working as needed with NMS using PacketPlayOutBlockChange, the only thing is that I am unsure how to set attributes like wool color. (example, wool color will always be white). using Spigot calls I can do things normally like get/set blockdata.

I would like to know either how I can set this data, or if there's another way to just simply resend packets to plays of blocks that are really there on server side. an idea I had was to just use the actual Spigot call "block.setType / block.setData", which would consequentially send the packets, however, I'd like to avoid this if necessary as then I'd have limited control over which clients receives these packets

if anyone has any answers or advice, it'd be greatly appreciated. thanks!

chrome beacon
#

player#sendBlockChange is the API method for fake blocks

#

You should use that

fast jasper
#

oh thank you so much, I'll take a look at that

#

I'll see if it works for what I'm needing

#

alright works perfect. thanks again

manic delta
stiff harbor
#

Weird question but, has anyone had problems finding a material enum? I keep getting null returned when I try to use "light_blue_dye"

sullen marlin
#

Did you define api-version

slender elbow
#

did you?

stiff harbor
#

I did, I found a work around now but idk if im stupid or what. All im trying to do is remove 1 primarine shard from the held item stack. It works if theres only 1 in the stack, but if theres more than 1 it removes 2, although I set it to just - 1?

Player player = e.getPlayer();
        
int handSlot = player.getInventory().getHeldItemSlot();
ItemStack handStack = player.getInventory().getItem(handSlot);
if (handStack == null || handStack.getType() != Material.PRISMARINE_SHARD) return;
        
if (handStack.getAmount() > 1) {
  handStack.setAmount(handStack.getAmount() - 1);
  player.getInventory().setItem(handSlot, handStack);
} else {
  player.getInventory().setItem(handSlot, null);
}
#

Ive removed this block of code to be sure nothing else is subtracting from stack, nothing else does

brazen gorge
#

Will anyone help revamp my code?

rotund ravine
#

Nty

rotund ravine
#

?playerinteract

#

?playerinteractevent

#

?interactevent

undone axleBOT
#

The PlayerInteractEvent may be called once per hand. If you only want code to be executed once, you can check the result of https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerInteractEvent.html#getHand(), then decide functionality.

For example, only executing code if the main hand was used:

@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
    if (event.getHand() != EquipmentSlot.HAND) { // * if the hand used is NOT the main hand:
        return; // do not progress past this point  |
    }
    // provide functionality
}
rotund ravine
#

There we go

#

@stiff harbor i guess ur using the PlayerInteractEvent yeah?

drowsy helm
brazen gorge
#

Ok it’s for my smp hold up

brazen gorge
drowsy helm
#

?paste

undone axleBOT
brazen gorge
#

ok

#

?paste

undone axleBOT
brazen gorge
drowsy helm
#

paste your code in

#

press save

#

and send the link

#

if it's bugging out

#

use

brazen gorge
#

ok

drowsy helm
#

save > copy shareable url

brazen gorge
#

DID it

drowsy helm
#

Okay so you would just like feedback?

brazen gorge
#

yea

#

It’s supposed to have powers and a life system

drowsy helm
#

alr give me a moment

#
  1. You should be following OOP principles, the string based ability system works but it's not really reliable and at scale you will have a MASSIVE class file.

You should split your abilities into separate class files and use a base abstract ability class.
something like so:

public abstract class Ability{
    private final String id;
    private final String displayName;
    private final long cooldownMs;
    
    public Ability(String id, String displayName, long cooldownMs){
        this.id = id;
        this.displayName = displayName;
        this.cooldownMs = cooldownMs;
    }

    public abstract boolean activate(Player player, int abilitySlot);
}
public class BlazeDashAbility extends Ability{

    public BlazeDashAbility() {
        super("blaze_dash", "Blaze Dash", 1000);
    }

    @Override
    public boolean activate(Player player, int abilitySlot){
      //Do stuff
      return true
    }
}

This will require some sort of registry and manager but it's far better than a massive switch statement

    private final List<String> powerNames = Arrays.asList(
        "blaze_dash", "frost_step", "ender_blink", "earth_shove",
        "healing_aura", "shadow_cloak", "wind_jump", "fire_nova",
        "time_slow", "lightning_call"
    );```
Is just a final list of objects. This is what an enum is. use an enum
Note- this list should be immutable (Arrays.asList is technically immutable, but use an ImmutableList impl)

3. I'm not really sure what the if(abilitySlot == 1) means or why each ability acts differently but if every ability has the same boilerplate code, you can reduce that to something more simple. Again, with point 1 this could just be an abstract method

4. 

```java
    private final Map<UUID, Map<String, Long>> cooldowns = new HashMap<>();
    private final Map<UUID, Map<String, Integer>> powerLevels = new HashMap<>();
    private final Map<UUID, Integer> playerLives = new HashMap<>();
    private final Map<UUID, String[]> activePowers = new HashMap<>();

While this does work it's sort of hard to follow, one main context class would work a lot better in your favour:


    private final Map<UUID, AbilityContext> abilityContextMap = new HashMap<>();
    
    public static class AbilityContext {
        private final UUID playerId;
        private final Map<String, Long> cooldowns;
        private final Map<String, Integer> powerLevels;
        private final Map<String, Integer> playerLives;
        private final Map<String, String[]> powers;
    }
  1. You should always avoid using § in your code like here: player.sendMessage("§cThat ability is on cooldown!"); This should either be replaced with ChatColor, translateAlternateColorCode or just use Adventure Components
#

@brazen gorge

brazen gorge
#

… thank you so much

drowsy helm
#

formatting is shitting itself

rotund ravine
#

Totally a you issue

drowsy helm
#

there we go aparently lists and code blocks do go well together

brazen gorge
#

I think I fixed it thanks for the help @drowsy helm

lunar bluff
#

broo

#

Hello Bro!
I'm from East Java, Indonesia, and I'm planning to build a big Minecraft server project. The theme is Roleplay, similar to GTA RP. I'm looking for developers who can create various plugins for the server.

Specifically, I need plugins related to:

3D models

Player animations

Custom GUI interfaces

Custom emotes

Custom vehicle plugins

And many other plugins to support the roleplay experience

If there's anyone here who can help with plugin development—especially those skilled in 3D, animation, UI, and custom vehicles—I’d love to work with you! Since I'm planning to order many plugins, I hope the pricing can be affordable. I'm from Indonesia, so when converted to our currency, USD becomes quite expensive for us. 😅

Thanks in advance!

undone axleBOT
drowsy helm
#

also why post in every single channel

lunar bluff
drowsy helm
#

thsi is not the place for that

lunar bluff
#

bro, how to post a sentence in spigot forum? can you tell me how to do it briefly? or someone else can tell me how?

twin venture
#

HI hh iam working on skywars project and iam missing something huge ..

#

Lobby Server GUI: Map Selection

Players see all available maps in a GUI menu.

Map names and their metadata are configurable through a config file for easy management.

Server Spawn Request

When a player selects a map in the lobby, a request to create and start a new game server is sent.

The request includes the selected map name and game mode.

Proxy Server: Server Creation & Management

The proxy listens for spawn requests via Redis using Lettuce.

Upon receiving a request, it allocates an available port and sends server launch instructions.

The proxy dynamically adds the new game server to its server list and handles player routing.

Game Server Setup via Presets

Each game server instance is created based on a preset corresponding to the map and mode.

Presets are stored in structured folders, for example:
serverstemplates/solo/jungle/ containing the necessary plugins, config files, and world data.

This preset system is flexible and allows easy addition of new game modes or maps.

Player Queue Management

Once the server starts launching, players are placed in a queue on the lobby server for about 10 seconds (or less), waiting for the new game server to be fully ready.

When the server is ready, all queued players for that map are forwarded to the game server.

Subsequent players who select the same map while the server is running are added to the same queue or sent directly if capacity allows.

what do you thing about this sys?

lunar bluff
#

bro, how to post a sentence in spigot forum? can you tell me how to do it briefly? or someone else can tell me how?

drowsy helm
#

kubernetes?

drowsy helm
twin venture
drowsy helm
#

I think the core concept is fine. I have a similar orchestration system for my network whic uses redis.

The hardest part you will find is effectively launching servers. I would recommend looking into kubernetes for server orchestration but it's quite a task. Will probably be your best option

#

Also would be handy to have some cold-spares to launch into instead of having to wait for a server to spin up which could be upwards of 20 seconds even if optimised

twin venture
#

Thanks

lunar bluff
#

bro, I can't find the button to post on the spigot forum, I only found the new post button but I clicked it not to post text or photos but instead showed the latest posts from the forum, can anyone tell me how to post on the spigot forum):

smoky anchor
#

iirc you can't just make a request post right after making account
you need some points or something :D
best bet is to look for ppl who are offering services instead

lunar bluff
lunar bluff
# drowsy helm .

bro do you have 2 spigot forum accounts? if you have please lend me 1, or you can post it for me

drowsy helm
#

that would be very against the rules

#

Like steve said, if you dont have enough rep. Look at the Offering subforum and hire people through that

rotund ravine
#

Oh

rotund ravine
#

Reqd the actual rules

#

Read*

lunar bluff
#

that's it bro

#

oke broo

drowsy helm
#

wait bedrock just has straight up ui elements you can plop in

#

wwe are so behind

thorn isle
#

yeah we've lost parity years ago

#

but we're catching up a little bit with the dialog system

spare hazel
#

is the material of wheat thats on the ground different from wheat that is in my hands

smoky anchor
#

don't believe so

spare hazel
#

what about other stuff

#

carrots

#

potatoes

#

tomatoes

pseudo hazel
#

unless there are multiple entries in the material, its the same

smoky anchor
#

Carrots have two materials, one item, one block
same for potatos I believe (which once caused some funny bugs on Hypixel Skyblock hehe)
Here's docs so you can take a look yourself

pseudo hazel
#

lovely consistency

spare hazel
#

tell mojang to flower themself

#

torchflower crop? torchflower??? torchflower seeds????

#

what the actual f

pseudo hazel
#

lol

#

and its the most useless flower ever, which makes it even better

thorn isle
#

i'm actually not sure why the handheld item is different from the block

pseudo hazel
#

because mojank

sullen marlin
#

I think it's cause they look different?

thorn isle
#

that might make some sense

sullen marlin
#

Where's for other things the item texture is just a small version of the block

thorn isle
#

i mean nowadays the model can be different in the inventory vs in the world i'm pretty sure

pseudo hazel
#

I mean kinda, but not really, its like the wheat example

thorn isle
#

but that probably wasn't a thing back when wheat was added

pseudo hazel
#

there is wheat and there are seeds

#

but there is no wheat crop

#

is the torchflower crop an item you can pickup?

sullen marlin
#

What's the material to make cake?

#

Is that wheat?

pseudo hazel
#

i dont know anything about the sniffa

#

yeah

#

thats wheat

sullen marlin
#

Ok I have no clue then

pseudo hazel
#

but apparently thats also the block thats on the farmland

thorn isle
#

that doesn't sound right

pseudo hazel
#

probably has to do with how they register certain blocks/items

thorn isle
#

most likely the texture i think

#

plenty of other blocks like logs have multiple block states (e.g. orientation for logs) and still have the item be the same as the block, so it's not that crops have growth stages

#

but back in the day there weren't any model/texture predicates you could use to render the item differently in e.g. hand vs inventory vs placed as a block

spare hazel
#

bruh even @sullen marlin doesnt understand ts

#

how can i set a block somewhere?

thorn isle
#

get the block from the world and set its type

pseudo hazel
#

set the blockstate

#

yeah or type

spare hazel
#

how can i detect if a crop hasn't grown to its max potential

spare hazel
#

alr thanks

surreal minnow
#

for combatlog x, how can i open chest/ect when in combat

spare hazel
#
if(event.getBlock() instanceof Ageable block) {
            if(block.getAge() != block.getMaximumAge()) {
                return;
            }
        } else {
            return;
        }

like this?

rotund ravine
#

no need for the last else

slender elbow
#

the block will not be an Ageable

#

its BlockData will

spare hazel
#

ah

#

i have been killing myself to fix this bug

#

and the diff was a .getBlockData() ???

#

tahnks

#

why didnt u guys reply

#

i get why the asker shouldnt reply

chrome beacon
#

also that's a question for #help-server or the CombatLogX (SirBlobman) discord

surreal minnow
#

oops

brazen gorge
#

Ok so all of my codes aren’t working will anyone just revamp the code I give them a little

spare hazel
#

i hate this process:

  • package
  • move to plugins
  • sudo docker compose restart gardening
  • wait

i wish there was hot reloading

drowsy helm
#

Why you using docker?

#

You can also automate all of that

chrome beacon
#

^

#

Wait til you find out that hot swapping does infact exist

spare hazel
drowsy helm
#

Yeah but for testing?

brazen gorge
#

Helllo everyone

spare hazel
quaint mantle
chrome beacon
#

I mean actual Java hotswapping

drowsy helm
#

No actual hot swap

spare hazel
#

no way

drowsy helm
#

Can be buggy iirc

spare hazel
#

then nvm

#

if it works dont touch it

chrome beacon
drowsy helm
#

If not, you can just make a script that automates what you are currently doing

quaint mantle
#

You could embed scripting(like lua) into your plugin

drowsy helm
#

Bruh what

quaint mantle
spare hazel
#

how 2 make hard link linux

drowsy helm
#

I want to hot swap my plugin, so im going to add a lua interpreter and fully rewrite my plugin in lua

quaint mantle
spare hazel
#

cant it be ln file file? like ln pathtobuild/plugin.jar serverdir/plugin.jar

#
public void onBlockDropItem(BlockDropItemEvent event) {
        event.getPlayer().sendMessage(event.getBlockState().getType().toString());

yo why tf does this say AIR even thou i broke a potato

thorn isle
#

it turned to air when you broke it

#

does anyone remember whether PluginDisableEvent fires before or after the plugin's onDisable is called? off the top of my head i think it was before, but i'm not sure

spare hazel
#

i should be like: if event.getBlock() == air then fu*k you u aint getting no drops

drowsy helm
#

Worth double checking tho

thorn isle
#

sadge

#

i have a library style plugin which offers a service to plugins depending on it, which the depending plugin should close before disabling, and i'm trying to set up a fallback in the library that'll catch the plugin disable event and close the service if the plugin itself forgets to

#

i could use the scheduler to check if it's closed by the next tick and close it if it isn't, but then if the plugin was reloaded, it's going to re-enable before the next tick, try to recreate that same service, and explode

#

i'll just have to jerryrig it somehow

drowsy helm
#

Inb4 bytecode injection

dark moth
#

when the flip was this throwing an error bro

#

omd

thorn isle
#

an interesting quick fix suggestion

#

i don't think that takes an optional

dark moth
#

but like

#

it says throw an object to me

#

why the int doesnt work

#

or a double

quaint mantle
#

new Double(0.65) 🗿

dark moth
#

pls

dark moth
#

i used this several times and pretty much nun happened all the times

thorn isle
#

i don't think it should, but there might be some strange interaction between autoboxing and widening primitive conversions going on here

#

maybe possibly check the language level your ide is set to

dark moth
#

hm

#

how do i check that

#

lol

thorn isle
#

in intellij it's somewhere under the project settings

#

file > project structure > project settings > project > language level

slender elbow
#

your intellij is dumb

#

that is valid java lol

thorn isle
#

yeah i'm not getting an error for this

dark moth
#

ik where structure is but idk if it is the same as project structure

#

hang on

#

i found it

dark moth
dark moth
#

i can compile it safely tho so no problem ig

wet breach
#

as opposed to unsafely?

echo basalt
#

just compile and if it works it works

#

repair IDE and move on

slow oyster
#

I've been MIA for a while from MC dev, seen the new Dialogs that were added in 1.21.6 and md5 added an experimental api. How come it's only in Bungeecord (https://github.com/SpigotMC/BungeeCord/tree/master/dialog) and not in Spigot currently, I'm assuming just because it's experimental?

spare hazel
#

would this work on BlockBreakEvent?

if(plant.supportsAutoPlant() && hoe.isAutoPlant()) {
                dropCount -= 1;
                new BukkitRunnable(){
                    @Override
                    public void run() {
                        if(event.getBlock().getType() != Material.AIR) return ;
                        event.getBlock().setType(plant.seed());
                    }
                }.runTaskLater(Gardening.getPlugin(), 10L);
            }
#

like the "dont plant if it aint air"

vast dust
#

I used multiverse to create another world, for my spawn so players dont see it from outside but now, when rtping players cant rtp to the world and it just says couldnt find a safe spot

azure zealot
slow oyster
#

Ah nice, I must have missed it in the commits then, I shall take a look!

#

Also do people still use MultiMC or is there something more popular now?

chrome beacon
#

Prism Launcher

#

It's a MultiMC fork with extra features

slow oyster
#

Oh boy I just googled multimc didn't know there was a whole load of drama around it

chrome beacon
#

yeah

#

that too

azure zealot
#

what drama

chrome beacon
#

you can google that

#

this is the wrong place for old drama

wet breach
#

according to everyone else

chrome beacon
#

#general maybe

#

but this is help dev 💀

slow oyster
#

Yeah my bad haha

#

Does the server need to be running under bungeecord to access the new Dialog stuff though? Just tried it and I get java.lang.NoClassDefFoundError: net/md_5/bungee/api/dialog/Dialog

slender elbow
#

it'll work fine under the latest spigot

#

what's the output of /version ?

slow oyster
#

Hmm Paper not merged it in? I'll try standard spigot too This server is running Paper version 1.21.7-15-main@0cadaef (2025-07-01T22:53:44Z) (Implementing API version 1.21.7-R0.1-SNAPSHOT) You are running the latest version Previous version: 1.21-111-66165f7 (MC: 1.21)

pseudo hazel
#

?whereami

slender elbow
#

paper has hard-forked from spigot

#

it no longer pulls changes and updates from spigot

slow oyster
#

Oh has it?? Damn how long have I been gone lmao

pseudo hazel
#

its pretty recent

slow oyster
#

Well that's a pain lmao

slender elbow
#

1.21.4 i believe

slow oyster
#

Bstats says my plugin is 70% Paper servers as well

thorn isle
#

last i checked the market share, which admittedly was in like 1.18 or something, paper and paper derivatives was like 80%+ of modern versions

#

looks like it's ~75% across all versions on bstats now

slender elbow
#

75?

thorn isle
#

63% paper 10% purpur and one or two percent from whatever other forks

#

or did purpur hard fork from paper lmao

slender elbow
#

my only gripe with bstats is it does not link stats together

#

so i can't know, for example, the server software distribution within a specific version

thorn isle
#

yeah it's pretty lacklustre

#

i'd like to know the distribution for modern versions, since i'm fairly sure like half of that 15% spigot market share is on 1.8 or something

slender elbow
#

anecdotally, simply seeing the amount of people asking for support for old versions, the amount of servers on old versions that are not using a patched software is concerning, lol

#

they go with whatever the latest build of spigot/paper for that version was

thorn isle
#

it seems like no matter which version of the paper api i depend on, intellij always complains there are reported vulnerabilities in it

#

might as well give up

sly topaz
#

just turn off the inspection 😎

slender elbow
#

yeah usually those are coming from like guava or gson or whatever

#

which are about obscure features of those libraries that no-one uses except for, like, alibaba

hardy sundial
slender elbow
#

they got a whole forum post about it

#

and have made a couple of discord announcements as well

thorn isle
#

muh material enum

tender jetty
#

using tags for 1.21.7 but for some reason i update everything and cant get them to work

Description Resource Path Location Type
Items cannot be resolved or is not a field Starttutorial.java /starttutorial/src/main/java/starttutorial line 1656 Java Problem
Blocks cannot be resolved or is not a field Starttutorial.java /starttutorial/src/main/java/starttutorial line 1678 Java Problem

     if (org.bukkit.Tag.Blocks.WOOD.isTagged(type)) { // Includes all wood blocks with bark on all sides (OAK_WOOD, STRIPPED_CHERRY_WOOD, MANGROVE_WOOD, PALE_OAK_WOOD, hyphae etc.)
         return Material.OAK_WOOD; // Canonical: Any wood block (often used for fuel or building)
     }
     if (org.bukkit.Tag.Blocks.LEAVES.isTagged(type)) { // All types of leaves

Blocks/items cannot be resolved, im not sure where im messing up

package starttutorial;

import org.bukkit.Tag;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.attribute.Attribute; // This MUST be present for GENERIC_MAX_HEALTH
import org.bukkit.block.Block;
import org.bukkit.command.Command;

chrome beacon
#

How did you import the Spigot API to your project

tender jetty
#

lbiraries under class path

chrome beacon
#

And you added what jar

slender elbow
#

is this code from chatgpt?

chrome beacon
#

probably

slender elbow
#

Tag.Blocks or Tag.Items is quite simply not a thing

chrome beacon
#

right that too kekw

tender jetty
#

spigot-api-1.21.7-R0.1-SNAPSHOT

#

ooo and ya all chat gpt

#

ty

thorn isle
#

dark times

minor urchin
#

so when i do ItemMeta.setCustomModelData(Integer int), how do i get that integer?

#

I updated my spigot version and now getCustomModelData() is deprecated

chrome beacon
#

It's deprecated because Mojang replaced that int

#

The set custom model data converts the int to a float and sets that in to the new format

minor urchin
#

ok, how should i get that float from the floatlist?

chrome beacon
#

You can get it from the custom model data component

minor urchin
#

ok

torn shuttle
#

uwu step-lerp what are you interpolating?

minor urchin
#

also will it be the only float

chrome beacon
#

It may or may not be

#

Depends if anything else added a float

minor urchin
#

ok thanks i think i understand it now

chrome beacon
#

You can read about the new component on the Minecraft wiki

mint nova
#

nvm i forgot to compile it again :I

tender jetty
#

thx u guys for help ❤️ ❤️

mortal hare
#

!mappings

#

?mappings

undone axleBOT
potent crescent
#

guys whats a Activation code for. idea?

chrome beacon
#

Sounds like you downloaded the Idea Ultimate

#

You want the community edition unless you want to pay

potent crescent
#

alr

mortal hare
#

is there any tool which converts intermediary mapped .java files to mojang mappings ones?

torn shuttle
#

tick tock look at the time

#

time++

smoky anchor
#

rename isRemoved to should(Not)ContinueTicking

#

you get the joke

vocal cloud
#

does the animation need the tickCounter? Cause u could totally move the tickCounter++ into the hitbox tick method param

torn shuttle
#

that depends, do you like your animations to animate

#

would you say time is an important factor in an animation

vocal cloud
#

depends if it has it's own tick counter 🤔

torn shuttle
#

no, because I am not a monster

#

the whole point is to centralize behavior so I don't end up with 15k independent 1 tick tasks

lilac dagger
#

i like having tickCounter as ticks

torn shuttle
#

also I hope you like components

    @Getter
    private InteractionComponent interactionComponent = new InteractionComponent(this);
    @Getter
    private HitboxComponent hitboxComponent = new HitboxComponent(this);
    @Getter
    private DamageableComponent damageableComponent = new DamageableComponent(this);
    @Getter
    private AnimationComponent animationComponent = new AnimationComponent(this);
#

and callbacks

lilac dagger
#

nice

#

i don't use components yet

torn shuttle
#

well that's how I turned 700 lines into 275 lines of code

lilac dagger
#

can you show me how one of those look like inside?

torn shuttle
#

uh

#

?paste

undone axleBOT
torn shuttle
#

seemingly no

#

it's not letting me save

lilac dagger
#

pastebin it

torn shuttle
lilac dagger
#

super cool 😄

torn shuttle
#
    public void setCustomHitboxOnUnderlyingEntity() {
        if (modeledEntity.getSkeletonBlueprint().getHitbox() == null) return;
        NMSManager.getAdapter().setCustomHitbox(modeledEntity.getUnderlyingEntity(), modeledEntity.getSkeletonBlueprint().getHitbox().getWidthX() < modeledEntity.getSkeletonBlueprint().getHitbox().getWidthZ() ? (float) modeledEntity.getSkeletonBlueprint().getHitbox().getWidthX() : (float) modeledEntity.getSkeletonBlueprint().getHitbox().getWidthZ(), (float) modeledEntity.getSkeletonBlueprint().getHitbox().getHeight(), true);
    }

yet another great 1-liner

thorn isle
#

did you just use a ternary for Math.max

torn shuttle
#

that's my favorite time to use those

onyx fjord
#

how do i retrieve random tick speed?

onyx fjord
#

and any event for that?

#

like when it changes

thorn isle
#

try searching for game rule in the javadocs

#

if there's an event for it then there's an event for it, if not then not

#

off the top of my head probably not but i could well be wrong

torn shuttle
#

this is insane, I just rewrote thousands of lines of really stupid complex code and it seems like everything is working first try

#

this is a first in like 12 years

wet breach
onyx fjord
onyx fjord
#

If some plugin modifies the gamerule

mortal hare
fluid cypress
#

if i use a Block as a hashmap key, what is getting hashed exactly? just the block position and world? how can i check that? im caching stuff and apparently the material doesnt matter?

nova notch
chrome beacon
#

But Block is a location+world wrapper as far as I'm aware

#

?stash

undone axleBOT
stiff harbor
fluid cypress
echo basalt
#

or just decompile that shi

#

the type is just read every time you call getType, it wouldn't make sense to hash it

#

keep in mind storing blocks in a map can cause a world leak

fluid cypress
#

right, well that makes sense

#

wym world leak?

echo basalt
#

Let's say you have temporary worlds

fluid cypress
#

and apparently Blocks are mutable? so the cache uses that hash, the key itself changes the material, but the thing i cached is inmutable and independent of that, so i get the old value

echo basalt
#

For example, from a dungeon / minigame plugin or the world just gets unloaded, keeping the block in memory would still keep that (unloaded) world in memory

echo basalt
#

You could however just store the BlockData along with a position

fluid cypress
echo basalt
#

either with palettes to be somewhat memory efficient or not, who cares

fluid cypress
#

right, well i think i will just invalidate the cache and thats it, makes sense in my case anyway

young knoll
#

Is the world held in Block a weak refrence

echo basalt
#

nope, hard reference to the nms world

young knoll
#

Spooky

#

Though you could just hold location instead

#

Since that does use a weak reference for the world

echo basalt
#
public class BlockSnapshot {

  private final UUID worldId;
  private final Position position; // just make your own record or whatever
  private final BlockData data;

  private BlockSnapshot(UUID worldId, Position position, BlockData data) {
    this.worldId = worldId;
    this.position = position;
    this.data = data;
  }

  public static BlockSnapshot create(Block block) {
    return new BlockSnapshot(block.getWorld().getUID(), Position.at(block), block.getData());
  }

  // add more static factory methods

  public Location getLocation() {
    return new Location(Bukkit.getWorld(worldId), position.x(), position.y(), position.getZ());
  }

  public void apply() {
    getLocation().setData(this.data);
  }

  // equals and hashcode, maybe a codec / serialize to pdc? who knows!
}
#

This is an example of how I'd do it

#

tbf I have my own block thing with support for custom types

#

Instead of this you can also make your own schematic system if you feel like reinventing the wheel

#

plenty of options

#

you could also omit the apply() method and just make this a data class, having your own WorldAccess interface for applying blocks

#

That way you can choose if you want to apply it manually, batch them or just route to WorldEdit

hollow oxide
#

hello, i'm working with inventories in 1.21.1

in 1.21.1 to get the title of an inventory you need to get the InventoryView
and I don't know how to get the InventoryView from the Inventory

this is what I want to do

if (inv.getType() == InventoryType.BREWING && "Runic Table".equals(inv. ())) {

Thx for any answers

brazen gorge
#

Anyone do a code for me?

young knoll
#

?gui

worldly ice
undone axleBOT
brazen gorge
worldly ice
#

make a forum post on the thread

hasty geyser
#

Where's the best place to find an experienced full-time Minecraft developer for hire other than Spigot forums?

drowsy helm
#

and you want to help the community

mortal vortex
#

:(

alpine solar
#

why

quaint mantle
twin venture
#

hi , is it possible too get the folder name of the server?

smoky anchor
#

just new File().getParent() ?

twin venture
#

new File("").getParent();

#

right?

twin venture
#

hi , iam trying to register a server to my proxy bungeecord

#

but its not registering

#

InetSocketAddress address = new InetSocketAddress(serverAddress, port);
ServerInfo serverInfo = ProxyServer.getInstance().constructServerInfo(serverName, address, "Dynamic registered server", false);
ProxyServer.getInstance().getServers().put(serverName, serverInfo);

#

but in mc game , when i type /server

#

i don't see the server name there

#

it should show this server folders xd

brazen gorge
#

?services

undone axleBOT
dark moth
#

i was messing around

#

trying this but

#

it looks like it works but sometimes its making me feel like im messing up somewhere

#

heres the result

drowsy helm
#

whats wrong with that?

dark moth
#

idk mate it feels like sometimes it loops

#

like idk

#

it feels unfair for someguys yk :D

drowsy helm
#

thats just natural randomness

#

you should do a weighted system if you want equal distribution

dark moth
#

cuz i know one of my friends is just gonna say "hey!! this is unfair that guy didnt got selected once!!!!!!"

dark moth
#

maybe i should add another one so it doesnt look like this

guy1
guy2
guy1 <----- this is bad for me (atleast it feels like it)

drowsy helm
#

yeah thats fair enough

#

weighted random shouldn't be that hard

dark moth
#

since im making a game like hide and seek

#

u dont want one player to be selected that much

#

otherwise he'll not be happy :D

lilac dagger
#

why do you need that randomness for a hide and seek minigame?

mortal hare
#

i wonder if there's public community driven documentation for NMS server classes i could use?

lilac dagger
#

you only need to pick a random one from a list

dark moth
#

like guy5 gets selected 2 times in a row a lot of times

smoky anchor
#

make a list with all players
each time select random, remove from list
once list is empty fill it again with same players
each player gets selected equal times
I think

lilac dagger
#

it should be better when there's more players tho

#

that's randomness

#

sometimes it gets selected twice

dark moth
lilac dagger
#

the only other way is to have a previous seekers list and give lower the chance that way

dark moth
#

so i didnt even try it

smoky anchor
# dark moth this is genius dude

And I am talking about a (Array)List<> not an array
Removing from list shifts all elements to the left and changes the length so there would be no need for null checks

drowsy helm
#

based steve

trim quest
#

this plugin uses my api as dependency

#

throwing this strange error message

#

the method signatures are correct

#

hmm i guess i foundy why

#

my api uses 1.21.6 spigot-api, while my depend plugin is 1.20.4

trim quest
#

i moved my abstractions into my plugin and its solved

#

i dont know why this happened

#

my abstractions was only using ItemStack class

dark moth
#

dude is there any ways i can solve this cursor issue

#

intellij btw

chrome beacon
#

Press the insert key

dark moth
#

oh

#

ty

trim quest
mortal vortex
# trim quest

pretty sure u need PacketEvents as a jar on the server

#

like you would with Vault

trim quest
#

yes

#

i know

#

i have

pseudo hazel
#

it says its loading packetevents right after

mortal vortex
#

oh lol u do, i just saw the log

#

@alpine urchin

pseudo hazel
#

you need to add it as a dependency in your plugin file

trim quest
#

i guess i added them depend and softdepend at the same time

#

thats the problem i guess

#

it was only softdepend

pseudo hazel
#

oh yeah

#

if it doesnt hard depend (or if you dont use loadafter( if that even exists) the load order is not guaranteed

trim quest
#

k now its loaded

pseudo hazel
#

nice

#

now you can fix your config error xD

mortal vortex
#

Anyone ever have an issue with target or build not showing in the Project Tree, in intelliJ?

azure zealot
#

no

mortal vortex
#

LOL wtf... this is all I see, but if I open in explorer,...

azure zealot
#

have you tried to restart your wlan router?

mortal vortex
#

bruh what

azure zealot
#

restart intellij

#

lmaio

mortal vortex
#

billlion times

#

This been happening for a month

azure zealot
#

restart pc

#

hm

#

only at this project or all projects?

mortal vortex
#

Should I turn off the breaker as well?

#

All lol

azure zealot
#

reinstall intellij

mortal vortex
#

:(

#

do i need to replace my WLAN router to?

azure zealot
#

maybe

#

maybe you have to reinstall your os

#

or bios

#

jk

mortal vortex
#

buy a new house???

azure zealot
#

have you tried microwaving your pc?

#

sometimes it reorders the bits

#

and it works again

mortal vortex
#

nah lowkey smart

azure zealot
#

i know

#

everytime i get a nullpointer caused by a bit flip from an
solar storm, i put my server into microwave to revert the bitflip

potent crescent
#

guys can i get help for a small custom plugin?

azure zealot
#

chatgpt can help you

potent crescent
#

I want a custom plugin for EssentialsX that works like this:

When a player runs /baldeny, it prevents other players from using /bal on them.

When a player runs /invseedeny, it prevents others from using /invsee on them.

If someone tries to bypass this, they get the following message:
&cError: &4This player not found

potent crescent
#

idl why

#

k

#

its a simple. plugin

pseudo hazel
#

?services

undone axleBOT
potent crescent
#

Unfortunately, I am not interacting with Spigot

#

I don't have 15 posts

chrome beacon
#

You can contact someone offering their services

potent crescent
#

where can i found them

mortal vortex
#

"offering services" lol

umbral ridge
#

how can you hide sidebar numbers?

rotund ravine
#

Did u google

lilac dagger
#

check the Score api

#

if it's not available then you'll need nms

pseudo hazel
#

its available if you use a version past the middle ages

worldly ingot
#

Spigot doesn't have API for it. It got blocked by Paper developers, who then introduced their own API downstream before they hard forked, then I gave up

pseudo hazel
#

oh oops I was confusing it with paper again

sly topaz
#

from looking at the PR it felt like there were some issues raised around how number format was implemented more than anything, but not anything blocking per-se

#

ig the most damaging thing is that it deals with components and the bungee chat api is incomplete for this purpose

twin venture
#

they are not showing when i do /server

twin venture
#

for some reason when i register the servers using the method i mentioned , nothing happens when i do /server

thorn isle
#

never worked with bungee but i'd maybe guess that the collection returned by getServers is a defensive clone and you can't put things in it or remove things from it and have the changes actually reflected on the proxy

mortal vortex
worldly ingot
#

Often they were unhappy with the way things were implemented, often for very, very small things, and nothing was ever good enough because it wasn't up to Paper standards (despite being in the Spigot project...)

mortal vortex
#

am confused

#

We are talking about within Spigot?

worldly ingot
#

Yes, Spigot Stash changes

mortal vortex
#

It got blocked by paper devs within spigot?

worldly ingot
#

Yes because of review comments

mortal vortex
#

maybe I am an idiot. How do they have influence?

#

Ohh

thorn isle
#

some consideration was probably being given to paper because they'd have to inherit the changes downstream

worldly ingot
#

Correct

#

And they were never happy with how things were done because nothing was componentified

#

Which I also did in a separate PR but they also weren't happy with that one either because it wasn't Adventure, so 🙃

azure zealot
#

lmao

mortal vortex
#

Sounds like a bunch of pretentious losers who enjoy being nitpicky for the sake of an ego

thorn isle
#

i do hate trying to get into review wars with the paper devs to try and get some pr through

echo basalt
#

paper smh

worldly ingot
#

It's why I gave up

echo basalt
#

I submitted a bug fix to adventure-nbt, guy said it looked good

worldly ingot
#

Too many complaints, not enough effort from them

echo basalt
#

then merged something else, published a new version and never merged my shit

azure zealot
#

not only at paper

worldly ingot
#

(8 is newer, obviously, but Minecraft ecosystem wasn't really Java 8 by that point)

slender elbow
#

yea but it's been revisited post java 8

#

god forbid anyone changes a single line of code and moves forward

worldly ingot
#

Could open a PR if you reaaaally wanted 👀

slender elbow
#

oh i really do not

echo basalt
#

talk is cheap, send PRs

azure zealot
worldly ingot
#

I figured as much lol

slender elbow
#

im not touching that

worldly ingot
#

Want me to open it for you?

slender elbow
#

oki

#

i'll review it too

worldly ingot
#

😘

thorn isle
#

have chatgpt rewrite it

azure zealot
thorn isle
#

usually after i see some pr get shot down i just end up going into nms for the same thing

thorn isle
#

thankfully that's pretty easy and maintainable these days

echo basalt
#

boy oh boy do I love using nms

thorn isle
#

it's only those prs that require big diffs to nms internals, like the async chunk pre load event, that are a bummer to see shot down

#

the rest are like an expected level of recurring disappointment

worldly ingot
#

That's what my ex girlfriend said to me

#

/s

slender elbow
#

-# rs

worldly ingot
azure zealot
thorn isle
#

^mfw i see that class

azure zealot
#

xdd

slender elbow
#

still open whew

#

at least choco doesn't have to touch that code either

azure zealot
worldly ingot
#

Too large in scope

#

But I essentially wrote the same code using a stream but used two separate filters (which imo is the correct way to do it)

daring light
#

How would I prevent the Dragon Egg from spawning after the dragon has been killed?

worldly ingot
#

By the way, BungeeCord only jumped to Java 8 five years ago in 1.15.2 (2020). The earliest change to that tab completion was 7 years ago, so :p It hasn't been touched since the J8 bump

worldly ingot
sly topaz
#

honestly amazed how well it stands with that little of a change in architecture, looking at diff from then

#

there's of course new packets and what not, but nothing too wild

worldly ingot
#

Yeah, no event is called for it. It's done in EnderDragonBattle#setDragonKilled() but I see no Bukkit event call. Honestly not really sure what event would be used. EntityChangeBlockEvent maybe lol

sly topaz
#

I wish the EntityChangeBlockEvent had a similar documentation to the BlockFormEvent, that way I'd actually have examples as to when it is triggered

#

I never remember what it is actually called for lol

worldly ingot
#

Caused by an entity? ECBE. Caused by a world action? BFE

mortal hare
#

So i was hacking xaero's worldmap for serverside integration, and i was wondering why tf do i get white player heads for no apparent reason. i spent like 8 hours trying to debug. turns out that's just a bug in xaero's world map

#

fml

sly topaz
sly topaz
#

what server side integration were you trying to add

worldly ingot
#

Okay you know what? I have no distinction between EBFE and EBCE lol

sly topaz
#

someone probably forgot that EBCE existed when adding EBFE. Can't blame them since I also forget that EBCE exists all the time

worldly ingot
#

Form has a block state, Change has block data, but yes, I'd say it was probably a case of someone not realizing an event existed already

mortal hare
# sly topaz what server side integration were you trying to add

basically im working to syncing player positions with browser map, i already decompiled the project and remapped it to mojang mappings for reference code, i've hacked my way through with reflections externally just to not infringe ARR copyright and i was like why tf all player heads in gui render properly and in the world map itself they're all white

worldly ingot
#

At this point though, I'd say Change would be preferred unless you need to retain the data of a block (i.e. a chest)

sly topaz
mortal hare
thorn isle
#

one of these days i want to integrate a view distance extender plugin into the distant horizons mod

#

i think it might already have a bukkit plugin but the vd extending impl is kind of terrible

mortal hare
#

VoxelMap is ARR licensed, Xaero's Minimap is ARR licensed, JourneyMap is ARR licensed

#

they're all closed source

onyx fjord
#

does World#getGameRuleValue default to default gamerule value?

sly topaz
#

I didn't realize until you pointed it out, but you're right

#

VoxelMap-Updated is source-available, at least

#

and JourneyMap seems to have a bunch of addons so it is probably more easily extendible than xaero's, not that I'd know

#

time to make an open source minimap solution

mortal hare
#

Xaero's minimap has bunch of api's that it just doesnt expose for some odd reason

#

you can add custom player trackers with one interface

#

yet for some odd reason owner just hides them for internal use only

#

its primarily used for only its own mod integrations

sly topaz
#

but let me check just to be sure

thorn isle
#

iirc it doesn't

#

i vaguely remember having to throw ternaries at it

sly topaz
mortal hare
#

i like how this dialog still exists in windows 11

#

this is ancient

#

i remember it being in win 95

sly topaz
#

is that the dialog that pops up if you do alt + f4

onyx fjord
#

😠

sly topaz
#

I don't remember how that pops up

#

yeah, it is

thorn isle
#

there are a lot of things in modern windows left in from the very start

#

e.g. the services manager

onyx fjord
#

no clue

#

idek how entirety of windows 11 works

#

but ik start menu bottom panel is a web app

thorn isle
#

it's 10 but with a bit of polish which is 8 with a bit of polish which is 7 with a bit of "polish" and jank

sly topaz
# mortal hare

I'd assume the reason they haven't changed it is some accessibility issues around replacing it

#

i.e., that pop up is going to be shown regardless of the explorer failing you IIRC

onyx fjord
#

wouldnt ever call it polished 😂

sly topaz
thorn isle
#

i use all 8 10 and 11 on a daily basis and there really aren't any differences between them apart from some visuals in the shell

onyx fjord
#

good ui

sly topaz
#

windows 10 did most of the legwork for it, but windows 11 made it follow a language design

mortal hare
sly topaz
# onyx fjord good ui

eh, while I also love gnome and fedora, they don't have to deal with decades of tech debt

sly topaz
#

they do take more than a "native" app to boot up, but barely so

mortal hare
#

install powertoys and see how its winui gui runs slow

sly topaz
#

I wouldn't install powertoys, because it is bad software 😛

onyx fjord
#

funny how no app makes native ui for windows

thorn isle
#

i don't use any winui apps

onyx fjord
#

well, with exceptions

#

anything relatively new is a web app

mortal hare
#

i just dont get it why microsoft would make wrappers under WPF, UWP to implement WinUI consistently. that's like hiding dust behind a carpet

sly topaz
#

they somehow managed to fork Wox Launcher and make it slow as hell. Powertoys Run is unbearably slow

mortal hare
#

its a ticking time bomb of mess and spaghetti code

sly topaz
#

even Flow did a better job at forking Wox

thorn isle
#

more like lasagna code

#

as in layer on top of layer of shit

mortal hare
#

true

thorn isle
#

they never remove anything, only wrap it in another layer of shit

mortal hare
#

i just dont get it why they dont utilize compatibility modes and optional features more

#

to cleanup the codebase

sly topaz
#

they can't remove anything, removing anything means breaking user-space, and unlike wayland compositors, that is a no-go usually

mortal hare
#

they already have things implemented they just decide to layer shit

thorn isle
#

to do more involved config things i find myself using 98/xp era, win7, and win11 tools at the same time (and they all link to one another back and forth) because none of them have all the settings and all of them have some of the settings

mortal hare
#

optional features already kinda does it, but they still decide to layer shit on top of shit

#

instead of trying to build better foundations and exposing legacy codebases under optional features

thorn isle
#

e.g. to change the system language, the entry point is the win11 "settings" app, which opens a win7 control panel window, which opens a win98 sysadmin settings window, which opens another win7 control panel window

sly topaz
thorn isle
#

myeah that's more and more the meta these days

sly topaz
#

either registry editor or group policy editor, never fails

#

🔥・Cool tech

left jay
#

hey my pom.xml isnt putting the final compiled jar where i want it, what did i do wrong here?

rotund ravine
#

?paste

undone axleBOT
mortal vortex
#

Enlighten me iOS. Why would I want to open an XML file in a video conferencing app?

thorn isle
#

onedrive
desktop
spaces in directory names
apostrophes in directory names

mortal vortex
#

nahh windows is just annoying like that. All your user dirs reside under one drive

left jay
#

oh right sorry

left jay
#

i didnt know there was an actual way to set the output directory

onyx fjord
#

is Location safe to store as a map key?

lean pumice
#
        WrapperPlayServerPlayerInfo playerInfoPacket = new WrapperPlayServerPlayerInfo(
                WrapperPlayServerPlayerInfo.Action.ADD_PLAYER,
                Collections.singletonList(
                        new WrapperPlayServerPlayerInfo.PlayerData(
                                null,
                                profile,
                                GameMode.CREATIVE,
                                0
                        )
                )
        );

why this not work in 1.21.1?

sly topaz
#

Probably not stable hash considering it has a weak ref to a world

#

Yeah, it uses 0 if world is null aka unloaded

#

But if you never unload words, it isn’t an issue

#

Definitely not one for the default world given it can’t be unloaded, if anything

onyx fjord
#

alr ill make my own location then

#

with worldname or whatever

#

worlduuid etc

sly topaz
onyx fjord
#

yeah obv

sly topaz
#
public record StableLocation(String world, double x, double y, double z, double pitch, double yaw) {

  public StableLocation(World world, double x, double y, double z, double pitch, double yaw) {
    this(world.getName(), x, y, z, pitch, yaw);
  }
  public StableLocation(String world, double x, double y, double z) {
    this(world, x, y, z, 0, 0);
  }
  public StableLocation(World world, double x, double y, double z) {
    this(world, x, y, z, 0, 0);
  }

  public Location toBukkitLocation() {
    return new Location(Bukkit.getWorld(world), x, y, z, pitch, yaw);
  }

  /* maybe add some withers */
}
#

I wish they implemented the derived record creation JEP already so we don't have to write withers manually

sly topaz
#

if you want to do something more involved, you could create a dynamic World proxy that stabilizes the hash code by keeping the uuid around regardless of whether the world is loaded

#

only issue with this is that it would lead you to believe the world is loaded when it isn't, and it breaks symmetry with CraftWorld equals since Craftworld checks for class equality

slender elbow
#

the world isn't the issue with the hash code

#

since it's just the hash of its uuid

#

the issue is that Location is mutable

sly topaz
#

I mean, both are the issue

#

you can circumvent Location being mutable by well, just cloning on put

#

but you can't circumvent the world unloading

slender elbow
#

i guess

#

not like keeping the ref is much better lmao

#

housekeeping 🧹

torn shuttle
#

has anyone here ever tried implementing LUA as a way to program aspects of their plugin from 'config' files?

fathom notch
#

As far as i can tell the current inventory click event api can't distinguish between a single shift click and a double shift click, because the double shift click just fires as multiple normal shift click events.
Because of this there's a possibility where individually shift clicking each item has a different result as shift double clicking, for example in the case where there isn't enough space in a inventory for all of a type of item to fit in the opened container but some of it can.
Both fire as a move_to_other_inventory inventory action also
Because of this, you can't accurately predict the result of the move event without like looking at the packet or something
is this correct or am i messing something?

torn shuttle
#

I know lua has a reputation to be easy for these things, but I am wondering just how much work that would imply on my end

sly topaz
#

I don't think it'd imply much work if you use luaj/luna

trim quest
#

did anyone uses ai agent for their spigot projects (for example cursor ai)

#

i mean vibe coding stuff

torn shuttle
#

hmm

worthy yarrow
#

No we clown on people who do so

torn shuttle
#

I do like the idea of lunaj

#

I have these 'props' which are just custom models you can place in the world and give them custom behavior

#

and there's three types of custom behavior, right click, left click and entering its hitbox space

#

it would be really neat if you could just write a small lua script for this

#

would really give it that flexibility

quaint mantle
sly topaz
#

so that's the updated one, I never know nowadays

#

not that it matters, lua spec hasn't been updated in a while, welp, seems like I was wrong, it was updated rather recently, just that I never used recent versions lol

torn shuttle
#

it does not seem too hard to do

trim quest
#

not even copy paste

#

stuff

worthy yarrow
#

Oh yeah then you're definitely being laughed at

trim quest
#

its changing codebase automatically depend on your prompt

sly topaz
#

I did use vscode copilot for some spigot projects

torn shuttle
#

how would somethihng like this cope with imports?

sly topaz
#

it was fine for the most part, if anything you can't depend on it to know about paper specific tooling like paperweight, but other than that it does fine as long as you provide appropriate context

worthy yarrow
sly topaz
quaint mantle
#

Tab complete should be enough

sly topaz
#

kind of like a requires in js

worthy yarrow
#

Cuz I don't take vibe coders seriously

sly topaz
#

I don't take anyone doing plugins seriously

torn shuttle
#

oh luaj has its own imports

#

hm

#

hmmmmmmm

sly topaz
#

I do wonder how lua LSPs handle something like luajava

quaint mantle
#

Dont forget sync lua states otherwise it will crash the jvm

torn shuttle
#

so people will have to manually look up paths for everything huh

distant pendant
#

how to delete all items in the crafting slot, i try to clear inventory but not cleared.

worthy yarrow
sly topaz
#

just write a bunch of lua scripts that people can depend for better UX, something like a stdlib

torn shuttle
#

why on earth are you programming java on mobile

sly topaz
#

for anything advanced you'd just let them search the paths, at that point they'd know anyway

distant pendant
#

I don't have pc lol

pseudo hazel
#

did you register the listener?

torn shuttle
distant pendant
sly topaz
#

sounds pretty doable if you don't care about generalizing the concept honestly

pseudo hazel
#

and did you make sure the code reaches the clear line?

torn shuttle
#

the kind of annoying thing with making a standard library is that this is at a complexity level that I might be the only one who will do it

sly topaz
#

if you do care about that then you'd go into codegenning java objects into lua scripts or something like that which would be a lot more involved but that can be work for later

torn shuttle
#

at which point it would save me a lot of time to just make these hardcoded

pseudo hazel
#

well then your interface is too complicated

sly topaz
#

I guess you could use a host, but still. How do you connect to it to test lol

pseudo hazel
#

also you better charge that thing

sly topaz
#

sounds like a situation, props to you for still trying though

pseudo hazel
#

its boutta run out

chrome beacon
worthy yarrow
sly topaz
#

at that point why even make plugins

#

just make java programs

torn shuttle
#

I really like the lua idea but I don't know that I like it in practice

#

hm

pseudo hazel
worthy yarrow
#

Well because it's minecraft ofc, people like minecraft

distant pendant
fathom notch
worthy yarrow
#

Honestly sounds like a true dev, push to master with no tests of any kind beeing done kek

chrome beacon
sly topaz
fathom notch
sly topaz
#

you could just make a Skript addon™

fathom notch
#

this one action can have different consequences based on if its a single or double click

chrome beacon
#

so getting that won't help you

fathom notch
#

i guess im just annoyed that the api could give more info but it dosn't

#

well maybe it does

#

hmm 1 sec

pseudo hazel
#

does the packet even have a double shift click?

fathom notch
#

I don't think so, the confusing thing is that when i shift double click a item, i get multiple events of shift single click

pseudo hazel
#

so where is this shift double click idea coming from

fathom notch
#

like when you shift double click a item in a chest, it moves all similar items also

#

but if there is enough space for all of them, none of them move

#

vs if you just shift clicked them one at a time, some of them would move

pseudo hazel
#

thats a double click on an item while holding an item

#

there is no shift iirc

fathom notch
#

oh you might be right

#

but still isn't there the same issue?

pseudo hazel
#

no

#

because double click should be there

chrome beacon
#

collect to cursor iirc

pseudo hazel
#

maybe you get both the single click and double click im not sure

fathom notch
#

im printing the action, its not collect to cursor

#

also the clicktype enum dosn't have a double click

#

oh wait it does nvm

#

ok that might be it lemme check then

#

i think the confusing thing is just that it sends multiple events for the one double click

sly topaz
fathom notch
#

well no it might send 5 or 6 times, if there is 5 or 6 items to move

sly topaz
#

the inventory action for shift double click seems to be PICKUP_ALL

fathom notch
#

im talking about when you double click shift on a item where there is others of the same type in your inv

sly topaz
#

I don't think I've ever tried that

#

are you sure that is a vanilla hotkey? Let me check

worthy yarrow
#

It's an auto transfer mechanic for all items matching the type

#

It is in fact a vanilla thing

sly topaz
#

it does set the click type to double click, just no inventory action for it if carried item is empty

#

it could be that you're hitting a race condition and carried item is set to null before the event triggers, so it doesn't have the appropriate inventory action (in this case, collect to cursor)

#

click type should still be consistent, if anything

#

make sure you're testing on survival also

fathom notch
#

im def getting a MOVE_TO_OTHER_INVENTORY

fathom notch
#

wait i can't upload imgs 1 sec

sly topaz
#

?img

undone axleBOT
#

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

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

fathom notch
#

the cursor item can be anything

#

wierdly this only works when the items are in your hotbar to normal inventory, and not the other way around

#

it seems to just push all items to the top left most slots

sly topaz
#

test it on survival

#

creative fucks up inventory events

fathom notch
#

same thing

#

also when shift right clicking while another inventory is open (in my case a chest), it sends the items to the bottom right most slots

sly topaz
#

welp, it seems like you hit an edge case

#

the inventory events, same way as the interact events have always been finnicky, so you always end up with edge cases like these

#

you could try and detect shift double click by checking if the action is shift click twice in a row, given something like a 200ms debounce

#

that or listening to the packet and also making an issue on the jira about it and see if md can come up with a fix

fathom notch
#

honestly it might be easier to just listen to the packets

#

ill make a issue also

sly topaz
#

?jira

undone axleBOT
mortal hare
#

the codebase is such a mess that you cant figure out what's what if you want fully decompileable build

#

there's classes with 2400 lines of code

pseudo hazel
#

could be worse xD

mortal hare
lilac dagger
#

one of my events probably reach 1000 lines of code

mortal hare
#

and its riddled with useless abstractions

pseudo hazel
#

thats the best of both worlds

lilac dagger
#

i should split them up

mortal hare
#

i dont even understand why code is so abstracted when the targetted platform of this mod is primarily fabric

fathom notch
lilac dagger
#

it used to be the same with my code, but i reduced it drastically

#

i think it's mostly one thing now

trim quest
#

how you guys animate icons in inventory menus

lilac dagger
trim quest
lilac dagger
#

just have it run every second instead of ticks

#

i use the least amount of ticks to make it smooth approach

#

i'm missing info about why you need java plugin, you can just call a method of the menu if you want to run an animation

lilac dagger
#

have methods that you can call from a different class

#

don't be scared to branch out into classes that each do things

buoyant viper
#

abstraction go Brrrrrrr

slender elbow
remote swallow
#

damn what the hell

worldly ingot
potent crescent
#

guys can i get help

#

and evreything is good But it only works in one direction. can someone help me for. fix it

potent crescent
mortal vortex
#

Bro... "Wurst" 😭

distant pendant
twin venture
#

Hello guys , so after along time of thinking i decided not to use Docker or kubernets ..

i made my own app that connect to jedis ( recieves messages and send messages to and from spigot , proxy servers )
Features :

  • dynamic create servers

  • delete server that stop and create new one once its requested by users

  • dynamic add servers to proxy bungee and remove them too

what do you think about other features i can add?

molten hearth
#

docker support

mortal vortex
#

kubernets support

potent crescent
#

thats why i used wurst

#

anyway i didnt get a helpp

#

i need a help

smoky anchor
#

For toggle sprint ?
Sure buddy

potent crescent
smoky anchor
undone axleBOT
smoky anchor
#

Oh I personally won't help you with this, I am against gambling. Even if it is virtual.

wet breach
#

just not always with money

mortal vortex
smoky anchor
smoky anchor
mortal vortex
#

🫃🏿

smoky anchor
#

ohkay

mortal vortex
#

my fav emoji is built right into discord

potent crescent
#

15min sorry i got bussy rn

mortal vortex
#

is bussy short for badussy

smoky anchor
#

ye, it's busy*
don't say.. that

mortal hare
#

maybe i dont give up yet

mortal vortex
#

give up.

mortal hare
#

i will decompile only xaero's world map and make stub classes for soft dependencies, that way i dont need to decompile the soft dependencies too

#

not sure if it would work

#

but if it doesnt i 100% give up

mortal vortex
#

why do u need to decompile

#

cant u view their source?

mortal hare
#

because it has a bug i wish to fix

#

and i can't patch it via mixins

mortal vortex
#

Why?

mortal hare
#

its closed source

#

ARR licensed mod

mortal vortex
#

It is?

mortal hare
#

yea

mortal vortex
#

thatgs pretty shitty

mortal hare
#

there's no minimap/worldmap mod I know which is open source which works for modern versions of mc

#

closest i've saw is mapwriter but its dead on modern mc