#help-development

1 messages · Page 1273 of 1

tribal wraith
#

I want the mob to walk backwards

#

Not look backwards while walking

#

Is that what you're describing for ?

sly topaz
#

what does it mean to walk backwards

tribal wraith
#

Sorry if I wasn't clear

somber scarab
#

what's the best minecraft sound to mimic the sound before we're about to sneeze
like "ah-.. Ah.. ahh- " before the Achoo!

sly topaz
#

because it seems you're trying to make it look backwards while walking towards certain location from your code

tribal wraith
#

Walking in a direction but facing forward towards the player

#

Opposite of where it's facing

#

Same thing I guess, maybe it's easier to implement if I describe it like that ?

sly topaz
#

then yes, you do want to modify the LookControl

tribal wraith
#

I'm super lost looking at the look control class, I'm editing the tick() method, right ?

sly topaz
#

yes

#

if you just want it to always face the player, then you may not have to modify anything though

tribal wraith
#

Even while it walks backwards?

sly topaz
#

even while it walks towards anything

tribal wraith
#

My problem is when I edit it to face the player, it cancels out because the nav system makes it face where it's walking

#

Then it slows down

#

I would imagine it's the movecontrol ? I'm not sure

sly topaz
#

the navigation system kaes it face where it is walking because that's where the LookControl's target is set at

#

if you set the LookControl to where the player is, then it'll face the player

#

so, call mob.getLookControl().setLookAt(...) after calling moveTo and check if it faces the player

tribal wraith
#

The check will be false, it's not facing the player

#

Sorry if I'm a broken record here, but I don't know what you mean

granite python
#

hi guys! how can I start developing plugins or mods to MC? is there any source where I could start learning about it?

#

I do work as a dev, but never touched MC or game related development stuff

sly topaz
#

I'll ping you when I find where

mortal vortex
#

Do you know how to code in Java @granite python?

#

That's your step 1... Know Java.

tribal wraith
#

Awesome thank you

sly topaz
#

if you have some basic understanding of programming in general then you should pick it up pretty fast

#

I recommend Jetbrains's Academy Java Course for a quick overview of the language

granite python
mortal vortex
#

Anything object oriented, or less abstract.

granite python
#

Mainly TypeScript, and I've been studying C# for some weeks now, which some friends of mine told me that are pretty similar to Java

mortal vortex
#

Yeah alright. That works.

granite python
#

have had some past contacts with Go and Kotlin too

mortal vortex
#

Learn basics of Java

#

you can even do it along with learning to make plugins

blazing ocean
#

If they know kotlin and C# I'm guessing they can understand java as well

sly topaz
#

eh, I've played around with haskell, doesn't mean I can realistically code anything with it 😛

blazing ocean
#

that's just haskell

granite python
blazing ocean
#

yeah

echo basalt
#

game dev and mc dev often use different structures

#

game dev is a lot more advanced imo

blazing ocean
granite python
sly topaz
#

I was trying to be subtle rad, smh. You're gonna hurt the compsci majors

blazing ocean
#

aka steel

blazing ocean
#

since they're syntactically pretty similar and are both OOP

granite python
blazing ocean
#

you really just set up a spigot project and start making one

#

you can pick your poison with build tools - maven and gradle, it doesn't really matter which one you use

sly topaz
#

the entrypoint is onEnable (for the most part), you have to extend JavaPlugin

#

then the rest is mostly just learning what events are available

drowsy token
#

How can I get nms dependencies like "import net.minecraft.server.1_12_R1.level.ServerLevel" rather than "import net.minecraft.server.level.ServerLevel"?

sly topaz
#

the craftbukkit ones still do, but not the NMS ones

#

ah you're using 1.12

drowsy token
#

emmm I need all of them,all version

sly topaz
#

well, if you imported spigot as a dependency, it should just have the version in the package name by default, there's no remapping in 1.12

drowsy token
sly topaz
tulip thicket
#

Hey guys!
Now I'm trying to create an addon for weapon mechs

Its behaivour is to apply skin with specific conditions

Probably better to send it directly to wm server
I've already done it, so I want to post it here, maybe can find some help

Here is my basic logic of applying skin(I know about native method, but it seems work without it, and also I've tried it and won't help):


   private void applySkin(Player player, ItemStack originalWeapon, String skin) {
        ItemStack skinnedWeapon = originalWeapon.clone();
        CustomTag.WEAPON_SKIN.setString(skinnedWeapon, skin);
        
    } 

I want to create my own custom logic of applying skins in weapon mechanics (last ver. 1.21.3)

When I apply skin it doesn't show in game at all, (only if try to move smth work)

With NBT tags everything is fine (judging by logs)

Although logic works fine if I add an additional event of moving or teleporting

But, in addition, it looks a little bit awkward
I wonder is there any method to apply skin without such behaivour?

I asked AI and his suggestions was to use

player.updateInventory();
//or
   player.getInventory().setItemInMainHand(weapon);

Also, he suggested to use some deep logic of minecraft with protocol lib
but I'm a newbie and have no idea in such things

Really tough problem that killed me about a week or more
Seek for any help!

drowsy token
sly topaz
#

how are you handling your dependencies

#

are you using maven/gradle? Or your IDE's dependency management?

drowsy token
#

yes maven

#

<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.20.4-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>${remapped.version}</version>
<scope>provided</scope>
<classifier>remapped-mojang</classifier>
</dependency>

sly topaz
#

that isn't 1.12

#

if you are using 1.20.4, then there's no version in the package name

#

I am unsure of what you're trying to do honestly, what are you even using NMS for?

drowsy token
sly topaz
#

?mvn-multiversion

drowsy token
sly topaz
#

read the article

drowsy token
pure dagger
#

how to make player unable to put things in top inventory but be able to do things in the bottom inventory

#

would i have to check for all cases, shift clicking, double left clicking, dragging manually ?

young knoll
#

Yes

#

Or just fill any empty slots in the top inventory

sly topaz
#

I mean, for the basic things you just have to cancel inventory click and drag if clicked inventory is top inventory, or it is bottom inventory but inventory action is collect to cursor/all

pure dagger
pure dagger
sly topaz
#

double or triple click, yes

pure dagger
#

how do i check if any item from top inventory is taken by that

#

can i ?

sly topaz
#

you can just check the inventory action/click type

pure dagger
#

but will there be difference between when player takes items only from bottom inv by double clicking (doesnt change the top inv), and when player takes items from top inventory?

#

if i added unuique PDC to the top inv items it would be sure that they cant take it

#

but any other way ?

sly topaz
#

I wonder, how does the server handle collect to cursor, since it is technically multiple inventory clicks at once

#

does it just call an individual event for each modified slot?

pure dagger
#

its ClickType.DOUBLE_CLICK

sly topaz
#

I guess it doesn't necessarily count the collected slots as interactions

pure dagger
#

if you double click the event is called 2 times

#
  1. LEFT
  2. DOUBLE_CLICK
sly topaz
pure dagger
#

whats the differenc

sly topaz
#

Inventory action will cover more cases I imagine

#

I do wonder if one can avoid collecting all items from a specific inventory without essentially recreating the action

pure dagger
#

whattt

#

what do you mean i dont get it

pure dagger
#

i just cancelled double click no matter hat

#

i did this

#
@EventHandler
    public void onInventoryClick(InventoryClickEvent event) {
        Inventory top = event.getInventory();
        Inventory clicked = event.getClickedInventory();

        // if blacksmith inventory is not open, return
        if (!blacksmithInventories.contains(top)) {
            return;
        }

        // player clicked on the blacksmith inventory
        if (clicked == top) {
            event.setCancelled(true);
            return;
        }


        // player clicked on bottom inventory
        ClickType clickType = event.getClick();

        switch (clickType) {
            case DOUBLE_CLICK:
            case SHIFT_LEFT:
            case SHIFT_RIGHT:
                event.setCancelled(true);
        }
    }
@EventHandler
    public void onInventoryDrag(InventoryDragEvent event) {
        if (!blacksmithInventories.contains(event.getInventory())) {
            return;
        }
        for (int rawSlot : event.getRawSlots()) {
            if (rawSlot < event.getInventory().getSize()) {
                event.setCancelled(true);
                return;
            }
        }
    }
hard socket
#

packets are still needed for changing a player nametag?

blazing ocean
#

they never have been

#

if you just want to add a prefix/suffix or colour it, use teams

#

if you want to completely edit it or use more than the 16 legacy colours, you've got to use a text display

hard socket
#

text display and make it follow the player?

#

I want to completly edit it

blazing ocean
#

add it as a passenger

hard socket
blazing ocean
#

teams have an option for that

hard socket
#

alr will give that a try thx

umbral ridge
#

is there an event for water freezing

#

how do I detect it

#

when water changes to ice

#

naturally

sonic goblet
umbral ridge
#

ohhh I see

#

ty

hard socket
blazing ocean
#

?

hard socket
#

PlayerProfile api

#

public interface PlayerProfile extends Cloneable, ConfigurationSerializable

#

that will not work?

peak depot
#

wait so we actually still make plugins in 2025

#

thats crazy

hard socket
#

@blazing ocean

#

            TextDisplay nametag = player.getWorld().spawn(loc, TextDisplay.class, textDisplay -> {
                textDisplay.text(nameComponent);
                textDisplay.setBillboard(Display.Billboard.CENTER);
                textDisplay.setShadowed(true);
                textDisplay.setSeeThrough(true);
                textDisplay.setViewRange(64.0f);
                textDisplay.setInterpolationDelay(1);
                textDisplay.setInterpolationDuration(5);
                textDisplay.setAlignment(TextDisplay.TextAlignment.CENTER);
            });
            player.addPassenger(nametag);
            nametag.addScoreboardTag("nametag_" + player.getUniqueId());```
blazing ocean
#

well, are you adding them to a team that hides their username?

hard socket
#

add the text display?

#

I added the player

#

Visibility.NEVER

blazing ocean
#

don't use lunar client then

pure dagger
#

does Inventory.setItem(int, ItemStack) clone the itemstack ?

#

changing the amount doesnt work after i set it so ye

hard socket
#

thats from lunar ik

blazing ocean
#

add a vertical translation

neon gull
#

i have the juiciest plugin ever i need someone to make it for me you can do whatever you want with it just give it to me you can even sell i dont care i just rlly want it done

undone axleBOT
neon gull
#

@near furnace if u could help it would be nice just dm me

neon gull
neon gull
#

no one has seen it

neon gull
near furnace
#

are you gonna pay though?

neon gull
#

i got 0 money

near furnace
#

what's the plugin about, i may be able to 'help'

rotund ravine
neon gull
#

i didnt

#

i did it somewhere else on spigot

neon gull
#

im in the presence of masters this is crazy

#

idk what u guys are even talking about

#

😂

rotund ravine
pure dagger
#

uhm so why changing the amount doesnt work after i add it to niventory

slender elbow
#
    @Override
    public void setItem(int index, ItemStack item) {
        getInventory().setItem(index, CraftItemStack.asNMSCopy(item));
    }
#

i mean, you answered to your own question in the first place

#

but yes

pure dagger
#

where do you find that

#

impl

slender elbow
#

?stash

undone axleBOT
neon gull
#

i have the juiciest plugin ever i need someone to make it for me you can do whatever you want with it just give it to me you can even sell i dont care i just rlly want it done

neon gull
#

Dm

neon gull
peak depot
#

I did

rotund ravine
#

And don’t repeat that shit all the time everywhere

neon gull
#

Whuy

rotund ravine
#

Cause that’s what ?services are for

near furnace
#

?services

undone axleBOT
hard perch
#

Hey, I'm trying to create a ClientboundPlayerInfoUpdatePacket using the mojang mapping. I did this but I didn't find how to change the UPDATE_LISTED boolean to false :
Action action = Action.UPDATE_LISTED; EnumSet<Action> actions = EnumSet.of(action); ClientboundPlayerInfoUpdatePacket packet = new ClientboundPlayerInfoUpdatePacket(actions, serverPlayers); playerConnection.send(packet);

chrome beacon
#

It's either included in the set or it's not

#

That would be your true/false

hard perch
#

I think you don't understand, I want the UPDATE_LISTED action to be present, but I want to put its value to false.

#

Because, it will make no sense because there are actions that doesn't take boolean

chrome beacon
#

I do understand what you mean

#

And as I said it not being present means it's value is false

#

It's all sent as a (fixed size) bitset

young knoll
#

How does that work for the actions that take stuff other than a Boolean

chrome beacon
chrome beacon
young knoll
#

Presumably that’s what he wants

#

But idk what constructors Mojang has

chrome beacon
#

You can see what the constructor is in their code

#

It takes an enumset of the actions you want

#

and since they do not want the update listed action all they need to do is not put it in the set

young knoll
#

They do want the action

#

They want to set the value to false to remove the player from the list

hard perch
#

Yes, that's it

chrome beacon
#

ah I see now 🤦‍♂️

#

That's my bad

#

ClientboundPlayerInfoUpdatePacket#updateListed

#

That's the method you're looking for assuming you only want it for one player that's already known to the client*

young knoll
#

Interesting

#

Does Mojang just do it one action at a time

chrome beacon
#

No

#

You can send actions for multiple players at once in a packet

young knoll
#

Yeah but do they have any methods for that

#

Or would you have to construct the bytebuf manually

chrome beacon
#

There's a consturctor that takes a list of entries

#

which essentially is the player data

young knoll
#

I see

hard perch
chrome beacon
#

What version are you on

iron night
#

What library should i use for UIs?
requirements: supports dispenser UIs

chrome beacon
chrome beacon
#

Personally I'm not aware of any that do 🤷‍♂️

somber scarab
#

how do I use the registery to get a list of all potion effects?

young knoll
#

Registry.EFFECT.stream().toList() is an option

somber scarab
#

I found it i think

somber scarab
young knoll
#

There’s several other methods you could use but it won’t make a huge difference

hard perch
chrome beacon
#

oh no don't tell me Paper added that to nms 💀

young knoll
#

Okay I won’t tell you

#

:)

chrome beacon
#

:sadge:

young knoll
#

(Just go steal their implementation)

chrome beacon
#

or if you're depending on the Paper API you can just use the API directly

#

Assuming it's there in 1.20.1, no idea how old that method is

tawny remnant
#

Do last saved chunks load before plugins initialize? For example: i stop the server, then restart it. I have a ChunkLoadEvent in my plugin, but it doesnt seem to do anything, since the chunks I left in were loaded, they dont register in my ChunkLoadEvent? I dont really understand...

chrome beacon
#

Depends on your plugin.yml and if the chunk is a spawn chunk

tawny remnant
#

I need a compromise, mix of both. My goal is to reinitialize custom behaviour that i modify using NMS. It works when i spawn the mobs, but i dont have a method of making the behaviour persistent.

#

Do you have any suggestions?

chrome beacon
#

add this to your plugin.yml

load: STARTUP
#

Will make it load before the worlds

tawny remnant
#

will that affect the ChunkLoadEvent? My apologies, your answers dont seem to be quite clear enough for my monkey brain.

#

also, need I transfer the registering of the Listener to the onLoad() function? or is in onEnabled() fine?

#

just for clarity

thorn isle
#

the event fires as it would normally

#

the only difference is that now your plugin will be enabled by the time it loads

tawny remnant
#

so registering the Listener in onLoad() wont affect my goals then

thorn isle
#

plugins by default load at POST_WORLD, i.e after worlds, and hence the ChunkLoadEvent is fired before your plugin is enabled

#

changing it to STARTUP means the world will load after, and the events fired will be heard by your listener

tawny remnant
#

ah, i see, thanks!

thorn isle
#

alternatively (and this is my preferred approach, because it makes the plugin work with reloads) you can get all worlds and iterate over all the loaded chunks in onEnable, and do whatever you would do in the chunk load listener there

pure dagger
#

Inventory#contains(ItemStack item)
Inventory#contains(ItemStack item, int amount)
both of these check for entire ItemStacks matching (including amount - equals())

Inventory#containsAtLeast(ItemStack, int amount)
checks for actual amounts (isSimilar())
is that true? making sure

thorn isle
#
    @Override
    public boolean containsAtLeast(ItemStack item, int amount) {
        if (item == null) {
            return false;
        }
        if (amount <= 0) {
            return true;
        }
        for (ItemStack i : this.getStorageContents()) {
            if (item.isSimilar(i) && (amount -= i.getAmount()) <= 0) {
                return true;
            }
        }
        return false;
    }
#

looks like it

pure dagger
#

yeah i got confused by that, and by the (amount -= i.getAmount()) <= 0)

#

unreabale

thorn isle
#

it looks for similar stacks, subtracts their stack sizes from amount and returns true iff amount reaches zero

#

i.e. returns true if and only if all the similar stacks combined amount to amount or more

pure dagger
#

yup so if i wanna check if player actually has an item, i do containsAtLeast(item, 1)

thorn isle
#

if you want exact similarity, yes; for searching for custom items you probably want to just check the pdc or something, isSimilar can be expensive depending on how heavyweight the compared items are

pure dagger
#

uhm so loop through this myself

#

?

#

oh yeah..

#

actually

#

someone could rename the item

#

that wouldnt work

thorn isle
#

what are you doing

pure dagger
#

need to check if player has an item with the pdc key

#

but i forgot isSimilar wont work

alpine cairn
#

Can anyone help me? I have a github access token and I used it to link Intellij with my github account but I can't access the repository that I want to access. I was able to do it before but the token expired and now I can't remember how to get it to work

young knoll
true cosmos
alpine cairn
#

I'm not sure I know what you are asking

true cosmos
#

on linux i do ```bash
gh auth

alpine cairn
#

I have Windows

true cosmos
#

from a terminal to authorize the global account

alpine cairn
#

Is that necessary?

true cosmos
#

you can authorize the global github account this way and intellij should pick it up

#

no it shouldn't be necessary

alpine cairn
#

I already have my github account added in Intellij

true cosmos
#

its not an account thing its a token your github account gives out to allow for it to do stuff

#

ill find the page hold on

alpine cairn
#

Yeah but I added the account by token

#

That's not the same thing?

true cosmos
#

idk using gh is super simple the alternatives seem confusing to me

#

its worth a shot

alpine cairn
#

gh?

true cosmos
#

their cli

alpine cairn
#

hmm

true cosmos
#

its not complicated it in a terminal you just type gh auth and it opens up a page for you to authorize it

alpine cairn
#

I suppose I can try that

true cosmos
#

sorry for not a great solution.

alpine cairn
#

No, thanks for helping

#

I should know how to do this it has just been a while

true cosmos
#

i use git solely from the terminal and i think a lot of others do too, its a good skill

#

not saying you should, should work with intellij after

#

i quite like intellij

alpine cairn
#

Is this a Linux superiority thing? Lol

true cosmos
#

idk github was designed by the guy who made linux so it checks out

alpine cairn
#

I didn't know that

thorn isle
#

settings > version control > github > add github account (plus looking button) > log in with token

true cosmos
#

o

#

my b

#

thought they were one in the same

wet breach
#

github is a front end UI to display the data of git which is backend

hard perch
true cosmos
#

interesting whats the incentive

hard perch
#

So these two people are both making huge things

hard perch
true cosmos
#

doesn't seem as popular as i anticipated

nova notch
chrome beacon
#

Firefox is pretty dependent on Google

nova notch
#

For the search engine yeah

#

But it isn't chromium based

chrome beacon
#

Mozilla gets a ton of money

#

From Google

hard perch
#

Yes, they get money to put google as their default search engine

nova notch
#

Well yeah what else are you gonna use, bing?

#

You can just change it tho

chrome beacon
#

ddg uwu

hard perch
#

I personally use Ecosia, a weird search engine based on Bing, a Microsoft shit. But I never thought to change my search engine, so I didn't change it lmao

paper viper
#

Is that the tree one?

hard perch
#

yes

paper viper
#

I just see Eco

#

And that reminds me of the ads lol

hard perch
#

It's fun that's because of google, I stop using Google for Ecosia. A long time ago, I was on the google play store and the google play store suggest me multiple web browser such as ecosia. It's fun to see that Google is ready to pay billions of dollars to web browser to make their search engine the default, and at the same time, featuring other search engines.

slender elbow
#

aren't they forced to pay the competition?

alpine cairn
#

I still cannot figure out how to get this repository to work, it just keeps saying that it’s unauthorized

#

Do I need to authenticate the token some other way? Or do something with my local repository?

drowsy helm
#

Git repo, maven repo?

#

If it’s git just use an ssh token, they’re way easier to work with

true cosmos
#

lol back to my suggestion

alpine cairn
true cosmos
#

in github settings on the web

alpine cairn
#

Thanks

hard perch
# chrome beacon Assuming it's there in 1.20.1, no idea how old that method is

I finally find how to do it :

    Collection<ClientboundPlayerInfoUpdatePacket.Entry> entries = new ArrayList<ClientboundPlayerInfoUpdatePacket.Entry>();
    for(ServerPlayer player : players) {
        ClientboundPlayerInfoUpdatePacket.Entry entry = new ClientboundPlayerInfoUpdatePacket.Entry(player.getUUID(), player.getGameProfile(), false, player.latency,
                player.gameMode.getGameModeForPlayer(), player.getDisplayName(), (RemoteChatSession.Data) Optionull.map(player.getChatSession(), RemoteChatSession::asData));
        entries.add(entry);
    }

    EnumSet<ClientboundPlayerInfoUpdatePacket.Action> enumSet = EnumSet.of(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_LISTED);
    ClientboundPlayerInfoUpdatePacket packet = new ClientboundPlayerInfoUpdatePacket(enumSet, new ArrayList<ServerPlayer>());
    try {
        Field field = packet.getClass().getDeclaredField("b"); // "b" is the obfuscated variable for "entries"
        field.setAccessible(true);
        field.set(packet, entries);
        field.setAccessible(false);
    } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
        e.printStackTrace();
    }
    return packet;
}```
#

Thanks you for the help

dreamy arrow
#

so uhmm does anyone know if I have to shade ProtocolLib dev build into my project or is there a way to put the ProtocolLib dev build jar separately and then somehow add it as a dependency into the project

paper viper
#

And also you include it using the maven/gradle declaration they have shown on the github

tribal wraith
#

Is there a way to increase the amount of items you can see in a bundle? It only shows up to ~12

#

I don't see it in BundleMeta anywhere

young knoll
#

Probably client side then

tribal wraith
#

Oh yea I see the BundleItem class shows

can I edit that?

#

If I extend it or something?

young knoll
#

Probably

#

But again it’s going to be client side

tribal wraith
#

Does that mean it doesn't actually apply, just looks like it does?

young void
#

guys do you need some kind of ancient skill to be able to contribute to a project?

#

i really like to contribute to some projects but i dont know what it takes

#

just the basic stuff. git branching and stuff is like enough to fit in a team?

#

like i can write personal plugins seamlessly but i really want to take it up another level

ivory sleet
#

I mean yeah, some people will just like if you are willing to engage and learn on the way by just showing initial interest, like start with some small contribution and then take on more as u learn more about the project, but also as u learn more tools etc

#

no need to have ancient skill ^^

young knoll
#

Just vibe code it all!

ivory sleet
maiden thicket
#

anyone know how people render the player head image texture in GUIs?

sly topaz
#

would've better if you can show a screenshot of it or something

dapper robin
#

can anyone help me make my server? its 1.8.9

paper viper
#

font character with huge image

grand flint
#

then the armor is just done server sided, get the players armor and put it into the UI

#

the rest of the menu is a font character like pulse said on the title

#

which is done with oraxen / itemsadder or the one and only great fucking nexo

drowsy helm
#

OR uses font for buttons

#

Not items

sly topaz
#

can you even use font for buttons in GUIs

#

well, I guess you can just name an item something with that font

maiden thicket
maiden thicket
grand flint
grand flint
#

its oraxen

#

the dev stole the code and uploaded to nexo but don't discuss

grand flint
#

has that ability

drowsy helm
grand flint
#

where would u put the font explain

#

in the same menu title?

drowsy helm
#

In the title and offset it

grand flint
#

why

grand flint
#

or u can simply make it a button and reuse it most the time

drowsy helm
#

It’s more flexible

grand flint
#

how

drowsy helm
#

And less glitchy

#

You cant shift click it into player invetory

grand flint
#

how is button lea glitchy

#

u get an animation

maiden thicket
grand flint
#

when u click the button

#

u dont get that when its a title

grand flint
drowsy helm
#

Dude I dont make the rules

#

Thats how they do it

grand flint
grand flint
maiden thicket
#

huhhh 😭

drowsy helm
#

You can reverse engineer the rp and look

grand flint
#

most of the ones i seen uses the items

grand flint
drowsy helm
#

Yes

grand flint
#

ye they use items??

#

xheck the paper

#

it has custom model data for all the items

#

not that i would have the rp and know

grand flint
#

ion give a shit about that

#

origin realms puts it on the item

#

and i prefer it bc of the animation

drowsy helm
#

False

grand flint
#

what false

#

i cant reproduce the animation when its in the title

#

also u need to offset it differently for every menu

#

its not reliable for big packs

#

with item i just define position

#

with title i need to setup offset for every single gui differently

drowsy helm
#

Yep

grand flint
#

also have u used premiumvanish

#

its nice asf

sly topaz
#

I've seen people do it before, but I don't understand why you wouldn't just use the item either

drowsy helm
#

Like I said, when you shift click it doesnt glitch and items dont work well for multi slot buttons

#

Can also animate buttons without buggyness

sly topaz
#

I'll trust you on that, all of the resource pack stuff is just a blur to me, I never actually sat down to actually learn whatever magic people do with them

#

they weren't as popular pre custom fonts era

grand flint
grand flint
#

neither does it really matter to me

#

its just a client side limitatjons not really a problem in my opinion

short pilot
#

Hello good sirs! If I wanted to get the job site block and location of a villager, how would I do that?

I assume I can just grab the villager profession for the job site block, but what about the location?

#

Could not find a field for that on the villager

torn shuttle
#

good morning gamers, can anyone remind me what the max file size is for a plugin to be uploaded on spigot

dreamy arrow
#

apologies

#

i said im using dev builds

#

u have to manually download the jar for that

sly topaz
dreamy arrow
#

ye but then how do u add the dev build jar

#

it isnt listed as a repo in maven

sly topaz
#

if it is a version that isn't in their maven repo, then you can just add it from your local repository

#

what version did you build?

paper viper
paper viper
#

or you could install it into your local gradle, but personally i just do the former

sly topaz
#

file dependencies 🤮

paper viper
# sly topaz file dependencies 🤮

for something like a development build that's constantly changing, imo its easier to just do that then run a command everytime because you have to drag a new file in

#

but for things that don't really change

#

i agree

dreamy arrow
sly topaz
#

but if you've set your maven publication properly, then it should be easier to just run mvn install/gradle publish and then just have it automatically be updated in your dependent plugin

sly topaz
dreamy arrow
#

well 1.21.5 support

sly topaz
#

yeah but did the API change

#

because if it didn't, then there's no need to depend on that specific version

#

you do have to run that version in your server, however if the API is still the same then you can just depend on whatever version is available in their maven repository

dreamy arrow
sly topaz
#

is it anything you're going to use though

dreamy arrow
#

i might or i might not.

paper viper
sly topaz
#

yeah, looks like just some fixes

#

if there was any significant API change, they'd have released a minor version at the very least, given they didn't then there mustn't have been any yet

dreamy arrow
#

welp then if i do need to same thing some other plugin in the future wat am i supposed to do

#

i need to know this for future purposes even if i dont need to use the dev build

sly topaz
#

if you just have a jar file, then you can do what Pulse suggested

dreamy arrow
#

add it to the buildPath

paper viper
#

You can either install it to local or include it in deps

dreamy arrow
#

it doesn't build tho after that. it just says syntax missing

paper viper
#

Show build script

dreamy arrow
wet breach
#

yes?

paper viper
#

What do you mean

#

I thought this was just for development

sly topaz
#

you mean like, in a CI server or something?

wet breach
#

don't worry I thought it was development too 😛

dreamy arrow
sly topaz
#

you don't seem to be depending on protocollib at all

dreamy arrow
paper viper
#

You would just download the protocollib plugin into the folder

sly topaz
wet breach
sly topaz
#

once you've built your plugin, you'd just take the built jar and pass it to the host

paper viper
#

And then you drag protocollib into the plugins jar too

dreamy arrow
wet breach
#

that isn't what I was asking

dreamy arrow
#

huh

wet breach
#

you are shading the dependency into the jar when it isn't necessary since spigot server provides it

dreamy arrow
#

oh. wat version does it provide

#

should i put a provided scope

paper viper
#

Yes

dreamy arrow
#

done

wet breach
#

unless you have a specific need of a version of gson it just isn't necessary to shade it in

paper viper
#

In my experience I don't think I got anything breaking with Gson different versions but maybe some things are different from version mismatch

wet breach
#

thats all

sly topaz
#

2.11.0 apparently

paper viper
#

And then also you need to depend on plib

#

If you want to use it in your code

dreamy arrow
dreamy arrow
#

and added to the buildpath

paper viper
sly topaz
#

I mean, you don't have protocollib listed in your dependencies block so if you have anything that uses ProtocolLib in your code it isn't gonna work

dreamy arrow
#

5.4.0 doesnt work

#

am i supposed to put a system scope

#

and specify a path

wet breach
#

probably could

paper viper
#

You can either do that or install it to local like what Javier suggested

wet breach
#

however though if its in the local maven repo

#

you don't need to specify anything

#

maven defaults to local repo first before searching it in the ether

sly topaz
dreamy arrow
sly topaz
#

and I told you that the dev build doesn't matter

#

you need to depend on ProtocolLib's API, not its implementation

dreamy arrow
#

ye but i cant specify it in the pom.xml unless i put system scope with a path

sly topaz
#

what

#

you don't need to depend on the jar file

dreamy arrow
#

then how is it gonna compile. it doesnt compile

sly topaz
#

you need to depend on the protocollib version provided by dmulloy's maven repo, which is 5.3.0

paper viper
#
  <dependency>
    <groupId>com.comphenix.protocol</groupId>
    <artifactId>ProtocolLib</artifactId>
    <version>5.3.0</version>
    <scope>provided</scope>
  </dependency>
#

Make sure you have the repo too

#
  <repository>
    <id>dmulloy2-repo</id>
    <url>https://repo.dmulloy2.net/repository/public/</url>
  </repository>
dreamy arrow
paper viper
#

And that's fine

#

You can use an older version of plib

#

You are only using the API

#

The API hasn't had anything breaking in 1.21.5 version

dreamy arrow
#

thats not why im here for man. i need to know this. if i have to do this in the future i will be screwed

paper viper
#

You don't have to be forced to use the developmental build if you are developing 1.21.5

dreamy arrow
#

better to know now than never

paper viper
#

Personally, I wouldn't be concerned at that happening. If it works and everything is fine, then it will work

dreamy arrow
#

there are no main concern. i might have to work with something that is not even listed as a public repo anywhere

#

there is somehow a 5.4.0

paper viper
#

Yes because that is a developmental build

sly topaz
#

yeah but that isn't published on the repository, so you don't have to worry about it

paper viper
#

Mhm

dreamy arrow
#

alr man u dont get wat im saying. i need to learn just for the sake of not knowing how to it

#

i wont be able to sleep if i dont know how to use that dev build

#

without shading it

#

into the plugin

sly topaz
#

there are two ways to use a dependency that isn't listed in a public repository

#

one is compiling the dependency yourself and deploying it to your local maven repository

#

if the dependency is using maven, that's as simple as compiling the dependency with mvn install, and then it'll be available as a dependency with the specified group and artifact IDs, as well as version specified in its pom.xml

paper viper
dreamy arrow
sly topaz
#

if the dependency is using gradle, and if you're lucky they've already setup maven publication for you, so you'd just have to call ./gradlew publishToMavenLocal

#

and then it'll be available in your local maven repository the same way as before

#

either that, or you can just install the jar file directly into your local maven repository by using

mvn install:install-file \
   -Dfile=<path-to-file> \
   -DgroupId=<group-id> \
   -DartifactId=<artifact-id> \
   -Dversion=<version> \
   -Dpackaging=<packaging> \
   -DgeneratePom=true```
rotund ravine
sly topaz
#

in this case for example, it'd be something like:

mvn install:install-file -Dfile=ProtocolLib-747.jar -DgroupId=com.comphenix.protocol -DartifactId=ProtocolLib -Dversion=5.4.0-DEV -Dpackaging=jar -DgeneratePom=true
sly topaz
rotund ravine
buoyant viper
#

chat does this look redundant

#

(ie. could i just do setItemInMainHand(helmetItem) instead of everything else)

paper viper
#

Probably

sullen marlin
#

Yeah probably

pseudo hazel
#

for sure, even if the helmet item is null, youd just set the mainhand item to null, which you are already doing anyways

buoyant viper
#

yeah

#

i mustve overlooked it when i first wrote it

pseudo hazel
#

just blame your past self, we all have moments

buoyant viper
random compass
#

@torn shuttle could you explain a little how to write code in plugins that effects the custom minecraft model?

mortal vortex
#

ur using Vencord's FakeNitro Plugin for emojis, which would suggest you dont have nitro

#

but how tf do u still got the animated banner

buoyant viper
#

discord gave out free nitro apparently

mortal vortex
#

ohh

#

why tf r ur emojis sent using fakenitro

#

thought it autodisabled

#

alg

buoyant viper
mortal vortex
#

OHHH

#

makey sensey

#

very smarty

random compass
#

hi there. im using freeminecraftmodels to make a custom model, and im trying to code a minigame around a model. i want the player to die when close to custom model, and i have the following code but it doesnt work

#

ive also tried to make the model invincible but that doesnt work

alpine solar
random compass
#

trying to get the correct syntax

alpine solar
#

the same with modeled

random compass
#

sorry, have taken that out

alpine solar
#

also use ?paste

#

?paste

undone axleBOT
random compass
#

thats my event listeners

random compass
#

i fixed the problem if anyone was going to help

trail gate
#

Any minecraft server developer?dm me paid also

random compass
#

is anyone able to help me with nms? im trying to make a custom model pathfind to a player, and i have no clue where to start

warm mica
#

Entity#target

smoky anchor
undone axleBOT
buoyant viper
#

?jd-s

undone axleBOT
torn shuttle
buoyant viper
#

there is EntityTargetEvent tho which is interesting

buoyant viper
#

oh its Mob

stuck oar
#

i know MHF heads exist but arent updated for new mobs, how can i get warden heads etc?

smoky anchor
stuck oar
#

is that efficient?

#

isnt there a textures thing

smoky anchor
#

what kind of question is that

stuck oar
#

well its just that doesnt seem very efficient

smoky anchor
#

there is no other way then uploading a skin to the MC servers if you want to use custom head

#

That is literally how MHF heads work too

#

except Marc created an account for each mob.

stuck oar
#

yeah but theres a minecraft-heads website

smoky anchor
#

that works in the way I said

stuck oar
#

which gives a texture url

smoky anchor
#

Yes, you get the texture url by uploading a skin to an account

#

the fancy website can do it for you if you just give it a skin

stuck oar
#

alright thanks

smoky anchor
#

I don't remember the website tho

blazing ocean
#

mineskin

inner mulch
#

Is it smarter to use 1 server and have 5 bedwars instances or have 5 weak Servers 1 bedwars instance each ?

blazing ocean
#

depends

#
  • are your matches very heavy on the server?
  • are your servers shit?
  • do you wanna have a big hole in your wallet?
#

usually you do a couple matches per server though

inner mulch
blazing ocean
#

well, how many matches are you trying to run concurrently?

#

(that was also one of the questions sorry)

inner mulch
#

I dont know i was wondering because I'd have to Design the Code around thqt

blazing ocean
#

horizontal scaling is something you should look into once you need it with minecraft

inner mulch
#

So 1 machine running 5 Servers is worse than it just running 1 cool one ?

blazing ocean
#

not worse per se

inner mulch
#

Instead of multiple instances per server

blazing ocean
#

vertical scaling would be assigning more resources to a server here

inner mulch
#

Yeah so having 5 weak Servers with just 1 instance is better?

blazing ocean
#

again, it really depends on some things

inner mulch
#

Do you know what hypixel does?

blazing ocean
#

multiple matches per server

#

but also please never compare yourself with hypixel

inner mulch
#

Yeah but they probably know whats best cuz they are the largedt

upper hazel
#

who was use entity component system architecture even once?

smoky anchor
#

blazing ocean
#

🤚

upper hazel
#
  1. does the system interact with entity or only with components ?
  2. Is it a good idea to combine ecs with OOP ?
  3. are there other kinds of classes in the architecture besides those listed in ecs ? For example I am using a library with ecs in Java where the entity has no id but I need to store and hash the entity objects somehow.
#

Is it even worth it to strictly adhere to this architecture in general or just take the basic idea

#

(i create mini game)

smoky anchor
#

Which library are you using ?
I've had experience with two
I'm no expert but I'll still try

  1. with components
  2. I wouldn't really do that
  3. well you can always give them the ID yourself, I personally just give entities a UUID object
upper hazel
#

this lib what i use

#

In this case I either need to do a wrapper, or consider everything that is not a component or entity as default system classes to store the entity with their id if needed

smoky anchor
#

Don't :D
I've tried using dominion for so long and it has one fatal flaw https://github.com/dominion-dev/dominion-ecs-java/issues/195
I've found a way to reproduce this on my machine with 5 components. Simply adding them in a different order crashes the thing.
These entities do have an ID, you just have to cast to IntEntity to get it.
Anyways, I found Ashley better

upper hazel
#

oh nice

#

That's what I missed when I read about archetypes and memory.

grand flint
#

its not possible for a new server to use horizontal scaling with no players

#

just buy a machine and upgrade as u need to

#

u learn from experience

pure dagger
#

is setting itemstack's amount to negative number safe?

blazing ocean
#

....why though

pure dagger
#

for making code shorter

#

not needing to do Math.max(0, number)

young knoll
#

Setting it to 0 will remove the stack

#

Idk if negative behaves the same

lilac lynx
#

making a youtuber only server but need a plugin, when you die you get banned and you drop a head and if u place the head a gui pops up and if u click on any dead player u can revive them, if you are willing to help for free please dm me

pure dagger
pure dagger
lilac lynx
upper hazel
#

if a component is a data object without logic, then any dependency of one component on another is already a behavior, and therefore not a component, right? (ecs)

Should I treat such an architecture strictly?

pure dagger
#

uhm what u talking about 😨

upper hazel
pure dagger
#

uhm okay good luck

upper hazel
#

@smoky anchor

smoky anchor
#

Sorry, I have no idea
I can't speak design

hard socket
smoky anchor
#

Either use a different method of teleporting player, one that does not dismount passengers (I don't believe one exists in the API)
Remount the display entity after a player teleports.

hard socket
#

so use a teleport listener

smoky anchor
#

mhmm

tame wolf
#

Hello! I've noticed that a bossbar my plugin adds disappears once the player relogs, has anyone else encountered this issue and knows how to fix it? 🤞

young void
tame wolf
#

It needs to be re-applied each time they log?

young void
#

but its usually the other way around. the bossbar dosent disappear🤣

young void
tame wolf
#

I'll try it! Thanks

young void
tame wolf
#

Nope, not an entire plugin, just a thing for my plugin to show a per-player value

#

(Its basically just energy that each player has in my plugin)

blazing ocean
#

what would "custom bossbar plugin" mean

#

like, /bossbar exists

tame wolf
#

I think they mean based on certain values

blazing ocean
grand flint
#

TAB does bossbars

pliant topaz
grand flint
#

tab does that too

tame wolf
#

🤷 what does it matters anyway, let people make whatever they want!

pliant topaz
#

whats tab?

blazing ocean
pliant topaz
#

its good for learning i suppose

grand flint
#

just register a placeholder if u need and animate it with tab 😎

pliant topaz
#

never heard of it, sounds like a one for all solution to me

grand flint
#

LMAO

#

u never heard of TAB?

pliant topaz
#

no, i write basically everything myself

grand flint
grand flint
#

i was like that like i wont be rude

#

but its not worth it and u learn it too late

pliant topaz
#

if i need something i either do it myself or if im lazy i download a plugin

grand flint
#

these plugins are made for production

#

not for a 2 player smp

#

its stupid if u make everything by ur self just to make a small minigame server or an smp

blazing ocean
#

there isn't much you can get wrong with bossbars

grand flint
#

u should always make ur main plugin by ur self ofc

blazing ocean
#

plus you learn how the thing you want works

pliant topaz
#

its just my logic is my logic, i dont want to add a plugin with 300+ featured if I really just need like 2

#

thar just wouldnt make any sense

grand flint
#

yeah thats CMI not TAB

blazing ocean
#

there's places where it's really unnecessary but for tiny stuff like this

grand flint
#

CMI litearlly adds worldedit for no reason

#

TAB is just for your HUD, actionbar, player title, TAB, scoreboard, bossbar

#

CMI adds all that, plus essentialsx, it adds worldguard, lobby plugins, worldedit

#

its stupid asf i would never use a plugin like that

pliant topaz
#

point is i dont know it cause i never needed it personally

blazing ocean
#

if I need to use boss bars in my plugin, I won't add a dependency on TAB?

#

that's just unnecessary

grand flint
#

?

blazing ocean
grand flint
#

i said if u got a value u want to show

#

u can just make it a placeholder

#

and show it anywhere using TAB

#

like actionbar, bossbar, scoreboard

#

instead of coding it into the bossbar

#

then being unable to use it anywhere else

#

without coding it

blazing ocean
grand flint
#

ok point to it

pliant topaz
grand flint
#

well im just saying its not worth it

#

if ur actually tryna host a server

#

and get players on it

#

the only way thast ever reliable is if u already got the player base and the profit for it

pliant topaz
#

depends on your usecase

grand flint
#

otherwise its just a fun side project

pliant topaz
#

Point is I only need a few of all these features such all in one solutions offer so It wouldnt make sense for me to get the plugin itself

grand flint
#

im just saying its a free plugin that has multi uses for all ur HUD

#

imo its super useful

#

its always updated, bug free to my testing

pliant topaz
#

But for stuff like permissions I use luckperms because why should I code it myself if its alr everything I need without unneccassary stuff i dont need?

grand flint
#

well like no major bugs and basically none minor ones

grand flint
#

for me bossbar would be the same thing

#

i can just register a placeholder i can use anywhere

#

so why should i code the bossbar

blazing ocean
#

there's a lot of api for it

pliant topaz
#

jep

near furnace
#

Here's my setPlayerDataTag method using nbtapi

@SuppressWarnings("unchecked")
    public static void setPlayerDataTag(OfflinePlayer player, String tag, Object value) {
        NBTFile nbt = loadPlayerDataFile(player);
        if (nbt == null) return;

        if (value instanceof String str) {
            nbt.setString(tag, str);
        } else if (value instanceof Integer i) {
            nbt.setInteger(tag, i);
        } else if (value instanceof Double d) {
            nbt.setDouble(tag, d);
        } else if (value instanceof Long l) {
            nbt.setLong(tag, l);
        } else if (value instanceof List<?> list && !list.isEmpty()) {
            if (list.get(0) instanceof Double) {
                List<Double> doubleList = (List<Double>) list;
                NBTList<Double> nbtList = nbt.getDoubleList(tag);
                nbtList.clear();
                nbtList.addAll(doubleList);
            }
        } else if (value instanceof NBTCompoundList clist && (tag.equals("Inventory") || tag.equals("EnderItems"))) {
            NBTCompoundList nbtList = nbt.getCompoundList(tag);
            nbtList.clear();
            nbtList.addAll(clist);
        }

        try {
            nbt.save();
        } catch (IOException e) {
            plugin.getLogger().severe("Failed to save player data for player: " + player.getName());
            plugin.getLogger().warning("Error message: " + e.getMessage());
            plugin.getLogger().warning("Stacktrace:");
            for (StackTraceElement element : e.getStackTrace()) {
                plugin.getLogger().warning(element.toString());
            }
        }
    }
#

Here's the method to set the ender chest items for the offline player:

public static void setPlayerEnderChestItems(OfflinePlayer target, ItemStack[] items) {
        NBTFile nbt = loadPlayerDataFile(target);
        if (nbt == null) return;

        NBTCompoundList newEnderItems = new NBTContainer().getCompoundList("dummy");

        for (int i = 0; i < items.length; i++) {
            ItemStack item = items[i];
            if (item != null && !item.getType().isAir()) {
                NBTCompound nbtItem = NBTItem.convertItemtoNBT(item);
                nbtItem.setByte("Slot", (byte) i);
                newEnderItems.addCompound(nbtItem);
            }
        }

        setPlayerDataTag(target, "EnderItems", newEnderItems);
    }```
#

And here's me calling that method and passing the items:

@EventHandler
        public void onInventoryClick(InventoryClickEvent event) {
            Inventory inv = event.getInventory();
            if (!plugin.enderChestViewMap.containsKey(inv)) return;

            OfflinePlayer target = plugin.enderChestViewMap.get(inv);

            if (target.isOnline()) {
                Player onlineTarget = target.getPlayer();
                if (onlineTarget != null) {
                    Bukkit.getScheduler().runTaskLater(plugin, () -> onlineTarget.getEnderChest().setContents(inv.getContents()), 1L);
                }
            } else {
                // Save changes immediately for offline players
                PlayerData.setPlayerEnderChestItems(target, inv.getContents());
            }
        }

        @EventHandler
        public void onInventoryDrag(InventoryDragEvent event) {
            Inventory inv = event.getInventory();
            if (!plugin.enderChestViewMap.containsKey(inv)) return;

            OfflinePlayer target = plugin.enderChestViewMap.get(inv);

            if (target.isOnline()) {
                Player onlineTarget = target.getPlayer();
                if (onlineTarget != null) {
                    Bukkit.getScheduler().runTaskLater(plugin, () -> onlineTarget.getEnderChest().setContents(inv.getContents()), 1L);
                }
            } else {
                // Save changes immediately for offline players
                PlayerData.setPlayerEnderChestItems(target, inv.getContents());
            }
        }```
#

Couldn't figure out why it wasn't working, went to grok. Pretty sure he messed it up even more

#

Now I don't have any idea what's going on

#

I want to modify the offline player's enderchest using /viewechest <offlineTarget>

#

The gui gets created successfully, but when I move things around. It does not get registered onto the real ender chest, and when I re-create the gui it goes back to the way it was

echo basalt
#

might be due to the compound list being called "dummy"

near furnace
#

im gonna cry 😢

echo basalt
#

just a thought

near furnace
blazing ocean
#

using grok is crazy

near furnace
#

yea chatgpt messed it up even more

#

my only hope is you guys

#

so:

#
  • GUI gets created, and the offlineTarget's ender chest items are added using getPlayerEnderChestItems
blazing ocean
#

have you considered not using AI and instead using your brain

#

really helps sometimes

near furnace
#
  • onInventoryClick(), it sets the contents using the method setPlayerEnderChestItems
#

setPlayerEnderChestItems takes the target's inventory and itemStack. Creates a NBTFile or whatever and passes it through setPlayerDataTag(target. "EnderItems", newEnderItems);

#

and idk what happens afterwards

young void
near furnace
#

man my brain is not braining

#

helppp

young void
#

firstly what i would do is making a class for each event. that way i would be more focused

#

im not a clean coder at all but im pretty sure thats the SOLID principle

near furnace
#

make a seperate class for the Events? alright

young void
#

and thats it usually if you truly understand whats going on in your code you would not encounter problems

#

well, mostly

near furnace
#

you got any docs for the nbtapi?

#

maybe that can help

young void
near furnace
#

if anyone wanna help, dm me :)

echo basalt
#

sounds like you're asking for a fun time

young void
grand flint
near furnace
#

👨‍❤️‍💋‍👨

pure dagger
#

?paste

undone axleBOT
pure dagger
#

what the hell is that error

chrome beacon
#

been around for a bit now

pure dagger
#

oh so not my fault

#

?

chrome beacon
#

no

#

That's just a vanilla bug

slender elbow
#

well, it might be your fault, but it isn't your code that is causing it

#

butterfly effect n all

#

:Clueless:

pure dagger
#

how do i know

nova notch
young void
#

cursor ai or any other "coder" ai seemingly have no idea what SOLID principle is

#

they all try to fit everything in one class and that pisses me off. that goddamn system prompt cant have this simple prompt in it?

thorn isle
#

it's the training data

young void
thorn isle
#

specifically, it's trained on individual classes

#

converting a multiple class structure into something sensible isn't trivial, but a single class is generally a single file that can be fed in serially

#
  • the training set includes 100,000 cases of stackoverflow and other interactive mediums where someone asks for a solution and is given a code snippet or a single class in response
young void
#

thats also something

paper viper
#

I use copilot with Claude

#

Never tried any other ones

#

So far it’s alright in terms of design

young void
#

but i think it can be done so that it also keeps these into account. like another ai agent refining the code or something

young void
thorn isle
#

personally i think the training and deployment of ai in programming spaces is being done backwards

#

e.g. first define the contract and only then the implementation; and only keep the contract in the context set later on

#

currently the approach is "make it bigger" which is why e.g. gpt4.1 has like 1 million or something context length, so you can fit the entire codebase along with all of the boilerplate and impl details in it

slender elbow
#

i prefer using my brain

young knoll
#

What’s a brain

warm mica
#

I think he means from pvz

#

Hes a zombie

true cosmos
#

codex worked out for me but its expensive

#

It cost me about $3 to start a java backend web deployment in less than a day. Too pricey for me

#

!?whereami

#

?whereami

young knoll
#

It’s literally not

#

They hard forked

young void
#

its a fork. its spigot

chrome beacon
#

a hard fork

young void
#

shocking

thorn isle
#

by this logic you are a mushroom

young knoll
#

🍄

thorn isle
#

the animal kingdom hard forked from the shrooms quite a while ago but there is a common ancestor

young void
chrome beacon
#

You're a cannibal 😱

chilly inlet
#

does anyone know anything about the coralprison plugin?

chrome beacon
#

?ask

undone axleBOT
#

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

tranquil stirrup
#

I'm looking for a developer to create my Minecraft server. I can pay for the dev.

undone axleBOT
random compass
#

?pastes

#

?paste

undone axleBOT
random compass
#

can anyone help me with this java class?

#

ive been using chat gpt and i dont think its very good at this

#

im trying to make a custom model pathfind to a player

drowsy helm
#

You need to override the nms Pig

#

not bukkit

random compass
drowsy helm
#

Either should work

random compass
drowsy helm
#

just use spigot instead of spigot-api

random compass
drowsy helm
#

this is the spigot discord

#

they have resource online on how to setup nms

random compass
#

thx

alpine urchin
alpine urchin
#

I'VE WAITED MY WHOLE LIFE TO DO THAT

random compass
#

Yeah mb

#

Spigot discord is usually more helpful than paper discord tho

smoky anchor
#

Easy, start using spigot ;)

random compass
#

I might have to for this project

#

It’s so annoying tho, I’ve made it all except for making the entity pathfind to the player and that part is making me crash out

smoky anchor
#

pathfinding usually requires you to do nms

drowsy token
#

Is there any NMS dependency without reflection that can use directly? It is really hard to build and keep update a nms lib manually.

#

And should I write code again for "minor versions" like 1.20.4-R1 and 1.20.4-R2.And how can I choose "minor versions" in buildtools provide by spigot?

pseudo hazel
#

sounds like an old version

#

if you can help it you should not write code for old versions

drowsy token
#

also I hope that my plugin can support as many versions as possible

smoky anchor
#

But like why
This is basically: few latest versions and 1.8 (for some reason still)

pseudo hazel
#

you shouldnt be bothered to write for minor version on older versions especially

pliant topaz
#

but for custom models i dont think thats actually going to work

drowsy token
somber scarab
#

is there a way to alter the player's bow draw speed?

ancient plank
smoky anchor
#

Cool, I have never worked with paper
And this is the Spigot server

mortal vortex
blazing ocean
#

what

fierce cave
#

im getting this:
Unresolved dependency: 'org.spigotmc:spigot-api:jar:1.21.5'

with this code

     <groupId>org.spigotmc</groupId>
      <artifactId>spigot-api</artifactId>
      <version>1.21.5-R0.1-SNAPSHOT</version>
      <scope>provided</scope>
</dependency>

even though i have runned the buildtools locally

#

its a maven pom.xml file

blazing ocean
#

it's 1.21.5-R0.1-SNAPSHOT

fierce cave
#

oh ok

fierce cave
blazing ocean
#

it's always just -R0.1-SNAPSHOT

fierce cave
#

ohh like with any version at last you have to add that

blazing ocean
#

yeah

fierce cave
#

okay thx

sick pagoda
#

Is it possible to make item display entities 'glide'? I'm trying to make them go from location A to location B over the course of a couple of seconds.
I've tried giving them translation transformations but that moved them immediately, I also tried setting their velocity but that didn't move them at all. Any info / help would be appreciated 👍

dry hazel
#

you can interpolate the transformation

#

#setInterpolationDuration

sick pagoda
#

Found it, thanks! I was trying to do it from the wrong variable

fierce cave
#

im getting this error
package com.mojang.authlib does not exist
with this :

     <groupId>org.spigotmc</groupId>
      <artifactId>spigot-api</artifactId>
      <version>1.21.5-R0.1-SNAPSHOT</version>
      <scope>provided</scope>
</dependency>
fierce cave
blazing ocean
#

?nms

blazing ocean
#

then don't add the repo twice

grim hound
#

is shadowJar not compatible with java21?

blazing ocean
#

update to gradleup shadow

grim hound
blazing ocean
grim hound
#

makes sense

#

was using this dud so far

#

why are there different ones?

blazing ocean
#

because john shadow has abandoned it

#

goooler than forked it and continued working on it, updated to java 21

#

then it got moved to gradleup

grim hound
#

ah nice

#

I think I also saw a third shadowJar gradle plugin except for these two

blazing ocean
#

I just mentioned three ones though?

#

guessing you saw goooler's then

grim hound
#

I'm guessing

#

the newest version has some changes

blazing ocean
#

set a duplicate strategy

grim hound
slender elbow
#

zip format :)

grim hound
#

they do not differ in name

blazing ocean
#

correct

grim hound
blazing ocean
#

the zip format is very fucked

slender elbow
#

zip format :despair:

grim hound
#

but its a jar

slender elbow
#

jar is zip

grim hound
#

I guess uh

slender elbow
#

with a different name

grim hound
#

its same

blazing ocean
#

jars are just rebranded zips

slender elbow
#

by specification, a jar file is just a zip file

grim hound
#

never knew that

grim hound
blazing ocean
#

yup

grim hound
blazing ocean
#

do you think it would be useful if you shared your buildscript or logs or something

grim hound
#

it started working again, I am confused

blazing ocean
#

it's IJs kts indexing not working properly for buildscripts sometimes

grim hound
# grim hound :3

opened a different project and came back, and shadowjar no longer throws

grim hound
#

since they don't seem particularly stable