#help-development

1 messages · Page 1052 of 1

drowsy helm
#

No point asking in dms. More eyes to help here

pseudo hazel
#

if its too much text here its too much text in dms too

#

idk what ur on about

lean ermine
#
public void updateBossBarForPlayer(Player player) {
        BossBar bossBar = playerBossBars.get(player.getUniqueId());
        String compass = generateString(player.getLocation(), 32);
        bossBar.setTitle(compass);
    }

    public String generateString(Location location, int displayLength) {
        String baseDirections = "N-E-S-W-";
        int separatorsCount = displayLength - baseDirections.length();
        StringBuilder baseCompass = new StringBuilder();

        for (char direction : baseDirections.toCharArray()) {
            if (direction != '-') {
                baseCompass.append(direction);
                for (int i = 0; i < separatorsCount; i++) {
                    baseCompass.append('-');
                }
            }
        }

        for (Map.Entry<Waypoint, String> entry : waypoints.entrySet()) {
            Waypoint waypoint = entry.getKey();
            String indicator = entry.getValue();
            int waypointIndex = calculateWaypointIndex(location, waypoint.getLocation(), baseCompass.length());
            baseCompass.setCharAt(waypointIndex, indicator.charAt(0)); 
        }

        double yaw = location.getYaw();
        int directionIndex = (int) ((yaw / 360.0) * baseCompass.length());
        int halfDisplayLength = displayLength / 2;

        int start = (directionIndex - halfDisplayLength + baseCompass.length()) % baseCompass.length();
        int end = (start + displayLength) % baseCompass.length();

        if (start < end) {
            return baseCompass.substring(start, end);
        } else {
            return baseCompass.substring(start) + baseCompass.substring(0, end);
        }
    }

    private int calculateWaypointIndex(Location playerLocation, Location waypointLocation, int compassLength) {
        double deltaX = waypointLocation.getX() - playerLocation.getX();
        double deltaZ = waypointLocation.getZ() - playerLocation.getZ();
        double angle = Math.toDegrees(Math.atan2(deltaZ, deltaX)) - playerLocation.getYaw();
        angle = (angle + 360) % 360;

        return (int) ((angle / 360.0) * compassLength);
    }

im trying to make a compass system like skyrims on a bossbar, however the waypoint dont display on the bar properly

shadow night
#

?paste

undone axleBOT
lean ermine
#

not entirely my code lul, but on its own it works fine, its just when adding waypoints that it breaks

obtuse hedge
#

it infact works just fine

drowsy helm
#

Do they display at all?

lean ermine
#

they display but they dont move on the bar properly, so if you turn 180 degrees and teleport to the waypoint and go behind it, it doesnt appear on the bossbar as it should

#

or if you just move around the waypoint it desyncs

drowsy helm
#

You’re updating it regularly right?

#

Sec I’ll grab my pooter

lean ermine
#

it updates on playermove

drowsy helm
#

shouldn't it be taking displayLength into account

#

becuase its mapping it on a point from 0-compassLength right

#

if you could get a vid of it would help visualise it a lot better

lean ermine
#

i donthave recording software atm im on a shoddy lil laptop 😭

lean ermine
drowsy helm
#

yeah if angle is 359 its gonna do 359 * compassLength
then you try to set baseCompass char to that

#

it'll be way out of index

proper cosmos
#

can I just do Config.set(String, HashMap);?

lean ermine
river oracle
drowsy helm
#

whats the length of baseCompass?

#

and is index 0 north?

proper cosmos
lean ermine
lean ermine
drowsy helm
#

So 11 per hemisphere

#

You have to map 360 > 44

proper cosmos
drowsy helm
#

So x * (360/44)

proper cosmos
river oracle
#

The type isn't guaranteed to be HashMap

#

Moreso a set map maps to a configuration section though retrieving as you are should work

proper cosmos
#

Yep, I think I will deserialize it myself

river oracle
#

I think bukkit uses LinkedHashMap to maintain order

#

But casting to Map is just objectively safer

proper cosmos
#

Okey

shadow night
#

Cast it to Map<String, Object> and it's safe

proper cosmos
#

It cannot be casted to map either
class org.bukkit.configuration.MemorySection cannot be cast to class java.util.Map

remote swallow
#

getValues

#

or getMap

shadow night
proper cosmos
#

It's still useless

#

as I cannot create HashMap<String, String> from it

#

I will just deserialize it myself

remote swallow
#

you get a Map

#

which can be a hashmap

proper cosmos
#

yeah ik

shadow night
#

You get a Map<String, Object>

#

That's all you want

proper cosmos
#
new HashMap<String, String>((Map<String, Object>) savedataConfig.getConfigurationSection("data").getValues(false));```
remote swallow
#

why are you casing it to a map still

shadow night
#

This looks quite unsafe

remote swallow
#

and you wont be able to cast all values to a string

shadow night
#

Why tf do you even need a hashmap

#

It makes no difference, it's just a map

#

It's most likely going to be some type of a hashmap anyways and it literally does not make a different

eternal oxide
#

if you are putting and getting a Map from teh config you have to be careful how/when you fetch it

#

If you just added it and have not saved/reloaded the config, it will still be a Map. If you have done a load after save it will not be a Map but a MemorySection

#
    /**
     * If loading from file the Maps in the data
     * will be stored as a MemorySection not Maps.
     * 
     * @param entry    MemorySection or Map to check.
     * @return        Map containing the serialised data.
     */
    @SuppressWarnings("unchecked")
    protected Map<String, Object> castToMap(Object entry) {

        if (entry instanceof MemorySection) {
            return ((MemorySection) entry).getValues(true);
        } else {
            return (Map<String, Object>) entry;
        }
    }```
proper cosmos
#

so I should just drop HashMap and use Map instead?

shadow night
#

Yes, you map variables should always be of type Map

hybrid spoke
sterile flicker
#

https://pastes.dev/YjIXhOxWyG I am creating a npc plugin for corpses 1.16.5, this code is executed after entitydeathevent, but the NPCs do not appear, although they are visible in the tab. Can someone help me?

drowsy helm
#

Wheres the add entity packet

#

Theres only equpment and metadata

swift dew
#

when a player leaves the server if its saved in some class it becomes null right?

sterile flicker
drowsy helm
#

Thats how memory leaks happen

swift dew
#

oh ok tu

#

ty

sterile flicker
mortal hare
#

is there any way to protect database credentials when pushing into github private repo server configuration files?

#

i can probs use .gitignore but usually database credentials are inputted using configuration files where more than database credentials exist

drowsy helm
#

Use another file like a dotenv

#

Or just a second config file

slender elbow
#

just leave the config empty in the project?

mortal hare
mortal hare
#

i could probs craft some bash script with sed awk tools to read config and replace placeholders

#

smth like this

# startup.sh
# Fetch IP address from an environment variable
DB_HOST=$DB_HOST_IP

# Update the plugin configuration file
CONFIG_FILE="path/to/plugin/config.yml"
sed -i "s/DB_HOST_PLACEHOLDER/$DB_HOST/" $CONFIG_FILE

# Start the Minecraft server
java -jar spigot.jar
slender elbow
#

:harold:

mortal hare
#

whats wrong

sterile flicker
#

Why PacketPlayInUseEntity doesn't work when I attack a sleeping entity?

chrome beacon
#

Because you're not right clicking?

#

Attacking would trigger the attack packet

#

whatever the name of that is

sterile flicker
chrome beacon
#

I'd assume so

sterile flicker
#
public void inject() throws NoSuchFieldException, IllegalAccessException {
           CraftPlayer nmsPlayer = (CraftPlayer) player;

           ChannelDuplexHandler channelDuplexHandler = new ChannelDuplexHandler() {
               @Override
               public void channelRead(ChannelHandlerContext channelHandlerContext, Object packet) throws Exception {
                   if (packet instanceof PacketPlayInUseEntity) {
                       PacketPlayInUseEntity usePacket = (PacketPlayInUseEntity) packet;
                       System.out.println("fd");
                       if (usePacket.b().equals(PacketPlayInUseEntity.EnumEntityUseAction.ATTACK)) {
                           int entityID = (int) getValue(usePacket, "a");
                           if (tracker.getNpc(entityID) != null) {
                               System.out.println("click");
                               new BukkitRunnable() {
                                   @Override
                                   public void run() {
                                       Bukkit.getPluginManager().callEvent(new RightClickCorpse(player, tracker.getNpc(entityID).getHandle()));
                                   }
                               }.runTask(Corpses.getPlugin(Corpses.class));
                           }
                       }
                   }
                   super.channelRead(channelHandlerContext, packet);
               }

               @Override
               public void write(ChannelHandlerContext channelHandlerContext, Object packet, ChannelPromise channelPromise) throws Exception {
                   super.write(channelHandlerContext, packet, channelPromise);
               }
           };

           ChannelPipeline pipeline = ((CraftPlayer) player).getHandle().playerConnection.networkManager.channel.pipeline();
           pipeline.addBefore("packet_handler", player.getName(), channelDuplexHandler);
       }```
blazing ocean
#

?paste

undone axleBOT
blazing ocean
#

?codeblock

undone axleBOT
#

You can use the discord code block format to display code or just text in a more pleasing way:
```java
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {

}

}```
Becomes:

public class MyPlugin extends JavaPlugin {
    @Override
    public void onEnable() {

    }
}```
blazing ocean
#

breaks on oldmobile btw lol

sterile flicker
#

everything works with regular ones

sullen belfry
#

for some reason some mobs are immune to Poison damage, is there a way to remove the immunity?

slow oyster
#

I haven't logged into Spigot Stash for a while, anyone know why my account would have been deactivated?

chrome beacon
#

They have the effects flipped

#

poison acts as regen and regen as poison

hybrid spoke
#

just give them regen instead lol

chrome beacon
#

instant health as instant damage
instant damage as instant health

sullen belfry
#

for some reason it doesn't work on sheep or chickens either

chrome beacon
#

Sounds like a bug

#

Make sure you're up to date and you don't have a plugin messing with it

sullen belfry
#
// Create the potion effect
                                PotionEffect potionType = new PotionEffect(PotionEffectType.POISON, finalPoisonTimer, poisonLevel, false, false, true);
#

it works on creepers and other mobs

undone axleBOT
fickle helm
#

It seems that the spigotmc API for getting the latest version uses a cache. Anyone know how often it is updated?
I'm talking about this one: 'https://api.spigotmc.org/legacy/update.php?resource=<Your Resource ID>'
I updated a typo in my resource's version 9 hours ago but the URL still shows the old version

#

also I notice it has legacy in the URL name, perhaps there's a newer method that should be used?

remote swallow
#

shows 4.0.6 b35 for me

fickle helm
#

this is what I get

(Invoke-WebRequest -Uri 'https://api.spigotmc.org/legacy/update.php?resource=74304').Content
v4.0.6 b35
remote swallow
#

that is the latest version

fickle helm
#

I removed the v early this morning

remote swallow
#

doesnt have v for me

#

its most likely a user cache

fickle helm
#

🤷‍♂️ the plugin is still returning it but yeah I'm sure it is cached somewhere

remote swallow
#

the plugin on your local machine would have the cached stuff for you, i just checked on my machine and its got no v

elder dune
#

Looking for a little advice. So iv made it so when a player has SAFE-MINER on their pick the item they mine will go straight in their inventory and not drop on the floor but will drop on the floor when invin is full

Problem im having is when a player mines with Slick touch it dont give the slik touch item same with if they have fortune fortune dont work.

How would I go about making so they work ?

ItemStack item = p.getInventory().getItemInMainHand();

                            Block blockMined = e.getBlock();

                            blockMined.breakNaturally(item);

                            //This grabs the item the user mined
                            Collection<ItemStack> drops = blockMined.getDrops();
                            //This gets the item dropped
                            for(ItemStack drop : drops) {
                                e.setDropItems(false);
                                //If it is full it will return message.
                                HashMap<Integer, ItemStack> leftItems = p.getInventory().addItem(drop);
                                //This checks if their inventory is full
                                if(leftItems.size() == 1){
                                    e.setDropItems(true);
                                }
                            }```
#

My code

chrome beacon
#

Don't use getDrops like that

lost matrix
#

Pass the ItemStack to the getDrops method (the player as well while you are at it)

clear elm
#
        FileConfiguration cfg = ZenTP.getPlugin().getConfig();
        Player p = (Player) e.getPlayer();
        if (e.getView().getTitle().equals("§8ᴄᴏɴꜰɪʀᴍ ʀᴇQᴜᴇꜱᴛ")){
            cfg.set("gui." + p.getUniqueId() + ".guiplayer", true);
        }
    }```
why does this dont work
mortal hare
#

im thinking of implementing CI/CD for my server configuration files, im kinda noob at it, but that's what im thinking on:
creating a bash script which launch the server but before it does, it would check if the build was successful in the main branch, if it was it would pull the latest files from git repo and launch the files with the latest files

#

but im not sure what's the best way to implement this

lost matrix
mortal hare
#

using plain old bash seems kinda hacky

lost matrix
#

Yeah

lost matrix
#

yes

lost matrix
clear elm
#

i dont now the word annotation

#

im german

chrome beacon
#

@EventHandler

clear elm
#

i have this

mortal hare
#

but about server configuration files

lost matrix
#
@EventHander
public void onSomeEvent(SomeEvent event) {
}
clear elm
#

i forgot to reload the server 💀

clear elm
lost matrix
lost matrix
mortal hare
#

yes

#

why not github actions

clear elm
lost matrix
lost matrix
clear elm
#

i can delete and create the server again every time

#

and it has only the one plugin

lost matrix
# clear elm and it has only the one plugin

Still doesnt matter. Do a proper restart. Dont reload.
Reloading will eventually lead to atrocious problems and errors, even "with just one plugin".
You will pull your hair out, trying to find a bug.

clear elm
#

okay lol

mortal hare
#

tbh spigot should remove /reload command

mighty gazelle
#

How can I programm a permissions system with groups and more?

mortal hare
#

im not sure why it even exists

#

when it breaks so much stuff anyways

remote swallow
lost matrix
#

I feel like the permission game was already played through by LuckPerms.
Its either that, or a completely custom system that doesnt rely on spigots permissibles.

blazing ocean
#

oh no

#

do not do that

lost matrix
#

That is exactly what i did 🫡

slender elbow
#

no

lost matrix
#

But that only viable because i dont use a single external plugin and the whole system is custom from the beginning.

lost matrix
shadow night
#

if I PluginManager#loadPlugin will it enable the plugin when needed?

ocean hollow
#

what does it mean?

kindred solar
#

Hello guys, I need help again, I tried to use a textured GUI but it isnt working, here is my texture and I use a custom function to create a menu

lost matrix
ocean hollow
#

should I set all for 21?

#

or 16

lost matrix
#

If you define a property, you might as well use it:

<source>${java.version}</source>
<target>${java.version}</target>

If you choose a target and source version, then you should make sure the maven-compiler-plugin is on a version
that actually supports the selected jvm version.
Also make sure that your projects selected jdk can compile this version.

#

Project > Structure > jdk
something like that

lost matrix
#

Ah it was $

river oracle
#

Are you from Sweden smile?

#

I could've sworn that symbol is nearly exclusvive to Swedish keyboards

eternal night
#

gestankbratwurst

Sweden

eternal night
#

§ SpookyDance

river oracle
eternal night
#

Yea

river oracle
#

Is it used in your grammar or something

eternal night
#

its a paragraph symbol

river oracle
#

Wtf very confused American rn

#

Do yall use the paragraph symbol instead of indents or something kekw

lost matrix
#

§3.1 Würde

#

If you know you know

eternal night
lost matrix
# kindred solar bump

That sounds like a resourcepack problem. Explain exactly what you are doing, what you expect to happen, and what is
actually happening. Code snippets included.

slender elbow
#

mfw people still use source/target rather than release flag

kindred solar
river oracle
#

mfw people use spigot instead of CabernetMC

slender elbow
#

cabaretmc 💀☠️

eternal night
#

cavendishmc

river oracle
slender elbow
#

carbonaramc

lost matrix
#

Isnt that the one actor?

#

benedict caverndishmc or something

lost matrix
kindred solar
#

I followed a tutorial, just didnt used Deluxe Menus like he did

blazing ocean
#

have found like 5 servers who haven't protected stuff

small hawk
#

?howoldis188

#

what was that command guys

blazing ocean
#

?1.8

undone axleBOT
lost matrix
blazing ocean
#

this too :D

kindred solar
blazing ocean
#

multiline chat messages go brr

blazing ocean
kindred solar
lost matrix
#

Looks like the resourcepack isnt loaded or malformed

kindred solar
#

how can I get a wellformed resourcepack?

blazing ocean
#

wellformed ❓

kindred solar
#

xd

blazing ocean
#

idt that's a word

lost matrix
#

By using your file explorer and assembling it in a way that is supported by minecraft

chrome beacon
blazing ocean
tardy delta
#

thinking about writing a web interface now to create custom items 🤔

mortal hare
blazing ocean
tardy delta
#

who

blazing ocean
#

idk

#

somebody on twitter

#

don't remember their name

kindred solar
#

it isnt working still...

blazing ocean
#

that seems like a you issue 🤔

#

builds should NOT take 20min

kindred solar
ocean hollow
#

no

#

there are only 3 class for 100 lines

kindred solar
#

0.0

#

What an achievement

remote swallow
#

?whereami

gray merlin
#

Hey there, I'd like some advice because I'm starting to think I might be in the wrong.

I have a bounties plugin used by some people that displays a prefix [Plugin Name] <message> on plugin broadcadsts. It's not very evasive and that's the only kind of plugin advertisement that it gets in-game. A user is being quite pushy with the idea of me adding a way to remove the prefix, and I don't think I should.

I don't get any revenue from the plugin and I do it for fun. I'd appreciate any feedback, thanks.

chrome beacon
#

Users don't like their players knowing what plugins they use

gray merlin
#

The chat messages and the prefix can be changed in colour, and the chat messages can be changed in content

chrome beacon
#

Feel free to ignore them

gray merlin
#

Thank you!

tardy delta
#

wouldnt want to know either

chrome beacon
#

which really isn't that hard

#

when the plugins are just a google search away

gray merlin
#

Yeah

exotic obsidian
#

hello

gray merlin
#

They've used the argument of it not being suitable for big networks

#

But big networks would get their own plugins made...

exotic obsidian
#

guys is there any way to send player to another server with my hub plugin. i already installed bungeecord but my plugin of hub i programmed it with spigot version so, i have issue to send the player to another server.

coarse terrace
#

No libraries for bungee.yml?

#

also, is plugin messaging safe from player sending their own custom payload packets?

slender elbow
#

plugin messaging is custom payload packet

coarse terrace
#

i know

lost matrix
#

Channels need to be registered from the server side. The proxy will simply throw away any custom packets on channels which are unregistered or not suitable for clients

coarse terrace
#

alright

lost matrix
#

eg the BungeeCord channel is reserved for server-proxy and back

slender elbow
#

does the proxy not let it pass through? registering channels isn't really a thing in the protocol

coarse terrace
#

the main question is, player cannot hijack into plugin channel and send malicious packet to the backend?

slender elbow
#

it can, you have to cancel the event on the proxy if the sender is the player

grim hound
#

how can I ensure an array's thread visibility?

lost matrix
grim hound
slender elbow
#

well, not that one, but the rest

lost matrix
#

Yeah the rest ofc ^^

charred blaze
#

what event is called whenever i connect to a proxy?

#

bungeecord

wraith aurora
#

wow a chanell with meaningful conversation

slender elbow
#

you can use varhandles on arrays

wraith aurora
slender elbow
#

Lookup#arrayElementWhatever

charred blaze
grim hound
charred blaze
#

i already know

wraith aurora
charred blaze
#

wont work

slender elbow
#

I mean, there are like 5 events on bungeecord

#

you can just check the classes in the event package

coarse terrace
#

ah yes, gotta rebuild the whole server setup just because dev wont work with bungeecord for money

charred blaze
#

thats why im asking

lost matrix
#

LoginEvent is called earlier

charred blaze
#

thanks

#

for helping

lost matrix
#

PreLoginEvent even more ^^

grim hound
slender elbow
#

ah they're the static methods in MethodHandles

grim hound
#

oh it was a static

#

aight

#

thanks

coarse terrace
#

im curious

lost matrix
slender elbow
#

no

#

that would make the array itself volatile, not the elements

grim hound
#

/\

lost matrix
#

The field, i figured

grim hound
lost matrix
#

How would varhandle help in that regard?

grim hound
#

I mean

#

they have specialized methods for that

slender elbow
#

you can perform operations on a specific element as if they were volatile

lost matrix
#

Sounds like an array shouldnt be used here...

slender elbow
#

also, array elements are independent, as in, a thread mutating element 0 won't be affected by a thread mutating element 1, so it's perfectly thread safe for threads to operate on separate elements :)

charred blaze
#

how do i do ignorecancelled in bungee?

slender elbow
#

if (cancelled) return

charred blaze
#

doesnt seem to work

charred blaze
slender elbow
#

not all events are cancellable

grim hound
#

elaborate on your logic

charred blaze
#

not cancelling the login event?

#

what

slender elbow
#

use the loginevent

#

not the post

charred blaze
#

isnt post like after?

slender elbow
#

after when the player is right about to join a server

worthy yarrow
#

It wouldn't make sense to cancel the post login event, should be yeah that ^

slender elbow
#

if you want to deny login, use the login event

#

post login is post login

#

you deny login not past login

worthy yarrow
#

PostLogin means client is already connected correct?

grim hound
#

pre login - can this mfo log in?
post login - this mfo has logged in

lost matrix
# grim hound elaborate on your logic

Thread safety should be delegated to an object rather than granularly on data structures or arrays.
Meaning you should probably write a class which handles thread safe access on arrays or find a datastructure in java
which supports this already-

charred blaze
slender elbow
#

correct

charred blaze
#

as i tested it was called

#

lemme test again

grim hound
#

pretty much

#

what I'm doing

#

kind of

charred blaze
#

mb

#

it wasnt called

slender elbow
grim hound
slender elbow
#

for the same reason you'd mark a field as volatile or use atomicinteger classes or whatever

grim hound
worthy yarrow
#

What do you do when you don't know what to do?

slender elbow
#

sleep

worthy yarrow
slender elbow
#

I write C when I'm bored

grim hound
#

write assembly methods and implement them into java with JNI

worthy yarrow
#

You guys are so funny

slender elbow
#

I'm not joking lmao

grim hound
#

that was supposed to be a suggestion for Emily

slender elbow
#

I wrote a hash table in C a couple days ago because I was bored

worthy yarrow
#

Literally just because you're bored?

slender elbow
#

sure

grim hound
#

okay, friend is lost

#

on the internet people also don't seem to be using array MethodHandles much

#

is this correct?

slender elbow
#

I mean, it's possible

sterile breach
#

Hi, what happen if I call plugin disabling
several times?

worthy yarrow
#

Probably nothing or several errors

sterile breach
#

okay thanks

charred blaze
#

when you schedule a repeated task with some interval does it wait until previous iteration or whatever its called is done executing?

charred blaze
#

could word that? what does that mean

grim hound
#

say it in an understandable way

charred blaze
#

im not a native english speaker as you can see

grim hound
#

wait until previous iteration what does that mean?

tardy delta
grim hound
charred blaze
eternal oxide
#

Yes a repeating task will not start teh next iteration until the last is complete

charred blaze
#

bruh

eternal oxide
#

yes

grim hound
eternal oxide
#

one completes, then the delay between, then the next runs

#

even if the delay is zero

sterile breach
grim hound
worthy yarrow
#

^

#

You can technically do anything you want in the onDisable, doesn't mean it will work tho

sterile breach
#

if I dont do anything what happen?

worthy yarrow
#

Should be kept to strictly cleanup

#

Then your plugin just disables

sterile breach
#

thread opened keeps open?

grim hound
#

yes

worthy yarrow
#

I mean

sterile breach
#

okay thanks

worthy yarrow
#

Your plugin usually runs on the main thread

#

so as long as the server is still running then

grim hound
worthy yarrow
#

Well that's fair too

#

You need em sometimes for sure

grim hound
#

like 6 of them

worthy yarrow
#

jeez kek

tardy delta
charred blaze
#

is newline

#

\n

#

or

grim hound
charred blaze
#

/n

grim hound
#

so 5

grim hound
charred blaze
#

thanks

grim hound
#

with intellij it's pretty clear

grim hound
#

it's my first time using it

sterile breach
# sterile breach okay thanks

is a bad thing to Bukkit.getServer().shutdown(); on disable? (if its called because the server is already shuting down?)

slender elbow
grim hound
#

don't do that

tardy delta
#

volatile doesnt mean threadsafe?

slender elbow
#

yes that's what I said

grim hound
worthy yarrow
grim hound
#

it also might cause some looped errors

slender elbow
#

volatile means volatile, means writes are flushed directly to main memory and reads aren't cached locally, it also means the compiler won't potentially optimise away certain usages of it

grim hound
#

yep

tardy delta
grim hound
#

that's why volatile field access is usually ~100 times slower

worthy yarrow
slender elbow
#

so, not necessarily

sterile breach
slender elbow
#

volatile doesn't "mean" thread safety, it's just a step towards it

grim hound
grim hound
sterile breach
#

also?

worthy yarrow
#

Not your plugin specifically

remote swallow
slender elbow
#

if volatile is all you need for your usages of it to be thread safe, then congrats, you've achieved thread safety rather cheaply

worthy yarrow
sterile breach
grim hound
remote swallow
#

no

remote swallow
#

# is used for instanced

grim hound
#

how did you do that

#

##AAAAAAA

remote swallow
#

with a back slash

sterile breach
#

Bukkit.getServer().shutdown();

worthy yarrow
grim hound
#

\AAAAAAA

remote swallow
#

or a single hashtag

grim hound
#

#AAAAAAAAAAA

remote swallow
#

# type this

#

with a space

grim hound
#

Xes

sterile breach
#

really?

worthy yarrow
#

Yes

grim hound
#

t

worthy yarrow
#

Why would you shut down the server if YOUR plugin doesnt work?

grim hound
remote swallow
#

with a backslash before the hashtag

worthy yarrow
#

There's no server that only runs a single plugin kek

worthy yarrow
remote swallow
#

but something like sending a player a component message would be Player#spigot().sendMessage as the # signifies the Player would need to be an instance and spigot() returns an instance already so you wouldnt need a hashtag

sterile breach
worthy yarrow
#

Right but you don't just want to shut the server down

sterile breach
#

ah it will'nt call all "onDisable" for other plugins?

worthy yarrow
#

yes

alpine urchin
#

doing the server a favor

remote swallow
#

will'nt

#

what the

worthy yarrow
#

Because you're shutting the server down completely

sterile breach
#

^^

#

ah okay

#

I am stupide I just have to make console execute /stop

alpine urchin
#

hey

#

talk positive

worthy yarrow
#

Uh that's the same thing lol

alpine urchin
#

about yourself

sterile breach
worthy yarrow
#

It stops the whole server

#

How hard is this to understand

remote swallow
#

it would call onDisable for /stop yes

worthy yarrow
#

Bukkit.getServer.shutdown stops the server

#

/stop in console

#

stops the server

remote swallow
#

shutdown will most likely also call ondisable

sterile breach
#

that's what I want, stop the server

worthy yarrow
#

(all plugins)

remote swallow
worthy yarrow
#

I mean I guess if that's what you want then go for it but not adviced

remote swallow
#

the negative for will is wont

sterile breach
#

sorry my english is bad

grim hound
worthy yarrow
#

Trooper is great

#

Even tells me to have more confidence in my ideas during tutoring kek

grim hound
#

troop make fast packet lib

#

me happy

sterile breach
grim hound
#

cuz it's the only other thing that isn't protocol lib or protocol support

grim hound
worthy yarrow
#

You should be able to just do the Bukkit.getServer.shutdown method (if that's what you want)

grim hound
#

like I love that it uses ByteBufs directly

sterile breach
#

yes I that 🙂

worthy yarrow
#

Then go for it

#

should work fine

#

Shutting the server down should as a result call all plugins onDisable methods

sterile breach
#

perfect

#

thanks for your help

worthy yarrow
#

No worries man

tardy delta
#

making that variable volatile makes all writes visible to other threads

grim hound
#

oh you mean with multithread reading

#

then ye

tardy delta
#

it has a performance penalty bt it just works

grim hound
#

0.25-0.5 ns

#

so 100 times slower

#

25-50 ns

tardy delta
#

depends on a lot of things

grim hound
#

still fast af

solemn meteor
#

How do I get a player object from an offline player

tardy delta
#

OfflinePlater:::getPlayer

solemn meteor
#

yes but how do I get the OfflinePlayer from a name?

#

I have an idea (very long way around) but I feel like theres a simpler way to do it

worthy yarrow
#

iirc Bukkit.getPlayer() takes a string too

eternal oxide
#

You can't get a Player Object if the payer is not online

solemn meteor
worthy yarrow
#

Oh not if they are offline

solemn meteor
chrome beacon
#

Offline players don't have a player object

solemn meteor
#

or whats the way

eternal oxide
#

getOfflinePlayer

chrome beacon
#

so you can't get it

solemn meteor
#

Bukkit.getOfflinePlayer().getPlayer();

eternal oxide
#

I already told you, there is NO Player object if the player is not online

solemn meteor
#

well shit

#

long way it is

worthy yarrow
#

OfflinePlayer doesn't have a .isOnline method does it?

#

I wouldn't imagine so but hey

#

Maybe it does kek

remote swallow
#

this sounds like an xy issue

solemn meteor
#

no worries

#

its a lot shorter than I thought

north hornet
#

how do i get rid of the 'Unknown Map' part in the lore of a filled map item?

Current Code:

ItemStack item = new ItemStack(Material.FILLED_MAP);
        ItemMeta meta = item.getItemMeta();
        meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7" + homeName));
        ArrayList<String> lore = new ArrayList<>();
        lore.add(ChatColor.translateAlternateColorCodes('&', "&bLeft Click &7to teleport to this location"));
        lore.add(ChatColor.translateAlternateColorCodes('&', "&bRight Click &7to manage this home"));
        lore.add(ChatColor.translateAlternateColorCodes('&', "&b "));
        lore.add(ChatColor.translateAlternateColorCodes('&', "&bX: &7" + location.getBlockX() + ", &bY: &7" + location.getBlockY() + ", &bZ: &7" + location.getBlockZ()));
        lore.add(ChatColor.translateAlternateColorCodes('&', "&bWorld: &7" + location.getWorld().getName()));
        meta.setLore(lore);
        item.setItemMeta(meta);
chrome beacon
#

ItemFlags

#

probably hide potions

worthy yarrow
whole tapir
#

If ChatColor.RESET is not considered a valid color any longer...if I use ChatColor.ITALIC, how do I reset back to non-italicized text within a formatted string?

chrome beacon
#

It's still valid

worthy yarrow
#

You could also do ChatColor#translateAlternateColorCodes if you don't want colors to be that hardcoded

whole tapir
# chrome beacon It's still valid

It seems that whenever I use it in 1.21, I get an error about invalid color name: reset in the console. Is there a different reason for that?

chrome beacon
#

Show your code

whole tapir
#
var formattedComponent = new ComponentBuilder("[")
.append(Character.toString(range.toUpperCase().toCharArray()[0]))
.color(GetRangeColor(range).asBungee())
.append("] ")
.color(net.md_5.bungee.api.ChatColor.RESET).append(CreateNameHoverComponent(player))
.append(": ", ComponentBuilder.FormatRetention.NONE)
.color(net.md_5.bungee.api.ChatColor.RESET);

[...]
var finalComponent = formattedComponent.create();

SendRangedMessage(player, finalComponent, formattedMsg, radius);
worthy yarrow
#

Ith you're using the wrong chat color import

chrome beacon
#

no

whole tapir
#

I tried both

chrome beacon
#

There is no need to use reset in components

worthy yarrow
#

I've had bungee break my colors before so I wasn't sure

whole tapir
#

Ah, it's just because of the componentbuilder then?

chrome beacon
#

yeah

#

no reset color in chat components

whole tapir
#

👍
thanks!

chrome beacon
#

structure them correctly and you won't need it

echo basalt
#

Ah fuck

north hornet
echo basalt
#

Can I pass data to my interceptor? I tried calling a static method on my main class on it and it gave me class not found issues

#

I really hate doing this but I believe this might work?

dawn flower
#

hello

#

can u use a custom item for the totem effect

fierce parcel
#

totem effect? like undying?

pseudo hazel
#

no, best you can do is custom model data for the totem

#

if you play the effect when holding a totem, it will use that totem in the animation, else just a default totem

#

but it can only be a totem

fierce parcel
#

Well if you want to replicate it closely, you could use an event listener to listen for when a player dies, if they're holding the item, cancel the event, give the player fire res, and add some particles.

pseudo hazel
#

sure you can fake undying, but you cant just play the animation with whatever item you want, I actually tried and found out today

#

if you do find a way please let me know haha

unique spade
#

Running into a fairly weird issue with a gun plugin I'm working on

I'm trying to emulate gun recoil by quickly setting the playerWalkSpeed up and back down after 1 tick. This should have the intended effect of zooming out then back in quickly

However, some shots decide to zoom in rather than out and I can't figure out why

(The recoil is extremely strong in this clip to display the bug)

#

The code i'm using to change walk speed (This is called everytime the gun shoots)

#

Ideally I'd want it to zoom out every time but it's toggling between zoomout and zoomin randomly

fierce parcel
#

Here's a possibilty. If you really wanted to try, you can set an item display to spawn in the player and zoom forward in front of the player like a totem.

pseudo hazel
#

yeah could emulate the effect I guess

fierce parcel
#

@unique spade so the player slows when it fires?

unique spade
#

No they should be sped up to increase the FOV right?

fierce parcel
#

oh yes my bad

#

you want it to be constant while they're using it?

unique spade
#

no the intention is to simulate gun recoil every shot, so a quick zoomout/zoomin

fierce parcel
#

is it individual clicks?

pseudo hazel
#

try like 10 ticks and see if you get the same random zoom direction

unique spade
#

sometimes the FOV just doesn't apply, sometimes it does two quick zooms which is very odd

#

walkspeed for changing FOV has been weirdly unreliable so I'm not sure how to fix it, unless there's an easier way to do that quick zoom

#

setting the player to sprinting has been consistent but it's not configurable which I'd prefer for different guns and everything

worthy yarrow
#

I think the idea of the walk speed is flawed in that it can cause that burst of speed we saw in the clip

fierce parcel
#

I think it is possible to change a player's FOV without changing their walking speed using the Update Attributes packet.

#

((CraftPlayer) all).getHandle().b.sendPacket(packet);```
#

Also import ServerPlayer and do something like:


ServerPlayer serverPlayer = craftPlayer.getHandle();

ServerGamePacketListenerImpl listener = serverPlayer.connection;

ClientboundUpdateAttributesPacket updateAttributesPacket = new ClientboundUpdateAttributesPacket(player.getEntityId(), );

listener.send(updateAttributesPacket);```
unique spade
unique spade
#

Would this work fast enough for the quick zoom?

fierce parcel
#

Most likely. Changing it would be something like:

    this.attribute = var0;
    this.onDirty = var1;
    this.baseValue = var0.getDefaultValue();
}```
#

I'm not sure, though.

#

Something you could try.

unique spade
#

I'll go for it

fierce parcel
#

I wanted get some help with a custom crafting plugin I'm working on. I'm trying to make a custom crafting menu, kind of like hypixel skyblock's crafting menu, but for binding spells to a wand. I've ran into some weird problems. Right click works for saving items in input slots, but left click doesn't. I don't know how to fix it.

#

I also don't know if handleCrafting is the best way to approach a generalized system.

lost matrix
# fierce parcel
  • You should really stop with all those for loops and use Maps instead.
  • MetaDataValues are an old artifact from the past and almost never the way to go.

Try to explain what you mean by "Right click works for saving items in input slots, but left click doesn't"

lost matrix
# unique spade Even weirder

Use attribute modifiers and leave the players walk speed alone.
Those can be identified via UUID and reduce the chance of you messing up the players default walk speed.

young knoll
#

namespace key now*

fierce parcel
#

Yes, so if I right click on the input slots, the item is saved to that slot’s item attribute. So when I close the inventory it goes back in my inventory and other stuff. But not for left click. Left clicking on the slot doesn’t work.

lost matrix
young knoll
#

Yeah

lost matrix
fierce parcel
lost matrix
#

Slots cant save arbitrary values. Im still confused.

fierce parcel
lost matrix
#

Alright, im seeing a few fragile breaking points here that can lead a ton of problems.
But i kinda get the idea.
So your updateItem() method doesnt result in the Output item being updated properly when you leftclick the output slot, is that right?

exotic obsidian
#

what is the best plugin to patch server exploits?

lost matrix
#

Updating your server to the latest version

exotic obsidian
#

But if i use the old mc version, what is the best option for me? XD

crude chasm
#

Hello guys how can i check Enchantment is correct in 1.21. I used Enchantment.getByName("UNBREAKING") but it is depracted now. I think i need to use Registry.ENCHANTMENT.get(NamespacedKey) or something like that anyone can give me example pls.

unique spade
#

Chat is showing the current movement speed modifier

#

Could it be how fast the attribute is changing? it may just be that it's all happening within 2 ticks

echo basalt
#

Oh look smile is up

#

Quick let's ruin his night!

lost matrix
echo basalt
#

fun fact: Today I used bytebuddy to redefine FileConfiguration to never save in the main thread

#

muahahahaha!

lost matrix
echo basalt
#

I have noble reasons

lost matrix
#

doubt

echo basalt
#

Obfuscated plugin was laggin the entire server

#

I did have to do something really cursed to filter what plugins could save in the main thread

lost matrix
#

Ah thats a valid case. I was wondering why you used FileConfiguration in the first place.

echo basalt
#

(I scanned jar files and mapped every possible class name to what plugin defined it)

lost matrix
#

My solution would be to nuke the plugin

echo basalt
#

(because I was having class loading issues)

#

It only lags the entire server really hard once!

ionic dirge
#

Can I hire a developer?

echo basalt
#

?services

undone axleBOT
echo basalt
#

yes I .stream.foreach because JarFile is ass

lost matrix
#

Yeah its a mess to work with

#

The new code inspeaction for printStackTrace bothers me a lot.
Pass System.out to the method call.

echo basalt
#

the one annoying thing of working with bytebuddy is that for some ungodly reason I had to make my interceptor method static

#

Like if I just made a regular method it'd trip out

#

but if I made it static it was ok

#

which lead me to some awful static abuse

#

And some cursed shit because my main class could not be found

lost matrix
#

Ok? Did you forget to pass an instace to the method invocation?

echo basalt
lost matrix
#

Wait your interceptor method for injection??

echo basalt
#

Not that

#

In short I wanted to pass my own little SettingsFile instance because like

#

I have a collection of plugin names to check for

#

But some wonky classloading issues I don't know about (it's like my first time messing with class loading) caused a bunch of NPEs and such

#

Constructor injection doesn't work because bytebuddy is ass and different classloaders yada yada

#

A static setSettings method caused NPEs

lost matrix
#

Ah yeah the spigot classloader can cause problems

echo basalt
#

So I had to yeet SettingsFile and all its dependencies to bukkit's classloader

#

And then get my own plugin through the plugin manager, cast it to a generic JavaPlugin and load the config from there

#

lots of yeeting to another classloader

#

I might reuse the reloading strategy but wtever

#

And then yeah figuring out what plugin called the save method is the slightly simpler part

#

Get stack trace, skip some stuff, get the plugin that defines the class and beep boop

lost matrix
#

At that point i feel like hate mails to the original dev would have resulted in faster results

echo basalt
#

these are heavily obfuscated plugins with a wacky licensing system from a premade server setup

#

solid chance it's just a fork of something public with 2 lines changed

#

or an extra placeholder

lost matrix
echo basalt
#

But hey now I'm 40$ richer and can claim I have bytebuddy in my tech stack

#

That's like.. a date or a gym membership or 25 packs of doritos

#

Another thing that will ruin your night:

#

I have a second project that needs me to use kotlin

lost matrix
echo basalt
#

It's a discord bot

lost matrix
echo basalt
#

For a service team

worthy yarrow
#

(bukkit related) project ideas?

echo basalt
#

use bytebuddy to make minecraft async

lost matrix
#

Whole server or just a plugin`?

young knoll
echo basalt
worthy yarrow
echo basalt
#

I bought some last night

worthy yarrow
#

But why energy drinks?

echo basalt
#

Pretty sure if you drink it all in one go you have a caffeine overdose

worthy yarrow
#

...

#

That's a lot of caffeine man

young knoll
#

That looks like stale urine

worthy yarrow
#

^

lost matrix
echo basalt
#

Woke up in the floor 17 hours later fully covered in sweat

worthy yarrow
#

What in the hell

lost matrix
#

In multiple ways

echo basalt
#

It is, yeah

#

Took like 1800mg or something like that

worthy yarrow
young knoll
#

If you were we’d all have ideas for you

lost matrix
#

Not a topic i wanna expand on, but it would take hours, give you the migranes of your life, youll feel like your eyes will pop and your heart is
exploding in your chest. Full on panic for hours till your heart/lungs fail.
Absolutely stupid

worthy yarrow
lost matrix
worthy yarrow
#

plugin

#

I mean

#

Could be a core too

lost matrix
#

Game mechanics, utilities, vanilla expansion? Or doesnt matter.

worthy yarrow
#

I like vanilla expansion

#

QOL has been on my tdl for a while I just don't know what would be QOL (that hasn't been done already anyway)

young knoll
#

But then you run into custom blocks / entities being a pain :(

lost matrix
# worthy yarrow I like vanilla expansion

Write a plugin which lets the player swap to the most suitable tool in his inventory depending on what he is breaking right now.
PlayerInteractEvent -> scan inv for best item -> swap to main hand

worthy yarrow
#

Do all blocks have tags?

lost matrix
#

There is a method which tells you the break speed as a float for an ItemStack and a specific block.
Just select the one with the highest break speed float.

worthy yarrow
#

Ah ok that's even easier

#

Sounds a bit expensive on an inventory scan tho

young knoll
#

There’s tags now

#

Mineable pickaxe, mineable axe, etc

worthy yarrow
#

I think I'd use both of these things no? I mean tags to determine which kind of tool, and the break speed to determine the fastest of said tools (in case of enchants + multiple tools yeah?)

lost matrix
#

Hmmeh

#

Depends on how expensive the break speed calculation is but i would just do one pass

#

And maybe not scan the entire inv but only the toolbar

worthy yarrow
#

yeah let me mess around real quick

#

action != Action.LEFT_CLICK_BLOCK

Does left click block always result in the breaking of a block?

young knoll
#

Not if it’s an unbreakable block

blazing ocean
#

cloud my beloved

drowsy helm
#

anyone know of any tools which take base64 > skin png?

worthy yarrow
alpine urchin
worthy yarrow
#

Awake but working

alpine urchin
#

ohh

quaint mantle
#

How to set Skeleton reload time?

#
new BukkitRunnable() {
                    @Override
                    public void run() {
                        skeleton.setArrowCooldown(0);
                    }
                }.runTaskTimer(Plugin.INSTANCE, 0, 5L);

It doesn't work

shadow night
#

Are you sure it doesn't

#

But most importantly

#

Have you googled?

torn shuttle
#

people saying ai is a bubble because there is no real application are high on some kind of copium

#

I'm so lazy that even though I just added a paragraph to my wiki I'm having the ai retranslate the entire page to all my supported languages

#

and there are long pages

drowsy helm
torn shuttle
#

my only regret is that it's too slow and too expensive

drowsy helm
#

like at this point if you are not using AI to help you code, you are wasting time

torn shuttle
#

both problems which very much are getting improved on on a weekly basis

#

also man gemini pro 1.5 is popping off, it's now translating better than chatgpt

#

by a mile

distant wave
#

is it possible to anyhow override how every item lore(including enchants etc. , idk how its called correctly) is displayed

torn shuttle
#

you can hide enchants and add custom lore that looks like enchants

drowsy helm
#

but still a big job either way

distant wave
drowsy helm
#

you could use a library like packet events

torn shuttle
#

we love censorship

#

gemini refuses to translate the word "dead"

#

when literally just in a list of adjectives

shadow night
#

Lmao

wet breach
torn shuttle
#

actually

#

I think it's getting stuck on translating the word black to spanish because that's 'negro' and someone forgot their AI is supposed to be multilingual

#

very smart very good idea

shadow night
#

Lmao

agile anvil
#

trust me it's not easy to have an ai that is well censored and that doesn't impact people little mind

torn shuttle
#

huh I was browsing the support forum for google gemini and it seems like the korean word for 'design' is also hard censored

#

oh it's also getting blocked in random latin words too

#

fantastic system, 10/10

agile anvil
#

leave some time to progress, it's been really fast these two last years

torn shuttle
#

this is not an ai problem

#

it's a manual filter put in place by google

#

it bypasses the ai system

agile anvil
#

But if you remove it many people will complain about the ai

torn shuttle
#

and if you don't it makes it unusable in portuguese and spanish

#

and korean and latin according to the feedback page I was reading

agile anvil
#

remembering the polemic around gemini with the little biais, i understand why they decided to temporarely put a shitty filter on it

#

people will use any occasion to put a finger on technology

#

without even understanding that they are the cause of it (ai reflect the humanity biais on many topics)

#

If you want to use this technology right now, I advise you to run some open models locally

young knoll
#

Bings image ai won’t make anything “horror”

#

All I wanted was evil Ronald McDonald

dry thistle
#

Hey guys, i am currently developing in Paper for MC 1.21. I was seeing that the ChatColor classes are completly deprecated. What to use instead to Color a text ?

lavish trail
#

hey all im working on a spigot 1.20.1 but im looking for a plugin so i can sell my worldguard regions. i tried areashop but i cant find a version for 1.20.1

lavish trail
#

😂

dry thistle
#

You guys seem to be so triggered when asking a paper question here...

chrome beacon
#

They are not deprecated in Spigot

wet breach
#

they have their own for a reason

quaint mantle
#

he asked there I see

wet breach
#

good -.-

clear panther
#

org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError: test/pikachu/Pikachu has been compiled by a more recent version of the Java Runtime (class file version 60.0), this version of the Java Runtime only recognizes class file versions up to 52.0

#

what does that mean

quaint mantle
#

I think is because the java version

shadow night
#

Yeag

#

Means the plugin has been compiled against a newer java version than the server is running on

dusty herald
#

🗣️

wet breach
#

52 = java 8

#

probably should upgrade

#

60 = java 16

green prism
#

Hey, do you think that I should relocate all my libraries into my project's folder?

pseudo hazel
#

your own libraries?

#

if you dont care about them updating, sure go ahead

green prism
pseudo hazel
#

oh, well it depends

#

like some plugins you might not wanna shade

#

but libraries are usually okay

#

or relocate I mean

green prism
#

tysm

lean ermine
wet breach
# green prism tysm

if its an actual library it is generally recommended to relocate them for projects that are plugins and not actual applications. It avoids causing conflicts with another plugin that may have the same library but a different version

drowsy helm
#

    @Override
    public void showEntity(Player... players){
        Bukkit.broadcastMessage("SHOW ENTITY " + players.length);
        for(Player player : players){
            Bukkit.broadcastMessage(player.getDisplayName());
        }

        EnumSet<ClientboundPlayerInfoUpdatePacket.Action> actions = EnumSet.noneOf(ClientboundPlayerInfoUpdatePacket.Action.class);
        actions.add(ClientboundPlayerInfoUpdatePacket.Action.ADD_PLAYER);
        actions.add(ClientboundPlayerInfoUpdatePacket.Action.UPDATE_DISPLAY_NAME);
        ClientboundPlayerInfoUpdatePacket playerInfoPacket = new ClientboundPlayerInfoUpdatePacket(actions, Collections.singletonList(this));

        ServerEntity serverEntity = new ServerEntity(this.serverLevel(), this, 0, false, _ -> {}, Set.of());
        ClientboundAddEntityPacket addEntityPacket = new ClientboundAddEntityPacket(this, serverEntity);

        asEntity().refreshEntityData(this);
        ClientboundSetEntityDataPacket entityDataPacket = new ClientboundSetEntityDataPacket(asEntity().getBukkitEntity().getEntityId(), asEntity().getEntityData().getNonDefaultValues());

        PacketUtils.sendPacket(playerInfoPacket, players);
        PacketUtils.sendPacket(addEntityPacket, players);
        PacketUtils.sendPacket(entityDataPacket, players);
    }

Heyo I'm getting a failed to encode set_entity_data packet for the following code.
I only get it when theres 2 players online, and only ever on one client at a time. How do I properly get the data?

Also I've noticed the entity data will only load properly on the second npc spawned unless i packDirty() which i assume isn't the correct way of doing it?

clear panther
#

[18:18:53 INFO]: Starting minecraft server version 1.8.8

eternal oxide
#

Java

chrome beacon
clear panther
#

a fork?

chrome beacon
#

An updated version

#

that someone maintains

#

which supports Java 16+

wet breach
chrome beacon
#

There are plenty of 1.8 forks

clear panther
#

so i gotta upgrade my server version

chrome beacon
#

That's not what I said

#

but yes that's also an option

#

The better option infact :)

clear panther
river oracle
#

all 1.8 forks fork 1.8.8

#

if they don't they're stupid

#

anyone using 1.8.8 at this point is questionable anyways

hazy parrot
#

I think he asked for an upgraded server version

chrome beacon
#

Updated server for 1.8.8

wet breach
#

but if you don't have a reason to be using mc 1.8.8, then upgrade both your server and java

clear panther
#

well im developing for kitpvp server so well i gotta use 1.8 since there are better weapon system

#

and hit cooldown ep

#

but how can i skip that error without changing my server version or plugin version

quaint mantle
clear panther
#

btw who are you

quaint mantle
#

just a spigot discord user xd

clear panther
#

english or spanish

quaint mantle
#

man I'm from Spain

clear panther
#

Quien hable primero en este canal es gay.

quaint mantle
#

you just did it

north hornet
#

How do i use a anvilinventory and get the name a player renamed something to in the inventory?

clear panther
#

💀

clear panther
#

theres an unwritten rule of first guy who did it doesnt count

pseudo hazel
#

either use packets or a library that does it for you

clear panther
#

(hard to explain tho)

north hornet
young knoll
#

You need a bit of NMS

clear panther
wet breach
#

can't

river oracle
young knoll
river oracle
#

Coll beat me to the plug :P

young knoll
#

You have to pay me for advertising

river oracle
#

1 penny to you

wet breach
young knoll
#

We don’t even use pennies anymore :(

river oracle
wet breach
#

I haven't touched cash in like over a year now >>

river oracle
#

I wonder how much in charity is done each year because people just throw their pennies into donation bins

wet breach
young knoll
#

Prices here just get rounded now

#

And pennies are no longer minted

wet breach
#

people in the US would go crazy if that was implemented

river oracle
wet breach
#

you don't like pennies?

river oracle
#

No I'll usually throw em into donation

#

I cbf to hold onto them

#

The rest of my coins I throw in my piggy bank and take em to the bank once a year

wet breach
#

personally I am in favor of currency just being digital

#

there isn't really any value of having money in cash form anymore

young knoll
#

strip clubs

river oracle
river oracle
wet breach
#

I mean they could just implement their own currency that you exchange for

#

if you really need to throw some cloths around

river oracle
#

Review inventory pr

young knoll
#

The view one

river oracle
#

Yeah

young knoll
#

Mmm fine

#

I’ll do that later

clear panther
# wet breach can't

btw why is my plugin 1.8.8 and my server is also 1.8.8
but one is java 8 one is java 16

river oracle
#

I really want machine to review it

#

So he doesn't endlessly complain if he doesn't like something

young knoll
#

👀

wet breach
young knoll
#

If someone made a plugin for 1.8 but compiled it with java 16

#

That’s just them being silly

clear panther
clear panther
wet breach
#

obviously this alpaca person is insistent on not wanting to change their server version and doesn't appear to like the responses lol

river oracle
#

Tends to be this way with people who insist on using legacy versions

wet breach
#

sigh, what a shame for these people to live in the past

#

and not know what they are missing out on

river oracle
#

BuT the PvP

#

Kekw

clear panther
river oracle
#

Still on your nerves 9 years later?

wet breach
#

maybe one more year and 1.8 completely dies out

young knoll
#

X to doubt

wet breach
#

only took like 8 years for it to be at less then 5%

clear panther
#

💀

young knoll
#

If only there was a plugin for old combat mechanics

river oracle
wet breach
clear panther
#

old combat is goated

wet breach
#

not sure what experience you are talking about o.O

lost matrix
#

1.8 will exist as long as there are 12 year olds with adhd that wanna click fast

clear panther
river oracle
young knoll
clear panther
young knoll
#

Half of hypixel’s players are on skyblock

wet breach
young knoll
#

Which has custom combat anyway

river oracle
#

I think it's supposed to be an insult

#

I can't tell tho

lost matrix
#

How about... you actually write your own combat system.
Since 1.20.5 this is more viable than ever.
It also prevents almost all hack clients, as they are tailored to the vanilla combat system.

turbid flame
#

How to modify item durability bcs setDurability is depracted

river oracle
lost matrix
river oracle
#

You don't need to use instanceof btw

#

It's always true

young knoll
#

I still want that pr merged :(

tardy delta
clear panther
#

💀

turbid flame
lost matrix
river oracle
young knoll
#

I believe it’s setDamage

young knoll
#

Make sure you use the right damagable import

river oracle
#

Turns out when all your infrastructure is for a modified spigot from 1.7.10 it's hard to update

young knoll
#

Aren’t they planning to move part of skyblock to 1.20

clear panther
#

we are both using 1.8

#

and thats all

#

whats so difficult to understand

blazing ocean
wet breach
#

which is what you are doing

river oracle
lost matrix
#

There is no guarantee that they are running 1.8 btw.
They could as well have another backend version and simply translate the protocol.

turbid flame
pseudo hazel
young knoll
#

I think they run some weird modified 1.7.10

lost matrix
young knoll
#

Who knows, only @worldly ingot :p

blazing ocean
lost matrix
#

Yeah but imagine him spewing that and gettin his ass whipped with an NDA

river oracle
#

Yeah it's unfortunate choco is on an mdma

#

We may never know

blazing ocean
#

mdma?

young knoll
#

You think the base version is covered by the NDA?

#

Cringe

river oracle