#help-development

1 messages · Page 1975 of 1

viral crag
#

somehow you are overriding your main path in whatever shell you are using

grim ice
#

C:\Program Files is not recognized

#

as an internal or external command

#

operable program or batch file

viral crag
young knoll
#

You’ll need quotes

#

Because of the space

grim ice
#

"C:\Program Files\Java\jdk1.8.0_291\bin\java" -jar BuildTools.jar --rev 1.16.5

#

ok

#

do i remove spigot-api and replace with spigot

young knoll
#

Yes

grim ice
#

or do i have both of them

young knoll
#

Replace

grim ice
#

ok

jolly haven
#

I am making an Spigot Plugin for Minecraft 1.18.1 and everything works just fine. But if i want to use ChatMessageType intellij cannot find it. Somebody has an idea wat i can do?

viral crag
#

import the correct library

analog hinge
#

heey trying to understand what registering an event means.
I tried to search on google but the only results I got where about "how" to register events.
I, on the other hand, would like to know what it means to register an event and what it does.

young knoll
#

It means your event handler method will be called when the event is triggered

jolly haven
viral crag
analog hinge
young knoll
#

No it listens to all of them

#

But the server needs to know where your handler method is, which is why you need to register it

analog hinge
#

ah ok

jolly haven
#

player.spigot().sendMessage(ChatMessageType.ACTION_BAR, "asd");

viral crag
#

that specific import only gives you the placement location, it does not give you the sendMessage()

jolly haven
viral crag
#

if it is not importing it, you are missing it as a resource/dependancy

jolly haven
#

Sounds logical. But where i can Download the dependency?

viral crag
#

what repositories do you have currently?

young knoll
#

It should be part of the spigot API

jolly haven
viral crag
jolly haven
#

I´ll try

granite burrow
#

What event is triggered when a player breaks a lead?

Events I tried

EntityUnleashEvent
EntityDamageByEntityEvent
PlayerUnleashEntityEvent
patent horizon
#

is there a resource somewhere about custom events?

minor garnet
#

some who use eclipse ide, know why i getting those declarations problem? that no make sense

patent horizon
minor garnet
#

but man

#

wtf

#

.src is the source code

#

my other projects dont need it

patent horizon
#

idk man

#

eclipse overall seems like a messy ide

minor garnet
#

i ill delete that f project

minor garnet
patent horizon
#

what

viral crag
#

you specified a binary and it wanted source

minor garnet
# patent horizon what

my computer is very bad, and it does not meet the minimum requirements, it causes it to crash a lot

tardy delta
#

eclipse looks like some 50 years old program

minor garnet
#

are you sure?

viral crag
#

its pretty common when using closed libraries, but that is what I recall that error meaning

young knoll
#

Looks like your src folder isn’t a source folder

viral crag
#

hmm, i thought the note on those two url was in the tutorials

worldly stream
#

i am sorry

#

Find paperspigot plugins?

#

my server is PaperSpigot

#

and I can't find the page or I don't know if it's here..

tardy delta
#

can someone explain me what paperspigot is?

quiet ice
#

it does not exist anymore

#

It used to be what we refer as to paper

#

Technically speaking if you are using that name you are referencing an age old unsupported non-spigot server jar, which creates a lot of issues

woeful crescent
#

are there any classes that are damageables but not livingentities

young knoll
#

Spigot 1.8 plugins should run on paper

patent horizon
#

would it be a good idea to hold all my lore lists for guis in a enum?

stuck flax
#

how would I repeat a block of code infinitely

visual tide
stuck flax
patent horizon
#

repeated task scheduler

#

also nobody likes gen servers

tardy delta
#

oh lol

visual tide
stuck flax
#

alr, ty

lost matrix
young knoll
#

Are boats not damagable

lost matrix
#

nope

viral crag
young knoll
#

No

#

That’s for leashing not unleashing

tender shard
#

you'll need to listen to ItemSpawnEvent if you want to get the leash that was broken

young knoll
#

We should get an event for that

tender shard
#

I always get dropped leads like this iirc

private EntityUnleashEvent lastUnleashEvent = null;

    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
    public void onUnleash(EntityUnleashEvent event) {
        lastUnleashEvent = event;
    }

    @EventHandler
    public void onLeashDrop(ItemSpawnEvent event) {
        if(lastUnleashEvent == null) return;
        Item droppedLeash = event.getEntity();
        // Do something with the leash, or cancel the spawn event, or whatever
        lastUnleashEvent = null;
    }
#

not 100% sure though, maybe I also used a List, Map, or whatever instead. but this should work I guess

tender shard
somber sequoia
#

How would I be able to get players current chunk?

tender shard
young knoll
#

getLocation.getChunk

lost matrix
#

Player#getChunk() ?

young knoll
#

Is there a shortcut like that?

lost matrix
#

Maybe its from paper...

tender shard
lost matrix
#

i see

somber sequoia
#

You are mucho helpful

viral crag
granite burrow
#

is it possible to get what is attatched to a leash hitch?

young knoll
#

isCancelled is generally set by other plugins

granite burrow
granite burrow
tender shard
#

maybe using NMS

granite burrow
#

I got it working, I just checked the area around the lead

viral crag
young knoll
#

setCancelled

granite burrow
#

Is there a way to prevent there being "phantom leads" when the mob is invisible?

fierce salmon
granite burrow
#

do you see the lead going diagonal? thats not a real lead

#

it was generated by the game, and that only happens when the mobs are invis

fierce salmon
#

you might want to kill all leads and then redo it

granite burrow
#

I've tried that, however each time I place them again they come back, only time they dont is when the mob isn't invis

fierce salmon
#

Did you try restaring your game?

tender shard
#

aren't leashes 100% client sided?

fierce salmon
#

no

#

i dont think so

tender shard
#

it makes no sense for them to exist on the server since they neither have any collisions nor other behaviour

granite burrow
viral crag
#

seems like a lot more work than retexturing chain

tender shard
#

I think there's only this packet that tells the player to which entity an entity is leashed to

#

the leash itself probably doesn't really exist anywhere on the server. after all, what would it be? there's no EntityType.LEASH or similar

fierce salmon
#

I can see the leash texture when my friends have them connected to animals

tender shard
#

of course you can. because the server sent you a packet "your friend vladimir is attached to sheep # 1337"

tender shard
#

the leash hitch

#

not the leash

#

the leash does not exist

chrome beacon
#

Oh you mean the line only

tender shard
#

the leash hitch is the "knot" on a fence

#

yes they are talking about the "line" I guess

chrome beacon
#

Yeah that makes sense

viral crag
#

leash is a legacy material -> BlockData

brave sparrow
#

Yeah the line is client side

chrome beacon
#

Make sure you're not using Optifine or anything like it

tender shard
#

which is now called LEAD

chrome beacon
#

Optifine loves to break stuff

tender shard
#

tbh leads are broken even in vanilla

#

ever leashed an animal, came back 2 days later and the lead was "gone", but when you killed the animal, it dropped the lead?

young knoll
#

No

tender shard
#

well it happened to me all the time

young knoll
#

But I don’t really use leads for more than transport

tender shard
#

but maybe that was because I was always sing optifine

sterile token
#

Is posible to have a protected constructor and public on a final class?

#

Sorry for the noob question

quaint mantle
#

protected? Why

tender shard
#

why should that not be possible

sterile token
quaint mantle
#

on final class, it is, eh, pointless

lost matrix
#

But other than that its really weird

sterile token
#

and final because i dont want people to create implementations

quaint mantle
young knoll
#

I always forget you can do that

sterile token
young knoll
#

Leave stuff with no access modifier

lost matrix
sterile token
chrome beacon
#

Leaving things without access modifiers always feels so wrong

young knoll
#

^

tender shard
#

why not just make it protected

quaint mantle
#

Pointless symbols

tender shard
#
public class Test {

    private final String name;

    protected Test(String name) {
        this.name=name;
    }

    public TestBuilder builder() {
        return new TestBuilder();
    }

    public static class TestBuilder {
        private String name;

        public TestBuilder setName(String name) {
            this.name = name;
            return this;
        }

        public Test build() {
            return new Test(name);
        }
    }
}

Works fine although it's ugly

lost matrix
tender shard
sterile token
tender shard
#

but since the class is final anyway, it doesn't matter

sterile token
#

Because final will make not implementable right?

#

Ahh thanks for recomdations

tender shard
patent horizon
#

how can i enumerate this kind of for loop? for (UUID uuid : cInter.coinflipWagers.keySet()) {

young knoll
#

What do you mean

patent horizon
#

in python there's a function called enumerate that lets you loop through a list of values while also having a variable that keeps the index of the loop

young knoll
#

Ah

#

I think you gotta do that yourself

sterile token
#

Isnt That ?

patent horizon
#

variable instance of a hashmap

tender shard
#

a HashMap doesn't have any "index"

patent horizon
#

it keeps (Player making a wager's uuid, wager amount)

tender shard
#

it only has a key <> pair

lost matrix
tender shard
#

and for that, you want to loop over the EntrySet, not the keyset

patent horizon
tender shard
#

loop over the entryset

tender shard
# patent horizon that's exactly my point
        HashMap<String,Integer> map = new HashMap<>();
        for(Map.Entry<String,Integer> entry : map.entrySet()) {
            String name = entry.getKey();
            int value = entry.getValue();
        }
#

this is what you mean right?

lost matrix
#
  Map<String, String> someData = new HashMap<>();

  public void mapForEach() {
    someData.forEach((key, value) -> {

    });
  }

  public void entryForEach() {
    someData.entrySet().forEach(entry -> {
      String key = entry.getKey();
      String value = entry.getValue();
    });
  }
patent horizon
#

no yall

subtle vector
#

Quick question when you make a explosion using .createExplosion() is that explosion an entity?

young knoll
#

No

patent horizon
#

i just wanna show a counter

young knoll
#

Explosions are not an entity

tender shard
subtle vector
tender shard
#

because as said, a hashmap doesn't have any order like "give me the 2nd element"

tender shard
young knoll
#

They are a point in space that goes boom

lost matrix
sterile token
quaint mantle
#

We know right

tender shard
#

he wants to do this:

        int currentIndex = 0;
        for(Map.Entry<String,Integer> entry : map.entrySet()) {
            currentIndex++;
            System.out.println(currentIndex);
        }
young knoll
#

I know left

tardy delta
#

map.entrySet().forEach kekw

tender shard
#

few months ago people were always like "why don't you just use normal for loops instead of lambdas / function stuff bla bla" and now everyone's doing the opposite lol

subtle vector
#

how do I tell if an Entity was damaged by an explosion from .createExplosion()

tardy delta
#

few months ago oh

tender shard
#

anyway if someone doesn't know how to implement a counter, they probably should not be recommended to use lambdas

#

they won't understand what they are I guess

lost matrix
#

lamdas would be tricky here as you cant just increment an integer from outside the lambdas scope.

#

You would need an AtomicInteger for that

sterile token
#

I have another question, i have a custom item object (save name, colored name and itemstack), a repository manager (which save each custom object). I want to know how i check if exists an object from name that its return on an event. Because my system its broken caused using item name with colors

lost matrix
quaint mantle
tender shard
#

just check for Block_Explosion or Entity_Explosion in the entitydamageevent?

sterile token
quaint mantle
#

Use pdc instead

sterile token
#

Pdc doesnt exists on my version

young knoll
#

L

lost matrix
young knoll
#

Use an NBT API or whatever

quaint mantle
#

L

tender shard
sterile token
lost matrix
#

idk

young knoll
#

You would have to save the location of the explosion and then listen for damage events nearby

sterile token
#

NBT its to sign items right?

tender shard
young knoll
#

1.8

#

Obviously

lost matrix
#

oof

tender shard
#

could also be 1.14.0 lol

young knoll
#

Who the heck runs 1.14.0

sterile token
quaint mantle
tender shard
young knoll
quaint mantle
#

Download minecraft PE 0.13.0, 1.14.0, 0.15.0, 0.16.0

sterile token
#

Why the heck you can download minecraft PE that would design for cellphone on pc?

sterile token
#

And there you will find all the documentation

tender shard
young knoll
#

I can’t tell if joke or not

#

🤔

lost matrix
#

lul

quaint mantle
#

bruh

twin sapphire
#

Uh hey alex 😄

tender shard
#

"Basic" okay, basic skills
but then
"Basic, Javascript"
ugh

young knoll
#

Basic JavaScript skills

#

I guess

tender shard
#

I know, it's so weirdly worded lol

tender shard
sterile token
#

Its something called

#

SPANISH

#

😡

#

I say it everytime, everywhere

quaint mantle
#

all i want to know is how to add an object variable to an arraylist<Class> (class = a class i made, not java.lang.class) without casting

tender shard
twin sapphire
#

Could anyone please look for Tag.SIGNS in 1.18.1 spigot api? i just have access to some tags, many are missing for me

young knoll
#

You can also do ? Extends your class

tender shard
#

that's the whole point of inheritance, objects, generics etc

tender shard
quaint mantle
tender shard
#

he was casting ArrayLists to Menu (custom class), casting ItemStacks to Player, etc

ancient jackal
lost matrix
tender shard
young knoll
#

You can’t even implement arraylist

#

It’s a class

tender shard
undone axleBOT
ancient jackal
#

oh, I see

quaint mantle
twin sapphire
#

thats my problem

#

i dont have more

tender shard
sterile token
#

Isnt possible to have something like this??

public abstract class MyClass {
  
  public abstract List<String> getList();

  public abstract List<String> getList() default Lists.emptyList();
}
quaint mantle
#

and i will keep doing it

tender shard
tender shard
young knoll
#

Looks like it

tender shard
#

have a nice day and go ask on some other discord if you don'T want help

lost matrix
static finch
#

Hello !
i'm new to plugin developpement and i'm trying to implement an API
on my bungeecord 1.18.1 plugin

https://www.spigotmc.org/wiki/minecord-wiki-api/
that is the documentation

i can't get the Player object and Member Object that the link function require i'm in the onConnect Listener

and i can't do the getServer()

thanks !

tender shard
young knoll
#

That’s the spiny thing

lost matrix
young knoll
#

That touch road

sterile token
quaint mantle
#

here let me show u

lost matrix
#

But you can only cast it safely if you checked its type with instanceof first

undone axleBOT
tender shard
quaint mantle
young knoll
#

Are you telling me itemstacks aren’t players

sterile token
#

Wait ItemStacks != Player

tender shard
#

^

quaint mantle
lost matrix
twin sapphire
sterile token
tender shard
young knoll
#

Yes

sterile token
#

But its still an abstract class

#

Doesnt matter

young knoll
#

Abstract classes can have non abstract methods

lost matrix
sterile token
#

Thanks

tender shard
quaint mantle
tender shard
# sterile token OH, holy sh**
public abstract class Test {

    public List<String> getList() {
        return new ArrayList<>();
    }
    
    public class SubTest extends Test {
        @Override
        public List<String> getList() {
            return someOtherList;
        }
    }
}
#

this is what you want to do, right?

lost matrix
tender shard
lost matrix
#

Ah i see.

tender shard
#

oh wait, that's not the class where they are casting the list to menu though

quaint mantle
tender shard
sterile token
quaint mantle
#

easy

lost matrix
tender shard
#

easy

lost matrix
#

Not easy

young knoll
#

Ez clap

tender shard
#

the dude is obviously trolling and even said they will keep ignoring all the "learn basic java" suggestions lol

#

all they want is someone to fix their class without understanding how java even works

quaint mantle
lost matrix
#

Gets class cast exception -> Simply extends the class and so he can cast anyways

tender shard
young knoll
#

Why can’t we just cast everything

#

Stupid strong typing

quaint mantle
lost matrix
ancient jackal
#

god I'm just gonna cast my String to an int

quaint mantle
tender shard
sterile token
tender shard
young knoll
#

That best way to declare an int

ancient jackal
buoyant viper
#

what if i want to cast "ur mom" to an integer? oh woops.... integer overflow exception....

young knoll
#

That’s not even a real exception

#

You suck

buoyant viper
#

shut the up

sterile token
#

For casting string that contains int, i use that
String -> int

lost matrix
# quaint mantle onEnable
Object obj = config.getList("Menus", menus);
MagnificentMenus.menus = new ArrayList<>(Arrays.asList(obj);

should be

List<Menu> loadedMenus = (List<Menu>) config.getList("Menus", menus);
MagnificentMenus.menus.addAll(loadedMenus);
quaint mantle
ancient jackal
sterile token
tender shard
sterile token
young knoll
#

getList isn’t a section

quaint mantle
young knoll
#

you can even pass a type to getList to skip the cast

tender shard
young knoll
#

Ah

lost matrix
young knoll
#

ConfigurationSerializable*

lost matrix
#

^ yes that one

tender shard
lost matrix
#

Havent used it in a while

#

2012 was that threat written...

tender shard
#

and now they want to magically cast a configurationsection to a List<Menu>

lost matrix
#

🤷

#

Maybe they can do some bytecode manipulation and let ConfigurationSection extend ArrayList<Menu>
then casting will work

tender shard
#

that's a good idea!

young knoll
#

It’s the material enum all over again

ancient jackal
quaint mantle
glossy venture
#

it triggers me too

tender shard
#

btw what is the thread even about? "With the new ability to rename items" I am pretty sure anvils were added before 2012

tender shard
tender shard
#

because you have no idea what you are doing and don't want to learn java at all

tender shard
glossy venture
#

dude, if you want to make it in software engineering, i recommend actually taking the initiative to learn shit instead of going to the first discord server you find to ask for help on 'boilerplate' issues. theres plenty of resources online

quaint mantle
glossy venture
#

you clearly dont know java very well

#

or i misunderstood

quaint mantle
#

since it has taken so long

glossy venture
#

alright but its still good practice

#

actually learning stuff

quaint mantle
#

i only do that if i enjoy what i am doing

#

i dont enjoy java

#

in fact i hate it

#

i just want this plugin done and out of my life

glossy venture
#

then dont come here asking us for help on common issues for like 3 hours

young knoll
#

Just pay someone for it then

quaint mantle
#

its called a question for a reason

glossy venture
#

thats true

tender shard
#

did you read the channel's topic though?

glossy venture
#

but would you like to be ignored

tender shard
ancient jackal
quaint mantle
glossy venture
#

anyways good luck with your plugin ima go sleep

tender shard
#

don't wanna learn java and spigot = not "serious" development

hexed hatch
#

Help I want to do the thing without actually doing the thing

young knoll
#

Me too

ancient jackal
#

Me three

analog hinge
#

I can't find the fortune enchantment in the Enchantment enum

meta.addEnchant(Enchantment.FORTUNE, 100); // something like this

I'm guessing it's under a different name??

young knoll
#

LOOT_BONUS_BLOCKS iirc

tender shard
#

yes

young knoll
#

Or you can use the namespaced key and getByKey

analog hinge
#

oh ty :)

analog hinge
#

dude I could see the list of enchantment... just didn't know which one it was and there's a lot of them

#

it's quicker just to ask here

fossil lily
#

Anyone know why this might not be working? Im not getting any errors when I click it, but nothing happens.

#

GUI Creator

tender shard
#

does the title equals "Tools"?

#

Tools != Tools!

fossil lily
#

oh god

#

i made a typo

#

thanks for your help

tender shard
#

np

fossil lily
#

ive been staring at it for the past 20 mins lol

tender shard
#

next time just print debug information after every if, then you see where it stops executing

fossil lily
#

good idea

storm crescent
#

How would you update a player in the DedicatedPlayerList?

young knoll
#

Probably a bunch of reflection

tender shard
storm crescent
#

I tried looking in the source code and I cant exactly seem to find where they add the data

river root
#

Check if a player is clicking on a far player

storm crescent
#

I updated the uuid field in the player's Entity class so I want to update them in the player list

tender shard
#

can't you just get the PlayerList#playersByUUID field and change the UUIDs there?

#

actually I don't see any problem there

#
Field field = PlayerList.class.getDeclaredField("playersByUUID");
field.secAccessible(true);
Map<UUID, ServerPlayer> map = (cast...) field.get(yourDedicatedServerListObject);
map.put(newUuid,map.get(oldUuid));
map.remove(oldUuid);

sth like this

glossy venture
#

what is an iiod

tender shard
#

typo for uuid

glossy venture
#

oh

young knoll
#

International infested octopus donkey

glossy venture
#

oh yea

#

forgot about that one

#

every player has its own international infested octopus donkey

tender shard
#

only in mojang mappings

#

otherwise they only have "f"

young knoll
#

To pay respects

tender shard
#

what are you going to use it for though?

#

this will probably break like... everything

storm crescent
#

a character save system

#

where players can save all plugin data to different characters

glossy venture
storm crescent
#

instead of their original uuid

tender shard
#

but how are you going to load it when they join?

#

when a player joins, they'll have their original UUID so their normal stats/inv/etc get loaded

#

then when they leave, it will save their data in the "new" uuid

young knoll
#

Gotta intercept it really early

#

Like handshake early

storm crescent
young knoll
#

No idea

tender shard
#

I don't think this is a good idea at all

young knoll
#

I agree

#

But I also love crazy ideas

tender shard
#

yeah the idea is interesting 😄

glossy venture
#

how do u choose the fake uuids

#

to avoid conflicts

#

with real players

tender shard
#

but it will either break so many things, or be so complicated to do without breaking anything, that you could just instead do a character save system using API instead

storm crescent
#

I'm just too lazy to go in all of my 60 plugins and manually change their data storage tbh

young knoll
#

I mean

#

Generating a random uuid has a super low chance of conflicting

#

But it could still happen

glossy venture
#

true

#

but you do need another data storage to store the fake uuids of a player

#

then

tender shard
#

yeah but anyway I doubt you can get this working

glossy venture
#

then why not just use that to store the data itself

tender shard
#

the first time you get a player object is in PlayerJoinEvent i guess

#

and there it's already too late

storm crescent
glossy venture
#

through netty channel pipelines

tender shard
#

and you need a serverplayer to change the map

glossy venture
#

after starting handshake packet

storm crescent
glossy venture
#

you assign the uuid

tender shard
#

but then it'll will fail online mode thing

glossy venture
#

hm

#

yeah

tender shard
#

I'd rather do an API plugin that maps original UUID to changed UUID and then yeah, change all your other plugins

#

that's at least the correct way to do it 😛

young knoll
#

You’d have to have all custom plugins for that tho

steady sentinel
#

can anyone recommend a good library/tool for large scale Bukkit plugin translations?

sterile token
#

Go ahead

errant bobcat
#

hello gus i need developer

buoyant viper
#

?services

undone axleBOT
errant bobcat
#

Those who are interested contact me

sterile token
steady sentinel
#

Hypixel has pretty nice and complex localization. State of the art, I think

#

and then you have to think of a smart way to do all that without trashing the codebase too much

young knoll
#

I just reference everything as a key in the codebase

#

And then pass said key through a language system to get the output

steady sentinel
#

one of my pain points have been no compile-time checks of translations keys actually existing 😛

#

I'll probably do some generator similiar to what android does in form of R.class

young knoll
#

I just took the lazy route and return “missing translation” in that case

steady sentinel
#

yeah that's how it currently works. not a good player experience 😛

viral crag
#

If there is no matching locale you fallback to the default language

steady sentinel
young knoll
#

That’s what I do as well

#

But the default language may also be missing a translation :p

viral crag
#

Default as in the default for the plugin, not the default for the user

young knoll
#

Yeah

#

But the default for the plugin can be changed too

#

It’s probably better to have a clear error rather than it just defaulting to English

#

Might confuse the user if random English messages are appearing

viral crag
#

You ever play any translated oriental games? That is exactly what happens.

sterile token
#

Its the same with films

sterile token
#

Enums have posibility to set values?

#

Let say i have this enum and i want to be able to change the message:

public enum Test {

  Invalid_Permission("message here")
  Invalid_Argument("messaage here")
  
  private final String message;  

  Test(String message) {
    this.message = message;
  }
}
honest sentinel
#

This is my config: https://paste.md-5.net/agoyiteyal.makefile
I get the location in the config by doing this which does not work properly as I only get world and not x, y, and z. I have no errors in the console:

public Location getRegion2() {
        Location loc = new Location(Bukkit.getWorld(arenaConfiguration.getConfig().getConfigurationSection(getSelected()).getString("world")),
                arenaConfiguration.getConfig().getDouble(getSelected()+".region.loc2.x"),
                arenaConfiguration.getConfig().getDouble(getSelected()+".region.loc2.y"),
                arenaConfiguration.getConfig().getDouble(getSelected()+".region.loc2.z"));
        return loc;
    }```
Does anyone know how I may get the location?
kind hatch
#

What does your getSelected() method do?

young knoll
#

You know you can save and load a location directly

honest sentinel
#

I have multiple arenas so getSelected just gets the section for the selected arena

young knoll
#

I believe there is even a getLocation method

sterile token
honest sentinel
wet breach
#

give me a few minutes

sterile token
#

Allrigh tthanks

#

I really apreciate you frostalf you always helping 😁

wet breach
#

so you can't change the enum per-say but you can manipulate it when putting it into another string object. The link I gave you shows how I do this to allow custom permissions without knowing what those perms are

sterile token
#

So its not possible to set each value?

wet breach
#

well enums are static and final so once set they can't be changed

#

that is why in the link above, I use another string object to manipulate the enum

#

it doesn't change the enum, I just use the enum as a base and change the string for the new string object

sterile token
#

I think my explanation was really bad

ancient jackal
young knoll
#

String... is a varargs

#

You can pass any number of strings and treat them as an array in the method

ancient jackal
#

oh, does it work for any type including primitives?

#

like int...

#

or just Integer...?

young knoll
#

I believe it works with any type

ancient jackal
#

that sounds very useful, thank you haha

young knoll
#

It has to be the last parameter in a method though

ancient jackal
#

that would make sense, I wouldn't even have tried to put it anywhere else lol

warm light
#

How hasPlayedBefore() know is a player joined before?

wet breach
#

if you specify multiple enums, you can automatically have it tossed into an array

young knoll
proud forum
#

anyone know what the type of particle that comes out of a thrown exp bottle?

wet breach
#

once I have all the enums in an array, I can do validation check in the method below that in the second hasPerm()

proud forum
#

i cannot figure it out for the life of me

wet breach
proud forum
#

nope

#

the blue bubbles

young knoll
#

Those are potion swirls

kind hatch
proud forum
#

at least i think so, i haven't seen it

wet breach
stuck flax
#

If I have a config file like this:

locations:
  - loc1
  - loc2

how would I iterate through each location

wet breach
#

grab it as a list

kind hatch
#

ConfigurationSection#getKeys()

young knoll
#

Probably SPELL_INSTANT

wet breach
#

either getStringList or getList()

kind hatch
#

This was also mentioned earlier, but you can get locations directly to the config using FileConfiguration#getLocation(). If you are wanting to save locations, it's recommended to save them directly.

wet breach
#

there isn't a getLocationList() method

#

you could however use getList() which grabs the list as a generic object list

#

and then you can cast it

young knoll
#

There is a getList that takes a type

kind hatch
#

Yes, but you can always iterate over a list of configuration sections.

wet breach
#

it isn't a configuration section

#

it is a list as they showed

#

yaml defines lists with the dashes

kind hatch
#

They would need to rewrite it obviously, but I don't think you can even store locations in a list format like that unless you have something custom.

#

Hence why I suggested using the #getKeys() method from the start.

young knoll
#

Huh there isn’t a getList that takes a type

wet breach
#

you can store them in a list format, you just have to do some manipulation to get it to be a location object when you retrieve it

young knoll
#

Regardless you can just use getList and then cast it to List<Location>

wet breach
#

server tutorial as linked above, stores locations 😛

#

you can always look through there for an example

wet breach
young knoll
#

Yeah I thought there was a type that returned a generic

#

There is for non lists

wet breach
#

its does a bit of everything it seems 😛

young knoll
#

How do I implement and advanced machine learning algorithm for catching hackers

valid solstice
#

how much should EntityShootBowEvent#getForce() be if its considered "maximum charge"?

young knoll
#

Yes

wet breach
#

let me look

valid solstice
#

it returns a float

#

but i want to check if its maximum charge

young knoll
#

1.0 is max

wet breach
#

ah right a float. So if I recall, 1.0 is max

young knoll
#

The docs are your friend

valid solstice
valid solstice
#

o nvm

#

yup thanks

wet breach
#

anytime it is a float

warm light
#

and what does usercache.json do? there is a expiry date. what happen after that?

wet breach
#

well most of the time, 1.0 is usually the max

wet breach
warm light
#

oh

wet breach
#

that file caches user info from mojang servers since mojang rate limits its api use

#

most servers don't come close to the limit unless they are doing something dumb like hitting mojang server api like every second or something

warm light
#

Got it

young knoll
#

It’s 600/10 minutes

#

So 1/s

#

Each request can have 100 names

tranquil viper
#

only got this problem after I added essentials

wet breach
#

updated your pom which should hopefully resolve the issue

#

normally you don't need to exclude transitive dependencies, but sometimes they cause issues, the modification I did should force it to not include it

#

essentialsx is the dependency that depends on bstats

tranquil viper
#

thanks so much 🙂

warm light
#

How to check fox is a white fox and rabbit eye is red?

hexed hatch
ancient jackal
#

there's probably no difference but to get a stream of an array, is it generally preferred to use Arrays.stream(arr) or Stream.of(arr)

wet breach
#

better to use the first way

#

However, if you have a list, you could just do List.stream();

ancient jackal
wet breach
#

well either way would work for an array, the reason the first way is better is because it makes it clear that you are working with an array

#

where as the second way, is a generic way of just getting a stream of an object that supports streams regardless if it is an array

ivory sleet
wet breach
#

Well you can only use Arrays.stream() for primitive types and basically Stream.of() for everything else

#

downside of Stream.of() is that it requires flattening

#

also Stream.of() is a wrapper for Arrays.stream()

#

so if you are dealing with ints, doubles or longs, Arrays.Stream() is the way to go

ancient jackal
ivory sleet
#

Not really

ancient jackal
#

oh, that's flattening

ivory sleet
#

I mean Stream::of is varargic

ancient jackal
wet breach
# ancient jackal I'll have to look up what flattening is, but thank you for the info

here is an example of flattening

        // --------- Using Stream.of() ---------
  
        // to convert int array into Stream
        Stream<int[]> stream = Stream.of(arr);
  
        // ***** Flattening of Stream<int[]> into IntStream *****
  
        // flattenning Stream<int[]> into IntStream
        // using flatMapToInt()
        IntStream intStreamNew = stream.flatMapToInt(Arrays::stream);
  
        // Displaying elements in IntStream
        intStreamNew.forEach(str -> System.out.print(str + " "));
ivory sleet
#

So if you just happen to not have an array to begin with, but a set of known arguments then just use Stream::of and the primitive variants

#

DaVinki yes but Arrays::stream is not varargic

ancient jackal
#

what is varargic?

#

I probably know what it is but I've never heard of that before

ivory sleet
#

<T> Stream<T> of(T… elements)

#

The T…

ancient jackal
#

oh alright

#

whenever I have a list I just do listName.stream() and so far with arrays I've only done Array.stream(arr)

#

anytime I've used a stream was when there's already a list or array, is it common to stream without a list or array already?

wet breach
#

well I told you where you can use Arrays.stream() and that is with int[], long[], double[]. Stream.of() is generic and accepts any type

ancient jackal
#

right, I've never used Stream.of() and only plan on it when I need it to be varargic

wet breach
#

or if it doesn't fit the types for the Arrays.stream

ancient jackal
#

Yes

#

when would an array not fit the types for Arrays.stream?

wet breach
#

if it isn't an array that contains ints, longs or doubles

ancient jackal
#

I've streamed my own types before with that

wet breach
#

are you certain?

#

because it should have thrown a compile error of no suitable type

ancient jackal
#

yes I'm looking at my code right now

#

not an array of primitive types

wet breach
ancient jackal
#

you're right

ancient jackal
#

?paste

undone axleBOT
ancient jackal
#

and the output was 1000 lines of different rectangles

wet breach
ancient jackal
#

I am using rectangles java Rectangle[] rects = new Rectangle[1000]; for(int i = 0; i < rects.length; i++) rects[i] = new Rectangle();

wet breach
#

which is just an array of ints

ancient jackal
#

it's an array of type Rectangle

wet breach
#

its a 2d array that takes in ints

ancient jackal
#

well if it's thought of that way then isn't every array just an array of primitives at some point, no matter how dimensional they are?

wet breach
#

No, but rectangle literally is just a type of array just like vector is

#

so because Rectangle, like vector is an array which only takes in double or ints Arrays.stream() will work

#

try doing it with char[]

#

it should throw no suitable type at compile time if you tried with a char array

ancient jackal
#

I changed up my rectangle class to just a random bunch of values and it still works, and afaik arrays can't have multiple types within

class Rectangle {

    UUID uuid1;
    UUID uuid2;
    BigDecimal bigDec;
    Long longOfRect;
    Double doubleD;
    double smallD;

    public Rectangle() {
        Random r = new Random();
        uuid1 = new UUID(r.nextLong(0, Long.MAX_VALUE/2), r.nextLong(Long.MAX_VALUE/2+1, Long.MAX_VALUE));
        uuid2 = new UUID(r.nextLong(0, Long.MAX_VALUE/2), r.nextLong(Long.MAX_VALUE/2+1, Long.MAX_VALUE));
        bigDec = new BigDecimal(r.nextInt(Integer.MIN_VALUE, Integer.MAX_VALUE));
        longOfRect = r.nextLong();
        doubleD = r.nextDouble();
        smallD = r.nextDouble();
    }

    @Override
    public String toString() {
        return "Rectangle{" +
                "uuid1=" + uuid1 +
                ", uuid2=" + uuid2 +
                ", bigDec=" + bigDec +
                ", longOfRect=" + longOfRect +
                ", doubleD=" + doubleD +
                ", smallD=" + smallD +
                '}';
    }
}```
loud haven
#

You can definitely stream any type of array, doesn't matter what type it is...

wet breach
#

interesting seems they changed it

#

I was just looking at the javadocs

loud haven
#

It's been like that since Java 8, when streams were introduced.

wet breach
#

Well guess it don't matter anymore then

#

just use Arrays.stream for your arrays, since the generic way is for unknown types now it seems and not just a generic for things that didn't fit the array stream

wet breach
#

this is why it is handy to always look at documentation 😛

#

Even us seasoned veterans have to look at it from time to time still as its hard to keep track of everything plus a lot has changed as well XD

ancient jackal
wet breach
#

depends

#

if it doesn't fit primitives

#

then it gets reduced down to object

#

or string which is not a primitive but treated like one

#

I mean technically everything eventually gets turned into bytes though since you know ram and all lmao

ancient jackal
#

true

sterile token
#

Why use integer loops?

ivory sleet
#

Why not

ancient jackal
lost matrix
waxen plinth
#

valhalla please 😩

lost matrix
quaint mantle
waxen plinth
#

So you could do List<int>

#

Which is fucking huge for performance

#

Primitive boxing has so much overhead

worldly ingot
#

PES_Think I mean... yeah. Anybody worth anything is probably going to want to get paid lol

#

Unless you intend on distributing free, open source plugins, or you share a mutual goal of completing some project, you're probably going to have to pay someone to devote time to working on something with you

#

Partner doing what?

lost matrix
#

For me it was a friend that i learned java together with and shared my passion.
Its hard to get some random person to develop without either a shared vision or compensation.
But you can always search for some motivated unexperienced devs and grow together with them.
Ive seen this countless times where newer devs just come because they want to program something

wet breach
#

🤔

#

unfortunately I don't deal with LLC's in this fashion since they are not designed for private investing

#

you are talking about a % of the LLC which is basically an investment/investor. LLC's are not designed for this and require a lot of documents to get this right

#

S Corps are more better for this

#

I clearly have

#

S corps are generally private corporations that have shares already

#

just because it has shares does not mean those shares are public

waxen plinth
#

don't ask people to effectively do free labor for you

wet breach
#

and I have an S corp

waxen plinth
#

if you're so successful then fucking pay people lol

wet breach
#

doesn't make you special

waxen plinth
#

clearly I'm dumb

#

"hey I had a really good idea for an app. I don't know how to code but if you code it for me we can split the profits 50/50"

#

🤡 🤡

#

You can throw around that word all you want

#

The bottom line is that you are effectively asking people to do free labor for you

wet breach
#

If you decided to sell your share of the LLC there is jack the other person could do. Where as with an S corp if you wanted to sell your majority share, you actually first must offer to others that have shares first

#

I am not dumb

waxen plinth
#

Yes, you're giving them the prospect of making money down the road

#

But nobody's willing to work for that

#

People need money

wet breach
#

My step mom has a Doctorates in business so I am set 🙂

waxen plinth
#

Potential future gains don't put food on the table, dude

#

Can you just shut up already

wet breach
#

LLC's can't have stocks

waxen plinth
#

Nobody wants to work with you because you're not offering to pay them, it's that simple

#

This isn't the place to ask for it either

#

Go bug people elsewhere thanks

#

man said thesaurus lmao

#

you would

#

you keep saying that

#

but also

#

this is a channel for DEVELOPMENT help

#

like

wet breach
#

All I am saying is I don't deal with LLC's in that fashion because I rather not deal with the headache with what you are proposing or offering because I already know what it entails later down the road. Whether or not you want to get upset with that is on you, I don't care. Doesn't change the fact that what I have stated is true.

waxen plinth
#

asking questions about CODE

#

so

#

shut up and leave

wet breach
#

it is easy to create an LLC

#

not that hard

waxen plinth
#

@worldly ingot please I am begging you to get this clown outta the dev help channel

wet breach
#

because the state said so

waxen plinth
#

I bet this guy does crypto

wet breach
#

you file with the state pay your fees and voila you have an LLC. Setting up an S corp can not be done by yourself fyi where as LLC's can

#

LLC's can't own stocks S corps can. That means LLC's don't have stocks to give out because there is none

#

also it is harder to privately invest with LLC's because of this

#

even banks don't like LLC's very much either 😛

#

31

#

continue on in how you are the only business owner in the world though 🙂

waxen plinth
#

Jesus christ dude can you just shut up

#

This is not the place for it

#

At least make a thread or something

#

This is the channel for asking for coding help

wet breach
#

Please show me the stocks your LLC can give out. How much shares does your LLC own itself?

waxen plinth
#

Not the place to argue about definitions over business words and request free labor

wet breach
#

you said I didn't know anything, and I have told you what LLC's can't have

#

private shares don't need to be listed

#

one of the advantages of an S corp

waxen plinth
#

@ancient plank 😭

wet breach
#

I am not mad o.O

#

just telling you I don't deal with LLC's in the fashion you stated and I told you why

#

if you were an S corp where you can give shares, I might consider it

#

the reason for this is if you decide to sell you would have to offer me your shares first or to everyone who has shares as well

#

LLC's if you sold off your half I couldn't do anything about it even if I was half owner

#

they are, that is why they require a lot of documentation to just have more then one owner

#

where as an S corp it is all about the shares

#

if I own 50% of the shares there is no way you could deny that I do, because you actually have to tell the state how many shares you gave out even if private 🙂

#

private shares are not public information though

waxen plinth
#

None of this matters lmao

ancient plank
#

brother its 1am

#

this isn't the place for this conversation

waxen plinth
#

No amount of throwing around business jargon is going to make people want to do free labor and this is a development channel

wet breach
#

I am aware of this. So back to my main point I am not going to consider your offer for the reasons I stated

waxen plinth
#

?services

undone axleBOT
ancient plank
#

#general or #verified and don't be calling people "stupid" or such just because they say something else

waxen plinth
#

Give up trying to get you to leave?

ancient plank
#

Move it or I'll just time people out. WinkTeehee

waxen plinth
#

Thank god lol

#

He finally went somewhere else

wet breach
#

lmao

#

getting upset because I didn't like their offer that was crazy

ivory sleet
#

nova fossil
#

Does anyone here have intimate knowledge of the temp fly plugin, or has used its API?

ivory sleet
#

Link me

#

We might be able to help even if we haven’t used the api

#

Given that the api is straightforward if that makes sense 😅

nova fossil
lost matrix
#

commit messages go brr

ivory sleet
#

🥲

lost matrix
nova fossil
#

I’m looking to have a separate temp fly counter, for flying time from another source. When the other source of temp fly is going on, the original temp fly timer is paused while the other counts down: your source of flight changes, and the current source counts down instead of the other (has priority). It doesn’t seem like the api has a good way to do this, and so I’m trying to figure out the best way to implement it, probably a fork

#

I would ask the developer, but it doesn’t look like he has a publicly listed discord anywhere

lost matrix
#

setFlightTime(UUID player, double seconds) doesnt that cut it?

#

removeFlightTime(UUID player, double seconds) or this

#

When the other source starts counting down you could just add a ton of flight time.
After its ran out you simply restore the original before you added a ton.

nova fossil
#

So how the sources of the flight time count down I want to work differently. The temp flight through the plugin should only count down when you’re flying, the plugin has a setting to handle that. But the other source, I want it to count down absolute, as in hours in real life, not while flying

#

But your solution would work, I save the flight time before, switch it to infinite while my separate timer runs, and then once it’s over I give their original time back, and keep track of any time that was added during the other source

#

Ok that’d work I think, abit hacky but that’ll do! Thanks

tranquil viper
#

wdym as an offline player

#

Bukkit#getOfflinePlayer() should work

hybrid spoke
#

how is it returning null?

#

afais getOfflinePlayer can't return null

#

what are you trying to do? @quaint mantle

#

but you do know that Bukkit#getPlayerBlaBla refers to the server?

#

just like we said

#

getPlayer just checks the onlineplayers

#

you are confusing me

#

you have an exception we can look at?

#

can you send us the exception & code context?

#

?paste full code context would be more useful instead of snippets.

undone axleBOT
hybrid spoke
#

with a CF. hopefully you wait for the result otherwise no wonder its null

#

refering to CompletableFuture<User> userFuture = userManager.loadUser(uniqueId);

#

exactly. but going async with a delayed result

chrome beacon
#

Send the entire method

#

That's not the entire method

#

?paste Also

undone axleBOT
hybrid spoke
#

the entire method

#

just like olivo said

#

and just like i did before

#

the entire code context

chrome beacon
#

If you don't want to show your code there isn't much we can do

#

Good luck figuring that out

visual tide
#

then use vault

#

perms.has

hybrid spoke
#

for what the hiding? you are literally asking for help but can't provide the full code context

visual tide
#

nah its not hard

#

you just get ur perms object then its one method

lost matrix
#

Read the api specifications of luckperms. The user is null if there is no data associated with that UUID.
You need to properly configure LuckPerms.

rotund pond
lost matrix
#
        UserManager userManager = luckPermsApi.getUserManager();
        userManager.loadUser(uuid).thenAcceptAsync(user -> {
          // Access data here
        }

But before that you should always try to access online player data first.

#

Just looked at your code. This is exactly what you are currently doing.

maiden thicket
#

me always using whencomplete and not looking into any other completablefuture methods

muted sand
#

if i can't return anything from tasks, how would I get a player's data asynchronously and work with that?
I used to use nested runTask inside of runTaskAsynchronously, but I don't wanna bother reading that 🤡

muted sand
#

oh

maiden thicket
#
public CompletableFuture<PlayerDataOrWhateverObjectYouNeed> getData(...)
{
    CompletableFuture<PlayerDataOrWhateverObjectYouNeed> future = new CompletableFuture<>();
    Bukkit.getScheduler().runTaskAsynchronously(plugin, () -> {
      future.complete(PlayerDataOrWhateverObjectYouNeed object);
    });
}```
muted sand
#

oo tyy

#

wait how do I actually return that? Missing return statement

#

return Bukkit.getScheduler()...?

quiet ice
#

What do you want to accomplish

muted sand
#

I am just trying to return my player data async

eternal oxide
#

You don't return it, you call whatever method needs it sync

muted sand
#

oh

#

then how would i work with it-

quiet ice
#

Or Work with consumers

eternal oxide
#

^

muted sand
#

alrighty then

quiet ice
#

Because otherwise you'd need to block, which has the same effect of doing it sync

muted sand
#

yea ;-;

quiet ice
#

One of the main reasons condem Futures

muted sand
#

it would block the method that called it right? and not the entire program?

#

using consumers

quiet ice
#

Nope, consumers wouldn't Block anything If used right

muted sand
#

then how would I get data if they wouldn't block the method that executed it-?

lost hound
#

I finally made my plugin

#

I had a doubt

#

This is the code of my main .java file

#

and i made another java file

west bone
#

is there any way to calculate body rotation?

sacred mountain
#

hey hwo would i cancel a repeating task outside of the method

#
public void startRandomItems() {
        Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, () -> {

        }, 0, 100);
    }

this is just the base for the repeating task

eternal oxide
#

Look at the return from scheduleSyncRepeatingTask(

sacred mountain
#
int taskID;
public void start() {
  taskID = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(..);
}
public void stop() {
 Bukkit.getServer().getScheduler().cancelTask(taskID);
}```
#

what do i put in the brackets in scheduesync repeatng task tho

#

its not working for me

eternal oxide
#

you could use a lambda, if you wanted

sacred mountain
#
public void startRandomItems() {
        new BukkitRunnable() {
            @Override
            public void run() {
                
            }
        }.runTaskTimer(plugin, 0L, 60L);
    }```
#

how would i start and stop that hwen i wanted tho

eternal oxide
#

store the task

sacred mountain
#

using an int

#

i previously did that but its not working

#
        taskID = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, this::startRandomItems, 0L, 60L);
#

?

ivory sleet
#

No clue, what’s even the issue?

#

?askgoodquestion

undone axleBOT
prisma needle
#

How to set keys with periods in them with FileConfigurations

mint mesa
#

Hey folks. im using LiteBans' API, in order to make my own history command with red stained glass. However, the API lists the history from oldest to most recent. Is there anyway I can make it go from most recent to oldest? I tried using a config file to save it all, then sort it inside the config, then delete it all again, but that didnt work out

while (rs.next()) {
                        reason = rs.getString("reason");
                        bannedByUuid = rs.getString("banned_by_uuid");
                        long time = rs.getLong("time");
                        long until = rs.getLong("until");
                        id = rs.getLong("id");
                        active = rs.getBoolean("active");

                       

                        /*
                        Date date1 = new Date(time);
                        Date date2 = new Date(until);

                        SimpleDateFormat df2 = new SimpleDateFormat("dd-MM-yyyy, HH:mm:ss");
                        bannedAt = df2.format(date1);
                        bannedUntil = df2.format(date2);




                        ItemStack banGlass = new ItemStack(Material.STAINED_GLASS_PANE, 1, (short)14);
                        ItemMeta banMeta = banGlass.getItemMeta();
                        ArrayList<String> banLore = new ArrayList<>();
                        banLore.add(ChatColor.GRAY + "Reason: " + reason);
                        // Player moderator = Bukkit.getPlayer(bannedByUuid);
                        System.out.println(bannedByUuid);
                        banLore.add(ChatColor.GRAY + "Punished at: " + bannedAt + " GMT");
                        banLore.add(ChatColor.GRAY + "Expire Date: " + bannedUntil + " GMT");

                        banMeta.setLore(banLore);
                        banGlass.setItemMeta(banMeta);


                        inv.setItem(inv.firstEmpty(), banGlass);
                        */
                    }```
glossy venture
#

But maybe you can collect them and then sort them

#

Like collect all ban info in ArrayList, sort them and then put them in the gui

mint mesa
# glossy venture Where is the api usage
CompletableFuture.runAsync(() -> {
            String uuid = String.valueOf(target.getUniqueId());
            String query = "SELECT * FROM {bans} WHERE uuid=?";
            try (PreparedStatement st = Database.get().prepareStatement(query)) {
                st.setString(1, uuid);
                try (ResultSet rs = st.executeQuery()) {
                    while (rs.next()) {```
glossy venture
#

Ah

glossy venture
#

You can make a record class with all info

#

And then sort a list of them you collected

tepid monolith
#

I'm using Lite LightSpigot and a CustomGapple plugin and I'm facing an issue.
So basically what the plugin does is, when you eat a Gapple, it cancels the PlayerConsume event and then takes 1 Gapple from your inventory then gives you the specific effects you intended earlier.
Now the issue is, the yellow hearts which were added to you because of Gapple's Absorption effects, don't show up in your hotbar! No matter what amplifier the effect is.
It was working fine on normal 1.8.8 Paper.
What do you guys think is causing the issue and how may I fix it?

visual tide
#

LightSpigot is probably causing the issue

#

:))

quaint mantle
#

1.8 L

tender shard
#

wtf is LightSpigot

#

and wtf is a Gapple

visual tide
#

golden apple

tepid monolith
grim ice
#

then reverse it

cobalt tinsel
#

halp

grim ice
#

or make an ArrayDeque

#

and loop, then add()

#

then you pollLast();

#

actually nvm dont do that

#

add it in an arraylist, then Collections.reverse(arrayList);

visual tide
tender shard
#

use spigot or paper

visual tide
#

1st and 5th bookmark go brr

tender shard
#

okay it's no surprise that lightspigot breaks everything

#

what a scam

#

lol

sacred mountain
#

i have dark mode spigot pog

tender shard
#

the builtin dark mode of spigot is still pretty ugly

tender shard
cobalt tinsel
grim ice
#

ic

tender shard
#

wdym with "initializing this"?

grim ice
#

that looks shit

tender shard
sacred mountain
#

this theme

sacred mountain
#

but its still nice

tender shard
#

definitely better than the builtin one

sacred mountain
#

yah

#

its good bc i code at night

#

most of the time

#

i get home late

tender shard
#

this ithe builtin version lmao

hardy swan
#

nooo

sacred mountain
tender shard
#

yeah well, initialize it with some value

#

I don't really understand your question

#

?

grim ice
#

@sacred mountain

#

how did u get it

quaint mantle
#

Go anx learn java

tender shard
#

you can "inizialize" a variable by using = lol