#help-development

1 messages · Page 2265 of 1

quaint mantle
#

i have everything setup as the plugin says, i'Ve seen some tutorials and what not but i keep getting this error:

#

and there is no more "VoteListener" class i guess?

hot wolf
#

Problem here.. My PlayerJoinEvent can't be triggered, because the @urban grotto is not working in PlayerJoinEvent.java I wanted to fix it, but the file is readonly

crisp steeple
#

happens when you view the files sometimes if you use the minecraft plugin to set it up, it shouldn’t cause an actual issue though

ivory sleet
#

Annotations don’t enforce anything tho

visual tide
ivory sleet
#

They well… are not needed at runtime unlike other stuff

visual tide
#

is your listener registered

hot wolf
# visual tide your event not being triggered has nothing to do with that
package smpmenu.smpmenu.events;

import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.NamespacedKey;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import org.bukkit.persistence.PersistentDataType;
import smpmenu.smpmenu.util.keys;

public class giveItem extends keys implements Listener {

    private static final NamespacedKey protectedKey = getProtectedKey();

    @EventHandler
    public static void onPlayerJoin(PlayerJoinEvent e){
        ItemStack i = e.getPlayer().getInventory().getItem(8);
        System.out.println("here");
        if(i == null){ //Possibility of main lobby
            ItemStack item = new ItemStack(Material.COMPASS);
            item.addUnsafeEnchantment(Enchantment.LURE,1);
            ItemMeta m = item.getItemMeta();
            /*Hiding Enchantments*/
            m.addItemFlags(ItemFlag.HIDE_ENCHANTS);
            /*Changing name*/
            m.setDisplayName(ChatColor.BLUE + "SMP-MENU" + ChatColor.BOLD);
            /*Modifying Persistent-Data-Container*/
            m.getPersistentDataContainer().set(protectedKey, PersistentDataType.INTEGER,0);
            /*Setting Item-Meta*/
            item.setItemMeta(m);
            System.out.println(item.getItemMeta().getPersistentDataContainer());

            e.getPlayer().getInventory().setItem(8,item);
        }
    }

}

This is my code. I'm pretty sure it is

visual tide
#

?conventions

undone axleBOT
visual tide
#

and

#

do you register the listener with the plugin manager anywhere

#

for example
Bukkit.getPluginManager().registerEvents(new giveItem(), mainInstance);

hot wolf
#

ofc, sec

        getServer().getPluginManager().registerEvents(new giveItem(),this);

In the main file onEnable

visual tide
#

uhm

#

try making the onPlayerJoin not static

#

not sure if that changes anything but ight as well try

#

and please

#

name your classes with UpperCamelCase/PascalCase

hot wolf
#

Sure will. It's been a while since C#

ivory sleet
#

Java != C#

hot wolf
#

ik

ivory sleet
#

They are similar but far from identical

#

Since naming conventions are very different in the two of them

hot wolf
#

Java is more like a child shooting itself in the knee if you compare it to C#

ivory sleet
#

Not really but C# does have a great set of features Java doesn’t have

#

Which is both advantageous and disadvantageous

quaint mantle
#

can someone help me with my NuVotifier problem 😭

#

posted up here

hot wolf
# visual tide try making the onPlayerJoin not static

Did that and got this one

Error occurred while enabling SmpMenu v1.0-SNAPSHOT (Is it up to date?)
java.lang.ExceptionInInitializerError: null
        at smpmenu.smpmenu.SmpMenu.onEnable(SmpMenu.java:17) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:342) ~[spigot-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:479) ~[spigot-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_19_R1.CraftServer.enablePlugin(CraftServer.java:523) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at org.bukkit.craftbukkit.v1_19_R1.CraftServer.enablePlugins(CraftServer.java:437) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at org.bukkit.craftbukkit.v1_19_R1.CraftServer.reload(CraftServer.java:922) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at org.bukkit.Bukkit.reload(Bukkit.java:801) ~[spigot-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) ~[spigot-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-api-1.19-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_19_R1.CraftServer.dispatchCommand(CraftServer.java:831) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at org.bukkit.craftbukkit.v1_19_R1.CraftServer.dispatchServerCommand(CraftServer.java:816) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at net.minecraft.server.dedicated.DedicatedServer.bg(DedicatedServer.java:419) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at net.minecraft.server.dedicated.DedicatedServer.b(DedicatedServer.java:395) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:1197) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at net.minecraft.server.MinecraftServer.v(MinecraftServer.java:1010) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at net.minecraft.server.MinecraftServer.lambda$0(MinecraftServer.java:291) ~[spigot-1.19-R0.1-SNAPSHOT.jar:3545-Spigot-475f600-4230f8f]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145) ~[guava-31.0.1-jre.jar:?]
        at org.bukkit.NamespacedKey.<init>(NamespacedKey.java:72) ~[spigot-api-1.19-R0.1-SNAPSHOT.jar:?]
        at smpmenu.smpmenu.util.keys.<clinit>(keys.java:11) ~[?:?]
        ... 18 more
quaint mantle
#

@hot wolf what's in util.keys, line 11

clever steppe
# quaint mantle 😭

Do you have NuVotifier on your compile class path? Also, is this a VoteListener or a VotifierEvent Listener? Also funny seeing you here.

hot wolf
# quaint mantle <@448486685999628319> what's in util.keys, line 11
package smpmenu.smpmenu.util;

import org.bukkit.NamespacedKey;
import org.bukkit.plugin.Plugin;
import smpmenu.smpmenu.SmpMenu;

public class keys {

    private static final Plugin plugin = SmpMenu.getPlugin();

    private static final NamespacedKey protectedKey = new NamespacedKey(plugin,"protectedKey");

    public static NamespacedKey getProtectedKey(){
        return protectedKey;
    }
}

the

private static final NamespacedKey protectedKey = new NamespacedKey(plugin,"protectedKey);
quaint mantle
hot wolf
# ivory sleet Send your SmpMenu class
package smpmenu.smpmenu;

import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import smpmenu.smpmenu.events.giveItem;
import smpmenu.smpmenu.events.noInteract;
import smpmenu.smpmenu.events.openMenu;

public final class SmpMenu extends JavaPlugin {

    private static Plugin plugin;

    @Override
    public void onEnable() {
        // Plugin startup logic
        System.out.println("[Menu] Starting SmpMenu...");
        getServer().getPluginManager().registerEvents(new giveItem(),this);
        getServer().getPluginManager().registerEvents(new noInteract(),this);
        getServer().getPluginManager().registerEvents(new openMenu(),this);
        plugin = this;

        System.out.println("v0.0.6");
        System.out.println("[Menu] Started SmpMenu!");
    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
        System.out.println("Stopping SmpMenu...");



        System.out.println("Stopped SmpMenu!");
    }

    public static Plugin getPlugin(){
        return plugin;
    }
}

Here you go

clever steppe
ivory sleet
#

Your fake singleton is null

#

As you never set the mono state to the plugin instance

#

You need in the beginning of onEnable plugin = this

#

Or well anytime before getPlugin() is used

clever steppe
hot wolf
#

oh, silly me

ivory sleet
quaint mantle
ivory sleet
#

And it would be unnecessary initialization

hot wolf
#

Appreciate it. Gonna try that

clever steppe
ivory sleet
#

Oh from constructor

#

Well Ig

clever steppe
#

You can't this in a static declaration

ivory sleet
#

You can change bytecode to make a static variable with the same name altho that fucks up some stuff

clever steppe
#

And constructor is probably the best place to do that so you can init stuff before onLoad or onEnable are called

ivory sleet
#

Well using a mono state is dirty to begin with anyway

clever steppe
#

Given, asking for a static instance of a plugin is probably a bad idea

#

Yeah

hot wolf
#

Thanks guys! It worked now, should've seen that I used plugin even though it was null @ivory sleet xD

ivory sleet
#

Well I’d partly blame Java for this

#

As nullability sucks in Java

#

But it’s nice that it’s fixed now :3

hot wolf
#

Null was a billion dollar mistake

ivory sleet
#

Indeed

hot wolf
#

Don't even get me going on undefined lol

ivory sleet
#

Oh well

#

Java has Optional, they just rarely incorporate it into their classes

clever steppe
#

Isn't Optional only fully in the java official packages since like Java 17?

ivory sleet
#

8

clever steppe
#

I think it was hanging out in javax before that

ivory sleet
#

Hmm

#

Let me check the since tag

#

Ah ye since 1.8

#

Altho they did add a few more methods in more recent jdks

clever steppe
#

Maybe that's what I was seeing in the release notes.

visual tide
ivory sleet
#

Oh don’t get me started lol

ivory sleet
#

Anyway Optional is good but Java didn’t really think when they added it so

clever steppe
#

They should pull the Scala model for Optional but functional programming is still scary to some Java folks.

#

As an aside, what's the consensus on opening PRs to add utility methods to bukkit/spigot?

shell wind
#

is this channel for help with developing on the spigot/bc source tree or developing plugins for them

clever steppe
shell wind
#

lmao

fading lake
old cloud
#
cannot access com.google.gson.JsonDeserializer
class file for com.google.gson.JsonDeserializer not found
```Why is this happening? Shouldnt bungeecord depend on it?
clever steppe
fading lake
shell wind
#

ok then I shall ask away-

how do I configure maven to build two individual plugins with different main classes, etc. but while also sharing a common set of classes

eg. this would be ideal
📁 common
♨️ MyDataClass
📁 pluginA
♨️ PluginAMain
📁 pluginB
♨️ PluginBMain

where the output is two jars, PluginA & PluginB, where both have access to MyDataClass

clever steppe
old cloud
shell wind
#

seems like the better build system anyways

fading lake
clever steppe
latent bone
#

what spigot/paper thing allows you to get the tier of the raid? I know there's something like spigot's RaidFinishEvent but i'm wondering how you get the tier of the completed raid

lost matrix
clever steppe
shell wind
#

alright I need to do a lot of reading, thanks for the help everyone

#

I'll look up how to shade my own dependencies

latent bone
old cloud
old cloud
# clever steppe Is there a fuller error?
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project someproject: Compilation failure
[ERROR] someclass cannot access com.google.gson.JsonDeserializer
[ERROR]   class file for com.google.gson.JsonDeserializer not found
#

not really a lot info ig

chrome beacon
#

Do you have gson added to your project

old cloud
#

wait ill run -e

old cloud
#

and bungeecord is provided later but i guess maven doesnt get that

latent bone
#

i'm quite new to spigot, how would I get the player through this for loop?
and if i'm doing something wrong (which I probably am) please tell me

lost matrix
clever steppe
latent bone
old cloud
#

net.md_5.bungee.chat.ComponentSerializer

sweet pike
lost matrix
latent bone
#

It still gives the same result.

old cloud
sweet pike
#

you don't open your for-loop with {}

#

it ends immediately with a e.getWinners());

lost matrix
#

`jd-b

#

?jd-b

#

`jd

#

?jd

lost matrix
old cloud
#

And that will be provided later if I am writing a bungeecord plugin, will it not?

lost matrix
#

You get a compile time error right?

#

Or runtime

old cloud
#

yea

#

compilation error

lost matrix
old cloud
#

scope is not compile

#

oh im dumb

lost matrix
#

Ok here is the solution: Depend on bungeecord-chat in your pom.xml

old cloud
#

yea

lost matrix
#

alright

quaint mantle
#

whats going on with NuVotifier's maven repo

old cloud
#

🧠 moment

ivory sleet
#

You know in Java virtually everything can be null

quaint mantle
#

if(Java == null){ return; }

ivory sleet
#

If we strictly only allow Optionals to represent maybe values we can much safer guarantee the correctness of our program’s behavior

lost matrix
#

Optional gives you another way to handle null values.
If done right it will prevent almost all nullpointer exceptions.
But you have to be very consistent.

ivory sleet
#

The main issue with Optional is the fact that there’s no subtype for guaranteed present optional contra guaranteed absent optional

lost matrix
#

And it great for functional programming

ivory sleet
#

Which kotlin for instance have incorporated

#

Or well if you look at sth like Haskell they have iirc a Maybe monad or sth

#

Or rust with their Option thing

clever steppe
ivory sleet
#

Yeah

lost matrix
#

Yeah in java you would have to do runtime assertions like

public void someStuff(Optional<String> optName) {
  Preconditions.checkArgument(optName.present());
}
ivory sleet
#

Yeah

lost matrix
#

Not as cool as compile time checks

ivory sleet
#

Guess it suffices

lost matrix
#

Are there jetbrains annotations for that? Let me check.

ivory sleet
#

Tho in Java having Optional in parameters is considered an anti pattern

clever steppe
#

I bet you could come up with a subclass-based optional that you can do compile-time checking on

ivory sleet
#

Mainly because it’s suboptimal due to concepts like type erasure which collided with method overloading

clever steppe
#

That's what the Arrow libraries did, it seemed to work out for them

lost matrix
clever steppe
old cloud
lost matrix
#

working with bungee is a bit of a mess sometimes

old cloud
lost matrix
shell wind
lost matrix
#

And then generate a dependency diagram to see if gson is in there

lost matrix
lost matrix
old cloud
#

no

lost matrix
#

Ok. Then both of those proposals wont work out for you...

old cloud
#

indeed

lost matrix
#

Does you IDE support generating a dependency tree? Or at least reinitializing your maven project?

old cloud
#

let me check

lost matrix
#

Also spigot provides gson at compile time

old cloud
#

Because its a plugin both for spigot and bungeecord

lost matrix
#

Your exception makes no sense then...

old cloud
quaint mantle
#

im heated about this

lost matrix
lost matrix
old cloud
#

second line

quaint mantle
lost matrix
#

Oh i see

quaint mantle
#

i cant necessarily explain it (not an expert).. but their developer documentation is completely wrong, and it seems other people also have issues with their maven stuff

lost matrix
old cloud
#

10k times now 😂

#

still erroring

lost matrix
#

You know what they say about code compilation. 10001 is the charm

lost matrix
#

'it' referring to everything. Your IDE, your pc...

old cloud
#

well if I remove that one line of code it indeed works

lost matrix
#

Which one

old cloud
#

could restart my pc tho

old cloud
ivory sleet
lost matrix
ivory sleet
#

Lmao

#

Yeah once we get valhalla and loom fully delivered the world will be in full harmony

old cloud
lost matrix
old cloud
#

yes

lost matrix
#

Add a line

Class<JsonDeserializer> ignored = JsonDeserializer.class;

Somewhere in your code.

old cloud
#

JsonDeserializer cannot be resolved to a type 😶

lost matrix
#

Your IDE is trolling you...

old cloud
#

seems like it

#

gson is even downloaded in maven dependencies 😂

quaint berry
#

This error:
[09:42:59 ERROR]: Error occurred while enabling GeneralPlugin v1.0-SNAPSHOT (Is it up to date?)
I was told that this was cause by messing up the commands but I get this error and I have no commands
(Sorry for butting in)

old cloud
#

Its right there

quaint berry
#

Here's a pastebin

lost matrix
old cloud
lost matrix
lost matrix
old cloud
lost matrix
old cloud
#

yep

lost matrix
#

And ls shows your pom

old cloud
#

where?

lost matrix
#

If you type it in your terminal

#

ls

buoyant viper
#

cries in Windows

lost matrix
#

I made a macro for ls... whats the equivalent again?

buoyant viper
#

dir

radiant umbra
#

Does anyone know, how I can get a Player, in a listener. If the player is defined in a command?

buoyant viper
#

powershell aliases ls to dir, but normal cmd nah

lost matrix
old cloud
quaint berry
radiant umbra
radiant umbra
lost matrix
# old cloud yes

Well... the last thing i could think of is that your heap is not big enough.
Define a bigger one:

export MAVEN_OPTS='-Xms384M -Xmx512M -XX:MaxPermSize=256M'
buoyant viper
#

store the Player (or MUCH rather their UUID) to a field and then access that field from the Listener

radiant umbra
#

How do i do that lmao?

lost matrix
lost matrix
buoyant viper
#

?learnjava

undone axleBOT
old cloud
lost matrix
# radiant umbra How do i do that lmao?

Usually you have a common singleton class.
And both your command and listener class have the singleton instance.
This way both have a common space for modifications.

coral oyster
#

hi, in the plugin i am making, my config.yml file would look something like this

thing1:
  key: 1234
thing2:
  key: 12345
thing3:
  key: 123456

where the user and add as many "thing" configuration sections as they wish with unique names. How would I iterate through all the present configuration sections and add the name of each section (e.g. thing1, thing2, etc.) to an array / list ?

lost matrix
smoky oak
#

you get the layer the things are in then just do for(String s : section.getkeys(false))
alternatively just use the getKeys(false) set

buoyant viper
#

yeah windows is SET

lost matrix
#

I created too many aliases...

buoyant viper
#

xdd

#

at that point id just use the WSL @lost matrix

#

lool

lost matrix
#

Well i got wsl2 because of docker... could actually use it

buoyant viper
#

hmm

frozen cedar
#

Where can this type of data be stored?

List<List<Block>>

I want to store it in Map, because I need to get an array by key

smoky oak
lost matrix
quaint berry
frozen cedar
quaint berry
smoky oak
#

convert object to string, save string to file

lost matrix
buoyant viper
# smoky oak

idk why i was expecting this diagram to be a lot more intense but its literally just do u need key value pairs? no? will it have duplicates? nah? okay

old cloud
#

Invalid initial heap size: -Xms384M -Xmx512M -XX:MaxPermSize=256M @lost matrix

smoky oak
#

theres a library tho

buoyant viper
#

language

#

sorry that was out of habit

lost matrix
#

?xy

undone axleBOT
smoky oak
lost matrix
#

"im building artifacts" incoming

frozen cedar
buoyant viper
smoky oak
#

unless you need to access the data outside of whatever functionality includes the blocks you should use this

quaint berry
buoyant viper
#

im so happy i finally switched to actually using gradle and maven

frozen cedar
#

about 1000 in one array, and there are 20 of them. But there will also be several such arrays of 20, about 100

reef lagoon
#

Instead of handling the event how about you handle some bitches

quaint berry
#

I learnt lmfao

smoky oak
#

hm, do players get sent block PDC? I dont think so right?

lost matrix
smoky oak
#

do you know this 7?

shadow zinc
#

Is there any other way that is better than doing this, seems a bit unnecessary

buoyant viper
#

maven is 💜 bc u dont need a gradle wrapper in each project

lost matrix
coral oyster
smoky oak
#

ah uh oh

frozen cedar
smoky oak
#

i need to rewrite stuff now

smoky oak
frozen cedar
coral oyster
lost matrix
lost matrix
old cloud
#

Gives me Unrecognized VM option 'MaxPermSize=256M' and if I remove MaxPermSize, the error is still there. @lost matrix

frozen cedar
lost matrix
smoky oak
#

say what now

lost matrix
frozen cedar
buoyant viper
#
annoc.setConfiguration(this.getConfig()).wrapClass(Config.class).load();```
😎
#

still need to think about how i would handle memorysections but i think i generalized it enough

lost matrix
charred blaze
#

is there any way to set motd's mark like this?

lost matrix
charred blaze
frozen cedar
lost matrix
frozen cedar
#

But I myself build these 20 chunks in the "build" world. I just load the world with another plugin before generating the second world with my generator

lost matrix
buoyant viper
# quaint berry ^

u probably already answered this but, are u sure u used the uberjar'd plugin on the server?

buoyant viper
#

(typically called like -fat, -uber, -full, -shaded, etc)

charred blaze
quaint berry
#

OHG

#

Wait

buoyant viper
#

basically the jar with ur dependencies shaded in

quaint berry
#

I didn't use the shaded

buoyant viper
#

its usually the larger jar in target/ folder

quaint berry
#

I was told to never use the shaded or original

buoyant viper
#

yeah the bigger jar is the one that actually has ur depends included

#

dont forget to relocate them :3 conflicts suck

lost matrix
#

Ok. Then lets do this step by step.
The first thing you need are those chunks.
I would suggest that you get the ChunkSnapshots when the server starts.

    List<ChunkSnapshot> snapshotList = new ArrayList<>();
    World world = Bukkit.getWorld("build");
    Preconditions.checkState(world != null);
    for(int x = -4; x <= 4; x++) {
      for(int z = -4; z <= 4; z++) {
        snapshotList.add(world.getChunkAt(x, z).getChunkSnapshot());
      }
    }

You need to do this after your world is loaded.

old cloud
subtle folio
#

PlayerServer

lost matrix
eternal oxide
#

ty

lost matrix
subtle folio
#

bukit player 😛

earnest forum
#

🤦

subtle folio
#

sure it could be condensed ServerPlayer splr = ((CraftPlayer) plr).getHandle();

buoyant viper
#

cheese pizza and sausage pizza

subtle folio
#

LOL

#

i just realized cp may not be a good name

buoyant viper
#

LOOOOL

charred blaze
buoyant viper
#

@old cloud sorry im very lazy and dont like looking up in chat, can u summarize ur maven issue rn

#

missing Gson right?

lost matrix
quaint mantle
#

how do i get the player who thrown the projectile from ProjectileHitEvent

buoyant viper
#

?jd-s

undone axleBOT
lost matrix
#

And check for instanceof Player

buoyant viper
#

getShooter no?

lost matrix
#

thx

#

Returns a ProjectileSource iirc

buoyant viper
#

ye

#

just looked on jd

subtle folio
#

What else can shoot a projectile besides a player?

#

oh wait that sounds dumb nvm

lost matrix
buoyant viper
#

skeletons

old cloud
earnest forum
#

witches

lost matrix
subtle folio
#

does throwing items count as a projectile

buoyant viper
#

nvm not dropper

#

uhh

#

ender dragon

#

wither

lost matrix
quaint mantle
#

getEntity()?

lost matrix
buoyant viper
#

according to bukkit just about anything can launch a projectile

subtle folio
#

spider??

lost matrix
#

Those are all projectiles

buoyant viper
#

WaterMob, what a fuckin class jame

subtle folio
#

i just woke up crying

frozen cedar
buoyant viper
#

i mean if want everything that naturally can launch a projectile its a lot less

old cloud
buoyant viper
#

player, wither, dragon, shulker, skeleton, snowman, llama, illager, dispenser

lost matrix
buoyant viper
#

off the top of my head at least

earnest forum
#

witches

#

as well

quaint mantle
#

when my projectile hits a player it keeps returning false

buoyant viper
#

ah fuck

#

they do

quaint mantle
buoyant viper
#

LOL

quaint mantle
#

returns false

#

after t hits a player

buoyant viper
#

PlayerToggleSneakEvent if sneaking, spit

lost matrix
#

So this is expected to be false

buoyant viper
#

or if sneaking and swings arm, spit

quaint mantle
charred blaze
hybrid spoke
lost matrix
buoyant viper
quaint mantle
lost matrix
frozen cedar
buoyant viper
#

?jd-s

undone axleBOT
lost matrix
frozen cedar
charred blaze
#

but how to change it?

lost matrix
buoyant viper
frozen cedar
hybrid spoke
#

just showing what i mean

frozen cedar
#

but all chunks will be taken from the "build" world

lost matrix
lost matrix
#

And they will be the same?

frozen cedar
lost matrix
lost matrix
# frozen cedar Not

Ok your code looks good so far.
All you need to do now is use the snapshot in your generator.

#

You can iterate through the snapshot (x, y, z) and get all the block data from there.

quaint mantle
lost matrix
quaint mantle
#

no i was typing event.getHitEntity()

lost matrix
#

No problem then.

frozen cedar
#

by the way my map looks like this

quaint mantle
#

but it says it does on docs

lost matrix
buoyant viper
#

?paste ur class

undone axleBOT
lost matrix
smoky oak
#

I'm 99% convinced its possible to place shulkers off-axis. Can anyone give me a hint as to how?

lost matrix
buoyant viper
quaint mantle
#

only has getEntity getHandles and getHandlerList

buoyant viper
#

does that have a getHitEntity

quaint mantle
#

Nop

buoyant viper
#

hm

lost matrix
# frozen cedar I'm an idiot?

It looks usable. Now go into your generator and get the ChunkSnapshot in your "generateNoise" method implementation.

lost matrix
frozen cedar
quaint mantle
buoyant viper
#

just copy paste it into

#

?paste

undone axleBOT
quaint mantle
buoyant viper
#

interesting missing package

quaint mantle
#

i think when i started the project i put it to 1.19

lost matrix
# quaint mantle I cant send a ss or i would

Also

event.getEntity().toString() == "CraftSnowball"

This will always be false.

  1. Never compare objects using == unless they are primitives or enums
  2. Dont use a String here at all. Use instanceof or getType() == EntityType.SNOWBALL
signal ether
# frozen cedar

(I do have to applaud the concept of a backrooms generator plugin btw)

quaint mantle
#

only logged something when i threw a snowball

lost matrix
frozen cedar
lost matrix
quaint mantle
frozen cedar
quaint mantle
dawn plover
#

if i do Bukkit.reload(), will it reload every plugin? or only the one that this line is in

buoyant viper
#

i think that reloads the server, why in gods name do u need to call that

lost matrix
signal ether
# frozen cedar It is suitable?

I'm not sure if bukkit.block offers anything more effecient than a triple for loop. But what you have should at least work yes.

dawn plover
#

XD

dawn plover
#

so therefore i will have to realod it

signal ether
lost matrix
dawn plover
signal ether
#

BeeMe are you using someone else's plugin or making your own?

dawn plover
#

making my own

lost matrix
# smoky oak .

They are just entities, right? What happens if you just place them at a random location. Do they snap in the grid?

buoyant viper
quaint mantle
signal ether
#

In your main file, you want this.saveDefaultConfig then this.reloadConfig

lost matrix
# dawn plover and that is?

JavaPlugin#reloadConfig()
This will reload the config you are getting with JavaPlugin#getConfig()
Just make sure to actually call getConfig() so you get the updated one.

smoky oak
#

i mean i could do some insanity with boats but i really dont want to do that

lost matrix
smoky oak
#

i thought you cant edit nms code?

#

or rather without rebuilding the server jar?

subtle folio
#

is it possible to get the skin texture and signature of a player without referencing the mojang api?

lost matrix
#

Well you can extend every entitiy and overwrite any method.

frozen cedar
#

Everything hangs on line 22, the "game" world is generated first than the "build" as you said

smoky oak
#

but the server would still consider it a nms shulker entity and snap it back right?

subtle folio
buoyant viper
signal ether
lost matrix
subtle folio
#

oo

dawn plover
lost matrix
subtle folio
#

CraftPlayer right?

lost matrix
frozen cedar
quaint mantle
lost matrix
subtle folio
frozen cedar
lost matrix
lost matrix
frozen cedar
subtle folio
lost matrix
subtle folio
#

I'm using game profiles

lost matrix
# subtle folio funny story
  public PlayerProfile copyWithTextures(Player player) {
    PlayerProfile profile = Bukkit.createPlayerProfile(UUID.randomUUID());
    PlayerTextures textures = player.getPlayerProfile().getTextures();
    profile.setTextures(textures);
    return profile;
  }
buoyant viper
lost matrix
buoyant viper
#

u should always use the official spigot nexus repo

quaint mantle
#

well

subtle folio
#

I don't know what a PlayerProfile is

quaint mantle
#

tf

quaint mantle
#

bukit

lost matrix
#

If you keep posting this site you gonna get banned soon

smoky oak
#

soooooooo i now have a completely different issue. I want to get the shulker nms instance but i also need to stop its ai, but i cant import both bukkit shulker and nms shulker at once

frozen cedar
#

I LOVE YOU!

lost matrix
lost matrix
quaint mantle
subtle folio
#

How do you even make a new PlayerProfile

buoyant viper
#

i mean in the end it still doesnt make sense as to why your event was bare

buoyant viper
#

but definitely use the official source

ivory sleet
buoyant viper
#

talkin some big anime tiddies in the background

subtle folio
ivory sleet
#

Server::createPlayerProfile or sth

smoky oak
#

so anyways imports blocking each other?

subtle folio
#

i see

eternal oxide
#

Bukkit.createPlayerProfile(UUID.randomUUID());

buoyant viper
#

if u supply a registered uuid does it just use a real profile lolz

subtle folio
#

Am I even able to send packets with it?

smoky oak
buoyant viper
subtle folio
#

PlayerProfile

buoyant viper
#

oh player profile

subtle folio
#

oh wait

buoyant viper
#

peepee

#

poopoo

subtle folio
#

ig that does look bad

#

i dont think abt these things as i code ok

buoyant viper
#

peppa pig

#

its okay im just here to bully everyone while i actually secretly write the worst code someone could ever lay eyes on

subtle folio
#

lmfao

smoky oak
#

for gods sake does ANYONE here know how to solve this

buoyant viper
#

pick one or the other

earnest forum
#

the bukkit shulker has the same name

#

thats not allowed

buoyant viper
#

gonna have to use one the obnoxious way

#

aka fully qualified path to it every line u use it on

smoky oak
#

that still wont help if i cant import it

buoyant viper
#

yes it will

dire marsh
#

it does

buoyant viper
#

u wont need to import it then

dire marsh
#

you dont actually import it

eternal oxide
earnest forum
#
org.bukkit.entity.Shulker shulker = //whatever;

works

buoyant viper
#

yeah

#

it doesnt need importing bc ur already telling java exactly where it is

dire marsh
#

probs want to use the bukkit as fully qualified as it's shorter

smoky oak
#

k noted thanks though now i want to know how imports work

buoyant viper
#

id say whichever one is used less should be used as FQN

buoyant viper
#

(literal torture)

smoky oak
#

oh right i cant do that

#

how do i cast CraftBukkitEntity to a NMS entity again

buoyant viper
#

theres also static imports, theyre something.

dire marsh
#

well think about it, if you have two imports with the same name, and you try to do something like:

Shulker shulker = new Shulker();

how would it know which one to use

buoyant viper
subtle folio
buoyant viper
#

Java and JS are my top 2 languages, please kill me

subtle folio
#

i learned js for the web developement phase

#

id rather be it support

#

than a web developer

buoyant viper
#

oh what u think i learned it for Node? fuck no

subtle folio
#

only reason i used node was for discord.js trol

smoky oak
buoyant viper
#

i used it once for a minecraft bot

subtle folio
buoyant viper
smoky oak
#

well i remember using get handle for this once but i cant recall what i actually wrote

buoyant viper
#

oh wait

#

ur not using CraftShulker

#

thats why u dont have it

smoky oak
#

i need org.bukkit.entity.Shulker to net.minecraft.world.entity.monster.Shulker

#

so cast to craftshulker first?

buoyant viper
#

(Bukkit)Shulker -> CraftShulker -> (NMS)Shulker

#

so like Shulker nmsShulker = ((CraftShulker) bukkitShulker).getHandle().

#

i think

sleek dragon
#

is there a way to use Components within a container title?

#

I know Paper supports

#

idk if spigot does

buoyant viper
#

as long as it can be converted to whatever format spigot needs id imagine so

sleek dragon
#

takes string

smoky oak
#

yea that works

sleek dragon
#

translatable components can be converted to string?

#

i feel like thatd break

#

ill try tho

buoyant viper
#

idk

sacred mountain
#

so im basically trying to create a method which i can use like

anyEquals(x -> x < 5)```
But the operator < can't be applied to a generic. how can i do something like T extends Number
frozen cedar
# lost matrix good

Now I have a problem, my lamps are activated by the redstone block, but they are turned off when generating

smoky oak
#

update physics when placing them

subtle folio
#

I believe you can set their state

#

or taht

smoky oak
#

oh yea

#

setting state is the better option

#

if you know theyre powered

frozen cedar
frozen cedar
smoky oak
#

to my knowledge setting the state is faster than updating physics

subtle folio
smoky oak
#

rotation got applied twice

crimson terrace
#

reverse worm?

subtle folio
#

smt like taht

buoyant viper
subtle folio
#

i just tried to make a dead body

smoky oak
#

uh tf is this error
- [Sat 13:11:10 ERROR Server/PlayerConnection] null

buoyant viper
#

i didnt even know u could put entities horizontal

subtle folio
#

didn't also what the neck to be dead

subtle folio
buoyant viper
#

oh

#

right

frozen cedar
subtle folio
#

:smart:

smoky oak
smoky oak
crimson terrace
#

wrong version?

smoky oak
#

im on 1.19

buoyant viper
#

honestly no clue, maybe u need to remap the plugin jar on compile?

#

that part i dont know how to do at all

smoky oak
#

wait

subtle folio
#

i cant get it right

smoky oak
#

yup thats the issue

#

also i cant access my console for some reason
fun

shadow zinc
#

is this bad? java for (ConfigurationSection configSection : ConfigUtil.getConfigurationSections(config)) { for (String configurationSection : configSection.getKeys(false)) { if (!config.contains(configurationSection)) { Logger.warn(configSection + " is missing an entry: " + configurationSection); } Object value = configSection.get(configurationSection); configSettings.put(configurationSection, value); } } return new TweakData(tpsHaltAt, notifyAdmin, mobCap, allowJoinWhileHalted, maxSpeed, configSettings.get("haltExplosions"), configSettings.get("haltRedstone"), configSettings.get("haltChunkLoading"), configSettings.get("haltMobSpawning"), configSettings.get("haltInventoryMovement"), configSettings.get("haltCommandBlock"), configSettings.get("haltProjectiles"), configSettings.get("haltEntityBreeding"), configSettings.get("haltEntityInteractions"), configSettings.get("haltEntityTargeting"), configSettings.get("vehicleCollisions"), configSettings.get("blockPhysics"), configSettings.get("use_mail_server"), configSettings.get("mail_server_host"), configSettings.get("mail_server_port"), configSettings.get("mail_server_username"), configSettings.get("mail_server_password"), configSettings.get("recipients"));

buoyant viper
#

holy fuck

#

?paste

undone axleBOT
sacred mountain
#

hu

subtle folio
shadow zinc
#

seriously its not that big

buoyant viper
#

it took up my whole phone screen 💔

shadow zinc
#

lol saw it coming

smoky oak
#

it took up my entire monitor

shadow zinc
vocal cloud
#

It took out a small city

sacred mountain
#

it took up more than 3/4 of my discord

shadow zinc
#

bruh what do you all have such small screens

sacred mountain
#

smh

vocal cloud
#

My screen thicc but your text thiccer

smoky oak
#

cuz we want to read the text from further than 10 cm away

shadow zinc
#

anyways

sacred mountain
frozen cedar
shadow zinc
#

how can I optimise that?

smoky oak
shadow zinc
#

but I kinda hate it

vocal cloud
#

The code is unreadable tbh. It's a headache to put together

subtle folio
#

use more variables

frozen cedar
smoky oak
#

?

frozen cedar
smoky oak
#

i know for a fact that exists

#

what version are you on

shadow zinc
#

more variables, sounds like a great solution

frozen cedar
smoky oak
#

it's probs set material to REDSTONE_LAMP_LIT or something then

frozen cedar
#

LEGACY_REDSTONE_LAMP_LIT

but it deprecated

smoky oak
#

in that case, get block data, cast to lightable and set it lit

#

uh which remapped file was the right again? remapped-obf or just remapped?

old cloud
sacred mountain
#

Operator '<' cannot be applied to 'java.lang.Number', 'int'

old cloud
smoky oak
#

BigDecimal value = new BigDecimal( inputNumber.toString() );

sacred mountain
#

ok lemme explain better:
I want the method to allow for any type of numeric value that i can apply the less that operator to

torn badge
#

Number#doubleValue

sacred mountain
#

or greater than or whatever

#

in the predicate that is

buoyant viper
#

wait

sacred mountain
#

num -> num > 10

#

somehting likie that

buoyant viper
#

why dont u just use normal anyMatch

old cloud
#

Yea, then instead of T just use either Double or still <T extends Number> and you do x -> x.doubleValue() < 5

buoyant viper
#

whats the point in creating anyEquals

sacred mountain
#

its not equals i just didnt rename it

#

its applying a condition to a list of numbers

buoyant viper
#

so... anyMatch?

sacred mountain
#

oh

#

soo

#

example with random variables

#

something like this

buoyant viper
#

ye

sacred mountain
#

i kinda didnt really think of that

#

thanks

#

:)

#

better

buoyant viper
#

np lol

sacred mountain
#

okay so slightly more in context, should i do this in any other way?

#

bit of an xy

buoyant viper
#

well i would do <= 0 if ur saying 0 or less

sacred mountain
#

well yes but the logic i mean

#

changed that

buoyant viper
#

some people might say dont use streams api but idk looks fine to me

sacred mountain
#

whats wrong with streams?

#

theyre quite usefl

crimson terrace
#

they mean the api

buoyant viper
#

when they were released in java 8 their performance was kinda crap

crimson terrace
#

not streams themselves

#

or is Stream.of() java?

eternal oxide
buoyant viper
subtle folio
#

signaturesasssss

buoyant viper
#

god i just realized guava rhymes with java

eternal oxide
#

I've just been playing with them myself. Just got an NPC to spawn with a two layer skin. Is nice

buoyant viper
#

i hate google

opal juniper
#

how do i gett the current nms version, ie 1.19_R1

sacred mountain
subtle folio
#

mine only have 1 layer

sacred mountain
#

he he he ha

eternal oxide
#

one sec

buoyant viper
sacred mountain
#

grrrr

#

ha har

buoyant viper
#

?jd-s

undone axleBOT
shadow zinc
#

?paste

undone axleBOT
shadow zinc
#

bruh

buoyant viper
#

?stash

undone axleBOT
buoyant viper
#

oh cool

#

that is a command

shadow zinc
#

?help

undone axleBOT
#
CafeBabe Help Menu
*Red V3*
**__Admin:__**

selfrole Add or remove a selfrole from yourself.

**__Cleanup:__**

cleanup Base command for deleting messages.

**__Core:__**

embedset Commands for toggling embeds on or off.
info Shows info about CafeBabe.
licenseinfo Get info about Red's licenses.
mydata Commands which interact with the data CafeBabe has about...
set Commands for changing CafeBabe's settings.
uptime Shows CafeBabe's uptime.

**__Downloader:__**

findcog Find which cog a command comes from.

**__Mod:__**

names Show previous names and nicknames of a member.
userinfo Show information about a member.

**__ModLog:__**

listcases List cases for the specified member.
reason Specify a reason for a modlog case.

**__Permissions:__**

permissions Command permission management tools.

shadow zinc
#

?selfrole Admin

undone axleBOT
#

Role "Admin" not found.

eternal oxide
subtle folio
#

how do i even remoevd the nametag of an npc

sacred mountain
#

can you ban an npc lol

sleek dragon
subtle folio
eternal oxide
#

So I can spawn an NPC as simply as NPCFactory.createNPC(loc, "ThisIsATest", NPCFactory.skin);

subtle folio
#

ooonice

#

do you know how I can make the name invisible?

#

empty string no work

sleek dragon
#

is npc factory 1.19?

#

im using player npc api

sacred mountain
#

or naw

opal juniper
#

can i make modules in modules

#

maven

subtle folio
eternal oxide
#

Have you tried with the custom name?

subtle folio
#

no pc

#

npc

#

generated

sacred mountain
#

lmao

buoyant viper
#

pretty sure player nametag will always try to draw something

sacred mountain
#

rip

sacred mountain
#

maybe move the nametag somewhere else

subtle folio
#

is that possible

buoyant viper
#

oh wait

#

teams

sacred mountain
#

idk how teams work but scoreboard teams can remove the

#

yeah

#

you can add the npc to a team

subtle folio
sacred mountain
#

and remove the tag that way

#

so players cant see it

subtle folio
#

i see

eternal oxide
#

Yeah that would work

buoyant viper
#

we all just had the same braincell

#

lmao

sacred mountain
#

yup

subtle folio
#

i should make the npc's name smt unique right?

#

so it doesnt collide

wintry badger
#

hi guys, i have such a method and it returns true for OP, even if the OP doesnt have the perm. i was hoping it to be false

public boolean hasPermission(Player player, String permission) { return player.hasPermission(new Permission(permission, PermissionDefault.FALSE)); }

subtle folio
#

op has all perms

sacred mountain
#

lol

#

well

subtle folio
#

you can check if they have op

wintry badger
#

so default: false wont help?

subtle folio
#

and do stuff accordingly

eternal oxide
#

I didn;t have to do your delay ClientboundPlayerInfoPacket.Action.REMOVE_PLAYER

subtle folio
#

or no skin

#

😦

sacred mountain
#

whaaaat

#

mine shows up instantly

#

when i did npcs

eternal oxide
#

all I did after creating and spawning is ```java
private static void showAll(Npc npc) {

    ClientboundPlayerInfoPacket playerInfoAdd = new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.ADD_PLAYER, npc);
    ClientboundAddPlayerPacket namedEntitySpawn = new ClientboundAddPlayerPacket(npc);
    ClientboundRotateHeadPacket headRotation = new ClientboundRotateHeadPacket(npc, (byte) ((npc.getBukkitYaw() * 256f) / 360f));
    ClientboundPlayerInfoPacket playerInfoRemove = new ClientboundPlayerInfoPacket(ClientboundPlayerInfoPacket.Action.REMOVE_PLAYER);

    for (Player player : Bukkit.getOnlinePlayers()) {
        ServerGamePacketListenerImpl connection = ((CraftPlayer) player).getHandle().connection;
        connection.send(playerInfoAdd);        // Inform client this Entity exists.
        connection.send(namedEntitySpawn);    // Spawn this entity on the client.
        connection.send(headRotation);
        connection.send(playerInfoRemove);    // Remove from servers tab list
    }
}```
sacred mountain
#

mmm yes i understand

eternal oxide
#

I commented each packet

sacred mountain
#

mmmmmmm

subtle folio
#

bruh

#

how do I even do thisss

#

i dont see anything for multi layer skins

sacred mountain
#

lmao

eternal oxide
#

in your Fake PLayer this.getEntityData().set(Player.DATA_PLAYER_MODE_CUSTOMISATION, (byte) 0xFF);

subtle folio
#

byte oh god

eternal oxide
#

enables the second texture layer

subtle folio
#

:?

sacred mountain
#

:)

eternal oxide
#
    public void setSkin(String[] skin) {

        String texture = skin[0];
        String signature = skin[1];

        this.getGameProfile().getProperties().put("textures", new Property("textures", texture, signature));
        // Enable the second layer of the ServerPlayer's skin
        this.getEntityData().set(Player.DATA_PLAYER_MODE_CUSTOMISATION, (byte) 0xFF);
    }```
vestal musk
# subtle folio do you know how I can make the name invisible?

org.bukkit.scoreboard.Scoreboard scoreboard = player.getScoreboard();

    Team npcs = null;

    for(Team team : scoreboard.getTeams()) {
        if(team.getName().equals("npcs")) {
            npcs = team;
            break;
        }
    }

    if(npcs == null) {
        npcs = scoreboard.registerNewTeam("npcs");
    }

    npcs.setNameTagVisibility(NameTagVisibility.NEVER);
    npcs.addEntry(npcName);

this is @carmine nacelle 's code but this maybe work

subtle folio
#

ik how to teams

#

i was just tryna figure out best way lol

#

but ty ❤️

subtle folio
frozen cedar
#

how to activate redstone lamp in generateChunkData?

eternal oxide
sacred mountain
dusk flicker
#

Why use a custom set skin method? Doesn't PlayerProfiles do that now?

frozen cedar
subtle folio
eternal oxide
sacred mountain
subtle folio
eternal oxide
frozen cedar
sacred mountain
#

oh

#

why so many

#

sea lanterns maybe or no

sacred mountain
# frozen cedar

getBlock().setType(Material.REDSTONE_LAMP_ON) ? idk how you're generating the

#

so are the lamps already there beforehand

frozen cedar
eternal oxide
sacred mountain
#

potentially dangerous smhsmhsmhmshms

#

ill check it out later

#

i wanna see how it works too

eternal oxide
#

Was for @subtle folio but anyones welcome

subtle folio
#

lol

sacred mountain
#

mine now

subtle folio
#

did u really document ur code

#

wow

sacred mountain
#

heha

sacred mountain
#

¯_(ツ)_/¯

eternal oxide
#

I do a bit as I go along

sacred mountain
#

full detail

eternal oxide
#

The only bit thats not quite workign is the combat blocking code

frozen cedar
ivory sleet
sacred mountain
#

ive had too many times i come back to unfinished stuff i couple months later and forgot what tf i was doing

lost matrix
# frozen cedar

You can not get blocks while generating noise. This will lead to server crashes. We've been through this already.

dusk flicker
#

I put javadocs for some of my private code, mostly my big ass parts of it

#

I cba to remember what every line of a 500 line class does lol

vestal musk
#

i only put javadocs in my plugins when im coding a core or a spigot fork server jar

lost matrix
#

I would only document apis

frozen cedar
eternal oxide
#

anyone have a tidy little class to grab CraftServer, CraftWorld and CraftPlayer at runtime so I can bin these version dependent imports?

#

I can write it but I'm feelign lazy and I have seen it posted here before

lost matrix
lost matrix
eternal oxide
#

yes reeflection

lost matrix
#

Ah. Yeah i know what you mean then. I think NBTapi has something like that.

eternal oxide
#

If you obtain teh class via reflection you can avoid having to have multiple version dependant classes

lost matrix
eternal oxide
#

it is if it was only these 3 classes I need fo my class to be version agnostic

#

everythign else is API

frozen cedar
#

ok, then how?

wintry badger
#

guys, in onDeath event, i randomly add items to player's inventory by:

player.getInventory().addItem(event.getDrops().get(randomIndex));

then when i run this to check if player has an elytra in his inventory:

player.getInventory().contains(Material.ELYTRA)

it returns false, even if i actually added an elytra to the player's inventory with the previous line

#

i also tried updateInventory between these two but it didnt help

lost matrix
#

Wait is "chunk" the snapshot? because then its fine.

limpid bronze
quiet ice
#

The unconditional cast is the issue I suppose

lost matrix
#

ever

frozen cedar
#

Well, it turns out that BlockData = CraftBlockData

#

but how do i get org.bukkit.block.data.Powerable

lost matrix
subtle folio
#

finally oml

earnest forum
#

craft bukkit is the implementation of spigot interfaces

subtle folio
#

teams are annoying asf

quiet ice
#
if (x instanceof Y yInstance) {
  // variable "yInstance" is an instance of y
}
reef lagoon
earnest forum
#

sleeping pose

subtle folio
reef lagoon
#

ah

#

Teams?

earnest forum
#

this guy shows how to do it

subtle folio
#

i love kody

#

wait he has a tuturoail

#

bruh

#

fml

earnest forum
#

its name is ambiguous

#

dead body npc plugin

subtle folio
#

wait is that what hes making

#

thats legit what im trying to do

frozen cedar
#

how to cast CraftBlockData to Powerable?

subtle folio
#

im gonna scream

earnest forum
#

basically

vestal musk
subtle folio
#

breh

earnest forum
#

it has chapters

#

just skip to the part where u need help with

#

1hr 50m

#

nvm it doesntg have chapters

subtle folio
#

lmao

earnest forum
#

i thought it did

vestal musk
winged storm
#

how do i give a player an item

subtle folio
#

#addItem(ItemStack);

earnest forum
#

to their inventory

frozen cedar
#

In the end, I still did not understand how to activate the glowstone in the generation of chunks using BlockData

opal juniper
#

Can i put maven modules inside submodules

frozen cedar
#

will it work?

quiet ice
#

if you just want to active glowstone, no

#

And there are additional performance complaints

frozen cedar
quiet ice
#

Check the material of the block

frozen cedar
quiet ice
#

...

frozen cedar
quiet ice
#
// [...]
if (blockData.getMaterial() != Material.GLOWSTONE) {
  continue;
}
// [...]

is what I meant