#help-development

1 messages ยท Page 2233 of 1

smoky oak
#

or do System.gc

#

poke your java vm to garbage collect

ivory sleet
#

well the Reference implementations as well

#

(with a ReferenceQueue)

tall dragon
#

did this not work?

smoky oak
#

copy paste a working pom from someone

tall dragon
#

well put it inside

<build>
  <plugins>
//here
  </plugins>
</build>
#

just needs to be in the plugins section

smoky oak
#

if its not in that section it complains

#

does it support absolute paths btw?

tender shard
#

yes

smoky oak
#

k

sterile token
#

Also sorry for chaging topic but the replace for Player#getItemInHand() is Player#getItemInUse() right?

smoky oak
#

isnt it just getiteminmainhand

tall dragon
#

Player#getInventory#getItemInMainHand iirc

smoky oak
#

and getiteminoffhand i think

#

getiteminuse sounds like an event thingy

tender shard
smoky oak
#

huh i was right for once

sterile token
#

Allr

#

thanks

sterile token
smoky oak
#

im aware

#

wait

#

what if you switch main and off hand in settings

#

is it bound to left right or to the actual main and off hand

tender shard
#

it's MAIN hand not right hand

sterile token
#

He?

smoky oak
#

left handed people setting

#

dunno if new minecraft still has it

tender shard
#

the main hand is always the selected hotbar slot, no matter whether that's your left or right hand

smoky oak
#

ah i see

humble tulip
#

is a system.gc call ever necessary?

ivory sleet
#

no

tall dragon
#

so.. setup the path correctly

sterile token
tall dragon
#

garbage collect

humble tulip
#

ask java nicely to garbage collect

ivory sleet
#

its basically like asking the garbage collector "please for the dearest sake of love of my god, clean up some memory for me"

humble tulip
#

java does whatever it wants

tender shard
#

you dont have to

tall dragon
ivory sleet
#

and funny thing, System.gc() is often useless in spigot/paper server envs

lost matrix
ivory sleet
#

as most servers turn it off

#

(with a jvm flag)

tender shard
smoky oak
#

the method just says 'please garbage collect' it doesnt actually force it

lost matrix
tender shard
#

or better make it 2 or 3 runnables that run it every tick

#

just to be sure

tall dragon
lost matrix
#

getters, setters. everything

ivory sleet
#

so like it will run pretty soon ish

smoky oak
#

i think this is where i leave

#

see you tomorrow

ivory sleet
#

see ya

humble tulip
ivory sleet
lost matrix
tender shard
humble tulip
#

what's the terrible-plugin

tender shard
#

it's a great plugin

humble tulip
#

github?

tender shard
#

check out my awesome motd package

humble tulip
#

import java
.lang
.reflect
.Field;

ivory sleet
#

but ye

lost matrix
ivory sleet
#

lol

humble tulip
#
    @Setter
    public static @NonNls @Nullable @NotNull Main instance;
tall dragon
#

what the frick is this

public enum Logic {
    ;

    public static final Boolean TRUE = !!!false;
    public static final Boolean UNTRUE = Double.NaN == Double.NaN;

}
tender shard
#

here's one of my awesome contributions

tender shard
tall dragon
#

lmfao

tall dragon
#

thats funny

tender shard
#

lol

lost matrix
tender shard
#

๐Ÿ˜„

tall dragon
#
        for(@NotNull int i = 0; i < 20; i++){
            System.out.println("Oops! Looks like something's gone wrong here!");
            new RuntimeException("I'm an error! Woohoo!").printStackTrace();
        }
lost matrix
#

love the random kotlin sql manager

tardy delta
#

lmao

tender shard
#

btw the source code of WildernessTP is even worse

#

and that's an actual plugin

tardy delta
#

dont dare to instantiate me

tender shard
#

but i dont find the correct repo

#

this whole plugin is just one big meme

lost matrix
tall dragon
#
    /**
     * simple method to get instance of plugin
     * @return plugin (mostly)
     * @throws Throwable when it doesnt work
     * @since today
     */
    public static Optional<Plugin> getInstance() throws Throwable {
        Optional<Plugin> emptyOptional = Optional.empty();
        SimplePluginManager plugMan = (SimplePluginManager) Bukkit.getPluginManager();
        Field f = org.bukkit.plugin.SimplePluginManager.class.getDeclaredField("plugins");
        f.setAccessible(!Logic.UNTRUE);
        List<Plugin> plugins = (List<Plugin>) f.get(plugMan);
        for (Plugin plug : plugins) {
            if (plug.getClass().getCanonicalName().equalsIgnoreCase(String.valueOf("dev.jaims.terribleplugin.Main"))) {
                instance = (Main) plug;
                return Optional.of(plug);
            }
        }
        return emptyOptional;
    }

return plugin (mostly) PogChomp PogChomp

tender shard
tardy delta
#

what are those class names

tender shard
#

"high quality code"

tardy delta
#

hehe i guess he was drunk

worldly ingot
#

lolo is obviously referring to two locations

lost matrix
#

Also one of my favourites

tender shard
#

at least he was asking for 1.13 and not 1.8

tardy delta
#

lmao

tender shard
#

ah yes, the glory hole boolean

tall dragon
tender shard
#

i also love

#

TooCool2Teleport.microwave(player)

humble tulip
#

i forgot this in my plugin

#

and just built and tested

mystic sky
#

Lmao

tardy delta
#

wheres that microwave coming from

tender shard
tardy delta
mystic sky
humble tulip
tender shard
#

get the location, set the yaw to yaw+180 (or -180), then teleport the player there

lost matrix
#

Multiply his direction by -1 and set it as his new direction

mystic sky
tall dragon
#

@tender shard * CHanged misleading constant name "FALSE" to "UNTRUE" lmfao im dead

mystic sky
humble tulip
#

I CANT STOP MY SERVER

#

had to kill it

#

with windows powershell

lost matrix
humble tulip
#

it did start laoding the db tho

tardy delta
humble tulip
#

so it does get stuff done

ivory sleet
#

lol

tardy delta
#

and then figuring out why the server is already started

#

anyways im out

#

gn

tender shard
#

gn

ivory sleet
#

sleep tight

tender shard
#

i hope you dream of slimy snails

tardy delta
#

wut

tender shard
#

i said: i hope you dream of slimy snails

humble tulip
#

gonna leave the server running and see how long it takes to enable

tardy delta
#

no u

#

๐Ÿ™‰

tender shard
#

but i dont go to sleep now

#

:_<

#

:-<

tardy delta
#

bad boy

tender shard
#

i'm good

tardy delta
#

mh bye

tender shard
#

what a perv

humble tulip
#

this cant be good for my laptop

lost matrix
#

Bet its about to lift off

tall dragon
#
private boolean isHigherNumberThanTheFirstOne(Integer uno, Integer dos){
  int number = -1;
  for(int i = 0; i < Integer.MAX_VALUE;i++){
      if (i == dos){
        number = i;
      }
  }
  return number > uno;
}

do u guys think this is a good method to find out if 1 number is higher than the other?

humble tulip
lost matrix
#

Peak performance

tall dragon
#

aight should prolly start using this then

humble tulip
#

omg its so hot

tall dragon
#

rather than >

tender shard
humble tulip
#

alright

#

i'm gonna turn it off

tall dragon
#

ohh

#

good point

lost matrix
tall dragon
#

lmfao

#

@tender shard did u rlly change every single true & false to ur enum thingy btw? ๐Ÿ˜„

carmine valley
#

are there any plugins that kill the player after they pass a border? I really dont wanna code that lol

tender shard
#

doesn't the worldborder do that automatically?

carmine valley
#

nope, an imaginary border I set

lost matrix
carmine valley
#

square

humble tulip
#

i wanna log some stuff from my plugin to a database, how should i do it. All logs of all types in one table or every type of log in diff table

carmine valley
#

and circle would be helpful down the line

humble tulip
#

dont wanna have too many tables tho

lost matrix
ivory sleet
#

since the data isnt particularly structured anyway

humble tulip
#

i'm already using sql

ivory sleet
#

thats a shame

carmine valley
ivory sleet
#

well use one table

#

think thats enough?

humble tulip
#

should i just throw strings, uuid and a timestamp in?

lost matrix
ivory sleet
#

^

#

blob table

humble tulip
#

ok

#

sounds good

lost matrix
humble tulip
#

and ig i should create a set of logs to cache them, then every 5 mins, throw them into the table?

ivory sleet
#

thats one way to do it

humble tulip
#

dont wanna have to make a db request every time

ivory sleet
#

I mean Id just have a thread pool and send the logs to the db as soon as possible and let the pool handle throughput

humble tulip
#

hm alright

humble tulip
#

i'd use a concurrent collection of some sort for that?

carmine valley
ivory sleet
#

let me open IntelliJ

humble tulip
#

i've never done something like that before

ivory sleet
#
ExecutorService pool = new ForkJoinPool(
                    1 + Runtime.getRuntime().availableProcessors() * 2,
                    ForkJoinPool.defaultForkJoinWorkerThreadFactory,
                    (t, e) -> e.printStackTrace(),
                    true //FIFO
            );


//THEN
CompletableFuture.runAsync(() -> {
  database.pushLog(log);
},executor);
ivory sleet
#

the parellelism is the throughput to some extent

#

but Id keep it 1 + 2n where n is the amount of available processors

humble tulip
#

why that num?

ivory sleet
#

well first of all the lowest available processors will go to is 1, so the lowest would be 2

#

in which you'd essentially have 2 workers at most

humble tulip
#

isnt that 1+2=3?

ivory sleet
#

this allows for some distribution, even among a single processor

#

oh wait yes

#

ugh

#

remove the 1

#

lol

tall dragon
#

mathfs!

humble tulip
#

why is that better than a single thread tho?*

ivory sleet
#

better?

#

throughput

#

you get some throughput

humble tulip
#

while one is blocked another can process?

#

makes sense

sterile token
#

How i do set a custom texture on tabs?

carmine valley
# lost matrix One moment

smth like that? cpp Block b = p.getWorld().getBlockAt(p.getLocation().subtract(0,1,0)); if(!b.getType()."Glass block")){ "player kill method"); }

#

but for all directions?

sterile token
ivory sleet
#

well minion I think we talked about this before

carmine valley
ivory sleet
#

but concurrency is measured in throughput

carmine valley
#

CHILL IT'S PSUEDO CODE

humble tulip
#

parallelism is speed?

sterile token
#

?learnjava

undone axleBOT
ivory sleet
#

yep

#

or well

#

"latency"

humble tulip
#

i rem u saying that

#

ok

tender shard
humble tulip
#

should i use an executorservice for all my database stuff then?

carmine valley
#

would that work?

ivory sleet
#

yes

#

or well "thread pools"

#

since as of now all threads are expensive

humble tulip
#

ok will switch over

ivory sleet
#

this is due to that they're platform threads

#

so ye

#

what did u use

#

/use as of now

humble tulip
#

what u think?

ivory sleet
#

Idk

humble tulip
#

bukkitrunnables

ivory sleet
#

runTaskAsync?

humble tulip
#

ye

ivory sleet
#

thats still powered by a thread pool

#

a cached thread pool, which is dangerous because it by default doesnt know when to dynamically at runtime stop the amount of threads it should create

#

so it could in theory scale to a ludicrous amount of threads

humble tulip
#

so i could switch or is it good enf?

ivory sleet
#

yeah probably wanna switch

humble tulip
#

ok

#

shouldnt be too difficult

#

ty

ivory sleet
#

no worries

ivory sleet
# humble tulip while one is blocked another can process?

but just to clarify, the parallelism is the amount of active workers the pool will try to have, more threads might be created... assuming you log stuff frequently, then having some workers active passively might be to your benefit, with this being said the thread pool might create more threads assuming some are being blocked

west scarab
#

on interact events, it doubles because of both hands. How do i make the offhand when clicking do nothing?

lost matrix
west scarab
#

what's the syntax?

#

getMainHand?

echo basalt
#

getHand == whatever

lost matrix
echo basalt
#

sql driver is included by default

#

but you can just shade it

lost matrix
#

Like you add any other dependency to your pom

lost matrix
echo basalt
#

sqlite too

#

that's unfortunate

#

uhh

#

pretty much ye

#

then you gotta add the repo

tender shard
#

that's on maven central

#

just click the maven reload button

echo basalt
#

huh

tender shard
#

and set a scope

#

<scope>compile</scope>

#

you also need the maven-shade-plugin

sterile token
#

How do i cancel combat in general?

echo basalt
#

EntityDamageByEntity

#

ffs do research before you ask

sterile token
#

Im using EntityDamageByEntityEvent

#

Yeah

carmine valley
#

hey guys, any idea why these methods are not working?```cpp
@EventHandler
private void onJoin(PlayerJoinEvent e){
e.getPlayer().setAllowFlight(true);
}

@EventHandler
private void onDeath(PlayerDeathEvent e){
    e.getEntity().setAllowFlight(true);
}

}```

sterile token
#

The problem is that intellij > than everything

#

I ask because i also need to disable the mobs damage to player and backwards. Does it affect or not?

carmine valley
#

the whole class is registered in main

sterile token
#

?paste

undone axleBOT
sterile token
#

yes

#

Because im doing diff Flags type, the Combat one only disable damage between players, the Damage one will only disable fall damage (trying to figure how to do it) and the last Mobs one which allow kiling mobs

sterile token
#

Give me some minutes

pallid forge
#

Hopefully quick question, how does the Bukkit.getScheduler() work? Everything in my command is working, but specifically the Bukkit.getScheduler() doesn't work.

    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

        if (sender instanceof Player) {

            Player player = (Player) sender;
            msg.send(sender, "&cCommand Worked!");

            Bukkit.getScheduler().runTaskLater(new main(), () -> {
                msg.send(sender, "Waited 5 Seconds");
            }, 100);
        }

        return true;
    }
}```
sterile token
#

You should use dependency injection

pallid forge
#

how do i do that?

sterile token
#

?di

undone axleBOT
pallid forge
#

alright, thanks, ill give it a look

sterile token
#

Allright have a good day

carmine valley
#

I'm sorry I don't understand

#

everything in my code works but these 2 methods

#

isn't that what this getServer().getPluginManager().registerEvents(new Misc(this), this); does?

sterile token
carmine valley
#

and I'm registering the whole class

#

these methods are part of the class

#

the whole class works fine BUT those 2 methods

sterile token
#

first of all main plugin class should be initialized only 1 time

carmine valley
#

I don't see how that's a register error

tender shard
#

add some System.out.println() and see if it prints sth when a player joins

#

do you have any other plugins installed that might set setALlowFLight to false again?

carmine valley
#

I have essintials

#

it has a /fly command

tender shard
#

that sets fly to false when players do not have the perms

carmine valley
#

how do I give everyone the perms then?

tender shard
#

try to run it on MONITOR priority

sterile token
#

Lmao why monitor debug an severe when cancelling?

tender shard
#

what?

carmine valley
#

I will just do a runTaskLater after 1 tick so it bypasses essintials initial setAllowFlight = flase

tender shard
#

i'd rather try to use MONITOR priority first

carmine valley
#

I have no idea what that is, I know about priorities I just don't know about this one

carmine valley
tender shard
#
@EventHandler(priority = EventPriority.MONITOR)
public void onJoin(PlayerJoinEvent event) { // ...
tender shard
#

whether one tick or 2000 is totally irrelevant

sterile token
#

Because sometime can take a big longer

carmine valley
#

yes I know what that is, just what the "MONITOR" does

carmine valley
tender shard
#

Essentials probably runs on HIGHEST or so. Monitor runs after highest

carmine valley
sterile token
tender shard
carmine valley
tender shard
#

No modifications to the event should be made under this priority

tender shard
carmine valley
#

LOWEST priority runs first?

tender shard
#

if you allow flight on LOWEST and Essentials disables it on HIGHEST then it won't work lol

sterile token
#

?paste

tender shard
#

yes

undone axleBOT
sterile token
tender shard
#

LOWEST -> LOW -> NORMAL - HIGH -> HIGHEST -> MONITOR

carmine valley
sterile token
tender shard
#

other way it would make no sense

sterile token
tender shard
#

HIGHEST means "it has the final say in what happens"

carmine valley
tender shard
#

so a listener on HIGHEST can override changes made on lower priorities

tender shard
#

?

carmine valley
#

I'll try that, thx

sterile token
#

Oh ok

#

MNNS

#

Shit

#

You are using an old client version

tender shard
#

what version of the jdbc are you using?

sterile token
#

Try using the last mysql-connector from Maven

#

How are you connecting?

#

Using JDBC or HikaryCP?

tender shard
#

does the server require SSL? because you disabled SSL

#

try to set useSSL to true

carmine valley
sterile token
#

Send which driver are u using

#

Like the dependency from pom

#

Allright it correct

#

I use that one

humble tulip
#

u all even put that in ur pom?

#

i thought that worked in spigot

sterile token
#

Last option your mysql server has an old version

#

Because the client its the lastest version

#

I dont know the command for checking the version

humble tulip
#
        dataSource = new HikariDataSource();
        dataSource.setJdbcUrl("jdbc:mysql://" + host + ":" + port + "/" + database);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setConnectionTestQuery("SELECT 1");
#

try use hikari

#

also try connecting to it with ur phone

#

ik there are some phone sql stuff

lost matrix
humble tulip
#

or heidisql on ur pc

#

that's in hikari

tender shard
#

don't use it. it's deprecated

humble tulip
#

HikariDataSource

carmine valley
tender shard
sterile token
#

This will returns if the 2 entities are not player and if one of them is not a player right?

carmine valley
#

yeah it's not working

#

any other ideas guys?

sterile token
#

Which api?

#

My plugins one?

#

Allright thanks

#

I dont know why i was dudeing which operator to use

lost matrix
lost matrix
tender shard
lost matrix
carmine valley
lost matrix
quaint mantle
#

working on a plugin that need chunck to be refreshed but I see that getWorld().refreshChunk is deprecated would there be a way to not use it?

quaint mantle
#

nope working on the reboot of voxel

sterile token
#

sucking a lot lmao. What do you think?ยก

#

:mad:

lost matrix
#

voxelsniper?

quaint mantle
#

yea

tender shard
#

lol "are you the custom grass guy?" that's probably how 12 year olds talk to shady people at the train station when they try to buy weed for the first time ๐Ÿ˜‚

quaint mantle
lost matrix
carmine valley
# lost matrix This is what you told us you needed. A plugin where you can define a virtual bor...

Thank you but I already made it like that: ```cpp
@EventHandler
private void hitGlass(PlayerMoveEvent e){
Player p = e.getPlayer();
p.setAllowFlight(true);
Block a = p.getWorld().getBlockAt(p.getLocation().subtract(1,0,0));
Block b = p.getWorld().getBlockAt(p.getLocation().subtract(-1,0,0));
Block c = p.getWorld().getBlockAt(p.getLocation().subtract(0,0,1));
Block d = p.getWorld().getBlockAt(p.getLocation().subtract(0,0,-1));
Block ee = p.getWorld().getBlockAt(p.getLocation().subtract(0,-1,0));
Block f = p.getWorld().getBlockAt(p.getLocation().subtract(0,1,0));
if(a.getType() == Material.GLASS || b.getType() == Material.GLASS || c.getType() == Material.GLASS || d.getType() == Material.GLASS ||ee.getType() == Material.GLASS ||f.getType() == Material.GLASS){
p.setHealth(0);

    }
}```
tender shard
#

Block a,b,c,d,ee,f??

quaint mantle
#

well ig there'S 2 fork

carmine valley
carmine valley
sterile token
carmine valley
#

sorry lol, I really appreciate it tho

sterile token
#

Hatting java

#

The var is f** d declared on top

carmine valley
#

I really just googled how to make a bomb spigot I should expect FBI at my door at any second now

tender shard
sterile token
#

Okay im dumb

lost matrix
sterile token
#

Why alex?

tender shard
#

you return in the scope where you have player defined

sterile token
#

Oh that why right?

tender shard
#

yes

sterile token
#

Allr so when im returning i can use that type of vars

#

Also, when im using returns true on command it allow me ? ๐Ÿค”

#

So its really shity the design

tender shard
#
    public static void main(Entity entity ) {
        if(entity instanceof Player player) {
            // Here you can use player
        }
        // Here you cannot
    }
sterile token
#

Look this

tender shard
#
        if(!(entity instanceof Player player)) {
            // Here you can't use it either because it's not a player
        }
sterile token
tender shard
sterile token
tender shard
#

you do instanceof Player player

#

when it's NOT a player

sterile token
#

He no?

tender shard
#

if(!(sender instanceof Player))

#

means if its NOT instanceof Player

sterile token
#

What wrong?

tender shard
#

yeah

sterile token
#

I cannot understand

lost matrix
#

Verano is a different breed. Sometimes it seems like he gets complicated topics and
other times he pumps out stuff like this or "i never used a list at all"

tender shard
#

yeah he's smoking too much weed

sterile token
#

Oh

#

maybe

#

Now that my gf moved to another city i cannot stop

#

She was helping a lot

#

I feel a sense of loss

tender shard
#

my favorite is when he said that he smoked "wheel"

sterile token
#

I was on my last

tender shard
#

yeah LMFAO

humble tulip
tender shard
#

yesterday was also funny

sterile token
#

With me you can write a book

tender shard
#

verano wanted to talk about "grilled chicken" but he kept saying "kitchen roosted" instead of "grilled chicken" haha

tender shard
#

btw verano did the police arrive after you called them?

#

i think it was yesterday? or the day before

#

๐Ÿ˜„

#

you want to detect when it becomes solid?

humble tulip
#

entitytransformblockevent or something

tender shard
#

EntityChangeBlockEvent should be called when the anvil hits the ground

#

when you spawn the entity, save it's uuid or the entity object in a list or whatever. and in the event, check if your list contains it

#

or add metadata or a pdc tag to the entity

worldly ingot
#

Set<UUID> is honestly better at that point lol. No reason to write to the PDC

#

You're then going through serialization and deserialization when you set/get it

humble tulip
#

set is better

worldly ingot
#

HashSet will be faster, yeah

tender shard
#

the entity of course

quaint mantle
#

Hallo

tender shard
#

sup

#

idk then

quaint mantle
#

why not ๐Ÿค”

#

they take about the same amount of storage

#

git uses csv lol

#

why would you need that many loops

#

you do realize SQL has to perform querys too, right?

tender shard
quaint mantle
#

i ran out of nitro

dusk flicker
#

?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.

humble tulip
#

kill the entity and cancel the event

lost matrix
#

kill the event and cancel the entity

tender shard
quaint mantle
dusk flicker
#

u put them on it kek

quaint mantle
#

i dont think i did

dusk flicker
#

i can see ur name dumbass

quaint mantle
#

GOD

#

WHAT THE FUCK

#

MY STREET JUST GOT HIT WITH LIGHNING

dusk flicker
#

told you not to fuck with me

humble tulip
tender shard
#

are you awake now?

dusk flicker
#

I will do it again

humble tulip
#

breing rude to staff

dusk flicker
#

I fucking swear I will

quaint mantle
dusk flicker
#

I am aware, I am the GOD THAT STRUCK YOUR STREET

#

YOU WILL OBEY ME

quaint mantle
#

i literally fucking felt that

#

my rooms

#

shook

dusk flicker
#

IT WILL BE CLOSER NEXT TIME

#

BE WARNED

tender shard
#

craft a lightning rod for next time and place it further away

lost matrix
lost matrix
tender shard
#

doesn't it also power creepers?

tall dragon
#

and turns pigs into pigman

tender shard
#

and humans into bodies

tall dragon
#

that too

lost matrix
#
  1. Its not MySQL
#

You can literally just dump json in it without all that schema nonsense

dusk flicker
#

advantaged really depend on your application

#

some dbs are better in certain situations, and what not

tender shard
#

mongodb has a fancy brick house

#

mysql probably lives in a dirt house

dusk flicker
#

Mongo does have a hot java lib

humble tulip
#

bro

#

do u have a phone?

#

what abt a separate pc

tender shard
humble tulip
#

sure

tender shard
#

high five! i got one too

quaint mantle
humble tulip
#

get a sql client and try to connect

#

see what it says

#

also, do you have a password set?

humble tulip
#

i have no clue

#

sigh

tender shard
#

mysql -u user -h host -p

humble tulip
#

try that^^

#

i'm holding

tender shard
# humble tulip i'm holding

I'm packed and I'm holding
I'm smiling, she's living, she's golden
She lives for me, says she lives for me
Ovation, her own motivation
She comes round and she goes down on me

#

a song about crystal meth

humble tulip
#

127.0.0.1?

tender shard
#

the host is the address of your sql server

#

if it's running on localhost then try 127.0.0.1 and localhost

humble tulip
#

what do i call a class that has a thread pool methods to runAsync

#

too short

tender shard
#

myclass

humble tulip
#

main

#

public class AsyncExecutor

tender shard
#

Queerduler

pallid forge
#

quick question, how do you grab data from a specific player on a scoreboard? If I setup ingame a scoreboard with the player "doctor" and gave it a score, how would I grab the data from that player on that objective?

humble tulip
#
    public <T> Optional<T> getAsync(what interface for here?) {
        
    }
pallid forge
#

nvm what i said, there is a whole org.bukkit.scoreboard package i didnt see lol

echo basalt
humble tulip
#

hm true

worldly ingot
#

I'm not entirely sure what your goal even is for that method anyways. Though 9 times out of 10, if you're working with a returnable value asynchronously, you want a CompletableFuture

worldly ingot
#

Alternatively, you can do a public void getAsync(Consumer<Optional<Object>>)

#

Whatever the object is

humble tulip
#

i swiched to compleatable future

worldly ingot
#

Yeah. They're just cleaner overall

dusk flicker
#

i doubt sql is the reason you cant connect

sterile token
#

Agree

#

I prefer mongo

dusk flicker
#

while I agree mongo is nice, everything has a usecase

sterile token
#

Because is for lazy people like me

humble tulip
#

let me see the access denied message?

#

i saw that before

#

access denited for root@127.0.0.1

#

oh localhost

dusk flicker
#

try 0.0.0.0

#

and public ip

sterile token
#

Hahah I just tell mongo use this class as model for saving, updating and deleting. So it pretty much looks like using Mongoose from Javascript

#

Also access denied is because the user os not configured correct

humble tulip
#

remember how u logged in before

#

well not logeed in

#

but from the consoleitself u can run sql commands?

#

GRANT ALL PRIVILEGES ON database.* TO 'root'@'localhost';

#

have u tried that^

#

then flush privileges

sterile token
#

You have to join to mysql as root. And them that first command and them flush privileges;

#

flush privileges;

dusk flicker
#

FLUSH PRIVILEGES;

sterile token
#

Camel case

humble tulip
#

maybe remove the ''

dusk flicker
#

caps best

#

lol

humble tulip
#

when using completablefutures, which should i use

#

there are so many

pallid forge
#

is it possible to run a java file from a different java file? I don't want to run the class, I just want to run the whole file. is that even possible?

dusk flicker
#

like another jar I assume

pallid forge
#

wait no, i do want to run another class lolol

changing question, how do you run a class, from a class. i think lol

#

yeah, run a class from a class

worldly ingot
humble tulip
# worldly ingot It depends on what you wanat to do
public <T> void getAsyncAcceptSync(Supplier<T> supplier, Consumer<T> toDoSync) {
    CompletableFuture.supplyAsync(supplier, pool).whenComplete((t, throwable) -> {
        if (throwable != null)
            throwable.printStackTrace();
        else
            new BukkitRunnable() {
                @Override
                public void run() {
                    toDoSync.accept(t);
                }
            }.runTask(plugin);
    });
}
#

is this fine?

pallid forge
#

after looking up what method means, yes, thats what im looking for lol

worldly ingot
#

If you're waiting for a result, thenAccept(value -> {}). Though that won't be called if an exception is raised, so if you want to handle the exception,

.whenComplete((value, e) -> {
    if (e != null) {
        e.printStackTrace();
        return;
    }

    // Operate on value
});```
#

I would remove that Consumer and just return the CompletableFuture so the caller can operate on it as they so choose

#

But all you'd have to do is thenAccept(value -> {})

humble tulip
#
    public <T> CompletableFuture<T> getAsync(Supplier<T> supplier) {
        return CompletableFuture.supplyAsync(supplier, pool);
    }
#

i also have this

worldly ingot
#

Oh okay

dusk flicker
#

probably a good time for a

#

?learnjava

undone axleBOT
pallid forge
#

ok, got it

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.

pallid forge
#

yeah, i will defenitly start cause it will probably help

#

thanks lol

wild reef
#

Hey guys, so right now I am trying to interact with this npc. The problem is that I can only interact with it on the shadow circle - which would be the space for the standing pose. The question now, how can I interact with the whole body when it's laying?

humble tulip
#

maybe a playerinteractevent?

#

just check if it's the block they're laying on

#

kinda hacky but it'll work

wild reef
#

so basically check if there is the location of an npc above the clicked block?

#

that sounds smart yep

hexed hatch
#

it's not the same as a standing player's hitbox

#

I'd recommend putting an entity in that space like an invisible armor stand to make it interactable

humble tulip
#

wdym?

#

a test server?

#

what does that mean?

#

what's wrong with jdbc?

#

that's ur mysql db

#

that's not jdbc

#

can u connect to it frm ur console?

#

using mysql -u etc

#

well then try connecting with a program frm another pc

#

if ur willing to bet it's jdbc

#

and?

#

u didnt use localhost right?

#

rip

#

uninstall and start all over lol

#

u can just use sqlite

#
    public SQLiteDatabase(File folder, String fileName) throws StartupException {
        this.folder = folder;
        this.fileName = fileName;

        if (!this.folder.isDirectory())
            this.folder.mkdirs();

        File file = new File(this.folder, this.fileName);
        try {
            if (!file.exists())
                file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
            throw new StartupException(e.getMessage());
        }
    }

    @Override
    public void setupDataSource() {
        dataSource.setJdbcUrl("jdbc:sqlite:" + folder.toPath().toAbsolutePath().resolve(fileName));
        dataSource.setDriverClassName("org.sqlite.JDBC");
        dataSource.setConnectionTestQuery("SELECT 1");
    }
#

a sqldatabase class

#

yes

#
public abstract class SQLDatabase {

    protected final HikariDataSource dataSource;

    public SQLDatabase() {
        this.dataSource = new HikariDataSource();
    }

    public abstract void setupDataSource();

    public Connection getConnection() {
        try {
            return this.dataSource.getConnection();
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }

    public boolean isConnected() {
        try (Connection connection = this.getConnection()) {
            return connection.isValid(2);
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }

    public void close() {
        if (!dataSource.isClosed())
            this.dataSource.close();
    }

    public abstract String getType();

}

golden turret
#

im trying to rotate an armor stand. It is a vehicle so im listening PacketPlayInSteerVehicle to rotate. The problem is that it rotates only a bit and stops

#

how can i fix this?:

wicked bluff
#

When I use the mojang mappings, and compile using maven, which jar do I distribute? the -remapped-obf one?

quaint mantle
#

Hi, how can I replace the specific message that player would get with NMS?

worthy yarrow
#

I'm trying to make a bounty plugin, and I want to make a gui that includes all online players heads, but I'm not sure how to define a specific players head any thought?

humble tulip
#

Like just name and version.jar

wicked bluff
#

Thank you, didn't want to distribute the wrong one.

humble tulip
#

Test and make sure it works before u do

golden turret
#

something from the packet

#

btw i fixed it

#

i used Entity#setRotation

humble tulip
#

Ah ok

summer scroll
golden turret
#

ik, i just said i fixed

#

and i was teleporting too

summer scroll
#

oh right, mb

worthy yarrow
#

I'm trying to make a bounty plugin, and I want to make a gui that includes all online players heads, but I'm not sure how to define a specific players head any thought?

ornate patio
#

how can I cancel a horse's jump

#

the setCancelled method for HorseJumpEvent is deprecated

#

I've tried giving the horse jump boost 250, but apparently that doesnt work on mobs

worldly ingot
#

Horse jumping is client-sided so you can't really cancel it anymore

ornate patio
#

yeah but i wanna know if theres some server-side trickery i can do

worldly ingot
#

I mean, if it's client-sided, probably not ;p

ornate patio
#

actually

#

lemme try forcibly teleporting the horse down

#

or is it possible to set a horse's y velocity to 0

#

ok setting it's y velocity to -2000 actually worked

crude loom
#

I'm making fireballs work in my plugin but only break blocks that were placed by a player (and are not part of the map)
I've managed to get it working the only issue is the fire the fireball does is only on the destroyed blocks
I've tried making the fire by myself by randomly putting it around the fireball but it is a bit complicated
Is there a better way to do that?

sacred mountain
#

ow

sage dragon
#

Would it take up much more space if I added some NBT to every single Block placed by a player?

I want it so I have a difference between natural and player placed blocks

sacred mountain
#

just have a list

#

and update it when they place a block

#

Hashmap<UUID, List<Location>> or something

#

save it to yaml and retrieve it on startup

#

or some other storage sstem

crude loom
#

how can I revert the velocity of an entity?

summer scroll
#

Revert?

crude loom
#

I mean if it goes at a certain speed north I want it to go the same speed but south

#

but for all directions haha

summer scroll
#

Multiply it with minus, maybe?

crude loom
#

That worked!
Thanks :D

summer scroll
#

๐Ÿ‘

sage dragon
summer scroll
hybrid spoke
sage dragon
hybrid spoke
#

that should not really make a difference

sage dragon
#

Okay

subtle folio
#

what would be the method of getting two blocks infront of the player?

summer scroll
subtle folio
#

smort

#

ty

#

smt like this? twoBlocksAway = player.getLocation().add(player.getLocation().getDirection().multiply(2));

summer scroll
#

yes yes

subtle folio
#

sweet ily

desert loom
#

is PlayerInteractEvent supposed to fire 2 separate events for the main hand?

subtle folio
#

I believe one for each hand,

desert loom
#

if I hold an item in my hand and right-click it fires 2 events for the main hand.

#

but if I right-click a block it only fires 1 for the main hand

subtle folio
#

are you talking about multiple events?

desert loom
#

2 interact events are being called when I right-click air with a potion in my hand and the getHand() returns HAND for both.

desert loom
subtle folio
#

Oh I see

#

beats me ยฏ_(ใƒ„)_/ยฏ

hybrid spoke
#

you'll have to give us something more

#

debug messages, logs, video, code whatever

#

also different scenarios would be good and what you are doing

desert tinsel
#

Hey i have an error: I have that 2 methods:

for (String strs : settings.getConfigurationSection("menu").getKeys(false)){
if (!Gui.isHead(settings.getString("menu.items."+strs+".material"))){
                        System.err.println(errorSettings+"You need to put a valid material as menu.items."+strs+".material.");
                        return false;
                    }}```
```java
public static Boolean isHead(String str){

        if (str.charAt(0) == '-' && str.charAt(1) == 'h' && str.charAt(2) == 'e' && str.charAt(3) == 'a' && str.charAt(4) == 'd'
        &&str.charAt(5) == '-'){
            return true;
        }

        return false;
    }``` and my error is `Cannot invoke "String.charAt(int)" because "str" is null` but my config is: ```yaml
menu:
  items:
    1:
      material: "-head-eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOWU0MzUyNjgwZDBiYjI5YjkxMzhhZjc4MzMwMWEzOTFiMzQwOTBjYjQ5NDFkNTJjMDg3Y2E3M2M4MDM2Y2I1MSJ9fX0="
      warp: tnt
      slot: 3``` why?
hybrid spoke
desert tinsel
#

hmm lol

#

actually I need to put: for (String strs : settings.getConfigurationSection("menu.items").getKeys(false)){

hybrid spoke
#

exactly

desert tinsel
#

thanks

agile anvil
#

Is it possible to choose the unloading order on plugins? Like, when the server stops, I first want to unload plugin b, then plugin a, ...

hushed spindle
#

after 18 hours of tedious trying i got nms to work smoothly only to find out it wasnt the solution to my issue lmao

humble tulip
#

Just depend on a plugin so u can disable before it

harsh totem
#

I used RecipeChoice.ExactChoice(item) in ShapedRecipe. the item is an arrow with custom model data and when I click on the recipe in the knowledge book it says i need a regular arrow instead of the custom one. any ideas?
this is the code RecipeChoice bundle = new RecipeChoice.ExactChoice(arrows.Bundle); Diamond = new ShapedRecipe(new NamespacedKey(plugin, "diamond"), arrows.Diamond); Diamond.shape("DDD", "DBD", "DDD"); Diamond.setIngredient('D', Material.DIAMOND_BLOCK); Diamond.setIngredient('B', bundle); Bukkit.getServer().addRecipe(Diamond);

desert loom
# hybrid spoke you'll have to give us something more
    @EventHandler
    public void onInteract(PlayerInteractEvent e) {
        System.out.println(e.getHand());
    }

this is my code and when I right-click air with a splash_potion in my hand it throws 2 interact events for the HAND hand.

#

when I right-click with a dirt block in my hand it only throws a single interact event for the HAND hand.

#

not sure why it's calling twice when holding a splash_potion maybe I'm missing something.

desert loom
harsh totem
chrome beacon
desert loom
#

is it like a bug or?

harsh totem
#

this is what i get with the knowledge book

humble tulip
chrome beacon
humble tulip
#

As little code as possible to replicate

desert loom
chrome beacon
#

Either way it's not hard to work around if needed

humble tulip
#

Print the hand, the item, the time in millis and the action

harsh totem
#

I don't understand, I have all of the needed items and its marked red

desert loom
humble tulip
#

Right and left click air

hybrid spoke
#

create a thread

humble tulip
#

How tf is that possible

hybrid spoke
#

actually i've had this issue too with a rod

humble tulip
#

What version

desert loom
#

latest 1.18.2

hybrid spoke
#

"fixed" with a list

    private boolean cancelledDuplicateRodClick(UUID uuid, Action action) {
        
        if(action == Action.RIGHT_CLICK_AIR) {
            rod_click.add(uuid);
        } else if(action == Action.LEFT_CLICK_AIR) {
            
            if(rod_click.contains(uuid)) {
                rod_click.remove(uuid);
                return true;
            }
        }
        
        return false;
    }
tender shard
#

no, you just have no idea what you're doing

harsh totem
tender shard
#

what kind of weird arrows are that

earnest forum
#

resource pack i guess

harsh totem
humble tulip
#

I was having an issue here not the same but a weird one

desert loom
#

looks like I'm able to get around it by ignoring the LEFT_CLICK_AIR action.

#

good enough for me

hybrid spoke
#

.

tender shard
#

That's normal. ExactChoice with custom data confuses the client. Has always been like that

#

because the player has two hands

humble tulip
#

For the same hand

tender shard
hybrid spoke
#

its for the same hand alex

tender shard
#

both times the same Action?

humble tulip
#

Nope diff actions

tender shard
hybrid spoke
#

depends on the case

#

the rod thing was the same action iirc nope, different

tender shard
#

btw what "rod" do you mean? fishing rod?

harsh totem
#

hmm

hybrid spoke
#

already has been reported as a bug

humble tulip
#

Instead of a list

hybrid spoke
#

wdym

humble tulip
#

Only one event can be fired at any point

tender shard
humble tulip
#

Replace the list with a boolean called rightClickingAir

hybrid spoke
#

wont work since its for multiple players

humble tulip
#

Uhh

#

It will tho?

#

Interact events are fired one by one

#

Even in the same tick

tender shard
#

ooh wait you're talking about left click and right click, yes?

#

if so that is actually intended behaviour

humble tulip
#

Ye

tender shard
#

yes

humble tulip
tender shard
#

because md5 said it can't be fixed without breaking a ton of other stuff

#

idk let me find the issue

hybrid spoke
tender shard
#

TL;DR this will not be fixed

hybrid spoke
#

sucks

#

but is there a list with all materials which cause that

humble tulip
#

Maybe right clicking air with all?

hybrid spoke
#

you can actually fire the same event twice at the same time

#

with f.e. double clicks which happen with a 0 ms delay

tender shard
hushed spindle
#

speaking of hand swing animations

#

are you guys aware of any other sources of hand swing animations i should be aware of

#

currently i got interact block, damage block, drop item, and attack

mortal hare
hushed spindle
#

no thats what i mean

#

i need to be able to distinguish between the reasons a player swings their arm

mortal hare
#

oh

#

mk

hushed spindle
#

using it for an increased attack range attribute but theres like an issue with the interact event where it doesnt work consistently so now im using a playeranimationevent listener

#

but i dont want players to perform a ranged attack when they drop an item or interact with a block and stuff like that

#

so currently i only got those 4 reasons and i just wonder if there's any more

agile anvil
#

Hey guys, I'm making a plugin and target Java 8 to make it compatible to all the users that still use older java version. Problem is I need to import a dependency in Java 17 (but not compile it inside the plugin) through Gradle.
So I get this error : Incompatible because this component declares a component compatible with Java 17 and the consumer needed a component compatible with Java 8.

Is there a way to counter this?

radiant aspen
#

I got a question,

Im using the PlayerExpChangeEvent, and it says its only called on natural exp changes, does that include using an experience bottle thingy?
Cuz im making a thing to double the amount of experience a player gained, and modifying this seems like the easiest approach, but if it includes bottle of enchanting, then that could lead to infinite xp since there are loads of plugins which can "deposit" your xp into those bottles

haughty jolt
radiant aspen
#

That would be because somethings null

#

id guess either the return of getConfig or your path is wrong

hushed spindle
#

it has like a little warning line under getConfig so are you sure main isnt null

hushed spindle
radiant aspen
#

daym that sucks

#

meh, ill deal with that later

hushed spindle
#

and to get around the infinite experience stuff you'd just have to make it configurable

#

or you could look into editing experience orbs released from experience bottles to not be counted

radiant aspen
hushed spindle
#

wack

radiant aspen
#

ok, next question, is there a method or smthn which I can call to manually grow a crop?

like

if(crop.isGrowable)crop.grow();

ik I could manually edit the age of a crop, but this doesnt take care of crops like sugarcane or cactus, and then I also have to figure out of the crop is at the correct light levels has enough water ect.

Or, is there a way to manually "tick" a block, in an attempt to speed up the crops growth?

hushed spindle
#

im sure you could but you'd have to use nms for it

glossy venture
#

i think its called Growable or smth

#

or a block state

molten hearth
#

I dont know how to say this but, I love you

#

I have quite possibly the most buggy results but it works ๐Ÿ‘

glossy venture
#

Ageable

radiant aspen
glossy venture
#

bruh

#

Bamboo block data does extend Ageable

earnest forum
#

yes but they dont have different states

#

its just 1 state since they grow into different blocks

#

is there any special blockstates for those kind of blocks

glossy venture
#

could make a util for that

earnest forum
#

maybe use a runnable to check if theyre ready to grow another block

radiant aspen
#

Hence my origional question

radiant aspen
#

Is there a way to check if a crop can be grown, and manually force it to grow

earnest forum
#

isnt like cactus and sugarcane and bamboo like random growth

radiant aspen
#

Its tied to randomtickspeed

#

I want a way to increase that

#

But only in certain locations, so i dont want to alter the global tick speex

earnest forum
#

might have to look into nms

glossy venture
#
static final EnumSet<Material> multiblock = EnumSet.of(
  Material.CACTUS,
  Material.BAMBOO,
  Material.SUGAR_CANE // idk what it called
);

public int getAge(Block block) {
  Material type = block.getType();
  if (multiblock.contains(type)) {
    // measure blocks above
    int h = 1;
    Location loc = block.getLocation();
    final Vector incr = new Vector(0, 1, 0);
    while ((loc.add(incr)).getBlock().getType() == type)
      h++;
    return h;
  } else {
    return ((Ageable)block.getBlockData()).getAge();
  }
}

public boolean setAge(Block block, int age) {
  Material type = block.getType();
  if (multiblock.contains(type)) {
    Location loc = block.getLocation();
    final Vector incr = new Vector(0, 1, 0);
    while ((loc.add(incr)).getBlock().getType() == type);
    loc.add(incr);
    Block block = loc.getBlock();
    if (block.getType() == Material.AIR)
      return false; // cant replace air
    block.setType(type);
    return true;
  } else {
    ((Ageable)block.getBlockData()).setAge(age);
    return true;
  }
}
``` @radiant aspen
#

lmao

radiant aspen
#

Yeah, its certanly possible to code it all out, but id also need to check for light levels if it has enough water ect

#

Im wanting to know if there is an official method

#

If not, then yeah id have to do it manually which is a pain

#

But thx for ur help

regal sigil
#

could someone help me out a bit?

#

I'm making a custom rank plugin for my server but i'm having some trouble with setting up the commands

agile anvil
#

Any issues? Explain what you need

regal sigil
#

not really an ISSUE but i need some help with setting up the rank set command

hybrid spoke
#

show what you have

earnest forum
#

what exactly do you need help with

hybrid spoke
#

elaborate what you need

regal sigil
#

1 sec

earnest forum
#

?ask

undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

regal sigil
#

so here's my code (its currently not that long for this class)

#

and I need someone to tell me what exactly i should write under there (where the cursor is) so i can set a player's rank with this command

earnest forum
#

put that check inside the sender instanceof Player

#

and we need some context

#

what are you using for ranks?

eternal oxide
#

move the ! instanceof up so you early return. No point in creating a Player variable if you are not going to use it

regal sigil
earnest forum
#

like luckperms or what

regal sigil
eternal oxide
#

this is also a registered CommandExecutor. You never need to check teh command unless you are registering the same executor for multiple commands

hybrid spoke
regal sigil
hybrid spoke
#

no shit sherlock

earnest forum
#

we have 0 context on how you are doing your ranks

radiant aspen
#

Looks really weird

earnest forum
#

its like giving a child a book when they haven't learnt how to read yet

sacred mountain
#

i cant read

radiant aspen
agile anvil
#

It's like asking a dev to do the work, but instead of having the dev typing the keyboard, it's him

radiant aspen
#

Lmao

eternal oxide
#

Everyone tries to eat their first book. Have to start somewhere

earnest forum
#

giving a child shakespeare when they haven't learnt how to read

sacred mountain
#

i remember trying to code a plugin in a java main method

radiant aspen
#

But yeah, what u trying todo

regal sigil
#

ight im going back to reddit + the spigot libraries, i knew i wasnt gonna get help here

hybrid spoke
#

i would more say its like giving a blind person a book full of pictures

sacred mountain
#

that was only like 5 months ago

hybrid spoke
eternal oxide
radiant aspen
#

U just came in here, said help with no context and then left

#

We dont know what u trying todo

earnest forum
#

exactly

#

show us how you're managing ranks

hybrid spoke
#

a custom rank system

agile anvil
#

@regal sigil You are clearly asking us to make the job. You should first look some tutorials on how to do a plugin. Then you can create your own. We can't help you like that, except if your request a plugin with a good description maybe someone would like to help you

eternal oxide
#

all we know is you want to set a players rank. but we have no idea what ranks you have or are trying to use

hybrid spoke
regal sigil
#

like literally

ivory sleet
#

Why not use luckperms

#

And try not to be so hostile

radiant aspen
agile anvil
#

I changed my mind, maybe no one would like to help you like that

radiant aspen
#

This is like hiring a bunch of builders and saying buold a house

#

U need an archetect to plan shit out

hybrid spoke
#

oh we are still comparing?

radiant aspen
#

What exactly do u want the command to do?

radiant aspen
agile anvil
#

If you want to make your own, just learn how to code, then it will be easy and you'll have plenty of possibilities to make it

sacred mountain
#

worldedit and smooth

#

and then cry

#

because i suck at building

hybrid spoke
#

?learnjava moment

undone axleBOT
hybrid spoke
#

?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.

eternal oxide
#

Ranks are generally taken from your Permission plugin, LuckPerms, GroupManager etc. You read the players primary group or prefix.

radiant aspen
#

But yeah, why do u even want to make ur own rank plugin, just use luckperms

eternal oxide
#

Facts ;D

radiant aspen
#

Then if for some reason u want to do custom stuff use their api

hybrid spoke
#

i think he's already gone

#

the impact was too heavy

agile anvil
#

He went back to reddit

hybrid spoke
#

anyways, how do i get the player inside my main method

radiant aspen
hybrid spoke
#

what is a method

radiant aspen
#

U need all ur code on 1 line

#

So then its more optimised

hybrid spoke
#

yeah i heard about that

eternal oxide
#

God classes are best

hybrid spoke
#

less code = faster

radiant aspen
#

So just delete all the whitespace from ur classes

#

Then its faster

agile anvil
#

Try to avoid making multiple class

eternal oxide
#

Why would you need more than one class?

radiant aspen
#

Oh, and always to remember to abide by the wet principles

#

Dont be lazy and just write smthn once

#

Gotta do multiple times

hybrid spoke
#

oh btw. we also have an permissions system in there