#help-development

1 messages · Page 1168 of 1

blazing ocean
#

tho afaik it's 20

#

?premium

paper viper
#

^

#

Only reason I remember is because EWG 💀

merry cove
#

Yea, idk if people did cheap releases then upped it after traction or if I should just price it where I want it

sly topaz
#

ah yeah, I always take the grandfathered world generator as reference lol

young knoll
#

It’s 20

sly topaz
young knoll
#

Don’t forget fake sales

#

Imean what

sly topaz
#

there's not much regulation on the market since there's not much of a high demand for premium plugins anyway

merry cove
#

yea, looks like some plugins are constantly on sale

young knoll
blazing ocean
#

the OP of that post is one

sly topaz
#

I'd like to assume custom resource packs are sold more than premium plugins even in those places lol

blazing ocean
#

me on my way to sell negative spaces for $20

young knoll
#

Idk

#

What’s the most sold item on bbb

paper viper
#

ChatControl? Maybe

#

Idk

#

Probably not

#

FlameCord

#

For Minecraft tho at least

young knoll
#

It’s flame cord

sly topaz
#

top 6

paper viper
#

Coming in hot second is a

#

Configuration file…

sly topaz
#

tbf configuring anticheats is hard lol

young knoll
#

Wait

sly topaz
#

MarkElf has a good reputation regarding NCP configs

young knoll
#

It says it’s the #1 BitByBit Resource

#
  • it’s #2
  • BitByBit inflatable
sly topaz
#

I assume they mean the #1 non-software resource

merry cove
#

so what would you price a basic plugin. it essentially is a locker for multiple armors. (paginated and permission per row)
it's not anything super advanced but I found it cool on a server I played on for a bit a while back and wanted to recreate it.

grand flint
#

5

sly topaz
#

300 robux, take it or leave

#

jokes aside, yeah I wouldn't pay more than 5 bucks for something like that

#

5 bucks already sounds like a expense for what would essentially be a limited backpack plugin

merry cove
#

Fair, I plan to add features like having a primary slot where you can shift right click for example to change armor.

#

that's essentially what I have in mind for now

grand flint
#

5

sly topaz
#

I'd place it at 7 just to see if people buy it as-is, then put it on sale at 5 afterwards

grand flint
#

5

merry cove
#

Yea, I plan to keep it open source too really

sly topaz
#

it has to be solid tho, otherwise reviews will kill you

grand flint
#

it needs a purpose

#

like what kind of mode is it for

#

u can also just make it open source, and paid

sly topaz
#

eh, I wouldn't make it open source

grand flint
#

why not

sly topaz
#

because it doesn't have any value outside of its code

merry cove
#

people will just decompile it and piss me off if I don't

grand flint
#

thast why u leak ur own plugins

merry cove
#

so the price is more to keep it up todate

sly topaz
#

I mean, people who leak these kind of plugins weren't going to buy them anyway

#

what you offer is support

merry cove
#

Essentially yea

#

and generally most server owner's wont have a clue on how to compile a plugin and I aint helping them

merry cove
#

the lore is just a placeholder xd

sly topaz
#

unrelated but to this day I still remember a plugin I used like once, however I always left good reviews on the updates since they listened to feedback really well

nova notch
#

genreally just dont use bold

#

especially with bright colors

sly topaz
#

at some point they made the plugin premium but they still offered me copies whenever a release was made

young knoll
#

Presumably the lore is 100% configurable

#

Right 👀

merry cove
#

everything is

#

the gui, lore, message setc.

sly topaz
#

I hate that kind of thing

#

people should be more opinionated smh

#

my way or the highway

merry cove
#

haha, the only reason I got motivated to try this out is that I posted paypal link on my free resource and got a donation the day after because I just updated a tiny feature a guy asked for which was essentially to allow them to set a model which is one line 😛

sly topaz
#

blud is already on the pipeline

merry cove
#

how do people update plugins frequently without creating bloatware?

sly topaz
#

they just create bloatware

#

there's no going back

#

jokes aside, for premium plugins, it mostly seems like they just make an abstract enough system and then offer resources separatedly

#

see Oraxen for example

#

so, instead of selling your plugin itself, you sell your highly customized configurations

nova notch
#

or u just make everything MIT license cus free is awesome

paper viper
#

plus open source

sly topaz
#

that model only really works for big plugins

slender elbow
#

just make a big plugin then

#

duh

paper viper
#

well what i usually do is start free, build up a community, and then decide from there

sly topaz
nova notch
#

does spigot pay a portion of ad revenue like modrinth does?

sly topaz
#

what ad revenue

#

does spigot have ads now

nova notch
#

idk does spigot even have ads

#

actually it probably doesnt right

sly topaz
#

I use uBlock so I couldn't tell

nova notch
#

yeah me too

merry cove
#

thanks for the feedback guys! appreciate it

nova notch
#

ok yeah i dont see any ads so there goes that idea

#

i guess they just run the website via sponsors and donations

young knoll
#

Spigot has like 1 ad

#

On the homepage if you aren’t logged in

#

Iirc

sly topaz
#

honestly amazed it's been around for this long considering its revenue model

paper viper
#

sponsorships

sly topaz
#

seeing the marketshare tipping towards paper, I would've assumed that mattered little in the grand scheme of things

#

but I guess if you buid a good infrastructure, maintaining it doesn't require a lot

#

only md could say

paper viper
#

i feel

#

cause i swear i remember going to bstats

young knoll
#

People still get plugins from spigot

paper viper
#

and seeing spigot being a lot higher in like 2020-2021

#

idk

young knoll
#

Although hangar does exist now

sly topaz
#

hangar will never rise in popularity when modrinth exists

#

it just came way too late

#

maybe that will change when hardfork becomes a thing but eh, I don't see it

paper viper
#

if they added something like paid resources

#

i think they were thinking about it too

nova notch
sly topaz
#

even for free resources?

nova notch
#

yes

sly topaz
#

that's cool

nova notch
#

i made $3 after like 3 months and 100 hours of work 🔥

sly topaz
#

it's a good way to encourage people to not use adblockers on your site

summer scroll
#

Noice

sly topaz
summer scroll
#

I think it depends on how many visitors and downloads on your resource

sly topaz
#

time to spam 1.8 performance mods on modrinth then

paper viper
#

wow its so nice seeing that curseforge no longer lags for shit

#

and tells you to wait for 5 seconds

nova notch
#

its based on how much ad revenue your mod or whatever generates

#

then you get 25%

#

so generally tied to page views

paper viper
#

my curseforge points expired 😭

#

it was 356 points

#

or like 15+ bucks

nova notch
#

your money expired??

sly topaz
#

how do curseforge points work

paper viper
paper viper
#

Lmfao

timid berry
remote swallow
#

You wanna define what t1 is or what

timid berry
#

i just wanna use it like they do in the tutorial

#

but i get an error and they dont

remote swallow
#

Read it

timid berry
#

cannot resolve symbol

remote swallow
#

Look at your code and look at theres

timid berry
#

ohhhh

timid berry
wet breach
# sly topaz how do curseforge points work

For every so many downloads you get points which can be used in their store. One of the common things done was to have your account automatically use your points to pay for premium

#

I had curse premium for like 3 years because of holoapi getting several thousand downloads lmao

young knoll
#

Shoutout to nexus mods in that regard

#

Once you get enough downloads you get infinite premium

wet breach
#

Also with curse you can split points between devs of the project. Not sure if they still do this or not

timid berry
#

chat what does all this class public static stuff mean

young knoll
#

What

sullen wedge
#

yo

timid berry
#

words like "class" public static void

hybrid spoke
shy mesa
#

even after the creator update?

nova notch
#

idk what that is

sly topaz
paper viper
#

but never like actual currency

nova notch
#

yes you can?

#

you can get it through venmo

#

or paypal

wary oyster
# hybrid spoke coming a bit late to the party, but pathetic could be of interest <https://gith...
#

This is what i came up with

#

I dont need an optimized algorithm because its supposed to feel like its meandering

#

So i essentially picked random markers to pathfind to by finding the highest blocks in the region infront of the path and biasing towards that block recursively

paper viper
nova notch
#

its at the top but ok

paper viper
#

not for me

#

its at the way bottom

#

but anyways

lavish hemlock
#

Soy un usuario que le gusta mucho la programación, quisiera ganar experiencia ayudando (gratuitamente) en servidores pequeños o en desarrollo

pliant topaz
undone axleBOT
#

For Beginners:

Codecademy - Learn Java: Interactive Java programming course from basics to more advanced concepts. Perfect for absolute beginners.
https://www.codecademy.com/learn/learn-java
JetBrains Academy - Java Developer Track: Learn by doing with projects and challenges. It covers Java fundamentals to advanced topics.
https://www.jetbrains.com/academy/
Udemy - Java Programming Masterclass for Software Developers: Updated courses that cover Java 8 to Java 17 features. Suitable for those who prefer structured learning.
https://www.udemy.com/course/java-the-complete-java-developer-course/

For Intermediate to Advanced Learners:

Oracle Java Tutorials: The official guides by Oracle for Java programming—great for understanding the depth of Java.
https://docs.oracle.com/javase/tutorial/
Baeldung - Learn Java and Spring: Focus on Spring Framework and modern Java technologies. Best for intermediate learners aiming to expand their knowledge.
https://www.baeldung.com/

Practice and Hands-on Learning:

Exercism - Java Track: Solve exercises and get feedback from mentors. Great for practicing coding skills.
https://exercism.io/tracks/java
LeetCode: Practice your coding skills and prepare for technical interviews with Java.
https://leetcode.com/

Free Resources and Documentation:

Java Programming and Documentation: A comprehensive collection of Java programming guides, tutorials, and API documentation.
https://docs.oracle.com/en/java/

Community and Support:

Stack Overflow: A vast community of developers. Great for getting help with specific problems or understanding concepts.
https://stackoverflow.com/questions/tagged/java
r/learnjava on Reddit: Join the community of Java learners and get advice, share resources, and discuss projects.
https://www.reddit.com/r/learnjava/

Remember: Learning to program takes practice and patience. Don't hesitate to experiment with code and participate in community discussions. Happy coding! 🎉

spare crypt
#

I'm using the EntityShootBowEvent.. but the force that's coming through for e.getForce() is 3 on a maxed out shot... Has anyone else messed with this and seen a shift in the force value here?

#

Ah. I guess the force is actually the speed of the projectile.. but it looks like dividing by 3 gives me roughly what I want anyway

timid berry
#

okay just learnt about classes and main methods

thin wyvern
#

hi everyone, the download for spigot is down.

#

can anyone check if this is not a Layer 8 issue?

sly topaz
#

spigot isn't downloadable per se

#

you use buildtools

thin wyvern
#

Server-file download i mean

#

cant download any server version

sly topaz
#

I just tried ran build tools and it works fine

#

are you sure it isn't an issue on your end

vast ledge
#

Heh

thin wyvern
#

Wdym build tools, i want to setup a spigot testserver and cant download the server jar.

vast ledge
#

You mean the server jar or wat

thin wyvern
#

I said server-file or not

vast ledge
sly topaz
#

again, you don't download spigot

#

?buildtools

undone axleBOT
vast ledge
#

Its illegal to distribute the jar ....

sly topaz
#

if you were downloading the jar directly from the internet, it is a third-party illegally distributing it

thin wyvern
#

thats annoying

vast ledge
#

Your site probs got a cease and desist from Mojang

thin wyvern
#

i saw the download after googling "spigot server download"

sly topaz
#

and it could possibly contain malware so you don't want to download it from these places anyway

#

what are you trying to say that it keeps getting deleted lmao

thin wyvern
#

the page name that i found

sly topaz
#

getspigot

#

?

thin wyvern
#

after googling "spigot server download", google that and the first hit is xD

sly topaz
#

yeah, they got better SEO for this kind of thing, but as said

#

you don't want to download it from these places

thin wyvern
#

i see

sly topaz
#

use buildtools

thin wyvern
#

thx

#

sorry for annoying yall

sly topaz
#

it's all good

wraith delta
# thin wyvern thx

Unfortunate but, it’s not legal to have a download on a webpage. The build tools is how spigot can legally follow mojangs terms or whatever. Build tools will also give you the latest patches so it’s the safe way to go

thin wyvern
waxen acorn
#

It'll be faster after the first setup

acoustic pendant
#

Hello, I am creating an api for one of my plugins, (Custom events), this event works when used in the same plugin, but when I hook into the plugin in other project, this event doesn't fire (I have registered it) could someone help me?

#

I'm using repsy for the repo

#

This isn't firing (The other project)

eternal oxide
#

do not shade your main plugin in yoru second

acoustic pendant
#

This is

acoustic pendant
eternal oxide
#

I bet you are

young knoll
#

Where do you fire the event

acoustic pendant
eternal oxide
#

answer Coll first

acoustic pendant
eternal oxide
#

?paste pom

undone axleBOT
acoustic pendant
#

I think i'm not shading it but could be

eternal oxide
#

you are shading

acoustic pendant
#

oh

#

Where?

eternal oxide
#

add a provided scope

acoustic pendant
#

Ups

#

Forgot to add that

young knoll
#

:p

remote swallow
#

whats that other dependency i see

eternal oxide
#

You see nothing!!!

remote swallow
#

who turned the lights off

young knoll
#

Why, I think it’s PaperMC

acoustic pendant
young knoll
#

Droppin some sick rhymes today

acoustic pendant
eternal oxide
#

pretty much

acoustic pendant
#

I see

remote swallow
#

default scope shades

acoustic pendant
#

Let me try, thanks

acoustic pendant
#

Yeah, that worked lol

#

Thanks

#

Why does it not work if it is shaded?

remote swallow
#

it isnt shaded now

#

it was being shaded

eternal oxide
#

when its shaded its looking for its own copy of the event

young knoll
#

Which is never fired

remote swallow
#

dam, i got edited on now my comment doesnt make sense

young knoll
#

Because the code for firing it isn’t run inside the shaded jar, it’s only run in the other plugin

remote swallow
#

gonna jump infront of a stobart truck on the m25

acoustic pendant
remote swallow
#

the reason coll and elgarl said

eternal oxide
#

its trying to listen to event instances not just the event name

acoustic pendant
#

Okay okay, I understand

young knoll
#

Plugins will prioritize classes in their own jar

#

Then look through other plugins

worldly ingot
#

default scope is compile by the way, which is why it shades by default

young knoll
#

That’s kinda lame imo

#

Smh maven

worldly ingot
#

You're lame

remote swallow
acoustic pendant
young knoll
#

See with gradle you can’t make this mistake :p

#

There’s no magical default

worldly ingot
#

With gradle, you'll instead spend 4 hours ripping your hair out, frantically Googling why the fuck your dependency won't shade despite telling shadow to fucking shade it

young knoll
#

Skill issue

#

I wonder what build system hypixel uses 👀

worldly ingot
#

Maven

remote swallow
#

why my spigot no work i added it likee this

dependencies {
  testCompileOnly("spimgot:1.20.4")
}
worldly ingot
#

We have public repositories

slender elbow
#

no you don't

remote swallow
#

i think he meant what hygot uses

young knoll
#

Doesn’t mean you use the same internally

worldly ingot
#

Yes we do!

slender elbow
#

nuh-uh

worldly ingot
#

Well, we do lol. It's Maven. It's a 12 year old company

#

Did Gradle exist then?

slender elbow
#

probably

remote swallow
#

cant believe hypixel is 3 years older thanneon

worldly ingot
#
  1. Damn close
#

It was a baby

young knoll
#

?howold 1.7.10

undone axleBOT
worldly ingot
#

lmao, Discord formatted that 2008 as a list item

slender elbow
#

that's funny

young knoll
#

Fun fact

worldly ingot
#

THAT IS FUNNY, EMILY

#

THANK YOU

young knoll
#

The 2008 is not the year choco was born

#

It’s actually his age

worldly ingot
#

That's what you think

remote swallow
young knoll
#

File transfer via intestine

remote swallow
#

just gotta @blazing ocean

blazing ocean
remote swallow
#

nuhuh

blazing ocean
#

my bad

acoustic pendant
#

Guys, do you know why this happens when trying to upload the repository to repsy? On my laptop it works fine, but not on my pc

#

This is distributionManagement

remote swallow
#

did you add the user and password to global setings

silent slate
#

How to change the state of a CopperBulb and a lever (lit/powered)

I have the location of them and want to do a function like this

public static void turnOnLever(Location location) {

}

public static void turnOnCopperBulb(Location location) {

}
lilac dagger
#

check the blockdata

silent slate
#

Either ones of these dont seem to work for lever

Lever lever = (Lever) Bukkit.getWorld("plotworld").getBlockAt(-47, 36, 31);
        lever.setPowered(true);

Switch test = (Switch) Bukkit.getWorld("plotworld").getBlockAt(-47, 36, 31).getState();
        test.setPowered(true);
lilac dagger
#

none of these call getBlockData()

silent slate
#

isnt really giving me any function I would know how to use

lilac dagger
#

you need to cast it to the correct class, one sec

#

cast the block data to Switch

#

Powerable is even better for your need

#

after you set powered set the block data back to the block

silent slate
#
Powerable powerable =  (Powerable) Bukkit.getWorld("plotworld").getBlockAt(-47, 36, 31).getBlockData();
        powerable.setPowered(true);

Would this work?

lilac dagger
#

it's like the item meta thing

#

now set the block data back to the block

#

altho powerable is no longer a block data

#

you might wanna use ((Powerable) blockData).setPowered(true);

#

so you can then do block.setBlockData(blockData);

silent slate
#
Block block2 = Bukkit.getWorld("plotworld").getBlockAt(-47, 36, 31);
        Powerable powerable = (Powerable) block2.getBlockData();
        powerable.setPowered(true);
        block2.setBlockData(powerable);
lilac dagger
#

yup

silent slate
#

noice

lilac dagger
#

but does it work as is?

silent slate
#

can the same be done with the copper lamp

#

imma check

lilac dagger
#

if it's powerable yeah

silent slate
#

ye lever works

lilac dagger
#

nice

silent slate
#

idk if i want the lamp powered, i want it lit

#

is that seperate?

lilac dagger
#

i'm not sure, check if there are other block data

#

but i think Powerable is used for both

silent slate
#

k

silent slate
#

I think for copperBulb its Lightable although it also extends powerable, that results in an error

Currently checking if lightable works

#

nope

#

also wont work

lilac dagger
#

it might be under blockstate

#

ah nvm

#

it's just tile data

silent slate
#

so .setLit on CopperBulb should work?

lilac dagger
#

try it

#

i never lit anything to know

silent slate
#

rg.bukkit.craftbukkit.v1_21_R1.block.CraftBlock cannot be cast to class org.bukkit.block.data.type.CopperBulb

lilac dagger
#

you're not using the blockdata

#

you're casting the block

silent slate
#

mhh

#

class org.bukkit.craftbukkit.v1_21_R1.block.data.CraftBlockData cannot be cast to class org.bukkit.block.data.type.CopperBulb

lilac dagger
#

where is the copper bulb?

#

is it under the block data package?

silent slate
#

idk what ur talking about

#

thats what im doing ```java
Block block = location.getBlock();
CopperBulb bulb = (CopperBulb) block.getBlockData();
bulb.setLit(lit);

lilac dagger
#

is the block a copper bulb?

silent slate
#

it wasnt, i changed it, now it didnt throw and error, but after checking on it again its off again

deft geode
#

Is it planned for ToolRule to get a constructor or builder? and possibly add a ToolRule to a ToolComponent via ToolComponent.addRule(new ToolRule(...))

pure dagger
#

so when openGUI method gets executed, also handleOpen() gets executed right?

#

im not getting why these 2 are different methods

#

is inventoryOpen listener necesary? if we make the player open the inventory in code anyway

#

if it would be possible to execute "openGUI()" and "onOpen()" and then just the "onOpen()" method i would understand but i dont

summer scroll
#

It will work with all blocks that can be "powered".

tall dragon
pure dagger
silent slate
pure dagger
#

do you want to run it like befor the event happens?

#

can you explain it pls ;c

tall dragon
grim hound
#
[02:35:27] [ForkJoinPool-2-worker-1/WARN]: Caused by: com.mysql.cj.jdbc.exceptions.PacketTooBigException: Packet for query is too large (4,739,923 > 65,535). You can change this value on the server by setting the 'max_allowed_packet' variable.
[02:35:27] [ForkJoinPool-2-worker-1/WARN]: at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:107)
[02:35:27] [ForkJoinPool-2-worker-1/WARN]: at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:825)
[02:35:27] [ForkJoinPool-2-worker-1/WARN]: at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:446)
[02:35:27] [ForkJoinPool-2-worker-1/WARN]: at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:239)
[02:35:27] [ForkJoinPool-2-worker-1/WARN]: at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:188)
[02:35:27] [ForkJoinPool-2-worker-1/WARN]: at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:683)
[02:35:27] [ForkJoinPool-2-worker-1/WARN]: at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:230)
``` how
summer scroll
pure dagger
tall dragon
#

cuz then it would not wait for the open event

#

sometimes u need to do specific stuff after that event

silent slate
summer scroll
silent slate
#

yes

pure dagger
summer scroll
silent slate
#

well

#

kinda, now im making a function to save the block above the lamp, change that to a redstone block and change it back

#

Possibly a direct approach would be better

summer scroll
#

The code you sent above is not working?

#

The CopperBulb#setLit

silent slate
#

no

grim hound
silent slate
#

cant be cast exception

silent slate
pure dagger
grim hound
#

anybody?

#

does literally anyone know?

lilac dagger
#

You don't need the class for name line

grim hound
lilac dagger
#

I don't use it and it still finds the jdbc path

eternal oxide
#

I doubt that code is throwing the error

#

show the full stack trace

#

@grim hound ^

eternal oxide
#

what is DatabaseManagerImpl.java:19 ?

grim hound
grim hound
eternal oxide
#

hm

grim hound
eternal oxide
#

if you are on a recent version you no longer need Class.forName at all

grim hound
#

it's for a client

#

so uh

#

not sure about him

eternal oxide
#

k

#

are you certain you are passing a valid host?

grim hound
#

not sure what the client is passing

#

I can ask

eternal oxide
#

what is DatabaseManager.java:150 ?

grim hound
brazen badge
#

hi, how can I get Time played Statistic? i cant find the constant in Statistic class

eternal oxide
# grim hound '

be certain they are not setting a max packet size in their connect string

grim hound
grim hound
eternal oxide
#

your code is not sanitized so they could inject at the end of password if they wanted

worthy pumice
#
new BukkitRunnable() {
    double remainingRecoil = recoilAmount;
    final float step = (float) (recoilAmount / 2);

    @Override
    public void run() {
        if (remainingRecoil <= 0) {
            this.cancel();
            return;
        }

        player.setRotation(player.getLocation().getYaw(), player.getLocation().getPitch() - step);
        remainingRecoil -= step;
    }
}.runTaskTimer(plugin, 0L, 1L);

is there any way to make the yaw rotation of the camera be less janky while there are recoil steps going on?

eternal oxide
#

I'd do it no different, but you can;t trust a client to behave

lilac dagger
#

if they have the user and password they can just as well extract these and drop all your tables with a mysql client

#

i think sanitization is not the problem here

eternal oxide
#

Yeah its just odd that its teh getConnection which is throwing the over sized packet error. Also the error is showing an odd max packet size so they are doing somethign funky with their MySQL

lilac dagger
#

i never seen that

#

is this driver the same that spigot uses?

eternal oxide
#

I saw something similar (if my memory is correct). Setting the client packet size bigger than the servers setting

#

wrongly configured plugin is my guess, but you are askign in the wrong channel

slender timber
eternal oxide
slender timber
#

ok ill just copy paste the msg

quaint mantle
#

what's the best way to check if a container is non-vanilla? (so not a chest, player inventory, furnace etc)

pseudo hazel
#

depends on your goal

#

like do you mean inventories your plugin makes?

quaint mantle
pseudo hazel
#

okay, well that would be difficult

#

for what reason do you need that

quaint mantle
#

yeah, so far all I've got is checking if it has colours in it

quaint mantle
#

but I don't want the tooltips added to gui items

pseudo hazel
#

maybe try to check if the item has certain item flags

#

for example all of my menu items have pretty much most item flags

#

like hide_additional_tooltip or whatever

#

im sure the client must have a way to find out those flags

#

to display it correctly

quaint mantle
#

yeah that's a good idea

pure dagger
#

i need to make a list of itemstacks (i only need material and amount) in config, is this good waay?

items:
  item1:
    material: CARROT
    amount: 3
  item2:
    material: APPLE
    amount: 5
#

it would be good if you wouldnt have to name these items "item1" "item2" etc

#

but i think you cant do it like that

remote swallow
#

you can make it a list

#

in your case it would be a map list

pure dagger
#

what is "map list"

remote swallow
#

List<Map<String, Object>

pure dagger
#

oh i made list of list

#

no

remote swallow
#

use getMapList on items

items:
  - material: CARROT
    amount: 3
  - material: APPLE 
    amount: 5
``` would be map list
pure dagger
remote swallow
#

sure

pure dagger
#

uff

#

phew*

remote swallow
#

technically

pure dagger
#

sorry not this language

remote swallow
#

a Map<String, Map<String, Object>>

pure dagger
#

oh ..

kindred valley
pure dagger
#

oh.. because i did something like Map<E>

remote swallow
#

a map is always k to v

#

a list is only v

kindred valley
#

Who uses lists

pure dagger
#

yes

#

i just made that letter up

pure dagger
remote swallow
#

its a valid generic if you want

pure dagger
#

okay

blazing ocean
pure dagger
#

real

sly topaz
worthy yarrow
#

Considered our just is? Values need to be indexed somehow right?

young knoll
#

It’s an array internally

sly topaz
sly topaz
young knoll
#

Well

#

Arraylist

#

:p

quaint mantle
#

will this return correctly List<Player>???

quaint mantle
#

alr ty

#

why not just use Bukkit.getOnlinePlayers() tho

#

Do you really need to mutate it?

#

i need it for a manager

#

it's kinda hard for me to use a Collection<? extends Player>

lyric zephyr
#

Bro help

quaint mantle
sly topaz
#

Bukkit.getOnlinePlayers already returns a copy

quaint mantle
sly topaz
#

ah but it returns it as Collection yeah

quaint mantle
#

idk

#

i js prefer to use list

#

will it affect performance?

#

prob not much

#

it has to copy it twice now

#

instead of just once

timid berry
#

i mastered java

#

and ux design

river oracle
worthy yarrow
sly topaz
#

unrelated to your issue but is there a reason you're using nbt instaad of PDC?

#

?pdc

sly topaz
#

as for your issue, how are you placing the sign?

summer scroll
sly topaz
orchid brook
#

Hi, I have a plugin that allows changing crops in a WorldGuard region to another crop (only for the client, using Player::sendBlockChange()).

When the server loads, I store all the crops within the region in a HashSet<Chunk, Set<BlockData>>—this keeps track of all the crops in each chunk within the region.

This works fine, but I'm concerned that storing all the crops in this set may not be ideal for memory, since the size of the region and the number of crops can be quite large. I initially used this approach because looping through all the blocks in a newly loaded chunk to check which ones are crops eligible for replacement causes the plugin to lock the main thread and consume a lot of resources, as seen in the Spark profiler.

The reason I store blocks by chunk is to avoid looping through all blocks in the list each time a chunk is loaded and checking if the block belongs to that chunk using Block::getChunk(). The getChunk() method is resource-heavy.

I’m wondering if anyone has a better alternative that would use minimal resources without having to store all this data in a HashSet. I believe my current method works, but I’m not sure if storing large amounts of data this way will cause excessive memory consumption.

sly topaz
#

though I am unsure of whether it'd be any better performance-wise being completely honest, would have profile it somehow

#

I got to ask though, why is it client-sided?

orchid brook
#

Do you know gens server ?

sly topaz
#

yeah

#

I kind of get it I guess, so the gen is per-player

orchid brook
#

that what im trying to do every player in the same region, same crops but if a player want to farm carrot instead of wheat he can change the crops only for him

quaint mantle
#

Easier way is to make separate location for each crop

sly topaz
#

if memory is your worry, I'd specialize the stuff you store

#

i.e., instead of storing the whole block data, just store the crop type and stage

#

I don't see how loading crop data could block the main thread long enough for it to be an issue tho, how were you doing it before?

orchid brook
orchid brook
sly topaz
orchid brook
sly topaz
#

that said, it doesn't really solve the memory problem

#

it should turn into better performance since you aren't re-sending all the block datas but instead modifying what the player sees from the get-go, given you do everything right

#

but if you store it the way you're storing it now, it'll still be a memory hog

#

or well, could be, you got to measure how much memory it is actually taking

orchid brook
sly topaz
orchid brook
#

actualy i have this

[BetterHoeHarvester] Collected 1748 chunk and 440723 block states in the region BetterHoeHarvester | Approximate memory used by chunkBlockStates: 260139296 bytes | 248MB

#

anyway i don’t think that some server owner will have so much block

sly topaz
#

that is 590 bytes per crop, not too bad honestly

#

it could be lowered if you specialize the data structure as I said before

orchid brook
#

yep

#

so u think i can stay with that ? and not worry about the fact im storing all this data ?

sly topaz
#

it could be better, but honestly I wouldn't worry about it right now

orchid brook
#

okok and as i said its was a very large region and server owner will never have this amount of block anyway its was a stresstest

sly topaz
#

then again, since it is a per-player thing, it could increase expotentially so there's that

orchid brook
sly topaz
#

yeah, that's the thing

#

it'd be better if you stored it per player, since you could get rid of a chunk of memory every time a player leaves

#

then again, I'm just saying there's lots of room to improve, but it sounds plenty good right now

orchid brook
#

i don’t realy understand why its need to be per player what the reason

sly topaz
#

well, since the crops are per-player, it means you can store it in a Map<UUID,Map<ChunkPosition,Map<BlockPosition,State>>>, and delete the chunk maps when the player leaves, load it when they join

#

that's a lot of maps, in reality it'd be done properly with classes to encapsulate the data lol

ember pumice
#

Hello, how can I set a limit on the protections placed on users in proteccionstone?

river oracle
#

Might be easier to wrap the maps in a class btw so it's more digestible logic wise

ember pumice
#

gracias !

orchid brook
#

actualy im storing the selectedcrop of each player in a map already, so i have no reason to store all blockdata for each player, i will never update the blockdata hashset i populate it only on server start and that it

ember pumice
#

esa gente en mi server estan poniendo muchisimas protecciones los usuarios, tengo que reducir xd

sly topaz
#

habla en ingles bro, te van a a mutear xd

river oracle
#

Oh Javier got it

#

Glad I don't have to type my broken ass spanish

orchid brook
ember pumice
ember pumice
grim hound
#

If there's a github project I'm forking, and that project updates, what's the usual way to include those changes without disregarding your own changes to the project?

#

Like spigot is a fork of the nms server, so how do they update their classes on every mc update without removing their own changes?

waxen acorn
#

it just works like what Spigot's patcher scripts did

#

unfortunately no maven equivalent for it :/

#

so you might need to use Gradle for this

#

btw the patcher scripts just do these things: when patching, collect all patches stored before, reset the git repo to upstream's latest ver, apply patches using git am. resolve conflicts manually if any. when exporting patches just use git format-patch on the patched repo.

grim hound
waxen acorn
#

good, then you can checkout its readme

grim hound
#

Everything else is just inferior

waxen acorn
#

that's not difficult to learn common commands

grim hound
glossy laurel
#

Is there any place where I could get gradle basics as a maven user

waxen acorn
#

or just try it and see?

grim hound
#

Well, I will when I'm back

orchid gazelle
paper viper
waxen acorn
orchid gazelle
#

Port plugin from gradle to maven, ez

waxen acorn
#

there is no actual result differences between different build tools if configured them well

#

objectively Gradle scripting makes build more flexible

blazing ocean
#

Gradle plugins and scripting are great

#

Convention plugins are amazing

#

I love being able to create functions and actual variables in my buildscript, not like Maven where you have some arbitrary shitty XML

waxen acorn
#

xD

sly topaz
blazing ocean
#

it certainly feels arbitrary

#
  • the gradle DSL is literally just pure magic
sly topaz
#

yeah, that's what I don't like about it

blazing ocean
#

like, you can create functions and extensions by a string

#

and an abstract class

sly topaz
#

Maven has made big strides on making its build system more easily extendible with maven extensions

blazing ocean
#

it's crazy

blazing ocean
sly topaz
#

people aren't looking at it right now because everyone has moved ship to gradle already however they're both very competent build tools, and as far as simplicity of initial setup goes, maven wins there for me

blazing ocean
#

why?

#

you only need a build.gradle.kts and slap your things in there

#

and gradle wrapper if you want it

sly topaz
#

because it's very uncomplicated and deterministic, people don't write their own funny magic on top of what should be a very simple build script for the most part

blazing ocean
#

sometimes you do need a more complex buildscript

sly topaz
#

basically, I like how opinionated maven is in this regard

#

many don't, and maven has realized that recently and made big changes in order to support those people, so it actually competes with gradle

blazing ocean
sly topaz
#

nowadays you have build cache extension, the maven wrapper, polyglot-maven if you don't like xml, and a bunch of other nice stuff that's nicely documented in their page

blazing ocean
#

it's annoying for sure

sly topaz
#

it is just setting up statically linked libraries, the x64 target and generating bindings

#

it's just horribly documented if anything

blazing ocean
#

because I cannot find libvpx >:(

sly topaz
#

that's the vp9 codec lib, isn't it

blazing ocean
#

yeah it's a bit weird I have it installed but it can't find it

#

I tried installing it with vcpkg (💀) but to no avail

sly topaz
#

do you have your vcpkg_root env var set

blazing ocean
#

yes

sly topaz
#

wait but they have binary downloads, why are you building it

blazing ocean
#

I have the binaries kek

buoyant viper
#

NO binary..

blazing ocean
sly topaz
#

unrelated but eza is really nice

blazing ocean
#

facts

sly topaz
#

I really like not having to type whole paths lol

blazing ocean
#

you mean zoxide then?

sly topaz
#

ah yeah, that one

#

I got eza too so I confuse the two

#

don't remember what eza does

blazing ocean
#

ls

sly topaz
#

ah, yeah I use that too

blazing ocean
#

zoxide sometimes just dies so I don't use it on my server

#

stack overflow 💀

sly topaz
#

how can it die

#

never had that happen to me, but I mostly go to the same paths all the time

blazing ocean
#

dunno

blazing ocean
sly topaz
#

the one thing I find annoying about eza is the shitty defaults

#

got to have this alias for it:

function go {
        eza --level 1 --tree --icons=auto --sort=type $args
}
sly topaz
#

go to folder

#

the alias name is still ls, that's just the function name to not confuse myself

#

otherwise the set alias command would be set-alias ls ls lol

blazing ocean
blazing ocean
sly topaz
blazing ocean
#

oh

#

💀

sly topaz
#

I've grown to really like pwsh because its powerful scripting capabilities

#

even when I'm on linux, I use pwsh core

#

claude is also really good at making pwsh functions, so it is nice if I want any utility function

quaint mantle
#

how can i cancel a Bukkit.getScheduler().runTaskTimer()??

#

get task object then cancel it

sly topaz
#

if you're using the Consumer overload, then you can cancel the task that's passed on the param

quaint mantle
#

smth like task = Bukkit.getScheduler().runTaskTimer(plugin, ()-> task.cancel());?

sly topaz
#

Bukkit.getScheduler().runTaskTimer(plugin, task -> task.cancel(), 0, 10);

quaint mantle
#

i gotta update spigot

paper viper
#

How have I never used this and only used a bukkitrunnable…

#

I’m so stupid

quaint mantle
#

Wdym

#

Like

sly topaz
#

I mean, both are the same

quaint mantle
#

new BukkitRunnable()?

paper viper
#

Yeah but

sly topaz
#

one is just more convenient than the other

paper viper
#

Yeah

quaint mantle
#

Why is it more convenient? i heard it is more convenient and started using it but idk why

paper viper
#

Because it’s easier coding wise, like you have instantiate a bukkitrunnable and manually override the run task

#

You can use lambda for consumer

sly topaz
#

because you can do the cancellation on-site instead of saving the runnable to a variable then running the timer separatedly

sly topaz
paper viper
#

Typo

#

And with the consumer way you don’t have to use a dumb anonymous class

wet breach
#

you could if you wanted to just implemented bukkitrunnable in a class and then not have an anonymous inner class

hushed spindle
#

Sound#valueOf() has recently started throwing these exceptions, how can i fix this?

#

surely sounds should always have a namespacedkey if Sound.valueOf() returns a value

#

doesnt seem to be very consistent either because it varies per server, despite all being on 1.21.3

smoky anchor
#

Do you use the same sounds when testing this ?

hushed spindle
#

well its a bit weird and inconstent

#

the guy that reported the bug used paper

#

i used paper, no issue

#

i use spigot, issue appears

#

the sounds are always the same since its a default configuration

#

i saw that its possible to add or remove to the sounds enum, but that is not happening as far as im aware

smoky anchor
hushed spindle
#

they're running latest

#

i was actually running an older version

#

i ran latest version of spigot as well

smoky anchor
hushed spindle
#

thats what the helpchat documentation clarified

smoky anchor
#

gonna assume they know more than I do then
Don't think they mean the java enum tho

hushed spindle
#

probably not

#

but you can add or remove sounds from minecraft, i assume they meant that

#

but i doubt thats whats happening here

#

since its happening on a blank server

wet breach
#

you can't add or remove from an enum but you can however change an enums value

hushed spindle
#

in any case, has anyone else been having an issue similar to this

#

surely namespacedkeys for valid enum values should not be null

remote swallow
#

You wanna show us ur code and what ur passing?

young knoll
#

What sound is it

#

Also you should be getting sounds via their namespaced key rather than name

hushed spindle
#

oh i think i know

#

it passed a wrong string to it

#

i guess now it doesn't throw an exception when something wrong is passed to Sound.valueOf()

pure dagger
#
Inventory.removeItem(ItemStack... itemStacks);

Returns:
A HashMap containing items that couldn't be removed.

My code:

temStack item1 = new ItemStack(Material.DIRT, 2);
        player.sendMessage(player.getInventory().removeItem(item1, item1) + "");

if player has 1 item (so 1 was removed) it returns
{0=ItemStack{DIRT x 1}, 1=ItemStack{DIRT x 1}

if player has 2 items it reuturns:
{1=ItemStack{DIRT x 2}

but in the first example it should return
{0=ItemStack{DIRT x 1}, 1=ItemStack{DIRT x 2}

i probably shouldnt remove the same itemstack but why is that

worldly ingot
#

Because you're passing the same ItemStack instance twice. CraftBukkit actually mutates the amount of the ItemStack you pass in

tawdry lava
#

Can I ask about ProtocolLib?

worldly ingot
#

Because your items are the same instance, for your first example of only having 1 dirt

  1. Removes 1 dirt, sets the remainder of item1 to 1
  2. Tries to remove the second instance of item1 which only has 1 amount left
  3. Fails, sets item1 amount to 1
#

If you did player.getInventory().removeItem(item1, item1.clone()), you would see dirt x 1 and dirt x 2

tawdry lava
#

Help Regarding Cancelling fall damage in Launch plugin using ProtocolLib -

            public void onPacketReceiving(PacketEvent event) {
                PacketContainer packet = event.getPacket();

                int target = packet.getIntegers().read(0);

                if (target == npcManager.getJeffId()) {
                    WrappedEnumEntityUseAction useAction = packet.getEnumEntityUseActions().read(0);
                    EnumWrappers.EntityUseAction action = useAction.getAction();
                    EnumWrappers.Hand hand = action == EnumWrappers.EntityUseAction.ATTACK
                            ? EnumWrappers.Hand.MAIN_HAND
                            : useAction.getHand();

                    event.getPlayer().sendMessage("Hand: " + hand);

                    if (action == EnumWrappers.EntityUseAction.ATTACK || action == EnumWrappers.EntityUseAction.INTERACT_AT) {
                        PacketContainer explosion = new PacketContainer(PacketType.Play.Server.EXPLOSION);

                        explosion.getDoubles().write(0,event.getPlayer().getLocation().getX());
                        explosion.getDoubles().write(1,event.getPlayer().getLocation().getY());
                        explosion.getDoubles().write(2,event.getPlayer().getLocation().getZ());

                        explosion.getFloat().write(0,1.5F);
                        explosion.getFloat().write(1,0F);
                        explosion.getFloat().write(2,0.5F);
                        explosion.getFloat().write(3,0F);

                        explosion.getAttributeCollectionModifier().write(0,new ArrayList<>());

                        protocolManager.sendServerPacket(event.getPlayer(),explosion);

                    }
                }
            }
        });```
#

It works , the launch part, but I don't know how to cancel the fall damage

lilac dagger
#

you don't need packets to cancel fall damage

#

use entitydamageevent

#

and check the cause fall

tawdry lava
#

oohh I see

#

Ty

lilac dagger
#

and as far as i know, you don't need packets for explosions either

tawdry lava
#

I just wanted to see if there was a way with NMS/Packets/ProtocolLib

tawdry lava
lilac dagger
#

nms is just for listening incoming and outgoing, anything that changes the server state should be done via the spigot api

#

in that case it's alright

#

just keep in mind tho there are more easy ways to do it

#

it's like a line in spigot

tawdry lava
#

Yes just watched few videos about ProtocolLib and thought to do it

#

Yes

#

I've seen

lilac dagger
#

player.getworld play explosion i think

tawdry lava
#

Thank you for the help

lilac dagger
#

no problem 😄

tawdry lava
#

hey

#

another question

lilac dagger
#

if it's short, i gotta go for a bit

tawdry lava
#

So when creating NPC is it possible to create like a damageable npc , I tried using a Damage Event and other stuff but it gave error, most probably bcs the NPC isnt real just b/w the client and server

lilac dagger
#

you can do it via packets, but it's a lot of work

#

the server does most of the work

#

so if you can spawn a human entity on the server it's even better

tawdry lava
#

so what shld i do or explore ?

lilac dagger
#

i think citizens has most of the answers on how to do it

tawdry lava
lilac dagger
#

it's still a lot of work

tawdry lava
#

I just wanted to know how its done

#

My curiosity makes me do programming 😄

lilac dagger
#

you'll have to add it in the world, i'm just not sure how you can add a human entity to the world tho

tawdry lava
#

sure I'll look it up thanks

lilac dagger
#

np

worldly ingot
#

Changes data

#

in this case, changes the amount

pure dagger
#

oh

#

wait so my itemstack can get changed?

worldly ingot
#

Yes

pure dagger
#

oh

pure dagger
worldly ingot
#

What? No. I'm just saying that the ItemStack you pass into removeItems() is going to have its amount changed, and that's why you're not seeing the results you expect

#

CraftBukkit probably shouldn't be changing the amount of that item stack, especially because that side-effect isn't documented, but it is what it is

pure dagger
#

oh yeah, i just asked another question not related to that

trail coral
#

how do i make a plugin support velocity bungeecord and spigot at once? ik tehres something to do with modules or wahtever

pure dagger
#

and then remove them if there are enough

worldly ingot
#

There are two ways

  1. Implement your own method to do that, which isn't inherently difficult
  2. Copy the inventory, run removeItem() on that and check the result
    I'd personally suggest the first one because the latter ends up copying a lot of items and performs two remove operations, but yeah
#
public static boolean hasEnough(Inventory inventory, ItemStack itemStack, int amount) {
    int total = 0;
    for (ItemStack slotItemStack : inventory) {
        if (slotItemStack.isSimilar(itemStack)) {
            total += slotItemStack.getAmount();
        }

        if (total >= amount) {
            return true;
        }
    }

    return false;
}

That would work fine

pure dagger
#

:c

#

oh

worldly ingot
#

Optionally you could omit the "amount" parameter and use the amount of the itemStack you pass in, but that's up to you

pure dagger
#

yeah

#

im gonna make it a list of itemstacks

worldly ingot
#

Yeah that's fine. Edit however you'd like. That method should work fine though

trail coral
#

how do i view a servers ram/cpu usage? with code

#

like implement that in my plugin

#

i dont want a command or whatever tahts why i specified

worldly ingot
pure dagger
#

oh and ill make it a player not inventory arugment

trail coral
worldly ingot
#

Yes

trail coral
#

thanks

pure dagger
worldly ingot
#

A Set probably isn't necessary. You likely only need an Iterable<ItemStack> because that's all you're doing is iterating

#

That way it can be any sort of iterable object, which includes any form of Collection

#

(and technically could also be an Inventory 👀 because it in-and-of itself is an Iterable<ItemStack>)

pure dagger
#

um

worldly ingot
#
public static boolean hasEnough(Player player, Iterable<ItemStack> itemStacks) {
    int total = 0;
    for (ItemStack slotItemStack : player.getInventory()) {
        for (ItemStack itemStack : itemStacks) {
            if (slotItemStack.isSimilar(itemStack)) {
                total += slotItemStack.getAmount();
                break;
            }
        }

        if (total >= amount) {
            return true;
        }
    }

    return false;
}
#

I guess that sums them all together which probably isn't ideal

lilac dagger
#

inventory is iterable?

pure dagger
#

yes

lilac dagger
#

since when?

pure dagger
#

idk

worldly ingot
#
public static boolean hasEnough(Player player, Iterable<ItemStack> itemStacks) {
    Map<ItemStack, Integer> remaining = new HashMap<>();
    itemStacks.forEach(itemStack -> expected.put(itemStack, itemStack.getAmount());

    for (ItemStack slotItemStack : player.getInventory()) {
        for (ItemStack itemStack : itemStacks) {
            if (slotItemStack.isSimilar(itemStack)) {
                remaining.computeIfPresent(slotItemStack, amount -> {
                    Integer newAmount = amount - itemStack.getAmount();
                    return (newAmount > 0) ? newAmount : null;
                });
            }
        }

        if (remaining.isEmpty()) {
            return true;
        }
    }

    return false;
}
#

That might work the way you want

#

Or maybe smarter

pure dagger
#
public static boolean hasEnough(Player player, List<ItemStack> items) {
        for (ItemStack item : items) {
            int total = 0;
            for (ItemStack slotItem : player.getInventory()) {
                if (slotItem.isSimilar(item)) {
                    total += slotItem.getAmount();
                }
                if (total >= item.getAmount()) {
                    break;
                }
            }
            if (total < item.getAmount()) return false;
        }
        return true;
    }

i made this

worldly ingot
#

That's actually probably way better and avoids the whole map shit I was doing lol

#

I'd still opt for an Iterable<ItemStack> over a List<ItemStack> though

#

You don't care about order. All you care about is that you can iterate over it. That's it

leaden wigeon
#

Hello. Can somebody say how to fix local host Ip
how to make show real peoples ip
im using paper mc on my pc

remote swallow
#

?whereami

blazing ocean
remote swallow
blazing ocean
#

good question

glossy laurel
#

why does this not work? Custom smithing inventory btw

#

wth it showed the gear on the armorstand

#

its actually so buggy

#

but when I shift click any of the materials:

#

I dont need it to be functional, I just need it to show they output normally (Like in the image above)

trail coral
#

how would i make a discord to minecraft chat sync plugin? do i need to make a discord bot inside the plugin?

blazing ocean
#

webhook

trail coral
#

webhooks cant detect what players type

#

i mean members

blazing ocean
#

then a bot

trail coral
#

thats impractical ngl shit plugin idea

blazing ocean
#

wat

#

just use discordsrv or sth

trail coral
#

it takes so much memory to run a discord plugin

#

i mean discord bot

#

so my plugin would take up so much memory and cause so much lag

blazing ocean
#

what are you talking about

trail coral
#

discord bot inside plugin

glossy laurel
#

then dont have a discord chat 🤯

proud badge
#

Or use discordsrv

trail coral
#

i didnt wanna use an api

blazing ocean
glossy laurel
trail coral
#

i dont need your observation

#

ik what i said

glossy laurel
#

that attitude sure makes everyone wanna help you

blazing ocean
#

oh i remember you now

#

you were that guy who got muted for a week for being a bitch

trail coral
glossy laurel
#

tendencies 😂

trail coral
#

arent you the guy that cried cause i said youre annoying

#

brto still remembers it after like 6 months

#

😭

#

cry some more

glossy laurel
#

bro 💀

#

that's crazy

trail coral
#

bros gonna call the staff and get me banned now

glossy laurel
#

im considering it

trail coral
#

even though hes the one that called me a bitch first 💀

blazing ocean
trail coral
#

nah

#

ngl i see a lot of people saying that to you but i wasnt one of them

#

maybe youre the problem?

glossy laurel
#

are you depressed, 11, trolling, or something else?

blazing ocean
#

ok i don't need to waste more brain cells and energy on this bullshit 😂

#

"all of the above"

trail coral
#

lmao

#

fatass

glossy laurel
#

A. depressed
B. eleven
C. trolling
D. all of the above 💀

glossy laurel
glossy laurel
trail coral
#

bro has addicted to coding in his bio and is trynna clown me 💀

#

who tf is even talking to you

blazing ocean
#

mate this is a help channel

glossy laurel
# glossy laurel

@blazing ocean dyk anything? I cant find anything on forums :(

#

ghosted D: rip

blazing ocean
#

maybe @river oracle does idk

#

he's the inventory guy

glossy laurel
#

lmfao

#

alr

trail coral
glossy laurel
#

You dont come off as very likable

trail coral
#

youre the one that made fun of my question lmao

#

i matched your energy

#

bitchass

glossy laurel
trail coral
#

nah

blazing ocean
#

sigh why is it so hard for people to be nice

glossy laurel
trail coral
#

can you suck it though?

glossy laurel
#

"I don't have any counterargument to that so can you suck it though" ah response

trail coral
#

what counter argument would i have to something that isnt even an argument

#

you were being rude to me first

glossy laurel
#

ill quote you

trail coral
#

didnt even know what rad had to say about me then

#

when you made fun of my question

glossy laurel
trail coral
#

yeah thats what i said to rad who tf are you 💀

glossy laurel
trail coral
#

my temper is very good you just lack manners

glossy laurel
trail coral
#

and you got the same energy that you gave me

#

idk why youre crying

#

if you didnt want me to be rude you shouldnt ahve been rude to me

glossy laurel
glossy laurel
trail coral
#

nothing you can say will make me feel bad about myself but maybe you should socialize a little and learn how to talk to strangers respectfully and i wont be rude anymore

#

i literally dont knwo you and youre making fun of my question for no reason wasnt even talking to you

#

obv im not gonna like it

#

whats that gotta do with my temper

river oracle
#

what version are you on

glossy laurel
glossy laurel
glossy laurel
river oracle
#

Lol

#

Good luck have fun

glossy laurel
#

😭

river oracle
#

But it'll work for outdated

glossy laurel
#

r u saying I should upgrade?

blazing ocean
#

average miles self-shilling

remote swallow
river oracle
glossy laurel
#

alr ill do that rn

blazing ocean
#

?howold 1.20.4

undone axleBOT
river oracle
trail coral
#

11 months is not old at all lol

glossy laurel
river oracle
#

11 months too old for the new api

blazing ocean
#

meh there's been a fuckton of changes

glossy laurel
glossy laurel
trail coral
#

no one was talking to you ;)

river oracle
#

Can we please just stop being assholes to eachother please

#

Thanks

blazing ocean
#

why is it so hard for you to be nice

trail coral
#

BRO
\

#

I LITERALLY

#

WASNT TALKING TO HIM

#

AND HE REPLIED TO ME

#

AND SAID NO ONE ASKED OYU

#

HOW IS IT MY FAULT

#

ARE YOU GENUIENLY STUPID

glossy laurel
#

11 year old mindset go brr

remote swallow
#

goes for both of you

trail coral
#

im 100% older than you

glossy laurel
trail coral
#

you dont even have basic manners to talk to a stranger

glossy laurel
#

okay thats it enough arguing

trail coral
#

respectfully

#

youre a little fatass kid

#

your skin is fuzed to your chair

#

probably havent seen grass in years

glossy laurel
#

What is your goal here?

remote swallow
#

and it is now where i ping @young knoll

trail coral
#

this is all you do lmao youre just rude to me and when i reply you try to back off

remote swallow
trail coral
#

possibly can you suck it?

glossy laurel
#

what on earth

glossy laurel
trail coral
#

who?

remote swallow
trail coral
#

pick deez up

glossy laurel
#

I genuinely cant tell if hes trolling or not 😭

river oracle
#

Anyways I hope I was of help

blazing ocean
#

this isn't the first time they've acted like this

glossy laurel
#

I didn't need to update any code while upgrading? thats wild