#help-development

1 messages · Page 1553 of 1

waxen plaza
#

This is so weird

wraith rapids
#

show entire onEnable

waxen plaza
#
    public void onEnable() {
        // Plugin startup logic


        instance = this;
        getServer().getPluginManager().registerEvents(new onPlayerJoin(),this);
        getServer().getPluginManager().registerEvents(new BlockBreak(),this);
        getServer().getPluginManager().registerEvents(new Event(),this);


        getCommand("deleteHand").setExecutor(new DeleteHand());
        getCommand("heal").setExecutor(new Heal());
        Disable d = new Disable();
        getCommand("disablePlugin").setExecutor(d);
        getCommand("giveWand").setExecutor(new getSpecialItems());
        getCommand("privateChest").setExecutor(new VaultCommand());
        getCommand("privateChest").setTabCompleter(new VaultCommand());


        ItemManager.init();


        DataBase db = new DataBase();

        getServer().getConsoleSender().sendMessage(ChatColor.GREEN+"Plugin has loaded.");
    }```
wraith rapids
#

aside from instantiating VaultCommand twice it looks fine

waxen plaza
#

I'll try make a test plugin and implement it there

real spear
#

What does minecraft classify operator perm as? Example minecraft.operator?

quiet ice
#

vanilla does not have a definition of such stuff - but I think you are searching for op

#

I discourage against explicitly checking against permissions unless you do even worse shit

lament bronze
#

from what i see

wraith rapids
#

twice

quiet ice
#

it is twice

wraith rapids
#

getCommand("privateChest").setExecutor(new VaultCommand());
getCommand("privateChest").setTabCompleter(new VaultCommand());

lament bronze
#

getCommand returns a command object

#

it doesnt make a new one

wraith rapids
#

yes

#

but new makes a new one

ivory sleet
#

makes two instances of VaultCommand

quiet ice
#

basic OOP

lament bronze
#

aah i see

wraith rapids
#

cutor(new VaultCommand());
mpleter(new VaultCommand());

lament bronze
#

i thought you were talking about the command itself not the executor/tab completer

#

my mistake

waxen plaza
#

I just made a test plugin used the same things and it works... wth

reef peak
#

Hello everyone, I'm getting an error with a plugin called QualityArmoryVehicles with this error:
https://paste.md-5.net/ijageludap.pl

Server Version: 1.16.5 that happens when i'm placing planes & helicopters
Is there any reason of this error, and a solution?

wraith rapids
#

does it have tanks

reef peak
#

there is one tank, but the texture is glitched

wraith rapids
#

great

reef peak
wraith rapids
#

how about artillery or cannons of some sort

reef peak
#

Well I think you can't shoot on it

#

there is a plugin called Movecraft

#

if you need

wraith rapids
#

all of my 3 browsers are fucking dying

#

2 of them can't render the paste site properly because apparently md69 needs 2020 tier javascripts or frameworks to render text

#

and the third is slow as shit

#

i fucking hate technology

reef peak
#

lmao

#

your name sounds like a bitcoin code

wraith rapids
#

something is trying to set an infinite velocity to an entity

#

probably a math error in the vehicle plugin, dividion by zero or something

reef peak
#

I don't know anything about java, I'm sorry

#

I'm most likely configuring

wraith rapids
#

report it to the author

#

even if it's a misconfiguration, that shouldn't happen if the plugin is written properly

#

since it's a vehicles plugin it's probably premium and closed source too so nobody other than the author can do shit about it

reef peak
#

The author will not reply as fast as I want

#

My server opens on friday

#

I'll not have the time

wraith rapids
#

looks like it's open source but premium

reef peak
#

yes 🤔

#

So if anyone nice can just fix that shit... 😢

#

Also when I do /qav spawnVehicle <vehicle> that's not working

wraith rapids
#

did you configure it to have an infinite velocity or something

#

i'm not sure how that'd end up being infinite, looking at the source

reef peak
#

I didn't changed anything

vital yarrow
#

I have an issue, how can I have two different java versions for plugin development with BuildTools for 1.17 and older versions ?

wraith rapids
#

it copies the direction of the vehicle

#

and then normalizes it so the vector length is 1.0

#

and then multiplies it by the speed

#

although it looks like there's some logic setting the y and normalizing it afterwards

#

which could cause it to turn infinite

#

yeah you'll have to ask the author, this is spaghetti

reef peak
#

Oh wait,

#

maybe it is because it's QualityArmory and not QualityArmory Vehicles

#

Here's the real link, I'm sorry*

#

QualityArmory was for gun only

wraith rapids
#

there's an open issue about it

reef peak
#

Yeah, I already looked at this one

wraith rapids
#

the plugin looks decent enough so I might eventually look into fixing it if they won't do it, but I have a bunch on my plate already and probably won't get it done in your time frame

reef peak
#

Ah... rip thanks anyways @wraith rapids

sage dock
#

how can I do /msg <username> <text> via bot discord?)

burnt current
#

Hey! Quick question: I found a website on the internet that offers a written tutorial. It says that I should change some properties. Unfortunately, I don't know what is meant by most of them or how I can do that. Can any of you help me with this? Thanks in advance (picture attached)

chrome beacon
sage dock
#

and if the player is offline who writes?

chrome beacon
#

Like an error message or smth

sullen dome
#

is there an Event or smt that gets called when a player successfully sends a command (in this case when a OP ban's a player.)
CommandPreProcessEvent seems to not be working, as the Event gets called even if the Command doesn't work (wrong args, etc.).

ivory sleet
#

uh I don't think there is

burnt current
# chrome beacon What are you trying to do

I would like to be able to make a database to use in my spigot plugins. However, I haven't found any helpful videos on Youtube about databases in Spigot, so I wanted to have a look at JDBC without Spigot. Unfortunately, I haven't found any helpful tutorials about that either. (Unfortunately, English is not my native language, so I usually don't get along with English tutorials that try to teach me something).

sullen dome
#

seems like also the PlayerCommandSendEvent gets called only when a list of commands is sent to him? (pretty weird to me)

#

so... how would i get when a player bans another player?

wraith rapids
#

unless there is a player ban event in bukkit or in the plugin responsible for banning, probably quite infeasible

sullen dome
#

looks like there isnt

wraith rapids
#

for a player that is online it may be vaguely possible even if there isn't through excessive hacks but for an offline player, you're fucked

sullen dome
#

well i basically want to send a message to my discord, when a player get's banned

waxen plaza
#

override the ban command

wraith rapids
#

check the banlist every now and then i suppose, but that won't let you know who fired the command

ivory sleet
#

A hacky way would be to once post startup, loop through every command in the commandmap and then set a wrapper CommandExecutor for every PluginCommand.

sullen dome
#

well

#

maybe i could just read the latest.log for the ban message, and if there is one, run the code

#

bit hacky, but well

waxen plaza
#

Try to make your own ban command and add the discord bot code in there

wraith rapids
#

suppose you could make conclure's suggestion slightly less obnoxious by pulling the list of commands to wrap from a config

#

so you don't wrap literally every fucking command on the server

ivory sleet
#

lmao ye

wraith rapids
#

that said I'm not sure if you can wrap the vanilla commands

ivory sleet
#

uh probably not

#

or maybe

wraith rapids
#

dunno

ivory sleet
#

maybe some insane unsafe and reflection fucketry could accomplish that

sage swift
#

DiscordSRV alerts.yml

quaint mantle
#

Hey guys, how would i go about adding potion effects to the mobs from this foreach?``` if(player.getItemInHand() == horn){
if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_AIR){
for (Entity e : player.getNearbyEntities(50,50,50)){
if (e.getType() == EntityType.PIG || e.getType() == EntityType.COW){

                }

            }
        }
    }

}

}```

wraith rapids
#

addEffect

sullen dome
#

i mean, i readed the logfile before too to send the console-output to my discord

#

so probably this could work too

wraith rapids
#

or something, i don't know; check the javadocs

ivory sleet
#

if (e instanceof LivingEntity entityLiving) {
entityLiving.addPotionEffect(new PotionEffect(...));
}

#

inside that loop

quaint mantle
#

alright thank you so much!

waxen plaza
#

Is there a class that stores player data?

quaint mantle
#

And sending the msg to discord is easy as well

wraith rapids
#

but what if I want to use my hyper advanced ban management plugin instead

quaint mantle
#

Then delete it

#

If you don’t have src code lol

opal juniper
#

What data

waxen plaza
#

Variable data such as strings and ints

wraith rapids
#

persistent data container

waxen plaza
eternal night
#

?pdc

eternal night
#

gotta use those bot commands

wraith rapids
#

can't use them without verifying

#

?pdc

wraith rapids
#

oh you can now

#

interesting

opal juniper
#

Lmao

wraith rapids
#

didn't use to be the case, I don't think

eternal oxide
#

maybe you are just special

opal juniper
#

I dont remember that

#

Md probs black listed you

wraith rapids
#

i've never used any before but I remember some unverified guy failing to use them before

#

several, actually

opal juniper
#

Idk

eternal oxide
#

yep they never worked for unverified

static ingot
#

I'm tryna make some contributions to Spigot via pull requests - of course
I'm fairly inexperienced with version control though. I already pushed my commits with the wrong author info because I didn't know better to config my git before hand, lol. How can I fix it?

opal juniper
#

I don’t

#

U*

#

Once you have committed that’s pretty much it. Idrk a way of clawing it back

static ingot
#

md wants me to fix it ¯_(ツ)_/¯

eternal oxide
#

likely its not pushed yet, so only local

#

ah it is

static ingot
#

It is pushed

eternal night
#

if it is only one commit, you can amend your last commit to change the author easily

#

git commit --amend --author="Author Name <email@address.com>"

#

after that you will have to force push

wraith rapids
#

delete everything and start over

eternal night
#

a rather radical approach I must say

eternal oxide
#

rebuild PC

static ingot
static ingot
opal juniper
#

Oh no

wraith rapids
#

real men push everything in a single commit

static ingot
#

Hah. I'm familiar with that too..

#

pain

opal juniper
#

Real men don’t use version control

#

Once that code is changed, that code is changed

static ingot
#

real men ctrl+c/ctrl+v their project folder

wraith rapids
#

live in the moment

#

there is neither past nor future

#

the only code that exists is the code that exists now

eternal night
dusty sphinx
#

this is more of a maven thing, but how do I authenticate with a server for pushing artifacts? keeps 401ing and i cant find any wisdom on how to

#

figured it out

#

settings.xml

waxen plaza
#

What is a good way to store plugin data, not player data ? and is there a built in class for that?

waxen plaza
wraith rapids
#

the issue with the vehicles plugin is that velocity.normalize().multiply(velDir); turns 0,0,0 into NaN,NaN,NaN

opal juniper
waxen plaza
sullen dome
sullen dome
arctic jetty
#

probably something to do with the normalizing

quaint mantle
#

You can use something simple like Unirest

arctic jetty
#

is there any function for executing a command block? i've made a hacky one that creates a redstone block adjacent to it for a split second and then removes it, but i'm wondering if there's a better way since i'd also need selectors like @p to work and besides, it's hacky (i couldn't find any function in the javadoc)

or should i just get the command from the command block and run it seperately without ever executing the command block at all
(i'm trying to make a plugin that allows you to create commands and make them execute command blocks)

granite stirrup
#

we no strangers to love
you know the rules and so do i
new commitments it what we looking for
i forgot the lyrics.... my guy
now say goodbye :)

chrome beacon
arctic jetty
#

ah thanks, i thought there would be a method for executing command blocks in particular but that'll do

#

(tbf there isn't much difference between executing a cmd block and executing the cmd in it)

shrewd solstice
#

how to detect paypal donation and do a custom event ???

ivory sleet
#

BlockCommandSender 😄

chrome beacon
arctic jetty
#

what would be the difference between having the sender be the console and having it be a command block?

ivory sleet
#

CommandBlockSender is coupled with a block

#

or BlockCommandSender

grand coral
#

How I can get a players head thar updating like top kills head or something like that

digital plinth
#

is it bc i gave my commands permission nodes in the plugin.yml that now only OPs can accesss them

chrome beacon
digital plinth
#

how can i make like the commands avaliable to non-OPS

chrome beacon
grand coral
digital plinth
grand coral
#

And if I Place the head can I use skullmeta?

chrome beacon
#

Use a permissions plugin...

ivory sleet
wraith rapids
#

this should fix the finite shit issue

digital plinth
wraith rapids
#

now pay me 10 bucks and i'll pr the 3 line change to the repo

digital plinth
#

like ppl who use my plugins might not known permission plugins

wraith rapids
#

you don't need a permission plugin to use permissions

digital plinth
wraith rapids
#

bukkit ships with a permission system

#

it's just shit

ivory sleet
wraith rapids
#

set the permission to default to ops only

digital plinth
#

nice idea

ivory sleet
#

views?

digital plinth
#

i suppose i'll remove the nodes

wraith rapids
#

and then if someone has an issue with it, they can modify it with permissions.yml

digital plinth
wraith rapids
#

and if they need to modify it furhter, they get a perms plugin

ivory sleet
#

Not really

digital plinth
#

that are like going to bug me with it forever

wraith rapids
#

literally everyone uses a permissions plugin

ivory sleet
#

I mean sure some plugin reviewers are dumb

digital plinth
quaint mantle
#

Just make one there easy

wraith rapids
#

practically every production server uses one, most of them luckperms

digital plinth
ivory sleet
#

But permission plugins is a common knowledge field nowadays

quaint mantle
#

Any good server has a ranks system

wraith rapids
#

the only servers that don't use one are like 1 or 2 player private servers who don't know what they're doing

#

which are probably not your target audience to begin with

arctic jetty
wraith rapids
#

any server with any degree of differentiation between players' permission levels requires a permission plugin

#

which means any server that has any kind of in-game staff uses a permission plugin

earnest sonnet
#

I like they way you worded it

wraith rapids
#

i'm a pretty wordy guy

rotund pond
#

Hello !

I have a little question:
What's the difference between "==" and ".equals()" ?

For example, if I want to compare two inventories, which one should I use and why ?

Ty 🙂 ♥

wraith rapids
#

use google

ivory sleet
#

equals compare content, == compare identity

earnest sonnet
#

Uuh memory address

wraith rapids
#

literally type "java what is the difference between == and equals" into google and you get far more and far better answers than you'll get here

ivory sleet
#

if instance a is b then a == b is true

this will likely always be true for .equals() but it can compare content also

wraith rapids
#

we're not a java 101 explanation dispenser

arctic jetty
#

from geeksforgeeks.org:

The main difference between the .equals() method and == operator is that one is a method and the other is the operator.
We can use == operators for reference comparison (address comparison) and .equals() method for content comparison. In simple words, == checks if both objects point to the same memory location whereas .equals() evaluates to the comparison of values in the objects.

#

basically what conclure said

ivory sleet
#

for instance
String a = "a";
String b = "a";
a.equals(b) will b true although a is not b, however the equals method is overridden such that it checks crucial state between two objects.

rotund pond
#

You could at least read all the message.
I know what you are saying but I don't know how to put it into practice and that's why I gave an example...

quaint mantle
wraith rapids
#

use either

ivory sleet
#

AyUniz both works

wraith rapids
#

it doesn't matter

ivory sleet
#

afaik any CraftInventory does not override Object#equals

rotund pond
#

Mh 🤔
So If I create a new inventory identical to the inventory where a player clicks and compare them, both inventories have the same memory adress ?

ivory sleet
#

uh no

quaint mantle
#

has to be the same place in memory

#

so it would have to be an inventory shared to 2 users

rotund pond
#

So == isn't usable ?

ivory sleet
#

Well, in the first place you should ask yourself, what do you consider as 2 inventories being equal or the same?

rotund pond
#

Mh ...
Maybe two inventories with the same owner, the same name and the same content ? 🤔

quaint mantle
#

prob wanna setup a custom equals method then

ivory sleet
#

^

quaint mantle
#

how much of the api even has a proper equals setup

ivory sleet
#

most stuff which needs it

wraith rapids
#

wherever necessary pretty much

quaint mantle
#

nice

rotund pond
#

I see I see ...
So in case I am using a custom inventory created by myself, I can use both == and equals as they will reread to the same memory address.
In case I want to compare two inventories including one that I clone by myself, I have to check them one by one 😮

ivory sleet
#

uh yeah, Idk why bukkit doesn't have like a getUniqueId method for inventories

#

or like

#

some sort of id to keep track of them

#

uuid might be a bad idea actually, not really persistent

rotund pond
#

Well thank you ^-^'

wraith rapids
#

i'm not sure how that'd work

ivory sleet
#

Just with UUID::randomUuid() and then expose a getter I guess

#

or maybe namespaced ones 🤷

wraith rapids
#

it'd have to be stored and persisted on the nms inventory

#

as the api frequently pulls new craftinventories to wrap nms inventories for blocks and shit

ivory sleet
#

oh yeah good point

#

maybe its a lost cause

wraith rapids
#

as long as bukkit enforces the contract that it never wraps or loses the identity of an inventory created with Bukkit.createInventory, i think the existing system is fine

ivory sleet
#

yeah, I go with the holder way still lol

digital plinth
#

its so weird that the Entity Death Event dont have .getKiller

wraith rapids
#

the killer is on the entity itself

wild inlet
#

Sorry for posting in dev

#

But it seems most appropriate for opinions (as #general ) is weird

digital plinth
#

it works?

ivory sleet
#

yes

wild inlet
#

The people over in paper really hate md_5, wonder what the opinions on that were here?

digital plinth
#

according to a forum post it didn't work

wild inlet
digital plinth
#

rumors say spigot is worse then paper bc theres only like one dev

#

and he did some bad things supposedly

ivory sleet
#

@wild inlet I mean what he said is very subjective, was that written in this discord?

wild inlet
#

Apparently everything base spigot does is terrible

digital plinth
#

paper is based on spigot

#

:>

ivory sleet
#

Then I can't do anything about it

wild inlet
#

Somehow every discussion goes back to how shit spigot is and how md_5 hates progress

#

And I wanted an opposing view

#

As it seems unhealthy to be exposed to just one side

digital plinth
#

i feel like md_5 is just a normal dev

#

ohh nice bot

wild inlet
digital plinth
#

i cant ping Mr MD

ivory sleet
#

I mean bungee chat works fine

opal juniper
#

I mean his code is fine

arctic jetty
#

isn't pretty much every mc server software thing a fork of another?
ex: paper is a fork of spigot which is a fork of bukkit which is a fork of craftbukkit which is a fork of vanilla(i think)

ivory sleet
#

but well they have their opinion

opal juniper
#

But it is just that he makes some mistakes when it comes to how he implements stuff imo which would be solved if you had more than one person working on it

wild inlet
wild inlet
#

And I don't really want the communities to diverge so much that compatibility is gone

ivory sleet
wild inlet
ivory sleet
#

Elaborate

#

also mind if we switch to #general

wild inlet
#

Paper API now conflicts with base Spigot

#

Sure

wraith rapids
#

people want them to diverge so much that compatibility is gone

#

because compatibility is the thing holding paper back

#

hard fork hard fork hard fork hard fork

granite stirrup
#

did paper remove final from the fields on the packets?

#

im pretty sure they did i heard someone say that

#

and like protocolLib works on it

ivory sleet
#

check patches

granite stirrup
#

to lazy

finite rampart
#

Someone know how I can create a folder that could be access through the plugin folder in the server files?

ivory sleet
#

yeah

finite rampart
#

how

granite stirrup
#

File class?

ivory sleet
#

Files.createDirectory(Plugin#getDataFolder#toPath#resolve(dirName))

finite rampart
#

and that would save that and I can access it from the plugin folder?

ivory sleet
#

sure

wraith rapids
#

paths duke

#

this vehicle plugin is cancer

#

why is it that every time i look at something it needs to be rewritten

ivory sleet
#

that thing u're coding for supa or some guy who asked here?

wraith rapids
#

helping him is collateral damage

#

i want a decent vehicles plugin for myself

ivory sleet
wraith rapids
#

alright yeah fuck this, rewrite

#

rewrite everything

#

this is illegible, imperformant, ass to extend and buggy as shit

ivory sleet
#

🥲

dusk flicker
#

Lol you just described 90 percent of plugins on the website

granite stirrup
#

@ivory sleet nny is 7 years old

#

he said hes only a little older than 1.8

ivory sleet
#

man stop pinging

finite rampart
ivory sleet
#

?kick @finite rampart trolling

undone axleBOT
#

Done. That felt good.

ivory sleet
#

?kick @granite stirrup trolling

undone axleBOT
#

Done. That felt good.

shadow gazelle
#

Okay then

finite rampart
#

bruh?
why u kicked me how I am a troller

#

I said thanks....

shadow gazelle
#

Anyway, how can I use println with color(s)?

ivory sleet
#

Yaron, turn off pings when replying thanks

finite rampart
#

alright

shadow gazelle
#

Oh, is it just ChatColor?

wraith rapids
#

lol

finite rampart
ivory sleet
#

(sorry I just got pissed off cuz I literally wrote one message above or something

granite stirrup
#

@ivory sleet how good do you think you are at coding 0-10?

shadow gazelle
#

:l

ivory sleet
#

idkidk I will warn you once again

granite stirrup
#

kk but its a important question

shadow gazelle
#

How to get Banned 101

granite stirrup
#

im curious how good he thinks of him self

ivory sleet
#

4

shadow gazelle
#

lol

granite stirrup
shadow gazelle
#

Me

granite stirrup
#

ok

shadow gazelle
#

o k

wraith rapids
#

huh

#

custom enchants

#

is the plugin shit? i need a not shit custom enchants plugin

shadow gazelle
#

lol

#

It's only flight and telekinesis

#

at least for now

wraith rapids
#

mmm

shadow gazelle
#

You drop the item you want to put the enchant on, along with the core (book) you have to craft

#

Then it removes the core and adds the enchant

digital plinth
#

telekinesis huh?

#

cool

#

how does it work

#

you use an item to move a block

shadow gazelle
#

No, like the Hypixel skyblock enchant

digital plinth
#

which is actually a armor stand

#

with tweaked texture

digital plinth
shadow gazelle
#

Automatically puts the block you break into your inventory

digital plinth
#

cuz it updates like sooo freqeuntly

#

im better off doing vanilla survival

#

and my own unity games

shadow gazelle
#

I just hate it because it's a money grab

#

And it's working, sadly

digital plinth
#

you got hired?

#

by hypickle?

wraith rapids
#

capitalist swine

shadow gazelle
#

?

#

what

digital plinth
#

its working

shadow gazelle
#

No, with the stuff they sell for it it's obv a money grab

digital plinth
#

do you mean a job

wraith rapids
#

the money grab is working

#

numbnut

shadow gazelle
#

kek

digital plinth
#

:/

#

lemme gogole

shadow gazelle
#

Ah yes

#

gogole

digital plinth
shadow gazelle
#

bruh

digital plinth
#

real life money?

wraith rapids
#

it's an expression for a move or action made exclusively for the sake of making profit

digital plinth
#

i dont understnad skyblock stuff

shadow gazelle
digital plinth
#

trueeee

wraith rapids
#

yes, pertaining to the enchants and obtaining them in particular

shadow gazelle
#

It's not PvP so it's not against the EULA for them to sell in-game currency like the gems

digital plinth
#

and ppl are dumb enough to spend money on them

#

:/

digital plinth
#

like streamer's donations

shadow gazelle
#

Or are Hypixel simps

digital plinth
#

i suppose itsentertainment in return

#

🤷

digital plinth
#

indeed

#

my new plugin :>

#

Vampire Plugin :>

wraith rapids
#

DEUS VULT

digital plinth
shadow gazelle
#

What

#

When English

wraith rapids
#

he has a holy cross item in the plugin

shadow gazelle
#

Or, not English

#

Oh

digital plinth
#

oh nvm

shadow gazelle
#

lol

wraith rapids
#

which is an instrument of a CRUSADE

digital plinth
#

its something vampire related

wraith rapids
#

against the INFIDELS

digital plinth
#

the cross

#

related

wraith rapids
#

and the UNBELIEVERS

digital plinth
#

これは何ですか

wraith rapids
#

everybody cries about the holocaust but forgets the crusades

digital plinth
#

NNYあなたは本当に何歳ですか

wraith rapids
#

which is very sad, because imo, each piece of history should be remembered

#

and by some, celebrated

digital plinth
#

NNYあなたは本当に何歳ですか

#

NNYあなたは本当に何歳ですか

#

@wraith rapids

wraith rapids
#

what the fuck do you want you squiggly ass fuck

digital plinth
digital plinth
#

language

shadow gazelle
#

I do need to look through my older code in that because that's when I was newer to Java and didn't realize some things would run better than others

wraith rapids
#

are you calling World.getEntities in the player move event

#

because one custom enchants plugin did that

#

another one cloned every itemstack in a player's inventory several times in the move event

shadow gazelle
#

I don't even have a player move event

digital plinth
#

uhhh

#

so both are from the md5 one

dusk flicker
#

What

digital plinth
#

ahh fixed

granite stirrup
#

I don't use textcomponent

winged anvil
#

would using HashMaps for a player queue system be adequate ?

ivory sleet
#

mye

granite stirrup
#

Just don't use player objects :)

#

To get values out of the hashmap

winged anvil
#

how come

granite stirrup
#

Just dont

winged anvil
#

ok

#

im new to spigot api and java in general so

wraith rapids
#

using player objects is fine, but you must make sure that they are disposed of when the player disconnects

#

generally it is preferable to use something easier like the player's UUID

winged anvil
#

ah ok

#

right not im struggling with thinking of a way to have a new map created everytime the queue reaches the cap

ivory sleet
#

anyways if u gonna use player as key, use an IdentityHashMap or (MapMaker if multithreading with it)

wraith rapids
#

more like WeakHashMap

granite stirrup
#

Nny how old are you like fr cuz I'm actually kinda curious

ivory sleet
#

if some shitty plugin keeps the invalid player instance then it wont get cleared in your weak hash map which is the only downside

wraith rapids
#

myeah but that's not your fault anymore

#

uh

#

is there a way to rotate a vector by an euler angle

#

like, built-in

#

right now i'm just brute forcing it with a bunch of rotateAroundAxis calls

ivory sleet
#

uh I don't think

granite stirrup
#

I think there is

wraith rapids
#

yes, that is the euler angle

#

now I need to rotate a vector by it

granite stirrup
#

¯\_(ツ)_/¯

candid silo
#

how do I use the sidebar to display information?

digital plinth
digital plinth
#

the forum told me to do that

#

is it bad?

#

also why is my main null

#

code

#

Main main = Main.getInstance();

#

this line is located on top of the Mana class

#

and

#
static public Main getInstance(){
        return instance;
    }```
#

instance=this;

#

public static Main instance;

granite stirrup
digital plinth
candid silo
# digital plinth scoreboard?

i've used them a bit in the past but only in the vanilla way of listing entry-> number and idk how to use that to do what I need to do

digital plinth
#

spoonfeeding is looked down upon

#

--- nny

candid silo
#

k

dusk flicker
#

?spoon

undone axleBOT
#

Spoonfeed a newbie for a day and they'll come back with more questions. Teach them to find their own answers and you'll both be better off: you won't get stuck answering the easy questions and they'll be much more productive than before.

candid silo
#

I didn't realize that one servers that use it they just number each line, I thought there was some fancy way to display strings

quaint mantle
#

so for a plugin I'm working on, I want to modify the enchantment table to give custom items, everything works fine except that the enchants are always the same because I'm cancelling the event. I looked into using NMS to reroll the enchantments which worked for 1.16 but then 1.17 changes NMS and I would rather not have to use it. is this possible with the bukkit api somehow or would NMS be the only way?

ivory sleet
#

Prolly nms

quaint mantle
#

what about it?

digital plinth
#

you can change the outcome of crafting and using itmes on an anvil

#

and smithing

quaint mantle
#

thats not the problem

digital plinth
#

in bukkit api

quaint mantle
#

again thats not the problem

#

except that the enchants are always the same because I'm cancelling the event.

wraith rapids
#

throw some reflection at it

shrewd solstice
#

how can i detect paypal donation???? and do event if i got like 5$????

candid galleon
warm bloom
#

so I just made a simple plugin that is supposed to spawn a cat, but the server seems to ignore it

#

no folder for the plugin was created and its not listed in the /plugins command

#

so naturally its only command isnt recognized either

wraith rapids
#

check the logs

warm bloom
#

I have

wraith rapids
#

the issue is listed in the logs

#

check them again

next viper
#

Okay so I have a question. From my perspective I seem to do everything right with this event, but it seems like it doesn't trigger despite my efforts.
My code (I left the imports out but I got all imports):

public class Main extends JavaPlugin implements Listener{
      @EventHandler(priority=EventPriority.HIGH)
      public void onPlayerJoin(PlayerJoinEvent event){
          Player player = event.getPlayer();
          Bukkit.getServer().getLogger().info(player.getDisplayName() + "join server");
          player.sendMessage("This is a test! :P");
          System.out.println("A player joined the server!");

My expected result: The event gets triggered when I join my locally hosted server and I see a message in console and in game.
Actual result: Nothing happens...but the plugin is enabled and can be seen in /plugins

ivory sleet
#

Did you register the listener?

next viper
#

No? I'm not so sure what you mean

ivory sleet
#

?eventapi

undone axleBOT
next viper
#

The problem I'm having right now is that my listener is in my main class. And if I register it wants to initialise itself. This is basically my code rn

public class Main extends JavaPlugin implements Listener{
    
    @Override
    public void onEnable() {
        getServer().getPluginManager().registerEvents(new Main(), this);
        System.out.println("Live notifications is online and enabled!");
    }
    
    @EventHandler(priority=EventPriority.HIGH)
    public void onPlayerJoin(PlayerJoinEvent event){
        Player player = event.getPlayer();
        
        Bukkit.getServer().getLogger().info(player.getDisplayName() + "join server");
        player.sendMessage("This is a test! :P");
        System.out.println("A player joined the server!");
hardy swan
#

registerEvents(this, this)

#

dont have to create a new instance

next viper
#

ahh alright

jagged monolith
#

Events should be in their own class as it keeps the code cleaner., and second it's generally a bad idea to call your main plugin class "Main"

next viper
#

Ayy thanks it worked

#

Yea I'm just trying things out rn

#

But thanks for the tip

ivory sleet
#

Anyways new Main() wouldn’t even work

next viper
#

Yea that's why I said it will initialise itself, but I didn't know you could just do this

hardy swan
#

anyone uses vscode and know of a working ruby extension >:I

split egret
#

Is there a way to remove the spawn requirements of spawners?

wraith rapids
#

not really

candid galleon
#

not easily

lunar wedge
#

What is a good way of adding a "cool down" to a command. Example: I have a /home command, and once its ran, I want there to be a 3 second wait before they can teleport. I sort of have an idea of how to do it, but thought I'd ask to see if anyone had ideas 🙂

wraith rapids
#

that's a warmup

#

a cooldown would be that you could not use the command again until after 3 seconds

lunar wedge
#

Ah yes, that then 😛

quaint mantle
#

Is there a way I can delete a players placed chests + all items on death event? Currently using db to store all info on it, Just got no clue where to start on that.

wraith rapids
#

iterate over the block locations, load the chunks, and delete the chests

#

ideally using paper's async chunk loading api as the server will fucking die if you try to load too many chunks at the same time synchronously

quaint mantle
#

I'll just store chest loc when placed into db load it's chunk and delete it. Thanks for the idea!

hollow bluff
#

How would I go on about creating multiple borders at a specified location?

candid galleon
#

also listen to the PlayerMoveEvent and if they move then you can cancel the runnable

untold gazelle
#

I'm looking to use NMS in one of my projects, how do I access it?

#

I added the spigot server jar as a library in my project but i'm not seeing the net.minecraft.server.<version> packages

candid silo
#

is there a way to store a string with a color code because when I tried it turns into this:
º7??????????

wraith rapids
#

encode the file in utf8

steel gulch
#

i want to make a plugin for 1.7.10 is there a spigot download for the correct version

candid silo
#

i'm just storing it in a field not a file and it's doing that

#

can it not be a String

#

is there another object I should use?

wraith rapids
#

you're mangling it with the wrong encoding somewhere

proud basin
#

Heyyyy Skull Head

summer scroll
#

Is it possible to use hex color in an inventory? Such as item display name, lore and inventory title.

candid silo
#

and I screwed around with it for a bit

#

also earlier the unicode charecter □ was working fine

#

fixed it

whole stag
#

Any recommendations for good ways to test multiplayer plugins during development short of constantly pestering my friends?

lunar wedge
#

Is there an easy way to check if a string is only letters a-z?

digital plinth
whole stag
lunar wedge
#

ty

digital plinth
lunar wedge
summer scroll
#

I'm guessing because you put Main main = Main.getInstance() on the field.

whole stag
#

Add a 0-9 in the square brackets

lunar wedge
#

Thank you sir

hardy swan
whole stag
#

Np. The matches method uses a thing called regular expressions. If you look into them a bit more you can use it to verify just about any input format you could imagine

hardy swan
digital plinth
digital plinth
#

static Main main

#

= Main.getInstance

summer scroll
#

Just show your main class and the class that you're trying to access the Main class.

hardy swan
#

oh ok seems like i misunderstood your comment, yea just show the class

digital plinth
summer scroll
#

And what class is the second screenshot?

#

The class name

digital plinth
hardy swan
#

yup then that's the problem

summer scroll
#

There you go, you declare the main in the fields, while the instance hasn't been initialized yet on the Main class.

hardy swan
#

Mana mana = new Mana(); also that line

summer scroll
#

Just make it local variable and you're good.

digital plinth
#

oh okay

wraith rapids
#

use DI

digital plinth
#

thx

wraith rapids
#

static getters run into this issue more often than you'd think

digital plinth
wraith rapids
#

using static getters in static initializers is especially haram

digital plinth
#

i thought that was di

wraith rapids
#

as that makes your plugin sensitive to the order in which its classes are loaded

#

which is never good

#

for example, even if the order of code in your main class was correct, and the Mana instance were to be created after your static instance field is assigned

summer scroll
#

haram yeah xd

wraith rapids
#

if someone were to cause, for any reason, the Mana class to be initialized, your plugin would explode

#

as during the initialization of the class itself, the main = Main.getInstance() is called

#

and now your Main main is null, because Mana was initialized before Main

#

it's unstable to the point where if anyone literally looks at your classes in the wrong order, it explodes

summer scroll
#

so keep in mind that the field is called way before onEnable is called.

digital plinth
#

o

digital plinth
hardy swan
#

I would agree that dependency injection is the safest, and also getter is more of a real-time usage

wraith rapids
#

no, because of how java works

digital plinth
#

okay

wraith rapids
#

it being a method is part of it, but it's more complicated than that

#

the issue with static initializers is that they only run once; and you have zero control of when they actually run

#

any static initializer that depends on any static state anywhere else is bound to explode sooner or later

hardy swan
#

it get more complicated when you have anonymous class based on a soft-dependency, absolute pain in the ass

proud basin
#

Should I make my own yml file for a config or use config.yml?

hardy swan
#

latter for convenience sake

#

if you do not already have it

#

but most widely known conception of config.yml is something that the user can edit or use to modify certain settings

#

if it is something that you do not want the user to change, prob safer doing it the former way

digital plinth
quaint mantle
#

base stuff should def go in config.yml first

#

then you can split up the configs if its some huge parts

digital plinth
#

but you'll have to learn it sooner of later

proud basin
#

I was thinking of having one for messages

quaint mantle
#

yeah that makes sense to do

proud basin
#

I have done it before Supa

wraith rapids
#

a localization file is a good thing to split off from the main config

hardy swan
#

if it is for messages, you can have languages yaml files for extendibility

wraith rapids
#

as that allows a community to source and exchange localizations without touching the actual functionality itself

proud basin
#

languages for what

wraith rapids
#

your messages

proud basin
#

Do i look like a translator to you

hardy swan
#

no but, the user may be one

wraith rapids
#

most 1.8 players come from poor third world countries

#

so yes, you should get to translating

proud basin
#

uh

#

so google translate 🙂

whole stag
#

Eh, Google translate isn't great

#

It especially butchers Asian languages

proud basin
#

lmao

wraith rapids
#

nobody cares about the azns anyway

hardy swan
#

not necessarily you who would translate it, but a default language file is good to be provided as a template for other users to do so, or even better, contribute

whole stag
#

^

proud basin
#

ah

wraith rapids
#

point is that users can create and share localizations without it interfering with their actual configuration

#

just grab and swap a file

whole stag
#

Yup. The best way to handle it is almost always add easy, modular support for it and let someone else do the translation

proud basin
#

Are you offering to do the translation?

whole stag
#

No

hardy swan
#

I can help translate into english

#

:3

whole stag
#

The only other languages I know are broken German and some French

wraith rapids
#

TOTALEN KRIEG

hardy swan
#

there

#

translator

whole stag
#

I'll translate into c++

#

Or cuda lol

#

This is how it's done. Cuda accelerated servers

hardy swan
#

does jshell qualify as an mce

summer scroll
#

Does any of you have a clue on how to use sub-modules in Maven project?

#

I'm trying to access a method in the module, my goal is to get a list of region from a location using WG6 and WG7

proud basin
#

How can i add a space between each value in a yml yfile?

wild marten
#

wdym a space?

#

like a line gap?

proud basin
#

yes

wild marten
#

this might sound stupid, but try config.set("\n<value>", variable);

#

i dont have anything open so idk if it will work

#

but doesnt hurt to try

silver wadi
#

if (event.getItem().equals(star))

#

i keep getting

#

java.lang.NullPointerException: Cannot invoke "org.bukkit.inventory.ItemStack.equals(Object)" because the return value of "org.bukkit.event.player.PlayerInteractEvent.getItem()" is null

split egret
#

show whole function

silver wadi
#

It only returns null if i look at a block while doing this, as a result of this line
if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK)
right above it

#

alright

summer scroll
#

PlayerInteractEvent.getItem()" is null

silver wadi
#
    @EventHandler
    public void onClick(PlayerInteractEvent event) {
        PotionEffect invisible = new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 1);

        if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if (event.getItem().equals(star)) {
                PotionEffect player_effect = event.getPlayer().getPotionEffect(PotionEffectType.INVISIBILITY);
                if (player_effect == null) {
                    invisible.apply(event.getPlayer());
                } else {
                    event.getPlayer().removePotionEffect(PotionEffectType.INVISIBILITY);
                }
            } 
split egret
#

Check if the item is null

#

¯_(ツ)_/¯

silver wadi
#

but im holding the item in my hand

#

and it works fine

#

but i just get error in console

#

no clue why

#

oh

#

thank you

quaint mantle
#

Which slot type would a players offhand be?

#

I would use the slot number but im not sure if its considered an armor slot (which I dont know if they have slot numbers)

silk mirage
#

So, I'm trying to make chainmail armour as same as leather

#

I need to change the Protection attribute, I tried some Google but couldn't find any useful information..

quaint mantle
#

not particularly

#

thank you though, I need to check whether a player puts an item into their offhand within the inventory GUI

#

figured it out, thanks

tired dagger
#

Hey, so I'm trying to re-create the LuckPerms command auto tab completion (basically adaptive tab completion) but I'm not sure how to do it properly. My command is still showing up red even though I have it set in the plugin.yml and SetExectutor/SetTabCompleter in the onEnable() method. Here is what I have

#

Here is an example of the LuckPerms tab completion if you are not familiar with it

quaint mantle
#

is there an event to monitor a player changing whats in their main hand, by action of the scroll wheel or numbers?

#

PlayerChangedMainHandEvent doesnt seem to work

tired dagger
#

I believe that event is actually for switching hands. Like from main hand to the offhand. Try PlayerItemHeldEvent

quaint mantle
#

thanks, Ill give it a shot

tired dagger
#

You're welcome

summer scroll
# tired dagger

Don't use the new CommandManager() twice. You only need to do that once.
Basically they are different instance/object so it won't work.

tired dagger
summer scroll
tired dagger
#

Ohh, I see what you're saying. I was creating 2 separate instances instead of giving it a variable and referencing it

summer scroll
tired dagger
#

Right

#

Okay, it didn't change anything

summer scroll
#

Are you sure you have registered it in the plugin.yml?

tired dagger
#

Yeah, because it shows up if i do /? enhancedrules and auto tabs for that section for some reason

#

oh wait jk

#

one sec

#

wait, yeah, there it goes

#

But not when I do /enhancedrules by itself

summer scroll
#

Okay, I think the problem is in your tab completer, the command registered successfully.

#

This is how I set the tab completer

parseTabCompleter(...){
  if(args.length == 1){
    return Collections.singletonList("spawn");
  }

  if(args.length == 2 && args[0].equalsIgnoreCase("spawn")){
    return Arrays.asList("set", "remove");
  }
}
#

you didn't specify and tab completer if the args length is 1

#

try to use /enhancedrules spawn and you will see the suggestion (set, remove) on the args[1] (on your current code)

tired dagger
summer scroll
#

anyways i have to go, have an appoinment with my doctor

tired dagger
#

Alright, thanks for your help

quaint mantle
#

How to make custom permission message for all plugins on the server?

tired dagger
#

You could check whenever a player runs a command if they don't have the permission and then override or cancel the plugin's default message

grand coral
#

Executor*

tired dagger
summer scroll
#

@tired dagger is it solved yet?

tired dagger
summer scroll
#

Basically you need to put suggestion each args.

#

No need to check command.getName

tired dagger
# quaint mantle how to write this?

Create a class that implements Listener and uses PlayerCommandPreprocessEvent then check the player's perms and cancel the handlers or override the message

tired dagger
#

Didn't work

#

I don't think its detecting the TabComplete method because I just tried this and got no output

ivory sleet
#

You return null

tired dagger
#

I did in that case but it didn't send any messages in chat leading me to believe that code wasn't executed

ivory sleet
#

Idk I can only tell what’s going on inside that method

#

But ftr you need to set the completer with PluginCommand::setCompleter or if it was setTabCompleter

tired dagger
#

Hmm?

ivory sleet
#

Uh not that but I hope you realized, you’re still returning null

summer scroll
#

Is it differemt on how you register it?

#

Between TabExecutor and CommandExecutor, TabCompleter

ivory sleet
#

No

#

It’s just a common interface for convenience

summer scroll
#

convenience, i see

ivory sleet
#

Yeah

summer scroll
#

but it's doesn't that necessary imo

opal juniper
#

I wish that spigot had some control client side smh

tired dagger
#

For some reason

#

I think

ivory sleet
#

Then we would need a spigot api mod and that’d be its own hell to make

ivory sleet
#

Just like with setExecutor you need to invoke setCompleter

opal juniper
#

Yeah - but like I wish that It would auto load to the client… I know security and all would never allow this and that is good. But it would be nice

ivory sleet
#

Yeah well I guess if there was more packets which would allow further manipulation of client sided things could be nice but it’s prone to some shit things which could also happen

opal juniper
#

Try in different classes

opal juniper
ivory sleet
#

Why not

opal juniper
#

Shit like Player#setViewDistance

ivory sleet
#

Not really the same thing

opal juniper
#

Well- that’s what I meant

#

Maybe a settings packet

#

So you could send it to the client with specific settings

ivory sleet
#

Thing is the view distance is enforceable

opal juniper
#

But that definitely wouldn’t get thru security very fast 😂

jade perch
#

Where's my key logger packet

#

Smh mojang

opal juniper
#

The thing I want out of anything else is a custom sound packet. So that you could just send a stream of the packets to all players and bang - music

tired dagger
#

Yep, still nothing.

#

So why isn't it executing

opal juniper
#

Does the class implement TabCompleter

tired dagger
opal juniper
jade perch
tired dagger
#

I used TabExecutor

opal juniper
#

Noooooo

tired dagger
#

?

opal juniper
opal juniper
jade perch
#

It has sound

opal juniper
#

Not executor

tired dagger
#

Tab Executor implements both

opal juniper
tired dagger
#

I mean, i'll take it out and try it but I don't think that's the issue

tired dagger
ivory sleet
#

Idk Trent Menard, it looks weird as for our side it should work. It’s an issue from your side guaranteed.

opal juniper
ivory sleet
#

No I can’t but I am quite certain

opal juniper
#

Np that’s really cool - I thought that pulse just added the sound in post… 😂

opal juniper
ivory sleet
#

Possibly

opal juniper
#

Well

#

I have never come across it

ivory sleet
#

Yeah same

jade perch
summer scroll
#

I never have problem with tab completer in 1.17

opal juniper
#

And I was using it yesterday

tired dagger
jade perch
ivory sleet
#

Command framework written by aikar

#

Annotation based

opal juniper
#

I keep meaning to try redemption

#

Redempts*

#

He said it was really nice

ivory sleet
#

I use brig or cloud lol

jade perch
#

I don't like redempts cause his Lib isn't modular

opal juniper
#

Well. Up until this point I just use the vanilla one

ivory sleet
#

Modular as?

#

Gradle modules or what?

jade perch
#

If you use any Lib you have to use like everything

ivory sleet
#

Oh right

opal juniper
#

Shade it

#

I may have Mis understood

jade perch
#

Yeah he doesn't have it moduled out

opal juniper
#

But I think that solves the issue

jade perch
#

Last time I checked

ivory sleet
#

I should probably make my library componentially decoupled

opal juniper
#

What’s in your lib

ivory sleet
#

Uh, more performant event handles, task coordinators, block fillers and plugin message events

#

Nothing remarkable

jade perch
#

Hch is still my favorite Lib

#

I use it everywhere

ivory sleet
#

😌

opal juniper
#

Hey conclure

#

Can you add

ivory sleet
#

Hai

opal juniper
#

Non primitive pdc storage

#

Please

#

That would be quite epic

ivory sleet
#

Wym non primitive pdc storage?

#

Like premade complex persistent data types

jade perch
opal juniper
#

Yuh

ivory sleet
#

That takes 2 seconds to do but sure lol

opal juniper
#

It’s another feature

#

And if I need it I don’t wanna have to think

#

So anyone know protocollib

#

Cause I feel like I am using it wrong

ivory sleet
#

Mye used it once

opal juniper
#

Is there some packet wrapper thing

#

That makes creating the packet easier

ivory sleet
#

I use packetevents

opal juniper
#

Or do you literally have to go the the wiki and work out what fields there are

ivory sleet
#

But it’s unstable still

opal juniper
#

Huh

chrome beacon
#

It's named PacketWrapper

opal juniper
#

Oh lmao

jade perch
opal juniper
chrome beacon
opal juniper
#

Thanks

vague mason
#

Why event doesn't fire?

#

I have registered it like every other event: new BlockExplodeListener(this);

#

It doesn't show any message when I explode some blocks with TNT.

#

what is difference between BlockExplodeEvent and EntityExplodeEvent?

shy wolf
#

how to give player invisibility effect?

ivory sleet
#

Block explosion vs entity explosion, like creepers or primed tnts as opposed to blocks like beds in the nether

vague mason
#

okay thanks

#

tried with entity and it works

#

so tnts are entity explosion

ivory sleet
#

Ye lol

vague mason
#

hahah strange

shy wolf
ivory sleet
#

LivingEntity#addPotionEffect

subtle kite
#

like just the potion or ...

shy wolf
vague mason
#

okay so I need to use Block break, Entity explosion and Block Explosion events to prevent specific sign from breaking?

#

is there any other event I need to use?

subtle kite
#

@shy wolf what the event.. What you trying to do

vague mason
#

I just want to prevent specific block (sign) to be destroyed

#

now I use break block, entity explosion and block explosion events.

#

is any other even that I need to use to prevent block to be destroyed

#

Like can it be destroyed somehow else?

vague mason
#

np

topaz moon
quaint mantle
#

wait what block explodes other then tnt

ivory sleet
#

Bed

quaint mantle
#

hmm yeh

vague mason
ivory sleet
#

Respawn anchor

quaint mantle
#

ender crystals are entities pretty sure

vague mason
#

it's entity

quaint mantle
#

anchor too new for my brain

ivory sleet
#

🥲

quaint mantle
#

I didn't really play the nether update and the gang waiting for 1.18 now so rip

opal juniper
#

anyone know what i am doing wrong - i have the jitpack repo

chrome beacon
#

Set version to master

opal juniper
quaint mantle
#

reload maven

jade perch
#

Ye only other thing I can think of

opal juniper
quaint mantle
#

you can use maven browser

chrome beacon
#

It failed the build

opal juniper
#

oh

#

sadge

ivory sleet
#

@paper viper

#

Fix your shit (:

quaint mantle
#
<dependency>
    <groupId>com.github.pulsebeat02</groupId>
    <artifactId>minecraftmedialibrary</artifactId>
    <version>master-SNAPSHOT</version>
</dependency>
chrome beacon
#

It has NMS so jitpack don't support that

opal juniper
#

someone converted it to gradle as well angryeyes

ivory sleet
#

That’s good

#

Outstandingly good

opal juniper
#

eh i just dont use it

#

can i build it locally

ivory sleet
#

Myeah

opal juniper
#

im gonna need walking thru tho

#

i have no clue

ivory sleet
#

Lmao it requires every nms version to be installed

#

Quite the painful one

chrome beacon
#

Yeah

opal juniper
#

oh shit

quaint mantle
#

fucking nms

#

i hate that

#

but it's very useful

#

useful shit

ivory sleet
#

I like it

#

Now when the mojang mappings arrived its even more attractive

opal juniper
quaint mantle
#

i using paper

chrome beacon
quaint mantle
#

and i haven't mappings

jade perch
#

this one works apparently

#
    <dependency>
        <groupId>com.github.MinecraftMediaLibrary</groupId>
        <artifactId>MinecraftMediaLibrary</artifactId>
        <version>-8d6a801b9c-1</version>
    </dependency>
#

I hate jitpack so much

opal juniper
#

nah its good

quaint mantle
opal juniper
#

Could not find artifact com.github.MinecraftMediaLibrary:MinecraftMediaLibrary:pom:-8d6a801b9c-1 in jitpack.io (https://jitpack.io)

jade perch
#

no minecraft media library for you