#help-development

1 messages · Page 1909 of 1

boreal sparrow
#

hmm ill try thnx

#

is event get entity the damager or victim

vocal cloud
#

?jd

boreal sparrow
#

ty

vocal cloud
craggy verge
#

Serious question, Is it best to know Plug-in development as a server owner? ik it sounds dumb

vocal cloud
#

I mean it's a good thing to know if you're solo so you can verify code but most servers have a dev on team to handle this kind of stuff.

quaint mantle
boreal sparrow
#

i think this should work...
@EventHandler
public void onPlayerDamage(EntityDamageByEntityEvent event){
if(event.getDamager() != hunter){
event.setCancelled(true);
}

quasi patrol
#

Ay my favorite. Another error, but I think I solved it.

azure osprey
#

could someone help me with a little problem I have?

boreal sparrow
#

why do i take damage from zombies and stuff?

#

@EventHandler
public void onPlayerDamage(EntityDamageByEntityEvent event){
if(event.getDamager() != hunter){
event.setCancelled(true);
}

muted sand
#

How can I change a large amount of blocks quickly without any visual lag?
I used nested for loops to iterate through the blocks -> delete them
but there's just a small visual delay. Would I use nms to send the packet at once or

azure osprey
#

my problem is that the metadata seems to change when durability goes down

quasi patrol
#

Maybe for the detection set durability for the metadata of the one you are comparing the shot bow to the durability of the shot bot.

azure osprey
#

hm, ok thanks

quasi patrol
quasi patrol
azure osprey
#

it helped inspire me to find an alternative solution

muted otter
#

i did and i dont get how to use the method, so can you just tell me how to use it?

maiden thicket
maiden thicket
#

and your bot token

#

might want to delete that link

quasi patrol
maiden thicket
quasi patrol
maiden thicket
#

oops

#

ur using 2 different dependencies for JSON

#

stick to one

quasi patrol
maiden thicket
#

iirc u can do something like

#
String json = EntityUtils.toString(resp.getEntity(), StandardCharsets.UTF_8);
JSONObject object = new JSONObject(json);```
#

i also just recommend using the java wrapper for discord

minor otter
#

anyone have a link to where I can learn about sending block breaking packets to the player

quasi flint
#

Either using NMS (thread unsafe) or using protocollib

minor otter
#

thanks

quasi flint
#

I need that ?packets

remote gazelle
#

can i ask something about nms here?

hardy swan
#

yes

remote gazelle
#

so i want to see how vanilla minecraft handles damage by attacking
i have net.minecraft.server sources now but i don't know where it handles it

hardy swan
#

who damaged by what

remote gazelle
#

oh i was typing that

hardy swan
#

any potential event it fires?

remote gazelle
#

player -> player

hardy swan
#

if you know what event it fires, you just have to search the repo with that event

#

to see where it is fired

remote gazelle
#

oh ok wait a sec

#

how to "search" in the sources

buoyant viper
#

ctrl F

snow crow
#

?jd

remote gazelle
remote gazelle
quaint mantle
#

?jd-sp

#

?jd-s

undone axleBOT
quaint mantle
#

?jd-b

#

?jd-bc

quaint mantle
#

heh?

remote gazelle
#

wow

#

?jd

quaint mantle
#

?jd-bcc

remote gazelle
#

lol

snow crow
#

?java

remote gazelle
#

?

snow crow
#

?learnjava

undone axleBOT
remote gazelle
#

?help

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

selfrole Add or remove a selfrole from yourself.

**__Cleanup:__**

cleanup Base command for deleting messages.

**__Core:__**

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

**__Downloader:__**

findcog Find which cog a command comes from.

**__Mod:__**

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

**__ModLog:__**

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

**__Permissions:__**

permissions Command permission management tools.

remote gazelle
#

whoa

snow crow
#

i needed the links ...

#

stop

remote gazelle
#

?links

remote gazelle
snow crow
#

ik

remote gazelle
#

well since i use paper i have paper-jd linked

quasi patrol
#

How do I create a Skull ItemStack that uses a custom texture ID.

remote gazelle
#

search

#

PLS

#

google spigot skull custom texture

sage patio
#

How can I get this strings and add them to an ArrayList ?

remote gazelle
#

is that yaml file?

sage patio
#

yea

remote gazelle
#

?jd

remote gazelle
#

wait a sec

young knoll
#

YamlConfiguration#getStringList

remote gazelle
#

getStringList

sage patio
#

thanks

quasi patrol
# remote gazelle PLS

All I am seeing is SkullMeta.setOwningPlayer("name") but that is for heads that are on actual skins... right and I want actual custom heads? Another one is using GameProfile variables which I don't have?

young knoll
#

It’s part of NMS

remote gazelle
#

no

#

its on the api

#

oh

#

wait its nms yes sorry

remote gazelle
young knoll
#

Or just spigot...

remote gazelle
#

oh last time i tried, only adding spigot didn't worked

#

well for me at least

quasi patrol
#

All I can find on the web for the dependency of it for 1.17.1 is <dependency> <groupId>org.spigotmc</groupId> <artifactId>spigot</artifactId> <version>1.17.1-R0.1-SNAPSHOT</version> <scope>provided</scope> </dependency>, but it is saying Could not find artifact org.spigotmc![spigot](https://cdn.discordapp.com/emojis/728421352721088542.webp?size=128 "spigot")pom:1.17-R0.1-SNAPSHOT in papermc-repo (https://papermc.io/repo/repository/maven-public/) .

young knoll
#

Did ya run buildtools

quasi patrol
#

Wait.

#

Would be a good idea to also add the repository lol.

young knoll
#

The repo is mavenLocal

tiny wolf
#

Does anyone know the offset between the armor stand location and the armor stand head location ?

buoyant viper
#

its eyes probably at uhhh

#

+1.85 from base Y

tiny wolf
#

but is that the head loc?

buoyant viper
#

are ur eyes on ur head?

quaint mantle
#

well, its not, according to him

#

he probably has it in his chest or something

tiny wolf
#

bruh, there's more then one location on a head

#

...

#

is it in the middle of the head ?

buoyant viper
#

the eyes are a little above center of head i think

#

actually isnt there like a getHeight method for entities

tiny wolf
#

sorta

#

not really tho

buoyant viper
#

or am i yet again thinking of client methods

young knoll
#

There’s a getEyeLocation

tiny wolf
#

im aware

buoyant viper
#

i think they want entity height

#

bc they said offset from head to base

nocturne aurora
#

Can anyone point me to a good place to find Minecraft plugin developers for a big project?

tiny wolf
#

I want the exact offset of the head location from the stands actual position

undone axleBOT
tiny wolf
#

what I could do is use a loop till I get the right loc

sage patio
#

How can I get player from PrepareAnvilEvent ?

young knoll
#

Get the inventoryView and then get the viewers

#

There should only be one

sage patio
#

thanks

sage patio
#

its not cast able to player

young knoll
#

Inventory#getViewers returns a List<HumanEntity>

#

HumanEntity is 100% castable to player

remote gazelle
#

than why HumanEntity exists?

young knoll
#

Yes

remote gazelle
#

oh yeah didn't know

#

i mean, seriously

young knoll
#

I suppose it’s to emulate the class hierarchy in minecraft itself

remote gazelle
#

oh so there will be Player2 not just Player XD

#

btw HumanEntity is made by spigot not minecraft

young knoll
#

I suppose it’s to emulate the class hierarchy in minecraft itself

drowsy helm
#

pretty sure its client sided so you need the effect for it to work

opal juniper
#

give the potion effect without particles ig

#

or a resource pack

#

probably not possible then idk how it works

#

can’t see any mention of it on teh wiki so yeah must be client side

quaint mantle
#

humanentity prob exist for both npc and player

#

i guess

young knoll
#

NPCs are still players

#

Then can’t perform any inventory actions anyway

sage patio
#

I've registered the tab completer in the Main class, and blockedNames in Main class is a ArrayList of String

#

but does not work

ivory sleet
#

What does not work?

#

How is it supposed to work? What happens instead?

buoyant viper
#

?notworking

undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

buoyant viper
ivory sleet
#

🙏

sage patio
#

its a tab completer

ivory sleet
#

That much even I could tell

sage patio
#

so when i press tab with 0 arguments, the plugin should return some thing a told him

chrome beacon
#

Did you register the tab completer

sage patio
quaint mantle
#

did you call that method

#

just sayin 🙂

sage patio
#

onEnable

quaint mantle
#

no error was found?

sage patio
sage patio
#

just tab completes my username

quaint mantle
#

it just does not work right?

sage patio
#

i told him in tab completer class to return a list of string

#

but plugin returns nothing

hybrid spoke
#

the command is an arg. the length cant be 0

sage patio
hybrid spoke
#

well, not the command but everything after your space* so if you do a space, its an arg.

sage patio
#

yea, thanks

ivory depot
#
        Player p = e.getPlayer();
        String msg = e.getMessage().toLowerCase();
        e.setCancelled(true);
        for (Player player : Bukkit.getOnlinePlayers()) {
            p.sendMessage("s");
            if(player.getName().toLowerCase()==msg) {
                p.performCommand("d add " + msg + "");
                p.sendMessage(Color.fix("&aYou added&6" +msg + " &ato yout plot!!"));
                GuiClick.chaton.put(p, false);
                GuiClick.addremove.put(p, "brak");
                return;
            }
            e.getPlayer().sendMessage(Color.fix("&cPlayer is offline!"));
        }``` And always this send Player is offline
thorny python
#

how can I teleport a player to a specific location on another server in same bungee network?

quaint mantle
#

the reason for that is == compare obj, which they are not the same, while the equals in String compare the actual string, not the object itself

ivory depot
#

okay, thanks

quaint mantle
ivory depot
#

okey, i'll try, ty

thorny python
vocal cloud
thorny python
#

so if no one was online in target server when teleport happen, the message will not delivered...

blazing rune
#

How do I add weapons to custom mobs?

spiral light
#

You could create an external socket Server-Client system that allows sending stuff to other servers

alpine barn
#

Does anyone use Ant on top of Maven, to do some specific stuff?

lavish hemlock
#

Oh btw I know this was literally like a week ago

#

But there is no difference

#

The above just makes that initializer apply to all constructors

#

Wow!

lost matrix
#

You can also write a maven plugin

snow crow
young knoll
#

I need to learn how to deploy my plugins directly to the plugins folder

#

Assuming that works when the server is on

lost matrix
young knoll
#

Meh

#

Faster for me to just overwrite the jar manually then

jade abyss
#

If you code your plugin correctly it shouldn't cause any issues for testing

lost matrix
young knoll
#

Yes but then I have to hardcode my plugins folder link into the build.gradle

agile sinew
#

how to set theme in cwm?

jade abyss
lost matrix
agile sinew
#

code with me

young knoll
#

I’ve decided to yeet json and properly use relational databases for my plugin

#

I think

lost matrix
young knoll
#

I mean there isn’t really a reason to not use it

#

Means I can easily set up a baltop if I want to

lost matrix
#

Yeah because MongoDB has no selective queries

#

Or do you just want to use sql and support nothing else

young knoll
#

Probably just sql

lost matrix
#

ok then it makes more sense

young knoll
#

I doubt anyone has a real need for something else

#

Especially since sql has like 10 different options

thorny python
#

nosql is growing now I think

#

actually I think it is more flexible for minecraft plugin data storage, compare to sql option

young knoll
#

I guess, but most shared hosts don’t offer it

#

Well, non-local versions of it

thorny python
#

most of time minecraft plugin data just need a key-value style storage, instead of heavy features from sql xd

young knoll
#

Yeah

quaint mantle
#

I'm a SQL gigachad

#

non relational will never as scalable ws relational ones

lost matrix
young knoll
#

I mean I’d totally go for that if it was accessible to people

#

But it isn’t, compared to relational anyway

quaint mantle
#

table data representation is simple af, no?

young knoll
#

I guess I should avoid stuffing the uuid in every table

#

And instead have a single table that connects a uuid to a simple integer I can use a foreign key

quaint mantle
#

uuid is small enough to use as key

#

(if you store it in binary format)

young knoll
#

Gotta look at how to do that

quaint mantle
#
  1. use columns BINARY(16)
  2. Serialize/Deserialize uuids to byte array with 16 length
  3. statement.setBytes and resultSet.getBytes
wet breach
lost matrix
young knoll
#

What if someone wants to sync the data on two servers :p

lost matrix
young knoll
#

I mean ditching sql for just json is tempting

#

But blah idk

lost matrix
#

And if you need live syncing then those DBs are not up for the task anyways. If you want high availability + high consistency then you need
something like Redis or Hazelcast between the minecraft servers and the databases.

young knoll
#

Essentials just does yaml, CMI does SQLite and MySQL

#

Hmm

quaint mantle
#

Database is capable of synchronizing in some cases; LibertyBans is a great example

#

Although, that requires asynchronous non-blocking design, data is stored almost in database

lost matrix
#

You need to poll databases if you want to get notified when changes happen. Redis has several techniques for this which are event driven.

wet breach
young knoll
#

Ahh decisions

lost matrix
young knoll
#

Json would probably make this nice and simple, although I don’t actually know how to operate it the same way I do yaml

wet breach
#

well would have to be sockets unless you planning on communicating on a lower level? lol

#

most data needing to be shared isn't a large amount

young knoll
#

Although with json getting the balance of all players would require me to load each file

wet breach
#

basically you can make it a config option as well as your plugin can detect which type of server it is being loaded on. If they enable multi-server option, then in the code you know you need to pull from the master

#

you are not going to have a player on more then one server at any given time at least not with current server implementations 😛

young knoll
#

How would that solve having to load each file to get all player balances

wet breach
#

you would just do it on server load and I would recommend binary storage

#

use memory mapped file to aide loading it super fast

young knoll
#

True

#

I think essentials loads all balances on demand when you run baltop

minor otter
#

if (targetblock == blocklooked) {
Bukkit.getScheduler().runTaskLater(plugin, () -> {
packet.getIntegers().write(0, new Random().nextInt(2000)); //entityid
packet.getIntegers().write(1, 3); //stage
try {
manager.sendServerPacket(player, packet);
} catch (InvocationTargetException e) {
e.printStackTrace();
}
blocktouched.setType(Material.AIR);
}, 20);
}

I dont understand what is wrong with this, both targetblock and blocklooked share the exact same values but the schedule doesn't run, no errors show up

wet breach
#

nothing more

#

and in fact it isn't super accurate all the time either 😛

alpine barn
#

I believe everything I'm being told.

young knoll
#

Pretty sure you can check all of them

#

Unless that changes

wet breach
#

if you get a player knocked off the list completely, and lets say then afterwards all the rest use up their balance and the one that got knocked off is supposed to be in the top list again but said player never rejoined the server. Essentials won't display them in the list until they join again 🙂

#

a very unique scenario but point is, essentials does not look through all the player files to find who is supposed to be in the top

young knoll
#

Hmm

#

It used to say “ordering balance of xxx users, please wait” when you ran baltop

wet breach
#

it could have changed since I last remembered

#

but that would just be dumb if it did that given there can be literally thousands of files and now spending time using up File handles for this process

#

there is a limit in how many files can actually be opened at any given time 😛

young knoll
#

I guess I could just cache baltop to a single file

wet breach
#

most people don't come close to that limit. I have hit that limit before XD

#

and once you hit it, everything in the server plugin wise, tends to start crashing since they typically are not designed to handle such events XD

boreal sparrow
#

how cancel all damage except from arrows?

wet breach
#

?jd

boreal sparrow
#

yea so heres what i have:

@EventHandler
public void onPlayerDamage(EntityDamageByEntityEvent event){
if(event.getDamager() != what goes here for arrow){
event.setCancelled(true);
}
}

wet breach
#

would use instanceof

boreal sparrow
#

hmm ty

#

@EventHandler
public void onPlayerDamage(EntityDamageByEntityEvent event){
if(event.getDamager() != instanceof Arrow){
event.setCancelled(true);
}
}

#

:/

wet breach
boreal sparrow
#

o

wet breach
#

if(event.getDamager() != instanceof Arrow) needs to be if(event.getDamager() !instanceof Arrow)

#

And Arrow I don't think would be correct since its name changed I think

#

don't quite remember, should look in the javadocs

#

?jd

boreal sparrow
#

lesgo ty

young knoll
#

wait wait

#

!instanceOf is valid?

boreal sparrow
#

o

#

no

#

expression expected

young knoll
#

if (!(event.getDamager() instanceof Arrow))

boreal sparrow
#

yay ty

#

hmm

#

skeletons damage me maybe skeleton arrows are counted as seperate entities

young knoll
#

Anyone more familiar with Gson than me, can I desterilize into an existing instance of an object?

wet breach
#

like are you asking if you have to create a new Gson object everytime?

#

if so, not necessarily, but you would require multiple Gson objects if you are going to receive multiple payloads from different sources

young knoll
#

I know I can do this, Foo targetObject = new Gson().fromJson(json, Foo.class);

#

But can I deserialize into an existing instance of Foo

wet breach
#

Possibly, depends how Foo is setup

#

ideally you would want that kind of setup as that is the premise of OOP

#

wish more developers would practice object reuse

quaint mantle
#

immutable objects are cooler anyways

young knoll
#

Yeah I just made an object within my object that will be deserialized

quaint mantle
#

hello everyone, so i'm a bit new to plugins. but i was wondering why my latest essentialsx gives me errors, sometimes i get access denied for typing a command.

young knoll
tawny prawn
#

Does anyone know, why changing GENERIC_MAX_HEALTH doesn't work anymore?
CreatureSpawnEvent:

AttributeInstance attr = event.getEntity().getAttribute(Attribute.GENERIC_MAX_HEALTH);
attr.setBaseValue(3);```
wet breach
#

oh wait nvm looked at it wrong

pallid ledge
#

Does anyone know, how I use skript-variables in a plugin ?
(@me please)

tawny prawn
#

np, every forum says, that code should work

chrome beacon
#

Try setting it back

tawny prawn
chrome beacon
#

Setting in back in to the map. All though this appears to be not intended

#

So just ignore that

#

Anyways that should work. You could try delaying it until next tick

tawny prawn
#

oh you mean, because the creature isnt spawned yet, i cant change that value?

chrome beacon
#

Yeah

tawny prawn
#

but than a error should be thrown, shouldnt it?

#

but ill try

#

and still, delaying it, still shouldnt fix it, because the creature wouldnt be spawned yet still. but nevertheless, ill try

wet breach
#

I am assuming you are using an older MC version?

tawny prawn
#

nope, newest one

wet breach
#

because I am not seeing in the Javadocs for getting an Entities Attributes 🤔

#

the only thing that has getAttributes is items, entities I think require you to use metadata instead?

tawny prawn
#

well, let me phrase my question different: how do i change maxhealth of any entity if not like that xD

wet breach
#

Well the metadata api should let you do that

tawny prawn
#

ok, ill check that. thx for the help. if it still wont work, i check in again 😛

wet breach
#

Entity extends that

tawny prawn
#

what is the name of the max health of an entity. so by what key should i get/set the value?

chrome beacon
#

What you did earlier is correct

#

Entities have attributes

tawny prawn
#

so, what todo now xD every forum sais, i should do it that way. but it doesnt work. you sure delaing setting attributes will fix it? because shouldnt the entity spawn, when the event has finished?

chrome beacon
#

Event is before it has spawned

tawny prawn
#

so delaing shouldnt work, right?

chrome beacon
#

Why not?

pallid ledge
#

Hello, does anyone know, how I open my Gui's with skript-reflect, in skript?
My guis in plugin:
https://pastebin.com/gisgbFkh
https://pastebin.com/sPZ4K920

tawny prawn
#

because as you said, it isnt working because the entity isnt spawned yet, because the event hasnt finished. so delaing it by one tick just delays the event and delais the spawn of the creature. therefore the creature still isnt spawned when i change the attr. or did i get smth wrong?

chrome beacon
#

The event won't be delayed

#

You put your code in a BukkitRunnable and run it next tick

#

?scheduling

undone axleBOT
tawny prawn
#

yep, thought it would work like a sleep, buit now i see what you mean, thx

pine island
#

this works right?

proud basin
#

?tryandsee

undone axleBOT
pine island
#

it takes ages to compile

#

lol

eternal oxide
#

You should be using Attributes

chrome beacon
#

Probably 1.8

pine island
#

^^

#

also when a player relogs why are they in survival even tho i set it to spec?

proud basin
#

did you change their gamemode in the properties?

pine island
#

nope

#

also is there a good way too keep player potion effects after death?

proud basin
#

are you wanting them to join always on spec

pine island
proud basin
#

oh

spiral light
#

your doing something wrong... i can leave in spectator and when i join i am in spectator ... same for each gamemode

#

a good way to keep potion effects would be coding it ^^

waxen plinth
#

Plugins like Essentials will often force all players to a certain gamemode on join

young knoll
#

Does gson not support remembering the type of objects between serialization and deserialization

spiral light
young knoll
#

For example, Genson can store the class name with the serialized object so it can be converted back to that class

manic crane
#

someone who makes plugins and speaks Spanish and English?

opal juniper
#
Exception in thread "main" java.lang.NullPointerException
    at java.util.regex.Matcher.getTextLength(Matcher.java:1283)
    at java.util.regex.Matcher.reset(Matcher.java:309)
    at java.util.regex.Matcher.<init>(Matcher.java:229)
    at java.util.regex.Pattern.matcher(Pattern.java:1093)
    at org.spigotmc.builder.VersionInfo.hashFromUrl(VersionInfo.java:62)
    at org.spigotmc.builder.VersionInfo.getShaServerHash(VersionInfo.java:51)
    at org.spigotmc.builder.Builder.checkHash(Builder.java:731)
    at org.spigotmc.builder.Builder.main(Builder.java:400)
    at org.spigotmc.builder.Bootstrap.main(Bootstrap.java:27)

kep getting this error with bt

young knoll
spiral light
#

you cant just store an obj and its class ^^ iirc this would need some extra code

quaint mantle
maiden briar
#

In Bungee I am creating a cache of all arena's of all servers. When the plugin boots up on Bungee, I don't have any data from any Spigot server. I have to send a message to the Spigot server requesting this data (in JSON). The problem is that I can't send messages to server's without any player online. This means I can never actually initialize a server's arena cache

spiral light
#

yes

maiden briar
#

Any idea's for a fix?

spiral light
#

you can use Java Sockets ^^

maiden briar
#

How to use them?

#

And, how do I know from which server they will come?

spiral light
#

create an socket for the bungee and let all other sockets connect to this bungee-socket ... if the spigot server client connects you can set a name for it and send any other data you want

maiden briar
#

Very good idea thx

quaint mantle
maiden briar
#

What?

quaint mantle
# maiden briar What?

Us something like Redis or rabbitmq. It does the same thing, but its much easier to work with

peak gulch
#

how to convert §4 to byte like this
ItemStack item = new ItemStack(material, 1,(byte) §4);

`§4 -> red

hasty prawn
#

ChatColor.translateAlternateColorCodes('&', &4)

peak gulch
spiral light
#

what

peak gulch
#

the byte are just some numbers

quiet ice
#

that constructor should be deprecated

spiral light
#

why doyou want to convert a §4 to byte ?

#

this isnt even the place to use color codes

quiet ice
#

Because the constructor requires a byte

peak gulch
spiral light
#

what version ?

quaint mantle
#

Wtf

peak gulch
spiral light
#

you dont need that byte

quiet ice
#

Use the ItemMeta instead of the ctor

#

?jd

spiral light
#

constructor does not take the item name

hasty prawn
spiral light
hasty prawn
#

Isn't that deprecated in 1.8 also though Idek LOL

#

I've never seen that constructor

quiet ice
#

Diagnosis: skill issue

buoyant viper
#

?learnjava

undone axleBOT
quiet ice
quiet ice
#

There is literally no other way of doing it as far as I know

peak gulch
quiet ice
#

Not possible

buoyant viper
#

what

peak gulch
#
    public void initializeItems() {
        for (int i = 0; i < 26; i++) {
            if(Arrays.asList("20","22","24","44").contains("a")) return;
            createGuiItem(i,Material.STAINED_GLASS_PANE,null,14);
        }
        createGuiItem(11,Material.DIAMOND_SWORD, "§6Sprawdz", 0,"Sprawdz uztkownika");
        createGuiItem(13,Material.IRON_HELMET, "§aCzysty", 0,"Uznaj uzytkownika za czystego");
        createGuiItem(15,Material.IRON_HELMET, "§4Zbanuj", 0,"Zbanuj uzytkownika za cheaty");
        createGuiItem(26,Material.BARRIER, "§4Wyjdz",0,"Wyjdz z gui");
    }

    protected ItemStack createGuiItem(final  Integer place,Material material, String name,int byt,String... lore)```
quiet ice
#

There is no way of doing it

dense heath
quiet ice
#

Yes, via nms, but do you expect them to use that?

#

Or is there some other API

dense heath
buoyant viper
#

what the hell is the point of the line with asList

mint raft
#

My plugin linked with vault log "can't find Vault plugin" in the console
But I can't find where the problem is.
I had already installed Vault plugin 1.7.3 in my server
Here is my code:

public final class MBCT5 extends JavaPlugin {


    private static Economy econ = null;
    private static Permission perms = null;
    private static Chat chat = null;

    @Override
    public void onEnable() {
        System.out.println("running the plugin...");
        if (!setupEconomy() ) {
            System.out.println("can't find Vault plugin");
            getServer().getPluginManager().disablePlugin(this);
            return;
        }
        getCommand("balance").setExecutor(new balance());
        getCommand("turn").setExecutor(new turn());
    }
    private boolean setupEconomy() {
        if (getServer().getPluginManager().getPlugin("Vault") == null) {
            return false;
        }
        RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
        if (rsp == null) {
            return false;
        }
        econ = rsp.getProvider();
        return econ != null;
    }
    public static Economy getEconomy() {
        return econ;
    }
}

btw I checked the server to make sure the Vault is correctly working on server.

quiet ice
buoyant viper
#

?paste

undone axleBOT
hasty prawn
# dense heath No

It is. Do you check things before you go off saying people are "factually incorrect"?

quiet ice
buoyant viper
#

smh

quiet ice
#

Like, actually change it

hasty prawn
quiet ice
#

Jesus, how have you gone so far in the first place

#

Any instance of the Byte object can only store the numbers of -128 ... 127, it is quite evident that you cannot store strings with that

#

So use the method I linked to earlier (don't forget the set the meta afterwards!) and it should work

#

You only really need to change that one method, not the initializeItems one. (also, I suggest to you to always use primitives (i. e. int place instead of Integer place) wherever possible and to remove the int byt parameter)

buoyant viper
#

id still love to know what the asList line's purpose is

quiet ice
#

debugging probably

buoyant viper
#

god i hope not

#

a simple println wouldve made more sense

spiral light
#

also interesting how ppl wanne code anti cheat plugins all the time and then they dont even understand the api or how "§4" cant be a byte

lofty fern
#

Hey, So I am new here and have never made a spigot plugin in my life. A server I played shut down and open sourced their plugins. They gave the uncomplied plugin and I would like to compile it to a jar to run it. I know I sound like a noob but all help is appreciated.

buoyant viper
mint raft
quiet ice
#

You don't even have an eco plugin installed?

spiral light
quiet ice
#

yeah

#

Just use ChatColor instead tbh

hasty prawn
#

thats too much effort

#

gotta have a color() method peepoGiggles

quiet ice
#

adventure be like

lofty fern
#

Anyone able to tell me how to compile a plugin without a coding software?

buoyant viper
#

javac

quiet ice
#

coding software?

#

You mean IDE?

lofty fern
# quiet ice coding software?

I have no clue, never made a plugin. Someone open sourced a plugin I like and I need to compile it since its not compiled.

mint raft
quiet ice
#

Oh so you want to make an economy?

mint raft
#

yes .w.

hasty prawn
quiet ice
spiral light
hasty prawn
#

Otherwise you can do that sativa suggested and run javac but that's like... typing DansChamp

lofty fern
hasty prawn
#

It's version control, basically Git

grim ice
hasty prawn
#

I assume they put the code on GitHub or GitLab?

spiral light
hasty prawn
# lofty fern Yea

Yeah, so those will provide you a .git link, you copy it into IntelliJ and it downloads all the code for you to start compiling it.

lofty fern
#

Gotcha, thanks.

quiet ice
#

except if they use a strange build system

#

(such as make or something like that, but the chances are minimal)

hasty prawn
#

Yeah true if they didn't use Maven/Gradle you're gonna have to find all the depends

quiet ice
#

plain java dum, that's why you should use JAVAscript

hasty prawn
#

On GitHub is the green Code button

quiet ice
#

take the url of the repo and append .git to it

hasty prawn
#

Or do that

lofty fern
#

Found it

#

Also, anyone know why I am not getting the private message from the verification bot?

hasty prawn
#

Do you have DMs enabled

lofty fern
#

No clue

hasty prawn
#

Make sure you do

quiet ice
#

can you even disable DMs on the forums?

prime musk
hasty prawn
#

Oh I forgot it DMs you on the forums

prime musk
hasty prawn
#

Been a while since I verified 😢

lofty fern
#

My DMs are on and I don't have a message.

hasty prawn
#

On the forums?

lofty fern
#

yea

opal juniper
#

How do i get the nms version of a server?

#

i need the "15" in 1.15.2

eager hull
#

For some reason my server lags splash potions, any idea what might cause this?

#

Like when thrown it ends up landing behind the player while running

hasty prawn
# lofty fern yea

Hmm weird, I don't 100% remember what the verification process was like, maybe make sure you spelled your username right if you had to type it?

eager hull
#

Thanks

lofty fern
hasty prawn
#

Do you see a pom.xml or a build.gradle anywhere

lofty fern
#

I see a pom.xml

hasty prawn
#

On the right side is there a maven tab

opal juniper
lofty fern
#

Yes

lofty fern
hasty prawn
#

Open that and I believe it's package?

#

I never use maven so someone can correct me if I'm wrong PauseChamp

spiral light
#

yes

lofty fern
#

This is what I see

hasty prawn
#

Yeah, package

lofty fern
#

Oh, im blind

#

It says "Error running 'Show [package]': Project JDK is not specified."

hasty prawn
#

Do you have Java installed

#

And also what version is this plugin for

lofty fern
#

On my PC yes.

hasty prawn
#

MC version

lofty fern
#

1.12.2

hasty prawn
#

Thonk okay

tardy delta
#

java 8

#

you need

lofty fern
#

Dev tools or SE for java 8

tardy delta
#

go to prject structure > project > project sdk

hasty prawn
#

^

tardy delta
#

idk what dev tools is

hasty prawn
#

JDK is dev tools I assume

lofty fern
hasty prawn
#

File -> Project Structure

tardy delta
#

or yea

lofty fern
#

Found it

#

okay, so what do I choose as SDK?

hasty prawn
#

Anything that says 8 lol

#

Probably says 1.8

lofty fern
#

Im so confused on what to download. Oracle makes things so hard.

tardy delta
#

18 🤡

#

nah java 8

lofty fern
#

Where is the stupid download button on this page

hasty prawn
#

Who knows, thats Oracle for you 😄

#

Just wait until they make you login

lofty fern
#

oml

#

I hate oracle

tardy delta
lofty fern
#

I used to program.

#

Not anymore.

#

I FOUND THE BUTTON!!! 🥳

hasty prawn
lofty fern
#

You search java 8 it brings you to oracle.com you search java 8 download it brings you to javas website.

hasty prawn
#

Yeah aand Java's website isn't sketchy at all

tardy delta
#

heh do people intitialize some fields directly when declaring them instead of in constructor to minimize the object creation time?

lofty fern
#

I installed it and there is no option for a JDK by java...

hasty prawn
#

Restart IntelliJ probs

tardy delta
#

like this instead of = new in constructor

hasty prawn
#

That doesn't minimize object creation time

tardy delta
#

im just wondering

#

why they do

hasty prawn
#

Pretty sure it's effectively the same thing as just setting it in the constructor

#

It's a design preference I suppose.

#

But they're effectively the same thing.

tardy delta
#

but for some fields in the same class they do it in constructor and other ones directly

#

preference i guess

hasty prawn
#

It's the same as

private final Map<UUID, User> userMap;
public UserMap() {
  userMap = new HashMap<>();
}
#

Same thing

lofty fern
#

SDK*

tardy delta
#

there is no

#

you have to set it to your jdk path

hasty prawn
#

Are you on Windows

lofty fern
#

Yea

hasty prawn
#

C:/Program Files/Java

tardy delta
#

C:\Program Files\Java\jdk1.8.0_291\bin\java.exe like this

lofty fern
#

Says not a home directory for a JDK

#

That worked

hasty prawn
#

yeah

lofty fern
#

Wait, nvm. Path unspecified. Bruh

tardy delta
#

click on the jar?

hasty prawn
#

Try setting it to just the /bin

#

Instead of the java.exe

lofty fern
#

I don't even have that path. I have a JRE path?

hasty prawn
#

You don't have one that says jdk1.8.9_<something>

lofty fern
#

And theres not even a jdk...

hasty prawn
#

?

#

You need a JDK Dance back to Oracle!

#

You can also try using IntelliJ

lofty fern
#

oml

#

I have to go to oracle

#

for the java 8 jdk

#

but java for java 8

hasty prawn
#

Click the SDK, Add SDK -> Download JDK

tardy delta
#

what isnt he using intellij

lofty fern
#

oracle you son of a b||un||t roll

buoyant viper
#

wait i have a link for Oracle JDK8 somewhere

hasty prawn
tardy delta
#

ah uwu

buoyant viper
lofty fern
#

I NEEDED TEHE DEV KIT ALL ALONG

#

BRUH

hasty prawn
#

Yeah JDK is Java Development Kit lol

lofty fern
#

imma rage

ivory sleet
#

Yikes

hasty prawn
#

Use the link sativa sent

lofty fern
#

i did

buoyant viper
#

poggers

hasty prawn
buoyant viper
#

slowly releasing people from the false paywall that Oracle put up

lofty fern
#

and people wonder why I give up on programming java every time

buoyant viper
#

but also why not use java 16 or 17 Chad

hasty prawn
#

Plugin is developed for 1.12.2

lofty fern
#

I don't even think its going to work. I am just trying to compile it so if it does work yea

quaint mantle
#

Smh just run your 1.12.2 server on java 17

lofty fern
#

Because half of the dependencies and plugins aren't there because the private server was shut down.

#

Basically this disney theme park server shut down because their owner was caught being a pedo and they open sourced it so I am trying to bring back the server but their plugins are not my strong point so I am trying to see if they work before hiring a coder.

tardy delta
#

disney theme park yikes

lofty fern
#

yea

#

he abused his power as a certified discord server owner and a approved family friendly minecraft server.

#

And he just left without giving over ownership.

tardy delta
#

nice 🌝

lofty fern
#

And so now fans of the parks and not him are stuck with these stupid programs

hasty prawn
#

Fun..

lofty fern
tardy delta
#

you have to set your dependencies

lofty fern
#

how?

tardy delta
#

add it to your pom if youre using maven

lofty fern
#

how tho

#

k its compiling

tardy delta
#

spigot it this

<repositories>
        <repository>
            <id>spigot-repo</id>
            <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
        </repository>
    </repositories>

<dependencies>
        <dependency>
            <groupId>org.spigotmc</groupId>
            <artifactId>spigot</artifactId>
            <version>VERSION HERE</version>
            <scope>provided</scope>
        </dependency>
</dependencies>```
lofty fern
#

My brain doesn't like that.

#

okay, it compiled but everything errored

golden turret
#

how could i change how long the fishing hook can go?

tardy delta
glossy venture
#

epic line of code

ivory sleet
#

Altho I still miss the factory

spiral light
lofty fern
#

MCMagic got so big that the palace network bought them, 6 years later that event happened.

buoyant viper
#

oh

lofty fern
#

Right now I am trying to get the show plugin to work.

#

I emailed the lead coder asking if he had the repositories copied so I will see if he gets back to me.

spiral light
#

is there an repo for that project ?

lofty fern
#

wdym*

spiral light
#

github ?

lofty fern
#

The repos were on the website

#

the main one

#

and that got shut down

#

wayback machine has no archive of the web page

boreal sparrow
#

players that are dead and didnt click respawn dont get teleported with this command.
this isnt good help :/

onlinePlayer.teleport(new Location(Bukkit.getWorld("lobby2"), 0, 65, 0));

muted sand
#

Is it safe to access, but not modify the bukkit api in a thread context?

boreal sparrow
#

is there a function for this

tardy delta
# ivory sleet Altho I still miss the factory
storage = new DelegatingStorage(new MySqlStorage(ConnectionFactory.create(this, StorageType.fromString(getConfig().getString("database.type"), StorageType.H2)), new UserRepository()), getLogger());```
ivory sleet
#

Where’s factory factory?

tardy delta
#

wha-

sterile token
#

What would you recommend for a simple data bróker Websocket or Socket?

ivory sleet
#

What would you need a web socket for if it’s not for the web

tardy delta
#

i can inline the cache 🤡

ivory sleet
#

Nice

golden turret
spiral light
azure osprey
#

is there a faster way to test your code in game than closing minecraft and replacing your new jar file in the plugins folder and restarting the server again?

ivory sleet
#

Yeah

#

Unit tests

#

Or

#

Just hotswapping

azure osprey
#

what do those mean?

ivory sleet
#

First one is automated tests, so you basically code the expected behavior your code will display

#

Second one means you just swap the jar whilst the server runs

#

And the jvm will see the changes

azure osprey
#

...oh

sterile token
azure osprey
#

well that's useful

radiant onyx
#

Does someone know how to import craftbukkit 1.18.1 into your maven pom.xml using a repository?

ivory sleet
ivory sleet
#

But verano

golden turret
#

the spigot artifact

sterile token
ivory sleet
#

What would a web socket benefit you here?

spiral light
#

@golden turret the Event will not provide redunant code ... you will need to check the entitytype and then add velocity you want

golden turret
sterile token
ivory sleet
#

oh we are talking about java api abstractions over them?

#

I mean give ws a try

sterile token
#

Like I wan do a simply data broker. But sockets plan giveme to many problems, with async, Thread locking etc

ivory sleet
#

Thread locking?

sterile token
#

Yeah

ivory sleet
#

Oh synchronization is a bit of a pain yeah

#

Hence why many devs opt for sth like netty

sterile token
#

Yeah that why i get más with sockets

#

And i thought about websocket

ivory sleet
#

Idk arguably you’d need to multithread your application if it uses web sockets as well

sterile token
#

Hence its looks easy and its already used i mongo

#

Ahh allright

ivory sleet
#

But give it a try

#

Experience will tell

tardy delta
#

how should i call the database of my plugin?

ivory sleet
#

wym?

tardy delta
#

i'm out of names today

sterile token
#

I would recommend async on player join

#

That what I used for loading player data

tardy delta
#

nah the name i mean 🤡

ivory sleet
#

Call it Database?

tardy delta
#

create database Database :/

ivory sleet
#

Oh

sterile token
#

Explain more

tardy delta
#

yeahh

ivory sleet
#

That type of name

sterile token
#

I dont understand

ivory sleet
#

Idk

#

Choose what you want lol

tardy delta
#

probably py plugin name

sterile token
#

I would heavy recommend mongo

#

SQL yeat

ivory sleet
#

Believe google sheets is an option also

sterile token
#

You will have big ass pains with linking data

ivory sleet
#

Or excel whatever you call it lol

tardy delta
#

is it even possible to rename a mysql db?

ivory sleet
#

Idk

#

I don’t use mysql

sterile token
#

I used since for simple things

tardy delta
#

kekw

sterile token
#

But for networking I prefer Mongo

#

Cuz you need more flexibility for data saving

ivory sleet
#

They’re equally flexible?

#

Or have I missed sth?

sterile token
#

And i cannot lost my time with fucked data linking with ids and that yet

tardy delta
#

im using h2

#

and mysql

sterile token
#

Hence I would prefer Mongo over Mysql

tardy delta
#

i did sqlite before but i didnt like the syntax 🌝

sterile token
#

Hahaha

#

🤣

tardy delta
#

nah bigint is something different

sterile token
#

Lmao you should have seen my face

#

I used sqlite and mysql since 1 year

#

And the syntax its not so diferente

#

They use SQL so

proud basin
tardy delta
#

im looking it up atm

#

rename table causes problems i saw

sterile token
#

Wait

tardy delta
#

wait

sterile token
#

You mixed all things

tardy delta
#

wtf is this site saying

sterile token
#

You first said database renaming and now table

#

Hum

tardy delta
#

RENAME DATABASE i mean

#

blame that site

spiral light
#

i have a small server/client - socket java project

sterile token
maiden briar
#

If I use Connect via Bungeecord messaging, how long will it take before the connection is fully established so I can send the next message to the server the player has just connected to?

sterile token
sterile token
tardy delta
#

RENAME DATABASE has since been removed from all newer versions to avoid security risks. 🌝

maiden briar
#

I am trying to send a player to a server and give that server directly after the player has joined some extra information (another instance of my plugin is running there)

tardy delta
#

it says to recreate all tables lmao

visual tide
#

what security risks 😐

tardy delta
#

idk

tardy delta
#

or doing a dump 🤡

sterile token
#

Dont search for the 5 leg of dog cuz you wont find it

#

In other words if you cannot do it. You cant dont search for a solution

hasty prawn
#

Why do you need to rename it anyways

sterile token
#

I have that questions too

#

Idk why

quaint mantle
tardy delta
hasty prawn
#

Yeah, just name it right the first time LOL

#

Avoids all this

sterile token
spiral light
#

thats why sockets are better except for transfering player

maiden briar
#

I wanna send him to a lobby server, and give that lobby server directly after the player has joined some information so the lobby server can handle that

spiral light
#

what information ?

maiden briar
#

What server the player wants to join

#

And in the lobby I have my plugin handeling that

quaint mantle
#

✨ redis ✨

maiden briar
#

No messaging is fine, but I need to know what delay I need to use inbetween these messages

quaint mantle
#

racing condition

rancid snow
#

why do you guys put so much effort into databases

#

I store all my data as a stringified json object

quaint mantle
#

🤡

rancid snow
#

I call her ol’ fast & reliable

tardy delta
#

json doesnt provide joins

rancid snow
#

?? its an object just add another key

tardy delta
#

i dont think you understand the concept db table

spiral light
sterile token
rancid snow
#

I don’t think you understand the concept of efficiency

maiden briar
rancid snow
sterile token
#

That json its not designe for store data. Its only a type format

rancid snow
#

no?

tardy delta
#

and why would you use one json file for different kinds of data?

rancid snow
#

because its efficient

#

and fast

hasty prawn
#

It is until you have large amounts of data

sterile token
#

Yeah

rancid snow
#

huh? no?

sterile token
#

I would want to see you reading big objets and with not Async

hasty prawn
#

You gonna load all that data into memory?

#

Lol

sterile token
#

LmAo

rancid snow
sterile token
#

Really wrong

hasty prawn
#

I'm talking, LARGE amounts of data.

sterile token
#

Omg

hasty prawn
#

Not a 2MB file lol

rancid snow
tardy delta
#

lets load the facebook data to json lol

spiral light
hasty prawn
sterile token
#

I wont never do that. I until work with Mongo + Cache + DataObject + Async

spiral light
#

GB ? xD i would say TB at least

hasty prawn
#

Yeah, and even GBs would give the application a stroke trying to parse that much JSON KEKW

sterile token
#

Hahaha

spiral light
sterile token
spiral light
quaint mantle
#

who needs relational databases it is just overcomplicating you know

spiral light
#

hmm for example hypixel... they have a lot of data

hasty prawn
#

But yeah for the most part, you're right it doesn't really matter.

quaint mantle
#

Please start understanding irony

hasty prawn
#

Thonk I mean you're still right to an extent LOL

tardy delta
#

is there a good way to execute multiple sql statements after each other?

#

or doesnt it matter

tardy delta
#

and whas that

quaint mantle
#

google

tardy delta
#

its more like table setup so would i need a transaction?

quaint mantle
#

i think so, although, it wouldnt matter much; any changes will be rollbacked if table creation will fail

tardy delta
#

oh ok

woeful crescent
#

is there any way to run tasks less than one tick apart

quaint mantle
#

probably by using java common thread pool

sterile token
spiral light
#

first 2 points exist in some sort now

sterile token
#

I know

#

But i need something easy not just Socket and SocketServer

spiral light
#

you could adapt it to what you need tho ^^ this is like CraftSocket which needs some love to get a usefull interface like as api

sterile token
#

Like I need to do an Implement of it on a library and that library be abstract let say. So i dont need to code ecething when I need to use them

#

Like I wanna send something vía socket. I initialize client and Server side. I connect them. And them In allowed to send and receive packets (object class)

spiral light
#

it all depends on how you use it xD

sterile token
#

That its why Im trying to do since 1 month. I think I not prepared for this

#

Cuz I always get NPE exception

#

While calling send/receive

#

So i dont know if its a Connection problem with socket or my class.

spiral light
#

😄 i had some trouble while sending more then 9mio chars at the same time xD

sterile token
#

Omg I will continues drinking my Whisky and try to thought over that system

#

Since im not on home I cannot do to much. I only can think and get ideas

spiral light
#

whisky ... at the second day of week

#

i like it

sterile token
#

Whisky its a type of alchool

visual tide
#

how does the day matter 🌝

spiral light
#

well... most ppl go to school / work and its not rly normal to drink the day before doing those social system related work

visual tide
#

and if its in the evening :thonk:

spiral light
#

i would go sleep xD

azure osprey
#

does anyone know the relationship to the force of a bow and the speed of the arrow fired?

#

1.0 is the maximum force

spiral light
#

i think its a 1:1 ratio

azure osprey
#

it's not

spiral light
#

f*3.0

crisp arch
#

Im making a holograms plugin, and I would like a method that generates the entity given it's location, and hologram text, but i don't know how i would do this, since i cant do new Entity, or new ArmorStand.

azure osprey
#

oh, yeah that sounds right, thanks soccer

#

how'd you find that so quick I've been looking for half an hour

spiral light
#

IntellIJ
open random mc-project
write bow and use autocomplete to find the nms class "BowItem"
read the name "releaseUsing" and read "getPowerForTime"

then click the value.name and all other uses will show

buoyant viper
#

i think its also dependent on player speed now isnt it

#

like accelerated projectiles

#

or is that only for eggs balls and pearls

azure osprey
#

wut

#

...

#

well this puts a wrench in things

vocal cloud
spiral light
#

i cant see that

buoyant viper
#

i could just be wrong idk

spiral light
#

it depends on the player is on ground or not

spiral light
#

if not the deltamovement of the player gets added to the y-coord

vocal cloud
#

?jd

visual tide
crisp arch
vocal cloud
crisp arch
#

yea i looked this up, people said i could catch the entity with an event, but its a little janky

vocal cloud
#

What do you mean with an event?

quaint mantle
#

why-y

#

It literally returns toy the entity tho work with

vocal cloud
#

Spawn entity gives you the entity

#

For free

crisp arch
#

but doesn't it also spawn the entity in the world?

#

i would like to spawn it later

proud basin
#

Any suggestions in improving this? ```java
public static int fromRank(Rank r) {
for (Rank rank : Rank.values()) {
if (rank.equals(r)) {
return rank.points;
}
}
return 0;
}

azure osprey
#

soccer I still don't follow your description for how you found it out, I typed "bow" but all that came up was this

quaint mantle
vocal cloud
azure osprey
#

@spiral light

vocal cloud
#

Make your entities as you need them

proud basin
#

There is no point in using a map for what im doing

quaint mantle
#

Or literally just rank.points lmao

vocal cloud
azure osprey
spiral light
#

the server version which includes the nms stujff

azure osprey
#

...how do I get this server version?

proud basin
azure osprey
#

this is good stuff thanks for telling me

quaint mantle
vocal cloud
proud basin
#

How so?

quaint mantle
#

I dont understand what are you tring to do. Is rank an enum?

proud basin
#

yea

quaint mantle
#

equals then is just ==

#

its nothing but rank.points

crisp arch
#

ok, so i would like to tag the armor stand with it's id from my sqlite database, how would i change it's nbt?

vocal cloud
quaint mantle
#

use Persistent data container

#

Yes it has

vocal cloud
#

Then use that

crisp arch
#

persistent data container?

proud basin
#

I guess im just comparing an object

crisp arch
#

ok one ec let me google that

compact cape
#

CONSOLE issued server command: /give Ashenguard diamond 10
Is there a way to make this say the plugin name?

crisp arch
#

jeez the other answers in forums involved getting the craft entity, getting the nbt compound, and converting it back into a bukkit entity, how outdated was that thread lmao

vocal cloud
#

Don't use bing

crisp arch
#

i dont know what a persistent data container is

#

never heard of it

#

this is my first time messing with NBT with spigot api

vocal cloud
eternal night
#

presumably why you are supposed to google it

vocal cloud
#

Don't use NBT use PDC

azure osprey
#

what do you mean by go to the docs Mike? I've been googling and trying stuff for the past 5 minutes but this is my second day on intellij and idk what you mean by that