#help-development

1 messages · Page 1429 of 1

eternal oxide
#

and your config is actually included in your jar?

wraith rapids
#

god this bot sucks ass

eternal oxide
#

then its impossible for that code to return an empty list

granite stirrup
#

when i for each it and print it prints every index

#

;-;

#

but when i set a variable to it

#

its empty

wraith rapids
#

wat

eternal oxide
#

^

granite stirrup
#

its true

wraith rapids
#

you're talking out of your ass

#

show code

granite stirrup
#

that is the code

eternal oxide
#

Your Engrish very broken

granite stirrup
#

what

wraith rapids
#

the entire code

granite stirrup
wraith rapids
#

the part where it's not empty

eternal oxide
#

?paste

granite stirrup
#

what?

queen dragonBOT
glass sparrow
#

i swear this guy is a troll

wraith rapids
#

you said the list is not empty when you iterate over it

granite stirrup
#

im not a troll

eternal oxide
#

post code or we are done helping.

wraith rapids
#

but it becomes empty when you assign it

glass sparrow
#

didn't he mess you around for like an hour the other day nny?

wraith rapids
#

i don't remember

#

what was his issue yesterday

granite stirrup
#

getConfig().getStringList("test").foreach(System.out::println); <-- i think when i did this it printed every index

wraith rapids
#

and how are you checking that

for some reason List<String> test = getConfig().getStringList("test"); doesnt work
is empty

granite stirrup
#

im looping through it

#

;-;

#

duh

wraith rapids
#

show

eternal oxide
#

I'm still waiting to see some code

granite stirrup
#

the only reason why im doing it this way is cuz im adding more lists in a sec

wraith rapids
#

and where is this in relation to

getConfig().getStringList("test").foreach(System.out::println); <-- i think when i did this it printed every index

wraith rapids
#

show the class that contains these two statements

granite stirrup
#

i removed it

#

;-;

#

cuz it was a debug log

wraith rapids
#

well add it back

#

and add it right next to the for loop

granite stirrup
#

?

wraith rapids
#

are you retarded

granite stirrup
#

why

#

it just prints all the items in the list

eternal oxide
#

getStringList works perfectly fine. The issue is in YOUR code, so either show us the code you are using that is not working or stop asking.

granite stirrup
#

¯_(ツ)_/¯

wraith rapids
#

as expected of a 1.12 user

granite stirrup
#

i did actually show the code tho

#

idk what else u want

wraith rapids
#

i want you to do what I tell you to do

granite stirrup
#

i gave u the code

wraith rapids
#

and I told you to add the lines you removed back

#

to debug the issue

eternal oxide
#

Show us the ACTUAL code, not some 2 line snippet

wraith rapids
#

and this ^^

granite stirrup
#

yeah but that snippet is the code that isnt working

#

why u need the whole code for

#

that doesnt make sense

eternal oxide
#

Bye. Good luck with your super secret code that no one can see.

glass sparrow
#

bro do you want help or not like wtf

wraith rapids
#

👋🏿

cinder thistle
#

^^^

granite stirrup
#

k give me a sec

wispy fossil
#

🤣

cinder thistle
#

Easier to just have another blocked user IMO

#

LOL

granite stirrup
#

heres the code

cloud berry
#

im here cuz was referred from #general

#

jus came 2 say @acoustic estuary sho code but u jus did so 👏 congraterlations u finaly did it frend 😄

#

@granite stirrup i meant lol oops rong guy

granite stirrup
#

lol

wraith rapids
#

now show the relevant config

#

this is completely different from what you showed earlier

granite stirrup
#
permissions:
  crates:
    help: ""
    reload: "mooncrates.crates.reload"
    test: "mooncrates.crates.test"
    resetconfig: "mooncrates.crates.resetconfig"
    gui: "mooncrates.crates.gui"

# messages
permission_message: "&cYou dont have permission to execute this command!"

# help menu
help_title: "&c>> &3-- Crates Help Menu"
help_prefix: "&c>> "
help_end: " &3-- "

help_commands_names:
- "crates.help"
- "crates.test"
- "crates.reload"
- "crates.resetconfig"
- "crates.gui"

help_commands:
- "/crates help"
- "/crates test"
- "/crates reload [<config>]"
- "/crates resetconfig"
- "/crates gui"

help_commands_description_crates.help: "shows this helpful menu"
help_commands_description_crates.test: "basic test command"
help_commands_description_crates.reload: "reloads the plugin and or just config"
help_commands_description_crates.resetconfig: "resets the config"
help_commands_description_crates.gui: "gui for crates"```
#

there

eternal oxide
#

ok permissions is not a stringLIst

cloud berry
#

?paste

queen dragonBOT
granite stirrup
wraith rapids
#

it is not

#

it is a dictionary with one key

granite stirrup
#

is it not

cloud berry
eternal oxide
#

you are throwing an IndexOutOf bounds because you are trying to pull from an empty permissions list

granite stirrup
wraith rapids
#
permissions:
  crates:
    help: ""
    reload: "mooncrates.crates.reload"
    test: "mooncrates.crates.test"
    resetconfig: "mooncrates.crates.resetconfig"
    gui: "mooncrates.crates.gui"
#

a dictionary with i key in it

granite stirrup
#

well i need it like that lol

wraith rapids
#

but it's not a fucking list

#

you can't access it as if it were a list

eternal oxide
#

then don;t attempt to read it as a list

fiery inlet
#
package me.barry;

import me.barry.commands.Equipcommand;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {
    @Override
    public void onEnable() {
        Equipcommand commands = new Equipcommand();
        getServer().getPluginManager().registerEvents(new Equipcommand(), this);
        this.getServer().getConsoleSender().sendMessage("[PLUGINX] Loaded with hash: x4dw");
        getCommand("equip").setExecutor(commands);
    }
    @Override
    public void onDisable() {
        getServer().getConsoleSender().sendMessage("Plugin XYZ Disabled");
    }

}

I've fucked up something here, i've got a commands class, if you want me to send it too please say.
Whenever i use the command nothing happens /:

granite stirrup
#

well how do i get a dictionary then

granite stirrup
eternal oxide
#

dictionary = Map

wraith rapids
#

you want to redesign this whole thing

fiery inlet
wraith rapids
#

what you have right now is not good and pretty dumb

#

just like 1.12

eternal oxide
#

You do realise you can dump ALL this code and just use the plugin.yml correctly

fiery inlet
#

no i dont

wraith rapids
#

basically git gud scrub

cloud berry
granite stirrup
#

why does it error Map<?, ?> permissions = getConfig().getMapList("permissions");

eternal oxide
#

its NOT a LIST

wraith rapids
#

because getMapList returns a list of maps

#

not a map

cloud berry
#

<?,?>

wraith rapids
#

and that is still NOT A LIST

fiery inlet
granite stirrup
#

oh

topaz cape
#

for your permissions you can getConfig()#getConfigurationSection("permissions").getKeys(false);

granite stirrup
#

so then its this List<Map<?, ?>> permissions = getConfig().getMapList("permissions");

wraith rapids
#

IT IS NOT A LIST

eternal oxide
#

setup your plugin.yml properly and you don;t need any of this code. Spigot does all this for you

granite stirrup
#

then wat is maplist for

wraith rapids
#

for a list of maps

fiery inlet
#

Command

package me.barry.commands;


import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

public class Equipcommand implements CommandExecutor {

    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (!(sender instanceof Player)) {
            sender.sendMessage("§7[ §cEQUIP §7] §fThis plugin's command, is only usable by a player!");
            return true;
        }
        Player player = (Player) sender;
        if (cmd.getName().equalsIgnoreCase("equip")) {
            Inventory inv = player.getInventory();
            inv.clear();
            player.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
            player.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
            player.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
            player.getInventory().setBoots(new ItemStack(Material.GOLD_BOOTS));
            player.getInventory().setItem(0, new ItemStack(Material.DIAMOND_SWORD, 1));
            player.getInventory().setItem(1, new ItemStack(Material.FISHING_ROD, 1));
            player.getInventory().setItem(2, new ItemStack(Material.BOW, 1));
            player.getInventory().setItem(8, new ItemStack(Material.ARROW, 32));
            player.sendMessage("§7[ §c§lEQUIP §7] Plug has been enabled.");
            return true;
            }
    return true;
        }
    }

plugin.yml

main: me.barry.Main
name: thePlugin
version: 1.0
description: Best plugin?
api-version: 1.8
author: barry
commands:
  equip:
      description: best cmd
eternal oxide
#

it handles command syntax/help and permissions

wraith rapids
#
listOfMaps:
  - map1key1: value
    map1key2: value2
  - map2key1: value3
  - map3key1: value4
#

this is a map list

cloud berry
#

n see if it runs

topaz cape
eternal oxide
#

You are looking for config.get("path").getValues(true);

fiery inlet
wraith rapids
#

depends on your defintion of sending a message

#

do you mean to log a message?

#

like "plugin x enabled"

fiery inlet
#

Because! the onEnable one doesnt work

#

It doesn't send anything

wraith rapids
#

use the Logger available to you by your plugin's getLogger()

eternal oxide
#

so many "doesn't work" 😦

fiery inlet
cloud berry
eternal oxide
wraith rapids
#

omega haram

#

use the logger

fiery inlet
#

men

#

what i write xd

granite stirrup
#

i got it to work but it only gets one of the values ;-;

eternal oxide
#

plugin.getLogger().log(Level.INFO, "BOO");

fiery inlet
#
this.getLogger("Plugin XOX Enabled");
```?
#

ok

granite stirrup
wraith rapids
#

getLogger().info("message")

eternal oxide
#

or that^

#

both work the same, just one has less imports

granite stirrup
eternal oxide
#

oh no, an error. I'll fix that right up for you. Let me get out my crystal ball...

granite stirrup
fiery inlet
#

it aint logging anything

eternal oxide
#

replace get with getConfigurationSection

fiery inlet
#

what

wraith rapids
#

your onenable is probably not getting called

eternal oxide
fiery inlet
#

yeah you dont say so xd

wraith rapids
#

which means that your plugin is probably exploding before it can enable

#

send the logs or something

fiery inlet
#
public class Main extends JavaPlugin {
    @Override
    public void onEnable() {
        Equipcommand commands = new Equipcommand();
        getLogger().info("hash: wextpm23");
        getServer().getConsoleSender().sendMessage("[PLUGINX] Loaded with hash: x4dw");
        getServer().getPluginCommand("equip").setExecutor(new Equipcommand(this));
    }
    @Override
    public void onDisable() {
        getServer().getConsoleSender().sendMessage("Plugin XYZ Disabled");
    }

}
eternal oxide
#

?paste latest.log from the server

queen dragonBOT
fiery inlet
#

I searched for the hash in logs

#

Nothing

wraith rapids
#

it's probably exploding on new Equipcommand

eternal oxide
#

post the log

fiery inlet
eternal oxide
#

it will be in the log, blowing up on either no plugin.yml or NPE on the command.

wraith rapids
#

use some pastesite

eternal oxide
#

Could not load 'plugins\cmd.jar' in folder 'plugins' org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml

fiery inlet
#
main: me.barry.Main
name: thePlugin
version: 1.0
description: Best plugin?
api-version: 1.8
author: barry
commands:
  equip:
      description: best cmd
wraith rapids
#

[19:25:37] [Server thread/ERROR]: Could not load 'plugins\cmd.jar' in folder 'plugins'
org.bukkit.plugin.InvalidDescriptionException: Invalid plugin.yml

fiery inlet
#

What's wrong in there /:

wraith rapids
#

Caused by: java.io.FileNotFoundException: Jar does not contain plugin.yml

#

reading the error helps

eternal oxide
#

Yep, no plugin.yml in your jar

fiery inlet
#

dafuq

eternal oxide
#

using maven or exporting?

fiery inlet
#

maven

#

exporting with the artifact thing

eternal oxide
#

what folder is yoru plugin.yml in in your project?

fiery inlet
#

same folder as Main

eternal oxide
#

if you are Using Artifacts you are not using maven correctly

granite stirrup
wraith rapids
#

put it in resources

fiery inlet
#

bruh moment

eternal oxide
#

use the maven lifecycles in the right hand window marked for Maven

#

package

eternal oxide
granite stirrup
#

for all my commands and stuff

fiery inlet
#

ok i used the package method for maven

#

where the hell does it put the jar file

granite stirrup
#

in target/

eternal oxide
#

then setup your plugin.yml commands correctly and read straight from there. plugin.getDescription()

eternal oxide
#

no?

granite stirrup
#

cuz im not using the plugin.yml for commands lol

wraith rapids
#

you should

#

that's where they go

eternal oxide
#

all the information you are adding to a config shoudl already be in your plugin.yml

fiery inlet
#

well its not a jar file

granite stirrup
#

im using the commandmap lol

fiery inlet
#

its more all the classes and as folders

wraith rapids
#

well don't

granite stirrup
#

why

wraith rapids
#

because you don't need to

granite stirrup
#

i want to

eternal oxide
#

reinventing the wheel

wraith rapids
#

you shouldn't

granite stirrup
#

why not

wraith rapids
#

because you obviously have no clue how

granite stirrup
#

i already did

#

;-;

wraith rapids
#

and are sitting here wanting us to handhold you to do it properly

fiery inlet
#

well seems i didnt get the jar file sad

granite stirrup
#

no i just want to make a help menu

#

;-;

wraith rapids
#

you don't need to use the commandmap to make a help menu

eternal oxide
#

the wrong way of doing it, and you basically want us to write it for you

wraith rapids
#

if you didn't use the commandmap, making the help menu would be 50x easier

granite stirrup
#

im not using the commandmap for the help menu???

wraith rapids
#

you shot yourself in the foot

#

and now you want us to carry you to the finish line

granite stirrup
#

but i dont want to have to keep adding shit to the plugin.yml file

#

i want it to be simple

wraith rapids
#

how is it different from having to add shit to the config.yml file

granite stirrup
#

i just want to do it this way lol

eternal oxide
#

you can access every command, its permission and its usage.

granite stirrup
#

i dont want to tho

eternal oxide
#

We are not writing it for you

granite stirrup
#

im not saying that

wraith rapids
#

you should learn how to use the commandmap and register commands programmaticly

#

you are not doing it properly right now

eternal oxide
#

You are just askign us every step of how to do it your way.

wraith rapids
#

which is why you are having issues with it

granite stirrup
#

bro im not asking u to do everything

fiery inlet
#

aha it work

granite stirrup
#

i just need to get a dictionary from the config

wraith rapids
#

no you don't

granite stirrup
#

i do

wraith rapids
#

you need to figure out what you are doing

granite stirrup
#

no

wraith rapids
#

currently you are flailing about aimlessly

eternal oxide
#

What is your reason for not wanting to do it the proper way?

#

If you have a good valid reason for using teh command map.

granite stirrup
#

idk i just dont like having to go in and out of the plugin.yml file

eternal oxide
#

or is it "I want you to show me how to make a wheel, but it has to be square".

wraith rapids
#

so you go in and out of the config.yml file instead

eternal oxide
#

You are not saving steps. You are just adding a whole heap of code and tests to replicate what is already done for you.

young knoll
#

If you are going to go the non-plugin.yml route, use a command framework

wraith rapids
#

you can also try writing a command framework yourself

#

but you should do it properly

eternal oxide
#

lol, he's refusing the use the Spigot API you think he'll use a framework API 🙂

young knoll
#

¯_(ツ)_/¯

ivory sleet
#

🥲

cloud berry
fiery inlet
#

Why errors after this?

ItemStack head = new ItemStack(Material.SKULL_ITEM, 1, (byte)3);
SkullMeta headMeta = (SkullMeta)head.getItemMeta();
headMeta.setOwner(player.getName());
headMeta.setDisplayName(player.getName());
headMeta.getLore().add("§fplayer");
head.addUnsafeEnchantment(Enchantment.FIRE_ASPECT, 99);
head.setItemMeta(headMeta);
Inventory inv = player.getInventory();
inv.clear();
player.getInventory().setItem(3, head);

An internal error occured while attempting to perform this command

logs:

Caused by: java.lang.NullPointerException
    at me.barry.commands.Equipcommand.onCommand(Equipcommand.java:29) ~[?:?]
    at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched.jar:git-PaperSpigot-"4c7641d"]
    ... 15 more
eternal oxide
#

what is line 29?

fiery inlet
#
headMeta.getLore().add("§fplayer");```
young knoll
#

lore is null

#

Because it's a new item

fiery inlet
#

ok so setLore

eternal oxide
#

create a list and addLore

#

oir set lore

#

whatever teh method is

outer crane
#

you shouldn't be using legacy colour codes

#

deprecated

wraith rapids
#

nah, using them is fine

#

it's what the pros do

young knoll
#

Arrays.asList

outer crane
#

its deprecated by mojang

#

since 2013

wraith rapids
#

nobody wants to use ChatColor.reallyfuckinglongconstantname

fiery inlet
#

can i do it like i send

outer crane
#

that isnt components?

wraith rapids
#

or ChatColor.of(myhexcolor)

outer crane
#

or that

wraith rapids
#

real men use §'s

fiery inlet
#

Can you use it like this?

headMeta.setLore("§f" + player.getName());
wraith rapids
#

because real men know what each of the codes means and can visualize it easily

fiery inlet
#

bruh

#

can

#

i

#

do that

wraith rapids
#

you can do anything you want

#

as long as it works

somber hull
wraith rapids
#

yees

somber hull
#

except the other one cant be used in minecraft chat lol

fiery inlet
#
headMeta.setLore(Collections.singletonList("§f" + player.getName()));
#

intellij made me make it into that

#

idk

wraith rapids
#

the difference between & and § here is that & would mean you'd have to use the ChatColor translateAlternateColorCodes method

#

or whatever it was called

#

stupidly long anyway

quiet ice
#

but § is susceptible to encoding issues

wraith rapids
#

only if you read it from a file

quiet ice
#

I've seen issues with it in certain plugins, though never if it is specified as it's codepoint name

wraith rapids
#

you can control the encoding of your own classes so there shouldn't be any issue there

#

well, assuming some level of competence, anyway

#

which i suppose is a pretty long shot when it comes to most developers

fiery inlet
#
if (event.getAction() == Action.RIGHT_CLICK_AIR || Action.RIGHT_CLICK_BLOCK)
#

bad operand types for binary operator '||'

#

first type: boolean
second type: org.bukkit.event.block.Action

#

how is first one a boolean

wraith rapids
#

== makes it a boolean

fiery inlet
#

oh

#

so only 1 = ?

wraith rapids
#

no...

fiery inlet
#

(:

wraith rapids
#

read the error again

#

bad operand types for binary operator ||

#

binary operator is an operator that takes two operands

#

in this case, the left operand is event.getAction() == Action.RIGHT_CLICK_AIR

eternal oxide
#

your code after the || does not evaluate to a boolean

wraith rapids
#

which resolves to a boolean, because of ==

#

and like it says, the first type is boolean

#

however, the second type is Action

#

it wants a boolean

#

you must convert this Action into a boolean somehow

fiery inlet
#

oh ok

wraith rapids
#

for example by comparing it with something by using ==

fiery inlet
#

i found way

#
package me.barry.listeners;

import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;

public class RightClickListener implements Listener {
    @EventHandler
    public void headsConsume(PlayerInteractEvent event) {
        Player player = event.getPlayer();
        player.sendMessage("This first part works!");
        if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
            player.sendMessage("This second part works!");
            if (player.getItemInHand().equals(new ItemStack(Material.SKULL_ITEM))){
                player.sendMessage("This 3rd part works!");
                player.setItemInHand(new ItemStack(Material.AIR));
                player.playSound(player.getLocation(), Sound.EAT, 10, 29);
                player.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 30, 1));
                player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 30, 2));
                player.addPotionEffect(new PotionEffect(PotionEffectType.HEALTH_BOOST, 30, 2));
                player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 15, 3));
                player.sendTitle("§6§lGOLDEN HEAD", null);
                return;
            }

            return;
        }
    }
}

It doesn't even send the first message?

wraith rapids
#

did you register it

fiery inlet
#

good idea

#

how to do xd

wraith rapids
#

Bukkit.getPluginManager().registerEvents

quaint mantle
#

Bukkit.getPluginManager().registerEvents(new RightClickListener, this);

#

@fiery inlet

wraith rapids
#

not quite but closer

lilac dagger
#

you also need the plugin parameter

wraith rapids
#

and () for the constructor

fiery inlet
#

what u boys talking bout i already did

#

u think im dumb?

radiant aspen
#
            if (player.getItemInHand().equals(new ItemStack(Material.SKULL_ITEM))){

This wont work

wraith rapids
#

what are you talking about

player.sendMessage("This first part works!");
It doesn't even send the first message?

fiery inlet
#

i was being sarcastic

radiant aspen
wraith rapids
#

use == when comparing enum constants

radiant aspen
#

does it matter tho?

#

.equals just maps to ==

wraith rapids
#

nothing matters in the end

#

== indicates your intent better and is null-safe

fiery inlet
#

nuggets matter

radiant aspen
wraith rapids
#

though null safety with constants is dumb to begin with since enum types should never be null

#

point is that it indicates your intent better

fiery inlet
#

well

radiant aspen
wraith rapids
#

and is generally just the convention

fiery inlet
#

it reaches 2nd part

#

3rd part no go

#

if (player.getItemInHand().getType().equals(new ItemStack(Material.SKULL_ITEM))){

radiant aspen
#

ye so do what I said

wraith rapids
#

if (player.getItemInHand().getType() == Material.SKULL_ITEM)

radiant aspen
#

not new ItemStack(Material.SKULL_ITEM) just Material.SKULL_ITEM

fiery inlet
#

yes i notice

wraith rapids
#

also shouldn't you be using getItemMainHand rather than getItemInHand

fiery inlet
#

i need to restart server and shit

wraith rapids
#

or are you writing for 1.8

fiery inlet
#

1.8

wraith rapids
#

of course you are

fiery inlet
#

mhh

#

well it works now

radiant aspen
wraith rapids
#

using deprecated methods is not preferred

fiery inlet
#

yet, it only applies the potions for 2 seconds

if (player.getItemInHand().getType().equals(Material.SKULL_ITEM)){
                player.sendMessage("This 3rd part works!");
                player.setItemInHand(new ItemStack(Material.AIR));
                player.playSound(player.getLocation(), Sound.EAT, 10, 29);
                player.addPotionEffect(new PotionEffect(PotionEffectType.INCREASE_DAMAGE, 30, 1));
                player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 30, 2));
                player.addPotionEffect(new PotionEffect(PotionEffectType.HEALTH_BOOST, 30, 2));
                player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 15, 3));
                player.sendTitle("§6§lGOLDEN HEAD", null);
                return;
            }
wraith rapids
#

and he uses equals rather than ==

radiant aspen
wraith rapids
#

smh

fiery inlet
#

man

#

it works

#

idc

#

if it aint work i try other way

radiant aspen
#

^ it litrally doesnt matter

fiery inlet
#

but not the problem atm

#

the problem is that it applies my potions for 2 seconds xc

wraith rapids
#

it literally does matter

radiant aspen
#

30 is in ticks

#

20 ticks per second

#

so 30*20

fiery inlet
#

oh its in ticks

#

damn

#

ye im skripter i know what ticks is thanks

#

bruh moment

radiant aspen
wraith rapids
#

yes, but that doesn't mean that it doesn't matter

#

and that is not even literally the same thing

radiant aspen
#

it is tho

wraith rapids
#

it's not

ornate heart
#

Definitely not the same

fiery inlet
#

boys why u argue

#

leave it?

#

weird argue

wraith rapids
#

because I don't like it when people teach noobs bad habits

fiery inlet
#

i got that

radiant aspen
#

right but ItemStack#getType isnt null so it really doesnt matter

fiery inlet
#

by saying "i got that" i meant stop arguing, i got it

wraith rapids
#

that it isn't null isn't relevant

left swift
#

Hello, do you know why he doesn't want to weld slime on me? I use packetwrapper. My code:

        //slime
        WrapperPlayServerSpawnEntityLiving slimePacket = new WrapperPlayServerSpawnEntityLiving();
        slimePacket.setUniqueId(UUID.randomUUID());
        slimePacket.setEntityID(slimeId);
        slimePacket.setType(EntityType.SLIME);
        slimePacket.setX(loc.getX());
        slimePacket.setY(loc.getY());
        slimePacket.setZ(loc.getZ());
        slimePacket.sendPacket(p);

        WrappedDataWatcher.WrappedDataWatcherObject slimeObject = new WrappedDataWatcher.WrappedDataWatcherObject(0, WrappedDataWatcher.Registry.get(Byte.class));
        WrappedDataWatcher.WrappedDataWatcherObject slimeObject2 = new WrappedDataWatcher.WrappedDataWatcherObject(15, WrappedDataWatcher.Registry.get(Integer.class));
        WrappedDataWatcher.WrappedDataWatcherObject slimeObject3 = new WrappedDataWatcher.WrappedDataWatcherObject(14, WrappedDataWatcher.Registry.get(Byte.class));

        WrapperPlayServerEntityMetadata slimeMetadata = new WrapperPlayServerEntityMetadata();
        slimeMetadata.setEntityID(slimeId);
        WrappedDataWatcher slimeWatcher = new WrappedDataWatcher(slimeMetadata.getMetadata());
        slimeWatcher.setObject(slimeObject, (byte)0x20);
        slimeWatcher.setObject(slimeObject3, (byte)0x01);
        slimeWatcher.setObject(slimeObject2, 1);
        slimeMetadata.setMetadata(slimeWatcher.getWatchableObjects());
        slimeMetadata.sendPacket(p);```
radiant aspen
wraith rapids
#

lol

#

uh

#

didn't I link you an API that does what you're trying to do

#

like a week ago

fiery inlet
#

aha this is the funniest plugin

#

it makes me run like a fucking idiot

fiery inlet
#

oh nvm i was just hungry ingame and add that with speed it looked weird

wraith rapids
left swift
wraith rapids
#

can you paste one of those errors

#

it might need to be updated for 1.16

#

since it's open source that should be pretty easy

#

it doesn't seem to directly depend on nms though so it should probably work out of the box on 1.16

fiery inlet
#

Since you all in here experts, any of you all got a good video on port forwarding and making your server public for some friends to test?

wraith rapids
#

was it this?

IllegalStateException("Failed to start MultiLineAPI! PacketEntityAPI could not be found!");
yeah this resource is kind of dumb apparently

#

it says it's an api but it's a plugin

upper mica
#

Hello, simple question cus lazy to test it, does World#getLoadedChunks() also includes force loaded ones?

wraith rapids
#

one would expect it to be a library that one could shade

#

yes, it does

upper mica
#

thx

main dew
#

Where I can find method place block by player in open source spigot?

eternal oxide
#

Explain better as I tried to help you earlier but you started on about Worldguard not working with cancelled events or something.

vast quest
#

worldguard no work cancel event omg

main dew
#

a yea how you cancel event other plugin can have problem with cancel and logblock (can don't register place block)

eternal oxide
#

then you need to cancel at teh correct priority

#

The code I gave you simulated an actual player placement so it would be detected by logblock and worldguard

vast quest
#

Does anyone know what priority worldguard useds

main dew
#

previously i tried to do that canceling events but there were errors

#

I'd rather spigot change it

eternal oxide
#

spigot isn't changing anything

#

?paste

queen dragonBOT
main dew
#

before I change in open source spigot and I build this

#

some things are easiest to change with a spigot

torn shuttle
#

oh ElgarL I ended up figuring it out yesterday, thanks for the help

eternal oxide
#

Thats a standalone class, just register events for it

#

pluginManager.registerEvents(new Target(instance), instance);

torn shuttle
#

also just a random question, I don't think it's the case but is there a way to identify blocks that will break or get modified by the absence of a supporting block such as ladders or lanterns?

eternal oxide
#

yes

wraith rapids
#

you'd have to hook into nms afaik

torn shuttle
#

without nms

wraith rapids
#

i don't remember there being a reliable api method for telling whether a block relies on other blocks and in what way

torn shuttle
#

hm I figured as much

#

it's a bit of a specific thing

wraith rapids
#

i super vaguely maybe remember something about like a method on Material or some shit that might do something similar but if it existed it wasn't reliable

eternal oxide
#

there is an event, I forget the name though. It covers things like torches popping off

wraith rapids
#

block destroyed event i think

torn shuttle
#

yeah I'm sure there is

#

hm

wraith rapids
#

some to think of it

#

i should look into how that's done in nms

#

right now i'm just manually compiling sets of blocks that depend on certain blockfaces

#

which is mega cancer

torn shuttle
#

I guess the question is would it be more reliable / efficient to scan blocks getting broken and try to correlate that to the specific explosions I am getting or would it be better to scan adjacent blocks for co-dependent blocks

wraith rapids
#

what're you trying to do again

torn shuttle
#

right now I'm just trying to make a decently accurate explosion regenerator

#

but you know, ladders and shit

wraith rapids
#

there was some hacky way of getting all of the blocks that were destroyed as an indirect result of a block being destroyed

torn shuttle
#

man in a very real sense it would be much easier for me to just write my own explosion system

wraith rapids
#

i think it had something to do with event ordering

#

40% of translucent blocks

torn shuttle
#

hm

wraith rapids
#

or was that 48

#

nms applies the adjacent block destruction recursively

#

which means that if you can find an event that is guaranteed to fire after the block explodes/breaks, and compare all blocks that have been destroyed since an event that is guaranteed to fire before the block explodes/breaks, you get an accurate list

torn shuttle
#

wasn't the explosion event async at this stage though?

wraith rapids
#

i doubt any of that shit is async

torn shuttle
#

but block breaks are sync?

wraith rapids
#

i don't remember anyone ever mentioning that explosions were on some level async

#

maybe on some 1.8 "cannoning" fork

#

fucking 1.8

torn shuttle
#

maybe I'm misremembering things, I thought it was a relatively recent-ish vanilla mc thing

wraith rapids
#

place down tnt in a line and call it cannoning

#

like it's a thing

modern fox
#

Is there a armor wear event?

wraith rapids
#

on paper yes

#

on spigot no

modern fox
#

Okay

#

Good thing I have a paper server

wraith rapids
#

lmao

#

PlayerEquipArmorEvent or something

modern fox
#

Okay, thank you 😄

torn shuttle
#

pretty sure changing armor still triggers some generic inventory events fyi

wraith rapids
#

yeeeah but you'll have to listen to like 3 or 4 different events

torn shuttle
#

such is life

wraith rapids
#

and it's still not reliable

#

pretty sure the people who have to use spigot just check every armor slot every tick

modern fox
#

Is paper api a fork of spigot?

wraith rapids
#

paper is a fork of spigot yes

#

with a bunch of quality of life improvements and additions

#

it's api-compatible with spigot, so all of the things written for spigot work for paper without changes

modern fox
#

Okay thank you

eternal oxide
#

BUT things written for paper may not work on Spigot

gaunt eagle
gaunt eagle
chrome beacon
#

Code?

gaunt eagle
#

oh

#

Do you want a screenshot of a specific class/part?

chrome beacon
#

Looks fine I would add a check to make sure that the block actually is a sign

gaunt eagle
#

I got the coordinates like this

chrome beacon
vestal dome
#

I need help, because this doesn't work... correctly... when I try the player send data, it does not work correctly but the server one works

gaunt eagle
eternal oxide
vestal dome
eternal oxide
#

server send will blindly attempt to send and will drop messages if no one is online

vestal dome
#

ok should be better.

#

fff

eternal oxide
#

No, the player doesn;t actually exist untill that event finishes

vestal dome
#

then when would you be able to send data as fast as possible...

quaint mantle
#

My conga command isn't working

vestal dome
#

omg light theme

#

eyes hurt

torn shuttle
#

come on everybody let's do the conga!

gaunt eagle
quaint mantle
chrome beacon
quaint mantle
#

Nevermind, it works now

somber hull
#

JSONObject obj = new JSONObject().put("content", "");
Type mismatch: cannot convert from Object to JSONObject

#

wat

digital plinth
#

will this filter out all materials with the string/char sequence "restone" in it?

digital plinth
#

ew

#

XD

torn shuttle
#

I think the API for the BlockState should come with a warning that working too closely with BlockStates might lead to higher blood pressure and depression

chrome beacon
#

lmao

chrome beacon
#

Need more code than that

#

Since that should cause that error

somber hull
#

@chrome beacon talking to me?

cold tartan
#

how would you get the block a player is looking even if they arent selecting it?

chrome beacon
somber hull
cold tartan
somber hull
chrome beacon
#

Actually nevermind

#

put() would return an object

somber hull
#

ok

#

so

#

whys it erroring

#

im kinda confused

chrome beacon
#

Create new JSONObject

#

And the use put() on that

somber hull
#

Imma test it

torn shuttle
#

bro just cast bad code to good code

somber hull
#

Ill fix it later

#

But for now im gonna cast and see if it works

chrome beacon
#

Do what I told you ._.

somber hull
#

Ok then what should i do

#

oh

#

what do you mean create a new json object

#

isnt it already doing that

chrome beacon
#

...

somber hull
#

JSONObject obj = new JSONObject().put("content", "aaaa");

eternal oxide
#

don;t do the put in the same line

chrome beacon
#

^^

somber hull
#

ok

torn shuttle
#

god

#

will there ever be a time when I take a shortcut and don't come to regret it

somber hull
#
                            JSONObject obj = new JSONObject();
                            obj.put("content", "aaaa");
#

@chrome beacon

chrome beacon
#

Yes

somber hull
#

thanks

#

ill try it rn

#

now this is throwing an NPE

#
plugin.getConfig().getConfigurationSection("blocks").getKeys(false).forEach(key ->{
#

i think its saying plugin is null..

#

theres no reason for it to be null

torn shuttle
#

there's a lot of assumptions in that code

#

that plugin isn't null, that config isn't null, that that config section exists and that it has keys

somber hull
#

leme show where plugin is defined

torn shuttle
#

I'm sure you wrote it but is the plugin actually reading it

#

that's 4 different checks you should be doing

somber hull
#

ok

#

well the config was working before

#

And it was reading it properly

#

this whole line was working

#

I didnt touch it at all lol

torn shuttle
#

"well X was working before" is a timeless classic on par with "well it works on my machine" and "why is it working now?"

somber hull
#

leme debug rq

digital plinth
#

listener

#

main class

#

y is the listener not responding at all

vestal dome
#

why the hell does this not work.

ivory sleet
#

idk

vestal dome
#

f word

ivory sleet
#

ye

#

I am like dumb so I wont be able to help you

#

just chilling here in case of

torn shuttle
#

so I scan every block in an explosion, I scan every adjacent block and still I am losing lanterns to drops somehow

#

this is fantastic fun

wild steeple
vestal dome
#

waiting

torn shuttle
#

both the adjacency code works and the immediate explosion code works

#

god knows what edge condition this is

digital plinth
#

i did all the stuff to register the listener

#

but the debug log is nowhere to be seen

torn shuttle
#

oh it's the farthest broken block

#

what a weird bug

#

what great fun

somber hull
#

!paste

spice juniper
#

If have this piece of code to check if the value of Saddle is set to true or false, if its true it will add the recipe to the server but I want to remove the recipe if its not true but how can I do this?

        if (this.getConfig().getBoolean("Saddle")) {
            this.getServer().addRecipe(recipeSaddle);
        } else {
            //remove recipe
        }
eternal oxide
#

does your recipe use a NamespacedKey?

spice juniper
#

Yes I think it does

private Recipe recipeSaddle = (new ShapedRecipe(new NamespacedKey(this, "SADDLE"), new ItemStack(Material.SADDLE))).shape(new String[]{"LLL","LIL","SSS"}).setIngredient('L', Material.LEATHER).setIngredient('I', Material.IRON_INGOT).setIngredient('S', Material.STRING);
spice juniper
#

It doesnt work, I have this rn

this.getServer().removeRecipe("SADDLE");
#

Oh wait im sorry im working on a 1.12.2 plugin and there is no removeRecipe() in 1.12.2

#

So my question is actually how do I remove a custom shaped recipe in spigot 1.12.2

torn shuttle
vestal dome
#

can someone tell me why this does not work?

#

and I don't receive the plugin message?

spice juniper
vestal dome
lyric grove
vestal dome
#

well you could with ALOT OF reflection.

lyric grove
#

and i cant use the cooldown

paper viper
#

What?

vestal dome
#

Reflection is like

#

indicating what you want to do

#

in an non easy way

#

let's say that way.

paper viper
#

No, I know what Reflection is...

#

But you dont need it

#

smh

vestal dome
#

in lower versions you do

paper viper
#

No you dont

vestal dome
#

to remove recipes

paper viper
#

the removeRecipe

#

i believe

#

for NamespacedKey

vestal dome
spice juniper
#

thats 1.16.5

vestal dome
#

who cares

paper viper
#

Nope, its available in lower versions

#

the version is just there cause

#

you know its docs but yes

#

the method is still there

#

in older versions

spice juniper
#

No its not

paper viper
#

for NamespacedKey

vestal dome
spice juniper
#

You cant use removeRecipe() in 1.12.2

paper viper
#

for NamespacedKey too..?

spice juniper
#

So then I would use this code

this.getServer().removeRecipe("SADDLE");

But it doesnt work

paper viper
#

i am not even referring to that

vestal dome
paper viper
#

NamespacedKey

#

holy shit

vestal dome
#

feels like it exists?

#

I GUESS NOT

spice juniper
#

i know right

vestal dome
#

living under a rock

#

god

paper viper
#

ok im not talking to you. I literally said so many times NAMESPACEDKEY

#

NOT BUKKIT

#

Jesus

spice juniper
#

Pulse im using a namespacedkey

#

and then this code doesnt work

#

this.getServer().removeRecipe("SADDLE");

paper viper
#

Wait oh oops lmao my bad

#

xD

vestal dome
#

omfg

paper viper
#

Now i see nvm the method accepts a NamespacedKey

spice juniper
#

lol

vestal dome
#

incompetent piece of garbage

paper viper
#

but what i specifically meant more was about using the event perhaps

#

and setting it to air

paper viper
#

ok im joking

vestal dome
paper viper
#

you want me to show it to others?

#

lol

#

anyways

spice juniper
#

but Pulse do you know a solution?

paper viper
#

You could use a crafting event for this

#

and check the contents, set the result to air

#

for an unwanted recipe

vestal dome
#

Idc.

#

if you're here to trashtalk me

#

you can leave the server.

#

it's easy.

#

button exists for people like you.

#

seems like a mom

paper viper
#

im not... i was in the server for a while already and have helped many kids before

#

lmao

vestal dome
#

ok boomer

paper viper
#

not quite cheif

vestal dome
#

lies

#

but what ever.

paper viper
#

im not even in college dumbass

#

LMAO

vestal dome
#

what is the problem again....

vestal dome
#

🙂

vestal dome
paper viper
#

After all, I did make a whole fucking list for you but you didn't listen to any of us

#

so

#

¯_(ツ)_/¯

vestal dome
#

I actually did...

#

kinda of.

paper viper
#

you sure?

#

Not at all

spice juniper
vestal dome
paper viper
spice juniper
paper viper
#

Take a look at the inventory, find the slots and check

torn shuttle
#

it kills me that the one other portuguese dude in here is a jackass

vestal dome
#

I would say.

spice juniper
#

Well whats the efficient way then

paper viper
#

lmfao

lyric grove
#

anyone know what i should do?

vestal dome
#

the actual efficient way is to actually remove the recipe

#

which can be done by accessing this.

#

in "CraftingManager", NMS.

lyric grove
#

ive got it stored as a hashmap

vestal dome
#

you have to provide a string

paper viper
vestal dome
#

give me a good reason to NOT modify them

#

I'll wait.

paper viper
#

in general, you should be trying to avoid Reflection for certain things. For example, I see no reason why you can't use the CraftItemEvent. After all, it is much safer

#

And the efficiency is super fast if you make it fast

vestal dome
#

it would still appear

paper viper
#

you can use Hashing

vestal dome
#

the recipe itself.

#

you just cancell it

paper viper
#

What?

torn shuttle
#

lol

vestal dome
#

omg

torn shuttle
#

no

paper viper
#

wtf is he saying?

#

lmao

torn shuttle
#

you can use the spigot api to make a recipe not appear at all

lyric grove
paper viper
vestal dome
#

/\

#

"completed"

#

the recipe would still appear.

#

it would just not be craftable.

torn shuttle
#

buddy I'm not saying you have to use that event

#

I'm saying it's possible

#

I've done it

#

I can even share the code if you stop being a jackass

paper viper
#

Alright, I will stop

vestal dome
#

you stop

#

because I never even talked about you.

paper viper
#

But I am just pissed cause of this guy from yesterday

vestal dome
#

k

#

be pissed.

vestal dome
paper viper
#

Correction, I meant PrepareItemCraftEvent

#

Sorry for bringing up the wrong event

vestal dome
#

makes sense.

paper viper
#

anyways, are you sure that is an error?

#

or is that a warning

vestal dome
#

like

#

the message is just no sent...

#

I put "souts" everywhere.... in the plugin message and nothing..

#

I have registered the messengers etc.

spice juniper
lyric grove
#

im using this

torn shuttle
spice juniper
#

the prepareitemcraft

paper viper
#

Yes

torn shuttle
#

yeah

spice juniper
#

oh okay thanks guys

paper viper
#

were you referring to me btw to stop lol

#

im sorry

torn shuttle
#

me?

paper viper
#

nah like the stop being a jackass

torn shuttle
#

that was for the pt dude

paper viper
#

oh

#

lmfao

lyric grove
#

when i set it to a string, the hascooldown method breaks

vestal dome
torn shuttle
paper viper
vestal dome
#

I don't even care about portuguese communities.

ivory sleet
#

Pog

vestal dome
#

solely for english communities fuck those portuguese ones

#

waste of my time

torn shuttle
#

shame you still have the pt in your username then

vestal dome
#

can't change it, can't make it can't make it

#

at least I don't want money for a stupid plugin.... to then provide a bad job.

ivory sleet
#

I mean why shame

torn shuttle
paper viper
#

well in all seriousness anyways, you don't know what risk modifying those NMS fields can lead to

ivory sleet
#

¯_(ツ)_/¯

#

No need to be rude backwards

vestal dome
vestal dome
#

but ANYWAY move on

torn shuttle
#

smh

ivory sleet
#

Jads I highly recommend you to start with Haskell

vestal dome
#

Haskell?

ivory sleet
#

Yup

vestal dome
#

very funny

ivory sleet
#

Not a joke

#

It’s the best language

vestal dome
#

I will call it a joke so I don't table flip right here.

#

(╯°□°)╯︵ ┻━┻

ivory sleet
#

I mean jokes are fun right which means Haskell is fun

#

That’s a good thing

vestal dome
#

don't even

ivory sleet
#

don’t odd

torn shuttle
#

does anyone have a spigot api compatible with assembly

vestal dome
paper viper
#

Conclure

#

you know me

ivory sleet
#

I’m just being helpful right now

#

Yeah

#

Lol

paper viper
#

lol

vestal dome
#

very mech

ivory sleet
#

Yep

paper viper
#

?

#

yes

#

lmao

vestal dome
#

yes

ivory sleet
#

Jadss pro tip have bungeecord set to true in spigot.yml

vestal dome
#

yes

#

me have that

torn shuttle
#

now I need to sort blocks bottom to top, I could be clever but I think I might just iterate through y=0 to y=256 lol

ivory sleet
#

Ok did you register the outcoming channel

vestal dome
ivory sleet
#

Idk people make silly mistakes all the time so better safe than sorry wouldn’t you say?

vestal dome
#

hmm...

#

positive.

ivory sleet
#

Ah okay so like are you on the server?

#

To send a message you need a player iirc

vestal dome
#

I join the server....

#

it waits 2 seconds and sends the plugin message

ivory sleet
#

Ok sounds pog .........

vestal dome
#

but none are received...

ivory sleet
#

And if you’d use a different channel

vestal dome
#

as far as I know, you can't use another channel...

#

only "bungeecord"

#

or it doesn't work

ivory sleet
#

That’s not true

vestal dome
#

it still should work...

ivory sleet
#

Not so sure

dusk flicker
#

hey uh

#

I think yall are missing something

paper viper
dusk flicker
#

"BungeeCord"

paper viper
#

/s

#

lmfao

dusk flicker
#

capitalization matters

vestal dome
#

using capitals will make viaversion stop it

ivory sleet
#

If you’re using the pmc api as a messaging service then you should use smtng like pluginName:channel

#

Or smtng

dusk flicker
#

do you have a incoming listener then on bungee with the lower case?

vestal dome
#

they are both lower case.

sullen marlin
#

the channel name is 'BungeeCord'

dusk flicker
#

What ver are are you running on Bungee and Spigot

vestal dome
#

I'll try "BungeeCord", 1s

dusk flicker
#

Im guessing there has to be a way for viaver to stop blocking channels but I would find it really stupid if they do block it.. especially the BungeeCord one

sullen marlin
#

'bungeecord:main' is the alternative

vestal dome
ivory sleet
#

Yeah

dusk flicker
#

Then do what MD just said as the alternative

ivory sleet
#

iirc that’s the case

dusk flicker
#

'bungeecord:main'

ivory sleet
#

ik luckperms uses luckperms:update for instance

dusk flicker
#

this is why I use Redis

#

lmao

ivory sleet
#

Yeah redis >> pmc

dusk flicker
#

most things are better then PMCs lol

#

I do use them for client specific data to the server

ivory sleet
#

I mean sometimes pmc is needed inevitably

dusk flicker
#

yeah

ivory sleet
#

But yeah as a messaging service redis = dope

#

It’s weird that so many hate jedis cuz it isn’t multithreading or smtng iirc

dusk flicker
#

I suck at redis though lmao

ivory sleet
#

Iol yeah same

paper viper
#

never used redis really

#

ig i never had to use it in my projects

vestal dome
#

well...

#

it didn't block it...... or at least didn't say it was ignoring it, which is what it would do.

dusk flicker
#

then you should be all good

vestal dome
#

not quite...

dusk flicker
#

So whats your problem now

vestal dome
#

probably cuz of my dumbass

ivory sleet
#

Pulse I will make an attempt to convert media lib to gradle

sage swift
#

is there a method for getting the player's currently held item's slot #?

ivory sleet
#

Isn’t that a method in PlayerInventory

vestal dome
#

yes getHeldItemSlot if not mistaken

sage swift
#

ah yes i was searching for hotbar

#

and PlayerInventory starts with the hotbar being 0-8 right?

vestal dome
#

ya

ivory sleet
#

Yeah that should be correct

vestal dome
#

so uhhh

#

uhhh...

#

it still does not work

#

ugh

ivory sleet
#

Didn’t I tell you

#

If you use it as a message service use a custom channel

neat wyvern
#

How would i kick all players from the server?

drowsy helm
#

iterate through all of them and kick

neat wyvern
#

Do you recomend eclipse or intelliJ

torn shuttle
#

intellij

drowsy helm
#

IntelliJ, i moved recently and it's just better overall in my opinion

spice juniper
#

Does anyone know how to remove a recipe in spigot 1.16.5

torn shuttle
#

eclipse is basically a funny prank developers play on new devs

ivory sleet
#

Use the recipe iterator iirc jakob

spice juniper
#

Isnt it more effiecient to use the removeRecipe method

neat wyvern
#

C:\Users\hudgr\Desktop\Mcserver\WIP plugins\src\com\quartir\worldreset\WorldReset.java:4:8 java: class SpigotBlankPlugin is public, should be declared in a file named SpigotBlankPlugin.java

I think i made a fucky wucky

drowsy helm
spice juniper
drowsy helm
neat wyvern
neat wyvern
drowsy helm
#

move it to a separate file

ivory sleet
#

Big brain

paper viper
#

didnt i tell you this already

#

lmao

spice juniper
#

yes with removeRecipe

#

But cant get it to work

paper viper
#

you said you were using 1.12 before

#

what version are you using?

spice juniper
#

I know but now im on 1.16

#

1.16.5

paper viper
#

Oh

#

then just use that method

#

the removeRecipe one

sage swift
#

is the slot of the off hand 36 or 40

paper viper
#

45

spice juniper
#

private Recipe recipeSaddle = (new ShapedRecipe(new NamespacedKey(this, "SADDLE"), new ItemStack(Material.SADDLE))).shape(new String[]{"LLL","LIL","SSS"}).setIngredient('L', Material.LEATHER).setIngredient('I', Material.IRON_INGOT).setIngredient('S', Material.STRING);

sage swift
#

there's no way that's right

paper viper
#

you need a namedspacekey

#

im not sure if that is credible tho

#

i just looked it up

#

lmfao

ivory sleet
#

NamespacedKey.minecraft("SADDLE") probably

torn shuttle
#

it's wrong

ivory sleet
#

Or smtng

sage swift
#

0-8 is definitely hotbar

paper viper
#

Yeah thats what i thought

#

the crafting slots

#

the internet is incorrect

#

smh

sage swift
#

i dont think the crafting slots are even part of PlayerInventory

neat wyvern
#

How 2 export plugin intelliJ

sage swift
#

press the red x in the top right

paper viper
#

according to the spigot thread

#

the slot is 40

#

but the raw slot is 45

#

das weird

neat wyvern