#help-development

1 messages ยท Page 673 of 1

tender shard
#

yMax will always be > minHeight, wouldn't it?

next stratus
#

Hey, how can I run a method then announce something once the method is complete? ๐Ÿค”

tender shard
#

by using Bukkit.broadcastMessage at the bottom of that method?

upper hazel
#

yMax this int were start check

#

for optimization

next stratus
tender shard
#

show your current code

upper hazel
#

I think that's enough or should I add something else?

next stratus
#

At the moment I have

  @EventHandler
  public void onBlockBreak(Player player) {
    double chance = getChance();

    if (chance >= ThreadLocalRandom.current().nextDouble(1)) {
      // The chance happened!

      forceProcedure(player, Objects.requireNonNull(player.getTargetBlockExact(5)).getLocation());
    }
    // If the chance didn't happen, the method will continue without broadcasting or calling forceProcedure.
  }

But I want to do something after the forceProcedure method has fired.

hazy parrot
next stratus
#

Then it just fires straight away

tender shard
#

what does forceProcedure do

hazy parrot
#

it doesn't, it will fire after its finished, unless forceProcedure runs async

next stratus
#

I mean I have some falling blocks in the forceprocedure method and I want the method to fire once the last falling block has landed

tender shard
hazy parrot
copper lake
tender shard
#

it's not. show the output of ls

copper lake
#

bash: 1s: command not found

hazy parrot
#

L

#

not 1

tender shard
#

LS

tender shard
#

i dont see any files called "BuildTools.jar" there, only that's called "BuildTools (1).jar"

copper lake
#

yea thats the one

#

i can rename it if you want

tender shard
#

I don't care how you name it, you simply have to enter the correct name

copper lake
#

oh

#

๐Ÿ’€

tender shard
#

if the file is called blabla.jar you can't expect it to work when running java -jar BuildTools.jar

bitter rune
#

this is not working, i am trying to place a block at a given location

Location loc2 = block.getLocation(); World BlockWorld = block.getWorld(); TheBlock = block.getType(); Bukkit.getWorld(BlockWorld).getBlockAt.getType(); block.setType(TheBlock);

if I just do

Location loc2 = block.getLocation(); TheBlock = block.getType(); Bukkit.getWorld("world").getBlockAt.getType(); block.setType(TheBlock);
it's fine but I prefer not to do it this way

tender shard
#

please use proper variable names

#

also what the hell is that

#

getBlockAt

smoky anchor
#

getBlockAt.getType()
lol

tender shard
#

yeah what is that supposed to be

bitter rune
#

mistype I am using two computers. Bukkit.getWorld("World")getBlockAt(loc2).getType();

smoky anchor
#

TheBlock = block.getType();
Bukkit.getWorld("world").getBlockAt.getType();
block.setType(TheBlock);
Set the block to the type it already is ?
ok look, you're gonna have to send the actual code, this shitty snipplet is useless

tender shard
#

that's not even valid java

#

also why are you getting the world by name

#

what is it even upposed to do

#

nothing of what you sent would compile

bitter rune
#

world.getBlockAt(loc).setType(TheBlock);
this is the correct way to do it, I have no idea what above was doing. I have to set the world variable and then call on that, i was setting the variable while i dont know. I understand now. I will paste the file in a minute

tender shard
#

TheBlock should be called "type" or "material" btw

#

right now it looks like a ClassName

bitter rune
#

its a material i defined as a variable... i think i am typing the language right

copper lake
#

how do i cd using git bash

#

cd wont work

tender shard
#

cd does work fine

bitter rune
tender shard
#

you should really thinkg about using proper variable names ๐Ÿ˜›

#

e.g. don't call stuff "e" or "f" and especially don't use NamesThatLookLikeClassNames

#

same for methods

bitter rune
#

I get that's how they try to teach but i learn better like this, after i get it down i will convert it to proper names.. just makes it easier for my head to comprehend

tender shard
#

methodsUseLowerCamelCase();
fieldsAndVariablesUseLowerCamelCaseToo
ClassNamesUseUpperCamelCase

bitter rune
#

now I need to convert the bottom to a list, and then figure out how to pull the correct information out of it when its time.

smoky anchor
upbeat fog
#

I need some help with a custom item. I copy pasted 3 custom items I gave 2 of them certain amount of uses. When I use them up they disappear from my inventory. The third custom item is one time use but whenever I use it and I have multiple in my inventory, every one of them gets removed. (This doesnt happen when I use up the other ones).

smoky anchor
smoky anchor
#

just reduce the amount in hand

#

or if it is unstackable, then just set the item in hand to air

#

also

#

?codeblock

undone axleBOT
#

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

}

}```
Becomes:

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

    }
}```
upbeat fog
upbeat fog
clever lantern
#

is there a thread with common problems, best practises?

tender shard
quaint mantle
#

I am using CompletableFutures and just realized that the more assets I need to reload, sooner I get this issue

java.util.concurrent.RejectedExecutionException: Thread limit exceeded replacing blocked worker

#

I am using CompletableFuture to deserialize a World (just by its name) from a YAML file

#

Can't I queue thousands of CompletableFutures? It seems that at some point they start blocking, I don't really get what's the issue so I can't figure out the fix...

north nova
#

show your code

#

ur probably running them all at the same time instead of actually queueing them

quaint mantle
#

Actually I did

#

You are right

upper hazel
#

i need use loadChunk when search location in here ?

quaint mantle
#

The algorithm is the following. It loads a configuration object from a YAML file (kind of deserialization). The issue is that any of these configuration objects are loaded from a specific folder, so any YAML file that's valid and is inside this folder will be loaded at the same time asynchronously. I am also using a main future to check when all these YAML files are done being read.
So I think in order to fix it would be to figure out a similar solution like the main future I have for all the files inside the previous specific folder?

echo basalt
quaint mantle
crisp forum
#

Is there any list of server versions that are used in NMS? Like v1_8_R3

remote swallow
#
#

that has all after 1.10

kindred sentinel
#

For what purpose can NMS really be needed besides custom tags?

echo basalt
#

anything deep into internals

#

fake entities, packets

kindred sentinel
#

Hmm ok

torn badge
sage dragon
#

How can I check if a clicked ender chest belongs to the clicking player?

lilac dagger
#

It will use a pool of threads or a single thread depending on what you need

sage dragon
north nova
#

u can't open anyone else's enderchest

#

unless done with another plugin

#

enderchest is exclusive to the owner

carmine mica
#

I mean you can with the API

sage dragon
north nova
#

not spigot api

sage dragon
north nova
#

and getClickedInventory().getHolder() returns null?

north nova
#

try getTopInventory

sage dragon
#

What exactly is that going to achieve? ๐Ÿ˜…

The clicked inventory is the top inventory since it's the only one that can be an ender chest

carmine mica
#

its gonna be null

clear panther
#

a

#

help

#

java.lang.AssertionError: TRAP
at net.minecraft.world.item.ItemStack.O(ItemStack.java:192) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
at net.minecraft.world.item.ItemStack.e(ItemStack.java:1192) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
at net.minecraft.server.level.PlayerInteractManager.a(PlayerInteractManager.java:456) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
at net.minecraft.server.network.PlayerConnection.a(PlayerConnection.java:1622) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]
at net.minecraft.network.protocol.game.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:28) ~[spigot-1.18.2-R0.1-SNAPSHOT.jar:3498-Spigot-b081915-10ba1be]

#

what does that mean

valid burrow
#
        ItemStack mD = MetalDetectorItem.metalDetector;

        ShapedRecipe mDR = new ShapedRecipe(new NamespacedKey(this, "metal_detector"), mD);
        mDR.shape(" X ", " Y ", " Z ");
        mDR.setIngredient('X', Material.IRON_HOE);
        mDR.setIngredient('Y', Material.REDSTONE);
        mDR.setIngredient('Z', Material.GOLD_INGOT);

        Bukkit.addRecipe(mDR);
    }``` trying to make a custom crafting recipe is something wrong about this?
#

because it doesnt seem to work

#

but also doesnt seem to trow an error

kind hatch
clear panther
#

i made a gun

#

that if u shot 6 time then it will reload

#

acutally its just removing item and readding item

#

@EventHandler
public void ORC3(PlayerInteractEvent event) {
Player player = event.getPlayer();
if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (event.getItem() != null) {
if (Objects.requireNonNull(event.getItem().getItemMeta()).getDisplayName().equals("ยง9Diamond Gun")) {
++Ammo;
Arrow a = event.getPlayer().launchProjectile(Arrow.class);
a.getWorld().playEffect(event.getPlayer().getLocation(), Effect.SMOKE, 10);
if (Ammo % 6 == 0) {
player.sendMessage("ยง7Reloading");
//player.getInventory().removeItem().remove(DiamondGun);
Bukkit.getScheduler().runTaskLater(_plugin, () -> {
//player.getInventory().remove(fakegun);
player.getInventory().addItem(DiamondGun);
}, 100);
}
}
}
}
}

quaint mantle
#

What's fake gun

clear panther
#

unreloaded gun

#

just

#

yk

quaint mantle
#

Ok

clear panther
#

the gun

sage dragon
clear panther
#

?

sage dragon
# clear panther ?

I encountered this Exception yesterday.

For some reason, delaying launchProtectile by 1 tick fixes this

clear panther
#

no

#

bro

#

launching protectile is fine

kind hatch
#

Why are you incrementing before instead of after?

sage dragon
clear panther
clear panther
#

why

sage dragon
# clear panther why

I don't know why, but I can assure you, I encountered this exact error yesterday and fixed it by just adding a delay of 1 tick

#

So... Maybe it works for you too ๐Ÿคท

clear panther
#

how to exact do that tho

#

bukkit.getshulder?

remote swallow
#

depends what

sage dragon
kind hatch
clear panther
#

i gotta say that shoting protectile is littearly fine

#

and the errors doesnt says shoting protectile have an issue

#

if errors says shooting protectile have an issue then it wont be itemstack problem

#

yk

remote swallow
#

you dont load the data when they join, or save quick enough

kind hatch
sage dragon
# sage dragon How can I check if a clicked ender chest belongs to the clicking player?

I now came up with this monstrosity:

    private boolean isOwnerOfEnderChest(Player player, ItemStack clickedItemStack, int clickedSlot) {
        ItemMeta clickedItemMeta = clickedItemStack.getItemMeta();

        PersistentDataContainer clickedItemContainer = clickedItemMeta.getPersistentDataContainer();

        clickedItemContainer.set(this.clickedShulkerKey, PersistentDataType.STRING, player.getUniqueId().toString());

        clickedItemStack.setItemMeta(clickedItemMeta);


        ItemStack potentiallyClickedItem = player.getEnderChest().getItem(clickedSlot);

        if (potentiallyClickedItem == null) {
            clickedItemContainer.remove(this.clickedShulkerKey);

            clickedItemStack.setItemMeta(clickedItemMeta);
            return false;
        }

        ItemMeta potentiallyClickedItemMeta = potentiallyClickedItem.getItemMeta();

        PersistentDataContainer potentiallyClickedItemContainer = potentiallyClickedItemMeta.getPersistentDataContainer();

        boolean isOwner = false;

        if (potentiallyClickedItemContainer.has(this.clickedShulkerKey, PersistentDataType.STRING)) {
            String uuid = potentiallyClickedItemContainer.get(this.clickedShulkerKey, PersistentDataType.STRING);

            isOwner = uuid.equalsIgnoreCase(player.getUniqueId().toString());
        }

        clickedItemContainer.remove(this.clickedShulkerKey);

        clickedItemStack.setItemMeta(clickedItemMeta);

        return isOwner;
    }

Please tell me there's a better way to check the ender chest owner...

echo basalt
#

an ender chest doesn't have an "owner"

#

no clue what you mean by enderchest owner

tender shard
#
private boolean isOwnerOfEnderChest(Player player, ItemStack clickedItemStack, int clickedSlot) {
        ItemMeta clickedItemMeta = clickedItemStack.getItemMeta();
        
        // ...

        clickedItemStack.setItemMeta(clickedItemMeta); // ?????????????????????

what's the purpose of this?

#

you set it to whoever clicked the chest?

sage dragon
#

The method works, but I'm searching for a better way that isn't this monstrosity...

warm saddle
#

Hey I was wondering if someone could lend a hand, I'm trying to advance one of my plugins into being available for multiple server types (currently only bungeecord) by adding in a standalone spigot version to it. I planned to do this with multiple plugins in one gradle project however I am not really too sure as to where to start with this because I've never really done anything that "advanced" with gradle before. Feel free to DM me if you'd wanna do it in a more closed off place lol

kind hatch
sage dragon
kind hatch
#

That wouldn't change the fact that you already know who the inventory belongs to.
If you are relying on the items having specific data, that's fine, but you have to have a Player object beforehand to even open their enderchest inventory.

magic sonnet
#

Hey, where can I get the spigot api for 1.20.1, I have one via BuildTools but I'm missing classes like ChatMessageType, for example

kind hatch
strong parcel
#

If I have a Block object, can I check for tags, such as CROPS?

smoky oak
#

api broken last time i checked

#

download it manually

sage dragon
smoky oak
tender shard
strong parcel
#

Thanks!

magic sonnet
# kind hatch

yeah but i got a plugin for 1.20 which is using ChatMessageType but i want to code it myself cause it dont work like i want

kind hatch
magic sonnet
#

does anyone now how to use the actionbar in 1.20

remote swallow
remote swallow
#

if you use eclipse, intellij, netbeans etc it has it built in most likely

#

or you can use gradle

#

both work

sage dragon
magic sonnet
remote swallow
#

download gradle and gradle init

kind hatch
#

Unless you're opening their enderchest some other way, this is how you can get that information.

sage dragon
#

I'm trying to add compatibility for plugins that do this

kind hatch
# sage dragon Yes, but only if *my* plugin opens the ender chests, which is never the case, si...

Maybe I'm being shortsighted here, but I don't think that's realistically possible. If you are trying to make this compatible with every other plugin that has the ability to open enderchests, you'd want to hook into them and work accordingly.

Otherwise, you have to override a bunch of functionality that those plugins provide possibly introducing new bugs that wouldn't have existed otherwise.

As said before, enderchests don't have an owner field attached to them, so there's no way to reliably determine that. You could try checking inventoryholders, but that's not always guaranteed to be a player much less nonnull.

That's why if your plugin provides the functionality, you can do exactly what you want.

sage dragon
upper hazel
#

how i can optimaze this code

tender shard
upper hazel
#

why

tender shard
#

because serializeAsBytes() does not exist

#

also that string won't be human readable or editable btw

upper hazel
#

lol what

tender shard
#

there is no method called ItemStack#serializeAsBytes() in Spigot

upper hazel
#

i in paper

tender shard
#

I know

#

it won't work on spigot

upper hazel
#

1.16.5

tender shard
#

yeah it will only work on paper, not on spigot

#

and the string will be gibberish

upper hazel
#

[1,2,3,4] -> "1234"

#

in spigot not exist metods for serilaze itemStack?

tender shard
#

or you use the lib I sent above which will turn your itemstack into human-readable json, e.g.

{"\u003d\u003d":"org.bukkit.inventory.ItemStack","type":"DIAMOND_SWORD","v":3465,"meta":{"\u003d\u003d":"ItemMeta","meta-type":"UNSPECIFIC","enchants":{"DURABILITY":3},"display-name":"{\"text\":\"My Sword\"}"}}
upper hazel
tender shard
#

no clue what you mean with that

upper hazel
#

this library needs to be downloaded and installed on the server?

tender shard
#

no

upper hazel
#

a?

upper hazel
#

I've always wondered why some dependencies need to be downloaded as a jar and some don't. the same worldguard api needs to be downloaded in order to work with it, although maven has it

lilac dagger
#

does BukkitObjectOutputStream actually works?

#

i remember that it didn't copy the item completly

tender shard
#

i never had any issues with that

lilac dagger
#

i made a plugin for someone and the only way to get the same item was via nms

wary topaz
#

cant you send yaml files through pluygin messaging and then convert it to itemstack

lilac dagger
#

yes, send the yaml as string

#

YamlConfiguration has the method

slender elbow
#

boos has some odd corners and fun cases where the thing just blows up when deserializing

#

and the case where the serialized data is lossy compared to the actual nbt

upper hazel
slender elbow
#

what

#

serialization means taking a live object and turn it into some other data representation to store or send elsewhere

upper hazel
slender elbow
#

if by any you mean non-zero, then yes, but it's likely fine

#

if you want to be 100% on the safe side then you'd have to get the nbt instead, like how fr33styler showed before

slender elbow
#

yes

#

hopefully, CB#1230 gets merged soon and it will be good forever

#

@eternal night uwu

wary topaz
chrome beacon
#

Not the latest connector version

#

also they moved the artifact

wary topaz
#

to where

chrome beacon
#
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.1.0</version>
</dependency>
wary topaz
#

tysm

smoky oak
#

quick question, using F4 usually opens the decompiled class methods. I wanted to check on the inner workings of a method to make sure it works like i intend it to, but all i get is this. LivingEntity is an interface, but the object it's called in is a player. Why doesn't it jump to the override, but to the original method declaration?

wary topaz
chrome beacon
smoky oak
wary topaz
#

oh I have to shade it?

#

I can just do <scope>compile</scope>

chrome beacon
#

Spigot should provide mysql connector already ๐Ÿคทโ€โ™‚๏ธ

trim lake
#

How the fuck HashMap short keys? I just put data with some order and they are just in completely random order...

sullen marlin
sullen marlin
sullen marlin
#

Hashmap has no guarantee of order

flint coyote
#

But yes pretty much what md said. If you need the order, don't use HashMap

trim lake
#

Oh... that why... I just need test something thats why Im wondering

#

thanks a lot guys

cinder abyss
#

Hello, do BlockPhysicsEvent include BlockPlace and BlockBreakEvent ?

smoky oak
#

if they extend from physicsevent yes

#

it should say so on the api

cinder abyss
#

extends BlockEvent

kind hatch
#

Is the server running locally on the same machine?

queen niche
#

I have set the awareness and Gravity to false

queen niche
# queen niche is there a way to get rid of the wiggle?

I move the entity with:

// targetLocation is the player's location + 2 blocks up
Location TargetLocation = player.getLocation().add(0, 3, 0);
Location BalloonLocation = entity.getLocation();
Location PlayerLocation = player.getLocation();

// make the balloon move towards the TargetLocation
entity.setVelocity(TargetLocation.toVector().subtract(BalloonLocation.toVector()).normalize().multiply(0.2D));
kind hatch
#

Well, there's part of your issue. You have one set with an IP.

sage patio
#

goodjob worldguard, anyway to figure out if a player enters a region?

queen niche
kind hatch
#

PlayerMoveEvent?

#

The one labeled survival server.

sage patio
kind hatch
#

Probably. If all of your servers are on the same machine, then you don't need to set an IP in the server-ip field. You can leave them blank.

queen niche
kind hatch
#

You need a plugin for that.

orchid trout
#

how do i get inventory of dead player

#

like what do i cast an offlineplayer to

#

humanentity? humanplayer?

#

ok nvm

cinder abyss
#

Hello, how can I get the previous BlockData of a block updated with BlockPhysicsEvent ?

#

(I want to check mushroom blocks MultipleFacing)

smoky oak
cinder abyss
smoky oak
#

yea

#

just keep in mind

#

dont cancel it if it's involved in the growth event

cinder abyss
#

I wanted to check the block facings but idk why I would do that x)

smoky oak
#

not sure if that counts as block physics

cinder abyss
cinder abyss
smoky oak
#

ah its not @cinder abyss

#

its superclass is blockEvent

cinder abyss
#

okay

#

hum, when I place a mushroom block next to the block updated, it isn't cancelled

#

@smoky oak

smoky oak
#

thats cuz block placement aint physics

cinder abyss
#

okay

smoky oak
#

it triggers it

cinder abyss
#

I'll cancel block placement then

smoky oak
#

there is a way around that

#

you can place mushrooms next to each other

#

i think you cancel it and then place the block yourself

#

which you can do in a way it doesnt change texture by setting some boolean to false

cinder abyss
smoky oak
#

yea i figured

#

i meant via code

cinder abyss
#

But I think my actual code is good```java
@EventHandler
public void antiMushroom(BlockPhysicsEvent e){
Block block = e.getBlock();
if(CUSTOM_BLOCKS.contains(block.getType())){
e.setCancelled(true);
}
}

@EventHandler
public void antiMushroomPlace(BlockPlaceEvent e){
    Block block = e.getBlock();
    if(CUSTOM_BLOCKS.contains(block.getType())){
        e.setCancelled(true);
    }
}```
#

oh well

#

cancel block place

#

:LUL:

hazy parrot
#

how should you do regex mapping in spring, seems to be harder then it should be lol
@GetMapping("/{test:^(?!test).+$}") is for some reason not matching /foo/ even trough it should lol

cinder abyss
#

looks like I'm a little asleep

smoky oak
smoky oak
#

the second one

cinder abyss
#

which event ?

#

okay thanks

#

hum

smoky oak
#

remember to remove the item from teh player if not increative btw

cinder abyss
#

yes

smoky oak
#

(and to apply the correct one of the mushroom types... etc. Lots of small details here lol)

cinder abyss
#
    @EventHandler
    public void antiMushroomPlace(BlockPlaceEvent e){
        Block block = e.getBlock();
        if(CUSTOM_BLOCKS.contains(block.getType())){
            e.setCancelled(true);
            block.setType(block.getType(), false);//The 'false' stops physics update
        }
    }```
#

I'm asleep so I'm doing shi*

#

but I think this is okay

smoky oak
#

ah yea sounds about right

cinder abyss
#

can't place the block :/

smoky oak
#

yea idk

#

i dont have my mc open rn

#

i just dimly remember doing this exact thing

cinder abyss
#

let's try

#

looks like it's perfectly working

#

but updating all connected mushroom blocks, not a good thing 'cause I'll generate worlds based on mushroom blocks x)

dusty jackal
#

Okay so I have followed quiet a few YouTube tutorials and spigot forums and I can't seem to get this fixed

#

The one plugin error I can't figure out what's wrong with the plugin.yml

worldly ice
#

your jar is missing a plugin.yml

dusty jackal
worldly ice
#

your plugin.yml should be in a resources directory

#

something similar to this

tender shard
tender shard
#

or gradle

tender shard
# worldly ice

they're not using maven, there won't be any resources directory. The file belongs into the root folder in this case and then has to be selected everytime they build

worldly ice
#

ah, thats mb

#

i thought maybe eclipse automatically did that

tender shard
worldly ice
#

wasn't sure

tender shard
#

but as said, you should be using maven instead of using "export .jar"

tame wolf
#

How do I get the direction the player is looking in?

tender shard
#

getYaw()

tame wolf
#

Thanks

rare rover
#

how have i never known about this

tender shard
#

somehow nobody knows this

#

that's why i wrote that post lol

#

the other spawn methods (falling blocks, dropped items, etc) also have consumers

rare rover
#

damn

dusty jackal
copper lake
chrome beacon
#

??

copper lake
chrome beacon
#

How did you compile it

copper lake
#

build tools

#

java -jar BuildTools.jar --rev 1.19.4

chrome beacon
#

So you built Spigot

#

You have the Spigot jar

#

Not the plugin/addon

copper lake
#

so how do i get the plugin

kind hatch
#

Download the plugin source.

copper lake
#

yes i did

kind hatch
#

Now unzip it and open it up in your IDE.

copper lake
#

i added buildtools.jar to the plugins source folder then i ran java -jar BuildTools.jar --rev 1.19.4

#

i already configured the pom.xml

chrome beacon
#

Yeah that's going to build Spigot

chrome beacon
#

Not the plugin

copper lake
#

how do i build the plguin then

chrome beacon
#

If you have no idea how to compile the addon you should just buy it and support the author

kind hatch
#

By using the gradle tools built into the IDE

chrome beacon
#

I assume you're not a developer

copper lake
#

too broke for that

chrome beacon
#

And just a user wanting it for free

copper lake
#

the guy who made it is a shit person and i aint tryna give him money

#

so

chrome beacon
copper lake
#

im not running the server

#

someone else is

chrome beacon
#

Then tell them to buy it

chrome beacon
#

You seem to be building your server based on their work

#

look for an alternative

slender elbow
quaint mantle
chrome beacon
#

Well that's 3 entirely different reasons just to counter what I said

#

Honestly that just makes me think some parts are lies

quaint mantle
#

think what you want you are free to judge, if you dont want to help i bet someone else will

echo basalt
#

You could try and scheme with someone that has a paypal account

quaint mantle
#

i mean i dont get why its so big of a deal to help my friend whos trying to compile

sage patio
#

move event is not triggered when player is mounted on something right?

chrome beacon
#

Open source doesn't always mean you're allowed to use it

echo basalt
#

Mostly because some of us making a living out of this

#

And licensing is weird

quaint mantle
chrome beacon
#

Especially for commercial use

quaint mantle
quaint mantle
chrome beacon
#

I'm assuming it is based on the information I have

quaint mantle
#

you dont have any information about the server and how it is run,so please dont judge without knowing

#

you have no idea what the case is so i will have to respectfully ask you to stop judging us without knowing the real story and the real thing. you dont know us so do not assume the worst.
thank you

quaint mantle
echo basalt
#

I'd say the best approach for this is to just pay someone the 7$ to teach you how to compile it yourself

#

You learn a new skill, you're still helping the industry

quaint mantle
#

isnt this channel supposed to be for help.

#

if you want to help thanks your great
if you dont thanks too someone else will help

echo basalt
#

It is but we aren't straight-up going to do it for you, we're here to direct you in a general direction, not to hold your hand

quaint mantle
#

i understand that

echo basalt
#

I remember reading at a past point that it involved nms

#

in multiple versions

quaint mantle
#

but the other user was saying other stuff.that were not constructive

#

thats all man, no grudges i get it

quaint mantle
#

it require multiple build tools

echo basalt
#

Not exactly

#

BuildTools is spigot's system for compiling.. spigot

#

It grabs NMS and does spigot's patches on it

quaint mantle
#

oh i get you

echo basalt
#

And it lets you select a version to do it

quaint mantle
#

so nms is another file

echo basalt
#

NMS is mojang's server code

quaint mantle
#

i though build tool is like the package you use to import
like import math

quaint mantle
echo basalt
#

It's proprietary :p

quaint mantle
#

oh i see :p

#

ill google it i guess hopefully i find the right one

echo basalt
#

Just know that when you run BuildTools, it grabs NMS, patches spigot on top and installs it on your maven local (repository)

quaint mantle
#

okay i see

#

just i wish to clear something up

echo basalt
#

When you try and compile the plugin, it then grabs all the nms versions it needs from mavenlocal and uses them as dependencies

quaint mantle
#

you think 7$ is nothing , it is nothing for most of the world ( not you as in you but like whoever is reading )
but for me it is a few days of salary ( after some issues happened )
so please dont judge me wrongly

inflation / war / etc.

echo basalt
#

It's fine I started making plugins when I was like 12 because I couldn't afford premium things either

quaint mantle
#

its cool

echo basalt
#

And it's my job now ๐Ÿ˜›

quaint mantle
#

Does anyone know why this stat is inaccurate?

playerData.getStatistic(Statistic.DAMAGE_DEALT);
copper lake
#

if buildtools was for compiling spigot and not the plugin then what was the point of actually running java -jar BuildTools.jar --rev 1.19.4

echo basalt
glass tangle
quaint mantle
#

dont match up

#

oh bruh

#

do I rly have to make that stat myself

echo basalt
opal juniper
copper lake
echo basalt
copper lake
sage patio
#

the MTVehicles plugin moves player on an armorstand and does not have vehicle move event

echo basalt
#

obfuscation can influence the file size

copper lake
#

okay

echo basalt
#

what the fuck is this

sage patio
copper lake
sage patio
#

what no

quaint mantle
sage patio
remote swallow
echo basalt
buoyant viper
sage patio
copper lake
remote swallow
#

Yea. Most people dont do that tho

tender shard
remote swallow
quaint mantle
#

bruh wtf

#

how is my dia sword doing 40 hearts of dmg

glass tangle
tender shard
copper lake
#

how do i mark it for inclusion

remote swallow
#

It wont use both

worldly ice
#

dude i already told you how to compile yesterday

#

idk why you're still using maven

copper lake
sage patio
worldly ice
#

yes

copper lake
#

that only compiled spigot

#

not the plugin

worldly ice
#

because the project uses nms

echo basalt
#

fml

#

The project uses gradle not maven

worldly ice
#

i told you to use gradlew build

echo basalt
#

gradle lets you fetch from a maven repo

#

but it is not maven

worldly ice
#

after looking at the code i realized that it uses nms

#

so then i told you to run build tools

remote swallow
#

It uses gra

#

Gradle

copper lake
#

gradlew build just closes the cmd prompt and doesnt do anything

remote swallow
#

Use an ide

quaint mantle
#

bruh omg

echo basalt
#

double-click it on intellij and you'll go far

copper lake
#

i have eclipse

quaint mantle
#

why is damage dealt stats like that lol

1 damage = 1/10 hearts

echo basalt
#

something something number precision

worldly ice
#

you ran build tools for 1.19.4 but the project uses 1.19.3

remote swallow
#

Dont need bt gor the api

worldly ice
#

well the build.gradle doesn't include the spigot repo

remote swallow
#

Damn wtf

worldly ice
#

i remember he sent the github a while ago

copper lake
#

so you want me to run build tools 1.19.3

worldly ice
#

but i cant be bothered to find it

echo basalt
#

spigot repo doesn't include nms

#

and isn't needed

echo basalt
#

the author just fuckin built all of the versions

#

locally

worldly ice
#

yeah

remote swallow
#

what version are wanting to run this on

copper lake
#

1.19.4

echo basalt
#

like all of them

remote swallow
#

it doesnt have nms for it

#

you would need to create the new module and then add the nms code

echo basalt
#

Ideally you'd just fuckin patch it yourself and remove all others for simplicity

#

But that's beyond our budget

worldly ice
#

looks like the latest version it supports is 1.19.2

#

even though the error mentions 1.19.3

copper lake
echo basalt
#

Yeah so this code doesn't have the NMS written for 1.19.4 or whatever

#

meaning you'll have to do it yourself

remote swallow
#

earliest you can run is 1.19.2

tender shard
echo basalt
#

Takes like 10 minutes for an experienced developer to do

remote swallow
#

its missing 19.3 and 19.4 nms

worldly ice
#

yeah

copper lake
#

i can run 1.19.2

remote swallow
#

yeah

quaint mantle
#

great error bruh

remote swallow
#

i think it explains enough

#

it requires an aditional param for that statistic

quaint mantle
#

yeah

#

idk what tho

#

it's just damage_taken

remote swallow
#

doubt it would be very hard to find where you call the statistic

sage patio
#

does applying velocity on an entity such as armorstand trigger any event?

echo basalt
#

Don't think so

#

what's stopping you from just tracking positions on a scheduler

chrome beacon
#

^^

sage patio
#

hmm ok then

#

chatgpt ๐Ÿ’€

remote swallow
quaint mantle
#

what

#

ok wait

#

I mis understood the preconditions

#

thing

#

mb for ghost ping

buoyant viper
remote swallow
#

idk

buoyant viper
#

hell, googles 2fa authenticator app is open source

#

its an old version but still works iirc

tender shard
buoyant viper
#

hell, keepass(xc?) is open source too p sure

#

u can be secure and still be transparent :P

remote swallow
#

proton pass is decent

#

it has UNLIMITED log in locations

#

unlike dashlane

#

or any other password manager

#

lets hope a last pass doesnt happen

tender shard
#

Login locations?

remote swallow
#

i can sign in on pc and my phone

#

not just 1 of them

tender shard
#

Isnt that normal

remote swallow
#

not for dashlane

tender shard
#

Bitwarden also works from everywhere

remote swallow
#

i dont trust my self to hsot that

tender shard
#

Just use docker + watchtower

remote swallow
#

still dont trust myself

quaint mantle
#

I had my ssn and everything on there

#

Hey I was wondering out of curiosity if it would was possible to download and load a plugin directly on to ram using a plugin loader

restive mango
#

Do attribute modifiers persist through restarts?

shadow gazelle
#

Okay, I'm confused

#

I used set to store a UUID and it did this

world-uuid: !!java.util.UUID '1a40e31e-c053-457b-ad98-4b78d1ebeecd'
remote swallow
#

you need to toString i

drowsy helm
shadow gazelle
quaint mantle
#

I dont know what witch craft they used but they did smthin

drowsy helm
#

what practical usecases would doing that have

quaint mantle
#

mainly a secure plugin loader

#

never fully secure but more secure

drowsy helm
#

eh

quaint mantle
#

I dont think it loads the jar directly into memory

#

it creates a temp file if im correct

tender shard
#

just construct a Plugin object and throw it into PluginManager#enablePlugin(Plugin)

#

i wonder how it would be any more "secure" than just loading it from a file

shadow gazelle
#

Is there any reason why isString would be returning false when the entry able to be read with getString?

tender shard
#

yes

#

when it's not a string

shadow gazelle
#

well if it is a string?

tender shard
#

Then isString() returns true

#

isString just does an instanceof

shadow gazelle
#

So, pointless

tender shard
#

No

#

Its not pointless

shadow gazelle
#

Then what is name: test being deserialized to?

tender shard
#

A string

shadow gazelle
#

so why does isString not think it is a string

turbid anvil
#

when i run /shop
it says This command cannot be executed now, please fix the configuration formatting first!
i use economyguishop
idk what happend first it works

tender shard
shadow gazelle
#

no

#

I'm looking at it in the yaml file that the server is using

tender shard
#

Which yaml file, the included or the saved one?

shadow gazelle
#

There is no default

shadow gazelle
#

It's a FileConfiguration that I'm writing to and saving in the actual file

tender shard
#

saveToString() *

shadow gazelle
#
[19:13:20 INFO]: [LCEMinigames] [STDOUT] name: test
world-uuid: 1a40e31e-c053-457b-ad98-4b78d1ebeecd
start-locations:
  ...
tender shard
#

what's the output of

myConfig.get("name").getClass().getName();
shadow gazelle
#

it's a String

tender shard
#

well no clue, isString simply does an instanceof

#

maybe ?paste your code

#

it's working fine

dusty jackal
shadow gazelle
# tender shard it's working fine

No idea

// Setting
FileConfiguration arenaData = YamlConfiguration.loadConfiguration(arenaFile);
arenaData.set("name", arenaID);
// Reading
this.arenaData = YamlConfiguration.loadConfiguration(file);
this.arenaData.isString("world-uuid")
#

oh my god

#

I forgot an ! before the condition that checks if it is a string to send the error message

tender shard
#

lol

wary topaz
tender shard
#

?notworking

undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

wary topaz
#

I just supplied an image of what I meant by not working./

tender shard
#

Well probably sth threw an exception

wary topaz
#

No exception.

olive lance
#

Off the top of my head you set item Meta twice not sure if thatโ€™s the issue

wary topaz
#

basicially I need differences from lobbyselector and gamesselector

olive lance
#

You did it again outside the scope where you got it in the first place but idk

tender shard
#

You also complete the second future immediately

wary topaz
#

noww here is that

tender shard
#

At the end

#

This whole method seems very weird btw, why do you even need a ton of futures

wary topaz
#

now thats the problom! thank you so much i could not find htat

#

I need the futures because I use sql

#

public CompletableFuture<String> getLang(UUID uuid) { return CompletableFuture.supplyAsync(() -> { try ( Connection connection = plugin.connectionPool.getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT language FROM Players.PlayerData WHERE uuid = ?") ) { statement.setString(1, uuid.toString()); ResultSet rs = statement.executeQuery(); if (rs.next()) { return rs.getString("language"); } return ""; } catch (SQLException e) { throw new RuntimeException(e); } });

#

public CompletableFuture<String> getMessage(UUID playerUUID, String message) { return getLang(playerUUID).thenApply(language -> { if ("en".equals(language)) { return en.getProperty(message); } return "null"; }); }

tender shard
#

And why dont you just cache the messages on startup

wary topaz
#

cache the messages?

tender shard
#

Yes

wary topaz
#

private final Properties en = new Properties();

tender shard
#

It seems very weird to do sql requests for everything all the time

#

Instead of doing it once

wary topaz
#

oh I didnt explain, I need to get the language of new players too

#

and the ycan change their language

tender shard
#

But you only need to get it once

#

Then keep it in a map

wary topaz
#

how do I get them all to a map?

tender shard
#

Just a regular hashmap

wary topaz
#

im not familiar with sql that greatly

tender shard
#

When someone joins, load their data and add it to a hashmap

wary topaz
#

ohh

tender shard
#

Then you just use the map from then on

#

Then you dont need hundred futures everywhere

quaint mantle
#

What if I have like

#

A million players

#

Wouldn't that take alot of ram

wary topaz
#

sql doesnt take alot of ram

quaint mantle
#

Hashmap

#

and a million profiles cached from the sql db

tender shard
#

Ofc you only load data of online players

wary topaz
#

each hashmap will contain the paeyr id, the language and the uuid

quaint mantle
#

lol

#

K

#

What if I have a million online players

wary topaz
#

its per server

#

so...

tender shard
wary topaz
#

i dont see the math

quaint mantle
#

bruh

#

imagine if

#

Loops were instant

#

and threads don't access data at the exact same time

#

Would be a dream right

wary topaz
#

yes it would be a dream

#

๐ŸŒˆ โ˜๏ธ

tender shard
#

Itd already be great if people would just always use latest instead of 1.16 or 1.8 lol

quaint mantle
#

eh

wary topaz
#

whats wrong with 1.8? besides secuurity

tender shard
#

Its old and the api lacks 80% of features

wary topaz
#

older versions just lags thegame

quaint mantle
#

honestly yeah 1.8 is so annoying

wary topaz
#

newer*

quaint mantle
#

Api is VERY limited and Java 8 is pretty annoying compared to newer Java versions

tender shard
#

Magic bytes for materials, no pdc, it just sucks

wary topaz
#

well yeah java 8 sucks

young knoll
#

Yes newer versions have new features which means more work for the server

#

However

quaint mantle
#

has anyone made an updated 1.8 bukkit api

young knoll
#

You can just not use them

wary topaz
#

im talking about the client

#

being laggy

young knoll
#

Idk get some mods

#

Or get a better toaster

#

I have a gen 4 intel and I can still manage a few hundred fps

quaint mantle
#

1.8 laggy?

#

Wtf

wary topaz
#

how do I remove tghis?

tender shard
quaint mantle
#

But what I would say abt older apis is

#

nvm

young knoll
#

Hypixel has an updated 1.8 api

#

Or 1.7 or whatever

wary topaz
#

updated?

#

Why when I click in the air it doesnt open the menu but when I click the ground it idoes?


    @EventHandler(ignoreCancelled = true)
    public void onClick(PlayerInteractEvent event) {
        if (!(event.getAction() == Action.PHYSICAL)) {
wet breach
wary topaz
#

imagine a --nogui with the client lmfao

echo basalt
#

oh hi frosty

#

I did you a favor and bought nitro for both ebic and oliv

wet breach
#

Client already does that as the gui flag in the jvm is for the jvm console not custom gui stuff

wet breach
echo basalt
#

I was feeling nice

wary topaz
#

no im just saying it would be funny if minecraft was a command line and a command line only

wet breach
#

You probably could make some kind of intermediary script for this

echo basalt
#

Paid for my glasses, all my credits in advance and advanced payment for gym

young knoll
#

And then you have twitch plays minecraft

wet breach
echo basalt
#

I'm broke as shit now but I'll fix that next week

wet breach
#

Well so much for the excuse of bad code now

wary topaz
echo basalt
#

2 advanced coders** don't include me

wary topaz
#

I shall include you

echo basalt
#

PHYSICAL is for pressure plates

#

don't ask why I figured that

wet breach
#

And he beat me to it lol

echo basalt
#

๐Ÿข

young knoll
#

Ass pressure

wary topaz
#

you did not just say that

echo basalt
#

it's officially commented

young knoll
#

Itโ€™s in the javadocs

quaint mantle
echo basalt
echo basalt
#

w orking on my main github project rn tho

wary topaz
#

tyvm

wet breach
echo basalt
#

doing some annoying stuff

wary topaz
#

its set to if (!(event.getAction() == Action.PHYSICAL)) {

#

(!)

#

so everything else

echo basalt
wary topaz
#

but the air is not working

quaint mantle
echo basalt
#

right click air won't fire if you aren't holding an item

echo basalt
#

working on multi-platforming the network logic

wary topaz
#

coding skyblock must be hard

echo basalt
#

ehh you just make classes until you get tired

wary topaz
#

do you use ai coder completion?

echo basalt
#

yessir

wary topaz
#

which one

echo basalt
#

but I only use it because it speeds up my development time

#

I'd advise against AI code completion until you know what you're doing

#

it's not a babysitter, it's a tool

wary topaz
#

I know what im doing ๐Ÿ™„

quaint mantle
#

btw remember the issue ghost and i had
we tried everything for 2 days.
and we just gave up ๐Ÿ˜ญ
it just wouldnt want to work so weird

echo basalt
#

is that why you're asking about a playerinteractevent

wary topaz
#

its just not working the playerinteract event

echo basalt
#

they were trying to compile an open-source plugin

#

it's not interesting

wary topaz
#

the air

wet breach
echo basalt
#

it used nms and they don't know the difference between maven and gradle

wet breach
#

Lol

echo basalt
#

also they're trying to run it on 1.19.4 but the nms modules only goes up to v1_19_R1

#

if you want a flawless job just pay some fool like 10 bucks ยฏ_(ใƒ„)_/ยฏ

wet breach
#

I mean not overly difficult to update the nms for that

echo basalt
#

But paypal is banned in their country

#

So you now need to convince a dev to accept crypto to update nms on a plugin that costs 7$ on spigot

wet breach
#

Think all that changed was just some nms paths and that was it

echo basalt
#

uhh

#

probably yeah

quaint mantle
wet breach
#

Between those versions

echo basalt
#

it's just a setBlockFast

echo basalt
quaint mantle
echo basalt
#

Yeah takes me maybe 30 seconds

quaint mantle
#

yeah that part didnt work

#

we werent trying to upgrade it

wet breach
#

Ah. Then you must not have had something setup correctly then. If you were trying to compile as is. However i tend to have issues with gradle so if that was what was used i personally would probably swapped it over to maven.

echo basalt
#

it had like 9 nms modules

#

you just gotta pull and shadowjar it

wet breach
#

Remove the ones you dont need lmao

quaint mantle
#

oh

echo basalt
#

yeah but that requires effort

wet breach
#

That is the beauty of modules

echo basalt
#

because it's linked in code

#

there's like 19 if checks for version

wary topaz
#

ah wrong channelk

wet breach
echo basalt
#

just remove em ๐Ÿ˜›

#

I'd use generic types

quaint mantle
#

sorry if i look like an absolute baboon im not much of a coder uwu

wet breach
#

Pretty much. If they went the modules route it shouldnt be static linked in code as that defeats modules lmao

echo basalt
#

Should I use generic types for this

#

hm

wet breach
quaint mantle
#

well i used to learn coding but i gave up.
switched to managerial studies

echo basalt
#

Uhh

#

I have interfaces that extend SkyblockPlayer

#

For added context

#

So I can do a <T extends SkyblockPlayer> but it looks ugly

wet breach
#

Then i suppose you could use a generic then if the piece of code is something that is agnostic to the type

copper lake
#

Ok so I remove every version except 1.19.2 or 1.19.4

echo basalt
#

yeah but it's uggo

wet breach
#

Lol

echo basalt
#

Unless

#

..

#

I use generic types and expose an extension that hides them

#

Interesting

wet breach
#

Yeah probably could do that via just cast it regardless of what it is

echo basalt
#

like this

wet breach
#

Would still need a method to accept a generic but it wouldnt need to be public

echo basalt
#

nah

#

it's only getters

#

playerjoin and playerquit might just be handled through each platform

#

Or I might make a wrapper for those events

copper lake
#

Wait so I run every single version of buildtools?

wary topaz
#

why should you?

echo basalt
#

Because right now I have a "network structure" system where you can specify simple/complex and it ends up being cleaner for communication

copper lake
#

Thatโ€™s listed in the repo

copper lake
#

Alright

echo basalt
#

And my objective is to multi-platformize that code

wet breach
#

Well good luck with that lol

echo basalt
#

I think it's doable

#

this project is starting to get crazy

copper lake
#

Iโ€™ll get back to you when I have every single version ran

echo basalt
#

like all of this is database code

quaint mantle
echo basalt
#

free

#

foss

quaint mantle
#

cool

echo basalt
#

unlicense so you can do whatever the fuck you want

#

addons will be 5$ ;)

quaint mantle
#

fair ยฏ_(ใƒ„)_/ยฏ

young knoll
#

Does it save and load islands dynamically

echo basalt
#

yes

wary topaz
#

how much would it cost?

quaint mantle
echo basalt
#

ehh

quaint mantle
#

like if a player want something specific added

echo basalt
#

Addons will be stuff like

young knoll
#

Slime world format? Or something else

echo basalt
#

auto migration from SSB2

echo basalt
#

so in theory I can support both

#

right now it just has a world pool and worldedit

wary topaz
#

how much will the pluygin cost illusion

echo basalt
#

base plugin is free, modules are 5$

wary topaz
#

damn

young knoll
#

Wonโ€™t that be a bit spicy if the island is a decent size

echo basalt
#

modules are things like Automatic migration from SSB2, profiles, all the typical askyblock logic like island levels and leaderboards

echo basalt
#

And I can make my own serializer if I really care

young knoll
#

Fair

#

Currently I just plan to have everything in one world and let minecraft save it

quaint mantle
#

btw illusion i have a suggestion no other sky block plugin have

#

island vault ๐Ÿ˜‰ like player vault but for the island

young knoll
#

Iโ€™ll cross the dynamic saving and loading bridge if I ever need to be able to split it along multiple servers

young knoll
echo basalt
#

And a lot of networks ask about the project

quaint mantle
young knoll
#

Canโ€™t be that hard to save and load an island to a database

echo basalt
#

Yeah so that could be a feature in a "TeamExtras" module

young knoll
#

Hehโ€ฆ

echo basalt
#

There are a few things to consider

#

Like uhh

wet breach
echo basalt
#

giving a solid 30 minutes of leeway before unloading

#

making sure the island is only loaded on 1 instance

young knoll
#

Yeah thatโ€™s fair

#

I just donโ€™t know how to store it efficiently

echo basalt
#

In this case my system supports complete integration between server types

#

So you can run 2 bungee proxies, 1 velocity proxy, 3 minestom instances and 1 spigot instance

#

And it'll still like

#

work

young knoll
#

So do you store the island as a schematic

echo basalt
#

Well maybe I'll need to write a serializer for minestom

echo basalt
#

But I can just write a different serializer

#

It's all modular

young knoll
#

Fair

wet breach
echo basalt
#

I wonder if I can make an abstract class that has a generic type

young knoll
#

Iirc the schematic format has to be continuous, so if you have a lot of air itโ€™s going to waste a lot of space

echo basalt
#

and impl an interface that overrides that type

#

lemme try

#

I can :o

wet breach
echo basalt
#

I can do this

#

oo

young knoll
#

True I forgot about compression

#

Then you just distribute removing/placing all the blocks over a few ticks so you donโ€™t nuke the server

#

Hmm not as complicated as I thought

wet breach
young knoll
#

Do you have one island per world or do you group them all into one world

echo basalt
#

There are different grid types

#

One's a world pool

wet breach
#

However instead of returning null it throws an exception if its used instead

echo basalt
#

Another is a single world with a grid

young knoll
#

Fair

young knoll
#

Ive always wondered the overhead of having a ton of worlds loaded

echo basalt
wet breach
young knoll
#

Doesnโ€™t adding the world cause a brief lag spike

#

Create a pool of them on startup I assume?

echo basalt
#

Yep

#

create a pool and manage its size over time

young knoll
#

Does the api actually have a method to disable spawn chunks

echo basalt
#

yes

wet breach
young knoll
#

Ah it has a method on world not WorldCreator

#

Okay

young knoll
echo basalt
#

Hm

young knoll
#

Considering a skyblock island is usually pretty tiny

echo basalt
#

I have ideas

#

I need to make a SkyblockProfileSwitchEvent grr

young knoll
#

I was worried the server would die trying to tick 300 worlds

echo basalt
#

I can set limits on how many players there are

#

And what matchmaking criteria I should use

young knoll
#

Fair

echo basalt
#

To evenly fill up servers

#

I asked 7smile7 for a small review and he found the entire thing overkill

young knoll
#

Im just debating the pros and cons of a grid world vs one world per island

#

In the context of a single server

echo basalt
#

In a single server context a grid wins

#

In dynamic loading context one world per island wins

#

A lot of plugins break because they weren't written for dynamic islands

#

Like minions plugins that just hardcode the location of each minion

young knoll
#

Hmm

#

So I either use a grid for now and face my problems later

echo basalt
#

I might make some hacky bullshit for compat reasons but honestly I'll just tell them to do it themselves

young knoll
#

Or I design for per world from the start

echo basalt
#

or I make a 5$ module

echo basalt
young knoll
#

Hmm

echo basalt
#

Or you could go for the triple overhead and do a 5 world grid

young knoll
#

Lol

#

I guess Iโ€™ll look into the overhead and see if itโ€™s worth the trade off

#

Oh wait I know

#

1 server per island

echo basalt
#

pov: hypixel

#

nah they use multiple worlds

#

according to my insider knowledge

#

ah shit I'll have to rewrite part of my profile system

#

this took so long to design

#

ah shit I need to multi-platformize my command engine

young knoll
#

I figured they didnโ€™t do one island per server

#

Wonder how many they stick on one

echo basalt
#

probably a solid 30