#help-development

1 messages · Page 706 of 1

echo basalt
#

is just a setup error

#

ffs

vagrant stratus
#

first released the AV on Feb 25, 2019

now I'm at 26.7K downloads, 194 updates, and 919 commits

#

and like $10 in donations lmao

echo basalt
#

I got like 50$ to my name otherwise I'd donate

#

fucking hell it works

quiet ice
#

Well apparently Col-E (the person behind Recaf) wants to write a better AV - or at least one that is based on code behaviour

vagrant stratus
#

meh

echo basalt
#

and I can't break blocks thumbsup

vagrant stratus
echo basalt
#

actually that was a side effect of my minigame lib

quiet ice
vagrant stratus
#

cause like... I'm pretty sure I have that on my list of things to get around too

#

That's on my TODO list lmao

#

It'll actually be feasible on my remote scanner lmao

timid hedge
#

When i am adding the compass to the player the compass dosent have a name does anyone know why?

                        ItemStack 1 = new ItemStack(Material.COMPASS, 1);
                        1.getItemMeta().setDisplayName("COMPASS");
                        inv.setItem(0, 1);
echo basalt
#

I wonder if I should impl a whole block system or just let each platform do its own event handling

quiet ice
vagrant stratus
#

I've got a bunch of different things planned in terms of detection methods

vagrant stratus
kindred sentinel
#

Is it normal that using interfaces and abstract classes is a bit difficult for me?

tender shard
#

does anyone know why my HTML is fucked up after saving it with jsoup? D:

#

I didnt even do any changes - I loaded the file and instantly saved it again

vagrant stratus
#

if anything, I can just rework my AV to use that stuff lmao

quiet ice
#

Yeah pretty much given that it is intended as a library

vagrant stratus
#

the likelyhood of it being any real competition is low (atm) though.

I can just pull certain functionality from it and be ahead in that regard

vagrant stratus
#

really, as long as I stay on top of spigot detections & like.. push updates, I'm fine

#

also ya know, look at the AV scene in general kek

#

Kinda annoying that there's like 20 different things within the MC scene though. Really should be focusing on a single project

echo basalt
#

Gotta love concurrency issues

quiet ice
#

I'm glad they are all converging on a single decompiler though

vagrant stratus
#

oh? Which one?

quiet ice
#

Vineflower, which used to be under the QuiltMC umbrella

vagrant stratus
terse pumice
#

?nms

remote swallow
timid hedge
remote swallow
#

1.getItemMeta().setDisplayName("COMPASS");

#

getItemMeta returns a copy

vagrant stratus
#

gimme a bit

remote swallow
#

you either need an item builder or have to do ```java

ItemMeta meta = 1.getItemMeta();
meta.setDispalyName("COMPASS");
stack.setItemMeta(meta);

vagrant stratus
#

no gui?

#

boo

#

okay nvm, you'll have to wait

quiet ice
vagrant stratus
#

basically useless for my purposes lmao

remote swallow
quiet ice
#

Probably as they are definetly working towards a hard-fork

vagrant stratus
#

gonna hard-fork them ong frfr

remote swallow
#

is vineflower just quilt flower, bc the ide plugin links to quilt

upper hazel
#

who knows a good api for npc

remote swallow
#

citizens 2

upper hazel
#

thenks

vagrant stratus
#

These are my current decompilers

#

I don't really use the cfr jar, I'll probably remove it

echo basalt
#

I use jd-gui a lot

remote swallow
#

i use recaf and bytecode viewer

upper hazel
vagrant stratus
#

I use whatever works with the jar I have lmao

smoky oak
#

are they even useful?

#

i opened paper the other day to copy some code but all i got was a list of patches

quiet ice
#

Recaf 3X uses Quiltflower which is an old Vineflower release

vagrant stratus
#

I have 5 specifically because not every jar works with every decompiler kek

quiet ice
echo basalt
#

anyways my code worky

#

:)

upper hazel
#

and by the way, what needs to be studied so that I can create a connection between the plugin and another server (for protection)

vagrant stratus
#

oh yea. I've been meaning to update recaf lmao

remote swallow
#

does vineflower actually have a gui

quiet ice
#

No and I doubt they will

#

Given that in theory Recaf should support it

#

Problem is Recaf is stuck in refractor hell

vagrant stratus
#

lol

quiet ice
#

As they are now working towards supporting Multi-release jars and Android

vagrant stratus
#

I'll probably update all my tools later today

smoky oak
#

that reminds me @worldly ingot do u know if there's a non-virus-filled way to convert .mp3 to midi 😅

vagrant stratus
smoky oak
#

I've opened NBS but it's only taking 'new song' and 'midi'

worldly ingot
#

Cloud convert I think is usually fine

smoky oak
#

welllll thats the issue

#

ah ill check that out

quiet ice
#

Midi probably won't allow executable code to be run

smoky oak
#

cuz if i google it its bit.ly and disable-ur-antivirus everywhere

quiet ice
#

So as long as you don't run any executables it should be fine I think?

smoky oak
#

oh F

smoky oak
#

lol

vagrant stratus
#

honestly only problem I run into @quiet ice is obfuscaiton lmao

#

that's a skill issue though

#

I just need to get better at making custom deobfuscators via java-deobfuscator

quiet ice
#

I have only written metadata regeneration tools in the past. It's strange how there is a big market for decompilers but no market for metadata regeneration tools

#

Well the legacy minecraft and OSRS communities seem to be vaguely interested in my tooling but that is just about it heh

remote swallow
#

recaf 3 looks great

quiet ice
#

Excuse me if I am a big dum-dum but how do I get a VarHandle?

remote swallow
#

it can also open multiple jars at once

quiet ice
#

Ah via VarHandleDesc#resolveConstantDesc apparently

quiet ice
#

Detecting and fixing switchmaps or other inner/anonymous classes as well as regenerating generic signatures.
The small things in life

vagrant stratus
#

Ah. I don't think I've ran into the need for that myself actually

quiet ice
#

I've only needed it because I'm linking into a jar that has none of this metadata

terse pumice
#

What do people do in regards to custom player heads, I know PlayerProfile is available now but am looking for a non-nms option for before 1.18 versions preferably

vagrant stratus
#

Gotta throw in tokenization, to support other langs besides java kek

merry goblet
#

is there a new playeritempickup event for 1.20.1?

vagrant stratus
subtle folio
#

be gigachad and only support java

vagrant stratus
#

Nah

#

It already has VBS & Batch support, but severely limited due to the way I went about it originally kekw

#

probably hard fork java-deobfuscator and a decompiler or two

#

Going back to this though. I do need some way to verify if an account is actually used for malicious purposes, or is just there to get someone else in trouble

#

probably gonna have to setup a honeypot server or some shit

tender shard
#

yaay my javadoc fixer is working

#

before

#

oh it's not working

worldly ingot
#

Are you sure? Because the List<String> return suddenly disappeared lol

#

Now you get a String>

#

:D

tender shard
#

yeah I already found it, I just got a \s too many in the regex

#

I'll fix that tomorrow lol

quiet ice
#

The better fix would be to transform the jetbrains-annotations dependency

#

But whatever

opal juniper
#

yeah i think that is what paper would like as well

kind hatch
quiet ice
#

Alex transformed the javadoc HTML via jsoup

#

Which imo isn't the right way to fix the issue as you are only fixing a symptom and not the root issue

eternal night
#

jsoup is not going to work

#

javadoc generates some really scuffed html, specifically regarding intendation, which gets lost when parsed via jsoup

kind hatch
#

You should see the questionable CSS

opal juniper
#

i swear the issue was fixed on a newer or maybe didn’t exist on an older version that spigot uses

eternal night
#

spigot downgraded jetbrains lib to pre type_use

kind hatch
#

Downgrade? For what reason?

opal juniper
#

that’s the ticket

#

to remove the duped annotations

#

the type_use, as lynx mentioned, is what causes the issue iirc

eternal night
#

yes, both the type and the parameter get an annotation omitted by javac

#

javadoc does not care

#

and displays both

austere cove
#

omg I've ran into the same issue

#

how'd you fix it

eternal night
#

alex smacked regex on it

#

which, bandaid fix af

opal juniper
#

you don’t

eternal night
#

but ™️

austere cove
#

ugh

#

it's been an issue for months as well

slender elbow
#

it's been an issue for years in reality

eternal night
#

interesting

kindred sentinel
#

What should i use, interfaces or abstract classes?

river oracle
#

depends

#

I guess the real answer would be both!

tender shard
# eternal night interesting

the only issue I still have is the return type of e.g. List<@NotNull String> - but I'll fix that tomorrow. besides than that, it works totally fine

kindred sentinel
#

hmm like in simple chat plugin for differents chats? local, global etc.

#

what would be better to use?

river oracle
#

an enum probably

#
public enum ChatType {
  LOCAL,
  GLOBAL;
}
quiet ice
eternal night
#

yes

quiet ice
eternal night
#

its just useless

slender elbow
#

to "fix" it you just wouldn't use type_use annotations altogether

kindred sentinel
slender elbow
#

but, like, y'know

eternal night
#

so, quick option to dedupe in the tree visitor

#

ggwp

quiet ice
#

One could say it is a problem with javac but even there it is working as intended

eternal night
#

I mean, or only type_use

#

😏

slender elbow
#

well it isn't an issue with javac because the spec explicitly says it gets applied to both

quiet ice
#

So the only thing that is not working as intended is jetbrains-annotations

river oracle
slender elbow
#

it is not specific to jb annotations

#

it's all type_use

eternal night
#

I mean, it is all type_use with other targets

#

when in reality they shouldn't

quiet ice
#
  • Method use + Field use + Param use + whatever
eternal night
#

either you annotate the param or the type of the parm

slender elbow
#

yes, not specific to jb annotations

quiet ice
#

Yes because apparently noone knows how to work with annotations

#

Same thing with shading module-info.class

eternal night
# slender elbow yes, not specific to jb annotations

PR @Target({ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE}) instead of @Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE, ElementType.TYPE_USE}) and fix it

#

dew it

slender elbow
#

no u

#

busy busy

eternal night
#

time for another paper artefact generated via some jmp script ?

slender elbow
eternal night
#

I wonder how much that would break xD

quiet ice
eternal night
#

I am sure someone does something very stupid

#

very stupid

quiet ice
#

Except perhaps IJ but at that point it is their own fault

worldly ingot
quiet ice
#

Is there any way to prevent the execution of a maven execution when using certain java versions?

river oracle
#

maven enforcer plugin?

bleak nacelle
#

there are hacked clients that shows other player potions. is it possible to hide it?

opal juniper
#

i think you can hide some of that stuff with paper, wrong channel tho you need #help-server

bleak nacelle
opal juniper
#

when you say potions you mean the current effects

bleak nacelle
#

yes

#

It shows like guy has strength II and 2 minute left(not sure if it shows minute left)

opal juniper
#

hmmm, there might be a plugin otherwise ask paper in the paper discord. this channel is the wrong place to ask

sterile token
#

Alternative for cancelling events thru a for loop?

twin venture
#

hi , still getting errors when more than 4 player's join

#

each player will join will load 8 data from 8 diffrent tables at once

#

can i use some sort of Queue to load the data?

eternal night
#

are you not returning your connections ?

#

idk what your database is up to, but 8 SELECT calls should not exhaust your 30s timeout

twin venture
#

iam using CompletableFeautre too

#

on all my sql code

sterile token
eternal night
#

Yea, not running them on the main thread is a good idea.

#

Again, are you properly returning the connections

twin venture
eternal night
#

are you closing the connection you take from the pool

twin venture
#

there are tons of way's to do it

sterile token
#

Always when working with connections, any type Database or Http, always thru async

twin venture
#

iam using auto close

eternal night
#

on the connection

#

or the prepared statements

twin venture
#

there are more code down ..

eternal night
#

not inside right ?

#

like, you are reusing the one connection

#

otherwise you are gonna be holding the outer connections hostage

twin venture
eternal night
#

okay, yea das fine

twin venture
eternal night
#

where exactly are the 8 different tables you talked about prior ?

#

different things ?

twin venture
#

i have this which implement in 8 diffrent profiles

#

all have its own tables to load data from

eternal night
#

ah

twin venture
#

yes

eternal night
#

yea, hmm should be fine then

twin venture
#

but its not ..

eternal night
#

yea, I mean, grab yourself a debugger and step through it

twin venture
#

do you have free one xD?

eternal night
#

intellij ?

twin venture
#

oh that ok

eternal night
#

also, obviouls check the other 7 implementations

#

to use try-resource with the connections

twin venture
#

checked all of them all use try-resource

tall dragon
#

too bad that test my plugin used like 60% of a tick

#

its optimize time :()

hasty prawn
#

60% wtf lol

sterile token
#

what can cause drag event not cancell?

#

could because by a for loop?

lilac dagger
sterile token
twin venture
lilac dagger
#

if you set cancel in a for loop make sure to break;

#

if you want it to stop there

fervent robin
#

I have an odd problem. I have this code in the on move event and for some reason when I teleport the armor stand, it doesnt move. The location its supposed to be teleporting is correct though I have tested that but for some reason it wont teleport. (ArmorStand was created through protocollib not through traditional way)

Location loc = event.getTo().clone();
loc.setY(loc.getY()+2.2);
vantageStaff.getModManager().getSession(event.getPlayer()).getArmorStand().teleport(loc);
lilac dagger
#

or whatever name protocollib has

fervent robin
#

Resend creation packets every time a player moves lmao?

lilac dagger
#

no

#

the move one

fervent robin
#

Thats not done through packets

#

Its still a valid entity but I had to create it through protocollib because I needed to hide the entity from certain players

#

plus teleporting has worked from my testing but just not now

lilac dagger
#

why not create a real one and just prevent showing to the other players?

fervent robin
lilac dagger
#

you can 😄

fervent robin
#

theres no #hideEntity method

tribal quarry
fervent robin
#

thats what im doing

#

im just doing it through protocollib

lilac dagger
#

or just cancel packets from being received by the hidden players

fervent robin
#

i dont think thats the problem the method of sending destroy packet is used often and ive used it plugins before

twin venture
#

anyone expert with sql , threads ?

fervent robin
#

im going to test if the server is for some reason not sending the move packets

tribal quarry
tribal quarry
#

I just worked a bit with jdbc and queries

twin venture
#

read my message and you will understand .

remote swallow
#

Show code and error on padtes

#

Pastes

lilac dagger
tribal quarry
fervent robin
#

Alright so I tested if for some reason a client issue. Its not when I run this its supposed to teleport to the players new location but it doesnt and the same spot the armor stand spawned is the only spot getting set to bedrock

@EventHandler
    public void onMove(PlayerMoveEvent event) {
        if(vantageStaff.getModManager().isInModMode(event.getPlayer())) {
            Location loc = event.getTo().clone();
            loc.setY(loc.getY()+2.2);
            vantageStaff.getModManager().getSession(event.getPlayer()).getArmorStand().teleport(loc);
            vantageStaff.getModManager().getSession(event.getPlayer()).getArmorStand().getLocation().getBlock().setType(Material.BEDROCK);
        }
    }```
tribal quarry
twin venture
#

yes iam

fervent robin
#

im not using paper but i want this to support paper

twin venture
fervent robin
lilac dagger
opal juniper
#

indeed, as it is normally a waste of cpu

fervent robin
#

i see

remote swallow
#

Good lord that hurts

lilac dagger
fervent robin
opal juniper
#

hence the config

remote swallow
# twin venture

Check my github for epic spigot lib and look at my conn pool in core/src.main.java.me.epic.spigotlib.storage

fervent robin
lilac dagger
#

yeah but people also share optimized configs so it's a problem that surfaces sometimes

twin venture
tribal quarry
# twin venture

I use this and it never gone wrong (unless the database hosting is broken or firewall preventing connections), i wonder why pool size is 100? its just too much, but here you go, try this:

        HikariConfig hikariConfig = new HikariConfig();

        hikariConfig.setPoolName("BedWarsPool");
        hikariConfig.setMaximumPoolSize(10);
        hikariConfig.setMaxLifetime(1800000);
        hikariConfig.setJdbcUrl("jdbc:mysql://" + host + ":" + port + "/" + database);
        hikariConfig.setDriverClassName(driverClass);
        hikariConfig.setUsername(username);
        hikariConfig.setPassword(password);
        hikariConfig.addDataSourceProperty("characterEncoding", "utf8");
        hikariConfig.addDataSourceProperty("encoding", "UTF-8");
        hikariConfig.addDataSourceProperty("useSSL", "false");
        hikariConfig.addDataSourceProperty("useUnicode", "true");
        hikariConfig.addDataSourceProperty("rewriteBatchedStatements", "true");
        hikariConfig.addDataSourceProperty("jdbcCompliantTruncation", "false");
        hikariConfig.addDataSourceProperty("cachePrepStmts", "true");
        hikariConfig.addDataSourceProperty("prepStmtCacheSize", "300");
        hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
        hikariConfig.addDataSourceProperty("socketTimeout", "30000");

        dataSource = new HikariDataSource(hikariConfig);
remote swallow
twin venture
remote swallow
#

Use the code kalix just sent to setup Hikari

twin venture
#

alr

#

done gonna check your github now

#

can you send the link?

remote swallow
#

Its the same thing pretty much

#

Just mines outdated bc i forgot to commit

young knoll
#

Seems on brand for you

twin venture
#

after a new player join , if we are 3 or 4 on the server and new player join , or already exist in the sql database ,
..

twin venture
tribal quarry
#

Something is seriously wrong here

jagged quail
#

hj

twin venture
#

should i change the maximum sql connection on the dedicated itself?

#

like make it 6000 or smth?

tribal quarry
#

this shouldn't be the solution

#

either it might be a firewall miss-configuration or something else

#

but just too weird

twin venture
#

alright what else i can do?

tribal quarry
#

uhh

twin venture
#

i dont mean i fixed it .. i just got what variable_name mean its pretty late for me , and i was awake from 7am .. till now and its 2AM next day :p

tribal quarry
#

variable_name is the column within the show status result

twin venture
tribal quarry
#

ok whatever

twin venture
#

gonna send you fr , i will message you once i can run it .

fervent robin
weak meteor
#

I wanna make a Login plugin, with mojang api so premium players can bypass login, my question is, i know i need to make a Bungeecord and a Spigot plugin, but how do i indicate, from bungee to the spigot that x player is premium?

#

or how should i do exactly

fervent robin
sly trout
#

hey guys, I'm looking to make an addon for my plugin I made before, but I can't seem to find some good tutorials to add the dependency

#

so like I'm trying to compile but it says that the .jar is not found

#

like for example I'm using a class from the main plugin in the addon plugin, when I compile, it says that those are not recongnized

#

because the ,jar is not added properly i'm guessing

lost matrix
#

Are you using maven?

sly trout
#

yes

lost matrix
#

Is your other project also a maven project?

sly trout
#

I don't remember, made it a while ago

#

few years ago

lost matrix
#

Usually you would call mvn install so you can use your applications as a dependency for other maven
project.

#

When using maven you should never manually add jars to your project.

#

Not the spigot jar and not other jars.

sly trout
#

well the thing is that I only have the .jar compiled file from my other project

#

not the actual project

#

and I'm looking to, when I add both plugins to the server, it works

#

ykwim

subtle folio
#

you don’t have access to the other project ?

sly trout
#

no I erased my pc data and could only find the .jar file of the project on onedrive

lost matrix
#

What you want to do is manually install this jar into your local maven repository

mvn install:install-file \
   -Dfile=<path-to-file> \
   -DgroupId=<group-id> \
   -DartifactId=<artifact-id> \
   -Dversion=<version> \
   -Dpackaging=jar \
   -DgeneratePom=true

For DgroupId, DartifactId and Dversion you can just invent anything you want.
Just make sure to use those values in your pom later:

<dependency>
    <groupId>com.sample</groupId>
    <artifactId>sample</artifactId>
    <version>1.0</version>
</dependency>
lost matrix
sly trout
#

yes I will thank you very much 😄

#

so the command is in console ?

#

and thats all I have to do and I'll just be able to add the dependency ?

lost matrix
#

Yes this will install a jar of your choice into your local maven repository.
From there it can be accessed by any maven project via the pom.

sly trout
#

okay and the group id and artifact are the ones that I put in the command ?

#

and also It will just work when I put both projects in the plugins folder ?

lost matrix
sly trout
#

?

#

like the plugins folder for a minecraft server ?

lost matrix
#

I mean. If they are both spigot plugins and you compiled them correctly, then they should work...

sly trout
#

yes but I mean with the dependency will it need to be on my pc to find the file or will it figure out that it is in the plugins folder with the other one

#

and in what command prompt do I use this command ? : ```mvn install:install-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=jar
-DgeneratePom=true

lost matrix
#

You need to strictly separate your idea of the development and game environment.
The spigot server knows nothing and also searches for nothing.
If you want a plugin to run on your server then you need to put it in the plugins folder.

sly trout
#

when i paste it it just executes by it self

lost matrix
#

maven is general purpose and has nothing to do with spigot or minecraft

#

Ah, windows.

sly trout
#

I mean will the addon be able to run if it's not on my pc is basically what I'm saying

lost matrix
#
mvn install:install-file -Dfile="./some.jar" -DgroupId="com.example" -DartifactId="Example" -Dversion="1.0.0" -Dpackaging=jar -DgeneratePom=true
sly trout
#

the one I'm making of my main plugin

#

that's why i need the dependency so I can use my classes from my main project in my addon

lost matrix
#

Again: If you want a plugin to load on any server, then you need to put the jar in the plugins folder

#

Spigot doesnt look for plugins itself

sly trout
#

I know, I will

#

but

#

will the addon work if I put them both in the plugins folder on another pc

#

also mvn : The term 'mvn' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

lost matrix
subtle folio
#

but i so believer you have to have maven set in your system env

lost matrix
sly trout
#

because it installs it in the maven repo on my pc

#

dude idk i was just wondering

lost matrix
# sly trout because it installs it in the maven repo on my pc

Ok.
Maven is a dependency manager for java projects.
It has nothing to do with spigot, minecraft or any other game or application.
Its a pure development tool which lets you manage dependencies when compiling code.
Almost nobody will have maven repositories unless they actively develop java applications.
Spigot will not search anywhere for plugins.
It has only what is in your plugin folder nothing else.

sly trout
#

I know that is not what I was asking

#

its okay

lost matrix
#

Do you mean if you can use your local maven repository, which has your jar manually installed,
for projects on other PCs?

#

Then the answer is no, its local. So it woll only ba available for this PC

sly trout
#

no I don't really know how to formulate it

#

So it said build succesful

#

but i go in intellij and the dependency still doesnt recognize the id

#

HOLD ON

#

WAIT A MINUTE

#

it might have worked

lost matrix
#

Dont forget to add

<scope>provided</scope>

to your dependency. Otherwise you shade it

wet breach
#

and this is the moment the great frenzy had a sparkle of a brain cell that emerged to be more intelligent then the others and might just have gotten it to work

#

it could be the IDE that is not working properly

sly trout
sly trout
lost matrix
#

You only do that for non-spigot dependencies like MongoDB or Redis etc

sly trout
#

and if i add a random other dependency to my plugin I can shade it ?

lost matrix
#

If its not a plugin, yes

sly trout
#

okay thank you

#

I'll try starting the server with the plugin

wet breach
sly trout
#

not shaded

lost matrix
# sly trout okay thank you

Think about it this way:
You need the classes when the server starts.
If you have another plugin already installed, then the classes of that plugin are there.
But if you dont shade for example MongoDB then the classes of this dependency are not there, so you need to bring it with your plugin.

sly trout
#

yes I understand

#

rn tho it gives me an error and the plugin doesnt work hold on

wet breach
#

Relocating dependencies when shading is why it is recommended to do to avoid potential conflicts if another plugin also has the same dependency

#

however more difficult to handle when its drivers like MySQL and MariaDB though

zinc iris
#

I was gonna make a organized system for subcommands by interating through a certain folder with all the files and code for the subcommands how i do it for discord bots but im guessing that isnt possible as you can only interate through files / folders in the datafile on the server and not the java files as its compacted into a jar?

lost matrix
zinc iris
#

just is more organized for creating tons of subcommands, cause then i can just create a new java file and wouldnt have to hard code every subcommand i add

#

isnt needed but 🤷‍♂️

lost matrix
#

I dont understand how you would use data driven commands?
They need to be hardcoded...

zinc iris
#

lemme show how im doing it

#

cant attach imgs rip

basically i have a folder called commands, inside that folder i have a baseCommand and an interface for subcommands and a folder called subcommands which has all the subcommands and their codes in them
the base command will loop through all the files in subcommands and load them into a map where then i can use for when the base command is called and call the code from there

#

idk if you have ever made a discord bot but its exactly how discord bots manage their command system

#

or atleast mine and most do

lost matrix
#

Ive written a few discord bots in different languages and have no idea what you mean

lost matrix
#

Aah i see what he means now

#

I wouldnt use CDI in spigot

zinc iris
zinc iris
quaint mantle
lost matrix
#

Its possible for any java application

zinc iris
wet breach
#

all a jar is, is an over glorified zip file

#

jar uses everything from the zip standard except for compression if I recall.

tender shard
#

I think my annotation fixer is fixed now

slender elbow
#

rip @NotNull List

#

oh it's above the cntract one

tender shard
#

yeah isn't that where it belongs?

#

it's where it'd also appear if one'd use annotations-java5 instead of annotations

kind hatch
#

What happened to removing the icons?

tender shard
#

I haven't taken a look at that yet

#

but actually they belong there, as it's external links

#

I mean the original ones are really annoying to look at

slender elbow
#

javadoc is one weird tool

tender shard
#

i guess it's because that annotation is not applicable to primitives?

slender elbow
#

i can only assume it's something to do with the primitive array

tender shard
#

shouldn't it be byte @NotNull [] instead of @NotNull byte [] ?

slender elbow
#

yeah

#

i wonder what javadoc creates for that lol

slender elbow
#

it's not illegal to have void blah(@Nullable int hehe)

tender shard
slender elbow
#

hmmm

tender shard
#

so yeha my fix-javadoc-plugin won't deduplicate the wrong annotation but I guess that's not my problem

slender elbow
#

"good enough"

#

also you can @Deprecated parameters? lol?

tender shard
#

lol

#

hm I feel like my plugin should add newlines between annotation and parameter name

#

spigotmc

#

paper bad

#

paper fixed

lethal garnet
#

Hey guys, does anyone have a download link for the LibsDiscipline plugin

tender shard
#

does this look better or worse than annotations on the same line?

#

I mean it's at least consistent now

#

I'll probably just make the task configurable

tender shard
lethal garnet
#

ok thx

valid burrow
#

how comlicated is it to send webhooks in a plugin

ivory sleet
#

Depends entirely on your skill level

wet breach
valid burrow
#

how do i do it

valid burrow
#

Idk how to rate my skill level ive been coding in java for 1,5 years now

ivory sleet
#

Years dont matter

valid burrow
#

well what else do you want me to say x)

ivory sleet
#

But lets say you have the experience of a “1 yearer”

#

Then it ought to be reasonably straightforward how to do it

valid burrow
#

okay

quiet ice
#

It is easy enough that most if not all available malware does it

sly trout
#

I added a .jar file to the maven repo on my pc

#

with a prompt command

#

but when i send my friend the plugin that uses the .jar file as dependency it doesnt work

#

it doesnt detect the dependency even tho its in the plugin folder with the plugin

vagrant stratus
cobalt thorn
#

How can i edit the mob inside the spawner to be a custom one (like a zombie with an armor)

viral temple
#

Does Chunk.getPersistentDataContainer() actually load the chunk or just the persistent data?

cobalt thorn
viral temple
#

I want it not to load.

cobalt thorn
#

load it and then unload it

quiet ice
quiet ice
quiet ice
#

Well all those fake Skyblock "utility" mods

vagrant stratus
#

Ah, I haven't touched mods much

cobalt thorn
#

its possible to put / merge nbt data from an entity to a mobspawner?

vagrant stratus
#

I do want to figure out basic stuff in forge & fabric though

quiet ice
#

A good portion of recaf's help requests are caused by people that want to modify a webhook URL

vagrant stratus
#

I doubt anyone in the respective communities would make me example malware I can base my work off of though lolol

quiet ice
#

It's probably around twice as large as those who want to remove license checks in bukkit plugins

vagrant stratus
#

lmao

quiet ice
vagrant stratus
#

Eh. I doubt MMPA would, given they're doing their own thing

quiet ice
#

Probably

#

Perhaps I should write my own malware. It seems a lucrative market

vagrant stratus
#

and really, I don't need anything super complex just starting out.
just working examples for

Player#setOp(true)
Player#getUUID#equals()
Player#getName#equals()

etc

#

The issue w/ both is the mods get obfuscated 😐

quiet ice
#

With fabric we are in luck I believe as they use intermediary

vagrant stratus
#

I'd have to check one of their jars, but I know forge is obf'd

quiet ice
#

At least I know multi-version jars are possible out-of-the-box

vagrant stratus
#

I'd still need jars for each version though, I'd need the bytecode

#

Yea, both forge & fabric jars are obfuscated

quiet ice
#

Huh

vagrant stratus
dry hazel
#

that's intermediary

vagrant stratus
#

Which means I'd need fabric & forge devs to make some basic sample malware, for each supported MC version

snow shadow
#

Hi 👋 I want to save a specific region as a .schem file with WorldEditAPI. When I enter the location where I will create the file, it gives an error in the console and the error content is "access denied". Also how can I set the name and extension of the file?

My file code:

File file = new File(plugin.getDataFolder().getPath() + "/schemdatabase/");```
vagrant stratus
#

continuing: modpack
I wonder what modrinth's modpack files look like 🤔

snow shadow
# snow shadow Hi 👋 I want to save a specific region as a .schem file with WorldEditAPI. When ...
Caused by: java.io.FileNotFoundException: plugins\EventsAetheria\schemdatabase (Access blocked)
        at java.io.FileOutputStream.open0(Native Method) ~[?:?]
        at java.io.FileOutputStream.open(FileOutputStream.java:293) ~[?:?]
        at java.io.FileOutputStream.<init>(FileOutputStream.java:235) ~[?:?]
        at java.io.FileOutputStream.<init>(FileOutputStream.java:184) ~[?:?]
        at tr.enes.eventsaetheria.cmds.EventCommand.onCommand(EventCommand.java:183) ~[?:?]
        at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot-api-1.20.1-R0.1-SNAPSHOT.jar:?]
        ... 23 more```
wild mica
#

Is there a snippet code to throw an axe with an armor stand?

valid burrow
wild mica
valid burrow
wild mica
#

You are very clever. Thanks for help ❤️

valid burrow
#

make a invisable armorstand holding an axe and move it

#

should be pretty simple

wild mica
#

Actually getting stuck in the block is pretty hard

valid burrow
#

just check if the block the armorstand is touching is not air

#

at the height of the hand if thats not self explanatory

#

and if you want to be really precise and different parameeters for fence/trapdoors etx

wild mica
valid burrow
#

no

#

just every time you teleport the armorstand check a single block

wild mica
#

I'm not teleporting the armor stand. I use velocity and gravity

tawdry pilot
#

how can i establish a pub/sub system with jedis to sync cached data

valid burrow
#

and predicted it

#

then just let it stop at that block/position

wild mica
#

When I look up into the air and throw it, raytrace doesn't work.

valid burrow
#

ive never used raytrace but ill look into it rq

#

gibe me a sec

#

what does it return

#

for you

wild mica
#

exception when I look up into the air and throw it

valid burrow
#

what do you want to happen when theres no block

#

just make a catch funtion for the case someone trows it there and do what ever you want to happen in that case

wild mica
valid burrow
#

raytrace doesnt have gravity

#

so it will always go in a straight line

#

well but

#

if you use gravity

#

ray trace wont work in the first place

#

cause raytrace is straight

#

with gravity you need a curve

wild mica
#

So is it ok to loop until it hits a block?

valid burrow
#

loop what

#

you could of course do some math and recreate the formular for how gravity and velocity effect the armor stand

#

and then loop through every block that is in that way

#

it would be rather complicated

#

but

#

work very well

#

just make sure to only calculate it roughly

#

otherwise it might take too long

echo basalt
#

Just set a velocity and let physics do the rest

valid burrow
#

he wants the armor stand to be stuck in the block it hits

#

so we need to know what block that will be

echo basalt
#

Yeah you can calculate that in runtime

valid burrow
#

thats the plan but the more complicated thing is how to calculate it

echo basalt
#

Launch the armorstand with a constant velocity and track it

valid burrow
#

but wont it hit blocks that arent in the way of the axe too like at the armorstands feet

vast ledge
#

What the hell

#

I do not

#

understand that sentence

#

That is not default mc texture there

#

also why r u using smth like 1.8

tawdry pilot
#

can jedis block the main server thread

sullen marlin
#

If you call a sync method then yes

tawdry pilot
#

wait so pub/sub?

sullen marlin
#

Well anything that returns a result will block while it gets the results

tawdry pilot
#

ok

#

so that means if i initialize a pub/sub in onenable itll block the thread

sullen marlin
#

Not sure but probably

upper hazel
#

Recommend a good API for a custom rank system and cases (with beautiful animation)

vagrant stratus
#

Probably doesn't exist

upper hazel
#

demm

echo basalt
#

Just pubsub on another thread

#

it's fine

vagrant stratus
#

Most servers use luckperms, more or less covers the rank system part.

And cases, there are dedicated plugins for those, if they are what I think they are. No API only thing though

wild mica
echo basalt
#

Because redis is more popular in the field

#

¯_(ツ)_/¯

#

I make sure to support all of them

wild mica
#

for who? Minecraft developer?

echo basalt
#

Ye

upper hazel
#

By the way, how can I make the color of the rank - smoothly iridescent

tender shard
#

@kind hatch how's the javadoc PR going?

#

@sullen marlin you're using annotations-java5 because of the javadoc issues, is that right?

#

I wrote a tool to fix the generated double annotations javadocs, it's currently a gradle plugin but I could also turn it into a maven-plugin - then we could also have type parameters, e.g. List<@NotNull Block> or stuff like that

ivory sleet
twin venture
#

Hi there , is there something wrong with this?

tender shard
#

looks fine

#

though generally using an IntFunction is preferred ober new Array[0] if that's possible in your java version

#
futures.toArray(CompletableFuture[]::new)
clear panther
#

guys how to detect if a specify arrow is moving

tender shard
#

check the velocity

clear panther
tender shard
#

no

#

there's ProjectileHitEvent, or you can check the velocity of the arrow, or you can check its location every tick and compare it to last tick's location

kindred sentinel
#

Is it possible to get function from other class, and don't use new class()...?

tender shard
#

pass an instance of that class to the other class

kindred sentinel
#

Hm

tender shard
#

You often need a reference to your main instance (the instance of your class that extends JavaPlugin) in some of your other classes. There’s two basic concepts for this. Choose whichever you like more. Method #1: Static Getter First way is to create a static method called getInstance() or similar in your main class. You...

#

method #2

valid beacon
#

Guys, me need java-developer, who can write plugins?

tender shard
#

?services

undone axleBOT
kindred sentinel
#

How to add comments in config.yml?

#

(using java)

sullen marlin
#

comment

kindred sentinel
#

.._..

sullen marlin
#

?jd

undone axleBOT
kindred sentinel
#

Thanks, and another question, is there any way to get every ConfigurationSection in another ConfigurationSection? Like..

a:
  b:
    c: "A"
  d:
    c: "B"
  e:
    c: "C"

And i need to get every section in section a, (b,d,e)

upper hazel
#

what is better to do 1 big plugin or split it into several api

kindred sentinel
lost matrix
lost matrix
upper hazel
#

auto mine + ranking system + cases + bosses

lost matrix
#

Is it for a private project?

upper hazel
#

this is an order

lost matrix
#

you are doing submissions?

upper hazel
#

wdym

lost matrix
#

Anyways, this then depends on what the client wants.
Im always using a multi module maven setup for my server projects.
Resulting in 1 or 2 jars. 1 common library and 1 content implementation.

upper hazel
#

hm

#

I just don't know how it will affect the future

#

and what is easier as a programmer?

#

this not full structure

lost matrix
#

For me having one project is much more manageable than having multiple smaller projects

#

I hope you use the sparsely as using a lot of tile entities can lag out the server

#

Biome information is not block-wise. Its in 4x4x4 chunk sections iirc

upper hazel
#

well, with api it will be more difficult

upper hazel
#

there, despite such a structure, the simple plugin logic

#

demm translate

sage dragon
#

Hey!

I'm horrible at this.

This is my current code:

public void summonDeathCircle(float playerYaw, Location centerLocationLocation, int size) {
    for (int d = 0; d <= 90; d += 4) {
        Location attackLocation = new Location(centerLocationLocation.getWorld(), centerLocationLocation.getX(), centerLocationLocation.getY(), centerLocationLocation.getZ());
        attackLocation.setX(centerLocationLocation.getX() + Math.cos(d) * size);
        attackLocation.setZ(centerLocationLocation.getZ() + Math.sin(d) * size);

        Vector direction = attackLocation.subtract(centerLocationLocation).toVector();

        this.drawDeathLine(centerLocationLocation, centerLocationLocation.clone().add(direction.multiply(2)), .9);
    }
}

It draws a nice pattern, but I want this pattern to rotate depending on the player's rotation.

Currently, the pattern is always facing North/South

lost matrix
#

Ok so first:

        Location attackLocation = new Location(centerLocationLocation.getWorld(), centerLocationLocation.getX(), centerLocationLocation.getY(), centerLocationLocation.getZ());

Can be shortened to just

        Location attackLocation = centerLocationLocation.clone();

After that i would def rename centerLocationLocation to centerLocation

#

Next:

Vector direction = attackLocation.subtract(centerLocationLocation).toVector();

This makes no sense. attackLocation and centerLocationLocation are the exact same location.
Subtracting them from another is very weird.

#

Ah nvm this is after modification

smoky anchor
#

I wonder about the Math.cos(d)
These normally take in radians so passing, what seems to be a degree seems weird to me

lost matrix
#

So this draws a circle on the ground if i interpret it correctly. What is there to rotate?

lost matrix
#

He would draw like 14 rounds of a circle with 90 rads

lost matrix
sage dragon
lost matrix
#

I dont understand how the players rotation changes anything in this circle

sage dragon
lost matrix
sage dragon
smoky anchor
#

well in your case, get the players Yaw rotation, do Math.toDegree(yaw) and add it to the "d" every time
I think

lost matrix
#

Eh

#

We first need to find out what he is trying to do. Because a perfect circle has no orientation.

#

So you want the circle to be more densely defined in one direction?

#

This is how i would probably calculate a circle around a center location

  public List<Location> calculateCirclePoints(Location center, double radius, int points) {
    List<Location> circlePoints = new ArrayList<>();

    double increment = (2 * Math.PI) / points;
    for (int i = 0; i < points; i++) {
      double angle = i * increment;
      double x = center.getX() + (radius * Math.cos(angle));
      double z = center.getZ() + (radius * Math.sin(angle));
      Location point = new Location(center.getWorld(), x, center.getY(), z);
      circlePoints.add(point);
    }

    return circlePoints;
  }
smoky anchor
lost matrix
#

Ok but what does he want?

#

A circle thats more dense in a direction?

#

Or a cone in a direction?

sage dragon
# lost matrix We first need to find out what he is trying to do. Because a perfect circle has ...

This is my original code, without any changes:

public void summonDeathCircle(Location location, int size) {
    Location originalLocation = location.clone();
    for (int d = 0; d <= 90; d += 4) {
        Location attackLoc = new Location(location.getWorld(), location.getX(), location.getY(), location.getZ());
        attackLoc.setX(location.getX() + Math.cos(d) * size);
        attackLoc.setZ(location.getZ() + Math.sin(d) * size);

        Vector direction = attackLoc.subtract(originalLocation).toVector();

        //TODO: Check if .9 space is better than .7
        this.drawDeathLine(location, originalLocation.add(direction.multiply(2)), .9);
    }
}

It basically looks like it draws half circles around the player.

They get smaller the further away they are.

Currently, this is locked to the North/South direction

lost matrix
#

I guess you can just add the players yaw to the angle like steve suggested then

#

PS: You need to translate the yaw from degrees to radians!

sage dragon
#

Thanks, let's try to do that

chilly hearth
#

e

cobalt thorn
#

Its possible to change biome only to the block like a block of leaves for another biome and not the other block around

lost matrix
#

Biome data is stored in 4x4x4 chunk sections

cobalt thorn
timber basalt
#

How can I get BuildTools into my minecraft plugin?

#

I installed it from spigotmc

#

and ran the jar file

lost matrix
#

scroll down there

timber basalt
#

Thank you

timber basalt
lost matrix
#

One of these

timber basalt
#

Got it that's all I need

#

thanks

smoky anchor
#

(I think 1.15+ was when they changed the biome format)

quaint mantle
worldly ingot
#

A few things

  1. Why is the folder called buildSrc if its artifact is going to be called "mosaic-internals"?
  2. You have two build files, one at the root (the correct one) and one under src/main/kotlin (which probably isn't what you want and is named incorrectly)
#

Also not entirely sure why you're declaring plugin('mosaic-internals'). It's definitely not a Gradle plugin. It's a dependency, no?

#

Ideally your projects are as follows:
mosaic-internals/build.gradle.kts:

plugins {
    id("org.jetbrains.kotlin.jvm") version "1.9.0"
    id("java-gradle-plugin")
}

repositories {
    mavenCentral()
}

group = "your.group.id"
version = "1.0.0"```
`mosaic-config/build.gradle.kts`:
```kotlin
dependencies {
    compileOnly(project(":mosaic-internals"))
}```
`mosaic-core/build.gradle.kts`:
```kotlin
dependencies {
    implementation(project(":mosaic-config"))
    implementation(project(":mosaic-internals"))
}```
Or something to that effect
#

And maybe setting up the kotlin and gradle plugins somewhere in the base build script or something because you'll probably need them in all your projects

remote swallow
#

buildsrc stuff is weird

#

i dont like it

#

its just weird

#

and for some reason its defined as plugins

quaint mantle
#

they told me to use buildSrc lol

ivory sleet
#

I’d avoid buildSrc partly because it fucks up incremental builds

#

includeBuild >>>

#

(:

remote swallow
#

in most cases i would avoid buildSrc tbh

#

just do it normally

quaint mantle
#

what is normally?

ivory sleet
remote swallow
#

it goes in each build,gradle

worldly ingot
#

Ew, yeah, that looks fucked. I guess buildSrc was a thing?

quaint mantle
#

the gradle docs says to use build src

remote swallow
#

ignore them

ivory sleet
#

Its often preferred

quaint mantle
#

"preferred" by who bruh

ivory sleet
#

As a means to abstract away common logic for all ur modules

#

But like

worldly ingot
#

Yeah that looks awful

ivory sleet
#

Its not a zero cost abstraction

remote swallow
#

i hate buildSrc tbh

ivory sleet
#

Like every other abstraction

#

Tho as said

#

Include build if possible

worldly ingot
#

I would avoid it unless you have some explicit reason to use it

ivory sleet
#

Very epic stuff

#

Typically you only write/change buildSrc just so often so the incremental build benefits ought not to affect you by much

#

But yeah

kindred sentinel
#

How to check if config file exists?

ivory sleet
#

In your jar file or plugin folder?

kindred sentinel
#

plugin folder

#

simple plugin.getConfig

quaint mantle
ivory sleet
#

if (Files.exists(plugin.getDataFolder().toPath().resolve("config.yml")) {
…}

or just new File(plugin.getDataFolder(),"config.yml").exists()

kindred sentinel
#

thanks!

ivory sleet
kindred sentinel
#

I have yml config

a:
  b:
    c:"d"

to get access to "a" I can do like ConfigurationSection a = config.getConfigurationSection("a")
but if i'm trying to get "b" from a like this, i'm getting "null"

ConfigurationSection chatSection = plugin.getConfig().getConfigurationSection("a");
System.out.println(chatSection.getConfigurationSection("b"))

- null
ivory sleet
#

did you load it correctly?

remote swallow
ivory sleet
#

depends on the size of the project

kindred sentinel
#

but if i'm trying to do chatSection.get("b")
it's working

chrome beacon
#

Show the actual code and config

#

Without changing things

ivory sleet
#

Pastebin in the future fellow developer

#

?paste

undone axleBOT
echo basalt
#

saveDefaultConfig is a thing my g

kindred sentinel
#

oh

echo basalt
#

I usually just have a class that I extend and load the config values tho

subtle folio
#

best config solution into pojo?

echo basalt
#

writing your own

subtle folio
#

yeah makes sense

ivory sleet
subtle folio
#

annotation daddy here i come Troll

lilac dagger
#

i made my own annotation based config system

#

i never been so happy

#

i can subclass it

#

i can make per different modes

echo basalt
#

I hate annotations

ivory sleet
#

myeah its not particularly object oriented

#

but it may at least reduce boilerplate arguably

lilac dagger
#

it does help with type safety

#

unless you forget to register custom types

#

then it'll scream at runtime

ivory sleet
#

idk I mean regular java helps just as much with type safety

#

dont think annots have any benefits there

echo basalt
#

Well no

lilac dagger
#

compared to getting values from configurationsection

echo basalt
#

performance go boom

#

Just do it the simple way

ivory sleet
kindred sentinel
#

Why i cant sort java list?
List<String> chats = chatSection.getKeys(false).stream().toList();
Collections.sort(chats, (o1, o2) -> 0);

  • Caused by: java.lang.UnsupportedOperationException
eternal oxide
#

Objects from config is quite performant as they are decoded the first time the config is touched (usually at startup)

lilac dagger
#

everything is loaded early

#

no computation required after

#

unless i wanna save it

#

it's all tidy in record like objects

tall dragon
#

use .collect

worldly ingot
#

collect(Collectors.toList()) yeah

remote swallow
#

?learnjava for someone

undone axleBOT
kindred sentinel
young knoll
#

kek

remote swallow
#

no

#

its to get a link for learning python

left pine
#

Hello, I have a question, how do I create and use a file that does not exist within my plugin?

young knoll
#

Easiest way is probably the old file api

remote swallow
#

ur old

young knoll
#
File file = new File(plugin.getDataFolder(), "myfile.txt");
if (!file.exists()) {
  file.createNewFile();
}```
left pine
quaint mantle
young knoll
#

YamlConfiguration.loadConfiguration(file)

left pine
remote swallow
#

nerds what does this mean

young knoll
#

I am going to guess __main__ is some default variable

#

And print_hi is a method?

remote swallow
#

print_hi is a method

#

but what is the __name__ is

glad prawn
#

Looks like string compare lol

ancient plank
#

__main__ is the name of the environment where top-level code is run.

#

man

#

python smells

young knoll
#

For most practical purposes, you can think of the conditional block that you open with if __name__ == "__main__" as a way to store code that should only run when your file is executed as a script.

slender elbow
#

/chatgpt what is if __name__ == '__main__' in python

#

and enjoy

#

then say something like "that is wrong, your reasoning is flawed"

ancient plank
#

or just google it and get an answer instantly

young knoll
#

Tis what I did

slender elbow
#

no no i prefer entertainment

#

like when you tell it that 2+2 is 8 or whatever and it will be like, ah yes i apologise

ancient plank
#

the only joy I get from chatgpt is making it write movie scripts for my friends to read

young knoll
#

I think they made it more resistant to gaslighting

quaint mantle
#

python sucks

slender elbow
#

they haven't

#

it only gets worse and worse with each update

sacred mountain
#

i hate java sometimes

slender elbow
#

real

echo basalt
#

If you run it through another script or use it as an import statement or whatever it won't run

shadow night
#

Yes

river oracle
#

hands down one of the best scripting languages

quaint mantle
vagrant stratus
#

I'm using python rn to migrate a SQLite DB to MySQL, for example

quaint mantle
#

so just script

river oracle
vagrant stratus
river oracle
#

if my scripts are small I'll write bash otherwise doing python

vagrant stratus
#

AI is a huge thing

river oracle
#

otherwise yu stick to data science, AI, and scripting

vagrant stratus
#

PyGame

#

run well if you're not dumb

ancient plank
#

I don't like python but I use it to do the small things that there's no point in making it using java

ornate patio
quaint mantle
river oracle
vagrant stratus
river oracle
#

python is also great for writing quick mockups

quaint mantle
#

you can make games in css too

vagrant stratus
quaint mantle
#

it is literally just pngs

#

give ma an AAA game in python

river oracle
#

or a good indie game that's more than pngs

#

AAA games suck ass now adays

#

with a few exceptions nothing good has been released in a while

worldly ingot
#

not a game, but MCEdit was Python 🙂

quaint mantle
#

who uses mcedit in 2023???

slender elbow
river oracle
#

didn't know that

fervent robin
worldly ingot
quaint mantle
#

you have unity whoch uses c#
you have unreal engine using C++
just go out and fucking learn something else than python

worldly ingot
#

But it was the most popular world save editing tool for a long while

quaint mantle
#

it is not anymore so it is completely irrelevent so

river oracle
#

python is a good lang its okay if you dont like the syntax but you can't deny its uses

young knoll
#

I miss mcedit

#

It was so nice

quaint mantle
#

(which then are completely unmaintable)

ancient plank
#

all my homies use amulet now

quaint mantle
#

i hate gradle

young knoll
#

Is amulet anywhere close to the og mcedit

river oracle
#

then use maven

quaint mantle
#

maven is even worse

ancient plank
#

idk I haven't used amulet in a while

river oracle
vagrant stratus
#

then use java's compilation commands kekw

quaint mantle
#

aint n oway im gonna use html to configure shit

young knoll
#

html?

quaint mantle
#

hell no

ancient plank
#

xml

river oracle
#

xml is awesome

young knoll
#

Now that's an idea

quaint mantle
#

xml is just html with custom tags

young knoll
#

html based java buildtool

river oracle
#

@young knoll hi chollco

young knoll
#

hi

quaint mantle
#

i dont see difference

river oracle
#

lol

quaint mantle
#

both suck and are not made for configuration

young knoll
#

I am chocos replacement while he is away from home

river oracle
#

no I'm pretty sure xml is purely used for configuration

#

not sure what you're on about

quaint mantle
river oracle
#

I stay away from web development I don't have a death wish

young knoll
#

brainfuck based configuration

river oracle
#

that'd be awesome

quaint mantle
#

then why the hell would you use xml which looks like html on drugs

river oracle
#

it looks nice and very clear

#

think it looks better than json for some things

quaint mantle
#

for example xml files in .de are good but then using them to actual configuration sucks

young knoll
#

xml data storage is yikes

river oracle
#

store data with xml?

quaint mantle
#

YES?

ancient plank
#

I program in machine language

quaint mantle
#

the only good use for maven is not to use it

river oracle
#

maven is great

quaint mantle
#

basically just use project settings in intellij

young knoll
#

Go look at a rimworld save file

#

Pain

quaint mantle
#

and dont touch maven at all

river oracle
#

do you like anything?

quaint mantle
#

i love kotlin

river oracle
#

okay yep figured

#

loves kotlin yet hates gradle

young knoll
#

even though gradle is kotlin

#

🤔

quaint mantle
#

gradle docs are the worst thing

slender elbow
#

you're just bad at navigating them

quaint mantle
#

no, i actually can navigate however they cant answer questions i have nor help with gradle at all

river oracle
quaint mantle
#

and are mostly outdated with stuff that are no longer relevent

#

so then you need to search on google about gradle

#

which is also painful, becuz usually your use case of gradle is very narrow, like me making multiproject in gradle

vagrant stratus
#

I only use maven kekw

river oracle
#

I switched back to maven recently

#

and actually spent time learning how it works

#

able to actually just write up a biuld file now only have to look up plugin versions

quaint mantle
#

also maven docs are even more outdated than gradle docs lmao

slender elbow
#

gradle docs are not outdated lmao

#

whatever you're snorting, give me some

young knoll
#

The kotlin docs used to be lacking

zealous osprey
#

?paste

undone axleBOT
young knoll
#

But now that they use kotlin by default it's probably better

ancient plank
#

all I need in life are spigot javadocs

slender elbow
#

whatever code examples they have now there is a little toggle to show groovy or kotlin

quaint mantle
young knoll
#

gradle kotlin docs*

river oracle
quaint mantle
#

maven docs still reference java 1.7

#

and junit 4.11

river oracle
#

mmm that's the quickstart guide

fervent robin
#

Does someone have an idea why this part of the plugin msg is getting included? If I print the msg everything else gets sent except the last part of it

river oracle
quaint mantle
#

thats the problem

river oracle
#
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
#

no its not, why update it every year if nothing has changed

quaint mantle
#

i mean why use shit that wasnt touched for 22 years

subtle folio
#

because.. it works?

slender elbow
subtle folio
#

that’s the point of a standard..

ancient plank
#

git commit -m "updated year to 2023, nothing else changed because it still works the same way it did last year, and the year before, and the year before, and 2001"

river oracle
slender elbow
quaint mantle
river oracle
#

that's your opinion

#

so its just your opinion the standard isn't good

slender elbow
#

what makes you say it isn't good exactly? "it's old"?

river oracle
#

its xml is probably the only reason

quaint mantle
#

yes

ancient plank
#

move to #general or #verified so ppl can get help, someone has asked a question so it's time to move

river oracle
#

that's not even a good reason