#general

3141 messages · Page 649 of 4

heady spear
#

Took me 3 hours of angry file browsing before I realized that that’s the movement one when I needed to edit it

slim nymph
#

thats not md5's fault unless you blame him for not changing the class name lol

heady spear
#

Well mojang then

#

I’ll send them an angry letter

#

Though our postal service doesn’t work right now so they won’t get it

slim nymph
#

what the fuck

#

this code looks like its literally designed to do this

#

or wait hmm

#

or blah i dont understand this

ashen maple
slim nymph
#

cb has a "cap" on BB size, its set to 64 blocks...

wary lark
slim nymph
#

oh yikes figured out the issue

#

for chunk memory

#

its an older bug actually

static badge
#

older bug?

merry talon
#

]

drowsy acorn
upper swan
limber knotBOT
#

is the line wrapping in the chat box something done by craftbukkit or is that a client-side thing?

tiny pelican
worn pasture
#

i swear every time i check here i see aikar saying something like "oh fuck i found the issue" and a new version of paper is born

celest coyote
#

well mc does have a lot of issues

worn pasture
#

same

slim nymph
#

Robo, chat box size is client configurable, so has to be client

hard kernel
#

anyone seen 🦆?

worn pasture
#

u want some quack?

hard kernel
#

no i think that is his name

#

🦆

#

he made me a plugin

#

had a couple questions

tame pendant
#

Robo, I think that if you don't use any color codes in chat, it won't cut it off, but when you use color codes, it might

limber knotBOT
#

ooooooooooooooooooooo very good point

vestal jasper
#

@woven otter

#

@tame pendant

#

Wait I wanted to ping @hard kernel not drbot

#

Sorry

tame pendant
#

XD no worries

polar sonnet
#

Anyone have any idea which one of these is handling the TAB list

vestal jasper
#

Why

polar sonnet
#

I bought the files from a guy and am setting it up

vestal jasper
#

If it's your server you should know

#

roundnthonk this is why you setup your own server

worn pasture
#

binary search

#

PermissionsEx
Fucking burn it with fire

polar sonnet
#

ik

#

need to migrate to luck

worn pasture
#

that's a funny way to spell group manager

polar sonnet
#

...

#

lol

vestal jasper
#

Turbo I've been shilling LP lately where's my commission

worn pasture
#

i'll send you some exposure

#

best kit plugin on the planet!

vestal jasper
#

Lol

woven otter
#

Who summoned me

potent fossil
#

go away duck

woven otter
#

Ewww simple

#

@hard kernel

hard kernel
#

hi

woven otter
#

Hi

hard kernel
#

🦆

#

hi simp

woven otter
#

Yes what a simp simp is

hard kernel
potent fossil
#

excuse me

rapid rock
vestal jasper
#

Test

limber knotBOT
#

good

vestal jasper
void void
#

Turbo I over-shill luck and forced pex users to migrate it to it when I knew where's my commision too

potent fossil
#

you're not even able to send messages in #paper-github what are you talking about

vestal jasper
#

Reacts

#

I can't use external emotes in reactions in that channel

potent fossil
#

guess ur just a fukn noob then

vestal jasper
#

The setting effects messages and reacts peepoJuice

void void
#

hehe

cosmic raft
#

there you go

vestal jasper
#

Ty Kash

#

Love you kinda

cosmic raft
#

kinda

potent fossil
#

i love kash lotta

void void
vestal jasper
cosmic raft
#

would you like to re-phrase that?

vestal jasper
#

Rude

#

I love you dad

cosmic raft
#

dad

potent fossil
#

kick

cosmic raft
vestal jasper
#

Hi

#

You wouldn't

cosmic raft
#

I would if it was not so much effort to unban you after

potent fossil
#

make me mod ill unban him for you

#

then you can do it without consequences

rocky saffron
#

CentOs or Ubuntu?

potent fossil
#

Loaded or non-loaded question?

rocky saffron
#

Important

potent fossil
#

They both work equally well, it depends what you're comfortable with.

rocky saffron
#

Security

potent fossil
#

They both work equally well, it depends what you're comfortable with.

rocky saffron
#

oh

#

xd

#

thx

potent fossil
#

ok

opaque plaza
slim nymph
#

fgrep state test/debug/chunks-2020-05-21_22.49.02.txt | sort | uniq -c
2184 "state": "BORDER",
756 "state": "ENTITY_TICKING",
6688 "state": "INACCESSIBLE",
232 "state": "TICKING",

#

ill just repaste

#

"no force loaded chunks were found in overworld" when i did /forceload query

#

and some of the coords were really far from me or spawn too

#

so im suspecting fucking villages

#

as i am in the middle of a village

static badge
#

dunno how villages would do it

slim nymph
#

yeah doesnt make sense to me either and for it to also be persistent

#

ive let it sit for a while, never unloads

static badge
#

I've a tool that figure out what tickets keep the region loaded

slim nymph
#

yeah i used it for that paste above

static badge
#

it's public but broken

#

as in a tool to parse the log

slim nymph
#

oh

static badge
#

and regionify it

#

but the region logic is uh broken and only works by coincidence

#

and the tool is outdated

#

and it has no ui

#

if you can pass me the log I can look at it with the updated tool locally

celest coyote
#

gotta love it how leaf and aikar are simultaneously using 3 channels for development talk

slim nymph
#

LMAO

static badge
#

in fact the region logic is totally flawed

#

and really expensive kek

slim nymph
#

i clicked my history to jump to message

#

then just pasted in here forgetting it switched channels

#

but this is better than help anyways lol

static badge
#

also the part in paper is kinda pepegahammer in its own ways

#

really need to look at cleaning it up

slim nymph
#

i was thinking, the entity ticking ticket really should be moved into mojangs ticket sorter where THEY add player, add player ticket, and if the entity ticking distance map contains a player, also add entity ticking ticket

static badge
#

probably don't need that, as the entity ticking only gets added after 2 chunk radius are loaded

#

so it's already held back by their sorter

slim nymph
#

well the sorters kinda helps, but could be better. it lets it delay adding more when the chunk threads are already overloaded, as well as aborts adding tickets once player leaves view distance of it

static badge
#

well the entity ticking wont load chunks

slim nymph
#

it doesnt?

static badge
#

as it only adds after they're loaded

slim nymph
#

oh i know

#

i meant just move its placement so the logic for player tickets could just live in 1 location

static badge
#

tbh idk how to use their throttler

slim nymph
#

where that 33 ticket is at, just also do 31 there

static badge
#

I tried copying and pasting the exact logic used for adding 33 level tickets

slim nymph
#

IF its in the map

static badge
#

but like

#

it didn't work

#

it all went through unthrottled

#

that's why tuinity had such bad sync loads

#

all of the tickets for loading were added at once

slim nymph
#

oh wait, nvm, we cant do that

#

because it wont handle removals

#

what you have is prob best

#

its only going to handle No tick range

#

mojangs i mean

static badge
#

if we wanna avoid the ticket manager stuff could maybe look at using the distanceareamap...

#

probably way faster than whatever mojang has

slim nymph
#

i think its prob better as it is now, as it slow rolls the chunks in

#

helps from flooding queues worse than it already is

static badge
#

although I do see bad percentages on expired ticket handling

slim nymph
#

the last task to actually process the load also has a priority

static badge
#

that's technically a part of the gen status stuff

slim nymph
#

yeah it was using gens status

#

i just hard coded it to 1

static badge
#

yeah that shit should probably be 1

slim nymph
#

so soon as a chunk hits full status its urgently getting into world

static badge
#
    public static final ChunkStatus FULL = a("full", ChunkStatus.HEIGHTMAPS, 0, ChunkStatus.o, ChunkStatus.Type.LEVELCHUNK, (chunkstatus, worldserver, chunkgenerator, definedstructuremanager, lightenginethreaded, function, list, ichunkaccess) -> {
        return (CompletableFuture) function.apply(ichunkaccess);
    }, (chunkstatus, worldserver, definedstructuremanager, lightenginethreaded, function, ichunkaccess) -> {
        return (CompletableFuture) function.apply(ichunkaccess);
    });

kek this is how they pass that btw

#

a dedicated fucking parameter

potent fossil
#

what the jesus fucking christ is that

slim nymph
#

parameter?

static badge
#

function

#

it's in all of the status things

#

it's literally the "bring to full logic"

#

every status work function has that parameter

slim nymph
#

yeah but thats basically saying do nothing isnt it

static badge
#

well no other status uses it, it's just a hack so that FULL hooks into the system

slim nymph
#
        if (ichunkaccess instanceof ProtoChunk && !ichunkaccess.getChunkStatus().b(chunkstatus)) {
            ((ProtoChunk) ichunkaccess).a(chunkstatus);
        }

        return CompletableFuture.completedFuture(Either.left(ichunkaccess));
    };```

This is why
#

it defaults to that if you DONT specify it

vestal jasper
#

an immovable object vs an unstoppable force

slim nymph
#

which sets status and marks saving

static badge
#

no no no no I get that there's an override for it

#

but I find it funny that FULL needs its own special snowflake parameter

slim nymph
#

I think its liekely "Before work" and "after work" callbacks

#

and for everything before full they want to save

static badge
#

no these callbacks aren't that

#

they're work functions

#

one is the async work function

#

the other is the sync work function

opal cliff
static badge
#

but for FULL they needed to add a paramter to these functions just to pass the actual function required to bring the chunk up to full

#

no other work function has its own special snowflake thing like that

#
                        if (chunkstatus == ChunkStatus.LIGHT) {
                            completablefuture1 = this.b(playerchunk, chunkstatus);
                        } else {
                            completablefuture1 = chunkstatus.a(this.world, this.definedStructureManager, this.lightEngine, (ichunkaccess1) -> {
                                return this.c(playerchunk);
                            }, ichunkaccess);
                        }

#

return this.c(playerchunk);

slim nymph
#

oh i see

#

so its creating that lamdba that isnt used for every status before full?

static badge
#

ya

slim nymph
#

then fuck yeah we can jump all those stages pretty easy now I see, if result from .f() is full, and desired ticket level is full,
do
this.chunkDistanceManager.a(TicketType.LIGHT, chunkcoordintpair, 33 + ChunkStatus.a(ChunkStatus.FEATURES), chunkcoordintpair);

Then call this.c(chunk)

#

oh and would need to set every statusFuture too

#

the result

static badge
#

if we really wanna go go go fast we just need to eliminate the sync callbacks for most of the chunk statuses

#

you know most of them don't do anything but set status

#

although it really does mess with the big fucking future chain

#

ugh so dumb this system

#

we really do just need to rewrite this scheduling

#

that shit's for 1.16 though I ain't touching this on the last days of 1.15

#

also you got any better ideas for prioritising regionfile io on multiple threads that avoid contention?

#

so far my solution is just this

#
+        /* needs to be consistent given a set of parameters */
+        static RegionFileIOThread selectThread(final int chunkX, final int chunkZ, final RegionFileType type) {
+            final int regionX = chunkX >> 5;
+            final int regionZ = chunkZ >> 5;
+            final int typeOffset = type.ordinal();
+
+            final long value = (regionX & 0xFFFFFFFFL) + (regionZ & 0xFFFFFFFFL) + typeOffset;
+
+            return threads[(int)(threads.length % value) - 1];
+        }
slim nymph
#

and @celest coyote egarding my chunk counts:

yeah and it didnt, restart, log in center of village, immed 2.5k chunks

#

i was just thinking like 4 queues leaf and do x + z % 4 to pick a queue

#

but, im wondering if IO not being the best to parallelize in first place makes sense to have multiple IO queues, and instead try to get NBT deserialization off of IO and on chunk threads instead

static badge
#

monkaS touching regionfile

slim nymph
#

compression+nbt i mean

static badge
#

for nvme drives I think they can be used in parallel

#

and some ssds

#

although too many threads probably gonna kill latency

#

it'd be nice to move the deserial async but it has some issues with changes I have

#

async to the io thread that is

slim nymph
#

lol...

static badge
#

as I have changes to force recalculate regionfiles when stuff like coordinates mismatch / invalid data

slim nymph
#

After optimizing on the application design and making it SSD-friendly, the throughput is increased to 100,000 qps, a 4x further improvement when compared with the naive SSD adoption. The secret for this particular example is using multiple concurrent threads to perform I/O. This takes advantage of the SSD’s internal parallelism (described later), as shown in the figure below. Note that multiple I/O threads do not work well with HDDs.

#

so we need a config for it

static badge
#

ya

slim nymph
#

HDD's will die with it

static badge
#

ye they'll get fucking nuked

slim nymph
#

i wasnt aware SSD's even had parallel, good to know. i thought it was faster purely due to seekless

static badge
#

I think we can assume most people run ssds nowadays though

#

so keep the config at like 2 or 3 by dfl

slim nymph
#

that graph shows more threads didnt hit dimiishing returns fast at all

#

so maybe cpu count

#

but max 6

static badge
#

I'm a bit worried about the high thread counts in general

#

we got a lot of gen threads, a lot of deserial/conversion threads, adding more io might be a bit of an oofers

slim nymph
#

yeah but IO isnt cpu intensive

static badge
#

although I really wanna just merge deserial/conversion into gen

slim nymph
#

diff scope

static badge
#

oh right

slim nymph
#

yeah i was thinking we could do that, but then 1 conversions gonna stall fuck out of server badly in worse ways than now

static badge
#

but for nvme ssds my profiler told me half of the time was on decompression

slim nymph
#

thats why i also wanted to move that off of IO

#

moangs using 4k buffers now, ssd's have 4k pages

#

so it can read it in like a single request

#

since many chunks are 4k

static badge
#

hm alright well I am rewriting the regionfile io thread

#

so I'll try and figure out a way to get compression off of it

slim nymph
#

can you do that with it being paper ready in mind 😛

#

make it easy to pull lol

static badge
#

I only work on windows

#

vm environment is really really bad compared to windows

#

can't bench

slim nymph
#

so checkout paper on windows too?

static badge
#

paper on windows is too slow

slim nymph
#

whats diff on your fork?

static badge
#

rb times

#

I drop cleanup

#

literally gives me linux times

#

no joke

slim nymph
#

you know i pulled that patch right and cut like 70% of the time

static badge
#

70% on windows is damn slow

#

also no fast patch on paper

slim nymph
#

also there is ./paper rb noclean

#

you can jut dont clean until ready to send

static badge
#

might be better

#

but I need a fast patch

#

tuinity being emc based has a dirty patch

#

but I moved it to being patch fast

slim nymph
#

? whats different

static badge
#

not patching all spigot/cb

slim nymph
#

huh?

static badge
#

paper's patch does that

#

too slow on windows

slim nymph
#

oh yeah. i really wanna move papers for that 😦

golden gust
#

basially the dirty patch we where talking about a goood while ago, only apply the paper patches vs the whole stack

slim nymph
#

but would have to get others being ok wit hit

static badge
#

should just copy what I did

#

don't change what patch does

#

add a fast param

slim nymph
#

hmm that could work, and PAPER_DEFAULT_FAST=1 😛

static badge
#

but yeah paper scripts too slow for me on windows

golden gust
#

quick, before z comes back

#

;P

static badge
#

also I can't dev branch properly on paper

slim nymph
#

literally i dont know if any reason to not use fast outside of newbies checking out and not running up first

static badge
#

as you guys don't have GH actions

slim nymph
#

or not rebuilding up on pulls

static badge
#

so I'd need to manually build the jar and upload

#

tuinity has GH actions so it autobuilds on dev branches

slim nymph
#

well, i more meant do it in tuinity if you want, just dont go "lets put this dependent commit iinto utils patch" you sometimes do lol

#

which then cant just simply pull patch file

static badge
#

sometimes I need to do that

#

as I am rewriting the priority system I wrote

slim nymph
#

like your move stuff you put those new movement methods in there so cant easily port those

static badge
#

if anything this patch is probably...

#

gonna be on its own

slim nymph
#

i wanted to get them from ya tomorrow though

static badge
#

need to

slim nymph
#

and yeah big scope items should be their own ticket

static badge
#

because merging from master -> dev gets difficult

slim nymph
#

my working dirs just been locked for past 5 days lol

static badge
#

I threw the move stuff into master to make the merging easier

#

I also use those methods outside of the dev branch

#

some of them

slim nymph
#

btw, that sync load when async chunks is off, it didnt even occur to me what you meant was wrong with that until i relooked at it. i fixed it in this latest commit

#

about passing gen to "flag"

static badge
#

probably gonna keep it :>

#

sync loading for async is not my kind of liking

#

in general

#

I plan on nuking getAsync methods too

slim nymph
#

though ugh now we just talked about diff of loadChunk that wasnt best for using it for that now i see

static badge
#

I have other getAsync methods

#

they need to be merged into one

#

you can see one of them was one that had a gen flag

sour sierra
static badge
#

but I can't replace the one we have due to something

#

was it abi or what I don't remember

#

oh right

#

I also need to add a mojang "loaded" flag

slim nymph
#

i did help plugins using paperlib for now though, by making .getChunkAtAsync API have a slight priority boost, so it wont be behind all chunks loading for player

static badge
#

currently it has gen flag, and "bring up to ticket level" flag

#

yeah that api should do that

slim nymph
#

well we def need to use futures over callbacks

static badge
#

callbacks are fine in my mind :>

slim nymph
#

it doesnt handle exceptions, and harder to chain

static badge
#

that is correct

#

it should be BiConsumer

#

which I am going to do for the io thread

slim nymph
#

the current path i can at least say doesnt 'leak' exceptions

static badge
#

the real reason I use callbacks is because the executing thread is always defined

slim nymph
#

for OUR chain that is, dunno about within mojangs

#

only if you guarantee it lol

static badge
#

and it's easier to deal with callbacks as it prevents you from being a lazy fuck and chain chain chain

slim nymph
#

if you fire a callback in a futrues response, its still undefined

#

then javas gonna get async await in 15 years and we will still probably be here and your callbacks will suffer like eveyone on nodejs did

static badge
#

although futures are nice in that they're easier to actually tell what executro to use

#

but for callbacks I always add some completablefuture method...

#

just gotta use biconsumer to pass the exception

slim nymph
#

just use futures, the main issue with them is mojang fucking up dropping exceptions, just dont fuck up and they work great

static badge
#

too easy to forget they drop exceptions

slim nymph
#

and easy to do .join() too

static badge
#

and by using a callback

#

we don't need to deal with it catching thread death

#

well that's why I provide future API

#

except for getchunkatasync, cuz the api was the future endpoint

#

in general completablefutures are a lot more complex than those callbacks

#

and have gotchas

#

I like to keep my threading simple

slim nymph
#

actually thats a good idea, we can intercept final response and catch thread death there

#

though the future fires on main, and main is dead

#

so no worries there lol

static badge
#

yeah see gotchas

#

wanna stay far far far away from those in my internal impl

slim nymph
#

i meant in that its an ok thing

static badge
#

keep them at the api level

slim nymph
#

the goal is to ensure no code can continue running

static badge
#

should just spam stop until it dies tbh

slim nymph
#

haha thats an interesting idea

#

even if itleaks, it dies again

static badge
#

the double tap never fails

slim nymph
#

um, i tried /giphy big fucking guns. very sexual results ....

twin lagoon
#

i regret approving

static badge
#

good thing my email groups

slim nymph
#

oh man i havent even looked at my email

cosmic raft
#

lmao

slim nymph
#

14

cosmic raft
#

serves you right

twin lagoon
#

16 here

static badge
#

also do you have any grudges against using an enum priority instead of int

slim nymph
#

least gmail stacks

static badge
#

yeah I'm going that far into rewriting this

twin lagoon
#

thunderbird though

#

😩

slim nymph
#

for IO i dont see need for super high priority yeah

#

3 levels is prob fine

static badge
#

well I added more

slim nymph
#

URGENT, NORMAL, LOW

static badge
#

but the question is about enums vs raw int

slim nymph
#

i would prefer enum, you can use .id() to get numerical value

cosmic raft
#

SUPER_IMPORTANT, NORMAL, LOW_LIKE_LEAF

static badge
#

can't

#

I use COMPLETED

#

kek

#

but I added a field so it just uses that

slim nymph
#

inverse it... highest = 3, completed = 0

#

so a 0 prio has no prio

static badge
#

kek yeah should do that

slim nymph
#

i tell you my brain is warped with the priority inversion

static badge
#

fuck I fucked up so many impls thanks to that

slim nymph
#

mojang uses lower = higher too

static badge
#

I remember when I initially wrote the damn thing

slim nymph
#

but in my code I least did higher = higher, 30 - priority

static badge
#

setting to a higher priority broke the queue

#

because it had the wrong check and it refused to poll

#

in general moving a lot of stuff into the actual queue object now

#

i.e flush

#

and executeNext

slim nymph
#

what do yyou think about a chunk GC to go collect unloaded chunks that have no loaded neighbors

static badge
#

definitely a scheduling rewrite thing

slim nymph
#

looking at my chunk issue

#

no i meant just gettin them out of visible/updating maps

static badge
#

well that's probably an error somewhere

slim nymph
#

the caches

static badge
#

nah that's low mem

#

the big mem though

slim nymph
#

agreed but i have no idea how

static badge
#

is the loaded read only chunks

#

those fucking blow memory

slim nymph
#

those partially genned chunks have high memory use

static badge
#

yeah those too

slim nymph
#

thankfully i found that carving bit issue

#

mojang fixed it for 1.16

static badge
#

but it's definitely a scheduling issue

#

as we need to ensure it's not in use

#

and mojang doesn't even do that shit when unloading

slim nymph
#

but im also suspecting when we load full chunks, do we have proto chunks on all the previous futures?

static badge
#

no, we don't load neighbours for full

#

except for the 1 radius for light

#

but yeah those proto take up memory

slim nymph
#

no i meant one that is actually at full

#

in memory dumps it seem,s like a lot of futures with ProtoChunks still

static badge
#

oh

#

no there's no protochunk for the one on disk

#

unless you count protochunkextension

#

which is a read-only wrapper of Chunk

slim nymph
#

wht about frresh gen, id imagine on full, it should go overwrite all statusfutures to the latest state

static badge
#

people gave me some dumps a while ago

slim nymph
#

i dont think it does that

static badge
#

protochunkextension is the memory issue

slim nymph
#

yeah thats what ive seen

static badge
#

we needa conditionally unload those fuckers

#

but can't due to scheduling issues

#

we dunno if a gen is in progress

slim nymph
#

well, we now have record of what neighbors are dependent on us now 😛

#

we do now

#

from my work

static badge
#

not strictly

#

unless you fixed that

#

when a status is cancelled via ticket changes it just completes the future

#

so we can't use that to determine if it's not genning right now

slim nymph
#

if its cancelled its not needed?

static badge
#

could be running

#

because mojang is real intelligent and doesn't actually prevent that

slim nymph
#

well if we do it as a main thread "task"

#

it guarantees the thread pool isnt operating on that chunk.

static badge
#

yeah

#

wait

#

its neighbours might be

slim nymph
#

hmm, i guess my records are cleared when it finishes loading, not finish 'using'

static badge
#

yeah this is a scheduler rewrite issue

slim nymph
static badge
#

also adding

    public PrioritisedTask poll(final Priority minPriority, final Priority maxPriority) {
``` to the rewrite
#

should make adding an urgent thread ez pz

slim nymph
#

you know something my version had would prob be good for you to do is .cancel() on tht returned object

static badge
#

in general I'd prefer your entire old system compared to mojang's new

slim nymph
#

in my 1.13 system i held something like ka chunk holder of pending loads, and could abort them when you leave view distance

static badge
#

we could add on entity ticking etc easy

#

without the 10000 issues of this new dumb system

slim nymph
#

im worried the mailbox system makes my old one not possible

static badge
#

if we touch the scheduler

slim nymph
#

too much back to main to mutate state

static badge
#

we have to dig into mailbox

#

and that class looks like a clusterfuck

quartz peak
#

SO found out i can make a GTA server as well after looking at the FiveM site fuck me im getting too deep into the hosting server life kekwhyper

static badge
#

I really don't want to figure that system out tbh

slim nymph
static badge
#

too damn complex

slim nymph
#

see that empty method on 454

static badge
#

u cut the lines

slim nymph
#

ffs

#

ChunkMapDistance.this.k.a(ChunkTaskQueueSorter.a(() -> { // CraftBukkit - decompile error
}, i, false));

static badge
#

but yeah I see the empty callback

#

idk wtf that shit does

#

I think it kills the task

slim nymph
#

that like "clears the queue"

static badge
#

yeah

slim nymph
#

it marks the chunk as dead

#

and unregisters the mailbox

static badge
#

although when I copied the code

#

literal copy paste job on that method

#

it didn't throttle

slim nymph
#

its actually not a throttle

static badge
#

oh no

#

well that explains why copy paste failed

slim nymph
#

its a priority, it uses the priority flag based on distance to nearest player

#

j = dist to player

static badge
#

but doesn't that schedule set priority?

slim nymph
#

so 0 distance = urgent

static badge
#

ya so idk how it failed to throttle...

#

that thing there handles throttling from my testing

slim nymph
#

well it throtttles in sense of ensuring closer chunks are higher priority than farther chunks

#

when you have tons of players on

static badge
#

well throttle as in rate

slim nymph
#

the farther are behind the queue from each players nearest

static badge
#

it added in the order just fine

#

but it just did all of them at once...

#

so idk man I don't wanna touch a system like that

slim nymph
#

there might be code in those j/k params about throttle too

#

i didnt dig deep in them

static badge
#

especially if we can write something simple using the tools we already have

slim nymph
#

yeah i think best to make entire own class

static badge
#

for scheduling it's probably simple

#

we just acquire a global lock and go ham...

slim nymph
#

sorted queues based on distance and priority

#

also would love to improve send order

static badge
#

send order was great in tuinity

slim nymph
#

client bugs out so fucking bad

static badge
#

except for the fact it sent all at once

slim nymph
#

what did you do for send?

static badge
#

started from lowest radius

#

tried the closest chunks

slim nymph
#

another thing i want to try to do is if any chunk is at urgent level, "re-enqueue" any non urgent dependent chunk task when it tries to run

static badge
#

i.e the middle of the outer ring of view distance

#

then the one next to middle

slim nymph
#

to keep the threads free

static badge
#

we can probably deal with that by design if we use our own queue

#

as it'll just hook raisePriority or whatever I called it

slim nymph
#

switch to internal for sec

queen rapids
#

aww

minor badge
#

rotating_rotating_light aikar leaked channel names again rotating_rotating_light

obsidian belfry
olive marlin
#

Discord shows everyone all channels through API - just hides in the client ones you don't have access to.

short yarrow
#

do you guys create your own gitignore or use a more exhaustive gitignore from https://github.com/github/gitignore or somewhere else

olive marlin
#

I have simple git alias that downloads gitignore from gitignore.io

git aliases | grep ^ignore
ignore    !gi() { curl -sL "https://www.gitignore.io/api/${*}" >> .gitignore ;}; gi
minor badge
#
.idea/
.gradle/
build/
``` the only one youll ever need for gradle shit ![blobpray](https://cdn.discordapp.com/emojis/494901681419452426.webp?size=128 "blobpray")
olive marlin
#

What about !gradle-wrapper.jar - since you usually have *.jar ignored too.

minor badge
#

no

#

only those 3

#

if you use intellijs build or eclipse or smth, i do not care about your contributions to my repos if you somehow manage to commit their shit

quartz peak
#

There a reason why MineOS is a thing? Wouldnt it be better to just run Ubuntu?

twin lagoon
#

it would indeed be better to just use your preferred distro

quartz peak
#

I really wonder how light is ubuntu is compared to windows.

fierce wedge
#

Let's put these new chunk changes up against PlotSquared in a bit 👀

#

Appreciate the work either way aikar

short yarrow
#

maven is hard :(. I don't understand the build section at all

olive garden
#

you will get there

short yarrow
#

Alright so I managed to compile my project. Anyone know how I would include a dependency in my jar?

olive garden
#

do you just want to depend on something (eg. paper api) or actually include it in the jar (eg. PaperLib, which should be shaded)?

#

if you actually want to include it, then look for these keywords: shade plugin, shading, uber jar

short yarrow
#

actually include

olive garden
#

relocation

short yarrow
#

oh okay that's what shading does

olive garden
#

you might want to ask any further questions in #paper-dev in case someone gets triggered by this misuse of #general

short yarrow
#

well it's just a general question. I'm not working on minecraft stuff

unreal quarry
#

It's actually called shadowing. It puts a copy in your jar. Maven's plugin for shadowing is called shade. You'll want to relocate anything you shadow in case something else has shadowed a different version.

short yarrow
#

Oh okay. I'm a bit confused about the relocating part though

unreal quarry
#

Relocation just puts your copy in a different package, so differing versions don't collide

#

Let's say another plugin shadows an older (or newer) lib that you shadow, and it loaded first. When your plugin tries to use that lib it will error because of the version mismatch (methods change between versions, etc). The jvm won't load both versions, only the first one it needed

minor badge
#

just relocate in native source and compile & package that :p

short yarrow
#

is there a naming scheme for the destination package? or can it just be a random package name

unreal quarry
#

Or deps

#

Or whatever

#

;)

limber knotBOT
#

or lol.x.d

short yarrow
#

👍

limber knotBOT
#

what if someone has 2 plugins of yours that both shade the same lib but with different versions? :p

olive garden
#

hopefully the package name doesn't end at me.thevipershow

#

right? right?

limber knotBOT
#

oh Im guilty of that too, I shade it before the plugin name package as well

olive garden
#

😠

limber knotBOT
#

if you had 2 plugins on Github/spigot/whatever that both used the same libs, they would still clash

#

ah okay

#

blame the cutoff

#

sounds reasonable

golden gust
#

well, it's the obfuscators that do that cancer

limber knotBOT
#

the snowmen are still the best tho

short yarrow
#

So I'm using travis ci for the first time. Is there any specific I have to do in the .travis.yml for my project to build?

limber knotBOT
#

depends with what jdk and whatever you want to build

#

else language and jdk fields are enough

#

and 'dist' I think? not sure if that defaults

wide chasm
#

Pretty sure dist defaults. I think even just a language is good enough in some cases.

short yarrow
#

Yes it worked!

#

I feel accomplished!

limber knotBOT
#

got a project with 420, never to be updated again

#

or rather a fork updated somewhere else now

fallen oracle
#

Very nice

minor badge
#

get it to 6969 kenny

limber knotBOT
#

alright see you when I'm 69

#

ah the 420 commit was also removing lombok from the project, so that was a doubled yeet

minor badge
#

woah

#

now it compiles on modern software!

sharp sentinel
#

Ughhh I hate making Spigot bug reports

#

It's always a bad time

#

Anyone got the output of latest Spigot version's /version by chance lol?

#

Last I checked they close issues with Paper listed, and BuildTools doesn't work for me

uncut moss
#

nobody here uses spigot kekw

void void
#

mnyeah but if you work on a plugin where you kinda want to have spigot support

#

WorldEdit/Guard in his case

minor badge
#

essentials actually i believe

heady spear
#

just write "aight listen up here yer kangaroo fecker, if ye don't fix this ASAP I'll make me plugin Paper only"

sharp sentinel
#

I'm actually asking re: CraftBook 😛

#

Maybe I'll just give the commit hash lol

heady spear
#

oh wait I forgot you're also a kangaroo fucker

#

damnit

#

why is everyone Australian D:

minor badge
#

ahh i forgot making my jenkins archive the artifacts for spigot

vestal jasper
#

city you'd fuck your monitor if it had a hole in the middle of it

heady spear
#

bro I'm basically a nun

#

I'm in a committed relationship with Jesus

green turret
#

Does Paper also have that stupid-as-shit "max max health" thing Spigot does?

minor badge
#

probably yes

sharp sentinel
#

Does Spigot actually have unit tests or something

#

I never thought about that

#

But with the amount they break, I'd be shocked if they did

minor badge
#

dunno if i understand exactly what u want tho

green turret
#
//@Test
#

That's how the unit tests are made.

minor badge
#

they've got tests for like the most useless of things

sharp sentinel
#

Ah, yes. The "Yeah we have tests" kind of tests. The ones that just check the metric of having tests

green turret
#

Ahahah

potent fossil
#

umbrella academy very interesting...

vernal moth
#

there are some unit tests

#

like to check that bukkit and server interfaces are mirrors

#

or like my amazing unit test for the mob goal api 😄

#

that checks that all vanilla goals are in the api

sharp sentinel
#

See now that sounds like a useful unit test

olive marlin
#

We have tests. They just are not implemented.

void void
#

in other words

potent fossil
#

You've heard of TDD? Now get ready for P2GDD. Pray 2 God Driven Development.

void void
#

they don't have tests

#

lol

fallen oracle
#

What

sharp sentinel
#

What

vestal jasper
#

What

short yarrow
#

well I'm extremely upset. I lost one of my airpods

sharp sentinel
#

On the bright side you can now experience mono-channel music in the way it was intended to be heard

void void
#

i think the best kind of wireless is the one where theres still a wire between the 2 earbuds

merry talon
#

if you move the one back in forth into each ear 24 times a second you cant perceive any difference

limber knotBOT
#

just link the pods with a cable so you won't lose them again!

void void
#

just by cheap stuff so that it won't matter!

minor badge
#

kennytv more like stinkytb

limber knotBOT
#

tb

#

proximyst more like stinkymyst

void void
#

children

limber knotBOT
#

what the frick

#

nirvana more like dum dum

void void
#

what prox?

#

stinkymyst l u l

fallen oracle
#

Damn

#

Gottem

gleaming rivet
#

Who do you guys use for graphical work like banners icon and such?

woven otter
#

Kenny more like upside down guy

void void
#

ourselves, a friend or i dunno, fiver maybe

gleaming rivet
#

I don't trust fiver that much

void void
#

then yourself or a friend

#

or just don't have graphical work

gleaming rivet
#

What a solution

limber knotBOT
#

still upsidedownist I see >:(

gleaming rivet
#

Nirvana more like closetbully >:c

void void
#

crap thats creepy

#

what bullying?

limber knotBOT
#

that's the wrong upsidedown

latent valve
#

there kenny

fallen oracle
#

Oh

magic ice
lusty umbra
#

I need help updating my java mc map to windows 10

tight dagger
limber knotBOT
#

updating

scarlet vale
lusty umbra
#

can any one help

limber knotBOT
#

did you try googling?

potent fossil
#

that wouldn't be upgrading, it would be just converting the map.

#

this is paper help, not general mc support

lusty umbra
#

yes

limber knotBOT
#

even nvidia has a conversion guide, just know how to use google lol

potent fossil
#

.g minecraft java world to bedrock

limber knotBOT
#

(DiscordBot) https://www.nvidia.com/en-us/geforce/guides/minecraft-rtx-world-conversion-guide/ -- Minecraft World Conversion Guide, For Bedrock and Minecraft...: "Apr 16, 2020 ... Follow our unofficial Minecraft with RTX guide to convert your Minecraft Java worlds to Minecraft Windows 10 Bedrock edition,..."

potent fossil
limber knotBOT
#

wasn't that hard was it haha

lusty umbra
#

i got banned from there when i asked that

limber knotBOT
#

you were banned from google?

potent fossil
lusty umbra
#

no minecraft discord

potent fossil
#

i highly doubt the official MC discord banned you for asking

#

theres more context you're conveniently leaving out

lusty umbra
#

yep

#

i talked about what i wanted to convert

limber knotBOT
#

legitimately can't tell if too young, foreign, or retarded

lusty umbra
#

retarded

limber knotBOT
#

case closed

#

thanks for clarifying

#

😂

fallen oracle
#

Does anyone actually watch The Great British Baking show or do you turn it on in the background to fall asleep to

void void
#

I used to, cos there was nothing else on

vital arrow
#

@fallen oracle that is my life right now

austere ivy
#

Britain's Smallest Pies?

lusty umbra
#

if i give you the map will you convert it from java to windows 10

twin lagoon
#

no

void void
#

(DiscordBot) https://www.nvidia.com/en-us/geforce/guides/minecraft-rtx-world-conversion-guide/ -- Minecraft World Conversion Guide, For Bedrock and Minecraft...: "Apr 16, 2020 ... Follow our unofficial Minecraft with RTX guide to convert your Minecraft Java worlds to Minecraft Windows 10 Bedrock edition,..."

limber knotBOT
#

you were fed a tutorial

#

now go and read it

lusty umbra
#

its to hard\

twin lagoon
#

not really

#

just follow the tutorial

#

it's fairly clear

#

there's probably a youtube video

lusty umbra
#

i need a video expaining how to do it

vernal moth
#

I'll convert your java world to bedrock for 1 0 bucks

twin lagoon
#

mini KEKWHYPER

vernal moth
#

For you it's 15 Michael!

granite salmon
#

ill do it for 9.99

twin lagoon
#

i'll fucking do it for 5

pulsar wigeon
#

.-.

golden gust
#

Man's gotta refill his crates

granite salmon
#

4.99

void void
#

4.98

pulsar wigeon
#

smh my head

granite salmon
#

4.98 = low quality

vernal moth
#

I would just use chunker because am lazy like that

void void
#

i'll take 1

#

(bitcoin)

lusty umbra
#

ok

twin lagoon
#

those are the perks mini

#

that is living the dream

#

i should probably sign up for it too

vernal moth
#

Exactly 😂

lusty umbra
#

i'll pay $5

limber knotBOT
#

waddafuq

void void
#

i'll take 5 bitcoin

limber knotBOT
#

just go and read the article, or any other thing you find on google

twin lagoon
#

^

void void
#

^^

vernal moth
#

--->

limber knotBOT
#

just go and read the article, or any other thing you find on google

void void
#

W

limber knotBOT
#

now you still pointed to the message, mini, hah!

vernal moth
#

No I didn't

peak dirge
#

Okay, now to convert this in-memory world crud to direct buffers

worn pasture
#

@pulsar wigeon

#

/r/oopsdidntmeanto

pulsar wigeon
#

...

#

are you fucking kidding me

worn pasture
void void
#

kicked?

pulsar wigeon
#

k banned i guess

void void
#

wait so can we ping wiz in case of moderation needed and everyone else is dead?

latent valve
#

do it then finger cross and prey kekw

void void
#

good stef 👍

viral hornet
#

Wiz

#

Did you actually ban him lmao

gleaming rivet
#

Why don't they give him a role and disable ping for that role?

twin lagoon
#

that's

#

not how it works

fierce wedge
#

ofc wiz actually banned him

#

why wiz doesn't just turn off pings is beyond me

twin lagoon
#

you can't

fierce wedge
#

you can

twin lagoon
#

no

limber knotBOT
#

you can't

twin lagoon
#

you can't turn off pings for yourself

golden gust
#

you can't

twin lagoon
#

only for roles

fierce wedge
#

you can turn off pings for yourself

twin lagoon
#

no

austere ivy
#

is plugin.yml re-read on reload?

fierce wedge
#

in notification settings

golden gust
#

tell us how

twin lagoon
golden gust
#

That doesn't stop the ping

pulsar wigeon
#

we've been over this shit a million times

void void
#

notifications is something different

fierce wedge
#

you don't get a noise

pulsar wigeon
#

please stop being retarded thanks

twin lagoon
#

you're still being pinged though

#

lol

fierce wedge
#

if a little red button annoys you then it's a separate issue

void void
#

^^

golden gust
#

The noise is only part of it

pulsar wigeon
austere ivy
#

wrong channel whoops

golden gust
#

The annoying unread thing and the fact that it still highlights text is annoying af

fierce wedge
#

that seems to be a you problem

void void
#

agreed

twin lagoon
#

it's pretty annoying actually

fierce wedge
#

noise and some highlight are very difference

austere ivy
#

isn't turbotailz the luckperms web developer?

twin lagoon
#

yes

void void
#

its very annoying

twin lagoon
#

if you have lots of people pinging you

#

for no reason

limber knotBOT
#

that's not a "you" problem

twin lagoon
#

it does get pretty annoying

limber knotBOT
#

that's a problem, period

void void
#

same with how discord blocking is shit

golden gust
#

at least for me, the coloring of the highlights makes it harder to read

fierce wedge
#

I mean if wiz didn't get so annoyed by people doing it... people wouldn't do it

pulsar wigeon
#

dor, it's about to be a you problem if you want to argue about it

fierce wedge
#

devil's advocate

golden gust
#

Which, you know...

limber knotBOT
#

you seem to be the only one not thinking that dordsor

pulsar wigeon
#

no, being an asshole for the sake of being an asshole isn't welcome behavior

twin lagoon
#

there's various opinions on how wizjany handles annoying fuckers that ping him

#

but in the end

#

pinging him knowingly for no reason just to bother him is just retarded

fierce wedge
#

I mean is it childish? Sure. Does it mean you need to get that annoyed be it? Absolutely not.

twin lagoon
#

the guy is literally pinging for no reason

#

in two servers

#

just to bother wizjany

void void
#

don't think dord knows who wiz is

limber knotBOT
#

you clearly aren't getting pinged enough =^]

graceful jasper
fierce wedge
#

I know exactly who wiz is

pulsar wigeon
#

alright seriously this isn't up for debate

viral hornet
#

A moderator

#

you never ping

pulsar wigeon
#

dunno why we're arguing about this

vernal moth
#

its just a meme

void void
#

unless moderation is needed

vernal moth
#

dont ping the wiz!

viral hornet
#

😂

fierce wedge
#

It's poking the bear isn't it. People poke him cos it annoys him and they find it funny.

void void
#

thats why they get banned

pulsar wigeon
#

seriously, stop

#

last warning

fierce wedge
#

Bruh, it's #general and I'm not causing any issues

twin lagoon
#

goodbye

viral hornet
gleaming rivet
limber knotBOT
#

I don't like you then

void void
#

why? tab completions really useful

#

helps idiots

limber knotBOT
#

and non idiots alike

pulsar wigeon
#

lmao he kicked me from IS

viral hornet
#

Did dordsor21 just get yeeted as well? :cold_swet

limber knotBOT
#

lol

twin lagoon
#

tf is IS

gleaming rivet
#

That fawe thing

void void
#

international space obv

limber knotBOT
#

that fawe p2 thing

twin lagoon
#

wiz confirmed terrorist

fierce wedge
viral hornet
#

Wb

red imp
fierce wedge
#

I banned you from IS cos I'm tired of you wiz

twin lagoon
#

boo hoo

fierce wedge
#

You've never offered anything useful there anyway

twin lagoon
#

😢

latent valve
void void
#

oh he was only kicked 😢

viral hornet
#

Michael r u ok

twin lagoon
#

amazing actually @viral hornet thank you

viral hornet
#

Oh

#

You were crying so i though

#

maybe

twin lagoon
#

i am watching cowchop

viral hornet
#

you weren't

twin lagoon
#

eating peanuts

limber knotBOT
#

wat no you don't, viper

twin lagoon
#

watching paper drama

pulsar wigeon
#

1.8-1.12 support completions too

viral hornet
#

Paper drama is always exciting

limber knotBOT
#

just don't use brigadier?

void void
#

1.12 has tab completition does it not

pulsar wigeon
#

it's just an ugly list in chat

#

instead of the nice new ui

#

yea i mean, don't activate features on unsupported platforms

#

ezpz

limber knotBOT
#

imagine removing features because of outdated versions :aaa:

#

just give commands their proper perms

gleaming rivet
#

Please tie completions to the permission for the love of god

golden gust
#

vanilla isn't really designed around sub permissions

minor badge
#

step 1, use acf
step 2, it handles it for you so profit

austere ivy
#

if you're going to be doing anything other than a couple non-nested commands, or maybe one or two one-level nested commands, go ahead and use Bukkit's system or whatever

#

but I'm telling you now, you will go insane if you try to deal with Bukkit's outdated insanity

#

that seems nice too

#

no idea how to use it

#

wanna know a secret?

#

they don't

#

what's actually happening behind the scenes, is every time the plugin checks permissions, it zooms it over to Lucko's computer and he checks your permission settings and the permission needed

jade mountain
#

I can confirm this is true

waxen panther
peak dirge
wraith grail
vernal moth
#

any body here using fabric?

#

how can I run a fabric client from IJ with debugging that actually hot swapps?

#

if I launch via gradle it doesnt seems to hotswap

#

now it did

#

strange

pulsar wigeon
#

they come with a run config

#

i forget the task name but it gens a client and server config

vernal moth
#

runClient

pulsar wigeon
#

yea i guess

main rapids
#

I've never seen the map from that side, the number of villages on the map is impressive

void void
#

villages are really common if you explore a lot

#

same with dungeons, lots of them

main rapids
#

cool, I didn't know that
i'm not used to playing with a worldmap or having a dynmap

limber knotBOT
#

try AMIDST ;)

main rapids
#

I used mineAtlas but it didn't appear that much 😂

void void
#

huh, i've never played with a world map or dynmap

#

then again i can count servers i play on one 1 finger

twin lagoon
#

in general the amount of villages in a snowy biome like that

#

is insane

#

i've come across so many of them when i was playing on an smp a few months ago

void void
#

dungeons are way too common tbh

twin lagoon
#

i've come across 3 dungeons in the last 6 years maybe

void void
#

always at least 1 or 2 in your area

twin lagoon
#

i'd have to disagree with you personally

#

lmao

void void
#

ah cos vanilla

#

see i have tracers on for base hunting

twin lagoon
#

ok but that's literally cheating

void void
#

it's allowed where i play on, anarchy

twin lagoon
#

well yeah but obviously you're going to find a lot of dungeons with hacks on

#

lmao

void void
#

true

gleaming rivet
#

i find alot of dungeons in spectator jgrHA

uncut moss
#

i find a lot of dungeons with xray

void void
#

uses xray

queen bluff
uncut moss
#

yeah why wouldn't i

twin lagoon
#

307 is good barty

void void
#

poor dynmap

ruby stratus
#

le'ts move ehre

void void
#

?

ruby stratus
peak dirge
#

Big Linux conversation in #paper-help moving here as it's the offtopic channel

ruby stratus
#

Is dynmap chunk loading still broken ?

#

does anyone know ?

twin lagoon
#

arch is epic

#

gnome is epic

limber knotBOT
#

using dynmap lmao

twin lagoon
#

rest bad

peak dirge
#

But yeah, I'm 90% Linux-only now. Not in school now, so make that 100% Linux usage.

twin lagoon
#

i have an issue with arch right now actually

#

keyboard doesn't respond after x minutes

ruby stratus
#

@wheat quarry any recommendation ?

#

Don't say overviewer.

limber knotBOT
#

Overviewer

ruby stratus
#

I specifically asked you not to.

limber knotBOT
#

idc

#

only way to have a map without crippling your server performance xD

ruby stratus
#

neither do I

#

Well, no

twin lagoon
#

dynmap doesn't hurt performance that much

ruby stratus
#

you can have dynmap without the dynamic map aspect

limber knotBOT
#

that much thonk

#

ok so how do I render dynmap on a different machine than my Minecraft server is on? thonk

twin lagoon
#

you don't

scarlet knoll
limber knotBOT
#

see

twin lagoon
#

well actually

ruby stratus
#

Only thing I really care about is

  • Map that's kinda recent (a week old is completely fine)
  • Player position
  • Warps / homes
twin lagoon
#

you can

ruby stratus
#

I could do that in overviewer but no htanks

limber knotBOT
#

then just render overviewer once a week ¯_(ツ)_/¯

ruby stratus
#

ok so how do I render dynmap on a different machine than my Minecraft server is on? thonk
@mystic peak616#0000
Easy...

limber knotBOT
#

I do it once at night because more is just not worth it

#

also can you render multiple different server to the same website with dynmap?

twin lagoon
#

if you do it properly

#

yes

ruby stratus
#

well yeah

#

no

twin lagoon
#

no iframes are scuffed

ruby stratus
#

hell no

twin lagoon
limber knotBOT
#

wat

ruby stratus
#

Just put it in the same database

#

literally

limber knotBOT
#

wait, it uses a database for file storage? Oo

twin lagoon
#

it can yeah

ruby stratus
#

if you want, yeah

#

IF YOU WANT

limber knotBOT
#

I hope it's mongo or redis, lol

twin lagoon
#

wat

#

it's mysql actually

limber knotBOT
#

wtf

twin lagoon
#

also why the fuck would it use redis

limber knotBOT
#

why would you use mysql for thast

#

*that

twin lagoon
#

that is a great question

#

but it works

limber knotBOT
#

redis is a key->value storage which can be used for file storage and retrievel

#

and it's way easier to cluster than mysql...

#

storing files in mysql is just pepega

#

don't, use a proper email client

#

runs

ruby stratus
#

lmao

#

you know you can sync it to any client right ?

#

Also @wheat quarry what the fuck are tons of people bitching about not having redis support all of a sudden ?

#

It's not like you'll need 50 million simultaneous accesses on your minecraft server for a dynmap resource