#general

3141 messages ยท Page 24 of 4

gloomy sphinx
#

.kotlin

orchid pelican
cosmic raft
#

hahahaha

cosmic raft
#

first of all

orchid pelican
#

lol

cosmic raft
#

uppercase package names

orchid pelican
#

Ye i know

#

i had like v1 of the thing and that seperated it form the old one while i was working on it

#

never got around to changing it back

gloomy sphinx
#

make sure you have the entire plugin in one class

ancient bolt
#

the code I'm working on atm doesn't compile

orchid pelican
#

yes

ancient bolt
#

if that helps

#

mid thousand-ish line refactor ๐Ÿ˜ฆ

orchid pelican
#

thats a lot of purple

ancient bolt
#

uhhh

#

sure

orchid pelican
#

Anyways i added you

gloomy sphinx
#
    private static volatile ProcessManager singleton = null;
    
    public static ProcessManager getInstance() throws Exception {
        if (singleton == null) {
            synchronized (MyClass.class) {
                if (singleton == null) {
                    singleton = new ProcessManager();
                }
            }
        }
        return singleton;
    }
}```
wide hazel
#

y

cosmic raft
#

hooray double-checked locking

wide hazel
#

^

#

volatile
synchronized
if null

#

nice.

cosmic raft
#

it's intentional

ancient bolt
#

not using an intermediate local variable means it's not completely safe

cosmic raft
orchid pelican
#

scratches back of head and laughs

wide hazel
#

I know it's somewhat intentional, but just screams bad design

gloomy sphinx
#

catch(Throwable th) { logger.log("something went wrong"); }

ancient bolt
#

well the bad part of the design is the format of the code (should be inverted checks) and the lock on .class

#

shoudl be locked on a private static final Object lock = new Object();

#

that way someone else locking on MyClass.class doesn't fuck you over

#

@orchid pelican you can use maven properties to allow deploying to a server directory without modifying the pom

#

shouldn't be committing the .idea directory either

orchid pelican
#

ok ill look into that

#

ye i dont know how that got in there

#

ill remove eventualy lol

#

probs cause my git ignore is broken from a merge i think

ancient bolt
#

assign to a variable rather than calling the method twice

#

use more finals

orchid pelican
#

ok

ancient bolt
#

just in general

orchid pelican
#

finals get auto assighned if necessary by the compiler though

ancient bolt
#

wat

orchid pelican
#

read that somewhere

ancient bolt
#

oh I see a missing final ๐Ÿ˜ฎ

orchid pelican
#

you will see a lot of them

ancient bolt
#

no i mean in my code

orchid pelican
#

ah lol

#

so use more finals

ancient bolt
#

it's just good practice to not have your code be mutable when it doesn't need to be

orchid pelican
#

ye

ancient bolt
#

Also weird name for a class

gloomy sphinx
#

what was the class name

ancient bolt
#

you can literally see it in the url

#

Kash mentioned the package names already

orchid pelican
#

it just runs the buycraft force command

#

becuase it is like 10 minutes otherwise

ancient bolt
#

overall seems decent at first glance, the difference between "decent" and "great" takes time working with the code which I won't be doing, but I don't see huge glaring issues so I'd say you're fine

orchid pelican
#

so how yould you intitialize that repeating task?

#

in a static context?

ancient bolt
#

Also I only looked at it for like 5 minutes so /shrug

#

yeah that would be better as a static method, not really any point in creating a class for that

#

but in general it should be in a method with a name that makes it clear what it's doing

orchid pelican
#

ok will do

ancient bolt
#

that logic is essentially being hidden behind object istantiation

orchid pelican
#

ye that makes sens

#

no need to intialize a whole class for 1 repeating funtion

ancient bolt
orchid pelican
#

thats a gui

ancient bolt
#

Also I believe guava is available, so ImmutableList.of would be better than new ArrayList<String>(Arrays.asList()) unless you absolutely need mutability

orchid pelican
#

ye i think Collections has one as well

#

ok will chang ethat

ancient bolt
#

there is no built-in method for that in the JDK until java 11

#

or maybe they added that in 10

orchid pelican
#

ah

#

i already import guava

ancient bolt
#

the JDK only has Arrays.aslist, and singleton and empty list methods

orchid pelican
#

ye intelij warns and want to use singleton

ancient bolt
#

that would be better yeah

#

for a singleton list

orchid pelican
#

ye

#

my whole menu system needs a revamp

ancient bolt
#

code seems pretty inoffensive...could definitely do for a lot of cleanup and refactoring

#

but I don't see why you couldn't put it up under your portfolio

orchid pelican
#

This is like the only project i have done

#

but its basiclyt lots of medium one sinside

ancient bolt
#

OH GOD

orchid pelican
#

I havnt been doing Java for that long lol

orchid pelican
#

its a fix for entities getting ignited even after the event is cancled

ancient bolt
#

for reference to folks that can't see the code, he did a hadouken indent

gloomy sphinx
#

lol

orchid pelican
#

its not that bad lol

gloomy sphinx
#

how do you end up with that

ancient bolt
#

invert your conditionals, fail fast instead

#

to bring your code closer to the left margin

orchid pelican
#

fail faster?

#

ohhh

#

i see what you mean

ancient bolt
#

you wrap your whole method in if (e.getEntity() instanceof Player) {

orchid pelican
#

return if not

ancient bolt
#

instead you could just do if (!(e.getEntity() instanceof Player)) { and return

orchid pelican
#

isntead of nesting

#

ok ye haha

acoustic pilot
#

If you need more than 3 levels of indentation, you're screwed anyway, and should fix your program. -Linus Torvalds

ancient bolt
#

rinse and repeat

#

for all of your conditionals that apply

orchid pelican
#

ok

ancient bolt
#

some languages encourage higher nesting than C though lol

#

look at java where you can't just have functions at top level ๐Ÿ˜ฆ

acoustic pilot
#

Yeah, I mean take with a grain of salt, but general principle still applies, it shouldn't get too deep.

ancient bolt
#

definitely

orchid pelican
#

its only like 6 deep lol

gloomy sphinx
#

what about html

orchid pelican
#

^^^^

acoustic pilot
#

HTML/XML aren't programming languages.

ancient bolt
orchid pelican
#

wtf is that even doing

#

return object : BaseInspectionVisitor() {????

native thunder
#

Kotlin

orchid pelican
#

is that Kotlin

ancient bolt
#

creating an anonymous class of BaseInspectionVisitor as the super type

orchid pelican
#

leaves chat

gloomy sphinx
#

does that mean shell scripting is also not programming?

orchid pelican
#

kotlin is just annoying to read

ancient bolt
#

...okay

gloomy sphinx
#

are mobs entities?

orchid pelican
#

yes

cosmic raft
#

yes

ancient bolt
#

no

orchid pelican
#

maybe

cosmic raft
#

lemon

gloomy sphinx
#

is a firework a mob?

ancient bolt
#

yes

gloomy sphinx
#

ok good my plugin will be perfect

#

how many entities can be spawned on a server?

cosmic raft
#

at least 3

orchid pelican
#

as many until it crashes

acoustic pilot
#

over 9000

gloomy sphinx
#

hmm

ancient bolt
gloomy sphinx
#

how many entities until no more entities will spawn?

ancient bolt
#

more than 5

#

probably

gloomy sphinx
#

ok so mob farms each player can have more than 5

#

perfect

orchid pelican
#

Thanks for looking at it @ancient bolt

ancient bolt
#

np i needed the practice being nice

vestal jasper
#

I swear every time I update my server jar Citizens finds some mapping broken / changed

orchid pelican
#

what does MinecraftDev acutally do?

ancient bolt
fallen oracle
#

^

#

I use it

orchid pelican
#

wiat i didnt see the website at first

fallen oracle
#

I just wish there was one for PAPI expansions

ancient bolt
#

don't go to the features page

orchid pelican
#

why

#

oh

#

so like what does it doo lol

cosmic raft
#

things

ancient bolt
#

ยฏ_(ใƒ„)_/ยฏ

#

you don't really need it for bukkit

orchid pelican
#

more for forge?

austere ivy
#

Wanted to know your guys' opinion :)

cosmic raft
#

completely depends on where it is used

austere ivy
#

But which looks nicer in your opinion?

cosmic raft
#

completely depends on where it is used

austere ivy
#

With the white background, just like this.

ancient bolt
#

completely depends on where it is used

vestal jasper
#

completely depends on where it is used

fallen oracle
#

completely depends on where it is used

ancient bolt
#

fucking installing ms fonts from the AUR is way harder than it used to be

cosmic raft
#

how so?

ancient bolt
#

Unless I'm imagining things, you didn't used to have to copy the fonts from your windows install

#

the PKGBUILD would just download them for you

cosmic raft
#

you don't need to?

#

yay -S ttf-ms-win10

ancient bolt
#

read the pkgbuild

#

they had to change it

cosmic raft
#

huh

ancient bolt
#

my msgothic.ttc is failing the validity check or something...

acoustic pilot
#

yay copyright

cosmic raft
#

@ancient bolt got it?

ancient bolt
#

got what?

cosmic raft
#

msgothic working

ancient bolt
#

yeah i modified the PKGBUILD with the sha256sum output lol

cosmic raft
#

ah okay

ancient bolt
#

i guess my version of the font from my install didn't match theirs..

fallow widget
#

getServer().getWorlds().get(0) return null to me ? Why ? I use spigot-api

#

Helo please some PROJECT DEV

dark nimbus
#

its because the first element in the worlds list is null

golden gust
#

There should never be a null world in there?

fallow widget
#

Yes

#

Why null LOL

#

spigot work paper not work with the same code and same world name

golden gust
#

We'd need to see your code and plugin.yml

fallow widget
#
private World MAIN_WORLD = getServer().getWorld("world");
MAIN_WORLD.spawnParticle(....);
#

MAIN_WORLD == null on paper but not null in spigot

golden gust
#

That really doesn't give us any picture of what is going on

fallow widget
#

?

golden gust
#

We don't even know where that field is initialized, if that's in the main class, the worlds aren't even loaded up at the point that your main class is constructed

fallow widget
#

Oh It on my mainclass

#

why not but spigot is work ?

golden gust
#

I have no idea how that would work in spigot

#

The worlds are not loaded at the point that your server is started up

fallow widget
#

lol

golden gust
#

If you /reloaded, that would work, as the worlds are going to be there then

fallow widget
#

Ok I will initialize a world in onEnable method

#

Thanks

#

Now it's work

#

Should I use paper-api instead of spigot-api ?

limber knotBOT
#

yes

fallow widget
#

Why should I do?

stiff yarrow
fallow widget
#

What features that paper have more thant spigot ? (Sorry for my bad English)

acoustic pilot
limber knotBOT
unreal quarry
ancient bolt
#

Wish someone would do that for mcdev ๐Ÿ˜ฆ

fallow widget
#

Thank you very much

native thunder
#

Mcdev is one of those things I always reccomend to people but when I try to explain the features I get stumped

#

But it has a bunch of little things that are nice

stuck oyster
unreal quarry
#

i dont use mcdev because i thought it was just a gui for starting a new plugin project

#

is there more to it? ๐Ÿ˜ฎ

olive garden
#

Is that the IntelliJ plugin?

#

I don't use it because it complains when I use Maven placeholders in the plugin.yml

unreal quarry
native thunder
#

It's more useful on the forge side since bukkit dev is more straight forward

#

But it has inspections for stuff

olive garden
#

to be honest, can't I just disable that specific inspection for all future projects? I'm sure I can

native thunder
#

Yes

ancient bolt
#

@unreal quarry it does

#

a lot

#

not very useful for bukkit though

#

I feel like I've told you this before lol

void void
#

i've used mcdev mainly for dealing with mixins

ancient bolt
void void
#

it helps a lot with them

marsh walrus
#

@void void stalker...

void void
#

hey deamon nice pr @ runelite

#

dang

#

well i happen to play osrs too ;)

ancient bolt
#

finally got it building again

#

damn

median thistle
ancient bolt
#

lots of bugs...but I can get to those later

heady spear
spice frigate
#

Oof

worn ember
#

just gotta fix some styling

limber knotBOT
#

using papers api?

heady spear
#

it sents a text message to him, then he personally sends them the file via messenger

#

it's really quite efficient

worn ember
#

yeah it uses the paper API Mini ๐Ÿ˜ƒ

#

@heady spear nah that was the last version ๐Ÿ˜‰

heady spear
#

oh, sorry then ๐Ÿ˜ฆ

worn ember
#

stay up to date m8

heady spear
#
 // Force WorldEdit to load
        try {
            System.out.println("[P2] Force loading WorldEdit");
            if (!manager.isPluginEnabled("WorldEdit")) {
                manager.enablePlugin(WorldEditPlugin.getPlugin(WorldEditPlugin.class));
            }
            System.out.println("[P2] Testing platform capabilities");
            WorldEdit.getInstance().getPlatformManager().queryCapability(Capability.GAME_HOOKS);
        } catch (final Throwable throwable) {
            throw new IllegalStateException(
                "Failed to force load WorldEdit. Road schematics will fail to generate",
                throwable);
        }

this snippet has caused a lot of problems, I want to frame it and put it on my wall

#

it's been called retarded by multiple people, and it has ruined many a plugin

#

I really quite like it

worn ember
#

Lmao

#

"Cant load? Well load anyway."

heady spear
#

It's broken and uncessary in worldedit dev builds, but it shall never be forgotten

worldly condor
#

gradle or maven ?

native thunder
#

That's absolutely retarded and I lvoe it

spice frigate
#

That's awesome

slim nymph
#

@heady spear why are you printing force loading when its already loaded. that log line should be in the if

#

but P2 should use loadafter: WorldEdit and itll already be handled

pulsar wigeon
#

it's because WE didn't load at startup, only postworld

slim nymph
#

ah

pulsar wigeon
#

tho tbf i'm not sure why they need WE to be enabled

#

oh right

#

bukkit impl adapter

#

yea they do worldgen stuff so they need to load schematics at startup

#

but worldedit wasn't enabling til postworld

worn ember
#

@void void lol i already kinda have such a project set up :p

#

now i'm just moving the downloader to a stand alone for the heck of it

#

its quite a pain

#

especially hooking into the server process and such

limber knotBOT
#

help

void void
void void
dapper nacelle
#
    private final List<String> completions = new ArrayList<>();

    /**
     * @param value The string that it is trying to complete.
     * @param arguments String values which it will try to complete auto the value with
     */

    private void setCompletions(String value, String... arguments) {
        completions.clear();
        completions.addAll(Arrays.asList(arguments));
        if (!value.equals("")) {
            for (String arg : arguments) {
                for (int i = 0; i < value.length(); i++) {
                    if (value.length() <= arg.length()) {
                        if (arg.charAt(i) != value.charAt(i)) {
                            completions.remove(arg);
                        }
                    } else {
                        completions.remove(arg);
                    }
                }
            }
        }
    }
#

I wish paper's tab completer would understand this much when using the ```java
@Override
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {

worn ember
#

You could use ACF ๐Ÿ˜‰

dapper nacelle
#

what's that

#

@worn ember

slim nymph
#

_> how are you unaware of ACF lol,

#
worn ember
#

lmao

slim nymph
#

we only talk about it in here everytime someone brings up other command systems

worn ember
slim nymph
#

but i think bukkit already does the filtering for completion startsWith args

#

use the Paper Icon I guess?

dapper nacelle
#

is that a paper only thing?

slim nymph
#

no dylan

dapper nacelle
#

ACF

#

oh nice

slim nymph
#

bukkit/spigot/sponge/bungee/JDA (Discord)

#

works for ANYTHING

worn ember
#

i can make my own, i'm just curious if you think it looks good

wide chasm
#

Well, for bukkit, spigot, sponge, bungee and JDA ๐Ÿ˜ƒ

slim nymph
#

acf can be tied into any platform that takes commands

#

JLine for example

#

one day could provide a simple jline binding

pulsar wigeon
#

acf can do everything except switches :P

slim nymph
#

SOON

pulsar wigeon
#

lol

slim nymph
#

one person PR'd an attempt but wasnt really happy with it

pulsar wigeon
#

i heard

slim nymph
#

I gotta move context resolution to store in the current operation context so we can avoid ever reparsing contexts for multiple times

#

first pass resolve all switches, then resolve in input order

#

can do switches/issuerOnly mixed

#

ideally, parse switches, if a switch requests an issuer only context (one context can access another parameters value), go ahead and pre compute that one too, then go resolve any remaining issuer only contexts, then resolve input based

#

another longer term goal is parsers to give better control over 1 context consuming multiple args

#

command frameworks is some damn complex shit ._.

#

this is why I don't label ACF 1.0 yet, we may end up needing major rearchtecture changes to solve goals to get this perfect for 1.0

pulsar wigeon
#

i believe in you

#

you can do it!

slim nymph
#

Iknow i can ,just competes for time with paper and my server ๐Ÿ˜›

pulsar wigeon
#

:P

slim nymph
#

I just have to give slices here and there to each project

#

but least each project still all has value to my server ๐Ÿ˜›

dapper nacelle
#

ACF must use some nifty reflections to get this to work

vapid grail
stiff yarrow
#

@slim nymph that's a very cool project

wraith oracle
#

@dapper nacelle yeah, but it is properly done so there's nothing to worry about

dapper nacelle
#

hi snow

#

I'm almost finished with the tab completer

wraith oracle
#

I've even considered moving Skript's command system to ACF myself

#

I told you to share the design before going to the implementation lol

dapper nacelle
#

yeah...

#
    private Iterable<String> getScripts() {
        File file = new File("plugins/Skript/scripts/");
        File[] files = file.listFiles();
        List<String> names = new ArrayList<>();
        if (files != null) {
            for (File f : files) {
                names.add(f.getName());
            }
        }
        return names;
    }
#

I was making a small helper for this

#

I was about to convert it to streams

wraith oracle
#

> Using File in 2019

dapper nacelle
#

ยฏ_(ใƒ„)_/ยฏ

#

this is what google told me

wide hazel
#

File works

#

It's not deprecated

wraith oracle
#

Doesn't mean you should use it over the new system

#

I guess it's fine in this case, anyways

wide chasm
#

Does stuff actually get deprecated in Java? I feel like they just add new stuff and leave all the old stuff in.

dapper nacelle
#
private Iterable<String> getScripts() {
    return Files.walk(Paths.get("plugins/Skript/scripts"))
        .map(path -> path.getFileName().toString());
}
wide hazel
#

It's not any slower or worse than Path, really

dapper nacelle
#

@wraith oracle

olive garden
#

Calendar isn't deprecated either

wide hazel
#

It's fairly slow, however

#

Use what you like

#

Profile

#

See what happens

dapper nacelle
#

what I sent doesn't work...

wraith oracle
#

I believe Skript saves loaded scripts somewhere

#

just use that

dapper nacelle
#
    private List<String> getScripts() throws IOException {
        return Files.walk(Paths.get("plugins/Skript/scripts"), 1)
                .filter(Files::isRegularFile)
                .filter(Files::isReadable)
                .map(path -> path.getFileName().toString())
                .collect(Collectors.toList());
    }
#

@wraith oracle wait it does...

#

I'll leave the mapping up to you then...

#

I'm finished

wraith oracle
#

lol

finite wave
#

Not really

#

Simple reflections

slim nymph
#

ACF just uses simple Method lookup and invoke, which the JVM will auto optimize for you. But regardless, doesn't matter as commands are not ran hot enough to ever worry about the cost of reflection

#

nearly all annotation lookup and processing is done at registration and computes results so very little is done other than method.invoke(scope, params); at execution

#

i make a big push for annotation configuration to be determined at registration time and not runtime execution

dapper nacelle
#

If most of it is handled at registration time than I have not really any reason not to use it

slim nymph
#

there has been no performance issues with it and its years old ๐Ÿ˜›

#

it was built internally for my server, then extracted out

#

same thing for TaskChain and IDB lol

dapper nacelle
#

I have to say that this is a lot easier

slim nymph
#

i cant open hastebin links

dapper nacelle
#

๐Ÿ˜œ

#

huh...

#

lol

#

pastebin?

#

fuck

#

pastebin uses hastebin

#
public final class ConstructTabCompleter implements TabCompleter {

    @Override
    public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] args) {
        Completions comp = new Completions();
        if (args.length == 1) {
            comp.addCompletions(args[0], "reload", "enable", "disable", "update", "help");
        }
        if (args.length == 2) {
            if (args[0].equalsIgnoreCase("reload")) {
                comp.addCompletions(args[1], "all", "config", "aliases", "scripts");
//                this.addCompletions(args[1], insert scripts mapped to string);
            } else if (args[0].equalsIgnoreCase("enable") || args[0].equalsIgnoreCase("disable")) {
                comp.addCompletions(args[1], "all");
            } else if (args[0].equalsIgnoreCase("update")) {
                comp.addCompletions(args[1], "check", "changes", "download");
            }
        }
        return comp.completions;
    }

    private static class Completions {
        private final List<String> completions = new LinkedList<>();

        /**
         * @param value     The string that it is trying to complete.
         * @param arguments String values which it will try to complete auto the value with
         */

        private void addCompletions(String value, String... arguments) {
            if (!value.equals("")) {
                for (String arg : arguments) {
                    if (arg.startsWith(value)) {
                        completions.add(arg);
                    }
                }
            } else this.completions.addAll(Arrays.asList(arguments));
        }
    }
}
#

@slim nymph there we go

slim nymph
#

yuck

#

i feel like bukkit does that filtering already though

#

i cant find it in ACF lol

#

but yes you really should use ACF ๐Ÿ˜›

#
@Subcommand("reload|r")
public void onReloadDefault() { onReloadAll(); }
@Subcommand("reload|r all")
public void onReloadAll() { 
  onReloadConfig(); 
  onReloadAliases();
  onReloadSripts(); 
}
@Subcommand("reload|r config|c")
public void onReloadConfig() {}
@Subcommand("reload|r aliases|a")
public void onReloadAliases() {}
@Subcommand("reload|r scripts|s")
public void onReloadScripts() {}
#

then reload, r, r all, r c, reload s, r scripts, all them work

dapper nacelle
#

It looked scary tbh

slim nymph
#

there is a learning curve, but once you get the hang of it, your commands get cleaned up so much

#

and power is unleashed with so little effort

#

code reuse across the board

dapper nacelle
#

dayum

#

boi

#

do I need to register the stuff

slim nymph
#

that above syntax is all core stuff

#

you register custom behaviors

#

like how to provide your own custom completion values (subcommands are auto handled)

#

dont gotta handle completion for subcommands

#

command replacements is basically variables in strings

#

lets you do configurable annotation values

#

ie if you wanted to let the end user control WHAT command your command is registered as

#

doesnt have to be static

#

they can make your command /tacos

dapper nacelle
#

commandManager = new PaperCommandManager(this);

#

paper only? Akair: no

slim nymph
#

@CommandAlias("%command.name")

commandManager.getCommandReplacements().addReplacement("command.name", config.getString("command-name"));

#

nope, see all supported platforms ๐Ÿ˜›

#

but use paper manager itll still work on spigot/bukkit

heady spear
#

I personally think commands are silly, and have instead opted to listen for specific block placement sequences

slim nymph
#

just enables a MAJOR perk of ACF/Paper - Async Completions

heady spear
#

dirt-grass-dirt open the help menu

slim nymph
#

you can provide command completions async with paper and acf

#

ie doing database queries

heady spear
#

You can do database queries synchronously as well ๐Ÿ˜›

slim nymph
#

yeah with a nice tps hit

heady spear
#

I try to make my TPS produce a sine curve

slim nymph
#

but for example I have a command that lets me complete offline players who's played in last X Days

dapper nacelle
#

I'll watch a youtube tutorial

slim nymph
#

i never understood youtube and coding

#

how is a video of someone typing easier than looking at code examples

#

maybe i do need to break the example file into different sections, separate simple/basic stuff out from optional more advanced stuff

#

say SomeObject is some basic object that is special to your system

#

if a command wants to obtain a SomeObject, it can just put it in the method parameters

#

the .getContextResolver() defines HOW to obtain it

heady spear
#

some people just learn better from hearing someone explain it, as opposed to just reading it

slim nymph
#

so if you pass /command 1, it provides you a copy of Test1(), 2 => Test2(), anything else gives you TestOther()

#

and if you pass /command foo, itll say must be a number

heady spear
#

ACF is pretty neat. I'll try to use it the next time I do something Minecraft related :p

slim nymph
#

i cant ever fathom doing commands the old fashioned way anymore

#

i did for my dupe testing plugin and it was painful

#

i could of setup ACF faster...

#

the only time i think youll save time over setting up ACF is if you have a SINGLE simple Command with no special input processing

#

once you go into more than 1 command, or validations, completions, etc, acf saves you time

heady spear
#

When did you start working on it? I wish we would have used something like that in PlotSquared

#

because our command system is hell to work with

slim nymph
#

It sarted way back in like 2013-2014, but i didnt get it ready for open source use until 2 years or so ago

#

Add CHANGELOG, update readme for 0.5.0 release

@slim nymph
aikar committed on Jun 17, 2017

#

lol

#

we've been on 0.5.0 since jun17th

#

april 2017, so 2 years yeah

heady spear
#

Makes sense then :p then I have an excuse

slim nymph
#

I guess i should clarify, I redeploy over same version

#

only intend to bump versions on API breaks

#

well, API breaks that are likely to impact people

#

if something got 'accidently' leaked to public but noone really should of been touching it, i might change that

#

i try to keep visibility of methods restricted that i dont want public API

fallen oracle
#

I love ACF

heady spear
#

that's fair

fallen oracle
#

I think I have 58 commands in my plugin now.

slim nymph
#

we know how resistant people can be to updating shit, so im really trying to avoid changing version until I have A LOT of breaking changes to go out at once

fallen oracle
#

It has made making them very easy.

heady spear
#

we have 70 commands, not using ACF :p

fallen oracle
#

I used to have 1 command per class

heady spear
#

that doesn't include subcommands etc :p

fallen oracle
#

I split it among 7 classes

#

Each class has it's base sub command and it includes its sub sub comma nd

#

So for example I implemented a feature called codes. I have /guild code list, create, info, delete, redeem

#

All of the /guild code commands are in it's own class

#

It took me about 3 weeks to move all my commands over, it really is a life saver.

heady spear
#

I'm not gonna bother migrating :p not planning on adding more commands, and people would get upset if I were to break the API again

fallen oracle
#

Ahh I constantly add new commands so that's why

heady spear
#

It would be nice though

fallen oracle
#

I have a plan I am going to implement soon which till take it up to about 63 commands

#

The biggest thing I have to weait on is a friend finishing a mirgration data service. Since I constantly change the json data to add in new stuff ,it needs to support bringing in old data and moving it to the new one

heady spear
#

it must be fun having a new project to work on :p I've gotten tired of this after 5 years

fallen oracle
#

I mean I've had mine for about 2 years now I think

slim nymph
#

shutdown FAWE, contribute improvements to WE

#

do it for the good of the community!

heady spear
#

I've tried to encourage people to target WE for some shit. If I was in charge I'd keep FAWE as close to WE as possible ๐Ÿ˜›

#

it's no fun working with

slim nymph
#

i thought you was the lead of IS

heady spear
#

doesn't mean I control everything we do ๐Ÿ˜›

fallen oracle
#

gson automatically will add in new keys to existing data if you have it in the object, right?

slim nymph
#

enact dictator mode

heady spear
#

I scream at people from time to time, but Iron is in charge of most things fawe

#

I should, shouldn't I?

slim nymph
#

where is WE7 FAWE

heady spear
#

It's bascially done, it has been for a while

#

there are some issues with chunk corruption that need to be sorted out ๐Ÿ˜›

slim nymph
#

but yes FAWE really should of kept close to WE, this whole 'now a total fork' that uses WE6 as a basis for 1.13.2 scares me

#

.........

#

you know, ive always feared FAWE would corrupt my world, you arent helping

heady spear
#

The WE7 API is almost entirely merged now and it's compatible with plugins using the WE7 API

#

that's why we're not even publishing dev builds atm lol

grand pewter
#

yeah i dont know that many plugins that are targetting fawe instead of we though

slim nymph
#

so the published version uses WE7 api?

grand pewter
#

any plugins im touching certainly not

#

at least

slim nymph
#

well thats where i got bit, i targetted WE API, I dont reference FAWE jar, so i when i bumped ref to WE7 API, i started updating my code

heady spear
#

they shouldn't either ๐Ÿคท

slim nymph
#

only to find out FAWE is still on WE6 API

grand pewter
#

yeah bad idea lol

slim nymph
#

so im stuck waiting for FAWE To finish

heady spear
#

but yeah, it's not that far away, I guess we didn't want to release broken code this time around

grand pewter
#

if they both use different APIs thats basically forcing people to choose one or the other

heady spear
#

if you try to paste containers over other containers the chunk just dies, which is sad

slim nymph
#

but with the whole data conversion issue im still busy ._.

grand pewter
#

but there are people who will adamantly use one or the other for speed or security

heady spear
#

also, it doesn't know what circles are anymore

#

apparently everything is a square, I think that's my influence :))

slim nymph
#

did FAWE change to a custom schematic format or is it still on MCEdit

#

i thought i saw something about that

#

i gotta figure out my schematics too

heady spear
#

it's compatible with whatever WE uses ๐Ÿ˜›

grand pewter
#

WE uses Sponge format for 1.13

slim nymph
#

we mainly gotta make sure DataVersion is included in things

heady spear
slim nymph
#

I might need to generate awastelands in 1.13.2 then let mc update world them save it with 1.13.2

#

what is that 'some imgur link'

#

how does imgur links get used

heady spear
#

It uses links for the height maps

#

imgur links specifically, for some reason ๐Ÿ˜›

slim nymph
#

i dont understand

grand pewter
#

ok so they are trying to make it compatible with WE7?

#

because they also did new vector

vestal jasper
#

"This is the working branch for WE7"

#

I'd say that's the case yes

heady spear
limber knotBOT
#

(DiscordBot) FAWE CFI testing a 1000 radius brush and //undo (15,625 chunks modified each use) - length 48s - 10 likes, 0 dislikes (100.0%) - 4,273 views - Jesse Boyd on 2017.12.26

heady spear
#

dunno if there are better videos ๐Ÿ˜›

slim nymph
#
  • imports can break a build
heady spear
#

I blame my intellij settings ๐Ÿ’”
I'll do better

#

it does that by default tbf

slim nymph
#

just add like 5 0's to the minimum imports config value in IDEA

grand pewter
#

i just set my import requirement in intellij to like 99

slim nymph
#

but yeah it seems like a good idea, but adding a new file to a package shouldnt contain the risk of breaking a build, which can happen with * imports sadly lol

#

if you use same name as in another package thats both been * imported

grand pewter
#

why would that happen though btw i forget

heady spear
#

My professor got mad when I didn't do that for swing imports

slim nymph
#

make a.b.c.Foo; a.b.d.Foo;

heady spear
#

apparently I was stupid for not using '*' :<

grand pewter
#

oh right gotcha

slim nymph
#

import a.b.c.Foo; import a.b.d.*;

grand pewter
#

๐Ÿ˜ฆ

slim nymph
#

if the d.Foo didnt exists before, all was fine

#

soon as you add d.Foo; that file breaks

grand pewter
#

hey city, fortunately they can't mark you down for it since it's correct still ๐Ÿ˜‰

#

unless they're dumb or it was in the directions

heady spear
#

My professor marks people down for using javadoc

#

you have to use their arbitrary comment style

grand pewter
#

ok so they're just dumb

heady spear
#
// pre: true
// post: not null
// gets username

etc

wide chasm
#

The more time I spend on these guilds, the more I'm doubting to actually do computer science in uni next year.

native thunder
#

lmfao

#

Oh so city's the guy I need to yell at for FAWE to happen

#

ok

heady spear
#

no

#

if you yell at me I have to yell at ironapollo

grand pewter
#

no im pretty sure he was just trashing on it

native thunder
#

I saw ya'll talking about using a patch system similar to spigot or paper

heady spear
#

and I like him, so I'd rather not

native thunder
#

Seems like a bunch of work

heady spear
#

yes, I don't want that

native thunder
#

For like 0 benefit

heady spear
#

indeed

#

it would only set us back further

native thunder
#

Like spigot uses git diffs because of their legal grey area right?

#

I'm excited that there' more people contributing now

#

I'd pitch in but I'm knee deep in my own tech debt lol

scenic falcon
heady spear
#

I wish I could spend more time working on it, but I really don't have enough time to dedicate to it :<

#

so I just tell everyone else what to do

vestal jasper
#

You spend more time abusing me than you do contributing to projects

heady spear
#

I love you too bro โค

pulsar wigeon
#

is jesse retired

heady spear
#

Retired? Uhm. Gone? Yes.

vestal jasper
#

Jesse is Mia

austere ivy
#

If I put my onCommand in my main class and setExecutor to this, will I have to label check?

heady spear
#

no

#

well

#

uh

#

yes?

#

maybe

#

why

#

don't

wide chasm
#

You don't have to set the executor to the main class

austere ivy
#

This:

vestal jasper
#

He vanished without a word and randomly logs on without saying anything

austere ivy
#

getCommand("reloadnbe").setExecutor(new ReloadCommand(this));

pulsar wigeon
#

who best understands the FAWE internals now then

vestal jasper
#

Iron

pulsar wigeon
#

jw

wide chasm
#

Also, don't label check.

austere ivy
#

If I set it to setExecutor(this) would it catch all commands?

heady spear
#

IronApollo, 100%.

austere ivy
#

I wouldn't think so.

pulsar wigeon
#

k

austere ivy
#

so can I just slap:

#
@Override
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        if (main.getConfig().get("reload_msg") == null) {
            return true;
        } else {
            sender.sendMessage(ChatColor.translateAlternateColorCodes('&', main.getConfig().getString("reload_msg")));
            return true;
        }
    }
#

in my main class?

wide chasm
#

The main class catches all commands by default.

austere ivy
#

grrr.

heady spear
#

just create a separate class? :p

austere ivy
#

but it's

#

bigger

#

trying to make a one class plugin haha.

heady spear
#

...

fallen oracle
#

What happened ACF?

austere ivy
#

fine >:(

wide chasm
#

Why would you specifically want a one class plugin?

heady spear
#

stop doing stupid shit

scenic falcon
#

Can somebody help i'm getting this error Unable to access jarfile /custom.jar

austere ivy
#

Because then I don't have to dependency inject for one command.

heady spear
#

...

austere ivy
#

:(

heady spear
#

stop. doing. stupid. shit.

wide chasm
#

You could treat your main class as a singleton if you wanted.

fallen oracle
#

Imagine plot squared being in a single class

heady spear
#

You can always access the plugin main class using those ugly getters ๐Ÿ˜›

#

Imagine PlotSquared being discontinued ๐Ÿ˜

fallen oracle
#

Lets discontinue our projects together

#

๐Ÿ˜ป

heady spear
#

I spend far too much time just managing the projects

#

it's not even worth it lmao

fallen oracle
#

Actually I kinda got to release this update then I can have the option to be done

pulsar wigeon
#

imagine minecraft being discontinued

#

microsoft just announced no more java minecraft, everyone has to use bedrock

fallen oracle
#

Yeah I've put in more time and not enough profit

slim nymph
#

hello hytale

heady spear
#

Actually, yes. Please? No more updates = no more stupid breakage.

fallen oracle
#

I used to do it for fun but now I realize time is money

wide chasm
#

"has to use bedrock" - the community will fix that

slim nymph
#

honestly, i kinda do wish theyd stop

heady spear
#

Yeah, if I were to work instead I could probably pay rent lol

slim nymph
#

updates are doing me more harm than good

grand pewter
#

we have at least 1.14 through 1.16 to go

austere ivy
#

noooooooo

slim nymph
#

the next major version update is about to release before im anywhere near finishing 1.13.2

austere ivy
#

as a vanilla player, I like the updates.

#

YOU KNOW WHAT THEY NEED

heady spear
#

lol I just wanted to get PlotSquared for 1.13 pushed before 1.14 was released

austere ivy
#

In player selectors, let us USE RELATIVE COORDINATES.

heady spear
#

at least we managed to get that done

austere ivy
#

Like in a commandblock:

heady spear
#

selector already have relative coordinates?

#

are you drunk?

native thunder
#

Ya. Our server was kind of concerned they were gonna release 1.14 before we even updated lmfao

slim nymph
#

hes always drunk

austere ivy
#

execute as @p[x=~,y=~1,z=~,distance=0..0.5] at @s run tp @s ~1 ~ ~

native thunder
#

But it looks like they pushed back 1.14?

austere ivy
#

rather than

#

execute as @p[x=513,y=52,z=5532,distance=0..0.5] at @s run tp @s ~1 ~ ~

#

It's infuriating for me as a map maker to have to do the coordinates each time.

heady spear
#

~ is already a thing? o.o

native thunder
#

Didn't they add that in 1.13?

slim nymph
#

i hate the new 1.13 distance selector

grand pewter
#

imho they need to start pushing updates every few months instead of every few years

austere ivy
#

That is not a new thing City.

grand pewter
#

and more incremental as well

austere ivy
#

er, it's not a thing

heady spear
#

no, it's been a thing for ages

austere ivy
#

,_,

grand pewter
#

not huge breaking updates

wide chasm
#

Just put an armorstand on the place you want and execute as that armorstand.

austere ivy
#

it's not

#

Let me just copy and paste the commandblock.

native thunder
#

They pulled on more devs so maybe updates will come faster

austere ivy
#

It's useful for seamless teleporting.

native thunder
#

But it looks like they're just getting larger

heady spear
#

seamless teleportation isn't a thing

limber knotBOT
#

(DiscordBot) Did I hear someone say seamless teleportation!? Here's something I've... : Minecraft - 139 comments, 3,986 points - TehBrian, 4mo ago

austere ivy
#

I made that.

heady spear
#

teleportation always looks like shit :<

austere ivy
#

Do you know how infuriating it was to have to put in the coordinates for every commandblock?

#

Really infuriating.

#

Also that's pretty seamless to me :D

native thunder
#

They're seamless in singleplayer

austere ivy
#

^

native thunder
#

1.8 feature iirc?

austere ivy
#

Yeah, then it broke again in 1.9

wide chasm
#

Could've just used structure blocks and replaced parts of the environment

austere ivy
#

So then it was broken for a while till new snapshots.

grand pewter
#

people use commandblocks?

#

on servers?

native thunder
#

Maps

austere ivy
#

clap clap yes

grand pewter
#

what for

austere ivy
#

map servrers.

#

map servers.

grand pewter
#

what is a map server

austere ivy
#

unfortunately there are some people who use functions (basically commandblocks) as plugins on their server.

#

bad bad bad idea.

heady spear
#

command blocks have been boring as hell for years now

native thunder
#

I mean, that's what Hypixel started out as ya?

heady spear
#

they made them too overpowered

wide chasm
#

Functions > command blocks though

austere ivy
#

What?

#

Do you like challenges?

grand pewter
#

@wide chasm agreed XD

heady spear
#

It used to be fun. Now it just... not? lol

austere ivy
#

Stef, functions are commandblocks.

wide chasm
#

Functions are command blocks, without the hassle of command blocks.

austere ivy
#

Functions are just long lists of commandblock commands.

grand pewter
#

im almost entirely certain that plugins can do absolutely anything a command block can do, but better

austere ivy
#

In fact it's more infuriating.

heady spear
#

If I wanted to do something complex using command blocks I'd just make a plugin instead

austere ivy
#

Because you don't get chain commandblocks.

#

City commandblocks are the same as always, they run commands.

heady spear
#

Before they used to be interesting, and people would do interesting shit.

austere ivy
#

only big thing that has changed was the /execute command.

heady spear
#

No, the commands are too overpowered now.

austere ivy
#

are you complaining that something got

#

gasp

#

good at doing stuff??

heady spear
#

.... it's not even good. It's just not interesting anymore lol

austere ivy
#

would you prefer that they were hard to use commands?

heady spear
#

observer blocks ruined redstone as well

austere ivy
#

and infuriating to make stuff with?

native thunder
#

All your emoting is triggering me lol

heady spear
#

they should never have been added.

grand pewter
#

making command block commands confuses me way way more than writing a plugin

austere ivy
#

We made observers ayway.

#

anyway*

#

Two pistons.

#

That's all it takes to make an observer.

#

It's just slightly larger.

heady spear
#

buds have been a thing for ages lol

austere ivy
#

Actually one piston and a redstone torch and you can have buds.

#

They have, they just made them smaller which makes them more useful.

heady spear
#

you can make block update detectors using a single piston

austere ivy
#

So you're saying you don't like things when there's no challenge?

heady spear
#

Well, they sort of ruined redstone altogether.

austere ivy
#

Are you even a programmer?

wide chasm
#

Have you seen esolangs?

native thunder
#

lmao

austere ivy
#

I write functions to make my functions because I think that's the essence of programming xD

heady spear
#

I was really into redstone in 2014

austere ivy
#

Yeah I mean esolangs are cool.

heady spear
#

now it's just... too easy ๐Ÿคท

native thunder
#

So city's a M

austere ivy
#

..

#

_>

native thunder
#

But I understand where you're coming from. Limitations breed creativity

austere ivy
#

That's super silly, kind of understandable logic lol.

heady spear
#

Well, they removed the entire challenge by adding observer blocks.

austere ivy
#

I mean people challenge themselves to make songs using only G R O S S B E A T

heady spear
#

People were upset when they added redstone blocks as well

austere ivy
#

I think challenges are fun for people.

heady spear
#

which I 100% understand.

#

redstone doors were all the rage, now they're not challenging at all

#

anyone can make a fucking 4x4 by slapping some observer blocks together

#

make them tiny as well

#

the only reason I got into creative mode was because of redstone doors lol, that's also how I discovered how much I disliked PlotMe

austere ivy
#

City, here's a challenge then. Make a complex plugin that each command is written out on a sign, then processed, then that sign is replaced with the output. Then, do something with every single event handler in Bukkit/Paper. Something cool with it.

#

There's your challenge.

heady spear
#

and then I created PlotSquared for this stupid server, that later on ended up banning me for showing them PlotMe bugs

austere ivy
#

And you have to do that all without any if else statements. Only if.

heady spear
#

and then I said "fuck it" and released it to the world ๐Ÿ˜„

#

why the fuck would I do that?

austere ivy
#

Because it's a challenge

heady spear
#

Why am I even talking to you

austere ivy
#

and you said you like those

wide chasm
#

Why the if/else limitation? Just use else and then put an if in there.

austere ivy
#

not sure

heady spear
#

why haven't I blocked you yet

#

vic say something stupid

#

I need to forget about Brian, so it'd be neat to rage at you instead

native thunder
#

lmao

#

wHEn Is fAwE 1.13 ComIng OUT

wide chasm
#

@austere ivy About your post you made with seamless teleporting, wouldn't it be easier to use an armorstand, teleport that to the right position and then execute your stuff from the armorstand?

austere ivy
#

Absolutely not, when you're working with like 15 different teleportation spots it would be easiest to place a commandblock, then in it set where to tp you, for example ~ ~ ~15 would send you 15 blocks in the z direction.

#

Unfortunately it's a tad bit harder since we don't have relative player selectors, which means you have to get the coordinates and enter them individually for each command block.

#

So instead of this:

wide hazel
#

@heady spear I still love you, does that count?

austere ivy
#

execute as @p[x=~,y=~1,z=~,distance=0..0.5] at @s run tp @s ~ ~ ~13

heady spear
#

yes ๐Ÿ˜

austere ivy
#

You have to do this, for each command block:

wide hazel
#

Yay :D

austere ivy
#

execute as @p[x=149,y=193,z=544,distance=0..0.5] at @s run tp @s ~1 ~ ~

#

Which is super annoying to do.

wide chasm
#

That's why I suggested the armor stands, since then you use the armorstand as your position and you don't have to specify the exact position in there.

austere ivy
#

Even harder, you would have to individually specify and name each armorstand.

#

Like so:

#

I suppose you could select each armorstand within a 2 block radius, but that has a lot of overlap.

wide chasm
#

Depends, you could just target the one armorstand in range, assuming there are no other ones in range.

#

Yes.

austere ivy
#

Yeah, lots of overlap.

#

So you could potentially do..

wide chasm
#

How many armorstands are you gonna place in the same area?

worldly condor
#

hello

austere ivy
#

Well you were suggesting one for each teleport.

#

So around 15, just for that one gif.

#

execute as @e[type=armorstand,distance=0..2] at @s run tp @p[distance=0..0.5] ~1 ~ ~

wide chasm
#

Depends on how you need to teleport; if the relative distance to the new spot is the same, you could just move the armorstand along with the player.

austere ivy
#

I suppose that could potentially work, but then you have to go through the hassle of individually making each armorstand invisible and in the correct spot.

#

It's not.

#

I could send you the world if you would like to see!

wide chasm
#

Well, the advantage of the armorstands would be that once you have set it up, you only have to change the teleportation spots by teleporting the armorstands instead of changing the commands.

austere ivy
#

I suppose, but again it comes with it's own individual hassles.

#

It would just be 100% easier if we could just execute as @p[x=~,y=~1,z=~,distance=0..0.5] at @s run tp @s ~ ~ ~13

#

And plus it would allow other cool things.

worldly condor
#

gradle or maven

austere ivy
#

Like having origin points for dx, dy, and dz, other than just the spot the command block is in.

#

Maven.

wide chasm
#

@austere ivy Does /execute positioned not allow for relative coordinates either?

austere ivy
#

Hmm, I'll take a look into that, perhaps we could..

#

Nope.

#

We still need to select the player.

wide hazel
#

@worldly condor small project, maven. Large project or complex task, gradle

austere ivy
#

That's the player selectors.

#

Positioned just changes the "at"

#

Ooh, does it change the execute beforehand?

#

execute positioned ~ ~1 ~ as @p[distance=0..0.5] at @s run tp @s ~ ~ ~13

#

That's interesting I need to look into that.

worldly condor
#

@wide hazel if i do spigot and bungeecord in one jar? what do you suggest

austere ivy
#

I need to go do some chores I'll be back!

wide hazel
#

Maven is fine

#

Use multi-project setups

worldly condor
#

wdym ?

#

by Use multi-project setups

wide hazel
#

See above

opal plank
#

Moment, are plugin developers interested in commands. Can't believe it, and all arguments (position, entity, rotation) can be usd trough function calls

wide hazel
#

Also called multi-module projects

#

One plugin, multiple modules

worldly condor
#

how do i create one ?

wide hazel
#

Parent ties submodules together

#

In IDEA, right-click the project menu and create a module

worldly condor
#

why you pushed the .iml files ...

#

when they clone it they will get errors ...

wide hazel
#

Kash hates that, too

#

It's hilarious

heady spear
#

Please don't push IDE specific files

#

or I'll come slap you with a porkchop

worldly condor
#

^

wide hazel
#

Lol

wide chasm
#

@austere ivy I think it does what you want. I entered the following:

execute positioned ~ ~1 ~ as @p[distance=0..5] at @s run say Hi```
while standing directly next to the command block and it executed for me.
Then I did:

execute positioned ~ ~10 ~ as @p[distance=0..5] at @s run say Hi```
(Moving it up to 10 relative) and it didn't execute for me, still standing next to the command block.
And moving up by ~6 blocks (and shooting the wooden button on the command block with an arrow) it does run again.

wide hazel
#

I forgot to gitignore them, then got lazy

#

One day

worldly condor
#

aand with that multi module shit, how do i get one jar ?

wide hazel
#

You don't, really

worldly condor
#

but i want one for example

#

as of how bungeecord works

wide hazel
#

If you want one universal jar for Bukkit and Bungee you can use bungee.yml

heady spear
#

since when does bungeecord work?

wide hazel
#

You'll have to include both

#

And be careful of including the wrong ChatColor

worldly condor
wide hazel
#

Just upload teo jars

#

You'll thank yourself later

worldly condor
#

why ?

heady spear
#

who is Teo and why are we uploading his jars?

#

Do you want a combined jar for Bukkit and Bungee versions of a plugin, or what?

#

If so, don't want that. Want something else instead

wide hazel
#

^

#

It's hard to maintain

#

Mostly

#

It's also bad practice

worldly condor
#

Why it's bad practise ?

wide hazel
#

And only works by breaking good practices

worldly condor
#

Why it's bad practise ?

wide hazel
#

Because it's more difficult to maintain, mostly

#

There's some black magic fuckery on the back end to make it work

#

But generally if it's hard to maintain it's likely not following good coding standards

worldly condor
#

bugfree

#

dont wanna advertise myself

#

** THIS IS NOT AN AD **

heady spear
#

No one said it's impossible

#

It's just impossibly stupid

worldly condor
#

why ?

worn ember
worldly condor
#

wtf ?

#

WTF

#

@worn ember it worked

worn ember
#

Well yeah, thats the idea xD

worldly condor
#

you C# dev

#

?

worn ember
#

mhm

worldly condor
void void
#

whats wtf in it?

worldly condor
#

how do i download this

void void
#

first time seeing C#?

worldly condor
#

no

worn ember
#

no need to spam it tho

#

.>

vestal jasper
#

Github has a handy download zip button

worldly condor
#

i mean

#

a runnable

worn ember
void void
#

@wide hazel what's bad practise? putting both bungee and bukkit plugin code into single jar?

#

O_o

worldly condor
vestal jasper
#

They already answered that question twice

worn ember
#

dafuq

void void
#

just compile it smh

vestal jasper
void void
#

lol what

worn ember
#

why isn't it showing my release xD

vestal jasper
#

Smh my head

worn ember
worldly condor
#

no no, thats your server launcher

#

not the paper download

worn ember
#

oh

#

that one doesnt have an executable

#

:p

#

i kinda ditched the program before i finished it

void void
#

having both bukkit and bungee code in a same jar is not a bad practise wtf, you can separate your project into submodules and merge compiled output back together

wide hazel
#

@void void yes, making one uber-jar for Bukkit and Bungee is generally not good or fun

void void
#

most of the people probably can't do it and end up doing weird shit which is inconvenient to use

worn ember
#

more like unneeded filesize

slim nymph
#

file size doesnt mean anything

void void
#

^

worn ember
#

you dont mean anything

void void
#

stop spreading fud

worldly condor
#

@slim nymph are you sure about that? hmm

#

lets see

slim nymph
#

about what

worldly condor
#

i have a plugin of 20 kb for example

void void
#

hey mc server is already uhh

worldly condor
#

and i wanna do a database management

void void
#

~40mb-ish

slim nymph
#

20kb says nothing

worldly condor
#

for example

wide hazel
#

29mb with fastutil shaded in

#

Lol

worldly condor
#

you know, mongo java driver for example, is 1 MB+, and i compile it

#

thats 1000% increase of the size of the plugin

wide chasm
#

So?

slim nymph
#

and it doent matter

golden gust
#

Wait, size matters?

worldly condor
#

you still think that size doesnt matter ?

wide hazel
#

Jar-relocator is nice

slim nymph
#

file size means nothing

golden gust
#

brb, going to shade in fast-util

slim nymph
#

yes i do

#

weve spent more time talking about this than it takes to download 1mb

wide chasm
#

The only time file size matters is when your jar is 4+ MB and can't upload it to Spigot, cause then you have to trim it down

void void
#

spigot won't take +4mb? :D

slim nymph
#

then you just zip it stef ๐Ÿ˜›

wide hazel
#

It can matter, in certain circumstances. Spigot file upload limits suck

void void
#

nice

#

i'n glad that i use external link then

#

i'm*

#

github releases woo

golden gust
#

I mean, there is always github releases

wide hazel
#

File size mostly doesn't matter though

wide chasm
#

You can zip it, but if it's still over 4 MB you gotta shrink it down somehow, or provide an alternative host.

slim nymph
#

jar format doesnt compress well on a global scheme, you can save a lot more re-zipping a jar

worldly condor
#

@wide hazel if they don't limit it spigot now won't have any memory and they stop all new plugin posts and shit

slim nymph
#

because the zip file format compresses per class file

wide hazel
#

Huh

#

?

worldly condor
#

no no no no not memory * fuck me

wide hazel
#

Storage space?

worldly condor
#

yes

#

thats what i meant

slim nymph
#

spigot can afford the FS space, space is cheap

wide hazel
#

Fuck Apple's marketing campaign on memory

golden gust
#

if the 4mb file limit was the only reason they have space left on the disks, we're doomed

slim nymph
#

spigot can buy 10TB of storage easily with how much he makes

wide hazel
#

^

#

CF's free tier has a 100mb limit

#

So it's not that either

slim nymph
#

plus he keeps all old revisions, he could mandate policiy only last X revisions

worldly condor
#

they have large amount of forums, which also need some space in there, put in the mess some wiki, put 65k resources and then you have about 2-3 tb

wide hazel
#

Business class is $20/mo and that bumps the limit to a gig or something

golden gust
#

2-3tb is nothing

wide hazel
#

^

slim nymph
#

ivan you realize i've been in the web industry for 16 years right

worldly condor
#

WTF DUDE

#

OMG

void void
#

??? :D

wide hazel
#

Only 16? :P

#

I kid I kid

wide chasm
#

I've been doing this life thing for 18 years, 16 years is nothing /s

slim nymph
#

Im a late bloomer for programming, I only started at 16-17~ lol

wide hazel
#

Longer than me

worldly condor
#

i've been doing this life thing for 13 years

void void
#

WTF

#

OMG

slim nymph
#

that explains so much

wide chasm
#

lol

void void
#

WTF DUDE WHY SO YOUNG

worldly condor
#

ยฏ_(ใƒ„)_/ยฏ

#

kbye

slim nymph
#

I'm 33 ๐Ÿ˜›

wide hazel
#

I've been doing web/server stuff for 13-ish years and security for about 7 or 8