#help-development

1 messages · Page 2026 of 1

crimson terrace
#

usually I just make those methods static or I dont call them

#

and no

#

I refuse that strike

tardy delta
#

for some reason my escape button isnt working most of the times in discord

pliant oyster
#

how can I do that

simple anvil
#

how can i run a command and turn it on and off with out args

lost matrix
simple anvil
#

no

lost matrix
#

Oh you mean a command that toggles a boolean?

simple anvil
#

yeee

hasty prawn
#

You should be able to figure that out...

#

What part are you having problems with

lost matrix
# simple anvil yeee
private boolean something = true;

public void toggle() {
  this.something = !this.something;
}
ancient jackal
#

but I'm wondering if there's a better way to do it

pliant oyster
#

wtf is this

hasty prawn
#

What in the

lost matrix
tardy delta
#

fileconfiguration itself is a cache of the file contents basically

river oracle
#

How do you read that font

tardy delta
#

i can only read plugin = this and the word config

pliant oyster
#

same

#

but even then I'll need to take a sec to know what it says

primal kite
#

is he trying to load a sofaLocation? when did MC get those?

tardy delta
#

the hell is that

#

:o

pliant oyster
#

lmao

quaint mantle
#
{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "minecraft:item/slime_ball"
  },
  "overrides": [
    {
      "model": "item/mob_capsule_1",
      "predicate": {
        "custom_model_data": 11
      }
    },
    {
      "model": "item/mob_capsule_2",
      "predicate": {
        "custom_model_data": 12
      }
    }
  ]
}
{
    "parent": "item/generated",
    "textures": {
      "layer0": "item/mob_capsule_1"
    }
}
#

Am I doing this texture wrong or smth?

#

Doesnt seem to work

tardy delta
#

are you getting a purple black squared texture?

quaint mantle
primal kite
hasty prawn
#

Is there a /minecraft/textures/item/mob_capsule_1.png file

tardy delta
#

i have it for example like this

tardy delta
#

do you have a json model file for that custom item?

quaint mantle
#

yep

#

here are the images btw

bright dust
#

does anyone have any info on how i could fork spigot for a minecraft snapshot version ? or does anyone know someone that could help me ?

quaint mantle
#

Just wait til the update comes out.

#

Seems kinda redundant.

bright dust
#

uh

hasty prawn
#

And you have a minecraft/models/item/mob_capsule_1.json?

bright dust
#

i have my reasons but like how would i be able to do that.

quaint mantle
#
{
    "parent": "item/generated",
    "textures": {
      "layer0": "item/mob_capsule_1"
    }
}
hasty prawn
#

Hmm interesting, maybe try adding "minecraft:" in front of all the item/?

hasty prawn
#

Man this is why I made a resourcepack generator LOL

#

It's so finicky

hasty prawn
#

Yeah I have a semi-completed lib that generates resource packs

#

Well, I suppose that's mostly completed, but it really hasn't been rigorously tested yet.

lost matrix
undone axleBOT
tardy delta
#

method in method

simple anvil
#

oh

#

im dumb

#

dont i need to return the bool

quaint mantle
#

you can do that?

ancient jackal
tardy delta
#

anonymous classes

lost matrix
quaint mantle
fervent gate
#
public void placeHologram(String type, double x, double y, double z, String worldName) {
        String typeL = type.toLowerCase();
        World world = Bukkit.getServer().getWorld(worldName);
        Location loc = new Location(world, x + 0.5, y + 3.5, z + 0.5);
        final Hologram hologram = HologramsAPI.createHologram(plugin, loc);
        Material m = Material.matchMaterial(type);
        hologram.appendItemLine(new ItemStack(m));
        hologram.appendTextLine(ChatColor.GRAY + type + ChatColor.GRAY + " Clicker");
        hologram.appendTextLine(ChatColor.GREEN + "Gives 1 coin on click");
        hologram.appendTextLine(ChatColor.GREEN + "Cooldown: 1 second");
        hologram.appendTextLine("");
        hologram.appendTextLine("" + ChatColor.YELLOW +  ChatColor.BOLD + "RIGHT CLICK: " + ChatColor.GRAY + "Open Upgrade Menu");
    }

    public void spawnAllClickerHolograms() throws SQLException {
        PreparedStatement ps = plugin.mySql.getConnection().prepareStatement("SELECT * FROM clickerblockslocation WHERE 1");
        ResultSet rs = ps.executeQuery();
        String type;
        double x;
        double y;
        double z;
        String world;
        while(rs.next()) {
            type = rs.getString("type");
            x = rs.getDouble("x");
            y = rs.getDouble("y");
            z = rs.getDouble("z");
            world = rs.getString("world");
            Bukkit.getLogger().log(Level.FINE, world);
            placeHologram(type, x, y, z, world);
        }
    }```
It says: ```source.getworld() cannot be null```. Why is my world null? What am I missing here?
tardy delta
#
class SomeClass {
  void someMethod() {
    Runnable r = new Runnable() {
      @Override void run() {
        System.out.println("yes");
      }
    }
  }
}```that looks like a pyramid lol
lost matrix
#
  public static void printSquares(int start, int end) {

    class Printer {
      public static void print(int number) {
        System.out.println(number);
      }
    }
    class Squarer {
      public static int square(int number) {
        return number * number;
      }
    }

    for (int i = start; i < end; i++) {
      Printer.print(Squarer.square(i));
    }
    
  }
tardy delta
#

never understood why to create a new class in a method

lost matrix
tardy delta
#

ye >_>

lost matrix
simple anvil
lost matrix
#

How long you want to cache data really depends on your context and use cases.

tardy delta
#

if (bool = !bool) kekw

lost matrix
#

Is the currency only used on one server instance?

tardy delta
#

im updating the player data of every user to the database every five minutes

quaint mantle
#

Now my resource pack is erroring.

tardy delta
#

you still have a cache to rely on so i dont think such a low updating time is required

quaint mantle
#

Imma send the ZIP file, somebody see whats wrong ig.

simple anvil
#

O
M
G
i need mental help

 p.sendMessage(toggle()):

i fixxed it but i need to stop going to bed at 4 and waking up at 7

quaint mantle
lost matrix
#

If you plan on expanding then you should not cache it at all. And you even have to do some extra steps to make it concurrent safe.

tardy delta
#

i need to stop sleeping five hours a day

lean gull
#

how do i set the last character of a string to nothing?

lost matrix
#

Only if the currency is used on a single server at all times

quaint mantle
lost matrix
ancient jackal
tardy delta
#

substring + " "?

lean gull
#

i'm makin a say "<message>" command for my "virtual assistant"

lost matrix
#

Then you cant make a decision about the cache

quaint mantle
quaint mantle
#

so id recommend naming it sendmessage

#

or smth

#

idk

lean gull
tardy delta
#

jda api?

lean gull
#

yes

tardy delta
#

nice im working on one atm

lost matrix
#

Then cache it indefinitely for only players and like 15 minutes for offline players.

tardy delta
#

@lean gull show code 👀

lean gull
#

i'm just expirmenting

quaint mantle
#

For fuck sakes. Can somebody idenitfy the issue with my resource pack?

#

Or at least give me a link to create one easy?

#

Well ive been trying for the past hour to fix this.

hasty prawn
#

Is it saying anything or just not working

quaint mantle
#

Not a peasant feeling.

lean gull
#

i would but i'm paranoid and idk if that file is safe

tardy delta
#

'potentially dangerous download'

hasty prawn
#

And it is applying, yes?

tardy delta
#

scary

quaint mantle
quaint mantle
hasty prawn
#

Relaunch Minecraft with the Output Log

#

Settings -> Show Output Log on Startup

#

In the launcher

quaint mantle
lean gull
#

jd are you hosting the server on minehut?

quaint mantle
#

Shockbyte

#

who uses minehut

tardy delta
#

where are the custom model jsons?

quaint mantle
lean gull
#

do you need to upload the resource pack as a zip file?

tardy delta
#

this isnt valid

quaint mantle
#

it worked for my iron coin

#

perfectly fine

hasty prawn
#

They can be zip files

lean gull
#

i don't think they can, zip files make it so it's in a folder

quaint mantle
#

Unknown custom packed identifier: minecraft:register

#

what

tardy delta
#

models>item should contains the json files called as a minecraft item, containing the overriding predicates

hasty prawn
tardy delta
#

like this

hasty prawn
#

Or is that all it said

quaint mantle
# tardy delta models>item should contains the json files called as a minecraft item, containin...

Connecting to (n0)
14:40:13.163
Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD'
14:40:13.270
Unknown custom packed identifier: minecraft:register
14:40:14.368
[CHAT] AnEmerald joined the game
14:40:14.422
Loaded 524 advancements
14:40:16.022
Found file C:\Users\pixel\AppData\Roaming.minecraft\server-resource-packs\0e22f0b8173c51e124ef6169b43f71f05fff084c without verification hash
14:40:16.025
Pack application failed: java.io.IOException: Invalid resourcepack at C:\Users\pixel\AppData\Roaming.minecraft\server-resource-packs\0e22f0b8173c51e124ef6169b43f71f05fff084c, deleting file C:\Users\pixel\AppData\Roaming.minecraft\server-resource-packs\0e22f0b8173c51e124ef6169b43f71f05fff084c

#

thats all

tardy delta
#

ye invalid it says

quaint mantle
#

so where do I place custom objects and textures then?

tardy delta
#

your folder structure isnt good

hasty prawn
#

I wonder if it's failing to delete a cached version of it

quaint mantle
#

im bad at textures

hasty prawn
#

./.minecraft/serverresourcepacks, delete everything in there.

lean gull
#

r u using custom resource location? not related to the problem, just asking :)

hasty prawn
#

Okay

quaint mantle
#

AKA im making a plugin that acts like a mod

#

without having to use forge

hasty prawn
#

Ah wait wait, are you using the exact same zipped file you sent us?

#

Or a folder that you zipped is what you sent

lean gull
#

i mean like a custom folder inside assets

hasty prawn
#

That's bad

#

And your assets are in that subfolder, take them out and it should apply it again

simple anvil
#

how can i reload my server once the build is done?

hasty prawn
simple anvil
#

auto

tardy delta
#

under models make sure you have two folders

  • item: json files like the one you sent with the overriding predicates, the name of the file should be a mc item name so like bow.json
  • custom (or something) which contains the actual model for the item - i assume your items have just a different texture, then put the texture path and stuf in that file, the name of the file doesnt matter
    @quaint mantle
hasty prawn
#

Oh, you'd have to setup a script or something to do that for you

simple anvil
#

oh ok

quaint mantle
hasty prawn
#

Gradle could do it probably

quaint mantle
#

thats why i didnt use custom

#

and just used minecraft

tardy delta
#

i mean minecraft > models > custom and minecraft > models > item

tardy delta
#

that shouldnt be a problem afaik

hasty prawn
#

It is.

tardy delta
#

oh

#

tell us if it works or not

quaint mantle
#

@hasty prawn did what you asked

#

it fixed t

hasty prawn
quaint mantle
#

although, weird question

#

anybody know any minecraft pixelart tutorials

#

xd

hasty prawn
#

So your slimeball is being applied now also?

tardy delta
#

@quaint mantle even with the weird folder structure?

quaint mantle
#

no bugs

tardy delta
#

wha-

#

so you only removed that subfolder?

quaint mantle
hasty prawn
#

Lol

#

The folder hierarchy looked right to me

tardy delta
#

have it like this

ivory glacier
#

How can I use getBlockAt(x, y, z).getType() without forcing a chunk load since it causes infinite loading

quiet ice
#

?jd-s

undone axleBOT
simple anvil
#

is there a event that can tell when someone has a elytra and used rockets

quiet ice
#

Player interact event most likely

dire salmon
#

rig- nvm

kindred valley
#
public class Program {
    public static void main(String[ ] args) {
        Scanner sc = new Scanner(System.in);
        int x = sc.nextInt();
        System.out.print(Converter.toBinary(x));
    }
}

public class Converter {
    public static int toBinary(int num) {
        String binary="";
        while(num > 0) {
            binary = (num%2)+binary;
            num /= 2;
        }
        return toBinary(num);
    }
}``` what is wrong with this code
quiet ice
#

Use StringBuilder

#

Also that toBinary method will always throw a StackOverflowError or an OutOfMemoryError in accordance with the JVMS

simple anvil
#

just did

#

thanks guys

quiet ice
#

I recommend to return unconditionally if num == 0 and to return a String and not an int

simple anvil
#

yes

quiet ice
#

You should also change it in a way that you need to pass a StringBuilder instance to it

viral crag
#

not sure if that works for rockets myself as they are propulsion

simple anvil
#

yes

quiet ice
#

oh actually you cannot use StringBuilder as-is but if you precompute the expected size of the int you can do it anyways

simple anvil
#

i got it

#

wdym

#

PlayerMoveEvent

viral crag
#

you would get a glide after the rocket stopped though

simple anvil
#

yes

#

i just want is Glyding

#

i have it now

viral crag
#

it will trigger with tridents YSYK

#

as rockets and tridents are both the same type for elytra

young knoll
#

What

simple anvil
#

would this save recouses? bc im spawning a particl

kindred valley
viral crag
#

riptide from trident and rockets are both propulsion

young knoll
#

Yes

simple anvil
#

only when glyding

#

when would i use EntityToggleGlideEvent

young knoll
#

To check when they start gliding

simple anvil
#

i want a particle to spawn when they use elytra

young knoll
#

Or stop

simple anvil
#

ok

#

danke

viral crag
#

fancy elytra

young knoll
#

No

#

Entities can glide too

#

It’s an NBT tag you can set on them

#

That makes them glide when they start fallling

outer sorrel
#

Is there a way to create fake world border that are only client side? Like to show the border of a claim for example. And can I have multiple of them?

viral crag
#

phantom

young knoll
#

Phantoms don’t glide

viral crag
#

we could put zombies riding phantoms?

viral crag
young knoll
#

Fly

#

Technically

viral crag
#

i can accept that

#

i cant think of any other entity that has a glide-type behaviour

#

... maybe minecarts off rails ?

young knoll
#

None of them

#

The NBT tag isn’t used by vanilla

#

But developers can use it

viral crag
#

hmm

worldly ingot
#

They won't render any differently though they might fall as though they're wearing an elytra.

simple anvil
#

i wanted to have a particle that would stay still untell it disapeared, does anyone know how to do that?

#

lava just blast everywhere

#

i want a trail of particles behind the player, like iron man and his trail

viral crag
#

do particles have gravity?

young knoll
#

Some do

lost matrix
#

They have certain properties. Some can have a direction and velocity. In your case it would suffice to just set the velocity to 0

young knoll
#

(double extra)

simple anvil
lost matrix
#

Here are some suggestions:
CLOUD
ELECTRIC_SPARK
END_ROD
FIREWORK
INSTANT_EFFECT
POOF
WAX_OFF
SMOKE
SNOWFLAKE
REDSTONE

Best suited for you is probably REDSTONE or FIREWORK

simple anvil
#

Caused by: java.lang.IllegalArgumentException: data should be class java.lang.Void got class java.lang.Integer

simple anvil
#

oh lol

lost matrix
#

Do you want a rocket-type effect? With flames and smoke?

simple anvil
#

imma try his list

simple anvil
lost matrix
#

Just a white jetstream?

young knoll
# simple anvil ?

There is a spawn particle event with a parameter of type double called extra

#

That controls speed for most particles

simple anvil
#

idk something that will look cool

lost matrix
#

...

lost matrix
# simple anvil how do i add it

try this one. Curious on how it looks:

  public void spawnJetStreamPointAt(Location location) {
    double roll = ThreadLocalRandom.current().nextDouble();
    if (roll < 0.9) {
      spawnFlame(location);
    }
    if (roll < 0.1) {
      spawnSmoke(location);
    }
    if (roll < 0.025) {
      spawnSpark(location);
    }
  }

  private void spawnFlame(Location location) {
    location.getWorld().spawnParticle(Particle.FLAME, location, 1, 0D);
  }

  private void spawnSmoke(Location location) {
    location.getWorld().spawnParticle(Particle.SMOKE_NORMAL, location, 1, 0);
  }

  private void spawnSpark(Location location) {
    location.getWorld().spawnParticle(Particle.LAVA, location, 1);
  }

blobspoonfeed

young knoll
#

Gotta make it right behind the wing tips

#

Idk the vector math for that tho

lost matrix
young knoll
#

Yeah but then wing tips

lost matrix
#

Oh i see what you mean

#

Yeah that one is a bit tricky

simple anvil
#
@EventHandler
    public void ElytraFeetParticle(PlayerMoveEvent e){
         Player p = e.getPlayer();
         if (p.isGliding()){

             p.spawnParticle(Particle.ELECTRIC_SPARK, p.getLocation(), 10);
         }
     }

#

i put it right above this

#

now what

young knoll
#

What’s electric spark

#

Not familiar with that one

simple anvil
#

it looks cool i think let me get a pic

quaint mantle
#

whats word to break bukkit scheduler?

#

Hey, ive got a question, im currently working on a system where player can report other vis a gui, now i want that every reporteds players head is in a seperate gui with the reason they have been supported for, do you have any idea how i could do this ?

lost matrix
lost matrix
hexed hatch
simple anvil
#

i think imma do

young knoll
#

Ah

#

I forgot about lightning rods

#

I need to play more 1.17/18

quaint mantle
lost matrix
#

A file is also viable

outer sorrel
# lost matrix yes

How would I do this? I haven't seen anything for this before. Packets?

quaint mantle
#

No, it should be removed when a moderator for example types /reports remove [name]

outer sorrel
#

And it'll let people see multiple borders at once? Also can I make custom shapes with them or just squares?

lost matrix
#

also no custom shapes

quaint mantle
#

ive tried it with a file but then deleted it , cause i didnt know how to get each value, cause i set the file like this Playername : reason.

outer sorrel
#

Ah okay. Thanks

lost matrix
quaint mantle
#

yea, but i didnt know how to create a function that gets every players uuid and the reason, and sets a playerhead in a gui with those values.

lost matrix
#
public record PlayerReport(UUID sender, UUID receiver, String reason, long timestamp, Location location) {

}

Like this

quaint mantle
#

Can i set an itemStack with those values more than once, cause i wanted to set a playerhead for every report

simple anvil
#
 Particle.DustTransition i = new Particle.DustTransition(Color.RED, Color.WHITE, 1);
             p.spawnParticle(Particle.ELECTRIC_SPARK, p.getLocation(), 1, i);
#

Caused by: java.lang.IllegalArgumentException: data should be class java.lang.Void got class org.bukkit.Particle$DustTransition

ivory sleet
#

effectively immutable

simple anvil
#

[18:10:49] [Server thread/ERROR]: Could not pass event PlayerMoveEvent to ParticlePlugin v1.0-SNAPSHOT
org.bukkit.event.EventException: null

ivory sleet
#

if you pass a mutable instance to it, its ofc still gonna be mutable

quaint mantle
lost matrix
#
public class ReportManager {

  private final Map<UUID, List<PlayerReport>> reportMap = new HashMap<>();

  public List<PlayerReport> getReportsOf(UUID playerID) {
    return List.copyOf(reportMap.getOrDefault(playerID, Collections.emptyList()));
  }

  public void addReport(Player sender, UUID receiver, String reason) {
    PlayerReport report = new PlayerReport(sender.getUniqueId(), receiver, reason, System.currentTimeMillis(), sender.getLocation());
    reportMap.computeIfAbsent(receiver, key -> new ArrayList<>()).add(report);
  }

}

And then store this data class in a manager class

ivory sleet
#

idk if you forgot to put the report into the map

#

but yea

lost matrix
#

woops

worldly ingot
#

Multimap might be handy there too

#

but getting ahead of myself lol

lost matrix
#

I 'might' accept a multimap here. But if i would write it right now i would create a new class to encapsulate the list instead

quaint mantle
#

okay, thanks a lot for your help

lost matrix
# quaint mantle okay, thanks a lot for your help

You can store the name in the record too if you want to.
But storing player names is quite tricky because you have to constantly update them when they join (because of name changes)
From then on you can get the OfflinePlayer via the UUID and create a head with it afterwards.

red sedge
#

mob's locations get updated to players every tick right

lost matrix
quaint mantle
quaint mantle
#

1.12.2

lost matrix
# quaint mantle 1.12.2

Then you need to search in old forum posts. No idea what the api looked back then.
Probably
ItemStack get-> ItemMeta (cast)-> SkullMeta #setOwningPlayer(OfflinePlayer)

#

Then set the ItemMeta back on the ItemStack

outer sorrel
quaint mantle
lost matrix
lost matrix
quaint mantle
lost matrix
#

No. A wrapper wraps the packet. Its not an instance of it.

#

So you will just have to call the constructor of the wrapper class with a packet to wrap as a parameter

#

Yeah. Or write your own wrapper. They are literally just calling the packet methods internally. Just with descriptive method names.

#

Uhm... there are plenty events for that

#

BlockDamageEvent, PlayerInteractEvent, PlayerAnimationEvent, BlockBreakEvent
Those all can be used in one way or another to detect if a player is digging

north cipher
#

Anyone know how to get a BoundingBox of a chunk? It dosen't seem like there is a builtin method, should I create one, and if I were to, would I do something with getting the minX block inside of it and etc, because I cannot get a center block or anything from a chunk

young knoll
#

Yeah you can create a bounding box from two corners

lost matrix
north cipher
#

how could you get those two blocks though? I was going to get center and subtract 8

lost matrix
#
  public static BoundingBox boxOfChunk(Chunk chunk) {
    Block low = chunk.getBlock(0, 0, 0);
    Block high = chunk.getBlock(15, 15, 255);
    return BoundingBox.of(low, high);
  }
#

This is for pre 1.18 worlds

north cipher
#

ohh, I thought that they were normal coordinates not chunk coords

#

okay thank you

#

im not doing anything with the y in this plugin so it won't matter the version. thanks

lost matrix
north cipher
#

well I will later on actually

#

just realized

#

but the server is 1.17

#

and if it updates il change the y

lost matrix
#

Whats the use case for your box?

north cipher
#

custom factions plugin

lost matrix
#

I think then you should not use BoundingBoxes but only a single long that represents the chunk coordinate

#

Def better performance

north cipher
#

i was going to combined all the claimed chunks into one boundingbox

lost matrix
#

Meh. If its completely chunk based then you are probably better of with longs. Also you cant combine BoundingBoxes into a single object because
they are axis aligned.

north cipher
#

to combined them, I was going to use a custom comparator and some inefficient ways of checking multiple min and max coords

north cipher
lost matrix
#

Just the x and z coordinate of a chunk bit shifted into a single long.
Then a group of chunks or a 'region' can be defined using a LongSet from FastUtils for
blazing fast lookup times.

#
  public static long getChunkKey(final int x, final int z) {
    return (long) x & 0xFFFFFFFFL | ((long) z & 0xFFFFFFFFL) << 32;
  }

  public static long getChunkKey(final Chunk chunk) {
    return getChunkKey(chunk.getX(), chunk.getZ());
  }

  public static long getChunkKey(final Location loc) {
    return getChunkKey(loc.getBlockX() >> 4, loc.getBlockZ() >> 4);
  }
lost matrix
#

I bet you could do thousands of ChunkCluster checks in the PlayerMoveEvent without seeing anything in your timings because its literally just
a little of bit shifting and a contains on a LongSet.

north cipher
#

thanks for the idea :D

#

it.unimi.dsi:fastutil assuming this is the dependency

#

thank you 😄

#

how could I get the min and max xz coords with the LongSet? assuming it would oposite bit shifting.

lime jolt
#

this was a bit ago, but what does the # mean?

north cipher
#

its showing to use ```java
myWorld.setBlockData(arguments)

#

you can get a world with ```java
Bukkit.getWorld("world name");

north cipher
#

You would have to get the world object to use the setBlockData function

drowsy helm
north cipher
#

yeah

drowsy helm
#

a non static method*

lime jolt
north cipher
#
World world = Bukkit.getWorld("world"); // Get world object with the name "world"
world.setBlockData( ... ); // Replace ... with your arguments
#

well in this case setBlockData

drowsy helm
#

setBlockData is the method of World

lime jolt
#

still giving me error ._.

drowsy helm
#

show your code

north cipher
#

and send the error

lime jolt
#

import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Game extends JavaPlugin implements Listener{

    public void onEnable() {
        
        System.out.println("The plugin has started");
        
        getServer().getPluginManager().registerEvents(this, this);
    }
    
    @EventHandler
    
    public void onBlockBreak(BlockBreakEvent event) {
        
        if(event.getBlock().getLocation().getBlockX() > 5) {
            
            World world = Bukkit.getWorld("world");

                world.setBlock(event.getBlock().getLocation().getBlockX(), event.getBlock().getLocation().getBlockY(), event.getBlock().getLocation().getBlockZ(), event.getBlock().getData());
            
        }
    }
    
    
    
    
}
#

it says I need to import something for World

north cipher
#

what IDE are you using?

lime jolt
#

eclipse

drowsy helm
#

import it

#

and please use a location variable

lime jolt
#

there are 2 options

lime jolt
north cipher
#

use the one that has bukkit in it

drowsy helm
#

your code is super verbose it can be cut down

north cipher
#

org.bukkit.World

drowsy helm
#

whats the other option

lime jolt
#

but now I get

#

The method setBlock(int, int, int, byte) is undefined for the type World

#

I dont want to getData

#

not byte

north cipher
# drowsy helm your code is super verbose it can be cut down

^^, try doing something such as ```java
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Location loc = event.getBlock().getLocation();
World world = Bukkit.getWorld("world");

if (loc.getBlockX() > 5) {
    world.setBlockData(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), event.getBlock().getData());
}

}

drowsy helm
#

you are using setBlock

#

not setBlockDAta

lime jolt
#

event.getBlock().getData()

north cipher
#

here

#

you use "event.getBlock().getLocation()" a lot

lime jolt
#

ye

north cipher
#

you should define more variables to make your code lines shorter and make it more dynamic for later on

lime jolt
#

i will, i will

#

but

#

why do I still get error?

north cipher
#

because you are doing setBlock and not setBlockData

drowsy helm
#

read what i said

lime jolt
#

ohh I see, didnt see u changed it

#

but on

#

it does not say that setBlockData exists

north cipher
north cipher
lime jolt
#

._.

lime jolt
#

what is the diffrence

north cipher
#

they told you to use world.setBlockData

tall dragon
#

one is a World the other is a ChunkData -,-

lime jolt
#

why that matter is chunk not in the world >_<

north cipher
#

because they aren't the same thing?

drowsy helm
#

you are reading something completely different

north cipher
#

?learnjava

undone axleBOT
tall dragon
#

yea but thats not how programming works?

lime jolt
#

i see i see

#

so when would I use the chunk one

#

or never mind, I think I will just confuse myself

#

world is world

drowsy helm
#

when using a ChunkGenerator

#

something completely different

north cipher
#

you would have to get the chunk data

lime jolt
#

makes sense

#

I understand now

north cipher
#

but this is world not chunk

#

alright

lime jolt
#

thank you

north cipher
#

np

lime jolt
#

WAit

#

Melo

north cipher
#

error?

lime jolt
#

many

north cipher
#

send

lime jolt
#

I cant send photo one sec

drowsy helm
#

why not use loc.getWorld()

north cipher
#

yeah thats probably more reliable

#

otherwise it would mess up stuff

lime jolt
#

wait never mind just one error

#

The method setBlockData(int, int, int, byte) is undefined for the type World

drowsy helm
#

it takes BlockData not byte

lime jolt
#

ye

drowsy helm
#

event.getBlock().getBlockData();

lime jolt
#

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Game extends JavaPlugin implements Listener{

    public void onEnable() {
        
        System.out.println("The plugin has started");
        
        getServer().getPluginManager().registerEvents(this, this);
    }
    
    
    @EventHandler
    public void onBlockBreak(BlockBreakEvent event) {
        Location loc = event.getBlock().getLocation();
        World world = Bukkit.getWorld("world");

        if (loc.getBlockX() > 5) {
            world.setBlockData(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), event.getBlock().getData());
        }
    }
    
    
    
    
}
drowsy helm
#

not getdata();

lime jolt
#

oh okok

#

The method getBlockData() is undefined for the type Block

north cipher
#

getData not getBlockData

drowsy helm
#

getData returns a byte

#

not BlockDAta

lime jolt
#

so which do I use

north cipher
#

getBlockData

lime jolt
#

but it say s

#

The method getBlockData() is undefined for the type Block

drowsy helm
#

what version are you using

lime jolt
#

world.setBlockData(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), event.getBlock().getBlockData());

#

1.8.8

#

_<

drowsy helm
#

bruh

lime jolt
#

plz dont tell me

#

plz tell me 1.8.8 is fine

hexed hatch
#

No

lime jolt
#

I just want the block data

#

NOOOOO

hexed hatch
#

1.8.8 is not fine

lime jolt
#

is there a work around

drowsy helm
lime jolt
#

I just tried on 1.18.2 it still no work

#

._.

drowsy helm
#

wait what are you trying to do in the first place

#

you are setting block data to a block which has been broken

lime jolt
#

I want to make a block

#

appear

#

when you break the block

#

making the block unbreakable

#

what version did you guys download for spigot

#

send me link plz

next stratus
#

😫

lime jolt
#

I think I am just using the wrong stuff

eternal oxide
#

?bt

undone axleBOT
lime jolt
#

oh you cant post links

#

hm

sharp flare
lime jolt
#

how

#

just

#

cancel();

tall dragon
#

BlockBreakEvent#setCancelled(true) 👀

lime jolt
tall dragon
#

eh well that page legit explains just that

#

depending on your opering system

sharp flare
#

?learnjava

undone axleBOT
round finch
#

I learned the spigot examples from Google and YouTube

#

Also remember to read the spigot api doc

deep pawn
#

hi how do you change all pillager skin model into my skin? and how do you make it show for everyone?

golden turret
#

with textures?

sharp flare
#

Ig that requires nms

deep pawn
#

I need to change the pillager to my skin

golden turret
#

you could intercept the entity packet

#

and instead of showing an entity, show a player with your skin

naive loom
#

does anyone know why my plugin is spitting this out
cannot access com.github.yannicklamprecht.worldborder.api.BorderAPI im giving it the repo and the dependency and im getting that

young knoll
#

Did you shade it

#

And or do you have the other plugin installed

naive loom
#

thats when im building the plugin

young knoll
#

Ah

#

Strange

naive loom
#

yeah really weird

deep pawn
golden turret
#

but

#

you would need to do more work

deep pawn
#

ok. how would I do that?

naive loom
#

yoyo wizardly you got any idea on my problem? just a question since we both smort and work for best service team

young knoll
#

You’ve got the repo and dependency stuff right?

young knoll
#

Have you tried refreshing caches or whatnot

naive loom
#

no

#

lemme do that

#

thats like file -> invalidate cache right

young knoll
#

Believe so

ancient jackal
#

what comes next in iterations? i > j > k > ???

#

not for an O(n^4+) thing thank god but

north cipher
#

I don't think there is any more

ancient jackal
#

I will use m then because it feels official

north cipher
#

maybe n

ancient jackal
#

alphabetically speaking...

north cipher
#

why do you need this many?

ancient jackal
#

well there's a small problem where you have to find 3 numbers that add up to a target, I'm using a hashmap to flex an O(n^2) solution to all the O(n^3) solutions

naive loom
deep pawn
#

how do I intercept the entity packet?

young knoll
#

I would use protocollib

manic delta
#

guys can someone teach me a bit about WORLDS?
I am making a kbffa plugin and I need that

young knoll
#

Worlds?

manic delta
#

Yea

#

Like

#

Save the worlds as a copy somewhere

golden turret
#

$WRLD?

young knoll
#

A world is just a folder

#

Java has a file API to copy folders

manic delta
#

Oh

#

I will search about it thanks

young knoll
#

?services

undone axleBOT
wheat abyss
#

sorry yeah looking at that now

south onyx
#

hi

#

so i am coding a repo from git in intellij

#

but its weird because i cant add a class

vocal cloud
#

What do you mean you can't add a class.

south onyx
sharp flare
#

finally made the jukebox play new song after current disc is done

sharp flare
#

@somber hull whats the random tag

teal flower
#

how can i get category of material (on picture)

young knoll
#

I think that was PRed

#

Dk if it’s in yet

somber hull
#

Ok

#

Please ping me if you respond to this

sharp flare
#

why

somber hull
#

Is there a way to check if an item is created in creative

somber hull
sharp flare
#

just ask here lol

somber hull
sharp flare
#

I'm not the only person on this discord channel lol

somber hull
#

Bruh

#

By you I didn’t mean you

#

I meant the reader

sharp flare
#

saw ur ping last time u deleted ur message

somber hull
#

I was gonna ask a question abt the jukebox

#

Or compliment you for the cool idea

sharp flare
#

fair

somber hull
#

I don’t remember

#

Anyway

#

Whoever responds to this

#

Ping me

#

How do I detect when a player takes an item out of the creative inventory

#

As the creative inventory is client sided

#

However the player cursor gets sent to the server (I might be wrong)

#

So how do I get when a item is sent from the creative inventory to the cursor

#

Inventory click doesn’t trigger

sharp flare
#

There's an event for that but its limited to client side just like u said

#

Same with inventory click event

somber hull
#

Like I get that it’s client sided

#

But some things are sent to the server

#

Clicking on creative inventory isn’t

eternal oxide
#

there are seperate events for creative, but limited

#

due to shitty design the server simply trusts a creative client

glossy venture
#

how do i export all dependencies of one module to one that includes it

#

i have something along the lines of

// hi/build.gradle
dependencies {
  implementation 'a'
  implementation 'b'
}
// another module
dependencies {
  implmentation project(":hi")
}
#

how would i forward a and b to the other module

kindred valley
#

how can i convert and int tobinary

#

i made a method toBinary

drowsy helm
#

Integer.toBinaryString(int)

kindred valley
drowsy helm
#

wdym?

kindred valley
#

just trying to get an int from input and convert it to a binary with method

drowsy helm
#

you would have to find the int's closest power of 2, subtract it and change it's nth place to a 1, rinse and repeat until you finish

kindred valley
#
 String binary="";
while(num > 0) {
   binary = (num%2)+binary;
   num /= 2;
}```
#

Sorry

#

İ made this

drowsy helm
#

dont think that would work

kindred valley
#

Why

drowsy helm
#

idk give it a try it could lol

kindred valley
#

İ made method string

#

And it worked

glossy venture
#

does a class have to extend JavaPlugin directly?

#

no right

#

the Carbon1181Bootstrap one is the one which will be set as the main class

#

not the abstract one as thats uninstantiable

young knoll
#

No

glossy venture
#

okay so that will work

young knoll
#

Isn’t carbon that old plugin

glossy venture
#

idk

#

its my own plugin

young knoll
#

That like added 1.8 stuff to 1.7

#

Ah

glossy venture
#

this is my own

#

it will be like a mod loader

#

to add items

young knoll
#

Neat

glossy venture
#

it will generate a resource pack with custom model data

young knoll
#

All server side?

glossy venture
#

for texturing

glossy venture
young knoll
#

Nice

glossy venture
#

but you will also be able to set the base material so it will make sense if you dont have the pack

#

for blocks it will send item frames with block items to the clients

#

so theyre not on the server

#

and modify the attributes for mining speed and stuff

#

of the player

young knoll
#

Oof

#

That’ll be laggy in any large amount

glossy venture
#

yeah for the clients

#

but i will try to optimize the server side as much as possible

#

to at least not lag it to shit

young knoll
#

I would use good old noteblocks

glossy venture
#

yeah but how many states can they have

glossy venture
#

because what if you want to add more than like 60 blocks

young knoll
#

700 odd

glossy venture
#

oh

#

but wont that make regular noteblocks unusable

young knoll
#

Yes

#

If you don’t make something to handle that

glossy venture
#

yeah i may add a system for that

#

but ill make the item frame one the default

#

only thing is lighting which sucks

#

so i might look into note blocks more

#

yeah

ancient jackal
# kindred valley manually

if you can't use Integer.toBinaryString(int n) then you can try java int mag = Integer.SIZE - Integer.numberOfLeadingZeros(val); int chars = Math.max(mag, 1); if (true) { byte[] buf = new byte[chars]; formatUnsignedInt(val, 1, buf, chars); return new String(buf, LATIN1); } else { byte[] buf = new byte[chars * 2]; formatUnsignedIntUTF16(val, 1, buf, chars); return new String(buf, UTF16); }

young knoll
#

Yes

minor garnet
young knoll
#

Yeah

#

It’s just a folder full of images and json

minor garnet
#

but changing the files ?

vocal cloud
#

You could make a plugin that generates custom resource packs but the question you need to ask is why. It'd be much easier to create the pack manually and allow for configurations that go in sync with it. It's easier to update a config and a resource pack then it is to recompile a plugin every x days.

round finch
#

I have been thinking of making my own custom world generation but keeping the vanilla stuff

How would it be possible?

#

I want to modify the shape of the world generation

sharp flare
#

several resources exist in the spigot forums

#

worth trying to find and read

sacred mountain
#

hey should i use String[] stringList or List<String> stringList

hybrid spoke
manic delta
#

guys why im getting errors using spigot 1.8.8 jar

#

i can't access to methods

#

but it works on my other plugins

#

everything

#

just nothing works

#

I already tried to restart my editor and apparently it is not that

eternal oxide
#

It needs to be in a method

manic delta
#

wdym

quaint mantle
#

for exmple in onEnable

eternal oxide
#

Your IDE is complaining that those are not fields

sturdy jasper
#

When starting bukkit runnables (async) does it automaticly only use netty threads? (for example would it be bad if i started lets say 100 async runnables in 1 gt, would that start eating away on threads i dont want the server to use?)

manic delta
#

what how

manic delta
#

why in my other plugins I can outside?

eternal oxide
#

You can't

#

only fields at class level

manic delta
#

but it works...

quaint mantle
#

Could you show the code ?

manic delta
#

yea

#

this is another plugin

#

just ignore

quaint mantle
#

those are variables

manic delta
#

o

#

ahh

#

thanks

#

im dumb

sturdy jasper
manic delta
#

I'm tired and I didn't realize

#

im sorry

#

thanks you all

quaint mantle
#

no worries

manic delta
#

i feel dumb now

crude loom
#

What's the difference between plugin.saveConfig() and plugin.saveDefaultConfig()?

young knoll
#

One copies the default from the jar

#

The other saves the one in memory

crude loom
#

Doesn't saveConfig() save it to the file and saveDaultConfig() creates the config if it doesn't exist?

young knoll
#

Pretty much

crude loom
#

So when I create a plugin for an existing server I should create a custom config file? because saveDefaultConfig() won't overwrite the existing one

#

Or is the default config file creates specifically for my plugin?

young knoll
#

For your plugin

crude loom
#

I see , thank you!

tender shard
#

does someone know whether this is true?
int.class == Integer.TYPE

#

just checked, it's true

#

that's good

smoky oak
#

do different dimensions run on the same thread?

eternal night
#

yes

smoky oak
#

can you make them not run on the same thread

eternal night
#

not without you creating your own fork

river oracle
#

If you want them too have fun lol

smoky oak
#

no my point here is

#

computers nowadays have a stupid amount of cores

#

making every world run on a separate thread would significantly cut down lag

river oracle
#

Go yell at Microsoft firstly

midnight quarry
#

hello, how can I simulate a nether portal without actually a portal? I mean I want a command which will tp me to a nether location just the same as a portal would teleport me to

smoky oak
#

take location

midnight quarry
#

I can divide the overworld coordinates by 8

smoky oak
#

divide by eight

#

set world

#

set player location to that

midnight quarry
#

I know

#

wait

smoky oak
#

location contains the dimension too

midnight quarry
#

sometimes it won't tp me to a safe location

smoky oak
#

thats a issue i also had and found no solution for yet

midnight quarry
#

and the way portal works is it always look for safe locations

visual tide
#

go into the netherportal nms class and see how it does it 🤷‍♀️

delicate lynx
#

there's a bunch of random tp plugins that check if the block is safe

#

you can look at those

visual tide
#

or that

#

which is probably more sensible 😅

tender shard
#

wow php is the weirdest language ever

quiet ice
#

no shit

tender shard
#
invalidstatement()
die();

results in an error message "unexpected token: exit"

#

although I used "die" and not exit

#

this is so stupid lmao

smoky oak
#

it gets better

#

you can do recursion in php

#

also they leaked the quellcode the other year

#

php 3.5 i believe

dusty herald
#

php is amazing

#

show full code alex

#

@tender shard

tender shard
#

it's just a forgotten comma 😄

dusty herald
#

figured

tender shard
#

I just wanted to share the weird error message

#

it says "unexpected token: exit" when the unexpected token is actually "die"

dusty herald
#

they are the same

#

that's why

tender shard
#

lol I was already like "who tf is that" lmao 😄

dusty herald
#

lmao

tender shard
#

people always having a different name in the DM, DISGUSTING, I TELL YA!!!!!111one

glossy venture
#

its not resolving the jar

#

i ran buildtools and it has uploaded it to maven local

#

oh wait shit

tender shard
#

with --remapped ?

glossy venture
#

yeah i forgot to include maven local

#

lmfao

tender shard
#

yeah gradle is a bit weird

glossy venture
#

i did it in one module but not in the other

#

YEEEES FIRST TIME USING MAPPINGS

tender shard
#

I think I should learn how to use properly use gradle, does anyone know a explanation?

hybrid spoke
#

yes. install maven

glossy venture
#

the docs are a bit weird and complicated

tender shard
#

I know maven

hybrid spoke
#

then use it

tender shard
#

but I want to learn both lol

glossy venture
#

i like the programatical approach of gradle

dusty herald
#

Gradle is really fast

hybrid spoke
#

gradle is what?

glossy venture
#

the ability to extend it from the build.gradle file

tender shard
#

@glossy venture how are you going to run the maven-special-sauce plugin with gradle?

glossy venture
#

i know special source but i dont know special sauce what

dusty herald
#

Gradle is really fast

tender shard
rough drift
#

wc

tender shard
#

I've never seen how to run the maven special source plugin from within a gradle file

glossy venture
#

ah

#

but you dont need to right

#

oh wait yes you do

#

to remap it to the runtime names

#

fuck

tender shard
#

if you don't wanna run your plugin, you don't have to use it

#

lol

glossy venture
#

ok hold on

dire marsh
#

or use paperweight

glossy venture
dire marsh
#

yes

#

just don't use paper-only methods I guess

glossy venture
#

ight ill look into it

visual tide
glossy venture
#

where can i find a good learning resource

visual tide
#

apple are you kidding me

glossy venture
#

there doesnt seem to be documenetation

visual tide
glossy venture
#

lmao

visual tide
#

oop wrong channel lmao

quiet ice
visual tide
#

graddle

glossy venture
#

using paperweight-userdev with spigot mojang remapped

quiet ice
#

Don't use gradle you fool...

glossy venture
#

in gradle

ivory sleet
#

They have an example repo

quiet ice
#

But wasn't the example repo on how to build a paper fork?

ivory sleet
#

Nah

glossy venture
#

ah

ivory sleet
#

Like they have examples for both

#

Ye

glossy venture
#

test plugin

ivory sleet
#

Should hopefully suffice

visual tide
#

wait are there full member mappings from before mojang mappings

#

cuz in the actual server jar just some stuff is mapped

glossy venture
#

now it cant resolve the plugin

ivory sleet
#

you need to declare some repositories in settings.gradle.kts

quiet ice
glossy venture
#

ah

#

do many people use kotlin dsl

quiet ice
#

A few do yes

ivory sleet
#

Yes lol

#

The groovy dsl integration for IntelliJ is sadly deplorable

visual tide
ivory sleet
#

But yeah, for eclipse using groovy dsl is more reasonable

quiet ice
#

You need to pick the right mapping version

visual tide
#

both suck 💩

glossy venture
#

ok i got it

ivory sleet
glossy venture
#

bruuuuuh

quiet ice
#

Eclipes's groovy dsl integration is relatively good outside of no autocomplete

ivory sleet
#

Ah yeah, so in case you vibe with eclipse groovy dsl is the way

quiet ice
#

There is no eclipse kotlin dsl to speak of. So it's either groovy, maven or JDT

ivory sleet
#

🥲

sacred basin
#

Hi, everyone
Do you know why letters are broken in game?

ivory sleet
river oracle
#

No

tender shard
quiet ice
#

I personally have become antiquated with JDT lately - and man is it cool as long as you offload the actual build logic to another application

ivory sleet
#

Hmm fair

glossy venture
#

bro its downloading and remapping paper for every module

ivory sleet
#

I haven’t used Eclipse in a great while, but honestly it’s not that bad just that I disliked the user interface

glossy venture
#

shit

ivory sleet
#

Lol

quiet ice
#

is the remapper still slow?

glossy venture
#

yeah kinda

sacred basin
#

Korean is broken in game

quiet ice
#

make sure you use UTF-8

glossy venture
#

do you have utf 8 encoding

#
javaCompile {
  options.encoding = 'utf-8'
}
``` i think its something like that if you are using gradle
quiet ice
#

Anything else is prone to issues a la "Why is there chinese in the event logs"

sacred basin
#

Ah ha, I'm using maven

quiet ice
#

Use Java 18, it has utf-8 by default

#

sure it's bleeding edge but it shouldn't be all too bad considering it should be released soon iirc

visual tide
#

im pretty sure you can do that in maven too

glossy venture
white thicket
#

Is there any event for when a fall back server is stopped??

quiet ice
#

I just know that you can set the file encoding of resource files

glossy venture
#

is 4 and a half minutes a good time to be at decompile transformed minecraft server jar

#

its using so much cpu

quiet ice
#

Forgeflower can be pretty slow, but it's still magnitudes faster than IntelliJ-decompiler (Fernflower)

glossy venture
#

is forgeflower a fork

quiet ice
#

Perhaps they are using Quiltflower now, idk

glossy venture
#

of fernflower

quiet ice
#

Yeah

glossy venture
#

nah theyre using forgeflower

quiet ice
#

Forge's fork of FF

glossy venture
#

i saw it downloading it

visual tide
#

procyon better

tender shard
quiet ice
#

Well Java 18's changelog has something around the lines of "now using UTF8"

tender shard
quiet ice
#

So probably not everywhere

#

As in it'll likely use the system default before j18

tender shard
#

they simply made UTF8 the default charset

quiet ice
#

Standardize on UTF-8 throughout the standard Java APIs, except for console I/O.
Smh

tender shard
#

anyone remember the utf 8 plugin awareness in plugin.yml? 😄

#
name: Plugin
...
awareness:
- !@UTF8

I think some of my plugins still have that lol

quiet ice
#

I deeply recall it being a thing yes

#

I never used it though

lost matrix
tender shard
quiet ice
#

?jd-s

undone axleBOT
tender shard
quiet ice
#

beat me to it

tender shard
#

I remember it was not deprecated in 1.8 but it was in 1.13

#

yeah it was made deprecated in 1.9

visual tide
#

never done that even for 1.8 plugins 😄

tender shard
#

it wasn't needed for anything and also didn't do anything

viral crag
#

not fully correct if i recall, caused chat issues - UTF8 and UTF16 do not play well if the host is UTF8

white thicket
#

Is there any event for when a fall back server is stopped??

quiet ice
#

probably not as how would the proxy know that?

white thicket
viral crag
#

should be a connection timeout, but that likely not to be an event

white thicket
#

I should ask if there is any event to check when a player gets kicked from fall back server

tender shard
#

oh sure, ServerKickEvent

white thicket
#

Ah! Nice, that is what I was looking for. Thank you 🙂

tender shard
#

new plugin idea: using /reload kills the server to make people learn to stop using it

Runtime.getRuntime().halt(-1);
tender shard
hasty prawn
tender shard
#

so whether or not that flag is set will not make any bugs disappear or make utf8 magically work now, nor does the flag missing break anything

viral crag
#

true

dire marsh
glossy venture
#

i want storage on items accessible by the client

glossy venture
#

so yeah i would prefer to use nbt

tender shard
#

why don't you just use PDC

dire marsh
glossy venture
#

ill try in a sec

dire marsh
#

pdc is easy

dire marsh
#

there's also an nbt api for this

glossy venture
#

is it more effiecient on storage and memory

kind hatch
#

It's far easier than trying to navigate nms, that's for sure.

#

?pdc

tender shard
#

so internally it also uses NBT

glossy venture
#

oh

#

wait really

tender shard
#

yes

glossy venture
#

that would be amazing

#

hold on

#

lmfao

dire marsh
#

what

glossy venture
#

how do i use it on item stacks

tender shard
glossy venture
#

ah

tender shard
#

then getPersistentDataContainer

glossy venture
#

ah

#

thx

#

ok it seems alright only thing i dont like is how it has to compile to nbt afterwards and how you need namespaced keys

#

i guess ill give it a try

#

this looks very intimidating

#

even through i wrote it

dire marsh
#

but does it have javadoc

glossy venture
#

only the simple ones at the moment

#

i want to get functionality done first

#

and then add the pretty javadocs