#dev-general

1 messages · Page 603 of 1

quiet depot
#

giving the enemy the upper hand at the expense of the regular folk who would benefit from it being open source

#

mindsets like this is what leads to all the shit in the world

#

police states, war on drugs

cinder flare
#

Oh and the "enemy" can still obviously decompile your code if they really want to get at it

obtuse gale
#

At this point there aren’t any other peoples plugins I’ll use or put on the servers I work on

cinder flare
#

Closed sourcing and obfuscating it does nothing but bring pain for everyone

obtuse gale
#

So I’m not really decompiling anything

ocean quartz
steel heart
obtuse gale
cinder flare
#

They're gonna get it one way or the other

obtuse gale
#

To let them steal it or do worse?

#

That’s not true

distant sun
#

Thats not my point. For example, I was using this BattlePass plugin which was paid but OS, it was very easy to implement a feature for my server with just a few lines of code that to bug the developer or use god knows what else methods to do so.
I'm pro OS and I will do the same with most of my plugins.

cinder flare
#

Oh for Java, it absolutely is

quiet depot
#

it is for any language

#

even the best obfuscation gets broken

cinder flare
#

True, though Java is much easier

quiet depot
#

cough denuvo

obtuse gale
#

Maybe if they get there hands on it

quiet depot
#

saas is a bit unique

cinder flare
#

Okay if you're making private plugins for just your server, sure, make it closed source

obtuse gale
#

Exactly

cinder flare
#

But if you're distributing a closed source plugin, which is what we are actually complaining about, then people will get it eventually

obtuse gale
#

And for others i would hate to pay for something for the public to use it

#

Stuff like anticheats and such need to be closed src

#

Huge market for them

cinder flare
#

Again, no they do not

#

It makes it better for everyone if people can PR fixes and additional features

obtuse gale
#

If we want to give competition the upper hand free of charge then sure

cinder flare
#

I mean again

obtuse gale
#

If everyone knew every check

cinder flare
#

It seems your mindset is beyond fucked

obtuse gale
#

This game would be even more ruined

obtuse gale
#

No I’m just not thinking like I’m in the slums

cinder flare
#

Security through obscurity doesn't work

cinder flare
quiet depot
cinder flare
#

Alright, it seems that your mindset is not something I agree with and something I cannot fix

quiet depot
#

better

obtuse gale
#

Just because you aren’t profiting large doesent mean you need to hate on the ones who are, I respect what anticheat devs are doing

cinder flare
#

So I don't see a point to further discussing

obtuse gale
#

After all it’s one of the hardest things in this game to get a grasp on

cinder flare
#

I am very willing to pay money

wintry plinth
#

The irony here is many are pro-OS which is nice, but meanwhile DeluxeChat is ded and not open-sourced 😂

cinder flare
#

That is absolutely not the problem

wintry plinth
#

same with other clips plugins

cinder flare
wintry plinth
#

Lets open source DeluxeChat, Autosell, EZRanksPro etc

obtuse gale
#

That’s what it ultimately seems like, I don’t see how open source anticheats would help this game at all. And I still haven’t received a good point

quiet depot
#

clip's plugins aren't ours to os unfortunately

cinder flare
#

Oh boy

#

Let's agree to disagree billy

obtuse gale
#

Sure star

#

I agree no hard feelings

ocean quartz
wintry plinth
cinder flare
#

now I go back to playing resident evil and writing Rust code 😌

quiet depot
#

pretty much everyone on the staff team is strongly pro os

wintry plinth
#

Can't you persuade clip then

quiet depot
#

we've tried

obtuse gale
#

he's too busy having a real life

#

ew

wintry plinth
#

Whats the reason he said against?

alpine inlet
#

meanwhile, me: 🍿

quiet depot
#

idk, he just didn't want to

obtuse gale
#

Piggy you own the discord?

quiet depot
#

cube has the crown

frail glade
#

But I see one next to your name?

obtuse gale
#

lol

quiet depot
#

your eyes are playing tricks on you boy

obtuse gale
#

Where’s mine 🙃

#

Purple monkey crown

quiet depot
#

yes

obtuse gale
#

bonzi buddy role

frail glade
#

Why are you in room 3

#

Where'd room 2 go

quiet depot
#

why are you not

#

same place as room 4

obtuse gale
#

Most people don’t tbh lmao

#

yea

#

Sus

onyx loom
#

intriguing.

prisma wave
gusty glen
distant sun
#

1

prisma wave
#

Always 1

obtuse gale
distant sun
prisma wave
#

no but it's literally the same as doing the same thing

#

str.transform(s1 -> Arrays.asList(s1.split(","))); System.out.println(list3); is just the same as Arrays.asList(str.split(","))

obtuse gale
#

it just seems so useless lmao

frail glade
#

tldr of what we're on about?

obtuse gale
frail glade
#

Ahh

obtuse gale
#

it just takes the function and applies this to it

#
public <R> R transform(Function<? super String, ? extends R> f) {
    return f.apply(this);
}
frail glade
ocean quartz
#

Lmao

frail glade
#

I'm working on a patch for Paper potentially. It's going to allow you to specify repos so it doesn't abuse maven central.

obtuse gale
#

yes please 🙏

forest pecan
#

why tf did md5 only make it for central the first place

frail glade
#

Idk but Forge got a legal letter iirc for doing the same thing

obtuse gale
dense dew
#

why can be paper jar downloaded from website but spigot not? is it because paper is downloading other jars?

#

oh

#

wrong channel xsd

forest pecan
#

cause paper uses paperclip which patches the jar automatically when you start the server

frail glade
#

Correct. The paper jar you download doesn't contain any NMS code in it directly. It's a binary patch that is applied to the server jar which gets downloaded at runtime.

obtuse gale
#

ooOOO

#

THAT's why paperclip is so fast

#

it's the diff of the binary

#

not the sources

#

my god that's so genius

forest pecan
#

i thought u knew that

#

lmao

obtuse gale
#

i always wondered why without giving it much of a thought

obtuse gale
#

like a single, merged .patch file

#

but it's the diff of the final binary, not the sources like buildtools bases it on

forest pecan
#

Yeah

eternal compass
#

that's genius

frail glade
#

It's kinda even faster now lately with the bundler stuff. Doesn't provide another jar, just simply applies the diff on it.

obtuse gale
#

Yeah

#

How does it work for library patches tho?

#

They also do some weird stuff if you want to apply patches to one of the libraries

frail glade
#

Check out paperweight

obtuse gale
#

Lazy

languid prawn
#

sorry i mistakly posted messages on 2 channels

half harness
#

alr

frail glade
# obtuse gale yes please 🙏
[21:08:46 INFO]: Added Repo: https://repo.glaremasters.me/repository/public/
[21:08:46 INFO]: Added Repo: https://repo.maven.apache.org/maven2
[21:08:46 INFO]: [Towny] Loading 1 libraries... please wait
[21:08:46 INFO]: Downloading https://repo.maven.apache.org/maven2/com/zaxxer/HikariCP/5.0.0/HikariCP-5.0.0.pom
[21:08:47 INFO]: Downloading https://repo.maven.apache.org/maven2/org/sonatype/oss/oss-parent/9/oss-parent-9.pom
[21:08:47 INFO]: Downloading https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.pom
[21:08:47 INFO]: Downloading https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/2.0.0-alpha1/slf4j-parent-2.0.0-alpha1.pom
[21:08:47 INFO]: Downloading https://repo.maven.apache.org/maven2/com/zaxxer/HikariCP/5.0.0/HikariCP-5.0.0.jar
[21:08:47 INFO]: Downloading https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/2.0.0-alpha1/slf4j-api-2.0.0-alpha1.jar
[21:08:47 INFO]: [Towny] Loaded library E:\Servers\Towny\libraries\com\zaxxer\HikariCP\5.0.0\HikariCP-5.0.0.jar
[21:08:47 INFO]: [Towny] Loaded library E:\Servers\Towny\libraries\org\slf4j\slf4j-api\2.0.0-alpha1\slf4j-api-2.0.0-alpha1.jar
#

WIP

obtuse gale
#

nice!!

forest pecan
#

pdm really crying now in its grave

frail glade
#

SlimJar still pulling through

forest pecan
#

but other than that its perfect

frail glade
#

gson bug?

forest pecan
#

yugi is pretty busy irl so he doesn't have the time to fix

quiet depot
#

why don't you fix it?

frail glade
#

Yeah buddy fix it

forest pecan
#

cause releases

#

he can't release either

frail glade
#

Matt can

#

I'm pretty sure

quiet depot
#

isn't it yugi's project?

#

why couldn't he release it

frail glade
#

Exactly

forest pecan
#

idk why

frail glade
#

When tf did he switch back to Nexus lol

#

Good think I already got shit released. Probably means I can't do another Guilds release until I provide my own.

forest pecan
#

(updated fork to work with latest versions)

frail glade
#

Was wondering why this looked so familiar.

#

Then I scrolled down to the bottom of the README and saw my name.

#

I forgot about this.

ocean quartz
frail glade
#

Ahh

old wyvern
#

I might be able to do it this week

#

Got busy with uni reopening, wave of corona

#

☠️

#

Might make some script to auto setup the vps, oracle is gettinf quite annoying

frail glade
#

If you want to just deploy under mine and keep it there I don't mind, pending it doesn't take up a lot of space. I've had like 99% uptime over the past 3 years.

cinder flare
old wyvern
cinder flare
#

trust me, I literally just did it a few days ago

frail glade
#

Just lmk what you need and I can probably get you it

old wyvern
quiet depot
#

you have to know the page

#

^ replace the region

heavy dragon
#

Is there an alternative javascript expansion for placeholderapi?

static zealot
#

why? what's wrong with this one. other than it having very bad performance and being javascript? kek

onyx loom
#

the alternative is kotlinscript expansion 😌

static zealot
#

man. I love discord. I did send a message about it but turns out I didn't. might be my keyboard and not discord :)))

#

the message was just sitting in the text box

heavy dragon
static zealot
#

it does.

#

since version 2.0.0.

#

you're probably using version 1.6.1 or lower

heavy dragon
#

poggers

real harbor
#

Is there a clearlagg dev build out for 1.18+?

#

dont find it right away on the internet

static zealot
#

don't

#

don't

#

dont

#

do not

#

donut

real harbor
#

whuut

static zealot
#

do not use clearlag

#

lel

#

its not worth it

real harbor
#

what should i use then?

#

nothing?

static zealot
#

yeah. there's special settings in spigot.yml or paper.yml to make some items despawn faster if you want. but clearlag can make things worse

real harbor
#

okey ty

static zealot
distant sun
static zealot
#

tru

bronze parcel
#

someone who could help me with VotingPlugin? Im struggling on that like 3 days

static zealot
bronze parcel
#

im looking for someone who can talk with that with me in DM

obtuse gale
#

flskncx

#

bro stfu ok?

ocean quartz
static zealot
#

oh. I was waiting for this

rough ocean
#

Does someone know a crates plugin that supports custom nbts?

obtuse gale
#

OpCrates

remote goblet
#

also Eternalcrates CB_fingerguns

faint bobcat
#

hey people.
so on my machine i have D:/epic folder/. how can i make the dockerized app read that directory?

#

it's not changeable and must be there

#

volumes arent helping or im too dumb idk

quiet depot
#

sounds like a question for lemmo the tresto

faint bobcat
#

i texted him today morning and he was helping and all was good then he suddenly disappeared D:

steel heart
#

@quiet depot sorry for ping. But when I use the plugin instance with guice is this fine?

class BukkitModule extends AbstractModule {
  final Plugin plugin;
  BukkitModule(Plugin plugin) {this.plugin = plugin;}

  @Override void configure(){
    bind(Plugin.class).toInstance(plugin);
  }
}```
#

(I just got started with it so don’t know if there are any better ways of binding the plugin instance)

mystic cradle
obtuse gale
#

world hunger?

static zealot
#

yeah.

prisma wave
#

oh it's you

distant sun
humble silo
#

Could someone try adding this dependency to their gradle project? implementation("net.yakclient:mixins-base:1.1.2") I cant get it to load on my system, idk if it works for other people

#

Its my own thing published to maven central and it used to load half the time, but now its gradle is just having a ton of troubles... on maven it works like a charm

humble silo
#

ya i know

#

but gradle isnt getting it

#

i have no idea why

mystic cradle
#

Hm

humble silo
#

Its loading the .pom and .module, but the sources or jar isnt being loaded

#

when checking the caches

#

I feel likes its just a issue on my local machine

#

but idk

mystic cradle
#

Clear all your caches

humble silo
#

Would it be bad to delete the entire gradle directory?

humble silo
#

and the .m2

mystic cradle
#

Have you cleared the .gradle/caches dir?

obtuse gale
#

--refresh-dependencies moment

humble silo
humble silo
obtuse gale
#

Sucks

humble silo
#

lol

humble silo
mystic cradle
#

And you invalidated intellij caches too?

humble silo
#

ya i have, ill try again though

#

and delete all the stuff

distant sun
#

Does it require a certain java version? I swear, gradle peeps should add a message about that 🥲

humble silo
#

*caches

mystic cradle
#

And you do have mavenCentral() in your build, right?

humble silo
#

i do

#

ya

mystic cradle
#

Hm

#

No clue then

humble silo
#

all the other dependencies load fine

humble silo
distant sun
#

I think the problem is when you use a lower version, not higher

humble silo
#

ya, it definitely shouldn't be higher, but ill check... having a friend try it on their computer now

mystic cradle
#

It could be that the hashes don't match up maybe?

humble silo
#

Its super weird, it loading the .pom and .module(so gradle is finding it) but it wont load the jar javadocs or souces...

#

still the same issue with an earlier version

mystic cradle
#

Just tested

humble silo
mystic cradle
#

Loads fine for me

humble silo
#

really

#

alright well thanks for testing, what gradle version are you on?

mystic cradle
#

7.3

humble silo
#

great thanks, ok im on 7.3.1, ill try downgrading

mystic cradle
#

Actually I'm on 7.3.3

#

Didn't know the patch version

humble silo
#

oh alr, ok ill try that

#

@mystic cradle What version are you on? Java version?

mystic cradle
#

16

humble silo
#

uhg... ya it looks like a version issue

#

idk how i didnt catch that....

#

thanks for helping, i made a fix for this a couple months ago just never pushed it i think

#

published

brittle leaf
#

im on attempt 3 of enchantment plugin

#

or attempt 5 i cant remember

#

cause i hate how i made it but dont want to rewrite it

#

so ill rewrite it seperately

half harness
#

ig ill just change it from double to float 🤷

obtuse gale
#

float pepepuke

half harness
#

lol

prisma wave
#

BigDecimal

#

pretty sure that doesn't use floating point arithmetic

obtuse gale
#

relieved

half harness
#

D:

obtuse gale
prisma wave
#

get good

obtuse gale
#

you could also

#

like

#

use a proper number formatter

prisma wave
#

Or if you're calculating money don't use any decimal type

#

Or that yeah

half harness
#

im storing custom currency

#

sorta

#

xp

obtuse gale
#

for currencies use BigDecimal

prisma wave
#

Depends

obtuse gale
#

100%

obtuse gale
#

no

#

nonon

#

shut up

half harness
#

but then when serializing/deserializing i have to convert

#

😩

prisma wave
#

For normal human currencies just use an integer type

half harness
#

not normal human

prisma wave
#

If you don't have an "atomic" type then BigDecimal

obtuse gale
#

what are you gonna do

#

oh no

prisma wave
#

stop being silly

half harness
#

well

#

im using triumphconfig for config which also has to store config stuff and gson for data storing

#

gson = good

prisma wave
#

I don't see how that changes anything

obtuse gale
#

IF ONLY gson could serialize BigDecimal

#

IF ONLY

half harness
#

i dont think triumphconfig supports bigdecimal

#

¯_(ツ)_/¯

obtuse gale
#

mittenlib supports custom object mapping

prisma wave
#

Shitty library if you can't register custom serializers

#

True...

half harness
obtuse gale
#

also I'm fairly certain gson supports bigdecimal by default?

#

not 100% sure

#

more like 25% sure

prisma wave
prisma wave
#

So whats the problem

half harness
#

triumphconfig

prisma wave
#

it uses gson

obtuse gale
#

holy shit dkim

half harness
#

but

#

but

#

triumphconfig is

#

yml

prisma wave
#

don't care

obtuse gale
#

your problem

prisma wave
#
  • ratio
half harness
#

D:

#

ok

#

so for triumphconfig

#

i store as string?

#

or double

obtuse gale
#

there's a java.sql.Date typeadapter huh

prisma wave
half harness
#

but what if it breaks

prisma wave
#

And if that doesn't work then you come back and cry to us and then we suggest something else

#

Easy

half harness
#

ok

prisma wave
#

:)

half harness
#

💀

#

i think i messed something up

obtuse gale
#

well fix it

half harness
#

pog it works

#

:D

steel heart
#

Or well wym another class? O.o

#

Cuz yeah I could bind(Plugin.class).to(SomePluginDerivative.class) altho that’d require guice to instantiate an instance of SomePluginDerivative.class which Bukkit actually does so kinda rip

brittle leaf
#

i have a working test version of my telekinesis enchant

#

which is just a put block in inventory enchant for all tools and weapons

steel heart
#

Pog

brittle leaf
#

tho currently it applies to every block break

#

tho it works which is good

steel heart
#

Stonks

brittle leaf
#

ive been going about making custom enchants the wrong way, this time i started with the enchangs instead of the enchant gui

#

and i dint burn out

steel heart
distant sun
steel heart
#

Well doesn’t all the binding needs to be done inside a module?

#

Or am I stupid?

obtuse gale
#

well maybe all the bindings need to be done inside a module and you're stupid simultaneously

steel heart
obtuse gale
#

hello pig

#

how's the day treating you so far

#

ok

#

pig literally hates me

quiet depot
#

i

#

yes

#

i am good

#

the day is treating me good

primal crystal
#

Hey...is any one here good with regex...i have not yet used it
I would need to check for a match within 2 strings...by keywords....

So for example, There is a string stored with the "Hello, Have a good day" & my keyword is good day...what shall i need to do?

eternal compass
#

just check for that exact string

primal crystal
#

Contains will search for given characters, what i want to check is exact* words...

For eg: if the string is "Every day" and my search keyword is "ever" it will return true...

primal crystal
mystic cradle
#

What tier is required to post images

primal crystal
#

hmm...sorry my bad...i meant to be exact...

so friend will return true for friendly and friends also right?

i don't need it like that...i need friend to return which contains the word friend and not those others which contains the characters friend as in friendly and friends...

it was my bad not explaining it correctly sorry... 😃

#

is DM fine..?

versed vortex
#

how would u recommend managing dbs for something like this
there are long term things that you don't need to load every time you're fetching a player's profile like their chat history, but there are also things like their permsisions, nick that you might need to be able to access quickly

so should u have two different databases, one for long term storage and one for short term (redis or smt)?
or should you use redis + mongo and use redis as a cache

#

b/c there'll be like a ServerPlayer class that represents a player
and if we do getServerPlayer("player") and that fetches everything, it might cause unecessary lag

ie: you don't need to fetch a player's entire chat history just to check if they have a certain permission

so how would u do this?

#

so if ServerPlayer john;
john.getName() would use the in memory db
john.getStats() would use the long term db?

hallow crane
#

prometheus

#

won’t cause lag unless you intentionally block the main thread

versed vortex
hallow crane
#

long term storage

versed vortex
#

oh ok

#

isn't mongo good lt storage?

#

good enough?

hallow crane
#

not actually applicable unless it’s time series

#

mongo isnt “good enough” there’s no such thing

#

it’s about your specific needs

#

if you’re storing “player data” then maybe documents would work maybe relational it’s very specific to what you need

humble silo
#

@mystic cradle finally got it working... you called it from the start... thanks

#

multi release jars ftw

mystic cradle
#

I called it from the start?

#

What was it

humble silo
#

The version stuff, turns out i was compiling for 13 and trying to use it in a 11 project

mystic cradle
#

Oh I'm not the one who said that

humble silo
#

I had actually created a mr release of it a couple months ago but never published it

mystic cradle
#

I don't remember who it was but it was someone else in the channel

humble silo
#

well thanks for the help and testing it out on your machine anyways

mystic cradle
#

👍

versed vortex
# hallow crane not actually applicable unless it’s time series

so if im implementing parties for example

I can have the in memory db hold a list of party uuids, each party has the names of its players

if the player does some action, how do we find the party they're in. should I also store the party uuid with the player, or just do a search (that doesn't seem too efficient)?

hallow crane
#

i think you’re breaking down this problem too far. you should think of this as a general problem to solve with a specific solution. for the case of “parties” you want it to be fast and efficient, so don’t even think about disk writing. redis works as in memory.

#

don’t store a “party uuid” with a player, but instead have the party itself contain information about a particular set of users

#

think of it like a real life problem. if you want to search for files in a cabinet beginning with A, then you put all the A documents in one folder. You don’t go to each a document in different folders and write “this starts with a” onto it

versed vortex
#

got it

hallow crane
#

unless you work with a tags system, but that’s a whole other problem

versed vortex
#

but if i have a player class already, that has all their profile info, then why not add the party UUID in it too?

#

that way when the player executes a party command, i don't have to go searcher thru every party to find the party that player is in

hallow crane
#

because that’s not necessary

#

are you going to look through every single user to find their party? you should look through users find their parents . unless it’s something that is static. if a user is in a group that doesn’t change often then you should keep it with the user. I assume you can leave and join parties quickly

#

Now this is entirely different from tacking on a method to the player called “get party” or something like that. you don’t have to provide an implementation of the data inside that class, just go fetch it and return a completable future

versed vortex
#

confusion

#

its ok im not really doing parties rn, i was just curious

#

ty tho

obtuse gale
#

And have map<PartyUuid, Party>

versed vortex
#

yeah that works

#

prolly much smarter

#

lol

hallow crane
#

second one concept is good but the first one is not the way to do that

obtuse gale
#

Depends how many parties you expect

#

Will get much slower the more parties

hallow crane
#

No it won’t

#

It’s not about amount it’s about general efficiency and data structure

#

when you want to expand functionality and maintain it falls apart

obtuse gale
#

You think looping through each party and each member is going to be more efficient than two maps in the end when you have a lot of players. Either way works but eh. Easy way of making parties unique and you can use an identity map for the player to be even quicker.

hallow crane
#

identity maps fall apart when you use a heap object key but that’s besides the point

obtuse gale
#

Fall apart?

hallow crane
#

it’s not about “maps are fast” it’s really about how is this going to scale in the future

obtuse gale
#

How so the difference would be you need to pass your maps around and you can even have a single helper function. And then again with your idea of a system you don’t even know if they are in a party

#

So you’re doing useless iteration over who knows how many players and parties to maybe get no result

hallow crane
#

why would you not know if they’re in a party

#

there’s no useless iteration here

obtuse gale
#

With a map you can do map.get(player) == bull

#

Vs looping every single party

#

And determining if a player is in a party

hallow crane
#

if you chose the data model of storing a changing (not static) party identification with a player object then you just query the party via the id of it

#

I never said loop the party array and each player in it

obtuse gale
#

In simpler terms

hallow crane
#

i’m waiting for you to provide me with the wisdom you have that i do not possess

obtuse gale
#

Doesent seem much different with a party id

hallow crane
#

you wanted a map with a player key and a party id value

mystic cradle
#

You're talking about effectively a player wrapper class, right?

hallow crane
#

that is unnecessary abstraction of the general concept of encapsulation

mystic cradle
#

And the wrapper class would hold the party information

hallow crane
#

Not exactly

#

But yes

#

That is a solution that’s reasonable

mystic cradle
#

That would be more efficient than a hash map but you would still need a way to get the wrapped player from the regular player

obtuse gale
#

How so?

hallow crane
#

That is implied

mystic cradle
#

Which you'd likely need to use a hash map for anyways

hallow crane
#

I wouldn’t

obtuse gale
#

Nothing makes it more efficient at a large scale

hallow crane
#

We’re not talking about specific issues here just the general concept

obtuse gale
#

Now you have parties holding players

hallow crane
#

it definitely does actually

obtuse gale
#

And at a large scale how do you check if a player is in a party without having to check every party in the idea of any other system?

mystic cradle
#

How would you retrieve the wrapped player instance for a regular player instance if not with a map?

hallow crane
#

maps tend to skew towards ologn but when you have the query dependent on something like in memory cache it usually becomes olog1

mystic cradle
#

There's no such thing as O(log1)

#

And maps are generally O(1)

hallow crane
#

*o of 1

#

Generally is the key here

mystic cradle
#

Yes technically maps have a worst case of O(n)

hallow crane
#

with all due respect I know what i’m talking about

mystic cradle
#

But they have an average case of O(1)

mystic cradle
old wyvern
old wyvern
mystic cradle
#

But again, please tell me how you would retrieve the wrapped player object from the regular player object if not through a map

obtuse gale
#

Still doesent scale to iterating a bunch of parties for a nullable result

hallow crane
#

no, source: I am an engineer at a utilities firm and this is my full time job

mystic cradle
#

From my understanding that's not what yako is proposing

hallow crane
#

that’s correct

mystic cradle
mystic cradle
#

Sorry the rest of us are so dumb compared to your blinding radiance

old wyvern
#

source: "Ad played b4 porn"

hallow crane
#

yugi i don’t want to hear it your slimjar let me down big time

mystic cradle
#

Could you explain it in layman's terms so an imbecile such as myself could understand?

hallow crane
#

no chance of it working long term

mystic cradle
#

Like I'm really curious how you would retrieve the wrapped player instance

obtuse gale
#

Yes let’s loop through all the parties and all players for a nullable result then say maps are slow.

old wyvern
obtuse gale
#

This is the idea you proposed

mystic cradle
#

And I would also be very interested to know your secret knowledge which contradicts common knowledge of hashmaps https://imgur.com/bzpbL3G

obtuse gale
#

I’m legit terms

hallow crane
#

no it’s not. I said there are many solutions including this it depends on context

mystic cradle
#

Not being able to paste images is very annoying, when do I gain that ability

hallow crane
#

when you grow up

mystic cradle
#

Thank you yugi

#

🙏

obtuse gale
#

Parties are mutable therefore it’s better off being unique

mystic cradle
#

If the average case was O(logn) I am fairly sure it would say O(logn) on wikipedia but who can trust wikipedia anyways

mystic cradle
#

Ok for real though how would you retrieve the wrapped player instance

old wyvern
#

Black magic ofc!

mystic cradle
#

You could use something like a scoreboard tag to store the party directly on the player

#

But that would just have to be an identifier

old wyvern
#

You conjure up satan

#

And ask him nicely

obtuse gale
#

Definitely not haha

mystic cradle
#

You would still need to lookup the party by its identifier

old wyvern
#

Im sure he'l be kind enough to provide it

mystic cradle
#

So really I am so curious to know the secret

#

Dude's been typing a while

hallow crane
#

Think about having 100,000 users and 1,000 parties. On one hand, you have a map that needs to hold 100k keys and 100k values. In the worst case, a HashMap has an O(n) lookup due to walking through all entries in the same bucket (if they all have the same hash code). Now think about if you had a HashMap with only 1,000 parties that you queried based on an already existing reference in the heap to a user with an associated party. Still the same worst case, but n is smaller. You need to think about the whole call stack and heap contents here. Not just “this is in memory so I need to convert it first before using it”

mystic cradle
#

If your hashmap has the same hash code for every entry you should buy lottery tickets

hallow crane
#

The entire point is scaling

mystic cradle
#

You'd do as well to worry about uuid collisions

hallow crane
#

I don’t think you’ve ever developed an enterprise application

#

You need to understand this because it’s a nonzero situation

mystic cradle
#

Yes it's nonzero but so are the odds of uuid collision

#

So go worry about those

hallow crane
#

That’s like saying I’ll never get struck by lightning

mystic cradle
#

I probably won't

median quiver
#

UsE ArRaYlIsT

quiet depot
mystic cradle
#

But let's see

old wyvern
mystic cradle
#

You can have ~4.2 billion hash code outputs, yes?

old wyvern
mystic cradle
#

Let's do 4.2 billion to the power of 100,000

#

That's your odds of them all colliding

hallow crane
#

And it’s worst case, not no case. It’s usually O1 but what even is usually when you can run billions of calculations?

mystic cradle
#

Oh right yeah

#

Forgot it scales to the hashmap

quiet depot
#

i identify as a hashmap

mystic cradle
#

1/(100k^100k) is still just insane though

median quiver
#

yako is right, when you code you should always think about the worst case

old wyvern
#

I mean, do you stay inside 24/7 all year round because a Lightning MIGHT strike you?

mystic cradle
median quiver
#

no lol

mystic cradle
#

Worst case scenario someone guesses your RSA private key first try

quiet depot
#

what are we even talking about

mystic cradle
#

Probably also about as likely

old wyvern
mystic cradle
#

This guy is saying you shouldn't use hashmaps that will hold 100k elements because what if they all have colliding hashes

#

Like sure it's technically possible

#

But your odds of it actually happening are so close to zero that it's insane to even consider

old wyvern
#

You have a better chance of winning the lottery a 100 times

median quiver
#

if it's technically possible then don't use it

mystic cradle
#

Damn

#

Y'all better get off your computers then

#

Someone might guess all your passwords by mashing random buttons on their keyboards

#

Huge security hole, always plan for the worst case

hallow crane
#

Here’s an interesting video you might like https://youtu.be/L6z10OvE5DI

This bug is something I encountered several years ago while working on a custom inter-process communication layer for a piece of embedded software inside of some big machine. During stress testing we found that the software crashed unexpectedly about once or twice per week. When trying to analyze it I reduced the problem to this little program a...

▶ Play video
mystic cradle
#

Ok 1 in 400 billion is one thing

old wyvern
hallow crane
#

It explores probability

mystic cradle
#

But 100k^100k is like

#

Absolutely, insanely, incomprehensibly large

hallow crane
#

Probability in software is no joke

median quiver
mystic cradle
#

Ok and there are ~10^300 atoms in the observable universe

old wyvern
mystic cradle
#

100k^100k is just

old wyvern
#

probability is less

mystic cradle
#

Like, you can't even describe how large that number is

#

Ok sorry

#

I stand corrected

#

There are an estimated 10^80 particles in the universe not 10^300

median quiver
mystic cradle
#

So worrying about a 1/100k^100k outcome is truly absurd

#

Literally everything breaks down if you hold it to that level of scrutiny of the most improbable odds

old wyvern
mystic cradle
#

Every digital security measure relies on your attacker having a very small chance of guessing your password, RSA key, whatever it is

#

Being struck by lightning is something we can at least comprehend the odds of

#

1/100k^100k is not

#

You could have every computer man has ever made iterating on every core on empty loops since the beginning of the universe until today and you still would not be anywhere near 100k^100k

#

Like I'm guessing you would be less than 1 googolth(if this is a word) the way there

hallow crane
#

We’re not talking about parties anymore if you didn’t catch that

#

This is about Java performance

#

Sure party ids that are uuids won’t have the same hash code but what if they were shorts and their happened to be too many parties to overflow?

mystic cradle
#

Yeah and with any sane hash function you really shouldn't worry about hash collisions on that magnitude

hallow crane
#

Like I said it’s about scaling, performance, and actual logic

#

That’s true

#

But it depends

mystic cradle
#

"actual logic" get off your high horse man

#

A hash map is a perfectly reasonable solution to this

hallow crane
#

You mean the high horse where I proved you wrong with math?

mystic cradle
#

It's literally what it's designed for

#

Where did you prove me wrong lmao

#

I am losing my mind here

hallow crane
#

I didn’t say it wasn’t, I said I wouldn’t do that because it’s not enterprise

mystic cradle
#

@old wyvern gimme some sanity juice I'm dying

hallow crane
#

That model breaks down when there’s one bucket

mystic cradle
#

When will there be one bucket

#

If you have one bucket it's a list

#

Yeah lol

hallow crane
#

These are real case scenarios

mystic cradle
#

No they're not

distant sun
#

🍿

mystic cradle
#

They're scenarios you have made up because you want to seem right despite all contrary evidence

hallow crane
#

Yes it absolutely is

#

In real unit testing you need to make these scenarios because they happen in real life

mystic cradle
#

brb gonna tell google to not use hashmaps because there's a technical possibility they end up iterating over all their data

#

No they don't

#

Yako, tell me

hallow crane
#

Problems start when we have a lot of hash code collisions, so instead of a big number of small buckets, we have a small number of big buckets. In the worst-case scenario, in which we put everything inside one bucket, our HashMap is downgraded to a linked list.

mystic cradle
#

If I were to try to break into your discord account

#

Would you fear me?

hallow crane
#

This isn’t a fake thing

mystic cradle
#

Would you fear the possibility that I guess your password first try by mashing buttons on the keyboard at random?

#

Would you fear that I make a completely random key and come unlock your door?

#

Or do you realize that those are absurd things that would never happen?

hallow crane
#

I don’t doubt it’s happened before

mystic cradle
#

Because these are many orders of magnitude more likely than what you are describing

hallow crane
#

That why I use LastPass. Use code Yako for 10% off at checkout

mystic cradle
#

.-.

#

A password manager doesn't really change anything when we're talking at this level of improbability

#

Use the goddamn hashmap

#

Or don't

#

But stop trying to act like you know better than everyone else and better than the well-known behavior of one of the most common data structures

#

I don't know if you just refuse to admit you're wrong or if you genuinely believe that it's bad to use a hashmap for data at scale

hallow crane
#

Again you’re putting words into my mouth

mystic cradle
#

Because a hashmap is literally built to scale

#

Like, you could make the same argument about quick sort

#

A pivot is chosen at random

hallow crane
#

My entire point was that given a ton of data, some of it will be broken. Combat that by developing something enterprise grade

mystic cradle
#

If the pivot is one of the extreme elements of the data every single time, then it's O(n^2)

hallow crane
#

After all this is a Minecraft discord so use linked lists for block ids I don’t care

mystic cradle
#

But are you gonna say we shouldn't use quicksort for large data sets because of this?

quiet depot
#

ah yes

mystic cradle
#

No, because you realize that the odds of choosing an extreme element as the pivot every single time is astronomically unlikely

quiet depot
#

the genre of this discord by nature, means all information shared in here is of no value

mystic cradle
#

Of course

#

I am but a simple, dumb minecraft man who has no knowledge in the field beyond

#

Notice how nobody but you has thrown your credentials around like it means anything in the face of serious research and precedent

#

But that doesn't mean none of us have credentials or experience

#

You would have made a more compelling argument if you told me that you wanted to use a smaller hash map to save memory and the runtime would be negligible with only 1000 players, because if you were doing those checks relatively infrequently then it would probably be true enough

#

But statistically speaking it's more likely for a smaller hash map to have all of its keys generate the same hash, because that's just how statistics work

quick flume
#

I like hash 👍

mystic cradle
#

Random distributions tend to look increasingly similar to uniform distributions the more data points you generate

#

Nobody would ever worry about a hashmap with 10 elements all having the same hash codes because it wouldn't really matter

#

And nobody worries about a hashmap with 100k elements all having the same hash because it's so close to impossible that you might as well consider it such

versed vortex
#

lmao to think this all started by a simple question abt parties

#

lmao

mystic cradle
#

Yeah lol

#

damn

frail glade
#

Okay so after reading this conversation no one has provided me with a spoonfed class of the most optimized implementation for this and now I'm sad.

steel heart
#

Also piggy, which one is iyo best/cleanest @Provides or LinkedBindingBuilder::toProvider?

boreal needle
#

is there some kind of intellij plugin that i can use to deploy a plugin to a remote server for testing?

#

my laptop is a little short on ram to handle a client, a server and ij at the same time

errant geyser
#

This is probably a horrible way to do it but I made a bash script that will build my application and then upload it to my VPS for testing via sftp, then logs into it with ssh and starts it. It works, just probably isn't advisable

wintry plinth
boreal needle
#

maybe I'll write a plugin for it or something

prisma wave
prisma wave
steel heart
prisma wave
#

SRP I guess, just seems cleaner

steel heart
#

Hmm alright well do you create a new class and derive Provider or just supply a lambda?

obtuse gale
#

@prisma wave what did you get purple monkey for christmas

prisma wave
#

Ummmm

prisma wave
steel heart
#

Oh ok, thank you Santa, a truly wonderful gift

quiet depot
#

@steel heart I usually only use configure() for dynamic shit

#

stuff like main,

#
@Provides
@Singleton
public JavaPlugin providesMain() {
    return main;
}```
steel heart
#

Ah okay interesting

#

Oh yeah I looked at the way you used guice, why do you create like a set of registrables and then pass those to the dynamic thing or whatever? As of now I manually bind

quiet depot
#

allows me to bind something

#

inject it

#

and then bind something else

#

e.g. I might bind a config class in registerable 1, and then I can immediately inject it in registerable 2 and bind something else which depends on config

steel heart
#

Hmm right, I believe it does that automatically? Like making sure to inject in the right order?

quiet depot
#

wym

steel heart
#

for instance

class Config {
}
class Else {
  @Inject Else(Config config){}
}

{
  Guice.createInjector(new AbstractModule(){
    configure(){
      bind(Else.class);
      bind(Config.class);
    }
  });
}```
This would work fine I think as guice tries to resolve the order (even tho we bind Else before)
quiet depot
#

nah wouldn't work

steel heart
#

Weird it did work just fine, might be since I use guice 5

quiet depot
#

oh

#

yeah it would

#

but like

#

that's not quite the same as what I said

#

because imagine if you needed the actual injected instance of config to bind else

#

e.g. let's say ur binding jda which depends on config, cuz u need the token from config

steel heart
#

Oh yeah true

quiet depot
#

for that to work u'd have to initialize ur config outside of guice

#

or you do some wizardry like my registerable system

steel heart
#

Ah, very nice

quiet depot
#

my registerable system basically just goes through the list of registerable classes and injects them one at a time

#

but the injector itself changes

#

if a registerable registers any bindings a new child injector is created and that's used for any further injections

steel heart
#

Oo, well I haven’t arrived at the need of using child injectors yet but thanks for the insight

quiet depot
#

chances are you won't want or need a system like mine

#

loads of peeps use guice and don't do anything like mine

#

just depends on your design

steel heart
#

Yeah fair enough, guice is surprisingly fantastic, also right now I have a lot of binded injects which are scoped singletons, does that signify bad design?

quiet depot
#

nah

#

nothing wrong with guice singletons

#

there's no difference between a guice singleton & passing an instance via a constructor

steel heart
#

Ah okay pog

brittle leaf
#

how would i go about turning a hashmap into a single string?

#

whats the methods for it

#

or the library for it

#

i cant remember what its called

obtuse gale
#

toString

brittle leaf
obtuse gale
#

Lol

brittle leaf
#

telekinesis:1,fire_aspect:2,sharpness:5

#

like that

obtuse gale
#

I mean toString will do the job but slightly different, what do you want to achieve with this? What is this for?

brittle leaf
#

using persistentdatacontainer to store the names and levels of custom enchantments

#

because i dont want to store what enchantments exist using an items lore

obtuse gale
#

I'd advise storing each pair/entry individually, rather than one large string, but in any case whatever you do just iterate through the map.entrySet, and build them strings

brittle leaf
#

i dont know what to use

static zealot
#

and when you get it, if its null it means it didn't have the enchant.

brittle leaf
#

im not sure how persistentdatacontainers store the data tho, like its layout if you used like a nbt viewer or something

static zealot
#

why do you care about that?

brittle leaf
#

because i wanted it to be sorta organized

static zealot
#

ugh. its a key-value pair. its organised.

brittle leaf
#
CustomAttributes: {
  enchantments: {
    telekinesis: 1
  }
}
#

i just wanted something like that

#

ive never used persistentdatacontainers and im not sure what to use to get that result

static zealot
#

wait. why do you even store the enchantment as a pdc? you should take a look at BMs example on how to register custom enchantments

brittle leaf
#

i want to change how the default enchantments work aswell later

#

i dont believe i can override the vanilla enchantments if i just register custom enchantments using the default way

distant sun
#

Does anybody know a service like git that can be used for hosting certain projects on cloud and when updating it on another computer, it will update/download only the new files?

eternal compass
#

Called uh

#

git :p

#

Whu not use it? 👀

distant sun
#

I basically have a local test server and I want to sync it between laptop and desktop, I dont think I'm supposed to use git for that xd

eternal compass
#

Why not? 👀

#

And it seems incredibly cool actually

#

Direct API imports

#

Pre built login

distant sun
static zealot
#

wtf. my microphone picks up the sound from my left speaker.

onyx loom
#

ok

prisma wave
#

ok

wintry plinth
#

ok

forest pecan
#

ok

eternal compass
#

ko

distant sun
sick belfry
#

for moving the files and history of commits

#

idk man

#

goodle it

eternal compass
#

for configs and such use git

#

for databases... eh that one's tricky

cinder flare
#

I used DropBox at one point to sync between my laptop and desktop

distant sun
#

Yeah but not code, the actual server files (world folders, jars, etc.)

brittle leaf
#

i love how since they moved all the classes around i cant find anything

#

nms makes me cringe

#

i think i crashed my intellij

#

i did

obtuse gale
#

that's what you get for using server internals peepoFlute

brittle leaf
#

how the hell do people know whats what

obtuse gale
#

by.. reading?

brittle leaf
#

reading what exactly?

obtuse gale
#

class and method names? lol

brittle leaf
#

the class names arent that bad

#

its worse when the method names are letters

obtuse gale
#

mojang mappings peepoFlute

brittle leaf
#

when i was using 1.16 NBT had a hadTag() and getTag(), now neither exist for some reason

obtuse gale
#

why would you use internal NBT

#

there's API for everything you need

brittle leaf
#

cause PDC was pissing me off

obtuse gale
#

learning is a non-option?

brittle leaf
#

and there is no info on how to use TAG_CONTAINER

obtuse gale
#

it uses a PersistentDataContainer for the value, not sure what else is there to explain

brittle leaf
#

yes but there is no info on how to create a new PDC

#

which is what i assumed i needed to do what i wanted

obtuse gale
#

you create one from the PersistentDataAdapterContext, which you get from the PersistentDataHolder (I believe)

#

actually you get it from the PersistentDataContainer itself rolypolyclown

brittle leaf
#

i just did new PersistentDataContainer() but it gave me some boilerplate for has, get and set

obtuse gale
#

right, because you don't do that, lol

brittle leaf
#

what do i do then?

obtuse gale
#

[19:03] Emily: you create one from the PersistentDataAdapterContext, which you get from the [...] PersistentDataContainer itself

brittle leaf
#

love how it didnt tell me that

#

im blind

obtuse gale
#
PersistentDataHolder dataHolder = ...;
PersistentDataContainer dataContainer = dataHolder.getPersistentDataContainer();
// yada yada add simple values like ints and strings

PersistentDataContainer complexStructure = dataContainer.getAdapterContext().newPersistentDataContainer();
// add values to my complex structure

dataContainer.set(key, PersistentDataType.TAG_CONTAINER, complexStructure);
#

you can also make your own custom type adapters

#

so you can do stuff like container.set(key, MyDataTypes.USER_TYPE, user) (as a mere example)

#

there's an example for UUID in the PersistentDataType javadoc

brittle leaf
#

i just wanted to store multiple ints

#

just under one key instead of many

obtuse gale
#

there's literally an int array type lol

brittle leaf
#
Enchants {
  sharpness: 5
  fire_aspect: 2
  telekinesis: 1
}
#

like that

obtuse gale
#

well that's not "many ints" as in an array, that's a map-like type (specifically, a PersistentDataContainer)

brittle leaf
#

so i was on the right track

#

needed a tag_container

obtuse gale
#

yes

obtuse gale
#

Emily do you have a job rn?

brittle leaf
#

itemstack#getorcreatetag() == itemstack#t() now

obtuse gale
#

why?

#

Jw

brittle leaf
#

hasTag() == r() bool
getTag() == s() NBTTagCompound
getOrCreateTag() == t()

#

weird

#

in 1.13.2 they werent obfuscated but in 1.18.1 they are

#

not sure when that changed

obtuse gale
#

How the server jar is built

#

Just use paperweight userdev and use mojang mappings

brittle leaf
obtuse gale
brittle leaf
#

i use maven not gradle

obtuse gale
#

Sucks

brittle leaf
#

mainly cause i started with it

obtuse gale
#

I believe spigot has a solution for that too but for maven but idc about spigot so idk how reliable it is

ocean quartz
#

Md has one for maven right? 🤮

obtuse gale
#

many have said it works for things like 10-line example plugins but then it doesn't for anything a bit too complex lol

brittle leaf
#

imma just figure out how to use remapped spigot jar with maven

#

google will tell me

sly sonnet
#

or just don't use maven ??

obtuse gale
#

that's the sanest of choices

prisma wave
#

so true...

brittle leaf
#

ive been using maven since day one and dont really know gradle and my project is already in maven so

sly sonnet
#

there is literally no reason to not use gradle

brittle leaf
#

¯_(ツ)_/¯

obtuse gale
#

I too started with maven

#

so what?

prisma wave
#

everyone started with maven

cinder flare
#

they're very similar, the learning curve is not very high

sly sonnet
#

I started without maven or gradle lol

cinder flare
#

you just need less angle brackets lol

obtuse gale
#

oh I remember when star used to prefer maven 👀

cinder flare
prisma wave
#

real ones remember when bardy said kotlin sucked

cinder flare
#

oh my god yeah

#

look at him now, writing a Minecraft server impl solely in Kotlin!

prisma wave
#

🤢

obtuse gale
#

skull

#

woozy_face

#

clown

prisma wave
#

skull_crossbones

#

haha

#

bones

obtuse gale
#

cold_face

#

or

#

Kold_face

cinder flare
#

get out

obtuse gale
#

i'd rather not, thank you for your offer

steel heart
prisma wave
#

fake

cinder flare
prisma wave
#

shitty photoshop

#

you've got like 3 pixels

obtuse gale
#

ayo guys

#

did you know that a

#

did you know that A monad is an abstraction that allows structuring programs generically. Supporting languages may use monads to abstract away boilerplate code needed by the program logic. Monads achieve this by providing their own data type (a particular type for each type of monad), which represents a specific form of computation, along with two procedures:

  • One to wrap values of any basic type within the monad (yielding a monadic value);
  • Another to compose functions that output monadic values (called monadic functions).

This allows monads to simplify a wide range of problems, like handling potential undefined values (with the Maybe monad), or keeping values within a flexible, well-formed list (using the List monad). With a monad, a programmer can turn a complicated sequence of functions into a succinct pipeline that abstracts away auxiliary data management, control flow, or side-effects.

Both the concept of a monad and the term originally come from category theory, where a monad is defined as a functor with additional structure. Research beginning in the late 1980s and early 1990s established that monads could bring seemingly disparate computer-science problems under a unified, functional model. Category theory also provides a few formal requirements, known as the monad laws, which should be satisfied by any monad and can be used to verify monadic code.

Since monads make semantics explicit for a kind of computation, they can also be used to implement convenient language features. Some languages, such as Haskell, even offer pre-built definitions in their core libraries for the general monad structure and common instances.

cinder flare
#

it was an april fools joke obvs

prisma wave
#

oh yeah

#

shitty american dates

sly sonnet
#

04

brittle leaf
#

love how with the remapped jar NBTTagCompound disappears

#

such fun

steel heart
cinder flare
#

oh was that not april fools

#

awkward lol

steel heart
#

🥲

prisma wave
#

epic america fail

cinder flare
#

damn conclure, you're swedish?

#

how's living in the same country as Notch

steel heart
#

It’s epic

cinder flare
#

nice, nice

ocean quartz
#

Hi Conclure

forest pecan
#

Sweden

obtuse gale
#

so you're a racist

steel heart
#

Hi Matt

prisma wave
#

notch is a pretty epic guy known for his good takes :DD

jovial warren
forest pecan
#

Notch is an.. interesting guy lol

cinder flare
#

and oh my god it's Bardy!

#

speak of the devil

brittle leaf
#

what would be the best way to convert a project from maven to gradle?

cinder flare
#

it'll do it for you

obtuse gale
#

to an extent but yes

steel heart
obtuse gale
#

it'll set up things like dependencies, repositories and language version

cinder flare
steel heart
#

Maven

obtuse gale
#

that's unfortunate

cinder flare
ocean quartz
steel heart
#

Yeaaa

#

Actually Ima read it again

#

Semi vanilla derp

ocean quartz
#

We just wanted to play on the new update and hardly any mod is updated

steel heart
#

Oh yeah true that

#

I’ll join once I’m not on my hdd laptop

cinder flare
#

there's a semi vanilla server?

prisma wave
#

hmm

#

2 smps at the same time...

#

coincidence?

cinder flare
#

is this in Matt's Discord

#

do i need to sneak over there

brittle leaf
#

how do i install paperweight?

ocean quartz
brittle leaf
#

ive never used gradle i dont know what i am doing

cinder flare
#

it is extremely similar lol

brittle leaf
#

i got told to use paperweight i dont know how to install it

#

giving me a plugin doesnt tell me how to install said plugin

sick belfry
cinder flare
#

this is a different kind of plugin

#

this is a test minecraft plugin

#

to show you how to use the gradle plugin called paperweight

#

some important things to know are that gradle uses distinct build stages that kinda go in order, and that the Maven Shade Plugin is called shadowJar in Gradle

sick belfry
#

and that you will like that sustance called gradle

#

jk

#

but yeah

brittle leaf
#

people preach that gradle is better but i cannot figure out how to get the mojang mappings to show up

#

imma just stick with maven

#

cant be bothered dealing with it

frail glade
#

For 1.18 (and maybe 1.17)? Use paperweight

obtuse gale
#

Clone the repo and open it in IJ, play around with it, read the comments

distant sun
#

Paperweight is godlike

brittle leaf
obtuse gale
#

No offense but with that attitude you'll never get to honestly try gradle if all you do is complain about it

#

All you have to do to see it working is clone it and open it

brittle leaf
#

ive spent the last god knows how long trying to figure out what the new name of hasTag was

#

imma just go bed cause this is pissing me off completely

wintry plinth
#

plus doesn’t need to be installed on your PC, it has a local thing or you can use your IDE

brittle leaf
#

i use the intellij plugin for creating plugins cause setting it up manually was shit

#

43mb plugins were fun

wintry plinth
#

Holy shit

frail glade
#

It's s.r() btw

wintry plinth
#

Are you… s..r..s

#

Ha ha

brittle leaf
#

and compairing the itemstack.class

frail glade
#

But yeah I switched over to paperweight, took like 10 minutes to setup, and now I just use regular mappings.

wintry plinth
#

What’s the difference between Searge and Obfuscated?

And, with paperweight where does it store all the generated stuff? I always hate system clutter, lol

frail glade
#

Your projects Gradle cache

distant sun
#

Np

wintry plinth
#

Does paperweight run build tools or something for the jars?