#waterfall-dev

1 messages ยท Page 4 of 1

lyric oak
#

just... "java" that into place how you can lol

bleak current
#

wouldn't in.release() be better in finally block?

#

...

#

never mind

#

/me needs to make some coffee

lyric oak
#

think thats right. been deep in netty land for a few months now lol

bleak current
#

in gist:

#

^ what i wrote

#

smh

lyric oak
#

ah lol

#

yea thats downside to doing this on a mac. no native impls, and they all expect direct buffers... but dont actually check ๐Ÿคฆ so easy to forget about em if youre not using native on your dev env

bleak current
#

:p

#

basically one could add native support for mac as well

#

there's kqueue support in Velocity atleast

#

and native zlib

lyric oak
#

yea, the underlying raknet lib does have kqueue support. native libs.... idk why those werent done for mac yet

#

maybe another patch ill add

#

anyways, that seem to fix it?

lyric oak
#

lol alright, 2 simple modifications and now i have natives for mac

#

and it works ๐Ÿ‘

bleak current
#

:p

lyric oak
#

full kqeue now ๐Ÿคท
[07:22:34 INFO]: kQueue is working, utilising it!

bleak current
#

epi

#

epic

#

ideally this should be sent upstream

lyric oak
#

might need to fiddle with it more. right now it just replaces the linux binary, so... probably not ideal lol

#

also broke modifications into its own patch, so you can see exactly whats being change there (and to help in conflicts, maybe?)

#

updated that patch. now does linux and osx

ornate jasper
#

How do you even build your fork @lyric oak

#

Lmao

bleak current
#

@lyric oak i'll make a pr soon to remove import statements :p

lyric oak
#

@bleak current sweet, thanks! ๐Ÿ˜„

bleak current
#

now thing is that....

lyric oak
#

ill keep the same patch structure

ornate jasper
#

oh it has patches

#

good good

bleak current
#

ffs github

lyric oak
#

just add another remote in your .git/config for your checkout

bleak current
#

also see this

#

i renamed the goddamn repo

#

still offers me that friedlmao

lyric oak
#

i hate how github does forks. doesnt let you 'sever' them either

#

oof, just found out kqueue doesnt like having multiple channels on the same eventLoop

#

kind of necessary for bungee to tie upstream<->downstream

bleak current
vagrant marsh
#

@lyric oak what do you prefer? I was looking into bitbucket and that seemed interesting

lyric oak
#

@bleak current thanks!

bleak current
#

that applies on top of the repo directly

lyric oak
#

@vagrant marsh hmm usually just use to gist ๐Ÿคท

#

๐Ÿ‘ hmm, should probably just merge it into my existing patch?

vagrant marsh
#

nani the fuck

#

GIST is nothing like github

#

GIST is just code snippets

lyric oak
#

oh bitbucket lol was thinking of one of those other gist-like things

#

i like github the most, cause im used to it lol

vagrant marsh
#

I thought you were comparing github to other git repo services when you said you didn't like how it did branches

bleak current
#

forks

#

forks not branches

lyric oak
#

ohh yea forks, just weird github specific things i dont like

#

@bleak current having some ancestry issues. think you can push a branch with the exact patch set you have? need it so i can create the alternate ancestry

bleak current
#

yeah i'm having that weird issue as well

#

sure, give me some time

lyric oak
#

had this argument earlier in the paper channel lol. the 'work' git checkout needs to have both full ancestrys to do a proper merge else it all goes it shit lol

#

but just a branch of waterfall with the patch set is all i need, then i can build that as it is, get the ancestry, then copy the new patch and update my main branch

#

(made some script for this with paper)

bleak current
lyric oak
#

๐Ÿ‘

bleak current
#

let me know if you've rebuilt/figured that out

#

i know why it throws dumb ancestor error on my side

#

(probably)

#

the kqueue patch :p

lyric oak
#

@bleak current merged and updated ๐Ÿ‘ first contribution ๐Ÿ˜„ thanks!

bleak current
#

that's called first blood!

lyric oak
#

hehe

#

and... probably removing the kqueu stuff anyways ๐Ÿ˜ฆ bungee seems to rely on keeping upstream/downstream on the same event loop (same thread). kqueue does not like that

bleak current
#

i wonder how Velocity internals work...

#

ping @weary grove

#

maybe he can help

lyric oak
#

ping ping ping

vagrant marsh
#

I actually kind of want to move mcMMO to bitbucket but theres way too many forks on github I'd probably piss too many people off

sly crown
#

ew bitbucket

vagrant marsh
#

dude its sexy

#

what do you prefer

bleak current
#

no

#

it's not

#

even i'm sexier smh

vagrant marsh
#

idk it seems neat

lyric oak
#

its sexy in like... that "bar hookup" sorta way. github is the one you marry ๐Ÿ˜‰

vagrant marsh
#

github is kind of basic bitch

#

tho

sly crown
#

you should just move to a raw git repo on some shitty hosting site

#

who needs UI when you have ssh

#

:^)

bleak current
#

who even needs a site for git

#

stop

#

you are extremely filthy casual

sly crown
#

i just zip up the .git folder and email it

#

that's how real developers do vcs

bleak current
#

*rar

#

and password protect it

#

then forget the password

vagrant marsh
#

store your git project on a google drive

#

galaxy brain shit

lyric oak
#

lol

weary grove
#

@lyric oak maybe can help but not right now

lyric oak
#

yea np, need to get back to work anyways

#

(i feel like electronic was about to tell me to ignore kqueue. dont worry, i did lol)

#

do have that patch for OSX native crypto/zlib tho (both linux + osx)

trail plume
#

Don't know the technical aspects of kqueue or if there is any gotchas around that, really, but general performance improvements which are reasonably safe are welcome'd as PRs if you wanted ๐Ÿ˜›

lyric oak
#

i tried kqueue- issue is, bungee uses a shared eventLoop for upstream/downstream. the event loops get locked during listening, starves the other end ๐Ÿ˜ฆ but native OSX crypto/zlib looks solid! will definitely submit that patch if it feels like a good addition for waterfall

trail plume
#

It was low on my "todo list", being one of those ones which I only really use bungee on macOS for development stuff,changes I'd have to make to get it to work looks like exactly what you've got there right now

lyric oak
#

awesome! ill submit it. and yea, not sure about practical end use, but it definitely helps when developing on mac (actually uses the native classes, exposes any gotchas)

bleak current
#

yeah zlib support would be great improvement very likely indeed

lyric oak
#

great!

trail plume
#

Actually, one difference I was going to make, was to use the platform info in the include statement, I doubt that anybody has multiple platform folders there, but something I'd like to consider now

#

(Well, the header include flag)

lyric oak
#

in NativeCipherImpl.cpp ?

trail plume
#
#!/bin/sh

prefix=
platform=linux

if [[ "$OSTYPE" == "darwin"* ]]; then
        prefix="osx-"
        platform="darwin"
fi


CXX="g++ -shared -fPIC -O3 -Wall -Werror -I$JAVA_HOME/include/ -I$JAVA_HOME/include/$platform/"

$CXX src/main/c/NativeCipherImpl.cpp -o src/main/resources/${prefix}native-cipher.so -lcrypto
$CXX src/main/c/NativeCompressImpl.cpp -o src/main/resources/${prefix}native-compress.so -lz

is what I scribbled together

lyric oak
#

oh interesting

#

hmm i just slapped all the includes and "-l" library link lines together. GCC seems to fail-succeed silently there

trail plume
#

Yea, GCC will be fine, it's just one of those fun "what happens if we add more platforms" down the line

lyric oak
#

your method looks cleaner tho

#

ahh yea fair

#

ill add it in

#

can figure out the rest (if anything) during code review

#

hmm actually, might just be cleaner to do an 'if' block for each platform

#

at least so if somebody is trying to build from scratch, they're not looking around for libs that dont exist on their platform

#

what i have now id... " -lcrypto -lmbedcrypto". that might be confusing if you're pecking around for libs

trail plume
#

I would honestly add a note of the required stuff in there anyways, people forget that stuff on linux too and install openssl

lyric oak
#

hmmm true

#

yea probably best to be verbose if its going to supported by waterfall

#

i know i already make enough work for you guys with my gripes lol dont want to make more gripes from the general public

#

ill get it all cleaned up and submitted near the end of my day (in a few hours)

#

@bleak current so did you actually try it out yet?

#

the bedrock support

bleak current
#

yes

#

i sent few screens to ps discord

#

see #mcpe

#

needs further investigation on desktop

#

gonna get mcpelauncher up in few moments

lyric oak
#

nice

#

got a few fixes coming in a bit. gotta get through this next 2 hours of meetings tho ๐Ÿ˜ฆ

#

(mostly a raknet throttling/backpressure fix, and a fix for vanilla command sending)

#

raknet should be entirely backpressure capable on both ends tho ๐Ÿ‘ did some torture tests

#

also going to get rid of the forced server transfer feature (make it optional). i have support for the normal double-dim-switch transfer, just need to flush out a few things to make it work for vanilla

#

if you're in the PS discord, you've undoubtedly seen the horrors that have come with bedrock dimension switch ๐Ÿค•

bleak current
#

i joined today lol

lyric oak
#

ah lol well, double-dim-switch is particularly horrible with PE... need to inject some packets after the switch, and need a wait queue on a confirmation from the client

#

its baked into PSPE and PSBungeePE, need to get the logic transferred over still, and find a way to make it work with vanilla

#

also, judging by your patch-fu, you're a capable developer? lol definitely looking for some more talent for PSPE

vagrant marsh
#

what does PS stand for in this context?

lyric oak
#

this waterfall fork will help there i think, one of the primary goals for this was to implement an introspection layer to help with packet analysis

#

PS = ProtocolSupport

#

we have a PE branch ("we", ive only been on the team for like... 6 months) that's actually impressively usable now

#

my raknet fork is forked from Shevs, and we have a bungee plugin that ive got updated, but then moved most of that code over to this waterfall fork cause im sick of working with bungee plugin-oriented hacks lol

#

aka- all of this is @real cave work that ive co-opted and turned into this lol

bleak current
#

@lyric oak low interest/not enough time to help with PS(PE) sadly

lyric oak
#

fair enough. this waterfall fork is actually a breath of fresh air compared to working on PSPE lol. much... easier in the end

#

and it'll work for vanilla and 3rd party bedrock servers

bleak current
#

@lyric oak option(network.ycc.raknet.RakNet.SERVER_ID, UUID.randomUUID().getMostSignificantBits())

#

why is that so?

#

can't that be sourced from uuid in config file instead?

#

what does that server_id even do thonk

lyric oak
#

that change is coming soon (default config values to unique server and client IDs, unless set during negotiation, or initialization via the bootstrap)

#

@bleak current so, the reason that exists (client and server ID) is so it can ignore conflicts during the UDP (non-reliable) connection sequence

#

once the reliable connection is established, its like TCP, where it'll quickly drop the connection if some sequence isnt correct

#

but before then, it needs a unique identifier so it can filter the garbage out. this actually happens pretty often

bleak current
#

i see

#

thanks

#

also metrics option

#

i can disable this freely yes?

lyric oak
#

you can, it defaults to an empty metrics handler

bleak current
#

epic

lyric oak
#

(old graph, resend mechanics much better now ๐Ÿ˜† )

bleak current
#

by default, no

#

i don't have grafana setup locally

lyric oak
#

(finally integrated some RTT stats, can basically guarantee a less than 10% now)

#

yea definitely understable. ill move that to a new module soon i think

#

hmm actually should probably be an event based API (to initialize a metrics logger), idk. open to suggestions

bleak current
#

statistics?

lyric oak
#

yea, the metrics logger

bleak current
#

eh, i'd make an interface and add new method what you can use to get/set the metrics logger

lyric oak
#

mostly just ephemeral work from trying to tune raknet. i am glad to say we can have people use 4G from overseas now without lag at least lol

bleak current
#

by default stub implementation would be used, what does literally nothing

lyric oak
#

yea, it does default to the STUB if you remove the config setting

#

(just an interface impl with empty methods)

bleak current
#

in some other parts of code as well

lyric oak
#

damnit

bleak current
#

:P

lyric oak
#

y u gotta look at code >.<

bleak current
#

PECompressor class

lyric oak
#

yea forgot about that. should be able to grab that from the channel config

#

yea damnit, ill need to put that in a plugin probably

#

which means i need to make an API ๐Ÿ˜ก

bleak current
#

easy

lyric oak
#

i know lol. just always hard moving from proof-of-concept to usability/interface

#

see: y u gotta look at code >.<

bleak current
#

true

#

well i had to look at the code to adapt it somehow :p

lyric oak
#

lol i know, and its much appreciated for sure. and i do plan to maintain and make this useable

#

and im glad you're interested and helping ๐Ÿ˜ƒ

bleak current
#

i'm just playing around for now

lyric oak
#

definitely a valuable stage of testing for sure

bleak current
#

oh for fucks sake

#

reeeeebuild time

lyric oak
#

brew install libprotobuf ?

bleak current
#

i'm not on mac

#

lol

lyric oak
#

apt-get install libprotobuf? lol

bleak current
#

actual reason for this error is that arch linux has updated protobuf library

#

and i have mcpelauncher build which was linked to older one

lyric oak
#

oof

bleak current
#

tbh patchelf can prolly solve this

lyric oak
#

might need to do a manual build, not too hard honestly. did that on osx before they had the pre-compiled bundle

bleak current
#

eh, i have even bunch of scripts to continously rebuild packages and pull in the changes

#

wooo

#

finally

#

it's cute that 1.13 java edition runs 50-60fps

#

while mcpe runs full 60fps without drops

lyric oak
#

i know, its disgusting lol

#

there is something to say for the strict opengl rendering pipelines with C++

bleak current
#

oh my, ps is in verbose mode or something

lyric oak
#

PS ?

bleak current
#

console is full of inventory click dumps

#

protocolsupport

lyric oak
#

ah, yea, theres a flag

bleak current
lyric oak
#

defaults to 'on' for PS mainline (because inventory tracking still sucks)

#

damnit, cant find it now, but just search in files for "inv trasaction". theres a boolean you can disable

bleak current
#

also wut

#

when i open furnace, another one spawns behind me

#

disappears when i close the gui

#

interesting hackery

lyric oak
#

in PSPE?

#

yea.... fake inventories lol

#

needs to be tweaked a bit, but basically PE only allows you to open inventories if theres a specified TileEntity (or entity) for that inventory

#

so fake inventory screen means... fake inventory in the world =\

lyric oak
#

also, mods and whatnot, let me know if you want me to move this convo out of here lol

#

its not really waterfall, its not really ProtocolSupport.... its just a lonely bastard of a project

#

(but it is directly waterfall adjacent ๐Ÿค” )

bleak current
#

nobody cares

#

:p

#

this channel is kinda silent most of the time

lyric oak
#

then i will dance my heart away until electronic bans me ๐Ÿ˜›

#

@trail plume do i need to tag changes with "Waterfall" in the native patch? (for the build compile script)

#

think it'll mostly be a rewrite, and so little code there to start with (plus its not really needed for the build chain)

trail plume
#

waterfall - rewrite below to extend platform support

#

Just add that to the top, I guess; I'd rather have something than nothing, but for rewriting the whole file, ๐Ÿคท

lyric oak
#

sounds good ๐Ÿ‘

#

also, how in the hell do i change my emoji gender?

#

๐Ÿคท i mean, im fine with a woman shrugging. but how do i change that lol

stone fiber
#

is there even a man shrug emoji

spring bloom
#

๐Ÿคท

lyric oak
#

there is in the utf standard

#

:man_shrugging:

spring bloom
#

probably not for discord

lyric oak
#

normally

stone fiber
#

๐Ÿคทโ€โ™‚๏ธ

spring bloom
#

no that doesn't work

stone fiber
#

yeah discord just needs to update their lib

lofty ridge
#

๐Ÿคทโ€โ™‚๏ธ

stone fiber
#

go yell at them

lyric oak
#

๐Ÿคท ๐Ÿ†

#

ill just use that for now lol

lofty ridge
stone fiber
#

kash and his graph paper

lofty ridge
#

yes

lyric oak
#

whoa havent seen graph paper in years

lofty ridge
#

noob cake

lyric oak
#

:(*

#

anybody know off the top of their head what debian packages are needed to compile the native part of bungee? wanted to just add notes about deps for each platform if possible

#

libmbedtls-dev and...

#

zlib-dev ?

trail plume
#

That sounds correct

lyric oak
#

ahh chris, whats the... other popular package manager

#

yum, apt, and...

#

(ports... f that)

stone fiber
#

cant just cover package managers

trail plume
#

I' just list the debian packages

stone fiber
#

have to cover distros specifically

trail plume
#

It will generally cover other distros, beyond that, if you're using some niche distro, that's on them

stone fiber
#

yum is on fedora and centos and rhel but youre going to get different packages with even a few different names

lyric oak
#

well, and keep in mind, bungee does bundle the binaries in the repo, build steps only needed for the masochistic

stone fiber
#

you should just list what distros you do want to support and cover them specifically

lyric oak
#

debian and brew, done lol

stone fiber
#

I mean yeah thats fine, not like people cant submit a PR with arch packages and fedora and HannahMontanaLinux and etc

lyric oak
#

HannahMontanaLinux ๐Ÿคฃ i can only hope thats a real thing

stone fiber
#

it is/was

#

but it was just an ubuntu fork

lyric oak
#

why even fork ubuntu. ubuntu is basically just debian with "all the thing". why would you need to add more

stone fiber
#

well it was a meme

lyric oak
#

ohhhhhhhh for the memes

stone fiber
#

it just shipped with a wallpaper and some theme changes

#

its not like it was supposed to be maintained

lyric oak
#

doing it for the memes is acceptable

#

alright, osx native patch coming up

#

@trail plume did you delete the script blob you pasted earlier?

trail plume
#

nope

lyric oak
#

did i hallucinate that? eh... fucking long week so far. can go over in CR

lyric oak
#

am blind and stupid lol

trail plume
#

tbh, I did have to search for it, I did end up just not scrolling far enough \o/

lyric oak
#

same issue i have to go through at work- if its in a slack channel, i wont find it lol

lyric oak
#

and i nuked my changes in a patch set somehow, great

lyric oak
#

binary git patches are weird

#

are they compressed and b64 encoded?

trail plume
lyric oak
#

is there just more support in the darwin kernel ?

#

oh weird, b85

#

oh, is it doing static linking?

#

does that matter?

trail plume
#

No, it's not

#

You'd (apparently) use -l: for static linking

lyric oak
#

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

trail plume
#

(and that doesn't work)

#

hm

#

Oh, apple apparently doesn't support static linking, so people would have to actually install those

lyric oak
#

well, at least it'll safely fail with UnsatisfiedLinkError

trail plume
#

I've figured it out \o/

stone fiber
#

mfw there's blobs in the source

bleak current
#

botnet confirmed

lyric oak
#

ahh right, need to build against the *.a file. i tried that but didnt put in the full path ๐Ÿคฆ

#

binary blobs looks to be the right size now

bleak current
#

jeeez

#

how the fucc do i make stack traces smaller?

#

almost fills up my whole screen

#

must be configurable from some property or something... feels like strictly related to JUL

ornate jasper
#

Would be nice if we could hide netty lines yeah

trail plume
#

There is a flag for setting how deep it should go iirc

bleak current
#

yeah, but my google-fu seems to be broken today

trail plume
bleak current
#

1024 lmao

#

actually i kinda like a solution that normal mc server has

#

e.g ... 12 more

#

but feels like log4j is doing that

trail plume
#

That's from other catches

bleak current
#

%xEx{short} blobthinkingdown

bleak current
#

tfw my ASM patch did not handle exceptions properly

bleak current
#

hey @trail plume you have time to review my pr?

trail plume
#

Not yet, need to look into testing it with a few plugins I guess

bleak current
#

fair

#

esp those ones that register custom packets

#

phoenix616's resource pack plugin was one iirc

#

[21:54:55 ERROR] [BungeeResourcepacks]: Protocol version 404 is not supported! Please look for an update!

#

no u

#

yeah dev build works

#

as i added backwards compat method which falls back to reflection

weary grove
#

By the way, regarding multi-platform natives

lyric oak
#

getting the snyk maven plugin going for my fork (cause of course it does nothing valuable with the regular github integration)

#

not sure if theres any valid vector, but... probably best to just fix it if possible

lyric oak
#

lool i think there is actually a valid vector in bungeecord for this. yikes maybe not directly

trail plume
#

I don't believe that guava is used anywhere in waterfall/bungee that it's an actual issue

bleak current
#

yep

#

agreed

#

probability of running into this issue is near to zero, considering what proxy plugins really do

weary grove
#

@lyric oak One complication to updating Guava is that it'd break plugins

main thunder
#

Does bungee not call superclasses of events?

#

I can't just listen on Event to catch all events huh?

lyric oak
#

@weary grove i put in a PR at the bungeecord repo. see what that fabled md_5 says ๐Ÿคท i know the attack vector isnt really exposed in bungee itself, but any plugins that might be using that installed version of guava could open up the vulnerability (which sounds like a full-on RCE)

trail plume
#

Honestly, developers should just be shading guava in there themselves if needed

lyric oak
#

yea, fair

main plume
#

ViaVersion 1.6.0 exposes a deserialization

lyric oak
#

i dont think there was any breaking changes in those version of guava, think it just removed some already deprecated APIs. but... idk, ill let somebody above my paygrade figure this out ๐Ÿ˜‰

weary grove
#

@main plume ouch

stone fiber
#

removing deprecated APIs is breakage

#

its just accepted breakage

#

should just yank the whole dependency

lyric oak
#

accepted and... expected, id think ๐Ÿค”

#

cant haul around old libraries forever

stone fiber
#

I'd be surprised if md accepts your PR

lyric oak
#

yea definitely. its just there to raise the flag

#

0 expectation of it getting merged lol. but it puts it on the radar. that potential vulnerability is now actually exposed

#

@random token (putting it on your radar too)

stone fiber
#

that thumbnail

main plume
#

But it is not released yet

remote condor
#

This wouldn't be a problem unless someone made it their own problem or used untrusted plugins in the first place

#

that sync vulnerability in guava

sly crown
#

wtf is opennbt

lyric oak
#

was just wondering that ๐Ÿค”

main plume
#

It is a NBT library used by ViaVersion

sly crown
#

why

#

what would possibly want to use this

#

custom tags? are they insane?

#

people literally only use nbt because we're forced to by the implementation

#

why would you want to take that further

#

if you have something that isn't natively nbt in minecraft, don't put it in nbt

#

opennbt.tag.builtin.custom
why is custom a subpackage of builtin

#

who designed this trashheap

lyric oak
#

hmm actually, i would be interested in switching over to a common NBT library

#

sick of seeing half-baked NBT implementations all over ๐Ÿ˜’

#

including my own

lofty ridge
lyric oak
#

case in point >.<

sly crown
#

jnbt works

#

tho i don't think we package it separate

lyric oak
#

although, yours is probably much better @lofty ridge

random token
#

Kyori powered libraries are great I just wish they had README files ๐Ÿ˜ฆ

lofty ridge
#

hehehe

#

text has a readme!

random token
#

That's the kind of readme i'd love on every project, sadly takes time of course ๐Ÿ˜›

lyric oak
#

agreed

lofty ridge
#

I spend more time on actual code documentation, which is what people will end up seeing more often

weary grove
bleak current
#

wtf is up with opennbt lmao

#

oh well

#

eh, i wish that there was a better version of mcprotocollib somewhere...

#

but then again i could make my own by extracting data from wiki.vg thonk

lyric oak
#

i did have a script a few years back that just parsed the protocol wiki. was using Scala implicits and types so just had to produce a type signature for each one. hour or two to make the generator types, then maybe an hour of cleanup, then done lol

#

bedrock continues to just be based on mostly... mystery and bad disassemblies

#

lol and NBT libraries.... why are those not standard. ive seen like a hundred of them so far

spring bloom
#

their considered an impl detail

lyric oak
#

yea, kind of like the 1000s of versions of varint parsing

spring bloom
#

varint parsing is braindead to do

#

you do not need a library for that

lyric oak
#

well, i guess when you throw on the signed versions and long versions, still ends up being a pile of 15 methods everything just has to copy and carry around

spring bloom
#

even signed varint :>

lyric oak
#

maybe 10, fine lol

spring bloom
#

write one method for long and cast

lyric oak
#

(did accidentally re-add writeVarInt, ignore that...)

#

hmm damn

spring bloom
#

I do that in C

#

GCC inlines it too

lyric oak
#

still need the special sign type, but yea... guess thats only 4 methods

spring bloom
#

no

#

one for signed long

#

one for unsigned long

lyric oak
#

but read and write for both

spring bloom
#

no

#

well yes oops

#

hold on

lyric oak
#

guess its still probably better to do methods per type in java, but yea guess you only need the 4 underlying methods

spring bloom
#

you misheard me you can do just wo

#

one for write

#

one for read

#

you just have to be careful with casting

#

here's an earlier version of what I did in C:

#
static inline uint8_t *rl_write_vsint64(const int64_t value, uint8_t *buffer_off, const uint8_t *buffer_end) {
    return rl_write_vuint_max((uint_fast64_t) ((value >> 63) ^ (value << 1)), buffer_off, buffer_end);
}
#
static inline int64_t rl_read_vsint64_advance(const uint8_t **buffer_off, const uint8_t *buffer_end) {
    const uint64_t u_result = rl_read_vuint64_advance(buffer_off, buffer_end);
    const uint64_t sign = -(u_result & 1);
    return (u_result >> 1) ^ sign;
}
vagrant marsh
#

gross

#

no comments

#

bit shifting everywhere

spring bloom
#

it's doc'd by google :>

#

and the link to such doc is in the file

remote condor
#

I wrote my own mcprotocol or my bot anyways

#

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

#

Though may swap out using OpenNBT for yours.

sly crown
#

opennbt is gross

#

i would rather twiddle bits with chopsticks

spring bloom
#

.g opennbt

lean gobletBOT
#

(DiscordBot) https://github.com/Steveice10/OpenNBT -- GitHub - Steveice10/OpenNBT: A library for reading and...: "A library for reading and writing NBT files. Contribute to Steveice10/OpenNBT development by creating an account on GitHub."

olive tide
#

what?!
waterfall was implemented with c?!

#

ah noes

trail plume
#

the above discussion ain't really relate to bungee, etc; Only thing that's in c is the native compression/encryption "on supported platforms"

bleak current
#

Is there also an extended API for Waterfall or can I still use BungeeCord without losing features?

bleak current
#

Okay just included it, don't know if it has an advantage. Does someone have an idea how I can make a global tablist?
I've read about TabListHandler but it looks like it's not existing anymore.

ornate jasper
#

how do you guys generate the patches without committing the files to the repo

trail plume
#

We commit to the paper-* repos, and the patches are build from there

ornate jasper
#

paper-* repos ๐Ÿค”

#

nvm figured it out

lean gobletBOT
#

I forgot we were in the waterfall channel, btw, once we checkout the repos for waterfall and paper, we apply patches over the projects in a git repo cloned from upstream, to rebuild, we just rebuild all the patches from the last upstream tag

trail plume
#

oh, didn't see the edit, that musta been why it skipped my mind to reply earlier

ornate jasper
#

oh

trail plume
#

Nothings changed there, really

#

You still need to have the server handshake with the client so that it will actually be sent iirc

#

Yes, just gotta handshake

#

There are plugins which do that already iirc

bleak current
#

fuck no

bleak current
#
[INFO] Checking unresolved references to org.codehaus.mojo.signature:java18:1.0
[ERROR] /Users/mark/IdeaProjects/MikroCord/MikroCord-Proxy/event/src/main/java/eu/mikroskeem/mikrocord/event/MethodHandleEventExecutor.java:34: Undefined reference: void java.lang.invoke.MethodHandle.invoke(Object, Object)
[ERROR] /Users/mark/IdeaProjects/MikroCord/MikroCord-Proxy/event/src/main/java/eu/mikroskeem/mikrocord/event/MethodHandleEventExecutor.java:42: Undefined reference: void java.lang.invoke.MethodHandle.invoke(Object)
#

bruh

#

what's wrong with animal sniffer

#

<ignores>java.lang.invoke.MethodHandle</ignores> oh well

trail plume
#

Did I disable animal sniffer or leave it on?

bleak current
#

you left it on

#

but it does not affect waterfall code

#

so i guess no worries

trail plume
#

Ah, I went for the "enable until it breaks" route

bleak current
#

i saw an issue about it as well on animal sniffer plugin

#

they don't handle @PolymorphicSignature (or w.e it was) properly

trail plume
#

ah, nice

bleak current
#

.g animal sniffer methodhandle invoke

lean gobletBOT
#

(DiscordBot) https://github.com/mojohaus/animal-sniffer/issues/18 -- mojohaus/animal-sniffer: "Feb 15, 2016 ... When compiled, calls to MethodHandle.invoke and MethodHandle.invokeExact ... This causes false positives, i.e., animal-sniffer..."

bleak current
#

yes this

trail plume
#

Yea, I did a quick google and just rip

ornate jasper
#

Bungee was updated to 1.14

#

And it was only to increment an int

trail plume
#

only diffference in the protocol between pre5 and release

ornate jasper
#

yeah ik

#

but you can drop the temp patch now

trail plume
#

Yea, I know, It's just not a super imminent "going to spend my time on it right now" kinda thing

ornate jasper
#
+ ./waterfall p
/tmp/jenkins8432707758741345219.sh: 3: /tmp/jenkins8432707758741345219.sh: ./waterfall: Permission denied```
#

anyone know how to fix this

#

lol

trail plume
#

/tmp needs to not be mounted with noexec for that to work

ornate jasper
#

hmmm

#

okay

ornate jasper
#

apparently i commited the file with wrong permissions

#

git add --chmod=+x waterfall fixes it if somebody has the same issue

olive trellis
#

Getting this error with bungeecord api, no idea why [00:54:27 WARN]: Error dispatching event PostLoginEvent(player=SeaAnimal) to lis tener org.mineguild.BungeePlayerList@107f4980 java.lang.IllegalStateException: Subject class class java.util.UUID is not assig nable from interface net.md_5.bungee.api.connection.ProxiedPlayer

#

Will post code in a second, but I'm just calling <ProxiedPlayer>.getUniqueId()

trail plume
#

it wants a ProxiedPlayer, not a UUID

#

Wait, no, it's apparently expecting a UUID, what line does that exception come from?

olive trellis
#

Oh, good call, it's coming from Contexts contexts ...

#

Which takes an Object as its argument not UUID

trail plume
#

Give it a ProxiedPlayer instance actually

#

The wording of that and 2am is hard

olive trellis
#

Lol. Yeah you're right -- took a look at github and the BungeeContextManager implementation wants ProxiedPlayer. Thanks ๐Ÿ˜ƒ

#

Also my b for copy pasting the code from a spigot plugin

sly crown
#

in a waterfall plugin?

#

or a paper/spigot plugin?

trail plume
#

There was Orion for mixin loading in paper

sly crown
#

^

trail plume
#

But, it's not going to work for standard spigot

#

You need something that can actually hook in and transform classes before plugins are loaded

bleak current
#

Someone have an idea how I can modify the tablist? Adding/removing entries?

#

Because seems like there is no TabListHandler anymore

vagrant marsh
#

onTabComplete is it

#

override it

bleak current
#

Thats for tab complete? Isn't it?

bleak current
#

I mean the player list.

vagrant marsh
#

Oh you mean that scoreboard when you hit tab

#

my bad

bleak current
#

Yup

vagrant marsh
#

network packets I believe

bleak current
#

Hm

vagrant marsh
#

don't know if an API exists for it

bleak current
#

Haven't found one

vagrant marsh
#

I'm not familiar with waterfall so maybe there is

bleak current
#

So I hoped someone here knows

ornate jasper
#

Didnt you asked before and got told to just to use btlp

bleak current
#

Yep I took a look in it. But I don't like it.

#

I've already a tablist module in my plugin but it's only paper atm.

#

I want to extend this to waterfall.

ornate jasper
#

you'll probably need to dig it yourself then

bleak current
#

Sure, but any help is appreciated ๐Ÿ˜„

ornate jasper
#

Said that because i dont think anyone here really has experienced with tablists in waterfall

bleak current
#

Okay ^^

vagrant marsh
#

probably not too different to doing it outside waterfall, a bunch of network packets to get what you want to show

bleak current
#

Okay I've got an PlayerListItem now, but I don't know how to send it XD

bleak current
#

I'm sure theres something wrong with that code:

PlayerListItem playerListItem = new PlayerListItem();
playerListItem.setAction(PlayerListItem.Action.ADD_PLAYER);

PlayerListItem.Item item = new PlayerListItem.Item();
item.setUuid(UUID.randomUUID());
item.setUsername("Username");
item.setDisplayName("Username");
item.setPing(20);

PlayerListItem.Item[] playerListItemArray = {item};

playerListItem.setItems(playerListItemArray);

for(ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers())
{
    proxiedPlayer.unsafe().sendPacket(playerListItem);
}

This kicks me with this stacktrace: https://hastebin.com/ojadicaqod.bash

trail plume
#

87 would be your propeties

#

You basically need to fetch their game profile as you'll need to send the client their game profile

bleak current
#

Uhm what??

trail plume
#

The player list item contains the users game profile

bleak current
#

So when I use the example with my users data it should work?

trail plume
#

if done properly, yea

bleak current
#
PlayerListItem playerListItem = new PlayerListItem();
playerListItem.setAction(PlayerListItem.Action.ADD_PLAYER);

PlayerListItem.Item item = new PlayerListItem.Item();
item.setUuid(ProxyServer.getInstance().getPlayer("Rasre").getUniqueId());
item.setUsername("Rasre");
item.setDisplayName("Rasre");
item.setPing(20);

PlayerListItem.Item[] playerListItemArray = {item};
playerListItem.setItems(playerListItemArray);

for(ProxiedPlayer proxiedPlayer : ProxyServer.getInstance().getPlayers())
{
    proxiedPlayer.unsafe().sendPacket(playerListItem);
}

Is this properly? Because I also get kicked ^^

trail plume
bleak current
#

Aww that really helped me

#

Thank you โค

bleak current
#

Do I need to query this properties from the API everytime or is there a method getting it from waterfall?

trail plume
#

Waterfall doesn't care about that, only place you'd get it from is if you was to intercept the player list packet from the server

bleak current
#

So when the player joins I need to catch that packet and store it so I don't need to ask mojang again?

trail plume
#

It's pretty much either that or query the API or use some 3rd party API for it

bleak current
#

Okay, sounds good. Do you know if this information is in any login event?

trail plume
#

nope

#

it's only sent in the player list info

bleak current
#

Hmm okay

bleak current
#

I'm just setting up a new jedis module in my plugin. Btw: I've never used jedis before. So what could be good values for the connection pools min/max connection when I have about 100 gets per second?

bleak current
#

I don't use Jedis on plugins but I use it on another software (MMORPG server engine)
This is my JedisPoolConfig:
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setTestOnBorrow(true);
poolConfig.setMaxIdle(maxConnections);
poolConfig.setMaxTotal(maxConnections);
poolConfig.setBlockWhenExhausted(true);
poolConfig.setMinIdle(maxConnections / 4);
poolConfig.setMaxWaitMillis(2000);

#

and maxConnections is set to 10

bleak current
#

Oh okay

#

I set max to 128 XD

bleak current
#

Wait

#

these are connections shared by the pool

#

A connection can handle a lot

#

without being actually blocked

#

128 seems a lot to me

#

make sure you don't make anything lag

#

I mean

#

You can set the max to 128 as long as you configure the setMinIdle properly

#

the setMinIdle is the number of connections that will always be openned

#

I set mine to max divided by 4

trail plume
#

^^ It should scale up or down, but 128 is overly excessive

bleak current
#

I mean, he can runs on 128 but set the minIdle to 128 / 6 at least

trail plume
#

No idea if redis enforces a connection limit by default, but that's how you hit the connection limit if there is one

bleak current
#

no

#

default redis clients limit is 10000

#

But you still don't need that much for one program

#

I mean

#

128 is okay for the jedis pool as long as the minidle is configured properly

#

that's it !

#

@bleak current

#

that was supposed to go in help tho

#

๐Ÿ˜‚

#

What should the minidle be for that?

#

I don't know the data you transfer

#

is it constant all day ?

#

Do you have 100/s redis get all day ?

#

Nope

#

With no players there are no gets

#

Is 100/s your maximum ?

#

I plan having 10 gets per player

#

10 gets per second per player ?

#

๐Ÿค”

#

Yes

#

Can I know why if I'm not too curious ?

#

Uhm

#

Thats just a number

#

I want it to handle

#

hmmm

#

It's not the real amount atm xD

#

Keep the setBlockWhenExhausted on true

#

Have this

#

If you see any jedis exception, then your pool is too weak

#

Keep the config I gave you

#

It should work

#

That's still 32 minIdle

#

That's completly fine

#

Okay :)

#

But wait

#

You should make sure your redis server don't timeout

#

the clients

#

I'm using the default redis config atm

#

because if you have 0 players during the night and they come back after tomorrow, you may have dead connections

#

and I'm not sure at all

#

if the pool renews them

#

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

#

I'll see when its in use :D

#

oooh no

#

I'm saying shit

#

setTestOnBorrow is on true

#

it make sure the connection returned from the pool is valid

#

Okay

#

You should keep this holy gist in hand

#

it explains some of the pool configuration

#

and good practice

#

there's a section about Jedis Java Client

#

๐Ÿ˜‰

#

Aww nice

#

Thank you

#

np !

bleak current
#

Someone already have seen this?

#

I've just used sender.getDisplayName() + " ยง8ยป ยงf"

#

Thats the same thing I did when using maven to compile. Is gradle changing something there?

red tangle
#

it has something to do with encoding. it's not related to waterfall though.
Also it's advised to not use ยง in code but rather use the value provided by enum or method for color code translation

bleak current
#

Yeah sure it has nothing to do with waterfall explicitly, but I'm using it in waterfall rn :D
I tried ChatColor which worked fine for the colors. However the ยป still got this "A" before.
So I would prefer fixing the encoding if it's possible.

#

compileJava.options.encoding = 'UTF-8' fixed it for me. But yeah, you're right. I'll change this to an enum ๐Ÿ˜ƒ

red tangle
#

yeah I guess it happens because of encoding of source files

bleak current
#

Yup

bleak current
#

I'm creating a chat system now:

       // Create the finalMessage
        ComponentBuilder messageBuilder = new ComponentBuilder(new TextComponent());

        // Check if this is a global message
        if(message.startsWith("@"))
        {
            messageBuilder.append("[").color(ChatColor.DARK_GRAY).append("@").color(ChatColor.GRAY).append("]").color(ChatColor.DARK_GRAY).append(" ");
            message = message.substring(1).trim();
            recipients = ProxyServer.getInstance().getPlayers();
        }

        // Define the player component and append to text
        TextComponent   playerNameComponent      = new TextComponent(TextComponent.fromLegacyText(sender.getDisplayName()));
        BaseComponent[] playerNameHoverComponent = new ComponentBuilder("Klicke hier, um " + sender.getName() + " eine Nachricht zu schreiben!").create();
        HoverEvent      playerNameHoverEvent     = new HoverEvent(HoverEvent.Action.SHOW_TEXT, playerNameHoverComponent);
        ClickEvent      playerNameClickEvent     = new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/msg " + sender.getName() + " ");
        playerNameComponent.setHoverEvent(playerNameHoverEvent);
        playerNameComponent.setClickEvent(playerNameClickEvent);
        messageBuilder.append(playerNameComponent);

        // Append the separator
        messageBuilder.append(" ยป ").color(ChatColor.DARK_GRAY);

        // Append the message
        messageBuilder.append(new TextComponent(TextComponent.fromLegacyText(message))).color(ChatColor.WHITE);

        // Create the message
        BaseComponent[] textComponent = messageBuilder.create();

        // Send the message
        recipients.forEach(recipient -> recipient.sendMessage(textComponent));

The message looks good. However the click and hover event I've added to the players name is on the whole message.
Is this because of the ComponentBuilder? Is it possible to send a message where the events only apply to the name?

trail plume
#

iirc, append will copy over any existing formatting/events

bleak current
#

Hm is there a way to reset this events?

trail plume
#

null

bleak current
#

Tried this, but IntelliJ doesn't like this ๐Ÿ˜„

trail plume
#

You can set the hover event of later compontents to null

bleak current
lofty ridge
#

you need to cast

trail plume
#

Yea, you'll need to cast to hit the correct method

#

Or, use the Kyori text lib

#

It's like, not stupid

lofty ridge
#

:D

bleak current
#

Okay ๐Ÿ˜ƒ

#

Thank you ^^

fringe aspen
#

waits for the day it gets built in to both paper and waterfall

#

that way I donโ€™t have to do conversion magic anymore

trail plume
#

hm?

#

Bundling stuff like that into other APIs just sucks, because now other plugins are stuck to the version you bundled in, and it also means that we have issues should the library ever break ABI compat

lofty ridge
#

text 3.0.0 releasing soon with quality-of-life improvements, 1.14 component support, and moar

sly crown
#

soonโ„ข

bleak current
#

Someone has an idea how I can create this array in java?

#

I tried this but it's probably wrong:

String[] property = {"textures", "eyJ0aW1lc3RhbXAiOjE1.....", "iw1zeZuR5+ey...."};
item.setProperties(new String[][]{property});
red tangle
#

You can take a look what's required in the source

bleak current
#

try using guava multimap tbh

#

or Map<String, List<Property>>

#

where Property class has those fields

trail plume
#

line 41 in there too

bleak current
#

Found out that the code I used was correct...

#

It was the missing display name lol

bleak current
#

I ordered the players with paper using teams. For example a team name beginning with A is on top.
Now I'm using fake uuids added to the tablist on waterfall.
Someone know if I can also add this fake players to a team?

trail plume
#

Yes, you can

bleak current
#

So I just use the username I used to create that Item?

trail plume
#

I wanna say that scoreboards actually use UUIDs, but I don't remember

bleak current
trail plume
#

Oh, no, it's not

#

Identifiers for the entities added. For players, this is their username; for other entities, it is their UUID.

bleak current
#

Uhm where do you find things like that??? ๐Ÿ˜„

trail plume
bleak current
#

Ok, I'll try this, thank you again ๐Ÿ˜ƒ

#

I created a new team, set a suffix added it to the players scoreboard and tried both adding the fake entrys uuid and name. But nothing happens. No suffix, no sorting :/

young tartan
#

when will the persistence package be merged into paper?

#

@night grotto

#

org.bukkit.inventory.meta.tags is mostly depricated

#

after doing some maven magic I can't seem to access anything in the persistence package. probably because it is not included

sly crown
#
  1. this is completely the wrong channel for it
#
  1. it's specific to 1.14
night grotto
#

wrong channel, and its 1.14

#

damnit wiz beat me

young tartan
#

oh fuck

#

wrong channel

#

I saw -dev in the channel name and clicked on it without looking

#

my bad

bleak current
#

Hey, someone has an idea why this is not working?

    @EventHandler
    public void onPlayerJoin(ServerSwitchEvent event)
    {
        System.out.println("ServerSwitchEvent");
        Team test  = new Team("Test");
        test.addPlayer(event.getPlayer().getName());
        test.setColor(2);
        event.getPlayer().getScoreboard().addTeam(test);
    }
#

I can see no color in the tablist

weary grove
#

The BungeeCord (and by extension, Waterfall) scoreboard isn't hooked up to anything - the scoreboard really only exists for tracking purposes for server switches. You'd need to actually send packets directly.

bleak current
#

Ah okay. Do you know how to send the team packets?

trail plume
#

You would need to depend on some of the proxies internals to create the needed packets and access the methods to actually send them

bleak current
#

Ooff, maybe theres a better way for sorting the tablist instead of with teamnames?

#

Thats the only reason I want to use teams

bleak current
#

This is what I get when I use this code:

        net.md_5.bungee.protocol.packet.Team team = new net.md_5.bungee.protocol.packet.Team();
        team.setName("Test");
        team.setMode((byte) 0);
        team.setDisplayName(ComponentSerializer.toString(TextComponent.fromLegacyText("Test")));
        team.setFriendlyFire((byte) 1);
        team.setNameTagVisibility("always");
        team.setCollisionRule("always");
        team.setPrefix("A ");
        team.setSuffix(" B");
        team.setColor(2);
        team.setPlayers(new String[]{event.getPlayer().getName()});
        event.getPlayer().unsafe().sendPacket(team);
trail plume
#

Something send invalid json

bleak current
#

So the packet was sent but the client has some problems with it

trail plume
bleak current
#

Did this as you showed it to me ๐Ÿ˜„

weary grove
trail plume
#

Take a look at the field types

weary grove
#

Prefix and suffix must be JSON chat components.

trail plume
#

Worth noting that that is also version specific, so you'll have to deal with that fun too

weary grove
#

And if you do multi-version you need to deal with any differences.

bleak current
#

"Prefix and suffix must be JSON chat components." where have you found that?

#

I don't need multiversion at the moment

weary grove
#

Welcome to network programming.

trail plume
#

It tells you the field type used for something in the protocol docs

bleak current
#

Ah!

#

So chat means JSON

#

Thank you โค

high lily
#

If you need to handle currency in your plugin what do you use (public plugin)

vagrant marsh
#

if you want maximum compatibility

#

just use the vault API

#

it abstracts all the economy plugins

#

oh wait this is the waterfall section

high lily
#

wrong channel

vagrant marsh
#

nm idk

high lily
#

discord is small rn

stoic geyser
#

heads up there is a 1.14.1 prerelease, fixes that awful chunk loading bug

#

don't know if yall tend to worry about experimental type builds or not

ornate jasper
#
[ERROR] /home/libertyland/Waterfall/Waterfall-Proxy/protocol/src/main/java/net/md_5/bungee/protocol/packet/PluginMessage.java:[53,5] <anonymous net.md_5.bungee.protocol.packet.PluginMessage$2> is not abstract and does not override abstract method test(net.md_5.bungee.protocol.packet.PluginMessage) in java.util.function.Predicate``` ![Think](https://cdn.discordapp.com/emojis/500439077863292928.webp?size=128 "Think") 


https://github.com/SpigotMC/BungeeCord/blob/master/protocol/src/main/java/net/md_5/bungee/protocol/packet/PluginMessage.java#L53
lyric oak
#

where is that even coming from =\ i have never seed a ::test method on any DefinedPackets

real cave
#

Wrong import

ornate jasper
#

yesdog moved properties around.. i had them on a bad place... also i was building with java 7 idk why

gloomy galleon
#

Hello why i don't have any color : here

final shadow
#

๐Ÿค” Any way

#

Can I transfer UUID with waterfall?

trail plume
#

Transfer uuid?

#

You mean IP forwarding? See config.yml

final shadow
#

nope

#

transfer uuid

#

I'm going to make a queue server with waterfall and a queue server (spigot)

#

and queue players to other bungeecord sever(online)

#

i succeed with offline mode

final shadow
#

but how to transfer uuid between servers or bungees

bleak current
#

still don't understand what you mean lol

final shadow
#

bungeecord can't transfer player's uuid between servers

final shadow
#

I use that code to connect any other bungee server

#

then it showed me this

#

(Bungeecord online mode is on, and ip forward is on, spigot bungeecord is on and online mode is off)

ornate jasper
#

Its clearly not

bleak current
#

yeah lol, double check that online-mode is false in server.properties

dark perch
#

Its possible if a player is on X server inside Bungee, send it to Z server without using message Channels?

ornate jasper
#

From bukkit? Dont think so

#

Or maybe you can force them to run a command

#

but, plugin messaging is really easy

#

specially with the wiki example

dark perch
#

I mean, its easy

#

But im making Server GUI using Server Pinger and i dont wanna relly on Messaging just for sending

trail plume
#

You have to communicate to the proxy somehow, plugin messages or a messaging service like rabbit or redis are going to be your best alternatives

dark perch
#

So what happen if i send the required packets for logging to other server?

ornate jasper
#

why...

#

thats literally harder than using plugin mrssages

dark perch
#

I know is harder, but idk

slate mason
#

error is happening when the plugin calls event.getPlayer().disconnect(reason) during PostLoginEvent

weary grove
#

show your code

slate mason
#

its fixed. was java version

stoic geyser
#

heads up 1.14.1 is officially released

sly crown
#

heads up you're hours late to the party

stoic geyser
#

ill party when its ready ๐Ÿ˜‰

wary junco
#

hey! is already there a waterfall 1.14.1 version?

trail plume
#

No

#

If somebody wants to submit a PR I'll happily consider it, but I have no interest in digging down on a patch that will be removed in a day or so

wary junco
#

why will it be removed? sorry if it is a stupid question

sly crown
#

because bungee will update, and waterfall follows upstream

stoic geyser
#

can't wait for this update, man 1.14 has sucked with that stupid rendering issue

#

why would mojang even put out that turd..

wary junco
#

okay, thank you sir @sly crown

marble flint
#

Why do you use 1.14 on a production system? ๐Ÿ˜›

trail plume
#

Self hatred is my guess

random comet
#

from what i hear 1.14.1 didnt even fix a a few important things?

vagrant marsh
#

tbh they probably just wanted it out the door ASAP to fix the game-breaking stuff

#

expect 1.14.2 soon

sly crown
#

they already said that

random comet
#

just do it right the first time Jebaited

ornate bloom
#

That would be ideal, but pushing out smaller incremental updates is still better than pushing out a bunch of big updates which take longer.

#

Esp for a project like Paper which has to rely on upstream ๐Ÿ˜›

trail plume
#

Yea, smaller incremental updates allow for easier testing, e.g. you can focus more time on testing a particular mechanism vs dropping a huge set of features/fixes which only a small % will seek out or progress enough to; it also means less changes to have to merge in, which would be nice

strange warren
#

waterfall 1.14.1 when?

trail plume
#

Scroll up and read

strange warren
#

ok

#

gotcha

bleak current
#

i wonder when devs here finally get sick of those eta questions

#

or they might be already Thonk

spring bloom
#

pffft

fluid pike
#

โ€œWhen itโ€™s ready.โ€ Not a good answer tbh, but itโ€™s the right answer. Iโ€™d rather wait and have a stable release when itโ€™s ready.

stone fiber
#

@fringe aspen your PR is just an upstream merge right (havent looked)

#

and I assume its been compiled and tested once?

fringe aspen
#

yep

stone fiber
#

alright

#

will pull that at the risk of electronic yelling at me when he wakes up

fringe aspen
#

โค

spring bloom
#

not building urself

bleak current
#

๐Ÿ˜ฎ

vernal plover
#

how long will this take you

#

.eta

lean gobletBOT
#

Anyone requesting an ETA will be fed to goblins.

vernal plover
#

i need it within 2 minutes from now

#

1 minute and 50 seconds left

stone fiber
#

pulled, thanks

vernal plover
#

damn

#

you did it

#

in 2 minutes

stone fiber
#

message in #-help on build

vernal plover
#

elcontroniccat wont be happy

stone fiber
#

shh we dont need to tell him

#

he'll find out soon enough

fringe aspen
vernal plover
#

will it pass..

lofty ridge
#

@fringe aspen update your git client too, while you're at it

deft trail
#

WOOO

stone fiber
#

that used a merge commit not a rebase

#

fuck

#

hide me from electronic pls

#

wish GH remembered that globally instead of per-repo

fringe aspen
stone fiber
#

yeah it makes cleaning up so much nicer

fringe aspen
#

finally no more 1 branch forks for prs ๐Ÿ˜ƒ

stone fiber
#

no more going back months after and cleaning up forgotten and abandoned repos

pseudo glen
#

Sending the ScoreboardObjective packet causes this.

#

Tried around a bit but could not identify the issue.

bleak current
glossy wraith
#

I am not sure if this is the right place, but I would like to put in a request. A lot of people use Multicraft nd one of the biggest complaints is that Multicraft doesn't have a way to reconfigure the stop command for the buttons and also continuously issues the list command, Waterfall could distinguish itself by simply making stop an alias for end from the Waterfall console only, and perhaps also return something for the list command. Then you could say it supports Multicraft. Just a thought.

weary grove
#

You must mean Multicraft

glossy wraith
#

oh yeah,. let me fix that

weary grove
#

MultiMC is a launcher for the Minecraft client

glossy wraith
#

Yeah, I had that on the brain too.

#

It''s early yet. ๐Ÿ˜ƒ

weary grove
#

There exist plugins to make Multicraft cooperate with BungeeCord, but I don't see special Multicraft support going into Waterfall any time soon.

pseudo glen
#

Multicraft is horrible.

glossy wraith
#

It is, but it's well established, and I have a 10 server license, so I keep using it.

pseudo glen
#

Pterodactyl is much much better.

weary grove
#

just run your servers in tmux

#

problem solved

glossy wraith
#

I have some running under that as well. I tried pterodactyl, seems to be that I recall it having to run it as the root of the web server with / instead of with say /panel or something like that.

#

I suppose I could just add a subdomain and have pterodactyl be the root of that.

weary grove
#

but we're doing a really sick Minecraft setup under Kubernetes so ๐Ÿ˜‰

glossy wraith
#

nice

pseudo glen
#

The way you run Pterodactyl is ideally through a subdomain.

weary grove
#

I'm not allowed to share many details, but there's a lot of custom code that keeps things chugging nicely.

bleak current
#

heh, i went on with running servers in tmux pretty much as well :D

#

well my server launcher wraps tmux

#

tmux runs on absolutely minimal configuration

#

it's simply for backlog etc.

trail plume
#

There was some consideration to have waterfall accept stop and maybe list from the console, but that is somewhat eeeeh

ornate bloom
#

Couldn't a plugin easily do it if people really wanted? ๐Ÿ˜›

#

Guessing a simple plugin that handles /stop and does getProxy().stop().

bleak current
#

ye plugin can do that fine

#

but bungee has been around for a while, multicraft def has premade configuration for bungee already

#

so why not use that? Thonk

weary sandal
#

I just use docker-compose for all of my servers, makes it super easy

#

would probably expand into k8s if I was using multiple hosts but I'm not quite there yet

trail plume
#

What do you do about the proxy, or do you config that manually?

bleak current
#

when i was playing around with dockerizing bungee then i made a custom config adapter to load config values over http

#

hence i also made an issue about those configuration adapters

#

well, almost a year later :D

#

or is it two now? MegaThonk

modest lichen
#

Woop woop 1.14.2 ๐Ÿ˜ƒ

fringe aspen
#

managed to get one of the commits \o/

silver plover
#

uwu

dreamy minnow
#

can waterfall/bungee change a player's name?

#

during PreLogin or something?

ornate jasper
#

@dreamy minnow yes, prelogin

#

or for waterdog in the IdentityManagementEvent is also an option

bleak current
#

is it possible to dynamically add and remove servers with a waterfall plugin

trail plume
#

yup, you can modify the servers map

queen canopy
bleak current
#

cool, thanks

weary sandal
#

I use pluginmessagelistener for the javaplugin, should I also use that for the bungee plugin?

south urchin
#

Hi guys- a few of my players are having an issue with 'Encrypting' taking quite a while on connection. Any ideas as to why this is? Also, is this only me or is it widespread?

stone fiber
#

Youโ€™re in the wrong channel

#

And weโ€™re unlikely to unfix that

warm ginkgo
#

I put my message in whichchannel ?

trail plume
#

This channel is for waterfall, not paper

warm ginkgo
#

ah sorry

#

xD

#

Yes

#

^^'

bleak current
#

can ObjectOutputStream be used with the plugin messaging system

sly crown
#

you can send literally whatever bytes you want as long as the client knows how to read them

bleak current
#

cool

#

thanks

bleak current
#

No

vernal plover
#

@bleak current yes

weary grove
#

Oh no, Java serialization...

bleak current
#

yikes

#

iirc Macro/Keybind mod used java serialization

#

to get permission data from server

#

mmmmm.... tasty security hole

lyric oak
#

holy shit. does the "waterfall" name come from the Waterfall development patterns?

trail plume
#

That'd probably be a tux question

lyric oak
#

i just attributed this pattern of adding features as "waterfall" and i almost crapped myself

weary grove
#

Yep, it's a question for me. I think I got it from "bungee cord" (jumping from a high distance) and going with the water theme that's so common these parts. A waterfall, obviously, is a stream of water usually coming from a large height. That's where I got the name.

sly crown
#

tell us more about these "waterfalls"?

#

from whenceforth dost this 'water' cometh?

bleak current
#

all players together = water

#
  • fast flow of them downwards
#

waterfall

#

ez logic

sly crown
#

so what i'm hearing is we dump all the players into a blender and liquefy them

bleak current
#

ghh i wish to blend players sometimes ye

bleak current
#

okay i updated my packet construction patch

#

forgot i had some things open there

bleak current
#

waterfall is actualy when new fork geting born (drunk)

pulsar dagger
#

Guys, is the current 1.14.2 build stable enough to run as a multiplayer vanilla server?

bleak current
#

try it out yourself

pulsar dagger
#

Whoops, wrong channel sorry lol

weary sandal
#

t

#

test again,

#

test again!

#

oof discord broke

#

123

#

final test should work

#

right here

#

message

#

wzrd

#

wzrd

#

wzrd

ornate jasper
#

clap

bleak current
#

wut

civic panther
#

how do i add papermc api to my build.gradle?

trail plume
#

You mean paper's API? You'd want #paper-dev not waterfall, and info is basically on the github readme

civic panther
#

dangit, hit the wrong channel my bad

gloomy galleon
#

Hello can i post here an announce to find someone who can help me with my modified watterfall to paid ?

bleak current
#

if you pay well then you might as well dm me

bleak current
#

doesnt bungee already have a bossbar api? (@ ivans bossbar pr)

bleak current
#

well, if his pr gets accepted then waterfall can be advertised as a proxy with two bossbar apis

#

think about it @bleak current

#

more apis, more users!!

#

๐Ÿ˜…

trail plume
#

There is a plugin for it afaik, not too sure what bungee itself has but it wasn't fully fledged

bleak current
#

oh ok

steel jungle
#

I'd like to accept players when there are no online Paper servers. So they join into darkness I guess. How could I do that?

bleak current
#

uh

#

@steel jungle you maybe have luck with TyphoonLimbo

steel jungle
#

Uhm, anything with the BungeeCord API?

bleak current
#

not really simple

#

sadly

#

i've fired up a limbo server via plugin before

slim viper
#

Can anyone help me out with trying to send a player to a different server from a Paper server? I tried following the docs on Spigot with the PluginMessage stuff, but it doesn't seem to be working.

steel jungle
#

I think you can send the player a message or something.