#help-development
1 messages · Page 415 of 1
I wouldn't bring lan cables to school
and all missing at least one key
I was expecting an external program
ethernet ports are all linked to the switch
and the switch has a MAC whitelist
we have 1 switch per classroom
mine's like a technical school
we have competent network teachers that know their shit
my network teacher's a bit insane
like its the same shit in uni, i can just plug a cable in and boom
gigabit internet
no login required
lmao I wish schools had gigabit internet
I think my school's petitioning to have a private network line
for the IT students
so we have our own line that isn't clogged with typical school BS
but idk if that's going anywhere
only one flimsy lock in the way
our "server rooms" aren't really server rooms
if i wouldve snapped i couldve pulled the plug on the damn email server
like very much literally
we have the "computer lab" that I helped remake when I was an intern
with like a few servers running
that I had to shut down when I re-made all the electrical sockets
the really amazing part here is that the wlan is still a 250mbit connection somehow. they employ black magic here
we had a robot ag but the teacher went in pension
he looked old enough to have worked already in the 1950s
yea we have a crazy network teacher that's in charge of all the robotics club
he was my network teacher during 10th grade
mf dragged me on my way home one day
"So, you like ethereum?" and started licking himself all over
it was during peak nftworlds season and I was making a shit ton of cash with the shittiest commissions
crypto has one (1) good thing about itself
It's cool tech
well one real-world good thing
it doesnt take half your damn paycheck to get the money into your bank account
why the fuck does it take like $60 to wire money from america to europe?????
Lol true
for (int x = (int) boundingBox.getMinX(); x <= boundingBox.getMaxX(); x++) {
for (int y = (int) boundingBox.getMinY(); y <= boundingBox.getMaxY(); y++) {
for (int z = (int) boundingBox.getMinZ(); z <= boundingBox.getMaxZ(); z++) {
Block block = world.getBlockAt(x, y, z);
if (boundingBox.contains(x, y, z)) {
blocks.add(block);
}
}
}
}```
i may be doing something wrong but this returns a empty list
Get rid of the if-statement
still doesn't work
Why the casting to int?
There should be a method to get the int of it
yes but that shouldent be the issue right?
Anyways. No matter what exactly you trying to do?
get the blocks inside a bounding box
my full code:
private List<Block> getBlocksFromBoundingBox(BoundingBox box, World world) {
List<Block> blocks = new ArrayList<>();
for (int x = (int) box.getMinX(); x <= box.getMaxX(); x++) {
for (int y = (int) box.getMinY(); y <= box.getMaxY(); y++) {
for (int z = (int) box.getMinZ(); z <= box.getMaxZ(); z++) {
Block block = world.getBlockAt(x, y, z);
blocks.add(block);
}
}
}
return blocks;
}```
Ah. Well if by the time i get home from work in the morning you havent solved it. I will give you the solution
Dont really feel like typing out code on my phone
Its actually easy to do what you are wanting
I get off work 6am cst and usually home by 7am cst
Does a player die when their health is < 0 or <= 0?
So either ping me then to remind me or create a thread lol
They die when their health is 0 or is calculated it will go below 0
Thanks
alright
In fact i will give 2 solutions
The easy one and the slightly more complex but still easy and bit more optimal solution because i feel nice
Or 3 we will see. The third one is harder but super optimal
https://imgur.com/a/IYFSKbp the guardian beam stops showing when the target gets too close, how can i fix this? https://pastebin.com/FmFR1N3j
Anyone knows how to make my own GUI like this for test servers?
I mean what do I have to use as project in an IDE or what do I do?
This is actually the standard gui provided by java
Not sure if linux is provided one. But you get this gui if you double click the jar to run it on windows
You can get it from the command line but sometimes you have to provide the gui param for it
Server jar
Even mc client has it too but it tends to hide it away as a configurable option
As far as coding your own there is various ways
You can use jfx, awt, or jframes
Think the one that comes up is just awt and jframes as that is still in the jdk unlike jfx which is its own separate jar and install
Its technically called the java console just fyi
I5
More stable especially with drivers
Hello I have problem where I can get packets ids for 1.19.4? It is need for bungee :0
The left. Cpu is better
Dont get fooled about the boost speeds that both amd and intel advertise
is ram soldered on new laptops or is that just older ones
yeah I want to use it lol
I just want to "fork" it to make my own version and make it look cuter
Super old ones at that. Old mobos used to come with built in memory so that if you had issues with ram cards it would still post as well as the integrated gpu providing display
I'd get Aspire 7 Intel, it looks way better than Aspire 7 Intel
Then take a look at the java console code
It isnt hard to customize it last i remembered
declaration: module: jdk.jconsole, package: com.sun.tools.jconsole, class: JConsolePlugin
Can look around the jconsole stuff or what not. Might be some other packages too just have to look
You can provide plugins for the console as well which is what that link is
bump
that is 5am in my time
unless u mean pm
When I use <Player> scaled health, the health bar of the player isn't updated instantly. I mean there's a big delay before the health is set to it's amount, so we can see the bar regenerate and then all the hearts are set.
Is this normal ? If no how can I solve that ?
(I'm using spigot 1.18.2)
piece of code:
<Player>.setHealthScaled(true);
<Player>.setHealthScale(10);
<Player>.setHealth(10);
PS: Please ping me for any replies
Find a solution using Attribute.GENERIC_MAX_HEALTH
Can anyone help me understand why my PacketPlayOutRelEntityMove code makes the entity look jerky
It looks weird as if there were 3 zombies on screen at some points
The legs move very oddly
return new PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook(entity.getId(), (short)(4096*(x-oldX)), (short)(4096*(y-oldY)), (short)(4096*(z-oldZ)), l0, l1, true);
Jumping actually looks smooth
Walking and otherwise looks super jerky
I'm on 1.12.2
oh alrighty
has what
java stdlib guis?
u gotta enable it with some jvm prop for Mc now iirc, otherwise u get a headless exception
macbook pro m2

On windows the launcher has a config option for java there is a global param if you go to the control panel and click the java icon and you can make it show up regardless. On headless you need to have some kind of window manager or xserver
is there a way to get the Item in PlayerFishEvent or the velocity of the Item? Im trying to pull a creature that spawns when you fish towards the player any ideas?
What item? The fishing line?
#getCaught()
the fished item
Alex gave you the method for it
i tried that didnt work can i tweak some delays or sum?
https://paste.md-5.net/yudesapebi.cs
- Get the player's location, turn it into a vector called "vecPlayer".
- Get the fishing hook's location, turn it into a vector called "vecGuardian".
- You need a third vector, called "vecGuardianToPlayer" so that "vecGuardian + vecGuardianToPlayer = vecPlayer". That means vecGuardianToPlayer is "vecPlayer - vecGuardian".
- Spawn the guardian at the fishing hooks location. Using the spawn(Location, Class<Entity>, Consumer<Entity>) method, and set the velocity of the guardian to vecGuardianToPlayer inside that ( https://blog.jeff-media.com/use-consumers-when-spawning-custom-entities/ )
I forgot step 3a: Adjust the vecGuardianToPlayer vector by normalizing it, then multiply it to set the "speed" of the movement. E.g. normalize() it, then multiply it by 2. If it's too fast, multiply it with a smaller number. If it's too slow, multiply with a higher number.
right now, you just set the guardian's velocity to the velocity of the fished item, which is probably 0
You dont even need to do all this
If all you are wanting is to put a different entity on the hook. Just getHook().setHookedEntity(Entity)
oh I thought they wanted to spawn an additional entity
yes
you might also have to set both entities to not collide with each other
you can collide with a drop?
Is there a reliable way to get a list of all installed java versions, regardless of OS?
Not sure as it have to be built into binary to be regardless of os
But each binary is independed and doesn't know of other one afaik
still doesnt work https://paste.md-5.net/afosobucab.coffeescript
is the guardian flying or not moving at all?
not moving
not even a twitch?
How can I scale up (increase in size) a block display?
I've been testing this but for some reason it's not working lol
he spawns looking down and then just rotates towards me
something in his AI is stopping him moving then
should i try replacing the entity?
What's the best way to save info to a file?
I want to save playerName, Int to a file, do I just use a txt file or csv file?
Depends on your use case, you can use pdc
?pdc
Also never save info that should be parsed to txt lol
saving using names is not a good idea. As it's obviously going to be used between sessions, players can change name
uuid
Please, can anyone help me to figure out how world generators work? What I want to achieve is to have the default generation, but replace every grass block with green glass block.
https://ci.md-5.net/job/BungeeCord/ws/api/target/apidocs/net/md_5/bungee/api/ProxyServer.html#getServers() and iterate to getName() from ServerInfo
no
you have to iterate over servers.values() toi check the name
servers.values().forEach(info -> {
if (info.getName().equals("hub")...```
No @EventHandler or forgot to register the event?
I checked them all
you shoudl get no damage event if you cancel the hit
Potions get splashed
Firecharges set ground on fire
Nothing happens
I have debug
It prints that it should be cancelled
how do i add comments to my yml custom file?
did you cancel the splash event or only the hit event?
Hit event
Is firecharge splash?
splash event extends hit event
like config.getConfig().set("value", "num") and then this would have # This is the num for the value
how can i create the fields with comments explaining what each field does?
you get a section and setComment
?
how does bukkit generator work (config nukkit.yml)?
try listening on a splash event and see if it prevents a splash potion
any resource from where I can start
Firecharge?
this is what i'm doing atm, what can i do here to add comments?
ConfigUtil config = new ConfigUtil(this, "machines.yml");
config.getConfig().set("machines.gold_machine.radius", 5);
config.getConfig().set("machines.gold_machine.radius_type", "CUBOID");
config.getConfig().set("machines.gold_machine.rate", 20);
config.save();
or is there an easier way
config.getConfig().getConfigurationSection("machines.gold_machine").setComments...```
ok
so i'd need this to make a comment?
config.getConfig().set("machines.gold_machine.radius", 5);
config.getConfig().getConfigurationSection("machines.gold_machine.radius").setInlineComments("Some comment?");
okok, thank you
how could I check for custom portals?
yes, but in a config you shoudl use isSet to check for a values presence
if (config.getConfig().get("Config.message") == "" || config.getConfig().get("Config.message") == null){
Bukkit.getLogger().info("Theres is no 'message' field in the file 'Config' section");
}
that worked for me
maybe you dont need the null part but
if (!config.getConfig().isSet("Config.message")){
Bukkit.getLogger().info("Theres is no 'message' field in the file 'Config' section");
}```
that also works
Isn't that just the same as FileConfiguration#getConfigurationSection == null? Or does that actually check the value of the path instead of the path itself?
a path isn;t always a section
When's it not?
when it's just a value
ie a key is not always a section, only if it has a MemorySection and not a value
Can you give an example?
this works for an example?
Config:
message:
value:
num: 5
config is a section, message is a section, num is not a section
What's it classified as then? Cause I thought it was still a section.
why am i getting this when i place a block?
https://paste.md-5.net/wopimoviyo.rb
?nocode
It’s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.
Because you are trying to cast a CraftBlock to a Supplier. That's all I can tell you based on the given information
MachineHandler.java:61
They are also using paper not sure if that matters
public void onMachinePlace(BlockPlaceEvent event)
{
Block block = event.getBlock();
Bukkit.getLogger().info(block);
}
when i tried this, it suggested i use Bukkit.getLogger().info((Supplier<String>) block); instead
So dont do that. Just because the ide suggests something doesnt mean it is always correct
But you need to change block to a string otherwise its going to print the object pointer
Because that's a log statement and it requires a string, not any other object.
If you just wanna print the toString() Method of the Block you can do both,
Bukkit.getLogger().info(block.toString());
and
Bukkit.getLogger().info("" + block);
You can stick an object in there. Just wont print what you think it will lol
If ide suggest it means that info method have supplier as one of overloads, I wonder why is that the case lol
They are using paper
Oh
Logger#info() doesn't have an implementation for Object iirc.
System.out.println() does.
i didn't choose paper, i started the project and choose Bukkit > Spigot
Objects can always be printed
It just doesnt print their contents instead just prints their memory pointer
But you're still running it on a paper server.
If it doesn't have an overridden #toString() method.
Otherwise yea.
In most cases it wont lol
My IDE won't let me with the Bukkit logger
But we dont need to get into technicals
That's because this is a keyword.
This isnt a normal object
it's an instance of a class, how is it not a normal object?
It's a reference to the current instance of that object, not an actual object itself since it is also a keyword.
Hence why you cant assign this a value
So I'm supposed to print a class instead of a class instance?
public void onMachinePlace(BlockPlaceEvent event)
{
Block block = event.getBlock();
Location loc = block.getLocation();
ConfigUtil config = new ConfigUtil("machines.yml");
int radius = (int) config.getConfig().get("machines.gold_machine", "radius");
String rType = (String) config.getConfig().get("machines.gold_machine", "radius_type");
List<Block> blocks = getBlocksInRadius(loc, radius, RadiusType.valueOf(rType));
Bukkit.getLogger().info(blocks);
}
You can print object, not reference to object trough "this" keyword
This is a reference. Its not an object itself. In fact when you compile this isnt even there no more as it gets inlined as a synthetic
how would i print my blocks then?
String.valueOf() and .toString() didn't work.
Either print the material or its location
You need to iterate over a list if you want to print its contents.
or its blockdata. if u want it all
Or that
pretty sure blockdata can be stringified pretty easily
Always forget there is blockdata
Object object = new Object();
Bukkit.getLogger().info(object);
So this should work?
?```java
for (Block s : blocks) {
Bukkit.getLogger().info(s);
}
If you use to string on the object to satisfy the string requirement. But this doesnt always print the contents of the object
Yes, but you'll still have the same issue of before like frost said. You'll only be printing out the reference to the block and not anything readable without using its class methods. Things like #getBlockX() #getBlockY, etc
As i said, when printing objects in most cases you will get the memory pointer or address of said object instead
i want all of the stuff
Ohh. Yeah I knew that. I thought you wanted to tell me that I can print an object without specifying it as a string using Bukkits Logger (which is possible by System.out.println)
i forgot String.valueOf(s)
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/BlockData.html#getAsString() then use this
declaration: package: org.bukkit.block.data, interface: BlockData
Do you just ignore what everyone said?
Like there was this entire discussion and with valuable information to learn and gleam from

?ask
If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!
Anyways with that i am going to drive home now
Drive safely :)
drive fast and recklessly, like everyone else
When I'm using discoverRecipe in a PlayerJoinEvent it works well but when used in command method it doesn't work
it is the same method with same args but not same result did anyone know any bugs or different behaviors ?
?paste your command
The plugin certainly does not care whether your code is executed in a command, listener or on enable. So no, the same code should lead to the same result.
I agree ^^ that's why I'm stuck 🙂
Well there's 2 options that come to my mind (without having your code)
- You have overlooked a difference
- You forgot to recompile and update the plugin
Or you forgot to wipe the player's discovered recipe before letting them discover it again.
public static void discoverCrafts(Player player) {
for (ACraft craft : recipes) {
if (craft.isMandatory() || Config.getCrafts()) {
player.discoverRecipe(craft.getKey());
}
}
}```
to wipe it ?
Player#undiscoverRecipe
the player doesn't know it before I make him discover it , No ?
If you tested the event and the command with the same player they do after you ran your event test
is there an event for player entering a minecraft?
Ah ok, but I cannot see the recipe in the crafting table book so I'm assuming that player has not discovered it yet
recipes are stored in the player dat, so relogging will not clear a known recipe
I suppose you mean Minecart, right?
declaration: package: org.bukkit.event.vehicle, class: VehicleEnterEvent
i dont even have autocorrect i just did the autocorrect myself probably.
by which i mean auto incorrect.
Ok so if I'm understanding well, a recipe can be known without showing in the possible recipes in the crafting table ?
a recipe can be known but not shown if you have not discovered one of it's components
if (event.getAction() == Action.PHYSICAL) {
Material material = event.getMaterial();
Chunk chunk = event.getClickedBlock().getChunk());
}```
is this valid?
is event.getClickedBlock(); valid here?
what event?
InteractEvent
PlayerInteractEvent.
I'd say yes but why don't you hop on a local server and test it?
ok.
would be bad wording for a pressure plate that was stepped on. Might not work then
I'd still test it tho
bruh what, this returns null
String rate = String.valueOf(config.getConfig().get("machines.gold_machine.rate"));
"rate" sounds like a numeric value
Likely a case of.
machines:
gold_machine:
rate: 1 # This section doesn't exist.
do not use String.valueOf
if i dont it's red
because its not a string
Use the built in methods. FileConfiguration#getInt()
Why do you try to save an int as a string anyway?
meta.setLore(ImmutableList.of(
ChatColor.GRAY + "Production rate: " + rate
));
Cuz they don't know java :O
this code will run perfectly fine when rate is an int
rate does not need to be a String
It's unnecessary to cast it to a string since you are appending strings together with the + operator. Any non string objects will be automatically converted.
concatenation will stringify it
i dont use the brain sometimes
the thing is i knew this
but somehow i am being extremely dumb
It's funny how paper is like
DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH
and then is like
Server thread dump (Look for plugins here before reporting to Paper!):
spigot has the same thing
I know why it is implemented like that but it's still confusing since it basically tells you two different things
basically they want you to check to make sure it isn't a plugin at fault because commonly its a plugin doing something it isn't supposed to
occasionally you might have stumbled on a bug though
My first thought was that the second part is always printed on a thread dump and the first part is only printed if they are sure it's based on a plugin issue
first part is always printed unless it was a legit crash
rare to have a legit crash and commonly such things are the result of mojang code more so then spigot
but basically its just the watchdog or panic as it is also known
happens when the server thread hasn't responded for a period of time
can be caused because you decided to paste too many blocks at once 😉
Or forgetting to break a loop 😛
sure but I was just pointing out an easy way to make it happen that isn't the result of any code
I see, yeah makes sense
regex + was 'at least one' correct?
I don't get the question
Would be passible to make visibility of others player name toggle able with command?
Ex. If I typed /names I will se player names
You can hide names with scoreboard teams so yes you can achieve that with a command
So probably not needed to make plugin for that 🤔 thanks
I'm not an expert with the vanilla scoreboard command but it might work without a plugin, yes
I would like make command for admins, so they can see names when ever they want. But player wont see names
So Im not sure, If can be toggle able to only specific player can see the names
you can probably check for permissions or op status in a command block. Not sure - I'm more on the development side
You add all players to teh same team with https://hub.spigotmc.org/javadocs/spigot/org/bukkit/scoreboard/NameTagVisibility.html#HIDE_FOR_OWN_TEAM
then admins and anyoen you want to see names you move out of that team
Yea, thanks. So its simlpy. If someone type command /names I will add him to team where he can see names.
Simples than I thought.
yes
It is depricated but I guess, thats fine
perfect, thanks
OfflinePlayer playerToBeAdded = Bukkit.getOfflinePlayer(playerTobeAddedName);
i have a problem, is there a way to check if the playerToBeAdded player has ever joined the server before?
Player#hasPlayedBefore()
ok.
Is there way to display text above player? Probably best solution is invisible armor stand?
another question, it seems to be making an mojang api call though to get the player, is there a way to just check without making a mojang api call?
Use the uuid to check
i dont have the uuid.
Then no you can't
What are you trying to achieve @quaint mantle?
Do you need the data for offline players or is it fine to check once they join?
i am using the username to check against uuid.
You need to api call to get the uuid from the username
only if they have joined before.
does it not store them in player.dat file or somthing?
i could just check for usernames there.
save some network io.
@tender shard I saw you made a post for making custom portals do you think you could help me with something similar?
well, its just a membership system that is it.
/members add Grian is the command that is it.
and you want to add offline players?
yep.
but i only wanna add them if they have joined the server before.
i mean i achieved that, i was wondering if there is a more efficient way than making a mojang api call.
eh, does not matter anyway.
nvm.
the only way to NOT make a web call is to manually search getOfflinePlayers()
that may be what i was looking for, appreciate the help.
oh wait, nvm, i cant even use that, cuz players could change usernames.
it would become unsynchronised, nvm.
i guess api call it is.
yes, but you are only providing a name
make it async
Just make an async api call
it is already async.
CompletableFuture.supplyAsync(() -> Bukkit.getOfflinePlayer(name)).thenAccept(player -> {
...
}); y'know
at a company I worked for, we had our own UUID cache with multiple layers of fetching
it'd fetch from an in-memory cache, then a proxy-wide cache, and some third-party caches etc, might be useful for you
You don't always need to be synced with mojang
Sometimes speed is better
Well, not for a command but eh
Isnt possible to do something like:
Repository<Model> models = database.getCollection().find().queue();
Where queue would internally sync the task to Main thread, is that posible?
uh not really
Hmn righ
if you sync it back to the main thread, you're gonna make it wait for the data to be available
what I have is a MainThreadExecutor that I use with CompletableFutures to yeet it back to main
I mean execute the task Async but get the result sync
that's just gonna be waiting sync for the async task to complete
doesn't achieve much

you just gotta abstract it really well
🤔 project's at 770kb rn
I wonder when it'll reach 1mb
with or without any libs? 🤔
15.03 12:51:09 [Server] ERROR Could not pass event PlayerInteractEvent to ReplenishEnchantment v1.4-RELEASE
15.03 12:51:09 [Server] INFO java.lang.IllegalArgumentException: Cannot get data for not block WHEAT_SEEDS```
Getting this error on 1.19.3 spigot plugin when using the playerInteractEvent
```java
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
Player player = event.getPlayer();
Block block = event.getClickedBlock();
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && block.getType() == Material.WHEAT && player.getInventory().getItemInMainHand().getType() == Material.DIAMOND_HOE) {
block.setType(Material.WHEAT_SEEDS);
ItemStack wheatItem = new ItemStack(Material.WHEAT);
player.getWorld().dropItemNaturally(block.getLocation(), wheatItem);
}
}
what
the
actual
fuck
'registerEvents(org.bukkit.event.Listener, org.bukkit.plugin.Plugin)' in 'org.bukkit.plugin.PluginManager' cannot be applied to '(cirosanchezb.dtanvilrpg.events.MainMenuInventoryClickEvent)'
Wheat seeds is not a Block its an item
Well yeah it expects two arguments, you gave it one
is there an event for land being tilled for crops?
ah yeah, how can i set the age of the wheat when i place it?
probably https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/Ageable.html#setAge(int) but I don;t see wheat in there
yeah i was looking in there and didnt see wheat thats why i asked
declaration: package: org.bukkit, enum: Material
Set wheat and not wheat seeds
and then change the age with the method ElgarL sent
any good way to encode/protect my plugin ?
no
or at least remove the pom.xml from .jar
don;t include source
how :l?
is ItemStack::getItemMeta::getPersistentDataContainer reference or do i need to put the modified ItemMeta back into the ItemStack after editing?
meta is always a clone
so put it back
got it thanks
what about ItemMeta::getPersisetntDataContainer? Is that reference then?
Not sure, but be safe
It just gets modified
Same as the lore or any other attribute would
When you change that, just make sure to apply the itemmeta
ok
java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_19_R1.block.impl.CraftCrops cannot be cast to class org.bukkit.entity.Ageable (org.bukkit.craftbukkit.v1_19_R1.block.impl.CraftCrops and org.bukkit.entity.Ageable are in unnamed module of loader java.net.URLClassLoader @200a570f)
thats the error
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
Player player = event.getPlayer();
Block block = event.getClickedBlock();
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && block.getType() == Material.WHEAT && player.getInventory().getItemInMainHand().getType() == Material.DIAMOND_HOE) {
Ageable wheatBlock = (Ageable) block.getBlockData();
if (wheatBlock.getAge() > 5){
block.setType(Material.WHEAT);
ItemStack wheatItem = new ItemStack(Material.WHEAT);
player.getWorld().dropItemNaturally(block.getLocation(), wheatItem);
}
}
}```
thats the code
What am i doing wrong here?
You should not rely on implicit relations like if material is Wheat then i can safely cast to Ageable
Always do an instanceof check. Also you are using Ageable for entities like Choco said. (Cows, Pigs etc)
+1
Caused by: java.lang.NullPointerException: Cannot invoke "org.bukkit.inventory.meta.ItemMeta.getPersistentDataContainer()" because the return value of "org.bukkit.inventory.ItemStack.getItemMeta()" is null
however
ItemMeta meta = stack.getItemMeta();
meta.getPersistentDataContainer().set(
new NamespacedKey(Echo.getInstance(), "AppliedShard"),
PersistentDataType.STRING,
"APPLY_SAFE");
stack.setItemMeta(meta);
am i missing something about itemMeta here?
theres no meta.setPDC method
wheres my pdc then
the code runs without error and the visual clue that it ran is there
The error you sent says the item doesn't have item meta
Which means it's probably air
im clicking with the item that has the visual clue that the code above ran
also
as i said
there is no error otherwise
again where is my pdc
uh do u know the command to check that?
Are you using the interact event?
click event
ItemStack clickedWith = event.getCursor();
if(clickedWith == null ) return;
String s = clickedWith.getItemMeta().getPersistentDataContainer().getOrDefault(
new NamespacedKey(Echo.getInstance(),"AppliedShard"),
PersistentDataType.STRING,
"DO_NOT_APPLY");
and yes that is LITERALLY all my code
so why does an item that definitively HAS metadata return NULL ?!
dafuq?
i mean
i did that but
why does it not err out now
i mean
when i had two items and clicked on one with the other
it threw the error
?????????
does the click event get thrown multiple times maybe?
hm it doesnt
?interactevent
The PlayerInteractEvent may be called once per hand. If you only want code to be executed once, you can check the result of https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerInteractEvent.html#getHand(), then decide functionality.
For example, only executing code if the main hand was used:
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
if (event.getHand() != EquipmentSlot.HAND) { // * if the hand used is NOT the main hand:
return; // do not progress past this point |
}
// provide functionality
}
or are you inventory click?
inventory click
i have a completely different issue now
so apparantly this doesnt apply frostwalker to boots
for(Enchantment e : list.keySet()){
Bukkit.broadcastMessage(e.toString());
clickedOn.addEnchantment(e,list.get(e));
i am so goddamn done
doesnt throw an exception
it just doesnt apply the enchantment
are you also messing with the meta?
of what?
the item you are trying to enchant
no
thats just a pair of boots pulled out of thin air
all im doing with that one is doing a null and air check beforehand
you don;t touch its meta nor pdc?
nope
if you're trying to set enchantment just use meta from the Item you have
//null check above
//check if should apply
Map<Enchantment, Integer> list = clickedWith.getEnchantments();
for(Enchantment e : list.keySet()){
Bukkit.broadcastMessage(e.toString());
clickedOn.addEnchantment(e,list.get(e));}
also why should i use meta if ItemStack has setEnchantment methods?
how can i make this code allow me to place only 1 block of gold and remove all others i try to place within the given radius?
@EventHandler
public void onMachinePlace(BlockPlaceEvent event)
{
Block block = event.getBlock();
Location loc = block.getLocation();
ConfigUtil config = new ConfigUtil(RankupMachines.getInstance(), "machines.yml");
int radius = (int) config.getConfig().get("machines.gold_machine.radius");
String rType = (String) config.getConfig().get("machines.gold_machine.radius_type");
List<Block> blocks = getBlocksInRadius(loc, radius, RadiusType.valueOf(rType));
for (Block b : blocks) {
if (b.getType() == Material.GOLD_BLOCK) {
event.setCancelled(true);
break;
}
}
}
it works, but it also deletes the block im currently trying to place
so there's never a single gold block
get rid of the block ur placed from the blocks list
yeah i was getting headless exception on my own pc so mojang mustve done something w the JVM
or lwjgl might be doing something
im so goddammed done
this is the code that creates that message
for(Enchantment e : list.keySet()){
Bukkit.broadcastMessage(e.toString()+" "+list.get(e));
clickedOn.addEnchantment(e,list.get(e));
where the hell is the enchantment gone
There's no exception in the console
is there an event for sheep being sheared?
what are you doing there?
i am trying, keyword trying, to apply an enchantment to an item
idfk whats going on here but its not applying the enchantment
i need help with figuring out multi java threading
any recommended sources?
idk how to manage them properly
you are getting the enchantment from the keySet then you are doing list.get(e);, what are you even doing?
Bukkit.getScheduler().runTaskAsynchronously(); is the what you use for that probably.
im grabbing the set of enchantments from one item, which is a Map<Enchantment, Integer> and TRYING to apply it to an item with that loop
it prints the damn enchantment
so where is it
how would i do that? this is my getBlocksInRadius
private static List<Block> getBlocksInRadiusSquare(final Location center, final int radius, final Predicate<Block> predicate) {
final List<Block> blocks = new ArrayList<>();
for (int x = center.getBlockX() - radius; x <= center.getBlockX() + radius; x++) {
for (int y = center.getBlockY() - radius; y <= center.getBlockY() + radius; y++) {
for (int z = center.getBlockZ() - radius; z <= center.getBlockZ() + radius; z++) {
final Block block = Objects.requireNonNull(center.getWorld()).getBlockAt(x, y, z);
if (predicate.test(block)) {
blocks.add(block);
}
}
}
}
return blocks;
}
java Threads fr
try an addUnsafeEnchantment
addEnchantment excepts if level or item is wrong but it doesnt, but ill check
Could you do custom portals with this?
https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/PortalType.html
declaration: package: org.bukkit, enum: PortalType
blocks.remove(event.getBlock());
I am confused on how to do them
not off the top of my head, but u can probably use PlayerInteractEvent
?jd-s
@eternal oxide Nope. No message, no enchant
do you have the correct API version set in your plugin.yml?
if this one line of code works, i'll marry you
im running 1.19 on all of em
and you have that in your plugin.yml?
ye
@smoky oak i love you!
i've been here all day, trying to use my shit brain to make it myself
you took 3 seconds :/
i woke up
go back to sleep
i need help with figuring out multi java threading
@fluid river have you ever seen this nonsense before btw?
?
yes, but you can use the addEnchant on the ItemStack if you are not altering the meta
its just a wrapper
thats possible
but thats what addUnsafe is for
im creating something similar to a spawner, and it will stack entities, so like if i place 10 spawners, they'll merge into the closest spawner and show 10x Rabbit on top for example.
how could i store this data for each player's spawners?
WHAT THE ABSOLUTE F***
so im printing to console what im using. this works
Bukkit.broadcastMessage("'"+strings[0].toLowerCase(Locale.ENGLISH)+"'");
Enchantment enchantment = Enchantment.getByKey(NamespacedKey.minecraft(strings[0].toLowerCase(Locale.ENGLISH)));
ItemStack stack = player.getInventory().getItemInMainHand();
stack.addUnsafeEnchantment(enchantment,1);
this doesnt
Bukkit.broadcastMessage("'"+eString+"'");
Enchantment ench = Enchantment.getByKey(NamespacedKey.minecraft(eString.toLowerCase(Locale.ENGLISH)));
clickedOn.addEnchantment(ench,1);
BOTH prints THE EXACT SAME TEXT to the console
that was just an example, i'm using a custom block at the moment
the effect is the same, it produces money and if you place more machines they'll stack
Learn about CustomBlockData here:
https://www.spigotmc.org/threads/custom-block-data-persistentdatacontainer-for-blocks.512422/
can i store a quantity in pdc?
pdc can store everything
oh yea that not nbt, nvm
its just not recommended
Hello! I have this problem in Spigot (Minecraft Plugin), where some of my command aliases works, some doesn't but my code seems fine, and when I use the main command it works, there also seems no problem in plugin.yml, any idea about this matter?
just sounds like not all aliases are in plugin.yml to me
When sending codes here, should it be in what format?
https://paste.md-5.net/giladodefe.apache - plugins.yml
woah idk what my eyes are doing but that red text is like 3D to me
hiya. using bungeecord - i want to add a column named after each server for storing a big int on proxy startup to an sqlite database. what would be the correct method?
"ALTER TABLE db ADD ? BIGINT(100)"
I tried this but I don't think it'll work.
so the uppercase matter is the only issue?
did someone say 3d
blender 3d ? 
alright, I tried it on the itemRename, and changed it to itemrename and it worked...
gender 2d
hi, for PlayerInteractAtEntityEvent, how do i get the item player right-clicked with?
gender 3d
huh? will that actually create a new column?
gender 4d
gender 115d
hi, for PlayerInteractAtEntityEvent, how do i get the item player right-clicked with?
huh alright, though i dont really see a ? placeholder in there. running a for loop
event.getPlayer().getInventory().getItemInMainHand() ez
lender 45f
isn't current for inv
?jd-s
so, if the item was shears and player sheared sheep and the shear may have been in offhand, would it return the offhand item or mainhand?
so, if the item was shears and player sheared sheep and the shear may have been in offhand, would it return the offhand item or mainhand?
u can get which hand they interacted with
okay.
yeahh uhh i dont think it works.
pretty sure its ALTER <table> ADD <column> <datatype>
mah eyes welp mysql
uh.
how do i get the item?
and material of the item, more specifically cuz i need to check if it is a pair of shears or not.
Player player = event.getPlayer();
EquipmentSlot hand = event.getHand();
Material material;
if (hand == EquipmentSlot.HAND) {
material = player.getMainHand();
}```
hmm alright!
Look the upper definition
Player player = event.getPlayer();
Material material;
if (event.getHand() == EquipmentSlot.HAND) {
material = player.getInventory().getItemInMainHand().getType();
} else {
material = player.getInventory().getItemInOffHand().getType();
}```
jree fava lessons
yes
so u need to see which hand it was called for
and if they're holding two shears? oh well
Material material = event.getHand() == EquipmentSlot.HAND? player.getInventory().getItemInMainHand().getType() : player.getInventory().getItemInOffHand().getType();```
ez
hm could use the ternary operators but if statement might be more readable.
))
i dont nest if statements unless i am the only one working on the project.
i find nested if statements kind of easy to read.
it does not seem to work.
?
i guess trial and error it is.
tho
item is nullable
var item = event.getHand() == EquipmentSlot.HAND? player.getInventory().getItemInMainHand() : player.getInventory().getItemInOffHand();
if (item == null) return;```
yes i do
var good
full typename disgusting
i use statically typed languages for the fully typed typenames.
and?
and, that is it probably.
yeah that probably was kind of menacing though lol.
so is python probably.
you can't declare variable with var if you don't init it on the same line with =
var map = new HashMap<UUID, Object>(120); // java19+```
you don't type HashMap<> two times
just using var
<>
still 2 chars less
ez
Any Ideas why my Itemstack material is AIR when I am holding a sword and sneaking at the same time? (player.getActiveItem())
?jd-s
is that even spigot
oh
sheeit
guys can you send 1.5.2 spigot
so i can code for 1.5.2
1.19.2
public void onPlayerInteractAtEntityEvent (PlayerInteractAtEntityEvent event) {
event.setCancelled(true);
}```
sheep still gets sheared.
how do i cancel sheep shear?
@EventHandler
it has the event handler.
PlayerShearEntityEvent
declaration: package: org.bukkit.event.player, class: PlayerShearEntityEvent
idk what he was doin'
just clicking on entities with shears in both hands
hey morice
do you have some free time
and a local server
empty
this could have probably been so much faster only if that event would have been known to me sooner.
what are you doing there? I am curious now lol.
you mean us or morice
both of you.
I did? When?
anyway, what's your question
ok.
I tried to make ShapedRecipe that using oraxen Items as input and as well output, with vanilla Items it work but with oraxen not. Any ideas?
public class CraftingRecipes {
public static void init() {CreateAsh_Block();}
private static void CreateAsh_Block() {
ItemStack ash_block = OraxenItems.getItemById("ash_block").build();
ItemStack ash_item = OraxenItems.getItemById("ash_item").build();
ShapedRecipe ash_block_recipe = new ShapedRecipe(NamespacedKey.minecraft("ash_block"), ash_block);
///A - ash_item
ash_block_recipe.shape("AA ", "AA ");
ash_block_recipe.setIngredient('A', ash_item);
Bukkit.getServer().addRecipe(ash_block_recipe);
}
}
?notworking
"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.
Hey guys. Just started messing with placing blocks and this happened https://ibb.co/kSG0g5y . Could you please point me in a direction of fixing this ? (the glass wont connect to the cobble)
wdym "this happened"?
you mean that the glasspane didn't update?
yeah
IntelliJ froze up on me again T_T Im going to try that
are you using the minecraft dev plugin? because that plugin is the reason for 100% of my intellij crashes lol
Yeah.
You might need to allocate more ram if the material enum freezes IJ
need a super computer to open that class
Oh I didnt know about that. Thank you !
yeah that can also help. but the IJ minecraft dev plugin also causes crashes with 10GB assigned
Help -> Change memory settings (or sth like that)
I've tried this and no luck.
when I use vanilla items in ItemStacks then everything work like should, I put the ingredient where they belongs and I get output item that I set, but when I set it with Oraxen ItemStacks then after puting ingredients (Oraxen ItemStack ash_item) to crafting like they should be I get nothing as output.
No errors in console, plugin enabled like should. Also ItemStacks for Oraxen are build in proper way.
are you setting the glass pane first, or the cobble stone?
First the cobble.
print out the oraxen ingredient ItemStack while creating the recipe. Then, in CraftItemPrepareEvent (or what's it called), print out the contents of the matrix. Then check whether both strings are exactly the same
Why when i cancel ProjectileHitEvent, the firecharge fire still works
maybe oraxen uses a random PDC tag to make this one item unstackable or sth
oh okay, I will
What should i do with firecharge
i dont know what fire charges do. do they explode?
if yes, cancel EntityExplodeEvent
They're weird, they can explode but they don't always explode
How can I make a item display as big as a block?
Like one shot from a dispenser doesn't explode, just sets fire (i think) but one from a Ghast does explode.
what is an item display?
The new entities 1.19.4 added
oh I haven't seen them yet
Block display, item display, text display
They're cool
Yep
how can i make variable like this in kotlin? tried
val plugin = ConfigPlugin.plugin(ConfigPlugin.class)
but the .plugin is red
how do they work? it just always shows nothing for me when doing /summon
setDisplayHeight and setDisplayWidth I assume
No idea
I'm using the spigot api for them, so
You need to give them nbt for them to do anything
I had to build spigot 1.19.4 because I think it's not up on the site
yeah but how? 😄
?
You always need to build Spigot
What
You've had to use build tools since 1.8
I only build Spigot when I need NMS
/summon minecraft:block_display ~ ~ ~ {block_state:{Name:"minecraft:emerald_block"}}
Don't tell me you've been using unofficial uploads from 3rd party sites 💀
No
oh
I use Purpur or Pufferfish mainly because of the performance
That's why I never had to build Spigot I think
thx
This code seems fine but when it runs on a server the console reports Java.lang.nullpointerexception:null. but the code works so idk why error
it's probably the getDisplayName() which is already highlighted by IJ
getDisplayName() will cause NPE if the item you have in your hand doesn't have item meta (e.g. if you don't have any item in the hand)
so should i add an else where if the item isn't in hand it does nothing?
so uhh how do i make procedurally generated structures in an empty world
Just check if item.hasItemMeta()
Cauldron cauldron = (Cauldron) item.getLocation().getBlock().getState().getData();
BlockState cauldronState = item.getLocation().getBlock().getState();
cauldronState.getData().setData((byte) (cauldron.getData() + 1));
cauldronState.update();
i don't know why but im trying updating the water and doesn't work, any clue? im using 1.19.3
Thats 1.8 code
lol that's why it didn't work
Use Levelled
Levelled levelled = (Levelled) block.getBlockData();
levelled.setLevel(levelled.getMaximumLevel());
block.setBlockData(levelled);
that fills the cauldron completely
here?
?learnjava
Here are some links to get you started on learning Java:
- https://www.codecademy.com/learn/learn-java
- https://www.sololearn.com/learning/1068
- https://www.learnjavaonline.org/
- https://programmingbydoing.com/
- https://docs.oracle.com/javase/tutorial/java/index.html
The last one is the only official one, however some of those concepts assume that you already know a bit about programming.
hasItemMeta() returns true/false, whether the item has itemmeta
if hasItemMeta() returns false, it means getItemMeta() will be null, which means you cannot call getDisplayName() on it
java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_19_R2.block.data.CraftBlockData cannot be cast to class org.bukkit.block.data.Levelled (org.bukkit.craftbukkit.v1_19_R2.block.data.CraftBlockData and org.bukkit.block.data.Levelled are in unnamed module of loader java.net.URLClassLoader @46ee7fe8)
then the block is not a cauldron
ok thanks
anyone else got this bug? after /reload, it always says I have chat disabled, although I don't
rejoining fixes it
never seen that
on a different topic does anyone know why cancelling inventoryClickEvent clones the item clicked on into the cursor?
ive been trying for like 20 minutes to get rid of that
There is still not way to setCustomName with TextComponent or to set to a JSON format?
😞
When I get on my pc I'll send it
Seen the message before
I just blamed the guy asking for help
Well
It was Alex’ fault for using reload
help?
Does it actually clone or is it a ghost item?
Then ur probably doing something wrong
mate it happens if the only code is this
public void onClick(InventoryClickEvent event) {
event.setCancelled(true);
Are you on 1.19.4?
Bugs are usually quite common after a new release
Try to replicate it on 1.19.3
im on 1.19.3
not 4
and i tried this with and without cancel
//event.setCursor(new ItemStack(Material.AIR));
//event.getView().setCursor(new ItemStack(Material.AIR));
Are you in creative?
If the item is on the cursor it means the client controls it
So it can duplicate
Try recreating your issue in survival mode
Creative mode is just weird
Not event api fault Moreso how mojang has it setup backend
There is a separate event called InventoryCreativeEvent
But creative mode is often scuffed because a lot of things are client
authoritative there
I was wondering, why merging with paper isn't a thing?
cuz paper is built separately
Because the paper team and MD have different visions
and different goals
cos spigot is best 
Mh, it must be smth groundbreaking bc the charts shows that vanilla spigot is becoming less and less popular.
OK? Dk how is that #help-development related
@tender shard
why is everything here somehow related to alex
idfk
I use search bar for looking at code from people
alex appears
I search in spigot resources
alex appears
he's an omniscient narrator in spigot
welp I still have my question
declaration: package: org.bukkit, enum: PortalType
how could I make a custom portal?
there is PortalType.CUSTOM but no more info
It looks like portaltype is only used in a deprecated event
I am thinking of using multiverse portals if not
Well, you can use the PlayerPortalEvent to detect when they use a portal
I want to make a portal with a custom border
And then save the locations of your custom portals to compare in the event
instead of obsidian use reinforced deepslate
You probably just want to use the interact event then
When they interact with reinforced deepslate using a flint and steel, look for a valid portal shape and then spawn portal blocks
that's my issue
I've been trying all morning to detect the portal shape but didn't get it
Have a look at what Mojang does perhaps
Decompile the remapped jar from buildtools and dig around
oki
What’s the best framework for making websites in my plugin?
check how mojang creates Wither and iron golem structures in NMS
u'll probably see how portals are created there
This is the code:
https://paste.helpch.at/esezatuneh.java
Error:
https://paste.helpch.at/erinoqotof.rb
what am I doing wrong here?
Why do item displays go black when there's a solid block under them
Because they calculate lighting based on location
a part of them is clipping the block so aliasing
why is this not spawning the guardian https://paste.md-5.net/wefoboxoqe.coffeescript
alexes fault btw
move it down
how
That's the eye height. I don't see a hitbox in that screenshot
itemDisplayLocation.add(0, -1, 0)
hmmmmm
you seem to be missing pink name
They don't actually have a hitbox
Yeah the nitro Frostalf gifted me ran out
very sad
The line goes down with it
show code
Of course it does
danko, thats not a hitbox
Eye height is relative to the entity position
are item displays austrailian
why is the mob not spawning?
https://paste.md-5.net/wefoboxoqe.coffeescript
Maybe I can use the translate property of displays
Should be able to
read the console error you got
give me a sec
works fine for me
The velocity also works fine. No idea why you're delaying it by 5 ticks, you can instantly set the velocity in the Consumer<Guardian>. Also a velocity with length 5 is quiiite fast as you can see in this video @tawny remnant
read it
getAttribute(Attribute.maxhealththingy).setBaseValue
btw you are supposed to set the velocity in the consumer, as already said
public class GuardianTest implements NMSTest {
@Override
public void run(TestRunner runner, Player player) throws Throwable {
Location loc = player.getTargetBlockExact(30).getLocation().add(0, 1,0 );
runner.getWorld().setDifficulty(Difficulty.HARD);
Guardian mob = player.getWorld().spawn(loc, Guardian.class, (g) -> {
g.setCustomName("§b§lConfused Guardian");
g.setCustomNameVisible(true);
//g.setHealth(10);
g.setTarget(player);
Vector playerVec = player.getLocation().toVector();
Vector entityVec = g.getLocation().toVector();
Vector guardianToPlayerVec = playerVec.subtract(entityVec).normalize().multiply(2);
g.setVelocity(guardianToPlayerVec);
});
}
Laggy as in the client or the server?
did you do it through NMS?
No
Client
I mean they will have a small impact server side because while they don't tick they still are in the entity lists
can you also do procedural tree generation in mc?
can someone make "BossBar Damage Indicator"
?services
If you wish to request or offer development/art/building/administration services, please do so at https://www.spigotmc.org/forums/services-recruitment-v2.54/
if(event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.CAULDRON) {
if(event.getItem().getType().toString().contains("_LEAVES")) {
event.getItem().setAmount(event.getItem().getAmount() - 1);
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
@Override
public void run() {
Levelled cauldron = (Levelled) event.getClickedBlock().getBlockData();
cauldron.setLevel(cauldron.getLevel() + 1);
event.getClickedBlock().setBlockData(cauldron);
}
}, 20 * plugin.getConfig().getInt("WaterLevel.time"));
}
}
Its giving me this error:
java.lang.ClassCastException: class org.bukkit.craftbukkit.v1_19_R2.block.data.CraftBlockData cannot be cast to class org.bukkit.block.data.Levelled (org.bukkit.craftbukkit.v1_19_R2.block.data.CraftBlockData and org.bukkit.block.data.Levelled are in unnamed module of loader java.net.URLClassLoader @46ee7fe8)
someone knows a fix?
how can i add levels to a cauldron?
Turn it into a water cauldon first
only that?
mhm
and then exectute the code as normal
Yep
thanks
The water and powdered snow cauldrons are levelled, empty and lava ones are not
I wonder what's the reason to have different cauldrons for empty and water
Because there is also lava and powder snow cauldrons
it would be easier to just have CAULDRON with a level of 0 for an empty cauldron, and then a separate one for LAVA and SNOW
can I Thread#sleep in CompletableFuture?
getServer().getPluginManager().registerEvents(new MainMenuInventoryClickEvent(this, config), this);
Class: ```java
public class MainMenuInventoryClickEvent implements Listener {
public MainMenuInventoryClickEvent(Plugin plugin, Configuration config) {
this.plugin = plugin;
this.config = config;
}
public void getInventory(Inventory inventory){
mainMenuInventory = inventory;
}
public void onMainMenuClick(InventoryClickEvent e){
e.getWhoClicked().sendMessage("asdsadas");
if (e.getClickedInventory() == mainMenuInventory){
e.setCancelled(true);
if (e.getCurrentItem() != null){
switch (e.getCurrentItem().getType()){
case DIAMOND_SWORD:
EnchanterMenu enchanterMenu = new EnchanterMenu(plugin, config, (Player) e.getWhoClicked());
enchanterMenu.openEnchanter();
break;
case WOODEN_SWORD:
break;
case BRICK:
break;
case WRITABLE_BOOK:
break;
case EXPERIENCE_BOTTLE:
break;
case PLAYER_HEAD:
break;
}
}
}
}``` Bros not sending me the asdadsad message from the event idk why
How can I play a hand swing animation on the client?
yes
because you didnt add EventHandler annotation
payer.swingMainHand()

thanks
it is
they won't
Really?
Seems like it
How can I check which hand the item is in in player interact event?
just an animation
event.getHand
aight thanks
So there is a delay when placing blocks one after another right?
I'm trying to replicate that
Because I need a way to place my custom blocks since they are just items with custom model data
How do i make a config file that sets a true/false of a boolean?
config.set("xyt", true);
would you be able to provide me with a link to a guide for a config file?
?configs
See this wiki page on how to use custom configuration files: https://www.spigotmc.org/wiki/config-files/
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/NoGoalSpecifiedException```