#help-development

1 messages ยท Page 1755 of 1

chrome beacon
#

A player extends HumanEntity?

young knoll
#

Correct

grizzled briar
#

I see

young knoll
#

player.openInventory works fine

grizzled briar
#

oh does it?

#

My bad, didn't spot it in the docs

#

Thanks

tender shard
#

sure, maven-exec-plugin

vale ember
#

thanks

tender shard
#

or wait

#

@vale ember

#

maven-resources-plugin is easier

#

example

#
<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <id>copy-and-filter-allatori-config</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${basedir}/target</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>${basedir}/allatori</directory>
                                    <includes>
                                        <include>allatori.xml</include>
                                    </includes>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
#

that just copies allatori.xml from one dir to another

vale ember
#

thanks

tender shard
tender shard
grizzled briar
#

so the player inherits all methods from HumanEntity?

#

Alright

tender shard
#

yes

grizzled briar
#

thanks

tender shard
#

np

#

and of course also all methods from Entity, LivingEntity, etc ๐Ÿ™‚

young knoll
#

And AnimalTamer, Attributable, CommandSender, Damageable, InventoryHolder, Metadatable, Nameable, Permissible, PersistentDataHolder, ProjectileSource, ServerOperator

solid cargo
#

does a space count as char?

wide coyote
#

yes

tender shard
#

only when it's within 'single quotes'

#

otherwise it's a "string"

solid cargo
#

yeah ik that

unreal quartz
#

yes

errant snow
#

yes

tender shard
#

yes

little trail
#
[19:39:05 INFO]: [TootyMC] Method onText() got data: {"type": "player", "id": "305017820775710720", "uuid": "915631c8-8ddb-450e-965f-4290be2519e4"}
[19:39:05 WARN]: org.sqlite.SQLiteException: [SQLITE_ERROR] SQL error or missing database (unrecognized token: "915631c8")```
 ```java
CompletableFuture.supplyAsync(() -> {
    try {
        Statement statement = conn.createStatement();
        statement.setQueryTimeout(30);
        statement.executeUpdate(
                String.format("INSERT INTO players (id, uuid) VALUES (%s, %s)", id, uuid));
        statement.close();
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return String.format("Player with id %s and uuid %s added to database!");
}).thenAccept(result -> {
    logger.info(result);
    return;
});```
little trail
#

yes

#

note the 2nd part

eternal night
#

What maniac uses string.format

little trail
#

it mentions the token

eternal night
#

Instead of prepared statements

tender shard
#

yeah that's indeed "creative" lmao

little trail
#

ok may you explain how to do that instead of calling me a maniac?

eternal night
#

Yea sorry XD wasn't meant to be too rude

tender shard
eternal night
#

Prepared statements basically can do what you want

#

They allow you to define the SQL and later safely insert the data

tender shard
#

you can basically just do statement.setString(int, String)

eternal night
#

And it will most likely solve your issue

#

Inserting JSON like this is bound to break SQL syntax

#

And gets you an error like this

tender shard
#

also, for debugging: print out your statement before executing it

eternal night
#

Also your last String.format call is missing the values to replace the placeholders with isn't it ?

tender shard
#

yep

grizzled briar
#

can we format text for item display names?

#

if so how do we do it?

#

using & doesn't work

eternal night
#

Use the chat colour enum

#

Item Display names can have colour

grizzled briar
#

[COLOR] ?

tender shard
#

ChatColor#translateAlternateColorCodes

grizzled briar
#

Oh

grand flint
#
ScoreboardTeam team = new ScoreboardTeam(
                ((CraftScoreboard)Bukkit.getScoreboardManager().getMainScoreboard()).getHandle(),player.getName());
        team.setNameTagVisibility(ScoreboardTeamBase.EnumNameTagVisibility.b);```
Why does .getMainScoreboard() give me an error, it says Method invocation 'getMainScoreboard' may produce 'NullPointerException
grizzled briar
#

thanks again

eternal night
#

setDisplayName(ChatColor.RED + "red Name")

tender shard
grand flint
#

So it will work?

eternal night
#

may

grand flint
#

kk

#

Thank you

tender shard
grand flint
#

Oh alright

tender shard
#

as long as you're not using it in onLoad and your plugin.yml is set to load AFTER the worlds, it's totally fine

grand flint
#

Well the it runs after a player dies and a player can't die before the world loads right?

tender shard
#

yeah^^

grand flint
#

Method invocation 'setDisplayName' may produce 'NullPointerException'

#

What about this it is the same error right?

eternal night
#

ItemMeta may be null

tender shard
#

that's because getItemMeta() returns null when the itemstack is of type Material.AIR

eternal night
#

You'll have to actually null check these

#

^^

tender shard
#

I#d basically just check whether the material is air, and if it's not, getItemMeta will never be null

eternal night
#

Well you'll want to save the item meta in a variable anyway

#

So meh, can just go the 100% safe way

grand flint
#

The material is a potion

tender shard
#

every itemstack that's not AIR will always return an ItemMeta

hybrid spoke
#

but i would like to give air a custom name

tender shard
eternal night
#

Named air is the best

young knoll
#

Thankfully we have an encompassing isAir check

tender shard
#

does CAVE_AIR return ItemMeta?

#

I'm not sure

young knoll
#

No

tender shard
#

kk

quaint mantle
#

i never had nullability warnings on item meta

hybrid spoke
#

its a setting in your IDE

#

maybe deactivated

quaint mantle
#

never really changed anything ๐Ÿคทโ€โ™€๏ธ

hybrid spoke
#

u coding in notepad?

tender shard
#

IntelliJ?

quaint mantle
#

intellij

#

i see

#

getItemMeta has no annotations

tender shard
#

Code -> Inspect Code -> Whole Project

tender shard
quaint mantle
#

if he says no annotations that might be an issue ๐Ÿ™‚

tender shard
#

or maybe you're on 1.8 and it wasn't added 7 years ago lol

quaint mantle
#

1.8 def doesn't have annotations here

tender shard
#

that might be true

grand flint
#

uh I just got minecraft windows 10 for free with the new microsoft launcher?

quaint mantle
#

cool

grand flint
#

is that a bug or?

quaint mantle
#

def not a spigot bug

tender shard
#

but MC 1.8 is like, older than Ubuntu 16.04

quaint mantle
#

Where's upload button on imgur mobile

#

also not a spigot issue

#

Paper has no annotation it seems

karmic mural
#

ayo gamers so I got this fun exception when trying to put Itemstacks into a hashmap:

Cannot invoke "java.util.Map.put(Object, Object)" because "this.items" is null

#

Code used to put the itemstack in items.put(itemname, this.name);

little trail
tender shard
#

you never created the hashmap as it seems

karmic mural
eternal night
karmic mural
#

I changed it from private to Public thinking it might help

little trail
#

i am

tender shard
tender shard
#
public Map<String, ItemStack> items = new HashMap<>();
eternal night
little trail
#

i havent gotten it loaded yet

karmic mural
little trail
#

as i had foodz

tender shard
#

np ๐Ÿ˜„

little trail
#

but yes i dont see any errors ty

karmic mural
#

Gorgeous, now I have the lovely ultra-spammed console on launching my server! ๐Ÿ˜… I've got some console logging just to know things are happening the way I want

#

Oh interesting, it seems the map is wiped clean after each input... What am I doing wrong? Am I wrong assuming it's just like an array except it has defined keys instead of an index?

tender shard
#

e.g. a -> 1, b -> 2, etc

#

so when you use the same key twice, the old value is gone

#

so yeah it's basically like an array that uses objects instead of numbers inside the [] part

karmic mural
#

That's the thing, it's always a new value because I am using a for-loop to create the itemstacks being sent in, so there's always new data used for that

tender shard
#

can you show your code?

karmic mural
#

Yeah I was gonna say I'm going to doublecheck, I'll send a paste if I can't find the issue

tender shard
#

oki

#

it's always helpful to print out the things you are storing before actually storing them

karmic mural
#

Yeah that's what I was doing earlier, would it be an issue if the name used has a space in it?

#

Like "Diamond ore" for the key

tender shard
#

no, that's no problem at all

#

a String is a regular object, like everything else

west oxide
#

hey, i am looking for volunteers / cheap dev service to help make a custom minemen.mc type practice plugin, i don't have a big budget but am willing to pay later if i ever do ...
||also i know that this kind of stuff is very hard and expensive at times but am just asking for help and you either help or not||

tender shard
#

the normal hashmap uses equals() so it doesn't matter that strings aren't the exact same object as your key

tender shard
#

at least not if you're looking for paid devs^^

undone axleBOT
karmic mural
#

If you refresh I added the console output

tender shard
#

lemme see

#

show the code where you are calling this class from

#

you create a new hashmap everytime you call that method

#

so of course it's empty all the time / only has one object

karmic mural
#

It's added to the pastebin.

runic mesa
#

I want to store the max value of my mobs max health in a double, how would i do that?

#

Getting the generic max health has it as an AttributeInstance

tender shard
runic mesa
#

I need to compare it to its current health

#

Thanks! Not exactly but it helped enough for me to get it!

tender shard
#

alright ๐Ÿ˜„ yeah I just wrote it by heart, but it's something like that

tender shard
#

instead you must add it to the existing hashmap

karmic mural
#

Allthestuff =/= names, though?

#

Should I have a map in the generator class that I save the items to?

tender shard
#

maybe upload it to github, it's hard to read code on pastebin if it's more than one class^^

karmic mural
#

Well hey that worked ngl

tender shard
#

okay perfect ๐Ÿ˜„

karmic mural
#

I put the items map in the class that calls that first bit of code and now putting it there works just fine

tender shard
#

nice

karmic mural
#

Still a little confused as to why it was clearing the map every time, I couldn't see a reason why but oh well

#

Oh wait I know now, thank you I was being silly ๐Ÿ™ƒ ๐Ÿ˜…

#

Every time it calls the constructor it initializes a new instance of the class, right? and that's why the map would always be blank

tender shard
#

and also:

#

you did this:

#
        alltheshit = cconfig.getConfig().getConfigurationSection(checkthis).getValues(false);
#

so you always overwrite the existing map every time

karmic mural
#

Oh?

#

I'm not sure I see the correlation

#

since it's a different map, I mean

#

There's definitely a better way to do it, I just want the code to work as I'm presenting it tomorrow at noon as a proof of concept

tender shard
#

oh maybe I looked at the wrong variable then

#

anyway, you got it working now, sooo it's fine ๐Ÿ˜„

karmic mural
#

Indeed

#

I was originally hardcoding every single item which would've been stupid. I realized that quickly and since then was working on how to make it all work the way it does now

#

My last step is adding the mechanism that gives players the items, and with that map being public I actually can.

#

Quick question about that: Obviously I'll be using a listener on BlockBreakEvent, but how should I go about the blocks I want to listen for? Like would I just have an array with the blocks I want it to do something with OnBreak?

#

Say I have an If-statement or something that just checks (map.contains(blockbroken)

#

So If(map.Contains(BlockBroken) {excecute code}

grand flint
#

Hey I don't want to ask to be spoonfed but is there any resources that can help me make a timer that continues even after the server restarts, for example like a 2 day ban but if I restart it it still continues from where it was left off?

eternal oxide
#

you will have to save the time

grand flint
#

Ye how ๐Ÿ˜‚

karmic mural
#

Are you making your own plugin to handle bans?

eternal oxide
#

you could just save the target time to your config and save

grand flint
#

No it's for something else but I may use it for bans as well

#

But won't it have to say so many to the config?

karmic mural
hybrid spoke
#

timestamps

grand flint
#

What if there is like 20 people banned

eternal oxide
#

well you only asked about a timer. You didn;t state how many

karmic mural
#

Just have it save to the config, UUID + Timestamp

grand flint
#

That makes no sense @eternal oxide

karmic mural
#

Save UUID + timestamp and whatever you want the length of the ban to be

grand flint
#

That would save it?

hybrid spoke
#

you need to save it somewhere so it persists a restart

karmic mural
#

`^

tender shard
#

yeah just get a YAML and save it there

grand flint
hybrid spoke
#

YAML wasn't made for data storage, a SQL, JSON or stuff would be better, even if there isn't really a difference

karmic mural
#

Like save the timestamp for when the ban was set to expire

#

JSON indeed

grand flint
#

I think SQL would be better because I want each player to have one

karmic mural
#

So if you want a 2 day ban just save the timestamp for when that would be.

grand flint
#

Oh like when it should be run?

#

Like it saves the time they will get unbanned instead of a timer

karmic mural
#

Yes

grand flint
#

That's useful thank you

karmic mural
#

It's much simpler in my mind at least

tender shard
grizzled briar
#

how can I pass the main class object to subclasses?

tender shard
#

YAML definitely is the easiest solution in this case IMHO

grizzled briar
#

I need it for registering events

grand flint
#

I never used YAML before

tender shard
grizzled briar
#

thanks

grand flint
#

Also I need it to save respawn delays, this is like a hardcore server and my plugin makes it so they respawn after 24 hours

#

So I am guessing SQL would be good or JSON

karmic mural
grand flint
#

It's not a ban, a gamemode change

hybrid spoke
grand flint
#

It changes them to spectator

hybrid spoke
#

anything other than YAML would be better here

grand flint
#

Then after 24 hours back to survival

tender shard
#
public class MyMainClass {
  private MyOtherClass otherClass;
  
  {
    otherClass = new MyOtherClass(this);
  }
}

public class MyOtherClass {
  private MyMainClass mainClass;

  public MyOtherClass(MyMainClass instance) {
    mainClass = instance;
  }
}
#

e.g. like this ^^

eternal oxide
#

if these are just simple timers to ban or prevent a player joining you don;t need any database. Store a time in the players PDC, then check it onJoin

grand flint
#

I am going to use SQL thank you guys

karmic mural
tender shard
#

so: no way to unban players^^

eternal oxide
#

I was assuming he would not need the data outside of the player

grand flint
#

Any tutorial on how I check when the timestamp is finished

karmic mural
#

you'll have to account for offline players as well, I wouldn't know exactly how @grand flint

eternal oxide
karmic mural
# grand flint Any tutorial on how I check when the timestamp is finished
BukkitWiki

This tutorial will guide you in using the scheduler provided by bukkit. It will allow you to defer the execution of code to a later time. This is not the same as registering a Listener, a block of code which is executed in response to an event in the game. Blocks of code may also be scheduled to be executed repeatedly at a fixed interval, with o...

grand flint
#

I think I am going to add a timetamp to SQL, then I can check for offline players as well

tender shard
tardy delta
#

Chat is awake

grand flint
#

Thank you guys, very helpfull all of you!

tender shard
hybrid spoke
grand flint
eternal oxide
grand flint
tender shard
hybrid spoke
grand flint
#

I'm not making a ban system it was just an example

#

Sorry for the confusion

tender shard
tardy delta
#

Anyways how does dependency injection works at An enum? Just a static singleton?

grand flint
#

It's a hardcore thing and if they die they are in spectator for 24 hours

eternal oxide
#

Stored in teh PDC there are no timers running. You simply check the PDC onJoin and remove it if expired

grand flint
#

But it's not on join!!

tender shard
hybrid spoke
#

xD

#

you shouldn't have mentioned the ban example

eternal oxide
grand flint
#

Yes ๐Ÿคฆโ€โ™‚๏ธ

#

It's not a ban @eternal oxide

tardy delta
tender shard
#

maybe create a thread for your "not-ban" thing, the chat is getting quite spammed

eternal oxide
#

ok, so again you asked the wrong question ๐Ÿ˜ฆ

hybrid spoke
karmic mural
#

Well you still need to have something to check onJoin in case the player is offline when their timer runs out @grand flint

grand flint
#

No I gave an example

eternal oxide
#

and we were discussing yoru "example"

karmic mural
#

I have one last question, I want to have a BlockBreakEvent that checks multiple different types of blocks, what's the best way to go about that? Something like If(map.contains(block broken){execute code}

karmic mural
#

Is the way I imagine good or is there a better/more effective way to do it?

tender shard
#

a map?

#

why a map?

#

more like a normal collection/list

#

a map is to store the relationship between two different objects

karmic mural
#

You have a point there chief

#

Yeah so just use a list and check if the block broken is part of it then?

karmic mural
#

The more I think about it a map makes less and less sense ๐Ÿ˜… Just been working with them so much it was stuck in my head still

tender shard
#
private final Collection<Material> blocks = Arrays.asList(new Material[] { Material.DIRT, Material.GRASS_BLOCK});
    
    @EventHandler
    public void onBlockBreak(BlockBreakEvent event) {
        if(blocks.contains(event.getBlock().getType())) {
            // Do stuff
        }
    }
#

basically something like this is what you're looking for, right?

karmic mural
#

Yeah that's pretty much exactly what I am thinking of doing

#

I'm gonna joink that if you don't mind, just to keep it fresh for when I start working on it in the morning

tender shard
#

sorry I have no idea what joink means lol

#

I'm not native english^^

karmic mural
#

take/steal/borrow

tender shard
#

sure

karmic mural
#

Sort of a middle-ground between the twothree

#

(In my opinion)

tender shard
#

I sent it so you can use it ๐Ÿ˜„

karmic mural
#

hehe thanks

torn shuttle
#

so this is a weird and specific question, but
would the monitor priority for chunk load events still not have the chunk checking in as loaded since it outputs the outcome of the event and not the start of said event?

#

because it looks like if you check whether the chunk is loaded at monitor priority mc still reports the chunk as not loaded which has me second guessing monitor priority in general

young knoll
#

Priority just controls what order plugins receive the events

#

They are still all called at the same time

torn shuttle
#

I thought monitor was meant to be the exception of that

#

isn't that the point of monitor being unmodifiable?

young knoll
#

No

#

It isn't unmodifiable

#

Just discouraged

torn shuttle
#

it is unmodifiable

#

iirc you can't cancel it

#

or is that not the case

young knoll
#

Event is listened to purely for monitoring the outcome of an event.

No modifications to the event should be made under this priority

#

Key word is should

torn shuttle
#

oh

#

hm

#

I could've sworn monitor was meant to run AFTER the event

#

well

#

live and learn

regal anchor
#

Hey everyone, I use eclipse and have done "add to index", then commit & push but it has done nothing and this appeared next to my project's name

#

does anyone know what I should do ? thanks

minor garnet
#

I got into a problem, I would need to get a player's camera vector, but I have a method that transforms the player's camera position to another angle, but I add x to the player's pitch, in that I would need to get the vector again from the player's camera, and take this x, but pitch is different from the vector, how i could do that ? bad translator

tender shard
#

technically it's the same as all other priorities

tender shard
#

it looks like you only commited your changes but didn't actually push them

#

also use intellij instead ๐Ÿ˜› SCNR

plain scroll
#

hey

#

i wanna get like "server info" sort of infomation what are some of the things i can use to get this?

#

things like ram usage, cpu usage or network stuff!

west oxide
#

hey

#

so i want to customize an existing plugin

#

is it better to start by decompiling an existing plugin that's decent

#

or

#

use source code from a not so good plugin that's open source ?

hybrid spoke
#

unpopular opinion: if they both are not good enough for you, make your own one,

hardy agate
#

hello! How do I create a substring that grabs the text between two quotes?

Exameple:
/tellPlayer "Hello there, how are you?"
I would want to save the text Hello there, how are you? to a variable.
How do I do this? Thanks!

paper viper
golden turret
# hardy agate hello! How do I create a substring that grabs the text between two quotes? Exa...

join all strings first
now you have 2 ways: regex and string#indexOf

regex:

private static final Pattern pattern = Pattern.compile("\"(.+)\"");

//on the command method
Matcher matcher = pattern.matcher(yourJoinedString);
if (!matcher.find()) 
  return; // oh no :C

String whatYouWant = matcher.group(1);

String#indexOf:

//on the command method
String whatYouWant = joinedString.substring(joinedString.indexOf("\"") + 1, joinedString.lastIndexOf("\"") - 1);```
#

joining strings: String.join("delimiter here", args)

plain scroll
#

ok so i get this rn

#

how can i only get the IP

#

and not the other stuff lol

golden turret
#

getHostName?

#

or getHostAddress

arctic moth
#

ik this sounds dumb, but how do you make an unshaped recipe

paper viper
paper viper
arctic moth
#

thx

golden turret
#

^

arctic moth
#

lol

golden turret
#

and use a list of items

tender shard
#

if you really want to get the 100% actual address, you'll have to do a network request, everything else can be falsified

paper viper
#

^

golden turret
#

^ยฒ

tender shard
#

that's my lib to parse recipes, you'll find some stuff about ShapelessRecipes there

regal anchor
paper viper
#

Cause it's more concise and it's more readable compared to a large ass switch statement

young knoll
#

Not really that big

paper viper
#

Yeah its not that big

tender shard
#

and what should that map contain? Map<String,Function>?

paper viper
#

But still map is better

#

Yeah

tender shard
#

using reflection for a simple ass switch?

#

no thanks ๐Ÿ˜„ I think the current version is totally fine

paper viper
#

Reflection?

#

Wdym

tender shard
#

oh sorry reflection was the wrong word

#

in germany, reflection as in "Class.forName" and "Function" is the same word

paper viper
#

What

#

lmao

tender shard
#

anyway I don't see any problem with the current switch/case

golden turret
#

๐Ÿ˜Ž ๐Ÿ‘

paper viper
#

Also I actually really don't like the idea of you turning this into an util class. I think its better for the user to actually extend a specific class rather than call an util method. But thats just how I think

#

For example, switch statements can be really bad for OOP sometimes especially with all those static calls and stuff

#

i cant explain it very well, but conclure has a better explanation

tender shard
#

I don't see anything wrong with this approach

#

and it doesn't require anything from the main class so no idea why it should NOT be in a utility class

arctic moth
#

how do u make custom blocks? im mainly just trying to make a tnt that has a special explosion, while not altering the original tnt

tender shard
golden turret
#

but the best way to do is what @tender shard said

hardy agate
vale ember
#

Hey, I have question.

  1. If I add support for 1_8_R3, than my plugin won't run on 1.8?

  2. On GitHub repo of AnvilGUI plugin I found 1_14_4_R1 and 1_14_R1 versions, wtf?

tender shard
paper viper
#

It's not wrong, and you aren't wrong in that it can't be a utility method, but usually want to avoid switch statements when dealing with something like this. For example, you could convert your recipe statements into separate class with a Recipe parent class or smthing, and make users extend a specific class or something instead.

#

Anyways it's not a big deal at the end of the day

vale ember
golden turret
arctic moth
tender shard
#

people could do something like

recipe:
  type: shapeless
  ...
#

I don't see a reason to split it up

paper viper
#

Thats even better. Make your parent class implement ConfigurationSerializable

#

and make subclasses add custom logic

tender shard
#

but yes, you're right, there's always at least 10 different solutions for everything

hardy agate
# golden turret

oh right nvm sorry ๐Ÿ™‚

also, it says that the two arguments aren't ints

tender shard
vale ember
paper viper
#

cause OOP (:

golden turret
#

almost that they are 1.14.4 and 1.14

tender shard
young knoll
#

I really need to write a system for config recipes

hardy agate
quasi patrol
#

How do I make it so people without a certain permission cannot like view a command?

tender shard
vale ember
paper viper
#

well that isnt the point im tryna bring here lmao

tender shard
paper viper
#

you should turn stuff into objects if you can

tender shard
golden turret
paper viper
#

but obviously thats too general of a statement and varies greatly

tender shard
vale ember
paper viper
#

Well, that's how API's technically work

tender shard
# quasi patrol How do I do that though?
commands:
  sort:
    description: Toggle automatic chest sorting or change your hotkey settings
    usage: |
            /<command> -- Shows the player setting GUI
            /<command> on -- Enable automatic chest sorting
            /<command> off -- Disable automatic chest sorting
            /<command> toggle -- Toggle automatic chest sorting
            /<command> reload -- Reloads config
            /<command> resetplayersettings -- Resets all players' sorting settings
            /<command> help -- Shows help about this command
    aliases: chestsort
    permission: chestsort.use
  isort:
    description: Toggle automatic inventory sorting or sorts the player's inventory.
    usage: |
            /<command> -- Sort your inventory
            /<command> toggle -- Toggle automatic inventory sorting
            /<command> on -- Enable automatic inventory sorting
            /<command> off -- Disable automatic inventory sorting
            /<command> hotbar -- Sort your hotbar
            /<command> all -- Sort your inventory and hotbar
            /<command> help -- Shows help about this command
    aliases: [invsort,inventorysort]
    permission: chestsort.use.inventory
permissions:
  chestsort.use:
    description: Allows chest sorting
  chestsort.use.inventory:
    description: Allows inventory sorting
  chestsort.reload:
    description: Allows to reload the config via /chestsort reload
  chestsort.resetplayersettings:
    description: Allows to reset every player's sorting settings
  chestsort.hotkey.shiftclick:
    default: true
  chestsort.hotkey.middleclick:
    default: true
  chestsort.hotkey.doubleclick:
    default: true
  chestsort.hotkey.shiftrightclick:
    default: true
  chestsort.hotkey.leftclick:
    default: true
  chestsort.hotkey.rightclick:
    default: true
  chestsort.hotkey.outside:
    default: true
  chestsort.automatic:
    default: true
#

sth like this

paper viper
#

You have the library proxy of what you are using, and also an abstraction

#

to make it simpler and add necessary methods

vale ember
tender shard
paper viper
#

Yeah lol

mortal hare
paper viper
tender shard
#

sorry I don't understand what you mean with library proxy

#

my english isn't cursed but it's also not perfect ๐Ÿ˜„

vale ember
mortal hare
#

Any ideas how to disable collision for packet entity

#

adding it to team and sending the packet back

#

wouldnt work since spawn living entity

#

doesnt generate uuid

#

only spawn player requires it

paper viper
# tender shard sorry I don't understand what you mean with library proxy

For example, you have a proxy like as in the library part. Suppose your app uses a specific library or something. You want to separate the logic such that users can just refer to your methods instead of exposing the library you are using for the users. And usually we use abstraction in this case, and as we create more abstractions it essentially becomes "simpler" for the user.

vale ember
mortal hare
#

1.14.4

tender shard
paper viper
#

Yea its a bit complex lol

vale ember
paper viper
#

im not the best at giving explanations

tender shard
#

no problem, maybe I'm also just a bit stupid lol ๐Ÿ˜„

mortal hare
# vale ember It's 1_14_R1

maybe that's a mistake of the lib to name it like that. The name doesnt matter, the thing that matters is that its injected into the plugin

vale ember
#

Ok

tender shard
#

It's hard to keep track of three different conversations in the same channel lol

mortal hare
#

I would add it to the scoreboard team

tender shard
#

ah I see. But what's a packet entity? Did you create a custom entity that you do not want to have any collisions?

mortal hare
#

but how could i get the UUID

#

of the packet entity

#

its the entity spawned with Spawn Living Entity packet

#

its clientside entity

tender shard
#

it does not have a "real" UUID

mortal hare
#

that's the problem

tender shard
#

yeah

mortal hare
#

i cannot add it to team

tender shard
#

for the server the entity doesn't exist

mortal hare
#

if i don't know the uuid

#

its clientside but still has the collision

tender shard
#

okay so you want the client to believe that your fake entity belongs to their team, right?

#

there's probably some scoreboard packet you can use

mortal hare
#

that's the problem, in order to add entity to scoreboard you need to specify its UUID

#

not entityID

tender shard
#

yeah, the entityid

#

but your custom entity should have one

mortal hare
#

edited

#

sorry

tender shard
#

oh alr

dry forum
#

i have a bukkit runnable class with a runnable that repeats every minute but how can i activate that runnable so it runs forever?

tender shard
#

hm sorry I don't know then

dry forum
#

??

mortal hare
#

how do holographics displays do this

tender shard
#

well you say it runs EVERY minute?

mortal hare
#

it spawns packet level armor stands right

tender shard
#

that would mean that it already runs "forever"

dry forum
#

yeah? i dont neeed to know how to make a runnable

#

i need to know how to start it/activate it

#

or is it already by default?

tender shard
#

by calling runTaskTimer on your custom runnable object

dry forum
#

what?

tender shard
#

show your code pls

mortal hare
#

new BukkitRunnable() {}.runTaskTimer() smth like this

dry forum
#
    public void run() {

        Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> Bukkit.broadcastMessage("test"), 0L, 80L);
    }
}``` i just need to know how to start this
tender shard
dry forum
#
    
    private main plugin;
    public autochecker(main Main) {
        plugin = Main;
    }

    @Override
    public void run() {

        Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, () -> Bukkit.broadcastMessage("This message is shown immediately and then repeated every second"), 0L, 40L);
    }
}``` erm ok
tender shard
#

okay you can do this:

#
new autochecker().runTaskTimer(yourMainInstance, 20, 20);
#

that will run it every second

#

also btw pls use proper java naming schemes

#

it should be called AutoChecker instead of autochecker

#

also erm

#

why are you scheduling a task within your runnable

dry forum
#

in my main class or?

tender shard
#

I think you didn't understand what a runnable actually is

dry forum
#

what...

#

i know what it does

tender shard
#

no you don't

#

you are creating a runnable that will execute every second

dry forum
#

thats the point

tender shard
#

and every second it schedules another runnable that gets executed every 2 seconds

#

that's probably not what you want

#

you actually want to do this:

#
public class autochecker extends BukkitRunnable {

    @Override
    public void run() {
        Bukkit.broadcastMessage("This message is shown immediately and then repeated every second");
    }
}
#

and now you can just do this:

#
new autochecker().runTaskTimer(yourMainInstance, 20L, 20L);
dry forum
#

ah ok thanks ill try it

tender shard
#

and pls rename the class to AutoChecker

#

class names should be in UpperCamelCase instead of lowercaseallthetime

dry forum
#

from new autochecker().runTaskTimer(this, 20L, 20L); i get cannot be applied to '()'

tender shard
#

show the full error pls

#

also I edited the code, did you copy the most recent version?

dry forum
#

yeah

#

'autochecker(com.jere.sscore.main)' in 'com.jere.sscore.listeners.autochecker' cannot be applied to '()'

tender shard
#

remove the main instance from the constructor

#

you did something like "new autochecker(this)"

#

remove "this"

dry forum
#

same error

tender shard
#

show the full code pls

dry forum
#

new autochecker().runTaskTimer(20L, 20L);

tender shard
#

okay now show autochecker class pls

#

oh wait

#

wait

tender shard
lean gull
#

does anyone know what's the best way to make personal worlds? like i want to have personal mines in my server and currently my idea is to have 500 worlds (the amount of player slots i have) and then when a player logs on, the plot would change to the default build, and then set the ores, and when they log off it will be set to air so then the next person can occupy that world slot. if anyone has a better idea please tell me though

tender shard
dry forum
tender shard
lean gull
#

ok, so what do i do?

dry forum
#

ah

tender shard
#

from the runTaskTimer method, no

lean gull
#

there's another thing i can do which is to have everything in the same world but far away from each plot

dry forum
#

it works thanks ๐Ÿ˜„

tender shard
tender shard
lean gull
#

wdym by load tho

tender shard
#

loading a world is quite heavy, I don't think it's a good way to have one world per player

#

well but if I would have to do it:

#

I would do Bukkit.createWorld whenever a player joins

#

and unload it when a player leaves

lean gull
#

i can do it all in the same world, it won't be much of a difference

tender shard
#

hmmm sooo

lean gull
#

i'm just looking for the best option

tender shard
#

what exactly are you trying to achieve?

lean gull
#

resource wise

tender shard
#

every player should have their own world, right?

lean gull
tender shard
#

and they can TP to their mine using a command or sth similar, right?

lean gull
#

well they can't actually build anything in there, it's just like a build with an ore mine inside of it

tender shard
#

yeah then I'd do it as I said: create a world for the player when they join

#

buuut

#

I'm not sure whether creating a new world stalls the main thread

#

it probably does

lean gull
#

what's that mean

#

"stalls the main thread"

tender shard
#

it means: server lags for 10 seconds when creating a new world

lean gull
#

ah

tender shard
#

you do not want that to happen

lean gull
#

maybe i can have all 500 worlds at once, but like only load the chunks when a player is in a world for their world?

tender shard
#

you really, really, really do not want your server to load 500 worlds

#

trust me: you don't want that

lean gull
#

ok, so all in one world?

tender shard
#

are those mines restricted somehow? or are they really "endless" in terms of area?

#

if they are restricted in area: yes, just use one world for all players and have them stay in their designated area

mortal hare
#

OMG

#

IM SO DUMB

lean gull
#

ok

mortal hare
#

I literally made UUID.randomUUID()

#

in Spawn Living Entity packet

lean gull
#

is it bad if each plot is far away from another plot?

mortal hare
#

and wondering where i could get the UUID

lean gull
#

like let's say 1k blocks

mortal hare
#

LOL

tender shard
#

well now you found it ๐Ÿ˜„

tender shard
#

BUUUUT

#

here's one thing:

#

when your players teleport to their mine, the server stops until the chunks are loaded

#

are you using paper?

lean gull
#

i think

tender shard
lean gull
#

what's async?

tender shard
#

async means: it loads the chunks WITHOUT having the main thread wait for them to load

#

sync = server stops until chunks are loaded

#

async = server continues to work meanwhile

lean gull
#

well i'm using localhost and for that i use paper, but i'm not 100% sure what my server does on my main server that is on a server hosting service

lean gull
#

kk 1 sec

tender shard
#

so as said: if your main server runs paper (or a fork like purpur, yatopia etc) you can use PaperLib and load the chunks async (= without stopping the "normal" game) and then teleport the player to their mine when the chunk loading is done

lean gull
#

can your server be on velocity or is that not a thing

tender shard
#

velocity is the proxy that connects your servers, like bungeecord

#

it doesn't have anything to do with the software that each server is running

lean gull
#

well from what i understand it's on a velocity proxy, and the server is on paper

tender shard
#

ok then you can safely use PaperLib (link is above)

young knoll
#

I mean you can use PaperLib either way

#

That is what it's for

paper viper
#

just shade

#

if you want

tender shard
paper viper
#

for spigot users

tender shard
#

you can use this method to teleport players to their mines in your custom world

young knoll
#

I believe you need to shade either way

lean gull
tender shard
#

okay lemme rephrase it

#

the normal server does 20 ticks per second

#

that means

#

every second, it checks 20 times whether players are getting damage, mining blocks, etc

lean gull
#

like a repeating command block?

tender shard
#

but when you load a new chunk, the server waits until the chunk has finished loading. so it might not get the full 20 ticks per second

#

that means: players experience lag

lean gull
#

ok

tender shard
#

paperlib however can avoid this

lean gull
#

so that's sync?

tender shard
#

normally, everything runs in sync on a normal MC server

crisp arch
#

is there like a "on till soil" event? because I want something to happen when a hoe tills a block

tender shard
lean gull
#

so what exactly is paperlib and what exactly is async?

crisp arch
tender shard
#

async means you can do stuff without stopping the main thread -> you can do stuff that would normally cause lag

#

(in very simply words)

lavish hemlock
#

Ye?

tender shard
#

exactly

#

if running on spigot, all those paperlib methods will do stuff like on normal spigot, e.g. causing lag^^

tender shard
#

you can however NOT get the resulting block

crisp arch
#

so how do i know if the block was tilled

#

oof

tender shard
#

because the block has not changed when using this method inside the vent

lean gull
#

do i have to like check these and apply them?

tender shard
#

you can check whether the block is dirt/grass and whether the player had a hoe in their hand

crisp arch
#

should i setup a runnable that checks the block after a tick?

#

but i think that is a bit inconvenient

tender shard
tender shard
lean gull
#

that's in the project structure > modules thing on intellij

tender shard
tender shard
lean gull
#

ye

crisp arch
#

when a player uses a hoe, they get overpowered stuff

lean gull
#

i used a yt tut

crisp arch
#

but i need to make sure that they aren't just rightclicking on non-tillable blocks with a hoe

tender shard
crisp arch
#

i need to make sure the block actually changed

tender shard
#

oh sorry wrong link

#

@lean gull

tender shard
lean gull
#

what about the modules thing tho

tender shard
tender shard
# lean gull ^^^

ignore that. add the stuff from the link I sent to your pom.xml

#

then tell IntelliJ to reload the pom.xml and you can use PaperLib now

crisp arch
#

spigot should def add a hoe event

#

but thanks

tender shard
#

btw

#

you can also just do this:

lean gull
#

ok done

tender shard
#

listen to PlayerInteractEvent on monitor

#

check if player is holding a hoe and if right-clicked block is dirt or grass

#

if event isn't cancelled -> the soil will be tilled

lean gull
#

how do i check if i did it correctly

tender shard
lean gull
#

doesn't suggest it, i'm guessing that's bad?

#

i'm also guessing the main class that extends javaplugin is not supposed to be gray

tender shard
dry forum
tender shard
#

it will run first time after one minute, and then 4 times per second after that

dry forum
#

im confused with the delay and period thing all i want it to do is run once wait 1 min then run again, but the code i sent runs once after 1 min then spams my chat

#

and ive tried looking at other forums and havent found anything

young knoll
#

Then use 0, 20 * 60L

crisp arch
#

for example, coarse dirt

dry forum
#

when i used that it only ran once then not again'

tender shard
#

then check those too^^

crisp arch
#

what its ok, ill use the bukkit runnable thing

#

its easier lol

tender shard
young knoll
#

Where are you calling this

#

Because that does only spawn once

tender shard
#

yeah you're probably calling it in a runnable or some event

quaint mantle
#

anyone know of a good hub plugin which is compatible with a queue plugin?

twilit wharf
#

my command isnt being executed upon sending the command

#

I have like 20 other commands that work perfectly fine

tender shard
twilit wharf
#
    @Override
    public boolean onCommand(CommandSender sender, Command command, String s, String[] args) {
        System.out.println("VChest command triggered!");
        if (!(sender instanceof Player)) {
            System.out.println("Not Player Executing Command");
            return false;
        }

        if (args.length > 0) {
            int id = Integer.parseInt(args[0]);
            if (VChest.exists((OfflinePlayer) sender, "" + id)) {
                VChest.getVChest((OfflinePlayer) sender, "" + id).show((HumanEntity) sender);

                System.out.println("Opened vChest");
            } else {
                create((OfflinePlayer) sender, id);
            }
        } else {
            if (VChest.exists((OfflinePlayer) sender, "1")) {
                VChest.getVChest((OfflinePlayer) sender, "1").show((HumanEntity) sender);
            } else {
                create((OfflinePlayer) sender, 1);
            }
        }
        return true;
    }
tender shard
#

what exactly is the problem?

twilit wharf
#

it doesnt run

tender shard
#

does it print this? System.out.println("VChest command triggered!");

twilit wharf
#

no, like in minecraft, it shows the auto fill /vchest but it doesnt do anything upon sending command

tender shard
#

you didn't properly register the CommandExecutor

#

can you show your onEnable()?

twilit wharf
#
getCommand("vchest").setExecutor(new CommandVChest());
tender shard
#

hm

twilit wharf
#
    vchest:
        description: Opens a target vChest
        usage: /<command> [player]
#

thats the plugin.yml

tender shard
#

okay stupid question, but are you sure that you actually properly restarted your server and are using the newest .jar file you compiled?

twilit wharf
#

yes

tender shard
#

(You'd be surprise how often this is the problem lol)

#

okay then I have no idea. It should work fine

#

is your plugin on github or sth?

twilit wharf
#

no, it is for a network

#

and the owner doesnt want the code shared

tender shard
#

well okay sorry but I can't help without seeing the full code. The stuff you sent looks fine

twilit wharf
#

I can try and upload the bare bones

#

idk

#

wait

#

goodness

tender shard
#

you can also DM the sources or sth if you don't wanna share it publicly or sth

twilit wharf
#

I know why

tender shard
#

oh

#

what is it?

twilit wharf
#

I made a thing that stops the cmd from being flooded with uneeded outputs

#

and it just filters it

tender shard
#

lol

twilit wharf
#

so it never makes it to the console

tender shard
#

okay so you got it working now?

twilit wharf
#

um, no

tender shard
#

hm

twilit wharf
#

it still doesnt run the code

#

but it makes it to the command

tender shard
#

as said, feel free to DM the source to me, otherwise I can't do much

twilit wharf
#

k

#

one sec

prime reef
#

what's the most efficient way to raycast in spigot?

#

I cannot avoid needing an absolute fuck ton of raycasts.

#

We've got stupidly good servers but I don't want to burden anyone running my stuff on smaller ones

granted, this is not a plugin for small servers

tender shard
prime reef
#

for either blocks, entities, or both, I should add

tender shard
#

alright

vestal dome
#

I'll wait u guys finish

tender shard
#

do you already have any working code etc? @prime reef

tender shard
vestal dome
#

nah I'll wait..

#

no problem ๐Ÿ™‚

tender shard
#

I probably cannot help with raycasting anyway, so just ask your questions pls ๐Ÿ˜„

#

no need to wait

vestal dome
#

how can I calculate how far a player is from the closest point of a world border?

tender shard
#

hm let me think for a few mins ๐Ÿ˜„

vestal dome
#

To some extent I know that..

tender shard
#

is your world border "centered"?

#

like, is the origin 0, 0?

vestal dome
#

may not be..

#

if I want to change it something just to add more stuff to the map

tender shard
#

hm alrighty

#

okay I'll just brainstorm a bit, it probably won't help you, but maybe it does

#

imagine a player is at X30 Z50

#

and the world border is set to X-100 to X100 and Z-100 to Z100

#

world borders are always square, right?

#

so basically you only have to get the difference in either the X or Z coordinate, right?

#

like when the player is at X30 and Z50, they are 50 blocks away from Z100

#

right?

vestal dome
#

hm

#

alr

#

ty

tender shard
#

did this actually help you? lol

vestal dome
#

yes

tender shard
#

okay awesome ๐Ÿ™‚

#

let me know if you need more input ๐Ÿ˜„

prime reef
#

the latter is just something like

#

player.getLocation().subtract(worldBoundingBox.getCenter()) or something

vestal dome
#

yeah

prime reef
#

a boundingbox is p much just a box

#

and then once you've got that vector, just uh

tender shard
#

there's also a distance(Location) and distanceSquared(Location) method

prime reef
#

boundingBox.intersects(vector)

#

wait no

#

boundingbox intersections...are wild

tender shard
#

but @prime reef what exactly is your question about raytracing? You just asked what's the "fastest" method, but of course we need a bit more input about what you're actually doing before being to tell whether that's good/bad etc ๐Ÿ˜„

prime reef
#

ah here we are

tender shard
#

of course every block/entity has it's own boundingbox, you probably already know that

prime reef
#

@vestal dome this might be what you want

#

you can use the player's location as the first parameter and the difference between their location + world center as the second

prime reef
#

in a runnable, I mean, but that's not really efficient

tender shard
#

you can get System.nanoTime() when the command starts, then get it again when the command completes. and the difference between both values is the execution time in nanoseconds

prime reef
#

difference between System.currentTimeMillis() at the end and start of your code, respectively

#

you can use nano as well yeah

#

for more precision

tender shard
prime reef
#

elapsed

tender shard
#

to measure exec time, always use nanotime, milliseconds isn't very precise

prime reef
#

but dw, occurred is close enough to know what you're getting at

tender shard
prime reef
#

yeah I typically use milliseconds for ability cooldowns and status effect durations/tickrates since there's some wiggle room

#

and it's easier for end-users to configure ms in config

tender shard
#

yeah for cooldowns etc milliseconds is totally fine, but if you really want to measure execution time, use System.nanotime instead

prime reef
#

^ this p much

#

Actually I needed that just now for a school project so thanks LOL

tender shard
#

๐Ÿ˜„

prime reef
#

measuring realtime exec time of sorting algorithms and doing some boring proofs on asymptotic analysis

tender shard
#

did you see the youtube video that audio/visualizes sorting algos?

#

it's awesome lol

#

last one is the best

#

it randomly shuffles an array until it's actually sorted lmao

#

but to get back to your raytracing thing @prime reef

#

You should ask in the spigot forum instead

#

I'm sure you'll get some proper replies from math experts there

#

this discord is more suited for some simple questions

#

raytracing is too complicated for most of the people around here, including me ๐Ÿ˜„

vale cradle
#

Hi, I've got a question, can you put custom text in the scoreboard below name?

tender shard
#

you could of course just add an additional line

#

with scoreboard you mean the thing on the right, NOT the normal tablist, right?

vale cradle
#

I mean below the name of the player

#

DisplaySlot.BELOW_NAME

#

Apparently you can but I cannot manage to find the Spigot way to do it

tender shard
vale cradle
#

you can get the score of the player, but if you want to modify it you can just use numbers

tender shard
#

hmm alright sorry I'm not very familiar with scoreboards, let's wait for someone else to answer

prime reef
# tender shard https://www.youtube.com/watch?v=kPRA0W1kECg

Visualization of 12 different Sorting Algorithms as a Cube with sound.

โœ… Subscribe: https://www.youtube.com/CompilerStuck?sub_confirmation=1

Donate, if you want to support me: https://streamelements.com/compilerstuck/tip
This is totally not necessary, but helps me give you more of those visualizations :)

Each dot, representing a part of the C...

โ–ถ Play video
prime reef
#

the amount of snarky comments I've seen there while looking for references lmao

#

guess it's worth a shot since I have a forum account

tender shard
prime reef
#

time to flip the ol' coin

prime reef
#

anyway offtopic, mb

tender shard
#

np, we go offtoic all the time here lol

#

but yeah both raytracing and scoreboards are stuff I'm absolutely clueless about lol

#

@vale cradle I'm sure someone in the forum can help you with your question

vale cradle
#

nvm, it is done by using the objective's display name

tender shard
#

scoreboards is one of the things that are discussed there everyday

#

ooh so you already got it working?

#

awesome

vale cradle
#

no, I just figured out how it is supposed to work ๐Ÿ˜†

young knoll
#

Won't the numeric value still show with the DisplayName

vale cradle
#

yes

#

but still

ivory sleet
#

lookin blue :p

vale cradle
#

This is the most I can expect to do ig

vale cradle
tender shard
#

what language is that?

ivory sleet
#

kotlin probably

tender shard
#

return@handle?

#

doesn't look like kotlin

ivory sleet
#

thats completely valid kotlin lol

vale cradle
#

it is

tender shard
#

oh alright

#

I'll have to googlet what it means lol

#

I'm a kotlin noob

ivory sleet
#

its to resolve nested returns in nested functions

#

sort of

vale cradle
#

you can return to different scopes from kotlin

tender shard
#

aaaah it's like a label

ivory sleet
#

yuh

vale cradle
#

ya

tender shard
#

okay now I understand what it's doing^^

vale cradle
#

it is indeed a label

tender shard
#

like break <label>

#

oki

lavish hemlock
#

ye that's Kotlin

#

@ represents a scope/label

#

it's used by break, continue, return, this, and super afaik

#

e.g. to refer to a field outside of a receiver's scope, say, the enclosing class, you can do this@EnclosingClass.myField

#

as opposed to Java's EnclosingClass.this.myField (which is mainly only used when two interfaces have the same method)

tender shard
#

does anyone know how to register a String flag for worldguard?

#

I know how stateflags work but I couldn't find anything about string flags in WG's API docs

#

pls ping me when someone answers^^

lavish hemlock
#

no

#

:)

valid solstice
#

how to find the Location of the nearest diamond ore within n chunks around a certain player?

quaint mantle
#

Facebook Chad

valid solstice
#

yes

quaint mantle
#

i guess just check how many diamonds are there

#

then just put it in a SortedMap<Double, String> = new TreeMap<>();

#

the double would be you get the distancesquared from the player to the diamond

young knoll
#

Gonna have to iterate to find them

#

Not the fastest thing in the world

quaint mantle
#

that was my previous way to find the nearest location to spawn the player

#

so uhhh

#

i can suggest that only lol

#

other plugins use some math and stuff

#

i just straight up waste 1 day and found the treemap

young knoll
#

I wonder how that X-ray plugin does it

quaint mantle
young knoll
#

I mean, it locates nearby ores and uses a debug feature to highlight them

#

Pretty cool

quaint mantle
#

hmm

#

highlight block

#

i saw that on the plugin named tweakin i think

#

about locates neary ores then they just maybe find it in the chunks players can see lel

valid solstice
#

so do i have to iterate through every block and check if it matches the finding block?

#

something like a linear search?

rough jay
#

I'm looking for a way to change a player's nametag (the text above the player head)

#

any idea how?

rough jay
#

?

#

what is tab plugin?

quaint mantle
#

wait do spigot allow mc-market here

hardy agate
#

what does this code mean?

public Varm(Main plugin) {
    this.plugin = plugin;
    plugin.getCommand("varm").setExecutor(this);
}

(The name of my plugin is varm)

hardy agate
#

ok

#

so I'm trying to run a function from another file

#

how

hardy agate
valid solstice
rough jay
#

Dude constructors are basic Java knowledge

valid solstice
#

^

rough jay
#

Also plugin.getCommand().setExecutor() should be in a method called onEnable

hardy agate
#

it is

valid solstice
#

you should know this by now if you're working with spigot api

hardy agate
quaint mantle
rough jay
quaint mantle
#

if i remember right

young knoll
#

Yeah you can do it in the constructor of the class

#

Technically

quaint mantle
#

yup

#

ig i remember it right :yay:

mint briar
#

How i can disable spigot Loaded library messages?

sullen marlin
#

It's sort of a security thing as it shows you what code is running on your server

young knoll
#

Havenโ€™t seen that before

#

Is that the new library loader

sullen marlin
#

yes

sullen marlin
mint briar
#

oh, okay

young knoll
#

Just highjack the logger

stable ice
#

How is the lingering potion entity called?

sullen marlin
#

AreaEffectCloud or something

stable ice
#

O thanks!

#

AREA_EFFECT_CLOUD

quaint mantle
sullen marlin
#

can you be more specific

quaint mantle
#

there is a potioneffecttype and its wrapper extends itself, then in potioneffecttype u guys put in the wrapper again

#

i think it would be a lock?

sullen marlin
#

clearly it's not a deadlock because it works; and I don't know

quaint mantle
#

lel

sullen marlin
#

why don't you?

quaint mantle
#

yes

#

but i still have no idea how this thing work

#

so until then i will just wait...

quaint mantle
#

i wonder how no one points out that that needs a rework lol

#

wolfy pro el crack

young knoll
#

They do

#

Quite often

quaint mantle
sullen marlin
#

much easier to point out things than actually rework them

#

lot of the former, not much of the latter

young knoll
#

Point out that it needs a rework

quaint mantle
#

hmmm

young knoll
#

Iโ€™ll rewrite all of bukkit for $30 an hour