#help-development

1 messages · Page 47 of 1

kind hatch
#

Do you need it to be concurrent though? You are just removing blocks.

#

Which has to be done sync btw

quaint mantle
ivory sleet
#

If you’re getting the ConcurrentModificationException then its just you who designed your system poorly Id assume

quaint mantle
#

im not the guy who coded all of this. its a friend of mine and im trying to fix something and also im a beginner so thats why i cant answer

#

if it helps i can send all the class

buoyant viper
#

i think i see why ur getting concurrent modification

#

removing while iterating

ivory sleet
#

Well, if you didnt code it and you can barely code Id actually advice the following

  1. pay someone to fix it
  2. get the author to fix it, you can bring them here if they need help
  3. learn how to code Java first, then move on to something as advanced as maintaining your friend’s projects#
kind hatch
buoyant viper
#

oh

#

nice

#

so two issues for the price of one

quaint mantle
#

im just trying all by my self

ivory sleet
#

Whats stopping you?

quaint mantle
buoyant viper
#

my brother in christ u cant learn?

#

what

ivory sleet
#

Then option 3

#

Pay some hours to purely teaching yourself Java

quaint mantle
#

where can i learn it?

ivory sleet
#

?learnjava

undone axleBOT
ivory sleet
#

You can ask here in case you don’t understand a concept after having tried to google it multiple times without any result

quaint mantle
#

ok but before can i get some help fixing this

kind hatch
#

🤦‍♂️

ivory sleet
#

Depends on how superficial the issue is, or how profound it is rather

quaint mantle
#

its the same thing we were trying to fix

wise mesa
#

how can i get the actual minecraft version that the server is running on

#

so like

#

getVersion but instead of this it's just the 1.19 or 1.19.2 or whatever

kind hatch
#

I mean, there is Server#getBukkitVersion() which will return smth like 1.19-R0.1-SNAPSHOT. You could take that and just split the string and grab what you need.

wise mesa
#

alright sounds good

#

just split on dashes?

kind hatch
#

Yea

desert frigate
#

how can i launch a fishing hook in a location?

kind hatch
# wise mesa just split on dashes?

You'll only need the first one so.

String[] version = #getBukkitVersion().split("-");

version[0]; // This will get you 1.19 or whatever your server version is running.
native gale
#

Hello, I can't make it work

native gale
#

Okay, so I send the message, the blue line on the left means that the message is accepted by the client, right?

wise mesa
#

pretty sure you can't report any chat messages in spigot but i might be wrong

#

only /msg or /tell

native gale
#

But when I send it, it is now marked as a system message

#

And I can't report it either

native gale
onyx fjord
#

can i somehow modify class of other plugin at runtime?

ivory sleet
#

Bytecode manipulation afaik with instrumentation

wise mesa
#

yeaa

#

use fabric 😄

onyx fjord
#

i guess theres no other way

wise mesa
#

spigot not made for this

onyx fjord
#

but i really need to do it

wise mesa
#

¯_(ツ)_/¯

onyx fjord
#

basically softdepend has a bug they refuse to fix

#

and its 1 line of code

#

1 boolean even

wise mesa
#

you could just patch it yourself

#

and submit a pr

ivory sleet
#

Fork fingerguns

onyx fjord
#

i dont have time to maintain my fork

wise mesa
#

or not even submit a pr

#

eh

#

whatever

native gale
wise mesa
#

you have enough time to maintain your bytecode injector though?

onyx fjord
ivory sleet
#

They?

onyx fjord
#

he

ivory sleet
#

Hmm, thats sadge

onyx fjord
#

kinda childish for plugin of that size

#

but oh well

ivory sleet
#

But if you depend on something or the other way around cant you deal with it by early/lazy initialization?

native gale
onyx fjord
#

😂

compact haven
#

I presume he means a bug with a plugin he's softdepend'ing

onyx fjord
#

its via

compact haven
#

@onyx fjord can't you just put your packet after viaversion in the outgoing pipeline

lost matrix
#

At this stage the block is always air

dim bronze
dusk flicker
#

thats not sketch at all

#

edited that link, at least, what 2 times?

dim bronze
#

mistyped

#

faster than uploading to yt but I will if he wants :P

crimson scarab
#

i saw it

#

is that a texture pack?

dim bronze
#

yes, but just changing the size of an item in an item frame

#

its buggy

#

but it's the only way I can think of doing it

#

and it doesn't involve packets

#
{
  "parent": "minecraft:block/cobblestone",
  "overrides": [
    {"predicate": {"custom_model_data":1234}, "model": "custom_blocks/cobblestone"}
  ]
}
{
  "parent": "minecraft:block/cobblestone",
  "display": {
    "fixed": {
      "rotation": [-90.0, 180.0, 0.0],
      "translation": [0.0, 0.0, -16.0],
      "scale": [2.001, 2.001, 2.001]
    }
  }
}```

all thats involved
#

only problem is that each block is an entity so I don't know why you want the feature, but it could get laggy?

lost matrix
#

Nope. Get the broken state that existed before

compact haven
#

if you put it afterwards then can't you override their change

#

btw git blame shows that he was the one that added the mappings for that protocol

onyx fjord
compact haven
#

oh god let me think

#

packet pipelines are confusing

#

wait

#

what's the problem exactly

onyx fjord
#

on 1.19 server enforces secure chat is hardcoded to false by via

#

just 1.19, no other versions

compact haven
#

well why shouldn't it be

#

If your server is 1.19, you don't have the option for non-secure chat

#

but the client needs the answer

onyx fjord
#

yeah

#

and i cant give it to him

compact haven
#

so on 1.19 your server can't handle secure chat, but on a client of 1.19.1 you need to know if it's secure chat

compact haven
#

so viaversion says, "nope this server has no secure chat"

#

there's not really anything they can do to fix on their end

#

that behavior is correct

onyx fjord
#

i'd have to override it

compact haven
#

you need to register a handler after viaversion, and depending on your plugins config value, change it to true

#

which is completely possible

onyx fjord
#

i do it after via

compact haven
#

then what's the problem

#

🐳

onyx fjord
#

plugin loads and manages packets after via

compact haven
#

then there shouldnt be a problem

onyx fjord
#

well there is unfortunately

compact haven
#

there literally can't be

#

viaversion doesn't have a magic spell to change something after them in the pipeline

#

@alpine urchin "(incoming i'm after via, and outgoing i'm before via)" you said this in the GitHub issue, kennytv quoted it when he said "No." Are you positive that you're outgoing after via, because that's what kacper is saying but not what u said

#

also kenny is correct, plugin load version has nothing to do with the Netty pipeline, you guys are definitely doing something wrong~ I'm sorry ;-;

alpine urchin
#

plugin load has nothing to do with netty pipeline

#

i never said that

wise mesa
alpine urchin
#

anyway, for incoming packets, i process them after viaversion's translation

wise mesa
#

not in the plugin

alpine urchin
#

for outgoing packets, i process them before viaversion's translation

compact haven
#

isnt enforceSecureChat an outgoing packet to the client

alpine urchin
#

resulting in me handling packets based on the server version

#

yes

compact haven
#

right, you need to process them afterwards though

alpine urchin
#

then i'd process based on client version

#

im essentially saying

#

it is out of my control

#

as i'm processing it based on server version

#

kenny: No.

compact haven
#

so wait

alpine urchin
#

technically yes i can process packets after them for outgoing and have control over this

#

field

#

but right now i don't

#

as the field doesnt exist on 1.19

#

.0

#

im not sure why kenny seemed a bit aggressive with the no then locking the conversation

onyx fjord
#

He just likes reports

alpine urchin
#

atleast put in effort

#

he's always like, its just 30 lines to do this

compact haven
#

he's very pro-reporting btw

onyx fjord
#

Saying No. Is just being a dick

alpine urchin
compact haven
#

why can't you take note of the version before, then modify afterwards

#

register 2 things in the pipeline

alpine urchin
#

that complicates my general purpose packet library

compact haven
#

it shouldn't be you doing that

#

it should be kacper

onyx fjord
alpine urchin
#

i thought you meant github reporting

#

ok yea

compact haven
#

your packet library should be capable of registering 2 things

alpine urchin
#

i'll consider it is what i told kacper

compact haven
#

and then kacper would be the one to register before via, take note, then after via to modify

alpine urchin
#

just last time i wanted to do this, viaversion didn't like

#

the idea

#

of me processing things before their translation

onyx fjord
#

Tbh who cares about them liking someone or not

#

Not their interest

compact haven
#

yeah you need to do what u need to do lol

buoyant viper
#

listening, modifying, and sending

wise mesa
#

yea right this is your plugin

buoyant viper
#

all a packet lib needs

wise mesa
#

do whatever you want man

native gale
# worldly ingot Got a code snippet?
package dev.mikchan.mcnp.chat.events.listener;

import org.bukkit.Server;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.AsyncPlayerChatPreviewEvent;
import org.jetbrains.annotations.NotNull;

import java.util.stream.Collectors;

public class DebugChatListener implements Listener {
    private final @NotNull Server server;

    public DebugChatListener(@NotNull Server server) {
        this.server = server;
    }

    private boolean HandleEvent(@NotNull AsyncPlayerChatEvent event) {
        // For debug purposes, I keep it very simple

        event.setFormat("%1$s > %2$s");

        // All the players within 100 blocks to the sender
        event.getRecipients().clear();
        event.getRecipients().addAll(server.getOnlinePlayers().stream()
                .filter(player -> player.getWorld() == event.getPlayer().getWorld() &&
                        player.getLocation().distance(event.getPlayer()
                                .getLocation()) < 100)
                .collect(Collectors.toSet()));

        return true;
    }

    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
    public void OnAsyncPlayerChat(@NotNull AsyncPlayerChatEvent event) {
        if (!HandleEvent(event)) {
            event.setCancelled(true);
        }
    }


    @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
    public void OnAsyncPlayerChatPreview(@NotNull AsyncPlayerChatPreviewEvent event) {
        if (!HandleEvent(event)) {
            event.setCancelled(true);
        }
    }
}
alpine urchin
#

they like to say things like, if you do x, we will tell our users not to use your plugin

#

or so

#

incase any issues arise

compact haven
#

Essentials already tried that bullshit

#

plus your thing isnt a plugin

#

make the capability in the library, let kacper decide if he wants to risk that

onyx fjord
#

It's a lib yeah

compact haven
#

that's my take 🤷‍♂️

kind hatch
alpine urchin
#

i'll do something tomorrow

#

it won't be hard as i already support such behaviour and do it on proxies

onyx fjord
#

I first will try plib as i told you @alpine urchin

compact haven
#

because imo viaversion is doing the right thing in that packet transformer

alpine urchin
#

we need to process based on client version

#

@compact haven i guess yea

#

would be good if it were

#

an option perhaps

azure hawk
#

How can i get the hightest integer out of this hashmap?:
public HashMap<Player, Integer> itemCount = new HashMap<>();

native gale
alpine urchin
#

i just wish kenny would talk to us

#

you know

onyx fjord
#

I left their discord

worldly ingot
#

Out of sheer curiosity, just do something with #setMessage() to change things

#

Omit formatting entirely

worldly ingot
#

You'd just have to iterate the whole thing and find it that way.

#
int highest = Integer.MIN_VALUE;
for (Integer value : itemCount.values()) {
    int intValue = value.intValue();
    if (intValue > highest) {
        highest = intValue;
    }
}

System.out.println("The highest value is " + highest);```
native gale
wise mesa
#

its pretty much the same if you want to get the player attached to the highest int as well

native gale
#

If I do something to message, it will just display <MikChan> [the edited message]

wise mesa
#

just use a keypair

worldly ingot
#

Take out setFormat() from your method and do something stupid like setMessage("Blah")

native gale
#

Mkay

worldly ingot
#

I know it won't do what you want, I'm just curious to see if that does work and signs things properly

#

If so, then setFormat() doesn't support it. Which may be the case because I know you have to register chat formats now

#

(we just don't have API for it, it was introduced in 1.19.1)

azure hawk
worldly ingot
#

That response was for you ;p

azure hawk
#

oh

#

ok

wise mesa
#

choco how is your dog doing

azure hawk
#

and how can i get the player that scored the hightest itemcount?

#

now i only have the hightst count but not the player lol

worldly ingot
#

Oh, you gotta specify! lol

#

Iterate the entry set instead

native gale
#

It is still displayed as a system message

azure hawk
native gale
#
    private boolean HandleEvent(@NotNull AsyncPlayerChatEvent event) {
        // For debug purposes, I keep it very simple

        // event.setFormat("%1$s > %2$s");
        event.setMessage("Pineapples on pizza is fine");

        event.getRecipients().clear();
        event.getRecipients().addAll(server.getOnlinePlayers().stream()
                .filter(player -> player.getWorld() == event.getPlayer().getWorld() &&
                        player.getLocation().distance(event.getPlayer()
                                .getLocation()) < 100)
                .collect(Collectors.toSet()));

        return true;
    }
#

In case you're curious

worldly ingot
#
Player highestPlayer = null;
int highestValue = Integer.MIN_VALUE;

for (Map.Entry<Player, Integer> entry : map.entrySet()) {
    int value = entry.getValue();

    if (value > highest) {
        highestValue = value;
        highestPlayer = entry.getKey();
    }
}

highestPlayer.sendMessage(highestValue);```
#

You're basically just holding both of them at the same time

worldly ingot
#

I'm trying to isolate the issue tbh lol. If it's still unsigned even after just a setMessage() call, then it just doesn't work and you should probably make a JIRA issue on it

lost matrix
#

highestPlayer squint

worldly ingot
native gale
buoyant viper
native gale
#

Okay, now it works

buoyant viper
#

man just made server-side gaslight

native gale
#
    private boolean HandleEvent(@NotNull AsyncPlayerChatEvent event) {

        event.setFormat("%1$s > %2$s");
        event.setMessage("Choco made me do this");

        return true;
    }
worldly ingot
#

Even with the format?

native gale
worldly ingot
#

Yeah so then it's something just with the recipients.

#

Why? No clue 😄 It may have something to do with broken chat headers

wise mesa
#

imagine doing unity stuff and also minecraft stuff

#

definitely could not be me

olive crescent
#

how do I make it so that when the player types /lobby on the survival server for example, he is teleported to the lobby? I tried using mycommand but it didn't work.

lost matrix
native gale
river oracle
#

server side gaslight mod xD well done

worldly ingot
#

👍 Perfect, thanks Mik

carmine nacelle
#

Anyone know if theres a way to make it so bees dont just randomly wander aimlessly

#

like.. theres flowers right next to its hive and it would rather fly around randomly 25 blocks away.

quaint mantle
waxen plinth
#

Maybe if you hover over it it'll tell you

quaint mantle
#

i did, Plugin 'org.apache.maven.plugins:maven-shade-plugin:3.2.4' not found

#

i even reloaded maven

carmine nacelle
#

is there a little maven symbol at the top right in the pom

#

a button

quaint mantle
#

yes

carmine nacelle
#

click it

#

like this except maven

#

it will update sources.

quaint mantle
#

oh also i reset my pc, how do i shade spigot again lol

carmine nacelle
#

why would u shade spigot

quaint mantle
#

wdym

#

u have to build spigot

#

i meant that

kind hatch
#

So I just update to IntelliJ 2022.2 and it looks like some options have been added/enabled by default. Anyone know how I can get rid of these?

eternal night
#

right click them

topaz cape
eternal night
#

there should be an option to disable these hints

quaint mantle
kind hatch
topaz cape
#

because i have never seen "spigot-parent"

#

also you don't shade spigot

#

you only use the dependency

quaint mantle
#

yeah sorry

#

how do i do it

#

this is what it says

worldly ingot
#

Yeah you don't want spigot-parent. The parent project is just a pom project to host Spigot-API and Spigot-Server ;p

#

You want to depend on spigot-api

quaint mantle
#

how do i do this

worldly ingot
#

Change spigot-parent to spigot-api

quaint mantle
#

<artifactId>spigot-api</artifactId>

#

it already says this

worldly ingot
#

Then refresh your project

quaint mantle
#

i did :p

wispy surge
topaz cape
#

and maybe show us the pom file because you prolly broke something lol

quaint mantle
#

it says org.spigotmc:spigot-parent:pom:dev-SNAPSHOT was not found in https://hub.spigotmc.org/nexus/content/repositories/snapshots/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of spigotmc-repo has elapsed or updates are forced

worldly ingot
#

Idk what IDE you're using. IntelliJ will want you to clear caches and rebuild dependencies, Eclipse will want you to just F5 the project

#

If you've done that, a pom.xml would be useful

quaint mantle
#

I'm using IntelliJ

worldly ingot
#

?paste

undone axleBOT
quaint mantle
#

Alr

topaz cape
#

🤦‍♂️

desert frigate
#

how can i connect a lead to a armor stand then connect it to another mob?

agile knot
#

thanks to yall for the great help

desert frigate
#

or just connect a cow to a fence

quaint mantle
#

what error is this ?

#

debug info aint helping me

sacred mountain
#

i do love sending packets with getHandle().a.b()

#

or was it b.a()

river oracle
#

why aren't you using mojang mappings

quaint mantle
#

hey guys, apparently i am using a AsyncPlayerChatEvent to get messages, and I am detecting if a word is said in there, and kicking the player, apparently it throws an error saying java.lang.IllegalStateException: Asynchronous player kick!? any idea why this happens?

quaint mantle
kind hatch
river oracle
quaint mantle
quaint mantle
sacred mountain
river oracle
#

ahhh

sacred mountain
#

luckily intellij can type detect whatever i want lmfao

kind hatch
# quaint mantle how would I do that?

How are you doing it currently? Cause you could just call the bukkit scheduler and kick them 1 tick later if the event is returned on an async thread.

quaint mantle
#

i just type in e.player.kick

#

(well the right way)

#

e.player.kickPlayer("YOU CANT SAY THE J WORD LIKE THAT")

sacred mountain
#

wht

quaint mantle
#

my friends name

#

starts with j

#

so i censored his name

frank kettle
#

hello, I'm using 1.19 API and can't seem to find the classes PacketPlayOutSpawnEntityLiving or any "Craft" to import either and use. I saw in some threads that I needed to use them for what I want to do.

Did the API change and this classes changed the way we can access them?

kind hatch
#

Habit I guess. Delaying tasks by one tick solves most problems, but I suppose there wouldn't be any issue with doing it on the same tick.

sacred mountain
#

or use nms without mojang mappings like me

wide coyote
#

Hey, I am trying to post a premium resource but can't premium resources have emojis in their titles? Or am I able to change the title and add the emojis after it is approved?

river oracle
#

don't do that

sacred mountain
#

lol

quaint mantle
river oracle
#

use mappings lol

frank kettle
#

i believe i need to import a different dependency?

#

idk which tho

quaint mantle
#

heres my code ```kt
@EventHandler
fun sayJere(e: AsyncPlayerChatEvent) {
if (e.message.contains("jere")) {
e.player.kickPlayer("YOU CANT SAY THE J WORD LIKE THAT")
}
}

river oracle
#

Kotlin is just java's quirky younger brother that wants to be different

sacred mountain
#

((CraftPlayer) player).getHandle().b.a(PacketPlayOutBlahBlah)

#

its not too bad

#

not as bad i thought it would be hoenstly

sacred mountain
#

mostly because of my ide letting me know what does what

waxen plinth
sacred mountain
#

who

frank kettle
sacred mountain
#

buildtools

waxen plinth
#

The whole jar, so spigot instead of spigot-api

wide coyote
#

#general seems to be a offtopic channel

sacred mountain
waxen plinth
#

Hi

#

What's up

frank kettle
sacred mountain
#

pain

frank kettle
#

i reseted my computer so yeah need to get that shit done

sacred mountain
#

how do i run some code every tick, but then run code after said scheduler is finished?

waxen plinth
#

Why do you need to do that exactly

quaint mantle
#
package net.polarlabs.events;

import net.polarlabs.Commands.Clan;
import net.polarlabs.methods.bmUi;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;

import static org.bukkit.Bukkit.getLogger;

public class clickEvent implements Listener{

    @EventHandler
    public void guiClickEvent(InventoryClickEvent e){
        Player p = (Player) e.getWhoClicked();
        //if (!event.getInventory().equals(p.getInventory())){return;}

        if(e.getClickedInventory().getHolder() instanceof bmUi){   //this line
            e.setCancelled(true);

            switch (e.getSlot()){
                case 2: {
                    p.closeInventory();
                    p.sendMessage(ChatColor.BLUE + "Did" + ChatColor.GREEN + "you know" + ChatColor.YELLOW + "that you" + ChatColor.RED + "are playing mc ?");
                }
            }
        }

    }
}

error thrown: (line 20) "cannot find symbol"

waxen plinth
#

This sounds like an xy problem

sacred mountain
#

its an animation

#

of blocks

waxen plinth
#

Why would that matter

sacred mountain
#

wdym

waxen plinth
#

Things can only change in one-tick intervals anyways

#

Are you trying to send something at the beginning of the tick and something at the end?

sacred mountain
#

i'm changing one block every second for 5 seconds, then continuing the animation

#

its for a tnt animation

#

no like stop motion

#

its for a server

waxen plinth
#

I don't understand the issue

sacred mountain
#

my scheduler isn't waiting for the first one to finish, its just executing them all at once and then running the code inside the scheudlers

quaint mantle
#

cause kotlin is cool 😏

#

and I didnt even learn it

#

and it still works out

#

the first if statement was commented yes

sacred mountain
#

i'm aware why its happening but idk the best alternative

waxen plinth
sacred mountain
#

for only one?

#

well i guess that would work

#

mk

quaint mantle
#

just counted them, seems right

sacred mountain
#

if u need to count brackets somethings wrong

quaint mantle
#

sure

#

intelij throws no error warnings

#

just when i package it it says this weird error

#
package net.polarlabs.methods;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.ArrayList;
import java.util.List;

public class bmUi implements InventoryHolder{

    private Inventory inv;

    public bmUi(){
        inv = Bukkit.createInventory(this, 26, "Black Market");
        init();

    }

    private void init(){
        ItemStack item;
        item = createItem(null, Material.BLACK_STAINED_GLASS_PANE, null);

        // middle
        for(int i = 9; i < 18; i++){
            inv.setItem(i, item);
        }

        //info
        List<String> lore = new ArrayList<>();
        lore.add("§7 Click on the offers to purchase");
        lore.add("§7 or sell to the Trader.");
        item = createItem("§b§l Make a selection", Material.BOOK, lore);

    }


    private ItemStack createItem(String name, Material mat, List<String> lore){
        ItemStack item = new ItemStack(mat, 1);
        ItemMeta meta = item.getItemMeta();
        meta.setDisplayName(name);
        meta.setLore(lore);
        item.setItemMeta(meta);
        return item;
    };

    @Override
    public Inventory getInventory() {
        return inv;
    }
}

#

ah

#

i though it was indexes

#

yeah it only says "cannot find symbol"

sacred mountain
#

thats like the most common error

#

doubleclick the location of the error and trace back to see why that symbol doesnt exist

#

maybe u typed it wrong or tried to access something you cant

#

screenshot i took earlier: is it possible to make particles velocity move away from a point when using the offset coords and multiplier? or do i have to set each individual particle direction

kind hatch
#

I think it depends on the particle, but I think you can set a direction.

quaint mantle
sacred mountain
#

bmUi?

quaint mantle
sacred mountain
#

ouch

sacred mountain
#

lowercase class

delicate lynx
#

oh god please do not use gui holders to check custom inventories

quaint mantle
sacred mountain
#

calm down

delicate lynx
#

hold this block

delicate lynx
#

holder is for blocks that hold an inventory

#

plugins should not use it, it's a misuse of the api

dusk flicker
#

did you seriously just call someone a boomer lmao

quaint mantle
#

so ```java
if(e.getClickedInventory().getHolder() == null){}

sacred mountain
#

rip

#

btw tf do u mean custom inventeoy

#

what is a custom inventory

#

i would create a wrapper for that

shadow gazelle
#

Would saving a primitive array be more reliable than saving an arraylist?

sacred mountain
#

so not an inventory?

delicate lynx
#

"Gets the block or entity belonging to the open inventory"

sacred mountain
#

i was thinking armor and aoffhand and hotbar etc

delicate lynx
#

that's what the docs say

sacred mountain
#

bruh

quaint mantle
#

if(e.getClickedInventory() == null){}; ? 🤔

sacred mountain
dusk flicker
#

?tas

undone axleBOT
shadow gazelle
wet breach
sacred mountain
#

lol oh dear

wet breach
#

you can have an inventory that has no holder to include a player

quaint mantle
#

still throws the same error

wet breach
#

when an inventory has no holder, it means it is accessible by everyone as long as they have a way to access the inventory in other words belongs to no one specific and everyone can edit it if allowed and everyone who is looking at it can see it being manipulated

#

to give you some nifty ideas

sacred mountain
#

live updates

#

interesting

quaint mantle
#

😔

sacred mountain
#

multiplayer inventory games 💀

frank kettle
#

@sacred mountain how do I use the BuildTools installations in my maven/project?

#

all online threads or wiki dont explain that part

sacred mountain
#

i'm about to sleep ask someone else

#

search spigot buildtols

#

?br

#

?bt

undone axleBOT
wet breach
frank kettle
#

the wiki doesnt explain it

delicate lynx
#

buildtools installs it automatically

frank kettle
#

doesnt seem to work then

sacred mountain
#

ok bye

#

goondight

wet breach
#

you would run build tools to get the api and spigot server jar

frank kettle
#

i have the jar files and all installed

delicate lynx
#

what are you depending on

quaint mantle
frank kettle
#

now how do I use them my project?

wet breach
#

you can use it in such ways since you can technically assign a holder to it

frank kettle
#

I want to use Packets and Craft things

sacred mountain
#

what for

frank kettle
#

make armor stands per player and in the future other things that require it

wet breach
#

the better way is to hold an instance of your inventory object depending how it is designed and then compare with your inventory object instance instead

#

in this manner there isn't a way for someone to open the inventory

#

because there is ways to open custom inventories by just sending a packet 😉

frank kettle
#

for make armor stands visible per player i need to make several armor stands and then per player send packet to be able to see their armor stands.

#

for this I need the PacketPlayOutSpawnEntityLiving and CraftPlayer

#

I have installed BuildTools but how do i make my intellij idea/maven project use that?

wet breach
#

no

sacred mountain
#

theees like 40 tutorials

frank kettle
#

😐

sacred mountain
#

mfnalex has a whole page

#

on it

wet breach
#

because the server says the inventory exists, as long as the client says I want to open this inventory and you have no checks in place to prevent it

#

the server will say ok here it is

sacred mountain
#

search jeffmedia builtools mappings

#

or something

#

k gn

carmine nacelle
#

?paste

undone axleBOT
carmine nacelle
frank kettle
#

ty, i will look those up

wet breach
#

mostly works with inventories that use the name of the inventory to check if its a custom inventory to open. How you would do it is you would send a packet to the server you want to open a chest inventory and then instead of sending null as the name of the inventory you would send the name of the custom inventory

#

plugins that only check by the name only will be susceptible to this and custom inventories opened in this way, the players can steal the items usually

#

and since the server makes sure it is supposed to have those items

#

its like a perfect dupe inventory

umbral bear
#

Hi, I need some help hooking into vault, I have a 1.18.2 paper server with vault on it and when trying to hook into it the serviceProvider returns null. I tried to copy-paste the example code on VaultAPI GitHub repo on a test plugin, without any result. That's where I am rn (I'm sorry if it's a mess) : https://hastebin.com/iyuxakutuw.java

wet breach
#

why exactly do you need vault?

umbral bear
#

Checks for a kitpvp

wet breach
#

permission?

umbral bear
#

Wdym

wet breach
#

vault is for economy or permission checking/handling

umbral bear
wet breach
#

so are you trying to hook into vault for economy purposes or permission purposes?

umbral bear
delicate lynx
#

like what are you needing to use vault for exactly? what are you checking?

wet breach
#

and this is on a server you control right?

umbral bear
#

I tried

#

Nothing

wet breach
#

are you developing a plugin in general, or is this for your own server?

umbral bear
#

I'm a Dev on a mc server

wet breach
#

alright perfect, so the odds that the economy plugin will be changing anytime soon is most likely not going to happen right?

umbral bear
#

And someone asked me to develop this plugin for the server's kitpvp

wet breach
#

therefore, just hook into the economy plugin and bypass vault altogether. Odds are the economy plugin you are using has an API 😉

umbral bear
#

I'm using no other economy plugin

#

maybe that's the problem (?)

wet breach
#

vault itself does not provide anything. It is like a proxy API to hook into economy plugins or permission plugins

#

so, yeah you are going to need to get yourself an economy plugin because vault doesn't provide that 😛

#

vault doesn't store anything

#

it hooks into the popular economy plugins that are maintained and lets you just focus on using vaults api

#

and thus being compatible with like 10 or so economy plugins

#

however, if you are not making a plugin for the masses

buoyant viper
#

debian is for Lesbians

wet breach
#

you could just bypass vault and hook into a single economy plugin

umbral bear
#

Vault is just a common hook to share some kind of data across plugins

#

As far as I remember it

wet breach
#

That is a way to look at it, just that vault doesn't generate or store any data

buoyant viper
#

ok

umbral bear
quaint mantle
#

meow

#

cta

umbral bear
#

Did you shoot an arrow at him?😂

#

Ender-cat😂

carmine nacelle
#

?

delicate lynx
#

paste the actual error

carmine nacelle
#

error is pretty useless

carmine nacelle
#

I changed that to just #remove(0)

#

still didnt fix it

wet breach
#

you can not get something from the list while also looking up that same thing in the list

#

you need to first get it

#

then feed it in

carmine nacelle
#

I completely commented the line out

#

still errored

wet breach
#

show updated code

#

because you are probably not understanding

carmine nacelle
#

//storedBeeUUIDs.remove(0);

wet breach
carmine nacelle
#

I did

#

thats not the current issue

#

I completely commented that line out

wet breach
#

is the updated error the same?

carmine nacelle
#

yes

wet breach
#

not sure what makes you think the error is occurring in this specific code block

carmine nacelle
#

because if I comment out the function it doesnt error

wet breach
#

which function?

wet breach
#

I don't make assumptions especially when I can't see the rest of the code in where some of these values/instances come from

#

well I wouldn't know what to recommend if they don't specify which part of the code they comment out makes it stop erroring lol

#

because depending which part of the code, it could technically not even be erroring in that code block

#

this is valid

carmine nacelle
#

I was commenting out the entire event handler.

wet breach
carmine nacelle
#

Well

quaint mantle
#

@gritty hawk I ask some help in another server and they fixed the issue...
new thing I learned was that I had spigot api imported as classpath into intelij, and not in the pom.xml for maven to compile.
hope this can be somewhat useful for you too, appreciate your help tho 🙏

carmine nacelle
#

if I comment out the optional then i also have to comment out everything below it

#

because they use the optional

wet breach
#

so start from the bottom

#

the optional is probably what the issue is

#

it is an arraylist

#

the CME is happening on an arraylist

#

that is a lambda

#

so no its not just storing one piece of data

#

this is one of those examples where lambdas can be bad

#

because they hide so much implementation details

#

Optional<CustomHive> This means an Optional Array that takes in objects of type CustomHive as well in how I know its an arraylist

#

it is a lambda, which means there is more going on behind the scenes then what the code shows

pliant tundra
#

every cube in a world is a block right? (i.e. empty blocks are just air)

#

ok ty

wet breach
#

to understand streams

#

then we know its a collection or an array being assigned as a value

#

everything after stream, is just the filtering parameters on the singular value being selected

#

to be returned from the collection

#

so odds are its going to be the optional where the CME is happening

desert frigate
#

i have a string which is a player uuid, but how can i change it to uuid?

sharp verge
#

Hello, since you are no longer able to initialize MongoClient, how should i proceed instead? Any tutorials or refferences ?

wet breach
carmine nacelle
#

Well in that case... should I just modify the optional..?

#

Basically just need to get the closest hive

#

cause theres no way of actually telling which hive it came out of

wet breach
carmine nacelle
#

i sent that part cause its the place its erroring

wet breach
#

that is where Java was able to detect it

#

doesn't always mean that is the exact spot

carmine nacelle
#

it doesnt error at all if I comment the entire event out

wet breach
#

I have had java tell me an NPE was happening in one class

#

when in reality it was happening in a completely different one

wet breach
#

since we know events themselves are not the issue

carmine nacelle
#

Yeah so its code in the block erroring

wet breach
#

so, comment out the optional

#

and everything below it

#

that depends on it I guess

carmine nacelle
#

I did that alrdy

wet breach
#

but if it was me I would comment out starting at the bottom one at a time

#

until it stops erroring

#

and I am fairly certain it will stop once you comment out the optional

carmine nacelle
#

Whats wrong with the optional?

wet breach
#

the CME is happening on an ArrayList

carmine nacelle
#

ill just comment out everything but the optional..

wet breach
#

as far as I can tell you only had two of them in that code block

carmine nacelle
#

right

wet breach
#

you commented one already

#

and said the error was still happening

#

there is only one other place you have an array list

#

the optional

carmine nacelle
#

ok...its not the optional...

#

wtf

sharp verge
dusk flicker
#

gonna have to check me code rq

sharp verge
#

Well its deprecated, as far as i know

dusk flicker
#

MongoClients.create

sharp verge
#

Ahh alright

wet breach
desert frigate
#

What is the sound for when a player uses a fishing rod?

sharp verge
#

put your variable

#

is that just private MongoClient mongoClient?

dusk flicker
#

yeah

sharp verge
#

Alright, thanks :)

wet breach
#

this is why I don't make assumptions when I don't know what exactly them other objects do lol

sharp verge
#

@dusk flicker could you by any chance send the whole line ?

tulip nimbus
near kite
#

anyone know why this is happening

carmine nacelle
#

Well im just wanting to get the result from the optional

tulip nimbus
#

Pick the one you want

dusk flicker
#
            if (authentication) mongoClient = MongoClients.create("mongodb://" + username + ":" + password + "@" + host + ":" + port + "/admin");
carmine nacelle
#

which since im finding first it would only return a single value.

near kite
#

oops i meant to send an image

sharp verge
#

thanks mate 😘 #nohomo

near kite
dusk flicker
#

No problem

sharp verge
#

The Maven logo

near kite
#

its not there

wet breach
sharp verge
#

idk then

near kite
#

im not new from spigot discord ignore the icon

worldly ingot
near kite
worldly ingot
#

?userinfo @near kite

near kite
#

whys it looking in spigot repo

undone axleBOT
#

Chilling in dnd status

Joined Discord on

<t:1594501335>
(<t:1594501335:R>)

Joined this server on

<t:1659423526>
(<t:1659423526:R>)

Role

<@&695824786605080576>

Previous Names

deleteduser244348934938438493, Creeperz653, deleted User 37s79398, Deleted User 5bd78114, Acreeperz653, Deleted User 10a4f67d, GamerTydium, RedTree484, Deleted user, creeperz653, BLUETREE IS FUCKING GAY, Deleted User 490394

Previous Nickname

Creeperz653

worldly ingot
#

LIAR

#

AUGUST 2nd >:((

dusk flicker
#

holy fucking previous names

near kite
#

why are they saved

dusk flicker
#

🤨

near kite
worldly ingot
#

Anyways, previous names aside lol

wet breach
dusk flicker
wet breach
#

I do like that previous name at the bottom though

worldly ingot
#

To answer your question, all repositories are checked for dependencies

#

If it's checking the Spigot repo, then it means it couldn't find it in any other repo either

near kite
# dusk flicker 🤨

thats the one name i changed as soon as it was on no one really saw it blue is my friend

wet breach
#

I have had instances where maven for some dumb reason skipping over a repository and just not bothering to check simply because of the order the repos are listed lmao

near kite
#

ive looked at other addons pom they use the same thing

sharp verge
near kite
#

maybe its the order

dusk flicker
#

db string?

#

I dont run with that

#

that is all pulled from a config

near kite
sharp verge
#

yea yea but still, for me i have username, database, password, host and port to access the DB

near kite
sharp verge
#

Might that be because I followed an older post ?

near kite
#

ignore that

dusk flicker
#

lol

near kite
#

i left awhile ago

#

since i didnt use this server

dusk flicker
#

buggieserver

sharp verge
#

xd

dusk flicker
#

great description for 1.8 servers

#

thanks for that

#

gonna use that

near kite
#

im making a new software for buggieserver

#

bungee but it wants you to update

sharp verge
#

Anyways Rack, do you have somewhat of a refference or tutorial/post that explain the MongoDB syntax / setup ?

near kite
#

even though your 1 commit behind

dusk flicker
#

A quick google might give some good resources, the Java library for Mongo is good

sharp verge
#

Alright, thanks

sharp verge
near kite
#

execute order 67

dusk flicker
#

hmm? What do you mean

sharp verge
#

Like do you have a site etc ?

dusk flicker
#

Oh I run it on my own dedicated server

sharp verge
#

Oh fair enough then

carmine nacelle
#

@wet breach After going back and forth commenting/uncommenting, its no longer erroring AT ALL???

#

what in the god damn

wet breach
#

that must be fun

#

a bug that resolved it itself and you still have no idea why it even happened or how it got fixed. The most dangerous bugs

mossy flume
#

is it possible to convert a MaterialMapColor to a java awt Color to be used in MapCanvas#setPixelColor? While including the brightness which gives you a single bytes to work with

pliant tundra
#

when i use player.breakblock, is the breaking instant or is it affected by the tool?

pliant tundra
#

oh

#

rip

wet breach
#

you can get the block state of such things and check what their growth level is

#

optionally you can get their age too and check that way

#

maybe, but why bother with bounding boxes when there is api methods already available?

#

you can easily make a method that accepts a location to check the block state

near kite
cedar hamlet
#

Simple question

#

How would I go about detecting if the item in the players hand had a specific name with a specific colour?

wet breach
#

you can still get their blockstate

cedar hamlet
#

like

 if (player.getItemInHand().getType() == Material.DIAMOND_SHOVEL && itemname.equalsIgnoreCase(ChatColor.AQUA + "Snowball Launcher")) {
     player.sendMessage("You have right clicked the snowball launcher!");
 }
#

but the second part works

cedar hamlet
#

ah, thanks

quaint mantle
#

Hey, ```kt
@EventHandler
fun xpBreaker(e: ExpBottleEvent) {
val hitBlock = e.hitBlock
hitBlock?.setType(Material.GRASS_BLOCK)
}

Any Idea why It wont set it to a `grass_block`? And I can't even use ``hitBlock?.breakNaturally()``
#

I get no error because I am using the "?"

#

Even if I make val hitBlock = e.hitBlock to val hitBlock = e.hitBlock as Block

#

Block as in org.bukkit.Block

dusk flicker
#

not sure if we have many people in here that use kotlin

#

might be a bit of a wait time

quaint mantle
#

doesnt matter

#

just give it to me in java then

#

cause kotlin is relatively similar then java

#

well kinda

hasty prawn
#

Is the hit block null somehow?

cedar hamlet
#

Side note, how would I go about removing only one item from a stack?

quaint mantle
#

i did use ?

cedar hamlet
#
player.getInventory().remove(Material.SNOWBALL,1);
#

for example

hasty prawn
hasty prawn
# quaint mantle i did use ?

Why would that matter? It may not error but if the block is null then attempting setting it to something else isn't going to work.

cedar hamlet
#
    @EventHandler
    public static void onRightClick(PlayerInteractEvent event) {

        if (event.getAction() == Action.RIGHT_CLICK_AIR) {
            if(event.getItem() != null) {
                if (event.getItem().getItemMeta().equals(itemManager.snowballLauncher.getItemMeta())) {
                    Player player = event.getPlayer();
                    if(player.getInventory().contains(Material.SNOWBALL)){
                        player.getInventory().remove(Material.SNOWBALL);
                        player.sendMessage("You have right clicked the snowball launcher!");
                    }else{
                        player.sendMessage("No Snowballs");
                    }
                }
            }
        }
    }
}
#

Here's the whole thing

dusk flicker
#

doesnt need to be static

river oracle
#

Stastatic

#

🥺

cedar hamlet
#

To answer both of your questions, it's because thats what the guy in the tutorial did

hasty prawn
dusk flicker
#

find a different tutorial

#

holy shit

#

ive seen some shitty tutorials but thats another level

cedar hamlet
#

Well, the snowball stuff is me

#

and it works, so I dont see the issue

dusk flicker
#

yeah im out, cba to deal with this tonight

#

?cba

undone axleBOT
#

Rack#0001 definitely regrets to for the most part inform you that unfortunately, they essentially are unable to definitely assist with definitely your enquiry, which essentially is fairly significant. Please simply really ask again later or possibly kind of ask someone else about this enquiry, demonstrating that the person that ran this command generally regrets to kind of inform you that unfortunately, they for the most part are unable to generally assist with actually your enquiry in a subtle way. Thank you very sort of much for kind of your time and the person that ran this command specifically wishes you a really good day, so the person that ran this command really regrets to actually inform you that unfortunately, they literally are unable to definitely assist with very your enquiry, or so they particularly thought.

hasty prawn
#

Just because it works doesn't mean you're following good practice though.

#

LOL I've never seen that command before

cedar hamlet
#

Still

drowsy helm
#

"im newish to java" and "it works, so i dont see the issue" are two statements that shouldnt go together

cedar hamlet
#

Ok ok, yes, I understand that bad practice, is well, bad

hasty prawn
#

Anyways, Aris, you need to find the ItemStack you want to remove. If it's just any snowball, use inventory.getItem(inventory.first(Material.SNOWBALL)), and then you can call what I gave you earlier.

#

I thought there was a remove that takes in an amount but just glancing at the docs I couldn't find it so I guess this is what we're doing PeepoShrug

cedar hamlet
#

Ok I will try this

quaint mantle
hasty prawn
#

Well first you should probably figure out if that's actually what's happening

quaint mantle
#

would it be possible to

#

like

#

info out the object

#

print it out

hasty prawn
#

Yeah

quaint mantle
#

alr let me try that

quaint mantle
# hasty prawn Yeah

Ok so I used

val hitBlock = e.hitBlock
        Bukkit.getLogger().info(hitBlock.toString())
``` and its not logging anything out
#

and without the toString it gives an error

hasty prawn
#

Whats the error

quaint mantle
#

well the ide gives an error

#

i didnt compile it tho

#

like a red line

quaint mantle
# hasty prawn Whats the error

here is the error that intellij gives
<html>None of the following functions can be called with the arguments supplied:<br/>public open fun info(msgSupplier: Supplier<String!>!): Unit defined in java.util.logging.Logger<br/>public open fun info(msg: String!): Unit defined in java.util.logging.Logger

hasty prawn
#

Thonk kotlin things

quaint mantle
#

la

#

lmao

hasty prawn
#

If it prints nothing then I assume it's null

quaint mantle
#

yep

#

its a null then

#

how would I prevent it from being null

#

because simply enough it is hitting a block

hasty prawn
#

Maybe try using ProjectileHitEvent and checking if the Projectile is a ThrownExpBottle?

#

I think the ExpBottleEvent acts really weird.

quaint mantle
#

i tried using projectilehitevent

#

fun fact im using it rn

#

i just forgot to tell you about it..

#

sad

hasty prawn
#

Does it work if you use, like, Arrow?

quaint mantle
#

yeah

#

actually no

#

i just tested it so no

quaint mantle
#

e as in the ProjectileHitEvent

hasty prawn
#

I have no idea then honestly

quaint mantle
#

i havent even tested it

#

so

#

yeah

#

lets try hopefully

#

its still not logging anything

#

yeah

#

yeah

#

thas kotlin

#

oh ok

#

can you help us?

#

the projectile hit event nor the exp bottle event wont work

#

im just gonna see if the projectilehitevent is ever used

#

i did

#

i used that too

#

that didnt work iether

#

ok

#

actually

#

no my listener is completely fine

#

Bukkit.getPluginManager().registerEvents(events(), this)

#

listener registerer

#

and then ill give you the other code

#

yeah

#
class events : Listener {
    @EventHandler
    fun onBlockPlace(e: BlockPlaceEvent) {
        if (e.block.type == Material.TORCH) {
            e.player.sendMessage("Ayo why did you place a torch!")
            e.isCancelled = true
        }
    }

    @EventHandler
    fun aEvent(e: BlockBreakEvent) {
        if (e.block.type == Material.GRASS_BLOCK) {
            e.block.type = Material.LAVA
            e.player.velocity = Vector(100, 100, 100)
        }
    }

    @EventHandler
    fun eatNutCoconutH(e: PlayerItemConsumeEvent) {
        if (e.item.type == Material.COOKED_CHICKEN) {
            e.player.addPotionEffect(PotionEffect(PotionEffectType.POISON, 20 * 30, 99))
            e.player.sendMessage("What a idiot imagine eating raw chicken you stupid")
            val inv: Inventory = e.player.inventory
            inv.addItem(ItemStack(Material.CHICKEN, 10000))
        }
    }

    @EventHandler
    fun useStick(e: PlayerInteractEvent) {
        if (e.player.inventory.itemInMainHand.type == Material.STICK) {
            val tnt : TNTPrimed =  e.player.world.spawnEntity(e.player.location, EntityType.PRIMED_TNT) as TNTPrimed
            tnt.isCustomNameVisible = true
            tnt.customName = "${ChatColor.RED}${ChatColor.BOLD}boom boom boom boom shabom kaboom yes nice"

        }
    }

    @EventHandler
    fun xpBreaker(e: ProjectileHitEvent) {
        val hitBlock = e.hitBlock
        val logger = Bukkit.getLogger()
        logger.info("A thing has been proejctielasdASd")
    }


}
#

whole event class

#

lmao

#

hmm

#

let me test

#

ok for some reason

#

ProjectileHitEvent doesnt even work

#

it doesnt even log

#

anything

#

ye

#

its very weird

#

can we like hop on a call or something

#

i can screenshare

#

in general

#

yeah do you think it could be an issue with spigot?

delicate lynx
#

how are you testing the event

quaint mantle
#

im logging it

#

with bukkit.getLogger

quaint mantle
delicate lynx
#

in game, how are you trying to trigger the event

quaint mantle
#

hi, does anyone recommend me a guide to learn the Spigot API? md_5

#

yeah

#

i threw an xp bottle

#

by right clicking

#

lol

delicate lynx
#

let me test the event

quaint mantle
#

ez minecraft facts

#

||he died of cringe||

undone axleBOT
quaint mantle
#

mm ok thanks 👍

#

guys what is this

#

bruh

#

cant upload images

dusk flicker
#

need to be verified

#

?images

#

we need a command for that

quaint mantle
#

eh ok

#

well lets just say

#

for some reason in intellij

#

why is there a red square

#

next to a line fo code

#

what does that mean

dusk flicker
#

?img oh we do

undone axleBOT
delicate lynx
#

do you have a chat color on that line?

quaint mantle
undone axleBOT
dusk flicker
#

?google might be a good answer otherwise if its not a ChatColor like hyper mentioned

undone axleBOT
quaint mantle
#

h

delicate lynx
#

that just shows the chat color

quaint mantle
quaint mantle
#

thats cool

delicate lynx
#

works for me

quaint mantle
#

weird

#

is it because im using reload confirm

#

/reload

#

....

#

i really hope it isnt

dusk flicker
#

might be

#

dont reload

quaint mantle
#

alr i stopped the server

quaint mantle
native gale
#

I do not get one thing about BuildTools

dusk flicker
#

its always broken a ton of shit

quaint mantle
#

oh

native gale
#

Why does it download portable git

dusk flicker
#

idk Mik

native gale
#

If I already have git on my pc

delicate lynx
#

use git bash terminal

#

it does that for me too

dusk flicker
#

I mean, for basic testing sure it might be fine. If you run into an issue though; restart the server. Some cases the restarts should be semi-quick

quaint mantle
#

mfw cmder

#

done in 11 seconds

#

with only 1 plugin

dusk flicker
#

exactly

quaint mantle
#

if I use esssentials and other large plugins it will take like 1 hour

dusk flicker
#

might as well restart for testing

quaint mantle
#

lmao

dusk flicker
#

Running Spigot or Paper?

quaint mantle
#

pufferfish

#

😎

dusk flicker
#

oh god

#

why are you even asking here in the first place

#

?fork

undone axleBOT
#

SpigotMC maintains the Spigot server. If you are using a fork of Spigot (such as Paper, Airplane, Purpur, or other derivative works), you should seek support in the appropriate Discord servers.

quaint mantle
#

shoot

#

sorry

#

are you still able to help?

#

cause i am building the plugin with the spigot api

#

btw its still not logging

dusk flicker
#

My concern, if it works for hyper but isnt working for you; it might be on the fork's side of things

quaint mantle
#

oh

#

how do I do that...

#

lmao

dusk flicker
#

thats a question for them

#

Do you plan on making this a Spigot resource or just a private plugin?

quaint mantle
#

k let me go ask them

quaint mantle
#

i am only doing this for testing

dusk flicker
#

then i'd build against their api; and ask for their support

quaint mantle
#

and I am using pufferfish for the speed

#

the thing is i am using the minecraft development plugin

#

and they dont have pufferfish

dusk flicker
#

Just run paper then?

#

Paper should give you more than enough speed

quaint mantle
#

btw

dusk flicker
#

You should also get an understanding of maven, so you don't have to actually use the plugin

quaint mantle
#

how would I switch then?

#

like switch from a spigot plugin

#

to a paper plugn

#

oh ill just make another project im too lazy to do that

#

im good

dusk flicker
#

its like 3 lines

quaint mantle
#

what

dusk flicker
quaint mantle
#

what specs?

dusk flicker
#

specs are high on it, dont get me wrong lol. I'll pull exact 1s

quaint mantle
#

what plugins??

#

oh hell nah now im switching to paper bye bye!

dusk flicker
#

hmm that doesnt actually have many plugins on that specific server, let me restart production

quaint mantle
#

wait would it be ok to change the server.jar to a paper server

#

because pufferfishis a fork of paper

#

im pretty sure

dusk flicker
#

most are

#

so that is ran off of a Dedi that has a Ryzen 5 5600X with 64gb of ram. That specific server has 8 gigs allocated to it

quaint mantle
#

what does "Turn your server up to 11."

#

mean

dusk flicker
#

just means more performance

quaint mantle
#

oh ok

dusk flicker
#

thats the production server with more plugins

#

All but two of those plugins are private, two of which are quite big

#

nah just showing reboot times + plugins

#

just a nasty concurrent modification exception from my command lib that I cba to fix

quaint mantle
#

why would you think thats a crash log

#

whats the blur to it tho

#

oh

dusk flicker
#

it is a Warning yeah, its a ConcurrentModificationException. I blurred it as it shows some of the plugins internals that I cant release

#

no idea

#

it just happened one day when I was updating the command system

#

and the command system just works; so why touch it lol

#

i've said I will fix it, might be a few years though

quaint mantle
#

ngl are plugins technically datapacks with more accesibility and ease?

#

because datapacks you can just do execute if

#

but that would take forever

#

and you would need a generator

dusk flicker
#

thats a very, rough description but technically yes

quaint mantle
#

yeah

drowsy helm
#

thats one way to put it ig lol