#dev-general

1 messages ยท Page 441 of 1

oblique heath
#

well right but i think yugi meant you'd have 2 proxies in series

quiet depot
#

originally the data is being transferred from client -> bungee1 -> server

old wyvern
#

How would the bungee instance act as a proxy while restarting

oblique heath
#

isnt the whole idea that this stays around 247

quiet depot
#

during restart though, client -> bungee1 -> bungee2 -> server

#

then after restart

#

client -> bungee1 -> server

oblique heath
#

is bungee1 a real bungee

quiet depot
#

bungee1 gives up it's bungeecord responsibilities and acts as only a doorway to the other bungee during restart

oblique heath
#

i see

#

okay

quiet depot
#

it has to give up its bungeecord responsibilities because it's restarting

oblique heath
#

wait

old wyvern
#

How would you retain bungee1 during its restart

quiet depot
#

you don't actually close the app, you merely disable the bungee parts in code, then start them again

#

essentially each bungeecord instance would consist of two main programs

#

bungeecord, and the doorway

oblique heath
#

piggy i originally thought you were talking about a proxy which controlled 2 bungees

#

and that transfered the player to the second bungee when the first restarted

#

and vice versa

quiet depot
#

I mean sure that works too

old wyvern
#

Can a bungee instance be connected to another bungee instance like connecting to a server

oblique heath
#

not afaik

quiet depot
#

except then the parent instance can never be restarted ivan

#

with my setup any instance can be restarted while retaining player connections

oblique heath
#

well your setup also has a very weird concept

quiet depot
#

and if you did it right the transfer would be seamless

oblique heath
#

of not completely restarting

#

isn't that bit that doesnt restart the same as the proxy in my example

old wyvern
#

Ivan I think he means like the connection wouldnt be through a bungee instance

#

You would have a separate proxying application

quiet depot
#

well the main problem with mine is that the main benefit of restarting is to clear memory leaks

oblique heath
#

thats what i thought too yugi

quiet depot
#

but my "restart" wouldn't fix those

old wyvern
#

I mean even this way, you always have 2 proxies inbetween

oblique heath
#

now just to clarify why i figured i'd want something like this in the first place

#

is not just for memory leaks because tbh i think bungee is pretty good about those

#

but being able to push rolling updates

#

i don't see how piggy's solution would let me update the proxy

quiet depot
#

mine would only work with updates if you went the osgi route I think

old wyvern
#

osgi is probably a good choice to switch stuff up at runtime

#

Even without a restart

oblique heath
#

what is osgi

quiet depot
#

a way to modularise core components of your application

oblique heath
#

hmm

old wyvern
oblique heath
#

so i'd essentially break my proxy apart into chunks

#

and only restart the ones that need to be restarted in order to be updated

old wyvern
#

The parts youd want to change

#

Those would be osgi modules

#

They can be installed and uninstalled safely at any point

oblique heath
#

are there any benefits to using osgi versus something like a standalone proxy that switches the player between two bungee instances

quiet depot
#

yes

#

you can't restart the parent proxy with your setup

old wyvern
#

No downtime at all

#

You wont need a fallback proxy

oblique heath
#

well in theory the parent proxy would == the parts of your osgi app that never restart

#

right?

quiet depot
#

yes

#

true

oblique heath
#

you said earlier that minecraft doesn't have a packet that makes the player reconnect

quiet depot
#

yes

oblique heath
#

would it be that difficult to change the packets to such a degree that the client wouldn't know they were being transferred, without using any proxy besides the two bungees

#

like imagine this

#

your original bungee sends player a packet where it gives a fake return address

#

where that address points to the second bungee

#

player sends return packet to second bungee

#

second bungee forwards it to first bungee for as long as first bungee is up

#

once second bungee goes down first bungee takes over with sending packets to player

#

i actually have no clue if there's some low level fact about network protocols that would make this not viable

quiet depot
#

you're basically saying what I said before, but with more implementation detail

oblique heath
#

from what i understood about what you said earlier

#

you could never have the original bungee fully restart

#

but i think this way the original bungee could go down completely with no issues

quiet depot
#

if the original bungee goes down the second bungee would have to maintain the connection to the client

oblique heath
#

yes

quiet depot
#

and I don't think you can magically transfer the connection from bungee 1 to bungee 2

oblique heath
#

well yeah that's the weird bit that i'm wondering about

#

actually hmm

#

you know what, i see the flaw with this

#

you're right i can't transfer the connection, the player only knows of one return address and it'll have to be up 24/7

#

drat

#

i was thinking you could change the return address of the packet to make it so you could change the proxy mid connection

#

but it almost definitely doesn't work like that

#

i guess the lesson to be learned here is just to make as little reasons as possible for yourself to restart bungee

quiet depot
#

you're investing in the wrong technology

#

work on extending hotswapping

oblique heath
#

what's that

#

like in the context of this

quiet depot
#

updating the program while it's running, without any state change

oblique heath
#

oo

#

and this is without osgi right

quiet depot
distant sun
#

return (min.x <= x && x <= max.x) && (min.y <= y && y <= max.y) && (min.z <= z && z <= max.z)
x y z are the coords of a point and min & mix are the corners of a box, shouldn't this work for checking if the point is inside the box?

quiet depot
#

click on that gif btw

#

wouldn't recommend watching in discord

oblique heath
#

yeah it's acting funky

#

wow

#

how does that work?

quiet depot
#

uses the instrumentation api

#

and a modification to the jvm

#

default java has support for basic hotswapping

#

it's extremely limiting

#

you can only hotswap method bodies

#

and even then, not everything will work

oblique heath
#

yeah i just saw

these tools do not modify application state or behavior.
in the javadocs

#

xd

quiet depot
#

however

#

a popular jvm modification called dcevm extends the abilities a bit

#

allows you to redefine the actual class structure

#

adding new methods, like in that gif

#

but it's still not sufficient for a full update

#

so you'd have to do even more work on it

oblique heath
#

huh

lunar cypress
#

Imagine not using a language that was made for this out of the box (Clojure) ๐Ÿ˜Œ

prisma wave
#

Imagine

oblique heath
#

If you're using Eclipse or NetBeans, then I simply recommend switching to IntelliJ.

#

i like it

quiet depot
#

I was really hesitant about putting that in there as I don't really like disqualifying people like that

oblique heath
#

hopefully people find it funny rather than a legitimate qualm

quiet depot
#

it's not meant to be funny

#

seriously

#

if you don't use intellij

#

just switch

oblique heath
#

xd

#

so in that link, as far as I see it only talks about hot swapping within the IDE

#

how does that carry over to a jar

quiet depot
#

well it doesn't

#

it's merely a demonstration

#

you have to develop the technology that allows it to be used for a full update

oblique heath
#

ah that's what you meant

quiet depot
#

or you can buy it for like $1000 from jrebel

oblique heath
#

$1000 for a full implementation?

quiet depot
#

I don't know if it's merely jep 159 or a full hotswap implementation

oblique heath
#

i can't tell if that's really expensive or really cheap

#

because this seems pretty powerful

quiet depot
#

jrebel are greedy assholes

#

or whatever company it is that develops jrebel

#

greedy

#

but I believe it's production safe

#

unlike dcevm which is literally a prototype for an old, disgarded jep

oblique heath
#

;o

#

well i don't think i have the brainpower or dedication to actually implement this

#

but it is extremely interesting

quiet depot
#

the original maintainer used dcevm as his phd thesis

oblique heath
#

oh my

distant sun
#

question, for a 3d cube, do I have to manually check which corner is min and which is max?

oblique heath
#

it might be easier to just write a language in java that supports hotswapping tbh

#

B)

quiet depot
#

well johnny said that's what clojure is

oblique heath
#

๐Ÿ˜ฎ

quiet depot
#

gaby

#

this is dev general

distant sun
#

blah blah blah

oblique heath
#

well as long as i'm talking about random thoughts i've had over the past few months

#

is there any 'best' way to save a world while it's running

prisma wave
#

/save-all

quiet depot
#

save as in backup?

oblique heath
#

as in copy the world file

quiet depot
#

rsync perhaps

lunar cypress
#

Unfortunately

oblique heath
#

and that's fine to do with the server itself running?

#

in that case i think what i'm doing is close enough

quiet depot
#

considering rsync can copy my linux system while it's running, I imagine it can do a minecraft world

oblique heath
#

wait does rsync do something special that other copy methods can't?

#

right now i'm just using tar

quiet depot
#

I'm not gonna pretend like I know the semantics of rsync over other copying tools

onyx loom
#

space in between and #bot-commands ๐Ÿ™‚

quiet depot
#

oh

#

tar should work too

oblique heath
#

alright in that case i'm safe

quiet depot
#

I just know that tools like tar & rsync can do things like copy shit while it's running

#

idk how it works

onyx loom
#

shouldve listened

oblique heath
#

interesting

quiet depot
#

just what I've read

oblique heath
#

i'll see if i can find anything else out about that

#

wait piggy are you sure you're not thinking about how rsync only copies files that have been updated

quiet depot
#

oh that could be it

#

idk

oblique heath
#

ah ๐Ÿ˜ข

quiet depot
#

I don't really understand how these tools work, I've just heard that they're good for this sorta thing

oblique heath
#

from what I know they just let you copy files without moving the entire file over

#

plus they can zip it while it's being moved

#

but in any case i haven't seen any actual issues with tar yet, so hopefully it's good enough

#

oh and something else

#

if I wanted to run a server from any of several machines

quiet depot
#

I had to use tar yesterday when I was copying my root to a temporary root in an effort to unmount the main root to transfer it to lvm

oblique heath
#

what would the best way to get the world file to each of those

quiet depot
#

couldn't figure it out for the life of me

oblique heath
#

o.o

quiet depot
#

definitely the most difficult process I've encountered on linux so far

#

transferring to lvm is no simple task

oblique heath
#

what's lvm

#

i think i've heard the word but i have no idea what it is

quiet depot
#

software partition thingo

#

logical volume manager

#

it allows you to manage partitions at runtime without a reboot

#

my main use for it was combining two drives

oblique heath
#

aah

quiet depot
#

I can't figure it out though, I'm gonna try mergefs next

oblique heath
#

why not use raid 0 ๐Ÿ˜‰

quiet depot
#

is that easy to do on a remote server

oblique heath
#

you can set up a software raid pretty easily

quiet depot
#

is performance bad?

#

nvme disks btw

oblique heath
#

if it's nvme you should be fine

#

raid 0 actually increases the performance of disks, at least the hardware kind

quiet depot
#

yeah hardware isn't an option

#

this is a remote server

oblique heath
#

not sure about the software kind but the logic should still be the same

#

you're writing to two drives at once so i'd think it would still be better

quiet depot
#

ig i'll try raid 0 then

oblique heath
#

i'm actually using mdadm for a raid 1 array right now

#

and it's given me no issues so far, though i don't exactly put it through a lot

#

i think your biggest concern as far as performance is actually your CPU rather than your drives

quiet depot
#

i7 6700k

#

this is for gaby's survival server

oblique heath
#

that should be plenty, it's nice and semi modern

#

what are you using the extended drives for anyways

#

is the world that big o.O

quiet depot
#

two reasons

#

survival worlds get very big

#

mind you not 256+gb yet but definitely has the potential

#

and also pterodactyl doesn't support multiple drives so merging them is my only option

oblique heath
#

ah

#

wait so pterodactyl runs all of it's servers on a single drive?

quiet depot
#

yes

#

pterodactyl can't take advantage of multiple drives

oblique heath
#

that seems kinda weird

quiet depot
#

I was thinking I could just run two nodes but nope

#

not possible as far as I can tell

oblique heath
#

you just gotta take things into your own hands and make your own orchestrator ๐Ÿ˜Ž

quiet depot
#

no

old wyvern
quiet depot
#

I'm not sure how to answer that question with that terminology

#

my knowledge of this stuff is too weak

jovial warren
#

you can't combine MBR and GPT afaik

quiet depot
#

but you can 100% combine different drives with lvm

jovial warren
#

since they are completely different partition tables

#

you can convert from MBR to GPT really easily though

oblique heath
#

mbr is what windows uses right?

jovial warren
#

no

#

MBR is Master Boot Record

#

the old BIOS partition table

oblique heath
#

oo

quiet depot
#

is dos a partition table?

jovial warren
#

no

#

not afaik

#

GPT is the new GUID partition table, used by the much newer and much more superior UEFI

#

finally done refactoring Krypton lol

oblique heath
#

that was fast

jovial warren
#

rule #1 when refactoring: don't ever let IntelliJ reformat all your files

jovial warren
oblique heath
jovial warren
#

how was that fast?

oblique heath
#

well it's a huge project

#

i think 2 days to refactor everything is fast

quiet depot
#

how many lines

jovial warren
#

well, I moved quite a few things around

#

gimme a min

quiet depot
#

the real question is

#

does it have more than papi 3

jovial warren
#

293 files changed, 1592 insertions(+), 1708 deletions(-)

#

most of those are just small things though, like removing an author tag or adding a new line to the end of a file

quiet depot
#

how manylines in kyrpton?

jovial warren
#

how do I count that up?

quiet depot
#

statistic plugin intellij

jovial warren
#

which one? the one with 1.1M downloads?

quiet depot
#

ye

jovial warren
#

there probably isn't that many tbh

#

it's gonna count src/main/resources as well isn't it

#

right, kt files: 17732 lines

#

apparently 11823 lines of code

quiet depot
#

when a server impl has less lines than a plugin that replaces text

jovial warren
#

it's really not as large as you'd think

jovial warren
quiet depot
#

most of papis lines come from the material enums I think

jovial warren
#

my largest file is either Material.kt or SoundType.kt lol

#

as I said though, Krypton isn't as large as you'd think

quiet depot
#

papi gets 8839 lines from material enums

old wyvern
#

The difference is also the language

jovial warren
#

also, consider that a lot of the line cuts come from extension functions and single-line ifs lol

#

and a few other things

old wyvern
#

Kotlin vs Java

jovial warren
#

yeah that's what I said

#

Java is just more verbose and you end up writing much more code

#

that's not even an opinion either

onyx loom
#

woah lets not be controversial now ๐ŸŒš

jovial warren
#

what

#

I didn't say Java being more verbose was bad, I just said it's more verbose

#

here it goes

#

292 changed files ๐Ÿฅฒ

#

might install detekt tbh, looks very nice

#

and it seems to do a very good job for Kotlin

jovial warren
#

right, now I think it may be test time

#

this is where pitest comes in handy

old wyvern
#

USB 3.0s slot has no difference right?

oblique heath
#

for what

#

a live usb?

old wyvern
#

For a usb port

jovial warren
#

but it's not the same thing

old wyvern
#

Weird

jovial warren
#

USB 3 adds some extra pins

oblique heath
#

yeah pretty much all modern usb A devices are backwards compatible with each other's slots

#

all the way to like 1.1

old wyvern
#

I looked up the port symbol from my laptop, everything says its usb 3.0 so but im unable to plug usbs in

oblique heath
#

like, you can't physically fit the usb?

old wyvern
#

Yes

oblique heath
#

are you sure you're looking at a usb slot

old wyvern
#

Pretty sure

oblique heath
#

and not an hdmi or other video output slot

old wyvern
#

The 4th port from the left

oblique heath
#

that looks like usb to be

#

me*

old wyvern
#

Yup but a usb wont fit in it

hot hull
#

bruh the amount of dust

oblique heath
#

maybe it's clogged up

jovial warren
old wyvern
#

The non 3.0 ports on the other side work fine

eternal compass
#

Compressed air?

#

It could just be dust

oblique heath
#

maybe you broke something within the port at some point without realizing it

old wyvern
#

How would it not go in coz of dust?

eternal compass
#

Idk, it was a guess

old wyvern
#

The udb didnt go in even at the time of buying afaik

#

Like 2-3 days after I bought the laptop

oblique heath
#

well if it's not physically fitting inside the port then something is wrong with the port

old wyvern
#

I just assumed it was something different

oblique heath
#

do you have a different usb cable or something you can try putting in that port

old wyvern
#

That symbol is usb 3.0 right?

eternal compass
#

Is the USB cable ok?

old wyvern
#

Yes

jovial warren
oblique heath
#

the red color for that inner tab also suggests it's 3.0

#

usually it's blue but some crazies throw red or other bright colors in

old wyvern
#

Its theme is just red everywhere

oblique heath
#

well yeah but look at the 2.0 ports

old wyvern
#

xD

oblique heath
#

i bet they're not red inside

old wyvern
#

Same

oblique heath
#

really?

old wyvern
#

They are red as well

oblique heath
#

i stand corrected then

old wyvern
oblique heath
#

well either way you still have 3 usb ports left if that one is broken / unusable

#

so don't stress about it too much

jovial warren
#

anyone got any recommendations on which things I should cover btw?

oblique heath
#

for krypton?

jovial warren
#

yeah

oblique heath
#

lemme think

jovial warren
#

like what should I write tests for?

oblique heath
#

well what have you implemented so far

oblique heath
jovial warren
#

because ofc, writing a test to ensure that the main function calls KryptonCLI().main is gonna be useful

eternal compass
old wyvern
#

Thats for a ext gpu right?

#

The symbol

oblique heath
#

it can be but it's also a regular usb c port

#

it's just usb but in a different form factor

eternal compass
#

Is it c or thunderbolt?

old wyvern
#

Are there even usbs with a type c port?

oblique heath
#

not flash drives no

old wyvern
oblique heath
#

but you can get an adapter

old wyvern
#

The icon is a thunderbolt

oblique heath
#

yeah it's a thunderbolt

eternal compass
#

Ok, then yes GPUs work with it

oblique heath
#

you can get a usbc -> usba adapter and then use flash drives with that port

#

and since it's thunderbolt 3 it'll actually be quite a bit better than that usb 3.0 port even

eternal compass
#

If you use a thunderbolt splitter ^^

#

Else its just gonna be usb c speeds

old wyvern
#

Ah

oblique heath
#

eh even usb 3.1 or 3.2 will be a step up

eternal compass
#

True

old wyvern
#

Oh wait

#

Success

#

Plugged it in

#

It was just needed a bit more force than the other side

#

Lmao

oblique heath
#

ah there ya go

old wyvern
#

Ive literally not used this port for over a year coz I thought it was for something different

#

๐Ÿ˜‚

old wyvern
#

If someone has a few minutes, can you please join this game for a second? Just need to check what I receive on some other player joining

oblique heath
#

sure

#

where abouts

old wyvern
#

One sec

oblique heath
#

don't mind the name lol

old wyvern
#

Can you leave and rejoin

oblique heath
#

there ya go

old wyvern
#

Cursed

oblique heath
#

xd

old wyvern
#

Not receiving anything

oblique heath
#

weird

old wyvern
#

I guess Ill just have it check every 10 seconds for games

oblique heath
#

ew

old wyvern
#

btw hasklash is fully working now

oblique heath
#

oooh

#

do you have that fancy menu working for choosing modes

old wyvern
#

Yes

oblique heath
#

aay

#

very cool

old wyvern
#

It also has a commandline option if you want to start things quick

#

Might also add a shuffle mode

oblique heath
#

say imagine how cool it would be if you could tie in with Barry's xp system

old wyvern
#
=clash --quick -m fastest -l java

for a java only fastest mode game

oblique heath
#

playing coc games would earn xp

old wyvern
#

Oh yea I forgot, I need to work on the scoring system as well

#

I guess it hasnt finished yet then

oblique heath
#

a hero's work is never done

quiet depot
#

=clash

oblique heath
#

=smash

quiet depot
#

yugi link coc bot pls

#

source

old wyvern
#

Sure one sec

quiet depot
#

is it stable

old wyvern
#

Havent pushed final version

quiet depot
#

wtf lol haskell

old wyvern
#

yup

#

xD

#

100% haskell

#

hence the na,e

quiet depot
#

why

oblique heath
#

p u r e

old wyvern
#

Was just trying to build something in haskell

#

Also this means it can almost never break

quiet depot
#

wat

old wyvern
#

Haskell is like rust

quiet depot
#

how does language have anything todo with it

old wyvern
#

if it compiles

#

it will not have any bugs

#

Or mostly atleast

#

logical bugs may exist

old wyvern
oblique heath
#

immutable objects, immutable objects everywhere

old wyvern
#

btw Ivan mutation is possible in haskell

#

IORefs

#

Without being impure

#

It uses IO actions

oblique heath
#

immutable objects, immutable objects almost everywhere

#

Refs meaning like references?

#

like pointers o.o

old wyvern
#

Yes somewhat

oblique heath
#

interesting

old wyvern
#

It provides access to a mutable context that can modify via an io action

#
a :: IORef Text

modifyIORef a (\x -> x ++ "Test")
#
value <- readIORef a ```
oblique heath
#

huh

oblique heath
#

does it actually mutate behind the scenes

#

or does it only pretend to

old wyvern
#

Yes

#

it does

#

Thats the only way to store stuff with discord-haskell package apparently

oblique heath
#

huh

jovial warren
#

hey would anyone here know why syncing my build could just cause it to cancel for literally no reason?

old wyvern
#

altho the other library provides a way with a state monad afaik

old wyvern
jovial warren
#

trying to work with buildSrc and it just seems to get to buildSrc:build and that's it

old wyvern
#

which is why its a IO action

oblique heath
#

yeah that makes sense

#

so i guess you can really do whatever you want inside an io action huh

#

therefore

old wyvern
#

The state isnt actually inside haskell

oblique heath
#

make a haskell wrapper for spigot

old wyvern
#

You only provide functions that define how the value outside the env changes

oblique heath
#

that puts it into an io action

#

by definition the result is gonna be pure, right?

#

PURE SPIGOT

old wyvern
#

Yes

#

lmao

oblique heath
#

well it's 9 am

#

time for sleep

sweet cipher
#

9am at night?

oblique heath
#

...

#

sure... yeah...

jovial warren
#

also, Gradle buildSrc OP

prisma wave
#

Not so "purely functional programming" now huh!!

forest pecan
#

@obtuse gale

hot hull
#

If I'm just checking if an entry exists in a db what should I use?

quiet depot
#

what happens if it exists?

hot hull
#

nothing, just need a boolean whether it exists or not

tough matrix
#

yo anyone able to help me setup litebans website

#

getting errors

#

and dunno how to fix any of them and i cant get support from the author :/

prisma wave
#

why can't you get support from the author

tough matrix
#

no discord or any place to get it

#

looked literally everywhere i could so if there is its difficult to find. also been at this for days if not weeks and fed up lol

#

asked so many places offered to pay but still no luck

hot hull
#

Ruan is an idot so kek

quiet depot
old wyvern
#

๐Ÿฅฒ

prisma wave
#

๐Ÿ™„ ๐Ÿ™„ They'll let anything be an IO action these days

distant sun
#

@hot hull ResultSet#next ?

hot hull
#

Yea already had that, meant moreso of what I should select within the statement itself

atomic swan
#

hello

#

how to turn off the lava spill?

hot hull
#

:what:

atomic swan
#

I want to prevent lava from spreading

quiet depot
#

I feel like that can be done via a gamerule

prisma wave
quiet depot
#

bm pls

#

i'm really not a fan of the troll

hot hull
#

Would be dope if it were haskell but it was elixir so sadge

quiet depot
#

like it's fine if you do it on someone you know won't care

#

but when someone is legitimately asking for help

#

not cool

onyx loom
#

๐Ÿฅฒ

#

ik worldguard can prevent lava spread too, but pig might be right with that, or maybe a spigot/paper setting or smth

quiet depot
#

yeah

#

could be a setting

#

or instead of disabling spread

hot hull
#

disgusting

quiet depot
#

frosty what's the latest thing u've done for gian

hot hull
#

You complicated so much shit when it could've been done so simply

#

Emotes Piggy

#

It's disgusting, but still

sweet cipher
#

Tell them you love them

quiet depot
half harness
quiet depot
#

anyway frosty

#

my configs

#

can't beat 'em

#

they're the best in the business

#

so much configuration potential

hot hull
#

Ah yes because why wouldn't you use guice, with all the yikes stuff

#

That is hideous Piggy

quiet depot
#

honestly don't see anything wrong

hot hull
#

Meant the config

forest pecan
#

its cause of the two args per line

#

lol

hot hull
#

Also, ever heard of just null checking?

  item_flags: ~
#

Makes the config so much cleaner

quiet depot
#

iirc it works fine without them

#

those ~ were there to show the potential

hot hull
#

hideous

quiet depot
#

says the one that uses json syntax in yaml

#

AND ISN'T EVEN CONSISTENT

hot hull
#

shutup

forest pecan
#

lol

quiet depot
#

u dare criticize me boi

forest pecan
#

ban!

quiet depot
#

fix ur own code kid

hot hull
#

you do realize the difference between those?

forest pecan
#

Piggy ban!

quiet depot
#

they're both lists are they not?

hot hull
#

Not semantics difference

forest pecan
#

Ban!

quiet depot
#

well then no

#

I don't realise the difference

hot hull
#

4head

quiet depot
#

criticizes my code but uses my design patterns :>

forest pecan
#

simp

#

and also

#

piggy do you not like static blocks

hot hull
#

because it's nice

quiet depot
#

I use them when necessary

#

I don't dislike them

forest pecan
#

cause im the guy who does this

#
private static final Set<Registerable> REGISTERABLES;

static {
  REGISTERABLES = new HashSet<>(Arrays.asList(...));
}
#

lmao

hot hull
#

ew

quiet depot
#

I only use static blocks when the variable can't be initialized at it's declaration

#

e.g. reflective objects

hot hull
#

Also Set.of but that's compiled for java 8 so ew

static zealot
#

yo @pale shell what was the plugin you used for "Fake players"

#

?

pale shell
#

?

forest pecan
quiet depot
#

frosty

forest pecan
#

and also

#

ImmutableSet.of

#

is so much better

quiet depot
#

d;guava sets#newhashset(...)

ruby craterBOT
#
public static <E> HashSet<E> newHashSet(E...ย elements)```
Description:

Creates a mutable HashSet instance initially containing the given elements.

Note: if elements are non-null and won't be added or removed after this point, use ImmutableSet.of() or ImmutableSet.copyOf(Object[]) instead. If E is an Enum type, use EnumSet.of(Enum, Enum[]) instead. Otherwise, strongly consider using a LinkedHashSet instead, at the cost of increased memory footprint, to get deterministic iteration behavior.

This method is just a small convenience, either for newHashSet([asList](https://docs.oracle.com/javase/9/docs/api/java/util/Arrays.html?is-external=true#asList(T...) "class or interface in...

This description has been shortened as it was too long.

static zealot
# pale shell ?

U sent a plugin here once that allowed you to create NPCs that were considered players

#

or something like that

hot hull
#

meh effort, not changing anything in that plugin anymore

quiet depot
#

yeah just for future reference

pale shell
#

I thought you were calling me out for a sec, lol. brb i'll get it fingerguns

static zealot
#

xD

forest pecan
forest pecan
#

For different operating systems

pale shell
#

wait wrong link fingerguns

hot hull
#

I hope your kneecaps break when you stand up Pulse

static zealot
#

lmao xD

quiet depot
#

yes pulse

pale shell
quiet depot
#

I always find my file managing code ends up like that too

pale shell
#

pulled that one off fingerguns

hot hull
#

Stop advertising shit plugins

pale shell
#

woah ๐Ÿ˜ฆ

quiet depot
#

in fact most of my code ends up like that unless I rewrite it about 10 times

forest pecan
#

lol

#

Yeah

forest pecan
#

Frosty: Break your kneecaps twice now!

quiet depot
#

"cleanliness comes from mind-numbing repetition, not planning" - the pig, 2021

forest pecan
#

shh

#

you saw nothing

old wyvern
#

repetition of what?

quiet depot
#

typing your code

old wyvern
#

wet

#

๐Ÿ‘€

quiet depot
#

people typically make templates for their code right

old wyvern
#

Oh that

quiet depot
#

everybody has a sort of base project they start from

#

I personally choose to write it by hand every time

#

and every time I pick up on things that could be cleaner

#

and think of new and better ways to do things

pale shell
#

I just carry on from abandoned projects, isn't that right, bm?

hot hull
#

heh my yt scramble broke, it's stuck on 4 songs

pale shell
#

yt??

#

why not spotify

old wyvern
#

I sometimes tend to write stuff to get it to work and then rewrite using that as a reference

hot hull
#

Because spotify is a big steaming pile of shit

quiet depot
#

it's about 50/50 for me

#

sometimes i'll do that

#

sometimes i'll try plan it out

#

the problem I have with planning it out is I often can never progress past the theory because I can never find the perfect solution

pale shell
#

how the fuck does double upcTax = (earnings / 100.0) * privateMine.getTaxPercentage(); keep returning null?! I set a tax yet it still returns null ThonkVR

hot hull
#

different instance?

pale shell
#

whatcha mean

hot hull
#

You're setting the tax to a different object, and retrieving it from another which doesn't have it set

#

or your private mine is just null

static zealot
hot hull
#

ew

#

Imagine using english

static zealot
#

its a test api I found online

pale shell
#

I just wanna destroy ze code

quiet depot
#

imagine testing in cracked

static zealot
pale shell
#

papi thonking

static zealot
hot hull
#

much better Blitz

pale shell
#

imagine using cracked

quiet depot
#

wym test api?

static zealot
#

json api

hot hull
#

Piggy

static zealot
#

I found online

hot hull
#

just get good lmao

quiet depot
#

hello

#

yikes

hot hull
#

It's not that hard

static zealot
#
Utility.readJSON("https://samples.openweathermap.org/data/2.5/forecast?id=524901&appid=key)``` cool
prisma wave
#

but yea

pale shell
#

I promised someone i'd do it today and i thought it would be a 5 minute fix but no its a 5 hour fix

quiet depot
#

untouched try using a version of java that is later than 14

pale shell
#

y

quiet depot
#

they have helpful null pointer exceptions

#

easier to find where it went wrong

pale shell
#

idk how to update

prisma wave
#

or just run a debugger

#

or just null check

pale shell
#

bm

#

i cant do debug

prisma wave
#

yes you can

quiet depot
#

pass it in place of the player in query

pale shell
#

I tried piggy's thing but it doesnt work

quiet depot
#

replace # with ~

#

replace % with -

#

if it doesn't work

#

then why didn't you tag me and ask for help

pale shell
#

because I hate asking for help. If I ask for help then I feel like I don't know what i'm doing

static zealot
quiet depot
#

no one knows what they're doing

#

accept an input in the placeholder blitz

#

like

#

javascript_test1_blah

pale shell
#

I usually push myself to the point of going over the edge till i finally ask

static zealot
#

yeah I understand that

quiet depot
#

and instead of query=player

#

query=blah

static zealot
#

ohhh

#

Ic

quiet depot
#

replace # with ~

#

replace % with -

pale shell
#

piggy, i tried following your spigot tutorial but it didn't work for me

quiet depot
#

that's old

pale shell
#

i'm old ๐Ÿ˜ฆ

sweet cipher
#

If you know you don't know what you are doing, you can get better

pale shell
#

piggy can i have a birthday spin when its my birthday

quiet depot
#

new guide

#

no

pale shell
#

ok

quiet depot
#

how many times did you boost?

pale shell
#

i'll boost on my birthday if you want

#

๐Ÿ™‚

quiet depot
#

how many times did you boost earlier?

pale shell
#

2

quiet depot
#

you still have a spin left then

pale shell
quiet depot
#

you only spun once

pale shell
#

I got ya'll up to 30 boosts remember

quiet depot
#

appreciated

pale shell
#

you were on 28

prisma wave
pale shell
#

Want me to say a lie behind my mask or tell truth?

old wyvern
#

No, tell the truth, Move to haskell

prisma wave
#

obviously truth

pale shell
#

I am struggling a lot doing this coding but I'm just trying my hardest to get through

static zealot
quiet depot
#

"this evaluates to true in python"

#

there

#

there's the truth

pale shell
#

that was harder than what you'd think it is to say

prisma wave
quiet depot
#

@static zealot % & # are reserved symbols in urls so you have to replace them

pale shell
#

lock myself in my room and try and code bm

prisma wave
#

that doesnt sound productive

sweet cipher
#

You can't code another bm

#

There is only one

prisma wave
#

that is true

pale shell
#

I feel like I don't know what i'm doing when I ask for help

static zealot
sweet cipher
pale shell
#

I might try and setup this hot swap system

prisma wave
#

either accept that you don't and do something to change it, or keep repeating the same mistakes

#

hello dkim

pale shell
#

|| No, I don't ||

prisma wave
#

fine

pale shell
#

If I don't see the truth I don't know of it

prisma wave
#

being in denial is generally bad

static zealot
#

oh wait I could make an argument for the javadoc as well right ?

quiet depot
#

when I was younger odin, I struggled immensely with coding. I couldn't wrap my head around any of the concepts. Then I tried again a couple years later, and it turns out in those prior years I had learnt, and understood a lot more than I thought I did, as the process of getting back into the groove was much quicker than I expected, and my rate of learning was astronomically high. tl;dr try take a break if you're not getting anywhere, it worked for me

#

yes blitz

prisma wave
#

the point i am trying to make is that living in denial helps nobody

sweet cipher
pale shell
#

Piggy, I done coding between 2014 -> 2016 then quit for 4 years or so and I'm trying to come back stronger but it doesn't seem to be working out

sweet cipher
#

It's your name obviously

quiet depot
#

that's the denial bm speaks of

sweet cipher
#

Should be Skript good Everything bad

quiet depot
#

denying that haskell is better than java

prisma wave
#

denying the facts

quiet depot
#

blitz

#

congratz

#

you've made a docdex implementation

pale shell
#

but Haskel is better than java || Proudly sponsored by BM ||

hot hull
#

Piggy, kinda cool ngl

sweet cipher
#

lol

quiet depot
#

4ms

#

oof

hot hull
#

yeye, that's intentional

quiet depot
#

it's fine lol

hot hull
#

Nah it's not

pale shell
#

Is it bad i still use java 8

hot hull
#

Yes

pale shell
#

idk how to update

sweet cipher
#

Use Java 25

quiet depot
#

do u use windows?

pale shell
#

ye windows

sweet cipher
#

IntelliJ has an option to just download a jdk I think

pale shell
#

wiwus?

quiet depot
#

obviously

sweet cipher
pale shell
#

ok good ty

quiet depot
#

download a new pc

sweet cipher
#

Okay thanks

#

Any links for that?

prisma wave
#

install linux and use sdkman

hot hull
#

My only concern with this is, should I have the deviation set to 0, so the word has to match to be censored, or should I set it to 1 so there can be some false positives but it blocks stuff like this from the get-go

quiet depot
#

deviation = 0

pale shell
#

dude i'm addicted af to lofi i swear if i didn't listen to this it'll push me over

hot hull
#

k, and just slowly populate the db with deviations I guess?

quiet depot
#

i went through a lofi stage a year or two ago I think

pale shell
#

it's so relaxing

quiet depot
#

frosty you should look to symspell

#

I believe it's similar to what you're trying to achieve

#

it's c# but there are java ports

pale shell
#

So I think I've "installed" the thing

#

I just gotta do the um intellij part

#

how did you get this piggy

#

i don't have detected sdks

quiet depot
#

are you just following the images or are you reading the guide?

pale shell
#

i normally just look at the images because I'm a visual learner but i worked it out.

quiet depot
#

you need to read the guide

#

it's essential

#

this isn't a learning process

#

it's a copy this copy that process

ocean quartz
#

Yeah I think best solution will be to try hooking into shadow if it's present and run our own task if not, shouldn't be too hard to do I think

pale shell
#

you say to put the Java 11 thing I don't even have Java 11 ๐Ÿฅฒ

old wyvern
#

Um

#

xD

ocean quartz
#

Lmao

quiet depot
#

that's why you needed to follow the guide odin

old wyvern
#

xD

quiet depot
#

the installation of java 11 & dcevm is explained thoroughly in the guide for windows, linux and macos

old wyvern
#

Was playing apex, sprint slide changes my lang

#

๐Ÿฅฒ

ocean quartz
#

I should probably do something like that too, when I write in my main language I just let the corrector correct my spelling since my keyboard doesn't have our special characters ๐Ÿฅฒ

agile galleon
#

quick question

#

when i have a yaml conffiguration

#

and one value isnt good, the config gets reset to its default

hot hull
#

what the

agile galleon
#

how can i catch this AND create a duplicate file before it gets changed back

hot hull
#

the hell are you doing for that to happen

agile galleon
hot hull
#

the config to reset lol

agile galleon
#

well i check if its null, for that it tries to get it, but it throws an error, sooo it sets the value back to default

pale shell
#

piggy I don't think you put about the main manifest attribute did ya?

ocean quartz
# old wyvern wdym?

I have a US layout keyboard, so when I type in my main language I can't type things like รง, รก, ร , and things like that, so I open a google docs and type there so google can correct the spelling errors xD

old wyvern
#

xD

pale shell
#

it errors up for me

quiet depot
#

what error

pale shell
#

no main manifest attribute, in E:\Coding\Spigot Projects\PrivateMines\plugin\build\libs\PrivateMines-1.6.1.jar

quiet depot
#

why are you running your plugin as if it was a standalone jar

#

you need to run the server

#

not the plugin

agile galleon
#

xddd

pale shell
#

you do it here no?

quiet depot
pale shell
#

path to jar

quiet depot
#

read

pale shell
#

I don't think it's possible in the environment I have it in. I've copied pasted everything you've said to do on the thing.

quiet depot
#

it's 100% possible

#

what error are you getting now?

pale shell
#

main WARN Advanced terminal features are not available in this environment

old wyvern
#

btw piggy, would I be able to use vestacp to point to a reposilite installation?

quiet depot
#

that's a warning

#

not an error

pale shell
#

it stops there tho and it loads Bukkit.java each time

quiet depot
#

yugi are you using vestacp itself or hestia/myvestacp?

old wyvern
#

vestacp itself

quiet depot
#

fyi vestacp is abandoned

old wyvern
#

You were the one who had* me install it xD

quiet depot
#

I recommend using hestiacp for all future installations

#

yes

#

back when it wasn't abandoned

old wyvern
#

Ah

hot hull
#

anything else that could be useful down the line?

quiet depot
#

or back before I knew it was abandoned

hot hull
#

blurred out the word for obvious reasons lmao

old wyvern
#

Ill reinstall it later ig, would vestacp work for this use case?

quiet depot
#

yes, I believe it's possible

#

but I usually don't

pale shell
#

piggy it doesn't actually start the server or anything

quiet depot
#

it's easier to just make an nginx vhost manually

prisma wave
#

are you running the server jar

#

or the plugin jar

pale shell
#

server jar?

quiet depot
#

paste a pic of ur run configuration

forest pecan
#

lmao

hot hull
#

Take a wild guess

pale shell
forest pecan
#

n

old wyvern
#

bigger

quiet depot
#

looks right

#

show me what it says when u run it

hot hull
#

One of the main reasons for a filter to even exist, added it cause I need to detect it's deviations

old wyvern
#

What are you making?

pale shell
old wyvern
#

Also, did you get the stanford nlp thing working?

pale shell
#

no messages after that and it doesn't start the server

quiet depot
#

that's a minecraft warning

#

try running it normally first

pale shell
#

the server?

quiet depot
#

yes

pale shell
#

It runs fine outside of intelli j

prisma wave
#

isnt that because the server crashed lmao

pale shell
#

It doesn't even start before crashing tho

hot hull
#

spot the issue Piggy

quiet depot
#

does 1.8 work on java 11?

#

that could be the issue

hot hull
#

It does yes

pale shell
#

Would updating java fix this at all?

hot hull
#

updating your server to 1.16.5 would ๐Ÿคก

pale shell
#

it should be on 1.16.5?

#

i swear i'm using 1.16.5

quiet depot
#

frosty I don't understand the log output here

#

why is there two messages?

#

is the first the original, and second the censored?

#

if that's the case, then what's the middle message?

pale shell
hot hull
#

each is their own

pale shell
#

I must be doing something wrong but I can't work out what

static zealot
quiet depot
#

can it do methods?

static zealot
#

huh give me example

#

to test xD

quiet depot
#

player#getname

static zealot
#

ah I see

#

that's why the replace is for

#

Now I get it

#

fuck it took me a long time xD

quiet depot
#

lol

static zealot
#

I made it default to spigot javadoc idk why lmao

quiet depot
#

the limit parameter can be implemented like so

#

&limit=number

pale shell
#

-javaagent:C:\Program\ Files\Java\dcevm-11.0.10+5\lib\hotswap\hotswap-agent.jar -XX:HotswapAgent=core is this ok for VM Options?

static zealot
#

can it be at the end? Or does it matter where it is in the link?

quiet depot
#

java agent isn't necessary for java 11

#

doesn't matter blitz

pale shell
#

wait do I just put the directory?

static zealot
quiet depot
#

directory for what odin?

#

and yes

#

just a number

pale shell
#

wait i might have forgot to install java 11 should i get 11 or 16

prisma wave
#

huh?

prisma wave
pale shell
#

?

prisma wave
#

if that wasn't java 11

#

what was it

pale shell
#

OpenJDK?

onyx loom
#

virus

prisma wave
#

also known as java

quiet depot
#

the dcevm thing you installed is java

jovial warren
#

oh hey @ocean quartz, what was that tool you used again for assertions?

gusty glen
jovial warren
#

was it AssertJ?

quiet depot
#

checker framework bardy?

prisma wave
#

install GHC ๐Ÿคช

jovial warren
#

testing pig

#

lol

pale shell
#

this shit complex

ocean quartz
#

Yeah AssertJ

pale shell
#

GHC?

gusty glen
#

I also have a US keyboard, and I can type any letter I want

prisma wave
#

yeah

jovial warren
#

alright

#

can it assert subtypes?

old wyvern
prisma wave
old wyvern
#

Install ghcup

pale shell
#

no

old wyvern
#

Get it all

ocean quartz
old wyvern
#

Stack cabal ghc

pale shell
#

not falling for it

jovial warren
#

also, mockk is so good lol

prisma wave
#

๐Ÿ˜ฉ

old wyvern
#

Do it

#

Odin bad haskel good

#

Also

ocean quartz
gusty glen
old wyvern
#

@hot hull Take the haskell course

ocean quartz
#

Also Yugi ๐Ÿ‘€

jovial warren
#

because builtins don't have a function for that lol

ocean quartz
#

Hooked into shadow

pale shell
#

I'm gonna say it. Haskell is overrated.

old wyvern
#

Ayyyyy

prisma wave
#

not true

static zealot
#

Hell yeah. Limit works as well now

old wyvern
#

Thats lit matt

static zealot
#

damn this is cool

jovial warren
ocean quartz
#

Yeah

jovial warren
#

slimjar > PDM?

old wyvern
#

So its pretty much ready

#

Just need to setup the mirror now

forest pecan
#

pdm is outdated im sorry bm

#

i had to say it lol

prisma wave
#

๐Ÿฅฒ

forest pecan
#

๐Ÿฅฒ