#help-development

1 messages Β· Page 1942 of 1

tender shard
#

you can also try to print out fc.saveToString()

wary oyster
#

java 8 and 17

tender shard
trail remnant
#

Cannot resolve symbol 'YamlConfiguratino'

trail remnant
#

ah

wary oyster
#

and i need 17 installed because i have a 1.18 server

trail remnant
#

nope same error

wary oyster
#

should i just restart again and see what happens

tender shard
#

is your world actually loaded before your plugin gets enabled?

#

because I'm getting this error

trail remnant
#

who

tender shard
trail remnant
#

yes its loaded

wary oyster
tender shard
#

are you 100% sure? pls add "System.out.println(Bukkit.getWorld("pvp"));" and see if it prints CraftWorld{asdasd} or "null"

trail remnant
#

ok

tender shard
#

well obviously use jdk 8 or 1.8

#

well obviously use jdk 8 or 1.8

wary oyster
#

wait but it says i need to run java 8 not 17

#

ye ok

wary oyster
#

what do i do about that

tender shard
#

how are they called

wary oyster
#

exactly the same

#

waitr no

tender shard
#

that's not possible πŸ˜„

wary oyster
#

jdk and jre

trail remnant
#

yep it shows the craftworld

tender shard
#

use jdk

wary oyster
#

ok

tender shard
#

@trail remnant I'm pretty sure your config.yml is somehow messed up

#

for example, when I run it through yamllint, it comes up with this weird result:

trail remnant
#

what is weird about it

tender shard
#

that you have key called ? with a value of "y"

trail remnant
#

idk why thats showing up i just reloaded the plugin and the new file doesnt show that

#

this doesnt make sense lmao wouldnt this be a spigot bug? the config section 100% existist but its saying its null

wary oyster
#

Eyy it’s working

#

Ty for help

tender shard
#

np

#

it works 100% fine for me when the file is actually saved to file and then loaded

#

[02:08:10 INFO]: [Test] [STDOUT] test->true

trail remnant
#

the code i sent works for you?

tender shard
#

I did it a bit different but kinda the same

trail remnant
#

can you send it

tender shard
#
    @Override
    public void onEnable() {
        saveResource("custom-config.yml",true);
        YamlConfiguration yaml = YamlConfiguration.loadConfiguration(new File(getDataFolder(),"custom-config.yml"));
        yaml.getKeys(true).forEach(System.out::println);
        System.out.println(yaml.getLocation("test.start"));

    }
#

custom-config.yml:

test:
  start: &id001
    ==: org.bukkit.Location
    world: world
    x: -0.14127050089454213
    y: 65.43811814559274
    z: -22.821418794485666
    pitch: 28.3499
    yaw: 26.878477
  Name: test
wary oyster
#

Oh my gosh the amount of stuff that is still going in console is mind blowing

tender shard
#

console output:

#

[02:11:34 INFO]: [Test] Enabling Test v0.9.9
[02:11:34 INFO]: [STDOUT] [java.lang.Iterable] test
[02:11:34 INFO]: [STDOUT] [java.lang.Iterable] test.start
[02:11:34 INFO]: [STDOUT] [java.lang.Iterable] test.Name
[02:11:34 INFO]: Location{world=CraftWorld{name=world},x=-0.14127050089454213,y=.....

#

so I still think that you just didn't properly save your file

#

which is weird because you said that the try/catch prints it out

trail remnant
#

omg im dumb as hell i realised the problem i was storing a world in the same section

tender shard
#

bruh why didn't you send the config you were using lol

#

I didn't ask for the config for fun πŸ˜„

#

I thought what you sent was the file you were actually using

wary oyster
#

ok so i did all this because intellij wont let me select 1.8 in the plugin and its still not working do you know why

trail remnant
#

it was

#

the command that i used after the config to test the plugin did it

tender shard
#

ugh πŸ˜„

wary oyster
# tender shard use jdk

i built it so that i could select 1.8 as a version in the intellij marketplace plugin in the pom.xml file but its still not seen as a valid version what do i do

tender shard
#

show your pom.xml

wary oyster
#

i cant send images

eternal night
#

?oaste

tender shard
#

?paste

undone axleBOT
eternal night
#

?paste

undone axleBOT
eternal night
#

urgh xD

wary oyster
#

what

tender shard
#

that should do it πŸ˜„

eternal night
#

copy and paste the file contents

#

into the linked website

#

and then send us the link

wary oyster
#

ok

tender shard
eternal night
#

that is definitely not the right version

tender shard
#

did you really compile 1.8?

wary oyster
#

1.8 is not seen only 1.12 and up

tender shard
#

or did you compile 1.8.8 etc?

#

what exact version did you compile with buildtools?

eternal night
#

what are they trying

tender shard
#

no idea, i guess they want to use 1.8.X api

eternal night
#

1.8.8-R0.1-SNAPSHOT is the version string you want

wary oyster
#

i was watching a tutorial and when they typed 1.8 it showed a thing that came up to autofill for 1.8

eternal night
#

not 1.8

eternal night
#

well then just throw that in ?

tender shard
#

oh yeah i didnt even see they forgot -R0.1-SNAPSHOT

wary oyster
#

but it doesnt recognize that

eternal night
#

or type it off the tutorial

tender shard
eternal night
#

I mean

tender shard
#

and it'll download it

eternal night
#

just because intellij doesn't auto suggest something does not mean it isn't valid

wary oyster
#

I FEEL SO DUMB

#

AAAAAA

#

ty for help though

#

in the tutorial it said to click reload if it doesnt come up and i didnt think that meant u already had to have that tped in for it to work

tender shard
#

yeah thats how it works lol

#

intellij only autocompletes what you already have downloaded

#

and you can download it by just specifying the version you want, then click on reload

#
public class PutinPlugin extends JavaPlugin {

    static Putin putin = new Putin();
    
    public static Putin getPutin() {
        return putin;
    }

    public static class Putin {
        private Putin() {}
    }
}

help why is not working

unreal quartz
#

Have you tried turning it off and back on again

lost matrix
hardy swan
#

❓

quaint mantle
hardy swan
#

just google "How to make Putin work"

candid plover
#

Always when I pull information from a hashmap from another plugin of mine, does it return null? Can someone help me?

hardy swan
#

are you sure the key is mapped to anything in the map?

candid plover
#

I think I do not understand

tender shard
#

a hashmap is like a phonebook.
"mfnalex" -> 12345
"jesus" -> 6789
where mfnalex is the key and 12345 is it's value

#

so map.get("mfnalex") == 12345

candid plover
#

Yes, when I pull information from the main plugin it returns normally.

#

but, i pull from other plugin, return null

tender shard
#

then it's not the same hashmap you access

#

show the code in your other plugin

candid plover
#
            sender.sendMessage("Β§c" + data.getLevel());```
tender shard
#

what's the code for getPlugin(), getManager() and getCache()?

candid plover
#

    public ConsoleCommandSender console = Bukkit.getConsoleSender();

    public LBPlayer getCache(UUID uuid) {
        return cache.get(uuid);
    }

    public void addCache(UUID uuid, LBPlayer player) {
        cache.put(uuid, player);
    }

    public void removeCache(UUID uuid) {
        cache.remove(uuid);
    }

    public boolean hasCache(UUID uuid) {
        return cache.containsKey(uuid);
    }

    public int cacheSize() {
        return cache.size();
    }

    public HashMap<UUID, LBPlayer> getCache() {
        return cache;
    }```
#

Class Manager

eternal night
#

Are you shading the other plugins classes by any chance ?

candid plover
#

    public static MainEngines getPlugin() {
        return instance;
    }```
#

getPlugin in mainclass

#

private static LBManager Manager;

        return Manager;
    }```
tender shard
#

yeah you probably shaded your first plugin into the second one

eternal night
#

tho I guess insstance would be null then

#

if the class got duped

tender shard
#

hm yes

candid plover
eternal night
#

Ye

candid plover
#

lol

eternal night
#

oh

tender shard
eternal night
#

are you shading your plugin ?

tender shard
#

a nullpointerexception somewhere?

#

show the full error message pls

eternal night
#

oh god πŸ‘€

#

right

tender shard
#

maybe it's indeed instance that's null

eternal night
#

"always null" might just be a NPE on the initial instance

#

people that don't have java 15 NPEs have my condolences

candid plover
#

at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(SourceFile:144) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(SourceFile:118) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1061) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1054) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(SourceFile:127) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1038) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:970) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:273) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_292]
Caused by: java.lang.NullPointerException
at lb.levels.commands.tab.CommandTest.onCommand(CommandTest.java:23) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
... 19 moreat net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:49) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[server.jar:3096a-Spigot-9fb885e-af1a232]
at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:28) ~[server.jar:3096a-Spigot-9fb885e-af1a232]

#

at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[server.jar:3096a-Spigot-9fb885e-af1a232]

tender shard
#

what's CommandTest line 23?

candid plover
#

LBPlayer data = MainEngines.getPlugin().getManager().getCache(player.getUniqueId());

eternal night
#

😦

tender shard
#

okay put this into separate lines, like this:

eternal night
#

I seem to have been correct

tender shard
#
MainEngines plugin = MainEngines.getPlugin();
Manager manager = plugin.getManager();
Cache cache = manager.getCache(player.getUniqueId());
#

or however your classes are actually called

#

then show the new error again and we know what's null

eternal night
#

(or use java 17 when running your server)

tender shard
#

is it enough to run it using java 17 or must it also be compiled for java 17?

eternal night
#

afaik you are fine running it with java 17

#

or 15 for that matter

#

not like the bytecode actually contains NPE checks for this

tender shard
#

yeah then that work too. although most people need an hour of explanation to change their java version πŸ˜„

eternal night
#

and I guess spigot does not have the paper feature to skip java version validation

#

so 1.16 might explode

candid plover
#

MainEngines plugin = MainEngines.getPlugin();
LBManager manager = plugin.getManager(); (return null in this line)
LBPlayer cache = manager.getCache(player.getUniqueId());
sender.sendMessage("Β§c" + cache.getLevel());

eternal night
#

Ye

tender shard
#

you shaded your plugin and how you don't have an instance of course

#

show your pom.xml for the not-working plugin pls

eternal night
#

?paste

undone axleBOT
eternal night
#

pls

candid plover
tender shard
#

this makes no sense

#

how do you even access your plugin

#

you didn't add it as dependency

#

how did you even build the .jar?

candid plover
tender shard
#

ugh

#

you have to use maven to build your .jar

#

and you also have to use maven to add your other plugin as dependency

eternal night
#

does artifact shade ?

candid plover
tender shard
#

I'm out, no idea about the weird artifacts feature. I'd just switch to maven

eternal night
#

^^ probably too

#

you could check what your failing plugin actually contains in the jar

#

by e.g. unzipping the jar file

tender shard
#

oh yeah alternative might be that they never assigned instance

eternal night
#

if the jar contains your MainEngines class file

tender shard
#

in the main plugin

eternal night
#

oh

#

lol yes

tender shard
#

did you ever do "instance = this" in your main plugin somewhere?

candid plover
tender shard
#

then you must get rid of the MainEngines.class in your second plugin

#

I don't know how it works with artifacts

#

in maven you'd just have to add <scope>provided</scope> to your dependency

eternal night
#

(strong suggestion would be for you to fully move to maven)

tender shard
#

yep, currently you have a pom.xml but don't really use it πŸ˜„

tender shard
#

add to your second plugin's plugin.yml
depend: NameOfYourMainPlugin

candid plover
#

softdepend:

  • LBEngines
#

have

eternal night
#

[LBLevels] Loaded class lb.engines.main.MainEngines from LBEngines v1.0 which is not a depend, softdepend or loadbefore of this plugin. suggests otherwise

candid plover
#

oh

tender shard
#

send your plugin.yml pls

#

? paste

#

?paste

undone axleBOT
candid plover
#

i change sofdepend to softdepend

#

one minute

tender shard
#

oh no wait

#

oh no nvm

#

lol

#

softdepend or depend doesn't really matter here

#

?paste your plugin.yml pls

undone axleBOT
candid plover
tender shard
#

looks correct to me

#

are you sure your .jar actually contains exactly this plugin.yml?

candid plover
#

yes

eternal night
#

and your plugin jar no longer contains the LBEngine files now ?

candid plover
eternal night
#

Yes at this point I am also rather confused. Your softdepending does not seem to work (for whatever reason)

#

I am still unsure if intellij is shading your LBEngines files into LBLevels

candid plover
#

:/

eternal night
#

I mean

#

when you compile your LBLevels jar

#

without modifying it

#

does it contain the MainEngines class file

lost matrix
candid plover
lost matrix
eternal night
#

from the looks of it they do not want to shade

#

they want to depend on "api"

#

LBEngines is a plugin on its own

lost matrix
#

I see. So its a standalone spigot plugin that has common functionality?

eternal night
#

So it seems

#

more of a data provider apperantly

candid plover
#

Yes

lost matrix
#

Then make absolutely sure that no other plugin shades the api in.

tender shard
#

the wird thing is that not even softdepend seems to be working for them

#

although I still think the actual plugin.yml doesn't contain the softdepend part at all

lost matrix
# candid plover Yes

Open your jars with a compression application and make sure its not in one of them

tender shard
#

probably they added it and then didn't install the updated .jar or sth

lost matrix
#

Didnt read far up to be honest

eternal night
#

its a mess

#

they use intellij artifact to depend and build

lost matrix
eternal night
#

idk I have never worked with intellij artifacts

tender shard
#

I have no idea on how to use artifacts at all lol

lost matrix
#

Same XD

tender shard
#

that was the reason why I hated intelliJ when I still used eclipse lol

#

there was just no file -> export to jar

lost matrix
#

I started with Eclipse and then switched to ij while also learning about maven

tender shard
#

me too

lost matrix
#

never build artifact since then

lost matrix
candid plover
#

no, there is no .jar in other plugins

tender shard
#

would you mind sending your LBLevels .jar or what ever it's called?

lost matrix
tender shard
#

yeah it's still shaded

#

your levels plugin includes another copy of your engines plugin

#

so it never accesses the actually running LBEngines.getInstance(), but the included one

#

which was never instantiated

candid plover
#

oh

#

how to solve this?

tender shard
#

well with maven it'd be easy

#

let me check intellij

eternal night
#

(or again, to make your life for future support a lot easier look into fully doing this with maven)

tender shard
#

can you show a screenshot of your Libraries section of LBLevels?

tender shard
#

looks correct to me, but after all I have no idea how intellij shading works

#

in your Levels plugin...

#

can you see the LMEngine files there too?

#

did you maybe copy / paste them into the levels plugin?

tender shard
#

then I have no idea

lost matrix
#

Should be Project Settings >> Modules >> Dependencies Tab >> + >> JARs or directories...

tender shard
#

oh yeah

#

check whether your LBEngines is marked as "export" there

#

if yes, untick it

#

although I guess modules is just for maven modules

#

not for manually added libs

lost matrix
tender shard
#

(just forwarding the images they DMed me)

#

try to set it from "compile" to "provided"

tender shard
candid plover
#

ok, one moment

tender shard
#

(although I doubt it's the problem because it's not marked as "export" - as said, we all have no idea about how intellij artifacts work πŸ˜„ )

candid plover
tender shard
#

yeah sorry we all have no idea. we only use maven to not have all those problems πŸ˜›

#

I strongly suggest you to look into how maven or gradle works

candid plover
#

πŸ˜”
ok, i'll get a tutorial, thanks.

tender shard
#

if you'd upload both plugins to github, I can change your pom files so that it should work

willow stream
#

hey, I'm rewriting this really old plugin and trying to figure out how to make it more performant and less laggy, currently it updates a per player hashmap with player's speed from PlayerMoveEvent and more stuff, I feel like that affects the performance a lot, what are some recommendations to fix this

#

it's depending on getting the player's location to calculate speed and then use that speed to create a vector

willow stream
#

it's an old soccer plugin, it's using Entity#setVelocity with some parameters that seem really poorly written to me

willow stream
eternal night
#

could pretty much just grab the velocity of the player at the point of "kicking the ball"

#

the euclidean length of the vector represents the "speed" of the player

grave trout
#

Hi, may someone explain me how can I use showPlayer?

willow stream
#

oh right I forgot to mention, the speed is also used to move the ball around

#

not just for kicking

eternal night
#

Well you call it on a player you previously called hidePlayer on

tender shard
#

okay @candid plover First thing: you have groupId and artifactrId messed up in your pom.xml.
It should be like this:
groupId: lb.engines
artifactId: LBEngines (not the other way around) Fix that please, then go to "maven" (right side) -> Lifecycle -> double click on "install"

#

in LBLevels, also switch groupId and artifactId

proud forum
#

hello! for some reason this code isnt working:

package me.mrhonbon.coolplugin;

import com.destroystokyo.paper.event.entity.CreeperIgniteEvent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class Creeper implements Listener {

    @EventHandler
    public void onCreeperIgnite(CreeperIgniteEvent e) {
        System.out.println("WATCH OUT!");
    }
}

could someone help out?

eternal night
#

did you register the listener πŸ™ƒ

#

also paper

proud forum
#

yes

eternal night
#

heh

proud forum
#

i did register

proud forum
#
package me.mrhonbon.coolplugin;

import org.bukkit.plugin.java.JavaPlugin;

public final class CoolPlugin extends JavaPlugin {

    @Override
    public void onEnable() {
        // Plugin startup logic

        getServer().getPluginManager().registerEvents(new Creeper(), this);

    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }
}
quaint mantle
#

because println ends up in the console

proud forum
#

oh

eternal night
#

bruh

quaint mantle
#

bruh

proud forum
#

yeah i want it sent to all the players MY FAULT LOL

dusk flicker
#

πŸ‘

quaint mantle
#

Bukkit.broadcastMessage

proud forum
#

πŸ‘

quaint mantle
#

also

#

if you want it to be in the radius of a player

tender shard
proud forum
#

neat

willow stream
#

imma just send what's concerning me

#

this is what I'm worried about:

@EventHandler
public void onMove(PlayerMoveEvent event) {
  Location to = event.getTo();
  Location from = event.getFrom();
  double x = Math.abs(to.getX() - from.getX());
  double y = Math.abs(to.getY() - from.getY()) / 2.0D;
  double z = Math.abs(to.getZ() - from.getZ());
  this.speed.put(event.getPlayer().getUniqueId(), Math.sqrt(x * x + y * y + z * z));
}```
and then it's being grabbed like this: `power = this.speed.get(player.getUniqueId()) * 2.0D + 0.4D;`
and used with other values to make a kick happen:
```java
kick = player.getLocation().getDirection().normalize().multiply(power * charge * this.kickPower).setY(0.3D);

and finally set as velocity like:
cube.setVelocity(cube.getVelocity().add(kick));

tender shard
# candid plover yes

okay, now add this to your LBLevels pom.xml (inside the part where you already have <dependencies>:

        <dependency>
            <groupId>lb.engines</groupId>
            <artifactId>LBEngines</artifactId>
            <version>1.0-SNAPSHOT</version>
            <scope>provided</scope>
        </dependency>
willow stream
tender shard
#

should look like this:

lost matrix
proud forum
willow stream
#

should I still update the velocity in that event?

#

just replace what's being calculated

candid plover
tender shard
# tender shard should look like this:

after you've done that, also double click on maven -> lifecycle -> install in LBLevels. You WILL get some errors because it won't find @ NotNull annotations from com.sun.istack package. Simply remove that import in your 4 command files, and also delete the @ NotNull annotations. Now it should work perfectly fine

lost matrix
# proud forum

Paper -> use adventure
Because for some reason Strings are deprecated. I think this is a highly questionable decision but well...

tender shard
lost matrix
grave trout
quaint mantle
#

why the hell are strings deprecated in a method that uses a string

tender shard
proud forum
willow stream
proud forum
dusk flicker
#

Adventure is actually really nice

#

takes a long ass time to get into if you have no idea how to tho lol

lost matrix
lavish hemlock
#

The methods that take in a String are deprecated in favour of TextComponent methods as Paper uses Adventure instead of Bukkit/Mojang's "legacy text" system (which would be colour codes)

lost matrix
lavish hemlock
#

I think it's actually smart Paper did that

dusk flicker
#

dear lord lol

tender shard
# candid plover ok, i change

I opened a pull request on github for both your plugins. just accept the pull request on both plugins, and redownload both projects from github. then, first install LBEngine, then install LBLevels. should work now

quaint mantle
#

imagine

dusk flicker
#

See I like that Paper did build it in, makes it much easier to work with imo but its a fucking nightmare to get started with adventure

#

Like its documentation SUCKS

lavish hemlock
#

As other people have mentioned, Adventure is much closer to how Minecraft servers actually represent text.

lost matrix
quaint mantle
#
System.out.println(new StringBuilder().with('h', 'i', '!').build());
#

imagine

lavish hemlock
#

.with is a thing...?

quaint mantle
#

no

#

hence

lavish hemlock
#

also Adventure is not nearly that complicated

quaint mantle
#

"imagine"

dusk flicker
#

It took me fucking 3 days to figure out how to do stupid hex color codes in a message

lavish hemlock
#

it doesn't do char-by-char

lavish hemlock
#

I'm pretty sure you can do TextComponent.of("") for text with no formatting

lost matrix
lavish hemlock
#

but idk been a while

tender shard
lavish hemlock
#

Since each hex digit must be specified separately.

dusk flicker
#

I didnt find a way I liked with the translate for the bukkit ver

tender shard
#

yeah I just run it through some regex beforehand

dusk flicker
#

I wanted something like <#123456 >

tender shard
#

so it turns <#ff0000> into &x&f&f&0&0&0&0

#

yes, that's exactly what I'm doing

dusk flicker
#

hmm interesting

lavish hemlock
#

(also personally I don't like relying on color codes as opposed to enums)

lavish hemlock
#

(codes makes it easier to forget what is what color)

dusk flicker
#

Either way I did want to get into working with adventure as I wanted to do more indepth stuff with chat

#

but it was nightmare lol

lavish hemlock
#

Oh yeah Adventure can also do stuff like hovers and clickables right?

dusk flicker
#

yeah

lavish hemlock
#

Also translatable text?

#

Yeah so that's why Adventure exists. You can't really do that as well with legacy text.

tender shard
# candid plover i made pull

just redownload both projects now from github, open them in intelliJ, maven > lifecycle -> install. first in LBEngines, then in LBLevels

#

now you have both .jars and they should work fine

dusk flicker
#

You can just not that great

lavish hemlock
#

Which is why I said "as well"

#

Anyway Adventure is great, but I agree they could have better docs

tender shard
dusk flicker
#

Paper did a decent way of implementing it for most things, so you dont have to deal with a lot of the adventure stuff, but I could find like no good documentation on any of the specific implementation and Adventure, and its documentation previously mentioned helped none lmao

lavish hemlock
#

Oh also

dusk flicker
#

I think I got Conclure to help me or smth lol

lavish hemlock
#

String-based methods aren't removed in Paper

#

Just deprecated

#

You can still use them, theoretically.

lost matrix
tender shard
dusk flicker
#

I feel like it was semi useless to depreciate the string methods

#

Like, why?

lavish hemlock
#

It's a warning about convention

willow stream
lavish hemlock
#

"This API usage is unconventional to this framework but must remain for compat" ig

lost matrix
lavish hemlock
#

Is there no way to configure those? :p

lost matrix
lavish hemlock
#

Well

#

QA should be useful to the devs

#

Therefore devs should have control over it

#

If there's some edge-case, then why not allow them to handle it?

#

I think it's valid to disable deprecated methods detection if you must use deprecated methods to make your life easier.

lost matrix
#

Deprecated methods are not an edge-case...

lavish hemlock
#

In this situation they are

lost matrix
#

No because there are a ton of other deprecated methods in spigot. Which makes the string based broadcast not an edge-case by definition.

tender shard
#

but yeah if you use paper-api, you don't wanna support spigot anyway, so

#

either use spigot and use their methods or use paper-api and don't use deprecated methods imho

lost matrix
#

meh

proud forum
#

yeah i am so confused

#
package me.mrhonbon.coolplugin;

import com.destroystokyo.paper.event.entity.CreeperIgniteEvent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.TextComponent;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class Creeper implements Listener {

    @EventHandler
    public void onCreeperIgnite(CreeperIgniteEvent e) {
        TextComponent textComponent = Component.text("Watch out!");
    }
}
#

this makes me so mad

quaint mantle
#

thats so ugly bruhh

dusk flicker
#

While I am fine with them supporting adventure, and recommending it a lot, I dont feel like its the best reason to depreciate events, methods, etc. Also some of the naming conventions for adventure stuff I think is horrible, but thats just my opinion (Like for example, the paper server ping event is like Event#motd(TextComponent)

lost matrix
quaint mantle
#

?paper

dusk flicker
#

I thought they removed all the old com.destrostokyo stuff years ago and switched to the new packages

lavish hemlock
#

Static factory API is beautiful :<

lost matrix
dusk flicker
#

ah

lavish hemlock
#

I just generally hate getters/setters

#

They are fucking annoying

#

I understand their point

#

but they make code so much uglier

dusk flicker
#

whats your alternative? rawdog the variables?

lost matrix
lavish hemlock
worldly ingot
#

There's a name for that method name style. I forget what it's called for the life of me

eternal night
#

fluent ?

worldly ingot
#

I really dislike it but it's where Java conventions are going now-a-days

#

Yeah something like that

eternal night
#

I mean, records expose fluent style getters πŸ™

dusk flicker
#

yeah Im not a fan of it

worldly ingot
#

Yeah, records use them

lavish hemlock
#

Am I the only person here who actually enjoys fluent style

quaint mantle
#

its so bad

eternal night
#

nah maow I am down for them

lavish hemlock
#

God I fucking hate programmers

#

Ok thank you

dusk flicker
#

Lmao

lavish hemlock
#

Like programmers are always arguing over stupid bullshit all the time

dusk flicker
#

Yep

#

its in our blood

lavish hemlock
#

and they're always so self-righteous and full of themselves >:(

quaint mantle
#

of course method getter names are better for records

eternal night
#

I mean as long as we all agree that gradle is objectively better than maven it is okay

#

πŸ™ƒ

quaint mantle
#

levae ^

dusk flicker
#

LOL

quaint mantle
#

^^^

#

javac >>>

lavish hemlock
#

Just use Make 😎

quaint mantle
#

Ant 😎

lavish hemlock
#

(jk, Make also kinda sucks)

lost matrix
quaint mantle
#

we all use it and make it official for spigot

lost matrix
lavish hemlock
#

I actually plan on making my own buildsystem soon

dusk flicker
#

this type of naming I dont like

#

for the renderer

lavish hemlock
quaint mantle
#

needs to be

#

setRenderer

dusk flicker
#

you dont want to see the method behind that

#

ITS A NIGHTMARE

quaint mantle
#

showm e

dusk flicker
lavish hemlock
#

But then Make has so many weird nuances that cause issues for newbies to it

dusk flicker
#

keep in mind might be an easier way to do it

lost matrix
lavish hemlock
#

And is terribly difficult to read

dusk flicker
#

but thats how ive figured it out

lost matrix
lavish hemlock
#

I thought you meant in like

#

builders or whatever

#

cuz in builders it looks nice

eternal night
#

I mean

dusk flicker
#

thats how I figured out to deal with formatting chat

eternal night
#

it also just plain looks wrong

lavish hemlock
#

but if it's for static factory methods

#

egh

tender shard
#

@eternal night we fixed the LBEngine thing by properly compiling with maven πŸ˜„

eternal night
#

LOL

#

nice

dusk flicker
#

static methods = no

tender shard
eternal night
#

just as a heads up rack, components on the same level do not inherit their chat colour o.O

dusk flicker
#

I mean like static imports

#

not methods\

tender shard
#

I like to static import stuff like EventPriority

dusk flicker
#

you act like I can understand adventure

lost matrix
eternal night
#

Like

.append(Component.text(CC.WHITE))
.append(Component.text("This must be white"))
#

is wrong

dusk flicker
#

oh will it not be white?

#

lmao

eternal night
#

no

dusk flicker
#

it work in my case Β―_(ツ)_/Β―

eternal night
#

they are children to the same parent

#

hence do not inherit their styling

lavish hemlock
#

.append(text(""))

dusk flicker
#

imo static imports kill readability

#

but that might be just me

lavish hemlock
#

Okay unless you're not using an IDE

lost matrix
lavish hemlock
#

No

#

You can easily track a method call to where it came from with an IDE

#

And most developers use an IDE

dusk flicker
#

but you shouldent have to

lavish hemlock
#

It's literally just a second of hovering over the call

#

And it shows you it comes from Component

dusk flicker
#

thats a second wasted

lavish hemlock
#

It's a second.

#

I really hope you're joking.

dusk flicker
#

I'm fucking with you on that, still imo dont like them

tender shard
#

but 30 seconds saved for not having to type Component all the time

lavish hemlock
#

Okay yeah

eternal night
#

intellij auto completes the component class call

#

like

lavish hemlock
#

Is it just me or does anyone else hate when someone makes a joke in the middle of a serious conversation??

dusk flicker
#

its what I get for doing the same thing for so many years lol

tender shard
#

what's really disgusting is when people use this.stuff() all the time lol

eternal night
#

.append(tex

eternal night
#

you can auto complete to .append(Component.text(

lavish hemlock
eternal night
#

idk did it all the time

tender shard
#

python is weird because people always import stuff under different names

eternal night
#

but intellij is intellij

tender shard
#

like import System.out as sout

eternal night
#

so ye, sometimes πŸ˜…

dusk flicker
#

I never type system.out anymore

lost matrix
#

import requests as scrambledeggs

dusk flicker
#

Only type sout and let it autofill

tender shard
#

yeah it was an example for python devs

dusk flicker
#

Really screws me up when I aint in IntelliJ

tender shard
#

intellij cli version when

lavish hemlock
#

that

#

is basically all CLI editors ever

#

except with code inspections and autocompletion

tender shard
#
public class AClass extends JavaPlugin {

    private String name;
    private int age;

    public AClass(String name, int age) {
        AClass me = this;
        AClass that = me;
        me.age = age;
        that.name = name;
    }
}
#

beautiful

lavish hemlock
#

oh my god

#

I love how it's a JavaPlugin too so it'll probably error on instantiation.

tender shard
lavish hemlock
#

Here's my favorite example of odd code style that takes full advantage of the lexer:

for (int i = 5; i --> 0;) {
    System.out.println(i);
}
#

You have just been introduced to the ""down-to operator""

#

It is in fact

#

(i--) > 0

lavish hemlock
#

Ah I see you use ligatures too

#

Yeah never use --> it's literally a joke

lost matrix
tender shard
eternal night
#

real devs don't use forloops, just int streams for that maximal performance

lavish hemlock
#

Finally someone agrees

lavish hemlock
#

I do that!

#

I'm a real developer!

eternal night
#

πŸ₯³ sick

lavish hemlock
#

Don't hurt me

tender shard
#

I love those stackoverflow questions like "how can I print out all even numbers between 0 and 20 using java" and people answer with

System.out.println("24681012141618");
lavish hemlock
#

Ez, first you must-

import isodd;
lost matrix
lavish hemlock
#

I should make a compiler that optimizes eager streams down to loops

lost matrix
lavish hemlock
#

...really?

#

That is cool.

eternal night
#

o.O

lost matrix
#

I think so

eternal night
#

javac does anything ?

#

afaik most of this is JIT things

lavish hemlock
#

I didn't think Javac had complex optimizations like that

#

And... I've literally been in the Javac code base before lol

#

It's a fucking nightmare.

lost matrix
#

Hm maybe it was just the jit doing the work...

tender shard
#

hm well java 17 doesn't

sullen marlin
#

see: haskell

tender shard
#

this is the code @lost matrix sent

lavish hemlock
#

Well

#

Partially

lost matrix
lavish hemlock
#

I really like higher-order functions and fluent codestyles

#

But shit like monads is where I draw the line tbh

tender shard
lavish hemlock
#

Y'know where every type of function must have its own complicated-to-explain term

wet breach
#

most if not all optimizations are done with the JIT compiler

tender shard
#

I love how java is like "ugh calculating 3*3? What a waste of time, let's replace it with 9."
and then on the next line it's like
"Oh, the square root of 4? Better calculate this one at runtime!"

wet breach
#

JIT has two modes it operates in. Interpreted and compiled. It will run your code through interpreted mode if it doesn't already know the optimizations to make for native and observe however long it deems necessary to make the what it thinks is the correct optimizations.

wet breach
wet breach
#

floating points work differently depending on the OS and CPU

lavish hemlock
#

Java also calculates string concatenation at compile-time if possible

tender shard
lost matrix
lavish hemlock
#

Fun fact: strictfp is applied to all classes as of Java 16 I'm pretty sure

wet breach
#

it may have started as an integer but to do square root properly and use cpu extensions it has to be a floating point

tender shard
lavish hemlock
#

It has to convert int to float to perform the calculation

eternal night
#

java 17 removed strictfp's functionality

lost matrix
tender shard
lavish hemlock
eternal night
#

πŸ™

supple bay
#
08.02 22:31:06 [Server]  java.lang.NoClassDefFoundError: org/terraform/coregen/populatordata/PopulatorDataAbstract
08.02 22:31:06 [Server]  at java.base/java.lang.Class.getDeclaredConstructors0(Native Method)
08.02 22:31:06 [Server]  at java.base/java.lang.Class.privateGetDeclaredConstructors(Class.java:3344)
08.02 22:31:06 [Server]  at java.base/java.lang.Class.getConstructors(Class.java:2043)

Anyone got an idea on how I would be able to access this abstract class? lol

lost matrix
willow stream
wet breach
eternal night
#

use the library loader to spit on maven central TOS ?

tender shard
wet breach
#

square root on one system is not always exactly the same as another

#

even if its whole numbers

lost matrix
wet breach
#

for instance, whole numbers or Integers are sometimes not really whole numbers πŸ˜›

tender shard
#

I wonder which implementation returns 1.99999999 instead of 2.0 for sqrt(4)

wet breach
#

it could return 2.000000001

tender shard
#

but Math.sqrt returns a double

hardy swan
#

2 will be 2

wet breach
#

The JVM spec doesn't say how an Integer must be represented internally only that it must function as the API expects it to

lost matrix
tender shard
wet breach
hardy swan
#

it depends on how sqrt is calculated

tender shard
lost matrix
tender shard
#

as said, I'd love to see an example of when

Math.sqrt(4) == 2.0

return false

#

if anyone could show an example, that would be nice

wet breach
# tender shard but Math.sqrt returns a double

just fyi on this, a double is a float just a more precise one as it can have 15-16 decimal places as it is 8bytes wide unlike a float that has 6-7 decimal places as it is 4bytes wide

lost matrix
tender shard
tender shard
lost matrix
lavish hemlock
#

How do I compare them then?

lost matrix
#

and doubles are also just floats. Double precision floats. But still floats.

wet breach
#

well as stated before, just because it looks like it is a whole number doesn't mean it really is =/

lavish hemlock
#

(Y'know I don't work with floating point stuff that often lmao)

brave sparrow
lost matrix
brave sparrow
#

because "Due to rounding errors, most floating-point numbersΒ end up being slightly imprecise. However, it also means that numbers expected to be equal (e.g. when calculating the same result through different correct methods) often differ slightly, and a simple equality test fails"

lavish hemlock
#

...what is an epsilon?

lost matrix
tender shard
#

I just ran Math.sqrt(4) 100 times on linux amd64, windows amd64, and linux on arm, with jdks between 8 and 17, both oracle and adoptopenjdk and it always returned 2.0 and was == to 2.0

lavish hemlock
#

What is a "lowest acceptable delta"?

tender shard
#

so all I want to say I'd love to see someone show a situation where this wouldn't work

hardy swan
wet breach
lavish hemlock
#

Ah

lost matrix
eternal night
#

epsiolon is basically a number > 0 but as small as you'd like

lavish hemlock
#

That is fuckin' obnoxious

eternal night
#

the smaller the less errros you tolerate

brave sparrow
#

it's because if you calculate the same thing two different ways, you can end up with two slightly different values

#

because floating point is imprecise

tender shard
#

all I want is one example of where it would not work

#

I don't wanna say it will always work, I just want to see one example of a situation where it wouldnt work

lost matrix
tender shard
lavish hemlock
#

I mean it's still really obnoxious

brave sparrow
#

them's the breaks

lavish hemlock
#

I understand why Minecraft had such a bad floating point precision error back in the ol' days now

tender shard
#

it's a shame they fixed it

#

the far lands were awesome

wet breach
#

I mean not really fixed per-say

lavish hemlock
#

I think they should've kept the chunk generation for them

tender shard
#

yeah they added a world border lol

brave sparrow
#

it's because floating point numbers are adding negative powers of 2, so there's not a floating point representation for some decimal numbers

lavish hemlock
#

Just removed all the other glitchy aspects

#

Like the hitboxes being offset or disappearing

#

And sound beginning to break

#

Or

hardy swan
lavish hemlock
#

The game crashing if you go too far

#

lol

#

But yeah an official Far Lands biome would've been awesome.

hardy swan
#

i think

lavish hemlock
#

I can imagine people building bases in them.

brave sparrow
#

also for Math.sqrt(2.0) it wouldn't shock me if there was a lookup table under the hood for small perfect squares

young knoll
#

Or falling blocks breaking Euclidean geometry

brave sparrow
#

lol

hardy swan
#

but i think most languages do a round off

#

so it will still show up as 0.1

tender shard
#

smh still 6% on java 8

lavish hemlock
#

Java 8 is so nice though :(

eternal night
#

don't even want to know how many enterprise applications still run java 8

wet breach
brave sparrow
#

java 8 is da bomb diggity

eternal night
#

if I didn't have my var I'd be crying

#

ngl

lavish hemlock
tender shard
lavish hemlock
#

Anyway so like

brave sparrow
eternal night
#

yea i recently stumbled upon a project that uses java 6

wet breach
#

I would be surprised if anyone was running Java 5 o.O

eternal night
#

and then used googles optional πŸ˜‚

#

absolute clowns

brave sparrow
#

there's enterprise systems still using vista

tender shard
#

at least pre java8 is non-existant in MC servers πŸ˜„

tender shard
young knoll
#

I used maven a while back and it defaulted to 5

#

Because of course

brave sparrow
tender shard
#

the servers weren't connected to any internet thingy though

eternal night
#

maven is on the forefront of progress

lavish hemlock
hardy swan
wet breach
tender shard
lavish hemlock
eternal night
#

tbh java 8 is great just because it brought functional programming to java

lavish hemlock
#

Yes

#

Lambdas 😍

eternal night
#

or well, first-class functional

brave sparrow
#

Lambdas get overused

wet breach
#

I dislike lambdas

lavish hemlock
#

I think first-class is actually pretty smart

tender shard
#

java 8 was the best update ever but I still don't get why people don't update

young knoll
#

Because they need that legacy reflection

#

Duh

lavish hemlock
#

Legacy reflection was awesome :(

eternal night
#

πŸ™ what to do if I cannot change my private static final field

young knoll
#

Unsafe

tender shard
young knoll
#

Until that goes away too

wet breach
eternal night
#

doubt that unsafe will go away any time soon

young knoll
#

Don’t jinx it

eternal night
#

there is always a need for bypassing the compiler/runtime

lavish hemlock
#

They are slowly replacing Unsafe's methods with safe API alternatives

#

You know allocateMemory? That's the Foreign Memory API from Java 16 (or is it 17?)

wet breach
#

There is currently a couple of unsafe methods that would probably prove difficult to remove

eternal night
#

it is still incubating isn't it ?

#

the foreign mem

lavish hemlock
#

Yeah but it'll be out of incubator soon.

wet breach
#

unsafe is for interacting with the JVM directly

lavish hemlock
#

Probs Java 19 or 20

eternal night
#

just give me valhalla Β―_(ツ)_/Β―

lavish hemlock
#

I wish they had actual language features for Unsafe

eternal night
#

only thing I really care about at this point

lavish hemlock
#

So

#

My ideal language is basically Java + C + functional

#

:)

wet breach
#

you can invoke C stuff with JNI

tender shard
#

not one single server in north korea 😦

lavish hemlock
#

Yeah but then it's not Java

tender shard
#

also wtf is wrong with africa

wet breach
willow stream
young knoll
#

Mojang and their private static final immutable maps

#

:(

lavish hemlock
willow stream
#

thank you for the help 7smile7

tender shard
#

he wants to give me all his money

lavish hemlock
#

Hmm

tender shard
#

so he must be able to afford an MC server

young knoll
#

Did he move from Nigeria

lavish hemlock
#

Maybe he just doesn't like MC

tender shard
young knoll
#

He probably plays roblox instead

tender shard
tender shard
wet breach
#

well at least everyone got a lesson in regards to floating point arithmetic's and precision πŸ˜›

tender shard
#

greenland also has not a single server

lavish hemlock
#

Thanks Frost

#

You get a πŸͺ

young knoll
#

What about Antarctica

tender shard
lavish hemlock
wet breach
lavish hemlock
#

Mmm

young knoll
tender shard
#

arctic and antarctica are missing completely

lavish hemlock
#

You're the only one I remembered

wet breach
#

there was AlexThecoder and 7smile7

young knoll
#

Oh but they include New Zealand

#

Which doesn’t exist

lavish hemlock
tender shard
lavish hemlock
#

@brave sparrow You get a πŸͺ too

tender shard
#

rwanda has more servers than the rest of africa combined

young knoll
#

Did Alex and Alex ever fight to the death

tender shard
wet breach
young knoll
#

See, size doesn’t matter

tender shard
#

egypt too

#

but only 5 servers in whole egypt

hardy swan
#

that's a lot

tender shard
#

(5 who have bstats enabled)

young knoll
#

Believe it or not, not all of Africa is starving to death

wet breach
#

Well there was like a civil war in Egypt wasn't there?

#

they are probably too busy fixing everything

tender shard
#

I still remember when I was out drinking and my father called in the middle of the night and said "my friend gadaffi is dead 😦 "

#

but that was lybia not egypt

#

egypt was mubarak

young knoll
#

Rip gadaffi

tender shard
#

yeah he was so handsome

worldly ingot
young knoll
#

Pr it

worldly ingot
#

ca4431b - Removed New Zealand from map

hardy swan
young knoll
#

Probably because of the ice walls

wet breach
#

I recall watching a documentary in regards to some countries in Africa where most people actually don't own a computer and that most people who use a computer do so at a cafe where a computer is provided for public use, but not many of such are actually provided so it is quite common to share said computer with multiple people at a time.

tender shard
#

I sent some bstats screenshots

wet breach
#

because why not, nothing else going on πŸ˜›

tender shard
#

I noticed that there's 500 mc servers in africa, 450 of those are in rwuanda, and then like 3 in egypt etc lol

wet breach
#

I also wouldn't exactly say they live in poverty. It is easy to say someone lives in poverty if they don't have same access to stuff like someone in the US, however some people's way of life don't include needing that stuff to begin with.

young knoll
#

No

tender shard
#

you can only use textures that were signed by mojang

young knoll
#

You can’t add arbitrary capes server side

tender shard
#

unless you use client mods or unless mojang changes how vanilla client worls

wet breach
#

It is true that player skin changing isn't do able via the API, but not impossible to do server side just need to use NMS because you need to get at the GameProfile to change the player skin

#

also have to resend some packets as well in regards to other players so the effect happens for everyone and not just the one person XD

#

it verifies the signatures with Mojang API

tender shard
#

there's some websites that give you premade skins + valid signatures for it but that won't work for capes

worldly ingot
#

Yeah you can't change a player's skin or profile at all with the API

eternal night
#

😦

tender shard
#

well IRC NMS is not needed to change textures, only some reflection on GameProfile right?

#

wdym "still be allowed"?

#

You can't do that now

young knoll
#

Doubt it

wet breach
tender shard
#

well it's inside com.mojang.authlib

#

not net.minecraft.server

worldly ingot
#

Can't really add a cape to a player either as far as I'm aware. Nor should you because that's definitely a EULA violation

lavish hemlock
#

I wrote a capes mod once

wet breach
#

unless you are optifine πŸ™‚

young knoll
#

Don’t make me get the gif

worldly ingot
#

Optifine is... weird. It's in violation too lol

lavish hemlock
#

I've heard it's only a EULA violation if you are selling capes

worldly ingot
#

Optifine does sell 'em

young knoll
#

Which they do

tender shard
#

my former's employer's server was banned by mojang for a few months lol

worldly ingot
#

$5 or something

young knoll
#

10

lavish hemlock
#

Ye it's part of their donations

wet breach
#

Mojang knows they sell capes too πŸ™‚

young knoll
#

Who wants a cape anyway

#

Be like wynncraft and give me a fox tail

hexed hatch
#

Furry

lavish hemlock
#

damn that true

worldly ingot
#

That's hot

lavish hemlock
#

@hexed hatch Pardon?

tender shard
#

furry update when?

#

maybe in 1.69

lavish hemlock
#

Minecraft: Furry Edition

young knoll
#

I’m not the furry

#

That’s maow

wet breach
#

One day, we will get a Minecraft 2 version XD

lavish hemlock
#

βœ‹ Guilty as charged.

wet breach
#

and then all update mechanisms will break πŸ˜›

lavish hemlock
#

I mean it literally says "Your local furfag" in my bio so if there were any confusions I'd be confused.

tender shard
#

mojang is just afraid of big updates

hexed hatch
#

This is such a computer science major moment

wet breach
tender shard
#

the eula changed like 2 years ago

#

now it's even allowed to sell ingame currency

#

but it depends

young knoll
#

Capes are special

tender shard
#

e.g. on pvp servers it's not allowed to sell some kind of totally OP weapons

young knoll
#

Mojang wants them to stay special

wet breach
tender shard
#

but it's totally fine to sell currency on city build / economy servers

young knoll
#

Non competitive advantages

#

Essentially

hasty prawn
#

Afaik I thought they just didn't want you selling P2W items

tender shard
#

for months

hasty prawn
#

But cosmetics, like capes, are absolutely fine.

young knoll
#

Originally they didn’t want you selling anything non cosmetic

wet breach
young knoll
#

Cosmetics are fine

#

But capes are an exception

tender shard
#

as said even ingame currency is fine or other perks like getting faster horses, etc

wet breach
hasty prawn
wet breach
#

because Capes are special for Mojang

young knoll
#

You can force them

tender shard
young knoll
#

As for why you can’t remodel entities, idk, ask Mojang

hasty prawn
#

Considering Optifine, Lunar and BLC all sell capes as their main source of Income, I'm going to assume that Mojang doesn't care. KEKW

tender shard
#

and if you tell people to use hacked client XYZ or forge mod XYZ to connect, you'll lose 99% of players

young knoll
#

Well yeah

wet breach
hasty prawn
#

I guess they could, no idea. πŸ€·β€β™‚οΈ

wet breach
#

just because an EULA says you can't do something, doesn't mean you can't ask permission to do it anyways

#

if they say yes you can, you have been granted an exception πŸ™‚

hexed hatch
#

There really isn’t a reason for differences between Java and Bedrock resource packs. Eventually, I imagine they plan on making it so you can make entity models in Java and item models on Bedrock, but it isn’t a priority of theirs

hardy swan
#

doesn't mean you need to ask for permissions

#

it is not illegal

tender shard
#

I have to correct my statement, it was in 1.9 when they started blacklisting servers

wet breach
# hardy swan it is not illegal

if it is against their EULA it isn't illegal per-say but you are breaking the license agreement and thus subject to a lawsuit πŸ˜›

young knoll
#

And getting sniped

wet breach
#

you can't sell someones game assets and not expect a copyright or DMCA against you

young knoll
#

Bill gates will snipe you personally

hardy swan
#

but capes ain't game assets are they

#

optifine capes can only be seen by players who uses optifine etc.

young knoll
#

Can’t ya just like

#

Follow the Eula

tender shard
#

my cousin sold WOW accounts years ago, blizzard sued him but couldn't provide any proof for having any money losses so they lost

#

but he went to prison anyway for drugs lol

hardy swan
wet breach
#

people like Optifine would have something to worry about instead

#

but again Optifine has an exception. I know they do because Mojang almost bought them out πŸ™‚

#

but Optifine declined the offer

hardy swan
#

damn

tender shard
hardy swan
#

optifine to remain relevant

tender shard
#

but mojang doesn't even sell capes

#

so

#

what loss of income would they have?

young knoll
#

Optifine is losing relevancy

#

Which is good

tender shard
#

i like optifine

young knoll
#

Because it’s closed source

wet breach
#

I don't know how it applies elsewhere

tender shard
#

idk, I havent read it in a long time

wet breach
tender shard
wet breach
#

simply breaking the EULA is enough to be sued, you don't have to prove damages just have to prove they broke the EULA