#help-development

1 messages · Page 509 of 1

kind hatch
#

Although, like it was mentioned before, the overhead will make things slower.

#

So that's why most people just have everything run locally.

exotic zinc
#

sherlock. I said its not recommended to do it though /mnt/c

remote swallow
#

okay? its not like you are going to be assasinated for doing it

hazy parrot
#

Using files on host from wsl is so fucking slow

exotic zinc
#

I realized

remote swallow
#

if its that much faster on linux wouldnt it be somewhat smarter to just dual boot linux

kind hatch
#

^

exotic zinc
#

dude

kind hatch
#

From what I can tell, it seems like you actually need to run two instances of intelliJ with your setup. One for your local changes, and then the WSL one for compiling.

exotic zinc
#

I just tried to open a wsl project on my host. It doesnt work, even though IntelliJ supports wsl. I complained about it because me and someone else talked about IntelliJ problems a few days ago.

kind hatch
#

At a certain point, you have to ask yourself. Is it really worth the hassle you're going through?
Is it really that much faster? I remember back when I still used Windows that my compile times were roughly the same. Maybe it was a little bit slower than linux, but only by like 10 seconds or a minute at most on larger projects.

exotic zinc
#

if it doenst work i will go back to run it on my local machine. I just expect some form of quality from a 300€ product yk.

exotic zinc
#

i stopped at like 30 minutes on my host, whereas the whole thing completed in like 15 minutes on my wsl

restive mango
#

i do get the feeling that people eagerly jump on it being an x-y problem here

kind hatch
#

Are you talking about spigot patches or something else?

restive mango
#

when in reality, a lot of people do have reasons to ask the questions they ask

exotic zinc
#

I didnt even ask a question

restive mango
#

but i am noob

tardy delta
#

what

exotic zinc
exotic zinc
kind hatch
#

It actually does matter. Different software has different rules for compiling.

#

And project size also plays a role.

river oracle
#

I'd just run linux bear 🐻 metal tbh

exotic zinc
kind hatch
#

Take a chromium or firefox compile for instance.

#

They take at least 30 minutes.

#

It's partially due to their size, but they have several compilation steps and verification checks that run. I'd seldom say that it's similar to what buildtools does, but on a much larger scale.

#

And at least BuildTools has improved upon its compile times.

#

However, another part of it is your compilation environment. There are settings for thread allocation and even flags you can use to get more resources to use.

exotic zinc
#

BuildTools takes 5 minutes to execute on windows and 2 minutes on my wsl

#

scale it

#

i didnt even notice it applying patches on linux but it was stuck like half a minute at applying patches for spigot-server

undone axleBOT
blissful wagon
#

how i check if player holding a item ? i tried

e.getPlayer().getItemInHand() != null

but its always true

pseudo hazel
#

check if its air as well

#

or itemstack probably has an isempty method

exotic zinc
#

if you want to get the item in the main hand

remote swallow
#

you dont need to do the != just use #isAir()

wet breach
pseudo hazel
#

yeah I thought one already existed

#

but thats because I added it to my wrapper xD

remote swallow
#

@young knoll pr go

remote swallow
pseudo hazel
#

oh nvm yeah thats what it is

pseudo hazel
#

nothing interesting in the class really

white root
#

How do I go about creating a custom entity selector tag?
For example, if I wanted to be able to use /kill @e[type=#hostile], how do I register that #hostile tag?
I know that in my plugin I can simply use <Entity>.isHostile() to get if an entity is hostile, but how do I register that as an entity selector tag?

#

Or some other selector tag too, this is just an example

strange rain
young knoll
#

Who what huh

#

Who ping

remote swallow
#

me

#

you have a new pr to do

young knoll
#

for wha

#

t

strange rain
#

Coll

#

How do I shift a location in a forward direction

#

based on like which way it is facing

remote swallow
young knoll
#

For what

remote swallow
#

do the read

young knoll
young knoll
strange rain
#

I thought

#

So I want to move it forward

#

based on the direction

remote swallow
strange rain
#

EpicEbic

#

u you must know you seem smart

remote swallow
#

who

young knoll
#

Locations can have a pitch and a yaw

strange rain
white root
# strange rain So I want to move it forward

do something like this```java
Location loc = /* Your location /
Int distance = /
Your desired distnace */
Vector direction = loc.getDirection()
Vector offset = direction.multiply(distance)
Location newLoc = loc.add(offset)

young knoll
#

But that isn't really a direction, and most locations just have world, x, y, z

white root
#

Is in kotlin, but you can extrapolate that into java

strange rain
white root
#

dont worry about that,

#

just loc is your existing location

#

and distance is how far you want to move

strange rain
#

But what is late init

remote swallow
#

some kotlin thing

strange rain
#

og

white root
#

I just used that so intellij would autocomplete as if it were an actual Location
without actually having a Location

young knoll
#

But yes if you have a vector you can just add it to a location

strange rain
ivory sleet
#

u might wna set y zero, depending on what u're doing, then follow that up with a normalization

white root
#

edited the original suggestion to be java
but yes, normalize your vectors

strange rain
#

Whats normalization do?

young knoll
#

Makes the length 1

strange rain
#

The length of what?

young knoll
#

The vector

opal juniper
#

Magnitude, not length

#

🤓

strange rain
#

So, ```java
eyeLoc.add(eyeLoc.getDirection().multiply(.5).normalize())

young knoll
young knoll
strange rain
#

Dang rekt

opal juniper
#

u should have corrected them!

#

PR

twilit roost
#

anyone has any idea what usr/glibc-compat/lib/libc is?
I think its the server trying to keep worlds up?
I'm trying to optimize my plugin but idk what that is

https://spark.lucko.me/FI8rqtnYuA

spark is a performance profiler for Minecraft clients, servers, and proxies.

ivory sleet
#

Magnitude and length are both valid terms dw

opal juniper
#

yeah it was sarcasm

white root
opal juniper
#

r/whoosh

twilit roost
strange rain
#

What is the default walk speed with like, plr.setWalkSpeed();

twilit roost
#

thanks 😊

remote swallow
white root
#

yes plz

brave sparrow
strange rain
#

I am tryna shift it forward by half a block

#

thats what they told me to do

#

normizle it

brave sparrow
#

Normalize then multiply

strange rain
#

I still don't quite understand what it does

#

does it like center the block?

brave sparrow
#

No

#

A vector has both direction and magnitude

#

Normalization keeps direction the same but changes the magnitude to 1

#

If you want to go half a block forward, you would normalize it first to make the magnitude 1, then multiply by 0.5 to make magnitude 0.5 in the vector’s direction

strange rain
#

Ohhh

#

So its basically the 'power' of the vector

sullen marlin
#

I guess yeah

brave sparrow
#

Kinda

strange rain
#

I have a question for you md_5

#

do you like manage all of spigot by yourself

pseudo hazel
#

i would hope not xD

strange rain
#

Because they are the only admin listed on the site.

remote swallow
#

there isnt really much to manage, prs come in from everyone and the other staff can handle most stuff on the site

#

all md has to do is check prs are good and merge them

wet breach
strange rain
remote swallow
#

he has to feed his kangaroo somehow

strange rain
#

Lord

wet breach
young knoll
#

(He ate them)

remote swallow
#

no

#

he feed them to his kangaroo

livid dove
#

Can someone sanity check why this custom event from a plugin API might not work?

Its a premium plugin so you cant really look at the underlying stuff but is there anything dumb in this particular class that would prevent it from triggering? https://github.com/Angeschossen/LandsAPI/blob/master/src/main/java/me/angeschossen/lands/api/events/LandOwnerChangeEvent.java

GitHub

Developer API for Lands. Contribute to Angeschossen/LandsAPI development by creating an account on GitHub.

brisk estuary
#

hey guys, I've seen recently some lives on twitch and tiktok that when some events are triggered like following the streamer or giving him a present or smt like that, something happens in the server, does anybody know how to achieve that?

remote swallow
#

find some rest api or java api for that platform and do stuff accordingly

brisk estuary
#

okay, thanks

agile anvil
#

Anyone experimented running on demand server with kubernetes for instance ?

proper iron
#

Is there another way to spawn mobs that can't be spawned with following method?

<T extends Entity> T spawn(@NotNull
Location location,
@NotNull
 Class<T> clazz)
#

i.e. Camels?

young knoll
#

Can camels not be spawned?

proper iron
#

It throws an internal error and says they can't when I try it

#

there are a bunch of mobs that return false for isSpawnable() but the docs just say its because some things may require more information. Doesn't say how to spawn them though

sullen marlin
#

?paste

undone axleBOT
sullen marlin
#

Every mob can be spawned lol

weak meteor
#

Hey, how can i create custom events?

sullen marlin
dreamy ridge
sullen marlin
#

Might be an effect for it?

#

Idk

dreamy ridge
#

effect like particle? no there isnt

tall saffron
#

?learnjava

undone axleBOT
livid dove
#

It's the one event I just can't get to trigger at all

young knoll
#

The code where you call the event may be more useful

livid dove
#

It was just to test if this thing even works

young knoll
#

Not the listener

livid dove
#

Ah I see what you meab

#

Well unfortunately the chap who made the plugib doesn't have it on gitbhub as its a premium

#

Was half hoping it'd be something dumb

#

So it didn't get that far

young knoll
#

I mean it’s possible they just never call it

livid dove
#

I'd be so mad 😂

#

The whole api has next to no documentation 😅

fervent robin
#

Hey I have an odd problem I am making a block that basically just stimulates the scaffold hack which i assume is simple but apparently not. I think i have narrowed it down to going in between chunks that cause the lag back. For example ill be using it and once it places the block that is bordering the chunk it lags back. I have no clue why this would be but here is the code.

https://paste.md-5.net/sanafehuvo.cs

fervent robin
humble tulip
#

Try calling the event youself and see if your listenerv picks it up

humble tulip
#

If your listener is called, it's probably that they're not calling the event in the plugin

fervent robin
#

What? I said it lags back not that its not working. It works just lags back

fervent robin
humble tulip
#

Are you sure?

fervent robin
#

Yeah?

humble tulip
#

If it works on one server but not the other, it's probably some sort of conflict

fervent robin
#

Well yeah but i removed all the variables same plugin list same spigot and paper yml and same server jar

humble tulip
#

Are all plugin configs the same?

fervent robin
#

They dont have configs

humble tulip
#

Not your plugin config

fervent robin
#

Yes ik

humble tulip
#

The other plugin configs

fervent robin
#

There is only 1 plugin during testing

humble tulip
#

Oh ok then I'm really not sure

fervent robin
restive mango
#

I would like to implement a form of collision detection for a fake falling block I generate asynchronously. I send packets to players which spawn the block and give it a velocity, and their client then renders it travelling through space and eventually landing on some surface — I would like to be able to ‘time’ it so I send a packet around the time it collides with another block which destroys the fake falling block. I can do the math to calculate the fake falling block’s positions in space as it travels, giving me a list of locations to ‘check’ for the blocks inside, but I’m uncertain on if this is possible to do asynchronously, or if I need to call sync methods for all of this. Advise?

#

Basically, I want to get a block type at a location asynchronously. I strongly suspect this is impossible without caching chunk snapshots, but let me know.

eternal oxide
#

packets/math can be done async, world changes have to be sync

restive mango
#

I don’t want to change the world, I just want to get a block type.

eternal oxide
#

reading from the world is only safe async if you use a chunk snapshot

restive mango
#

Damn, you don’t think there are any plugins which automatically save chunk snapshots, do you? @eternal oxide

eternal oxide
#

save?

#

you can get a snapshot from the API

restive mango
#

Yeah, I know — I just don’t want to make 30 snapshots every tick

#

Maybe I could snapshot the whole world every few minutes

#

I don’t need perfect fidelity

#

Ah

eternal oxide
#

god no

#

you are calculating the trajectory so you should know where it's landing

restive mango
#

Yeah, that’s what I want to do

eternal oxide
#

in which case you already know what chunk/chunks you need

restive mango
#

But I can’t do that for 50 fake fbs at once

#

All flying dozens of blocks

eternal oxide
#

the 4/9 chunks where it lands

#

you get all your fb's get teh 9 chunks where they land, grab snapshots and push to a Set

#

Set so it eliminates any duplicates

#

or instead of using fb created via packets you can create actual fb's and tag their pdc so you net notified when they land

restive mango
#

Yeah I know

#

I have a suspicion that lots of entities cause lag and I have various hurricane effects with like 50-100 fbs all flying around

#

I’d rather fake it with packets alone

rigid otter
#

ItemMeta class

    /**
     * Checks for existence of a display name.
     *
     * @return true if this has a display name
     */
    boolean hasDisplayName();

    /**
     * Gets the display name that is set.
     * <p>
     * Plugins should check that hasDisplayName() returns <code>true</code>
     * before calling this method.
     *
     * @return the display name that is set
     */
    @NotNull
    String getDisplayName();
Plugins should check that hasDisplayName() returns true before calling this method.

Why should I? Doesn't it return an empty string?

eternal night
#

I mean, that is more implementation detail than anything tho

#

you are obviously free to check it that way

rigid otter
#

Ohh, I've found the implementation.
It really returns an empty string.
But I know why they suggest to do that.
That because, oppositely, setDisplayName an empty string will replace with the item's original name. That mean, empty string is treated as NOT hasDisplayName

stiff cape
#

how to build a plugin using gradle

eternal night
#

gradlew build should do it on windows

#

./gradlew build on macos/linux

#

or are you asking for a setup ?

nocturne gale
#

Hello, my friend can't destroy blocks on his server even in the op and I forgot how it was set, would anyone know please? Thank you.

nocturne gale
#

Oh,sorry.

tribal quarry
#

hey there, does anybody knows how can i split a chat component by each newline component?

river oracle
#

Otherwise unsure

weak meteor
#

How can i make a claiming system?

#

Like, how do i store the fata

#

Data and stuff

#

Got no idea

sullen canyon
alpine swan
#

can you run spigotplayer.respawn() in playerdeathevent or do u need to wait a tick?

hazy parrot
#

Why not try and see

weak meteor
#

At least if its not local

young knoll
#

That’s fairly standard

#

That’s why you cache it in memory

weak meteor
#

I just wanna see how to claim stuff

#

Then storing is another thing

young knoll
#

Easiest way is by chunk

#

Second easiest would be nice rectangular bounding boxes

#

Most complex would be fancy polygons

weak meteor
#

I like second one

#

So i had this idea of a wand like World Edit

#

And some commands

#

And a cache map like <Claim, String(this is the clan)>

#

But it should be with locations?

river oracle
#

Seems like the best storage method to me

rotund ravine
#

If the clans all have unique names

#

That’s an uuid

weak meteor
#

Bc i have this clan object

#

But when i load all the clan

river oracle
#

Also is there a point to the map

#

You could put clan uuid / string in the claim

weak meteor
#

I need the leader or the name so it doesnt matter

rotund ravine
#

Lookup table 💪🏻

weak meteor
#

But

#

When player moves right, how i should know where's he at?

#

Like i think checking all claims everytime a player moves isnt a good idea

river oracle
#

BoundingBox

#

Depends if you dpnt want people walking in other claims

weak meteor
#

oh yes i want

river oracle
#

Otherwise you wouldn't need to check

#

Then MoveEvent

weak meteor
#

Actually theres 3 different claims; Spawn Koth and Clan

#

Where Spawn is not pvp not build

#

Koth is not build

#

And clan is not buils

#

So ig bounding box doesnt work?

jagged badge
#

Hi, I'm trying to delete the info logs from mongodb "org.mongodb.driver" (and others afterwards). The problem is that I've tried a lot of things, but nothing seems to work

tall furnace
#

So I've got a project where I am modifying ore spawn rates in a cobblestone generator. It's all working fine, but I'd like to improve the spawn chance system.
Right now I have a variable called odds and if a random int between 1-100 is less than or equal to the odds, it uses that instead of cobblestone. The problem is that this only works if you have 1 option. If I have 2 ores that could spawn, and iron is at 20, and copper is at 10, then iron no longer has a 20% chance, it has a 20-10=10% chance. So then I have to set iron at 30, subtract copper and get 20. This would be non-ideal but ok, except that I want up to 6 ores. So then if I adjust any one of them, it changes the rest.

My initial thought is to put odds number of entries into an array or list, and then get a random entry. This seems inefficient. Is there a better way?

hybrid spoke
weak meteor
hybrid spoke
#

the other idea of having a total items list and random picking is also a widely used method and totally legitim and not inefficient to use.

orchid gazelle
#

Hi

hybrid spoke
chrome beacon
tall furnace
young knoll
#

Make a weighted random utility

hybrid spoke
#

what are you doing

#

?paste your code

undone axleBOT
torn shuttle
livid dove
#

2 rolls, 1 for copper spawn chance. 1 for iron chance

livid dove
#

Me still here shaking my head when server owners wonder why adding more items to a fishing pool makes the rare stuff even rarer

charred fern
#

Anyone knows if there is an api to check spigotmc linked accounts, it's to check if an user has a discord account linked

vast ledge
remote swallow
#

we have something

torn shuttle
remote swallow
vast ledge
charred fern
quaint mantle
#

uh could anyone help me with this?

vast ledge
#

Sure with what?

quaint mantle
#

[Server thread/ERROR]: Could not pass event CreatureSpawnEvent to ASIBUSABIUSBAIUS
java.lang.NullPointerException: Cannot invoke "org.bukkit.attribute.AttributeInstance.getBaseValue()" because the return value of "org.bukkit.entity.LivingEntity.getAttribute(org.bukkit.attribute.Attribute)" is null

#

so I made a plugin which generates a room when someone does /room

vast ledge
#

if(instanceof LivingEntity)

quaint mantle
#

but this keeps happening

vast ledge
#

So why are you trying to spawn a creature?

quaint mantle
#

but does that effect room gen tho

#

holdon uhhh

vast ledge
#

you can use ?paste to get a pastbin link

quaint mantle
#

?paste

undone axleBOT
quaint mantle
#

thats the code

#

doesnt have any spawncreatureevent

vast ledge
#

What is IRoom.java

tardy delta
#

oh please

#

StringUtil.copyPartialMatches

#

and Arrays.asList

quaint mantle
#

oh thats for uhhh

#

loading schems

vast ledge
#

Iroom.java?

quaint mantle
#

yep

vast ledge
#

Did u write it or copy?

tardy delta
#

c# man

quaint mantle
#

got it of an abonded? project

#

how do u spell it

tardy delta
#

abandoned

vast ledge
quaint mantle
#

thanks

#

yeah

vast ledge
#

Upload the file

quaint mantle
#

the IRoom.java?

vast ledge
#

Yea

quaint mantle
vast ledge
#

Also whats
Doors5();
Catwalk6();
QuartsKnight7();
MithrilCave();
Melon7();
Andeside2();

#

Are they schematics?

quaint mantle
#

yeah

vast ledge
#

Do you have any eventlisteners?

quaint mantle
#

nop

#

oh wait

#
 if (event.getPlayer().getServer().getPort() == 25569)
            player.teleport(new Location(Bukkit.getServer().getWorld("world"), -101.5, 41, -185.5, 0, 0));
        if (event.getPlayer().getServer().getPort() == 25566)
            player.teleport(new Location(Bukkit.getServer().getWorld("dungeon"), 0, 0, 0, 0, 0));```
#

got these 2

#

for dungeons

vast ledge
#

oh

tardy delta
#

probably want Bukkit.getWorlds().get(0) for overworld

vast ledge
#

put
try{

} catch (NullpointerException ex) {
Bukkit.getServer().getConsole().sendMessage("Error");
}

#

around it

#

you might be getting a player that doesnt exist

#

that would explain the null

quaint mantle
#

alrighty

#

also hi nineteenthbrush

slim wigeon
#

Is there a way to Obfuscate my source code? Just to make it harder to read my source code

remote swallow
#

just dont publish the source code?

charred fern
#

If you dont want it to be readed then why you publish it?

slim wigeon
#

It can be decompiled

remote swallow
#

that isnt sourcecode

#

that can be obsfucated

weak meteor
#

Im trying to add items to a villager, where do i modify price and stuff?

#

or how to do it correctly

slim wigeon
remote swallow
#

if you want to publish it on spigot check the guidelines for allowed obsfucators if not use any you want

charred fern
remote swallow
#

a good free, allowed, one i know of is allatori

slim wigeon
#

Do I need source code for this or do I just drop the compiled jar file (Plugin) into the program?

orchid trout
#

how do i distribute the workload or handle heavy tasks?

remote swallow
#

?workdistro

hollow birch
#

Hey yall im working with mongodb for the first time and it seems to connect fine but when i try to read / write i get this error

#

Caused by: com.mongodb.MongoCommandException: Command failed with error 8000 (AtlasError): 'bad auth : authentication failed' on server ac-iqboryw-shard-00-01.pprhyoh.mongodb.net:27017. The full response is {"ok": 0, "errmsg": "bad auth : authentication failed", "code": 8000, "codeName": "AtlasError"}

chrome beacon
#

bad auth : authentication failed

hollow birch
#

i thought it was because i was using incorrect username and password but ive triple checked them and theyre correct

chrome beacon
#

Is your ip whitelisted

hollow birch
#

for right now its set to all ips

candid kindle
#

noob question: ive never touched spigot before. is there a generally recommended package structure?

echo basalt
#

uhh

#

that comes with experience

shut solar
#

Howdy, Im trying to make my mod communicate with my plugin using plugin channel, my mod can send and read packets however Im having trouble with reading them on the server

Im getting java.io.EOFException, however readUTF does not throw that exception so I cant just put It in a try block cause "Exception 'java.io.EOFException' is never thrown in the corresponding try block"

plugin reading packets function:

        ByteArrayDataInput in = ByteStreams.newDataInput(bytes);
        String test = in.readUTF();
        log.info(test);
    }```
echo basalt
#

overall a package for listeners, one for commands, one for data etc

eternal night
#

I mean, what is the stack trace ?

#

beyond that, readUTF might not be implemented the same

#

iirc the minecraft implementation (that your mod presumably uses) uses a var int to denote the length

hollow birch
river oracle
#

If none of these are issues you are wrong you're likely missing something

#

Make sure your password is inside your connection string

hollow birch
#

it is

#
        String url = DatabaseConnectionInformation.getMongoUrl();
        String password = DatabaseConnectionInformation.getMongoPassword();
        return url.replace("password", password);
    }```
#

ive printed the string by itself with this method and its correct

shut solar
river oracle
eternal night
#

Well, java's DataInput doesn't

shut solar
hollow birch
eternal night
fervent robin
#

Hey I have an odd problem I am making a block that basically just stimulates the scaffold hack which i assume is simple but apparently not. I think i have narrowed it down to going in between chunks that cause the lag back. For example ill be using it and once it places the block that is bordering the chunk it lags back. I have no clue why this would be but here is the code.

https://paste.md-5.net/sanafehuvo.cs

echo basalt
hollow birch
#

how do i do that

echo basalt
#

MongoClients.create(new ConnectionString("mongodb://" + username + ":" + password + "@" + ip + ":" + port + "/?authSource=" + authsource));

#

figure it out

granite olive
#

I have the same issue as this person here: #help-development message
and this person here: #help-development message
The first one is unresolved and the second one's solution does not solve it.
The problem is that when the last person in a world logs out, unloading the world with unloadWolrd(world) fails. But if I dont do that and then delete the folder anyway I get the error messages seen in the above linked messages.
So how do I unload a world when it is not loaded by a player because they left the game?

echo basalt
#

Loop through all the players in the world

#

if there are none

#

then just unload

#

wait like a second just to be sure and delete the folder recursively

granite olive
#

unloadWolrd(world) returns false

#

but only if its when the player quits. Not when they go to a different world

echo basalt
#

playerQuitEvent type deal

#

I play with worlds here and it works out fine

granite olive
#

but you dont seem to delete the files

#

thats where my problem is. If your unload fails its no problem but if mine does I cant delete the file

#

ok nevermind, you do. I tried doing something similar as the CompletableFuture thing you do but it just ends up never deleting the files anyway since the unload will always fail no matter how long I wait

#

Its like I would need to unload before the player has fully disconnected

echo basalt
#

teleport the player to a temporary world

#

and then unload

granite olive
#

fixed! Thank you so much this has been an issue for days now

#

I teleport them to the main world and then check if I can unload

restive mango
#

Anyone know if there is an entity metadata or something else I could use in a packet that would prevent the client from showing the entity slowing down (as in, sending a packet which will display the entity moving indefinitely in some direction)?

fervent robin
slim wigeon
#

I got a issue with my server shop. I click a group and if it contains in the shop somewhere, it goes straight to the purchase GUI (Skips the group GUI). How do I avoid this?

tardy delta
#

how do we even know what server shop you have

slim wigeon
#

Its a plugin I wrote

half garnet
#

how can we even help you if we don't know what you wrote in the code

#

tell us how did u make it

slim wigeon
#

I was getting it

#

Do you see where the issue is?

deep shard
#

When I judge these items, their type all return AIR

golden turret
#

How do I fix this? I already invalidated the caches about 5 times and it is not working. I am using the latest version of IntelliJ Ultimate

remote swallow
#

reload maven or gradle

golden turret
#

gradle

river oracle
#

reload

golden turret
#

brooo

#

I did it before

#

and it didnt work

#

but now

#

it worked

#

😭

deep shard
#

Does anyone have the same problem as me?

golden turret
#

which problem?

deep shard
#

ho, I found the reason, forgot to add api-version

tall saffron
#

Where can i learn the basics for plugin development? i now have a very veryyyy basic information about java, but i want to start and learn in the procces

wary axle
#

Hello, I would like to know if someone would know a library for an internalization system to integrate to my plugin? I could do it myself but I might as well take a tool that already exists !

wide coyote
#

what exactly you are looking for

wary axle
#

I don't know if it's me you're answering but I'm looking for a system a bit like forge that allows you to define several language sheets with translations...

tall furnace
tall furnace
tall furnace
slim wigeon
tall furnace
rotund ravine
#

He is

tall furnace
slim wigeon
tall furnace
#

What's a group?

rotund ravine
#

Simply canceling the event and adding ignoreCancelled = true in the eventhandler will probably do you some good.

tall furnace
#

You've got the InventoryClickEvent being monitored by all 3 classes O.o Interesting way of going about it.

slim wigeon
#

@tall furnace You never look at ShopGUI+ before?

tall furnace
#

I tend to prefer sign shops, but I've seen ShopGUI at some point in the past

#

So you select a "group", as in an item that represents a type of material, say logs?

#

And when you click, it's going to the point where you purchase or sell a set amount instead of going to a window where you select exactly which material?

slim wigeon
#

Config file I told my plugin to access1: name: Blocks icon: GRASS_BLOCK items: GRASS_BLOCK: purchase: 50 sell: 5 DIRT: purchase: 30 sell: 3 ...Ok, I have a GRASS_BLOCK as the icon as shown above which is in the shop list below. But if my issue is the 3 events, I will have to write a manager

#

Its just a icon you click to view sub items for the shops

warm mica
#

It's actually possible to have listed sections. People should make use of that instead of typing 1 2 3 etc the whole time

#

Spigot's API for that is just broken

tall furnace
tall furnace
warm mica
#

No in .yml files

tall furnace
#

Oooohhh, yeah. Looks ugly but yeah.

#

The number does allow for you to put them in any order though, and assign a slot based on the text of the key.

slim wigeon
#

That number does not mean anything, I can type anything. But that is not the issue. I working on fixing the issue as shown above, going to see if adding a GuiManager works

livid dove
slim wigeon
livid dove
slim wigeon
#

You wrote that Lands plugin is required to function

tardy delta
#

private hmm

#

everywhere basically

livid dove
#

how did i do intricate javadocs

#

and

#

forget

#

private

#

💀

tardy delta
#

in every single class

livid dove
#

*LandOwnerLimitCheck

#

See

#

there is proof im not an idiot

#

How i missed such a dumby basic thing

#

Eh

#

Raz's Rule

#

"Everyone screws up around 20% of the time"

#

Ill correct and boom easy

tribal quarry
livid dove
#

In general or for lands?

slim wigeon
#

...

#

Just broke my plugin upon trying to combine 3 listeners to one

unkempt peak
#

??

#

What do you mean you broke it?

slim wigeon
#

Now the shop does not even enable its self

unkempt peak
slim wigeon
#

I might know what I need to do

tall saffron
#

config.save is for saving on already setted files, and .set is for new variables?

fallow latch
#

i am learning NMS, but currently i only can import things from org.bukkit.craftbukkit.v1_19_R3 but not net.minecraft.craftbukkit.v1_19_R3, my dependency is:

    <dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>1.19.4-R0.1-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
unkempt peak
kind hatch
fallow latch
unkempt peak
#

try running it again

kind hatch
#

Are you trying to use the mappings?

fallow latch
kind hatch
#

Did you run BuildTools with the --remapped flag then?

fallow latch
#

no i just ran java -jar BuildTools.jar

kind hatch
#

Ok, well you need to run it with the --remapped flag.

fallow latch
#

oh i ran it again it seems to be downloading a lot

kind hatch
#

You should also specify the version.

unkempt peak
fallow latch
kind hatch
# fallow latch ok i will thank you

You'll also need to update your pom with the classifier tag.

    <dependency>
      <groupId>org.spigotmc</groupId>
      <artifactId>spigot</artifactId>
      <version>1.19.4-R0.1-SNAPSHOT</version>
      <classifier>remapped-mojang</classifier>
      <scope>provided</scope>
    </dependency>
tall saffron
#

can i save my config all like in the same line? if(word == "set"){ plugin.getConfig().set("players.id", player.getUniqueId(), "players.id.name", player.getName()); plugin.saveConfig(); }

#

ik the commas are wrong

kind hatch
#

No, you have to do each section individually.

tall saffron
#

k thanks

fallow latch
kind hatch
#

Reload your pom

fallow latch
#

Also just to make sure since I’m very new to spigot, the build tools ist the jar in the server folder right? Otherwise I would be really dumb to mess this part up

kind hatch
#

No, BuildTools is the program that you use to compile the server jar. Once it's done, the server jar file will be in the parent directory that you ran BuildTools in.

fallow latch
#

Yeah that’s when I meant

#

Then I think I put the buldtool in the right place

verbal slate
tall saffron
#

first time i dont steal all the code lol

tribal quarry
weak meteor
#

how to check if player has offline acc or not?

fallow latch
tall saffron
#

How can i generate others persons config to check if i can see others people aboutme

river oracle
kind hatch
hazy parrot
#

why would you do that

tall saffron
#

No i mean, like for testing generate like fake configs

river oracle
fallow latch
river oracle
kind hatch
undone axleBOT
tall saffron
#

like this is my config when i generate : ```players:
9c4a8834-849b-4a71-91d6-b3b35650a534:
name: ChiruMC
aboutme: ASDASDASD

fallow latch
#

ok thanks

weak meteor
weak meteor
#

just to verify whos cracked and whos not

tall saffron
weak meteor
#

and well

#

login pls are made that wya

river oracle
#

and add an aboutme

#

https://namemc.com/ you could also just use NameMC to come up with UUID's

#

but honestly UUID#randomUUID() is easiest IMO

kind hatch
tall saffron
#

thanks yeah i didnt know where to get a players uuid

river oracle
#

you'd have to setup a test env

#

for a case where you retrieve VIA UUID instead

#

in your case though I'd reccomend just using offline mode to test

#

it was intended for developers anywyas

fallow latch
river oracle
#

take advantage of it

kind hatch
river oracle
#

if you use a client like MultiMC it just allows you to boot in offline mode

fallow latch
kind hatch
#

You shouldn't need to. Not for NMS anyways. Unless you want to copy the latest spigot server jar to your server.

fallow latch
#

the spigot-1.19.4.jar

#

alright then

#

so does maven know where the jar is?

#

because i did not specify in intellij

tall saffron
#

I may sound dumb but where is the server-propeties? like idk why i dont see it, i always use a pterodactyl panel

#

nvm

#

is the config of paper i think

kind hatch
topaz atlas
#

Why isnt there a src/main/kotlin

kind hatch
#

You may want to double check the buildtools logs, but if you already have a spigot jar, then it probably finished successfully.

topaz atlas
tall saffron
#

K so for checking another players aboutme i have this setted up : Player targetPlayer = Bukkit.getPlayerExact(word); word is the args 0, but then i have this code : ``` } else if (plugin.getConfig().get("players."+targetPlayer.getUniqueId()+".aboutme") != null) {

                //Another players aboutme

                player.sendMessage(ChatColor.WHITE+targetPlayer.getName()+ChatColor.YELLOW+" About Me: "+ChatColor.WHITE+plugin.getConfig().get("players."+targetPlayer.getUniqueId()+".aboutme"));

            }```
#

it isnt working

kind hatch
tall saffron
#

oh

topaz atlas
# topaz atlas

Is it even important? I am going to run the kotlin and main file,
But for me to run it I need the class path, not the file patj

tall saffron
#

then wait cause that may be

#

k no i still can see

#

this is my config : ```players:
9c4a8834-849b-4a71-91d6-b3b35650a534:
name: ChiruMC
aboutme: ASDASDASD
1781e3b2-8c92-4d53-8023-4c34b6e1d613:
name: Caca
aboutme: Me gusta la caca

#

when i do /aboutme Caca it says an internal error

#

then in the console says this : Caused by: java.lang.NullPointerException: Cannot invoke "Object.equals(Object)" because "targetPlayer" is null at commands.AboutMe.onCommand(AboutMe.java:59) ~[SimpleAboutMe-1.0.0.jar:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[purpur-api-1.19.4-R0.1-SNAPSHOT.jar:?] ... 23 more

hazy parrot
#

Caca is not online probably

tall saffron
#

oh

#

yeah thats it

hazy parrot
#

Bukkit.getPlayerExact will return online player

tall saffron
#

thanks

hazy parrot
#

you can use Bukkit.getOfflinePlayer

tall saffron
hazy parrot
#

yes

tall saffron
#

cool thanks

kind hatch
#

Player extends OfflinePlayer so as mentioned, yes.

tall saffron
#

how can i get the uuid by name, if OfflinePlayer asks for Uuid

remote swallow
#

offline player has a string varient

topaz atlas
hazy parrot
remote swallow
hazy parrot
#

why are you mixing java and kotlin

tall saffron
#

Oh yeah my bad

#

i was doing Player targetPlayer = Bukkit.getOfflinePlayer(word);

#

and it had to be like this OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(word);

hazy parrot
#

it returns OfflinePlayer, not Player

topaz atlas
tall saffron
#

thanks to all

remote swallow
tall saffron
#

offline player works the same as player i guess

hazy parrot
tall saffron
#

Yeah, i mean like when i use targetPlayer it will work the same as when the var was player right?

hazy parrot
#

not exactly, for example you cant use pdc of offlineplayer, or send message to offline player

remote swallow
topaz atlas
young knoll
#

What

kind hatch
#

No

remote swallow
topaz atlas
remote swallow
#

wdym run multiple files, each plugin.yml is 1 plugin and spigot doesnt relocate anything by itself

topaz atlas
remote swallow
#

no idea

young knoll
#

You cannot have 2 main classes

remote swallow
#

looking at the screenshot the kotlin file wasnt in a package so theres 1 thing

young knoll
#

Just run the other file from your onEnable

#

Or onLoad if you want even earlier

hazy parrot
#

i have fealing you are doing something really wrong

remote swallow
#

looks like it tbh

topaz atlas
young knoll
#

Kotlin file?

remote swallow
#

throw back to me saying "just a quick note if you dont fully know java getting help here will be a lot harder been as most of us use java and theres only a few that know kotlin"

young knoll
#

You mean a Kotlin class file?

topaz atlas
young knoll
#

Same way you run a java class file

topaz atlas
#

Actually ima search it up

topaz atlas
topaz atlas
#

Just a example

remote swallow
#

i highly doubt you should ever do that

topaz atlas
#

yeah I kinda figured

young knoll
#

Wtf

remote swallow
#

looking at what i can find online your kotlin file should be in src/main/java/your/package/ and should be Name.kt

young knoll
#

What’s wrong with new MyClass()

topaz atlas
young knoll
#

Or MyClass.staticMethod()

topaz atlas
remote swallow
slim wigeon
topaz atlas
hazy parrot
remote swallow
#

kotlin is weird i dont know kotlin i have to go off what i find online

topaz atlas
topaz atlas
#

So I just cant have src/main/kotlin as a class or sntin

remote swallow
#

iirc you can

#

but you need a package like java

topaz atlas
remote swallow
remote swallow
river oracle
#

KOTLIN 💀

topaz atlas
remote swallow
#

i have no idea

#

i dont use eclipse

#

nor kotlin

topaz atlas
#

Oop, I cant create a package for the file editor

remote swallow
#

just gotta say this i would highly recommend not using kotlin for spigot and especially when you dont know java enough to convert code back and forth and getting help here while using kotlin will be 90 times harder

hazy parrot
#

there is literally no reason to mix kotlin and java in spigot plugin

topaz atlas
topaz atlas
remote swallow
#

why there isnt a reason

tranquil prairie
#

How do I convert a UUID to a username if the player has never joined the server?

remote swallow
tranquil prairie
#

Ik I have to use mojangs api just dont know how to

topaz atlas
#

Currently im only using kotlin for one thing, which is minor

remote swallow
#

transitioning code to kotlin wont help much

remote swallow
young knoll
#

Pretty sure you can do it without the mojang api now

#

With PlayerProfile

remote swallow
#

lame

tranquil prairie
tranquil prairie
#

there must be a way tho using mojang api

worldly ingot
#

Mans said he's using 1.8.9 💀

remote swallow
#

hi choco

#

dam

#

no more pepe

#

pepe back

tall saffron
#

Hi, now with the offline player, it doesnt send any error code, but it doesnt send the aboutme of the player

#

?paste

undone axleBOT
remote swallow
tall saffron
tranquil prairie
worldly ingot
#

Some of us have standards

tranquil prairie
#

i do too thats why i charge more for it

worldly ingot
#

I could probably get paid to suck dick

remote swallow
#

unless you pay me 2 million dollars im not going further back than 1.16

worldly ingot
#

I don't want to though

tranquil prairie
kind hatch
#

It just gets worse the older you go.

remote swallow
#

yeah

worldly ingot
#

Query an end point, read the result as JSON, knock yourself out

kind hatch
#

Isn't that always up to date with the latest version?

remote swallow
#

only reason i said 1.16 was because 1.16.5 let us use java 16

worldly ingot
#

Shadow...

worldly ingot
#

This is a web API

kind hatch
#

Ohh, my bad.

worldly ingot
#

😂

#

👌

kind hatch
#

I thought you linked the Protocol wiki link

fervent robin
#

i knew they documented packets not mojang api tho

worldly ingot
remote swallow
#

we need to get everyone with stash access to join as a reviewer for the component pr and approve it

tranquil prairie
#

oh shit alr

#

thx

worldly ingot
remote swallow
#

you know what we need to do

worldly ingot
#

The more people that read over and review the changes the more likely md will be to merge it lol

remote swallow
#

wake sam up and get him to call md

worldly ingot
#

Well I mean I pinged him privately. He'll see it when he sees it haha Not worried about that

remote swallow
#

do you think we'll ever merge bukkit and craftbukkit into one

#

but the pr looks done to me

young knoll
#

How would that work

remote swallow
#

idk

worldly ingot
#

You mean Spigot -> Bukkit?

remote swallow
#

magic

remote swallow
#

merge whatever we can

kind hatch
#

I think he meant Bukkit -> Spigot

worldly ingot
#

Er, yeah, I knew what I meant

#

Unsure. Up to md whether or not he wants to drop Bukkit & CraftBukkit and migrate Spigot into source-level editing

#

Would require tooling update

remote swallow
#

spigot moves to gradle!?!?!

young knoll
#

Oh we are going to code spigot in the source engine?

worldly ingot
#

BuildTools would need adjusting, Spigots scripts would need changing, etc.

remote swallow
#

wouldnt buildtools stand the chance to get quicker

kind hatch
#

Eh, it's to be expected when migrating, but it would be nice to see everything under one org.spigot package.

young knoll
#

Merging spigot into craftbukkit/Bukkit would be nice

#

Rather than having to separately deal with spigots 90 patches or whatever

remote swallow
#

coll

#

you need to join as a reviewer and approve chocos component pr

young knoll
#

Well I guess you could comadore that

worldly ingot
remote swallow
#

when was coll called martoph

kind hatch
#

I haven't seen that name in a minute. hold up.

tall saffron
#

Hi, my targetedUser wich is the one that is putted after my command ex : "/aboutme user", and when i do it nothing happens, no error, no message, nothing

young knoll
#

Yeah dat ain’t me

#

Idk how to edit spigot patches

remote swallow
#

you just like

worldly ingot
#

Oh oops my bad

remote swallow
#

open them in notepad

worldly ingot
#

Forgot that was Martoph that did that

young knoll
#

Yes edit patch files manually

#

Great idea

remote swallow
#

is that not how you do it

worldly ingot
#

fwiw, Spigot's fixup commit system is rather confusing and obscure if you're not more experienced with Git. Not to mention that it's not at all documented in the Spigot README

young knoll
#

🙃

worldly ingot
#

Adding new commits is. Editing existing patch files is not

#

I should probably PR that because I have a workflow for it

remote swallow
#

choco you should make a wiki

weak meteor
#

Choco

young knoll
#

Yeah I figured out how to add new ones fairly easily

worldly ingot
#

Me

weak meteor
#

do u live in toronto?

worldly ingot
#

Around the area

#

Just outside the GTA

young knoll
#

He lives on the very top point of the CN tower

weak meteor
#

im travelling there, where can i go as tourist

young knoll
#

The CN tower

weak meteor
#

no

remote swallow
#

niagra falls

weak meteor
#

but

worldly ingot
#

CN Tower & Ripley's Aquarium are the two immediate obvious answers

weak meteor
#

yes

#

and well downtown

#

but smth

remote swallow
#

timmies

weak meteor
#

thats not that common

young knoll
#

Try not to get mugged

remote swallow
#

damn

weak meteor
#

mugged?

worldly ingot
#

Hit with a coffee mug

#

(/s)

remote swallow
#

do they come at you with knifes, guns or fists

weak meteor
young knoll
#

All 3

young knoll
weak meteor
#

idk

remote swallow
weak meteor
#

thats

#

too common?

young knoll
#

Probably not

weak meteor
#

like i see canada as a super secure country

young knoll
#

But it’s on the news a lot

weak meteor
#

(compared to mine)

young knoll
#

Toronto has its fair share of gun violence

#

I blame the border

weak meteor
#

well

#

idk

worldly ingot
#

It will happen more in Toronto than anywhere else in Canada, but it's also close to the US border and is home of 4 million people

young knoll
#

^

remote swallow
#

technically if theres a cave under the border couldnt you sneak guns in

#

and drugs

worldly ingot
#

Not nearly as much as, say, Chicago though

#

If you're comparing to the states, it's nothing

young knoll
#

Don’t worry it’s still safer than a lot of big us cities

#

And uhh

weak meteor
#

if i dont get robbed here in colombia i dont think im not gonna get robbed in canada

worldly ingot
#

Okay... comparing to Columbia, you're fine lol

weak meteor
#

COLOMBIA*

#

NOT COLUMBIA

worldly ingot
#

COLOMBIA

weak meteor
#

PLEASE

worldly ingot
#

SORRY

weak meteor
#

THANKS

young knoll
#

Probably also safer than the surface of the sun

worldly ingot
#

I'M UNCULTURED

weak meteor
#

almost cried

#

well

#

idk

weak meteor
#

yesterday i saw how someone got robbed in front of my house

#

lol

remote swallow
worldly ingot
weak meteor
#

yee

remote swallow
#

this is general

worldly ingot
weak meteor
#

i never talk in general

remote swallow
#

that monster is what was holding back chooc with the component pr

young knoll
#

Northern Canada is basically the backrooms

weak meteor
#

seems so normal

#

like

#

neutral state

tall saffron
#

Hi, my targetedUser wich is the one that is putted after my command ex : "/aboutme user", and when i do it nothing happens, no error, no message, nothing
https://paste.md-5.net/enaqomupay.java

unkempt peak
tall saffron
#

yes this : ```players:
9c4a8834-849b-4a71-91d6-b3b35650a534:
name: ChiruMC
aboutme: ASDASDASD
1781e3b2-8c92-4d53-8023-4c34b6e1d613:
name: Caca
aboutme: Me gusta la caca
2ec1a513-6e56-346b-bb5f-ddb2f63cc319:
name: ChiruMC
aboutme: jiasndiasdhas

unkempt peak
#

Try sysouting the targetPlayer's uuid and see if it matches one in the config

tranquil prairie
topaz atlas
#

I removed kotlin from my project, maybe not now is good. Anyways, how do I reload a class for spigot? Like, reloading as in it will clear all varibles and stuff and go back to the original class

unkempt peak
#

Whats what?

tranquil prairie
tall saffron
#

sysouting

unkempt peak
#

Ah

tall saffron
#

oh okay

tranquil prairie
unkempt peak
topaz atlas
unkempt peak
#

...

tall saffron
#

but i did this System.out.println(targetPlayer.getName()+targetPlayer.getUniqueId());

#

and it gave me this[21:22:57 INFO]: [SimpleAboutMe] Caca2f9b8e07-4a4e-3518-a00f-f273e926e974

#

but if i search that id

#

its a non existent player

unkempt peak
young knoll
#

I doubt that’s a non-existent uuid

tall saffron
#

i searched it in namemc and there isnt any users

#

oh wait

#

is it because i activated cracked?

young knoll
#

Yes

#

Offline mode uuids are based on the username

tall saffron
#

Yeah finaly it was the uuid

#

is there a way to search uuid in offline mode in like a website like namemc

topaz atlas
unkempt peak
unkempt peak
#

For events? What do you need to reset?

remote swallow
#

how do you want to "reset" a class

unkempt peak
topaz atlas
remote swallow
#

just remove all the code

#

and imports

unkempt peak
#

What exactly are you trying to do?

topaz atlas
tall saffron
#

can i make like my targeted user dont worry if the upercasses are right, cause if i search the aboutme of caca, it says he didnt set it up, but if i search the one of Caca it works

topaz atlas
#

so I thought, why not reload the class after it does its task if I ever need it again

#

I tried debugging

#

and fixing

#

this is a last resort

young knoll
topaz atlas
tall saffron
#

Oh yeah that was it thxxx

remote swallow
undone axleBOT
young knoll
#

I guarantee you that nothing super natural is happening to your class

unkempt peak
topaz atlas
tall saffron
# young knoll You have options like equalsIgnoreCase

how can i do it here??? ```else if (plugin.getConfig().get("players."+targetPlayer.getUniqueId()+".aboutme") != null) {

                //Another players aboutme

                player.sendMessage(ChatColor.WHITE+targetPlayer.getName()+ChatColor.YELLOW+" About Me: "+ChatColor.WHITE+plugin.getConfig().get("players."+targetPlayer.getUniqueId()+".aboutme"));

            }
            else {

                player.sendMessage(ChatColor.WHITE+targetPlayer.getName()+ChatColor.RED+" Doesnt have his about me setted up, make sure to tell him!");

            }```
topaz atlas
#

I thought it would be easier just to reload the class

undone axleBOT
young knoll
#

You are using uuid

tall saffron
#

yes, but when i define targetedPlayer OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(word);

young knoll
#

Ah

tall saffron
#

like if i put /aboutme asd it isnt the same as doing /aboutme Asd

#

it doesnt count him as the same player

young knoll
#

Yeah you’re kind of out of luck there afaik

tall saffron
#

Oh damn, well if anyone knows tell me thanks anyways!

remote swallow
#

if you save the file you can store a map with a lower case varient of the name mapped to the real varient

young knoll
#

I don’t know if the Mojang api can handle case insensitive lookups

remote swallow
tall saffron
#

i was thinking changing the method to searching by name instead of uuid but idk

remote swallow
young knoll
#

You can try this

#

No idea how well it works

topaz atlas
#

I cant do after a set amount of seconds

tall saffron
tall saffron
#

is there a way to get the player from an InventoryClickEvent?

worldly ingot
#

event.getWhoClicked()

tall saffron
#

thanks

worldly ingot
#

You'll get a HumanEntity, but if you need a Player, you can cast it to one

young knoll
#

(Why is this like the one instance where you get a HumanEntity)

worldly ingot
#

(a) old event, (b) that's what NMS provides us with

echo basalt
#

you could literally replace the event with a Player instead and it would be safe

young knoll
#

Iirc there are a fair amount of casts in CraftEventFactory that convert human entities to player

#

Would changing it to player break things? Idk how the bytecode works in this case

worldly ingot
#

Wouldn't break binary compat, no

#

More specific return types are fine

#

Just don't see it happening

tall saffron
#

?paste

undone axleBOT
tall saffron
#

is that the name is wrong?

young knoll
#

Player is null and clicked item is null

tall saffron
#

k thanks

rigid otter
#

Is it good if I send player inventory data to BungeeCord and back? I mean, sending big data like this, does it cause any problems with BungeeCord? Or just fine?

#

Because I want to store player inventories there.

#

Ohh

#

Thank you!

agile anvil
#

I am making a minigame server, and I'm planning to use on demand servers to run the minigames instances. What's the best service (kubernetes, AWS servers, ...) ? And is it worth it? (It means that the game instances will start only when necessary and shutdown when no players are in)

#

Yeah I know, but the goal here is to reduce the bill, by paying servers by minutes of run

#

All right thanks! Forgot about Azure I'll have a look!

karmic mural
#

Trying to figure out my structure, not sure about the GUIs package, any opinions?

opal juniper
#

capital package names are a no go, use snake case

agile anvil
#

menus or guis are fine

karmic mural
#

I'm gonna go ahead with all lowercase, thank you for bringing it to my attention

#

Thank you for your assistance good people of spigotmc discord <3