#general

3141 messages · Page 76 of 4

merry talon
#

just don't give out version specific installers

cosmic raft
#

The point of the msi's is that they are the full version

#

so Chrome can be installed while offline, etc

#

and sometimes you need an older version

#

compat breaks, etc

merry talon
#

oh yeah msis are supposed to be portable

#

that kinda seems like XY problem to me, but ¯_(ツ)_/¯

golden gust
#

Pretty sure that some places also disable the auto update and install the msi's on their clients automatically

cosmic raft
#

yes

merry talon
#

yeah that makes sense

#

like Ninite pro

cosmic raft
#

and only push updates when they've confirmed internal applications are compatible with new versions of the browser

cosmic raft
#

What should I get for food tonight

#

McDonald's maybe

#

Ever had poutine from McDonald's @merry talon?

merry talon
#

yeah

#

it's nothing special

#

and expensive

cosmic raft
#

Is it good?

merry talon
#

its not bad

cosmic raft
#

What do you get from McDonald's?

merry talon
#

but far from the best I've had

#

mcdonalds isn't my preference but usually a mcchicken

#

or a breakfast wrap

#

and fries of course

cosmic raft
#

McChicken is more expensive than the poutine though

#

lol

merry talon
#

You don't get very much though

cosmic raft
#

P $4.39, M $5.89

merry talon
#

the ratio is usually a lot more from other places

cosmic raft
#

fair

merry talon
#

dairy queen poutine is really good surprisingly

cosmic raft
#

They don't deliver, McDonald's does

#

:P

merry talon
#

good point I haven't seen them on any of the apps either

cosmic raft
#

Currently

merry talon
#

which app is that?

cosmic raft
#

SkipTheDishes

merry talon
#

ah that one I haven't tried because they seem to treat their drivers the worst and their ads are fucking annoying

#

and uber is just a horrible hostile company so DoorDash is my go to

cosmic raft
#

They're the only ones in my area who deliver

merry talon
#

oh

cosmic raft
#

Uber and DD aren't around here

#

Is the Junior Chicken any good?

merry talon
#

yeah it's about the same thing

#

just get 2 of em

cosmic raft
#

As a McChicken?

merry talon
#

pretty much iirc

cosmic raft
#

Any difference that you could tell?

merry talon
#

I think the bun is slightly different

#

and they're smaller

cosmic raft
#

Hmm

merry talon
#

they might also be more cost effective

#

if they're on the dollar menu or whatever

cosmic raft
#

There

#

I think I'll get that

merry talon
#

👍

#

what if you turned it into a meal

#

how does that affect the cost

cosmic raft
#

I don't think I can

merry talon
#

oh

cosmic raft
#

meh

merry talon
#

just watching Tay delete and repost the same tweet over and over again like 5 times now

#

why can we still not edit tweets

#

the infosec tay btw

young axle
round granite
void void
upper flicker
#

mcmmo discord must have dropped a link

round granite
#

Yeah

#

That was for me

stiff yarrow
#

mcmmo refugees PogU

round granite
#

I was curious if anyone might know of a Waterfall/Travertine-like server for 1.6

#

nossr figured this would be a better place to ask

upper flicker
#

if you dont need it to support modern protocols I'd suggest just going and using an old version of bungee

#

if you do it gets a lot more complicated

#

Im not aware of any proxies that support that far back as well as modern

round granite
#

Ok ty

limber knotBOT
#

bungee would be the only proxy I know of that would work however you would need to find an old enough version that supported it

#

like one of the beginning versions if they still exist

pulsar wigeon
#

that's more than 10 minutes!

upper flicker
#

so everyone should ping wiz in mcmmo because he cant respond

pulsar wigeon
#

i'll kick you from enginehub :^)

#

that about the best threat i can come up with for you

upper flicker
#

:c

stiff yarrow
#

if you booly in my discord you'll get banned wiz

#

its a booly free zone

static badge
#

sadly not retard free

stiff yarrow
#

didn't see spotted in there last time I checked

static badge
#

talkin bout u

stiff yarrow
#

don't make me spank you aPPepeYeeHaw

static badge
#

keep ur weird fetishes out of here u filthy weeb

stiff yarrow
merry talon
limber knotBOT
#

(DiscordBot) ✓@robaeprice (Rob Price): SCOOP: Facebook harvested 1.5 million people’s email contacts without their consent. It says it “unintentionally up… https://t.co/cdtT7035x1 (2 hours and 54 minutes ago)

static badge
#

why would you give your email to facebook

#

email password *

merry talon
#

no clue why them even asking for that would even be acceptable

stiff yarrow
#

hi its me your brother

#

give email password

merry talon
#

@cosmic raft how was the food

limber knotBOT
#

Meh

#

Wasn't too warm this time

void void
#

at some point they had an option to give your email password, because clicking email links is too hard

#

can facebook just be over already

limber knotBOT
#

I modded the 0.30 classic version from the client (which usually doesn't support multiplayer). Now I managed to setup the server and join it https://imgur.com/a/9X7Hezf

merry talon
#

lol

#

now can other people join though

pulsar wigeon
#

i still have the files for a classic spleef server lying around

limber knotBOT
#

Nice :D

#

If someone is interested in the modded client jar to join such a server, I can upload the files somewhere

#

But I guess nobody cares :D

austere ivy
#

Hi folks.

#

How's 1.14's server performance supposed to be in comparison to 1.13?

#

My server's still on 1.12(.2) and some people were wishing they had the new trapdoors and blocks and stuff on 1.13(.2) but everyone, including Aikar, me after testing a server on it, has an agreed consensus that 1.13's server performance is awful in comparison to 1.12, but we'd still like the new blocks.

worldly radish
austere ivy
#

With 1.14 coming around the corner, I was just wondering if anyone knows if that had some server-side optimizations (or something) that made it not as bad as 1.13.

#

Thanks.

pulsar wigeon
#

maybe replacing the event bus will speed things up

#

you could try writing a custom one that allows fast dynamic registration of handlers

#

:^)

static badge
#

sounds pretty easy :>

tardy lynx
#

delete the server, then you have no performance issues

stiff yarrow
#

@austere ivy

My server's still on 1.12(.2) and some people were wishing they had the new trapdoors and blocks and stuff on 1.13(.2) but everyone, including Aikar, me after testing a server on it, has an agreed consensus that 1.13's server performance is awful in comparison to 1.12, but we'd still like the new blocks.

Then just upgrade your server to 1.13 you dingus

static badge
#

it's awful enough that we're going to drop 1.13 support after 1.14 has stabilized

#

while keeping 1.12 :>

#

least that's what 2 said

woeful arch
#

Qq?

void void
#

wat sap boiz

vestal jasper
#

tacos

void void
#

ur retarded

vestal jasper
#

thanks dad

void void
#

ur welcome my only son

stiff yarrow
#

so is Java not free anymore someone give me the TLDR

void void
#

oracle licensing

#

they want contracts n shit for enterprise grade support

#

if you use openjdk, life continues to be beautiful like before

stiff yarrow
#

yeah but is openjdk secretly shit

#

anyone know

limber knotBOT
#

no

#

as of Java 11 it matches oracles

stiff yarrow
#

what about openjdk 8

limber knotBOT
#

it hasnt been significantly behind since java 6

#

8 is missing some EE shit no one uses

#

most people have been running servers off of openjdk for years, some without even knowing it

#

everything i run daily or not so often runs fine on openjdk 8

#

intellij, gradle, maven, minencraft, runelite, ant etc.

stiff yarrow
#

is the JRE performance good with openjdk?

limber knotBOT
#

yes

#

you understand openjdk is the reference implementation right

#

its the one they work on before oracle ever gets near it

left yacht
#

We've used the openjdk for quite a few years.

#

haven't noticed any performance degradation between it and the Oracle one.

#

because linux generally likes to install openjdk anyway.

stiff yarrow
#

you understand openjdk is the reference implementation right ngl I don't know what that means guess I'll google it

limber knotBOT
#

basically one and "the correct" JVM implementation

upper flicker
#

In the software development process, a reference implementation (or, less frequently, sample implementation or model implementation) is the standard from which all other implementations and corresponding customizations are derived

limber knotBOT
#

openjdk is written against the java/jvm spec by oracle (?) guys

stiff yarrow
#

so is oracles JDK not a reference implementation?

upper flicker
#

oracle's JDK has historically been built on top of the openjdk

#

they've been diddling with it less and less

#

and now that they've made all these licensing changes they're really pushing people to get off of oracle if you dont have a license

stiff yarrow
#

why do they change it? what's the point of maintaining 2 of them Thonk

upper flicker
#

enterprise support

limber knotBOT
#

& EE libraries

upper flicker
#

java EE is dead

#

its its own separate project

#

they handed it off to eclipse foundation or whoever

limber knotBOT
#

i see

#

so only support then

stiff yarrow
#

what even qualifies as enterprise support

#

like how do you sell that to a company

upper flicker
#

support is what enterprises pay for

limber knotBOT
#

commercial support....

#

idk what examples are

#

never seen java commercial support in action lol

upper flicker
#

priority support from real people, not waiting for an open source maintainer to have time

#

fixing things after public expiration dates

stiff yarrow
#

I guess I'm wondering what commercial support actually means

upper flicker
#

it means if you have a problem oracle puts an engineer with you to solve it

#

rather than googling shit

stiff yarrow
#

like they just help fix your bad code?

upper flicker
#

sometimes but not really

#

at this level oracle is holding some noob's hand

#

isnt*

stiff yarrow
#

so they fix some complicated shit then

upper flicker
#

when youre making millions per day off of some software project, having an issue is bad

#

you will pay out the nose to not have problems

#

and to get those problems resolved quickly if they come up

#

rather than "just google it, idk make a PR, known bug deal with it or upgrade"

stiff yarrow
limber knotBOT
#

(DiscordBot) You're dereferencing a null pointer! - length 10s - 7,823 likes, 43 dislikes (99.5%) - 853,340 views - gigagigagilgamesh on 2015.09.15

upper flicker
#

oracle still supports java 6

#

as long as you pay them theyll do whatever

limber knotBOT
#

^ commercial support woooo

upper flicker
#

Java 8 just went out of public support for example

stiff yarrow
#

is there some legit reason to ever be stuck on java 1.6

upper flicker
#

legacy software

#

libraries

#

it just works

#

if youre making cash hand over fist on 10 year old software you arent going to upgrade just for funsies

limber knotBOT
#

some mc modpacks won't launch on java 8 🤔

#

but they do on java 7

stiff yarrow
#

well MC used to be java 7

#

probably some lib they use

limber knotBOT
#

mc was compiled with java 6 for years iirc?

stiff yarrow
#

oh was it 6?

limber knotBOT
#

hence mojang's stripped down fastutil existed

upper flicker
#

RedHat is actually going to keep supporting Java 8 for some years with fixes and backports for free on OpenJDK

#

as they've taken over maitainership

limber knotBOT
#

since some version they bundle full blown fastutil lul

upper flicker
#

so you know, good time to switch anyway

stiff yarrow
#

so why does oracle charging people for commercial support mean we need to use openjdk

upper flicker
#

because if you dont have a license with oracle you cant use their software

#

I mean you can

#

in MC everyone's tiny, youd probably get away with it

stiff yarrow
upper flicker
#

you do that at work and youll get sued

stiff yarrow
#

quickly installs openjdk

limber knotBOT
#

some companies already got sued iirc

#

.g oracle sues companies

#

(mikroskeem) https://law.stackexchange.com/questions/9360/oracle-vs-google-can-oracle-sue-any-company-who-is-using-java-and-making-profit -- licensing - Oracle vs Google: Can Oracle sue any company...: "Simple use of Oracle's Java SDK is not what they are suing over. ... So can Oracle sue any company which is using Java and making profit?"

upper flicker
#

thats because oracle is all about short term profit

limber knotBOT
#

well uh

upper flicker
#

java aside oracle is a scummy company

#

ran by lawyers

stiff yarrow
#

Usage of java is allowed. Re-implementing java based on the api docs isn't (according to Oracle). – ratchet freak May 20 '16 at 10:56 what does this mean

upper flicker
#

be fine with them blowing up so long as all the JVM engineers moved to redhat or somewhere

stiff yarrow
upper flicker
#

that sounds like its related to the google trial

#

so its not directly related to this

#

and a lot of that was google engineers straight up whole sale copying code

#

not relevant

stiff yarrow
#

you would think google would be above that

upper flicker
#

google bought some project that had already done it or something

stiff yarrow
#

ooh

upper flicker
#

and then they claimed there were only so many ways to write it

#

and its unclear how far or how long they kept doing it

#

google tried to make a good faith reimplementation from docs argument

#

which is generally considered fair use

stiff yarrow
#

yeah tbh I wouldn't know copied code if I saw it, I don't look at Java library implementations

upper flicker
#

but then all of this about someone stole blah blah

#

its all muddy and I think they lost

stiff yarrow
#

software patents are cancer tho, even though this is about code not necessarily patents

upper flicker
#

pretty much

cosmic raft
limber knotBOT
#

(DiscordBot) Miranda Cosgrove - Leave It All To Me (Theme from iCarly) (Video) ft. Drake Bell - length 2m 47s - 299,108 likes, 9,183 dislikes (97.0%) - 15,668,702 views - mirandacosgroveVEVO on 2010.09.28

stiff yarrow
#

I'd post the filthy frank icarly song but it'd put this discord server on a list

limber knotBOT
#

lol

native thunder
#

This is the case the Google is trying to bring to the Supreme Court no?

#

They got ruled against in the lower courts iirc

stiff yarrow
#

I'm sure judges on the supreme court will be well versed in technology and make the right decision Kappa

upper flicker
#

there was a judge who read up, learned how all this worked, and ruled for google

cosmic raft
#

yeah

#

if it's vaccum tubes

upper flicker
#

and then an appeals court said "lolnope" and handed it to oracle

cosmic raft
#

really?

vestal jasper
#

someone say vacuum tubes? kreygasm

#

vaccum?

#

how the fuck is it spelled

cosmic raft
#

.g vacuum

limber knotBOT
#

(DiscordBot) https://en.wikipedia.org/wiki/Vacuum -- Vacuum - Wikipedia: "Vacuum is space devoid of matter. The word stems from the Latin adjective vacuus for "vacant" or "void". An approximation to such vacuum is a region..."

Vacuum is space devoid of matter. The word stems from the Latin adjective vacuus for "vacant" or "void". An approximation to such vacuum is a region with a gaseous pressure much less than atmospheric pressure. Physicists often discuss ideal test results that would occur in ...

upper flicker
crimson lodge
#

That sucks

vestal jasper
#

Yeah it's vacuum

#

that has to be one of the least English-y spelled words

#

at least the uum part

#

I saw that pixel

crimson lodge
#

😂

limber knotBOT
#

jesus, that emoji

#

ty lol

#

there you go @crimson lodge

static badge
#

lol was it over rangeCheck

vestal jasper
#

@stiff yarrow half of the emojis in my "most used" are now pepes

#

thank you

stiff yarrow
#

I have shown you da wae brudda

#
private static void rangeCheck(int arrayLen, int fromIndex, int toIndex {
     if (fromIndex > toIndex)
          throw new IllegalArgumentException("fromIndex(" + fromIndex +
               ") > toIndex(" + toIndex+")");
     if (fromIndex < 0) 
          throw new ArrayIndexOutOfBoundsException(fromIndex);
     if (toIndex > arrayLen) 
          throw new ArrayIndexOutOfBoundsException(toIndex);
}``` wow this is definitely totally unique code that only experts could write, anyone else would have to copy it to make their product ship faster
native thunder
#

They're missing that legendary 10x

olive garden
#

What is this mc-dev plugin? Why does it only detect event handlers which are public?

limber knotBOT
#

why are you making event handlers private?

#

there's no need to

upper flicker
#

because thats all its programmed to do presumably?

limber knotBOT
#

public event handlers are about 2x faster than private

static badge
#

about 2x faster

olive garden
#

in that case there was no need to, but I won't have a public method flying around in a class which does have real public methods

stiff yarrow
#

wut

limber knotBOT
#

gotta grab those nanoseconds!

stiff yarrow
#

public event handlers are about 2x faster than private ?

olive garden
#

bytecode manipulation

stiff yarrow
#

someone explain this to me

limber knotBOT
#

well, as paper uses ASM to generate event executors

olive garden
#

they create a class which calls them directly instead of some wrapper

limber knotBOT
#

then you can only call public methods using this way

#

otherwise you have to use methodhandle

#

which is about 2x slower than direct call

static badge
#

last I bothered to exist methodhandle was slower than reflection

limber knotBOT
#

in certain conditions yes

static badge
#

specifically testing virtual function calls

limber knotBOT
#

hmm

#

i have jmh benchmark for my reflection library

#

which told me that mh is about 2x slower

static badge
#

i used a for loop and checked the asm

limber knotBOT
#

no idea if it still builds and w.e

#

but you can run ze bench

olive garden
#

I have no idea what methodhandles are, but I'm curious: in what case are they not slower?

limber knotBOT
#

simple usage

static badge
#

I targeted public methods specifically though so :>

ancient bolt
#

I'm not aware of any explicit checks on event handler visibility

limber knotBOT
#

e.g MethodHandle mh = MethodHandles.lookup().unreflect(method); -> mh.invoke(args)

static badge
#

where were your benchmarks stored

limber knotBOT
#

under instrumentation package

#

err subproject

static badge
#

also what's with that weeb name

limber knotBOT
#

method handles can be slower or faster; depends on usage

#

weeb name

#

idk

static badge
#

where is subproject i don't see it

ancient bolt
#

oh i found it

olive garden
#

:(

#

that comment disappoints me

ancient bolt
#

then uninstall the plugin

limber knotBOT
#

.rekt

#

☑ Catcher in the Rekt

olive garden
#

so that code started out with skipping abstract and static methods

#

later it also started to skip private ones, and then it stopped to skip static ones

#

and it was you who changed it, so now I get your reaction

olive garden
#

okay

stiff yarrow
#

oh yeah demon I meant to mention something to you about your plugins inspections

#

if you call a custom event from an event listener method, and that event listener ignores cancelled in its annotation, and if you check if that custom event is cancelled, the inspection will REE at you even though they are different events

ancient bolt
#

yeah i know

#

I'm beginning to remember why I was considering deleting the project a while ago

#

anyways goodnight

austere ivy
#

Yeah.

#

I think I'm just going to hold off till 1.14

stiff yarrow
#

@ancient bolt don't delete it, someone will maintain it for you if you wanna quit it

ancient bolt
#

no one will maintain it

olive garden
stiff yarrow
#

shit I'd do it

#

its too useful

ancient bolt
#

then start now

#

don't need to wait for me to die

stiff yarrow
#

are you gonna quit it now?

vestal jasper
#

It's quite nice for quickly creating projects

stiff yarrow
austere ivy
#

I do that Trigary lol

stiff yarrow
#

oh joy you wrote it in kotlin

olive garden
#

me too, but unfortunately I can't hide the inspection on a case-by-case basis

austere ivy
#

I also do project.version too

#

Yeah I don't really look at plugin.yml much anyway.

#

Doesn't bother me much.

olive garden
#

but it shows up in the inspection results :(

austere ivy
#

bleh

#

it's a trade off haha

stiff yarrow
#

if you seriously want to quit and no one else will volunteer I'd maintain it in the sense that I'd keep it working with new IntelliJ updates

#

but I'm too busy to add new features

ancient bolt
#

well im already doing that so that's not very useful

austere ivy
#

nossr

#

stop abusing that emoji

#

I'm going to start a non-profit charity for those poor abused pepe running emojis

ancient bolt
austere ivy
#

hey, I like your name DrBot.

vestal jasper
tame pendant
#

Ty

austere ivy
#

Very good.

#

I'll snatch that if you don't mind ;D

vestal jasper
#

some day the mc dev project that's written in kotlin will work for kotlin plugins

stiff yarrow
#

I'd have to actually learn kotlin just to maintain your shit so its something I don't really want to do but I also don't want to see such a useful plugin die

austere ivy
#

Anywho yeah I'm going to hold off till 1.14, it's just not worth the performance tradeoff.

tame pendant
#

If 1.14 vanilla is coming out on the 23rd, how many days after that should I expect spigot to come out? Paper?

stiff yarrow
#

spigot might come out before then

#

we'll see

vestal jasper
#

What's your basis for this noss?

austere ivy
#

It's upstream.

stiff yarrow
#

history

vestal jasper
#

Huh I've never seen them even release for snapshots let alone release before the mc release

stiff yarrow
#

didn't spigot release for pr7 of 1.13

austere ivy
#

Hopefully pretty fast, Vicarious. I'm not entirely sure on how it exactly works but IIRC they have to update Craftbukkit, then Spigot gets upstream which means Paper also gets upstream. So hopefully decently fast we should get some sort of prototype on it.

stiff yarrow
#

someone said that at least

austere ivy
#

But what do I know ¯_(ツ)_/¯

#

And I don't think there were as many technical updates (definitely not as many as 1.13) for 1.14, just maybe Material enum changes, some new AI stuff they'd have to add with wandering merchant? Nothing crazy but you know it's another update.

vestal jasper
#

>new AI stuff
monkaW

#

You mean new AI stuff added by paper :^)

#

oh AI not API

#

i'm legit retarded

stiff yarrow
#

its okay I word dyslexia shit hard all the time

tame pendant
#

I'm not sure but it looks like it took vanilla 1.13 came out July 18 and spigot 1.13 came out July 14

vestal jasper
#

nossr pick which feature I add in next for me please

#

pick a number 1-12 including 1 and 12

austere ivy
#

2

stiff yarrow
#

such little context

vestal jasper
#

for my dwellings project

austere ivy
#

OH

#

1

#

You know.

vestal jasper
#

do you even know what 1 is

austere ivy
#

You either add to-do stuff at the end, or at the start.

vestal jasper
#

you sound like you do

cosmic raft
#

@vestal jasper -11

stiff yarrow
#

niban

austere ivy
#

So to maximize the chance on making you do the stuff you've been putting off..

#

6

#

Unless you insert it to the middle.

#

._.

vestal jasper
#

....so 2? kash

austere ivy
#

No!

#

6

vestal jasper
#

If I do -11 and we assume it underflows to 12

#

that should be 2

#

or 1

cosmic raft
#

no

vestal jasper
#

nice

cosmic raft
#

you said 1-12

#

.wa 1 - 12

austere ivy
#

You have a to-do list, and you either add it to the start or end, and if I do 12 or 1 it might be the last OR the most recent, so to maximize it'll be a 6 from me.

limber knotBOT
vestal jasper
#

..

austere ivy
#

.wa range(12)

limber knotBOT
crimson lodge
#

I hate bots

limber knotBOT
#

screw you too

crimson lodge
#

At least i am not a bot

cosmic raft
#

@vestal jasper time to watch nw again

limber knotBOT
#

(DiscordBot) Number Wang Season One, Episode 1 - length 1m 58s - 962 likes, 17 dislikes (98.3%) - 134,466 views - biggeidea on 2009.12.08

stiff yarrow
#

.wa range 25

limber knotBOT
#

(DiscordBot) No results.

stiff yarrow
crimson lodge
#

I take it baxk

#

.wa range 9999

limber knotBOT
#

(DiscordBot) No results.

vestal jasper
#

@cosmic raft ok pick a number in the following range (0,12]

crimson lodge
#

8

cosmic raft
#

0

stiff yarrow
#

.wa range (25)

limber knotBOT
vestal jasper
#

0 isn't in the range

stiff yarrow
cosmic raft
#

ok

#

13

vestal jasper
#

neither is 13

austere ivy
#

.wa range(12)

limber knotBOT
cosmic raft
#

16

stiff yarrow
#

I am so tempted to do range with 4 digits

austere ivy
#

.wa range[12)

limber knotBOT
austere ivy
#

:(

tardy lynx
#

.wa range(999)

limber knotBOT
#

(DiscordBot) Result: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,... - https://is.gd/WpE5dJ

Wolfram|Alpha brings expert-level knowledge and capabilities to the broadest possible range of people—spanning all professions and education levels.

tardy lynx
#

oh

vestal jasper
#

Ok custom WorldGuard flags it is

stiff yarrow
#

@void void where's this code for paper generating bytecode to do direct calls peepoGiga

vestal jasper
#

I really wish I could send specific sounds to the client and not categories of sounds

cosmic raft
#

what

vestal jasper
#

like CAVE_1 instead of just CAVE

cosmic raft
#

ah

vestal jasper
#

I'd like players to hear CAVE_1 when entering areas with PVP enabled

austere ivy
#

I know Vicarious.

vestal jasper
#

But due to how the client works even with API changes that wouldn't be possible

austere ivy
#

And I want relative player target selectors.

#

BUT MOJANG WON'T LISTEN TO MY SUGGESTIONS IT'S SO SIMPLE WHY NOT

stiff yarrow
#

Mojang and caring about modders in the same sentence

austere ivy
#

:(

stiff yarrow
#

if they cared we'd have way more network packets to play with

#

and some server side ux stuff pog

void void
#

they care if its useful for people who make maps

native thunder
#

Mojang caring about mp in general

stiff yarrow
#

is that why it requires a super computer to host Kappa

native thunder
#

That's just years of tech debt for you

stiff yarrow
#

maybe they should pay oracle for premium support

#

🤑

limber knotBOT
#

could just create a custom client and then add all the packets you want

#

only thing that needs to be left intact is the login stuff

stiff yarrow
#

might as well just make it a forge mod at that point

limber knotBOT
#

except forge doesn't play nice with paper/spigot servers

austere ivy
#

why not?

limber knotBOT
#

if you have a mod sometimes it can cause you to dc because the server received a weird packet

austere ivy
#

oh okay.

limber knotBOT
#

there used to exist a couple of projects that combined forge with bukkit/spigot

#

that was kind of nice, but they since died =/

cosmic raft
#

wolfram alpha is interesting

limber knotBOT
#

maybe I could work on that as a project. Client side paper api

cosmic raft
#

.wa is 1/(x^2-1)+UnitStep[x-2]+UnitStep[x-9] continuous at x=9

limber knotBOT
cosmic raft
#

throwback thursday

limber knotBOT
#

(DiscordBot) Numa Numa - length 1m 40s - 392,475 likes, 12,324 dislikes (97.0%) - 32,897,873 views - Dork Daily on 2006.12.11

#

@stiff yarrow see clases under com.destroystokyo.paper

#

(not api)

stiff yarrow
#

@void void quite a few classes here, any tips on which one contains it

#

com.destroystokyo.paper.antixray.DataBitsReader ?

#

oh nm antixray

#

I just saw the name and assumed LUL

void void
#

no not rn

#

am on fone

#

grep for asm

stiff yarrow
#

I found it GWcmeisterPeepoLove

void void
vestal jasper
#

peepoGIGA I'm retarded and not retarded at the same time

#

I can just toSet.queryState(player, Flags.PVP)

#

Instead of manually setting up to be able to queryState

#

And I found this out after nearly finishing doing so

spiral garden
#

@void void ivan has officially infected the javacord server too

void void
#

lmao

#

pm the invite

#

i want to see that mene

#

meme

#

@spiral garden

spiral garden
#

i mean, i don't remember being a piece of shit when i was 13

vestal jasper
#

I was

#

Probably still am :D

quasi valley
#

But you can’t compete with little iv

vestal jasper
#

I'm not on his level

void void
#

lul

vestal jasper
crimson lodge
#

She passed her exams, now she is
A: occupied
B: qualified

#

What is the answer

#

Need you guys

cosmic raft
#

answer for what

crimson lodge
#

A test

#

Now she is occupied/qualified

#

What is the correct word

cosmic raft
#

depends on the context/usage

crimson lodge
#

Thats all i got

cosmic raft
#

good luck

void void
#

you pass exams to gain qualifications

vestal jasper
#

They want B as the answer but it's still incorrect

#

Without context we cannot correctly assume that merely passing the exam qualifies you for anything

void void
#

it makes the most sense

vestal jasper
#

It's the least wrong :^)

quasi valley
#

No internet today, time not to study but to play Minecraft in offline mode on my lappy thumbsupparrot

vestal jasper
#

singleplayer peepoGIGA

void void
#

you're on discord though

quasi valley
#

Flat on my phone

vestal jasper
#

still internet

quasi valley
#

Well

void void
#

you could use that internet on your computer if you really wanted to

cosmic raft
#

you monster

#

taskbar on the left

vestal jasper
#

not only that

#

LOCKED taskbar on the left

#

he's doubly a monster

quasi valley
#

It’s better for reading stuff 😂

vestal jasper
#

less screen space = better for reading

cosmic raft
#

what's wrong with a locked taskbar?

vestal jasper
void void
#

RIGHTTASKBARGANG

quasi valley
#

Top to bottom space thinking_eyes

void void
#

deathtoleft

vestal jasper
#

you have less screen space with a locked task bar

cosmic raft
#

get a bigger screen

vestal jasper
#

I do

cosmic raft
#

get a bigger screen

vestal jasper
#

I legit have the biggest screen I can get at this aspect ratio

quasi valley
#

Plug in a tv

vestal jasper
#

🤔

#

Yeah I don't think I should spend that much money

cosmic raft
#

buy a projector

vestal jasper
#

brilliant

crimson lodge
#

Thanks guys

quasi valley
#

Sneak into the cinema and use their screens

crimson lodge
#

What is the opersite of rise?
A: Dawn
C: Drop

void void
#

Shouldn't you be answering these yourself?
A: Yeah
B: Yes

crimson lodge
#

A and B

finite wave
#

@crimson lodge C

#

What are these questions

crimson lodge
#

Thanks Jan

#

Just a few stupid questions xD

quasi valley
#

It’s not drop

void void
#

english test

quasi valley
#

Well again it depend on the context what even is this

crimson lodge
#

Nope its a Cito test, so English, Dutch Math etc

#

What do they want me to answer @quasi valley

#

They never give context lol

quasi valley
#

Well it’s sun rise and dawn

#

But it may not refer to that

void void
#

how is that opposite?

quasi valley
#

Sun goes down

#

And rises

void void
#

not at dawn

#

at dawn it rises dude

crimson lodge
#

Hmm

finite wave
#

@quasi valley How is it not the opposite

#

Maybe you should take the test

void void
#

rise = up and drop = down

finite wave
#

Dawn = Sun rise

void void
#

THATS NOT OPPOSITE

#

you dumb

finite wave
#

Me?

quasi valley
#

Me 😂

crimson lodge
#

now i am really confused

void void
#

anyone who said it's dawn is dumb

crimson lodge
#

Is it A or C

finite wave
#

I said drop

#

c

crimson lodge
#

Okay Thanks

quasi valley
#

Yes sorry I got confused aaaa_helpme

void void
#

how are you using your phone during a test?

crimson lodge
#

Toilet 😉

finite wave
#

Lol

#

What

#

We got our phones taken and a staff member follows us to the toilet

void void
quasi valley
#

For the second time in 10 minutes? 🤔😂

finite wave
#

Small bladder

void void
#

what's true and what's a lie

#

he's cheating on the test, he's constantly in the toilet

#

i don't know any more

crimson lodge
#

Well I am still in elementary school, so they dont really check lol

void void
#

you should try learn the answer instead of just asking us :P

#

google the translations

crimson lodge
#

google translate really sucks, thats why i asked here

quasi valley
vestal jasper
void void
#

Just curious, I write a simple command that is iterating over the list of offline players, which is approx. 900 players in total. I assume it will benefit from running async, also does that entail that I have to make a final version of whatever I'm iterating over as I shouldn't access the API during it running?

normal echo
#

If the API isn't thread safe then don't access it (most methods aren't)

vestal jasper
#

net.minecraft.server.v1_13_R2.ResourceKeyInvalidException: Non [a-z0-9/._-] character in path of location: minecraft:AMBIENT_CAVE
peepoGIGA

normal echo
#

mmm capital letters

vestal jasper
#

Ah

#

It should also be ambient.cave I imagine

#

Eyy there we go

#

I guess I'm going to do sanity checks

void void
#

@normal echo this should be okey or?

        final OfflinePlayer[] players = Bukkit.getOfflinePlayers();

        new BukkitRunnable()
        {

            @Override
            public void run()
            {
                for (OfflinePlayer player : players)
                {
                    // Do stuff.
                }
            }
        }.runTaskAsynchronously(plugin);
#

ops, sorry for big paste

vestal jasper
#

Depends on the stuff

void void
#

Well, I will just try to find an offline player using a name

#

and return that object

quasi valley
#

Bukkit.getOfflinePlayer(String)

void void
#

I'm stupid

#

xD

#

Still, should I run it async, it is at worse a iteration of 900?

quasi valley
#

Yes, do it async

void void
#

kenny

#

do you do some kind of callback on your async calls?

#

or how do you solve the return?

quasi valley
#

Depends what it is, sometimes I start a new sync task, have another timer waiting or something

void void
#

but i mean, even if you start a new sync task its in not in the original scope?

#

so i cant return there bc of it being a void?

quasi valley
#

Ah no in that case not

void void
#

Hmm

quasi valley
#

Try in #paper-dev and wait for someone else to respond, my food’s ready :p

void void
#

alright ty for the help!

#

@void void what are you doing

#

que?

#

I'm trying to create a callback from an async task but I can't get it right, really.

quasi valley
void void
#

I wrote a listener interface and implemented it on the caller and I think that will work?

#

@quasi valley

    @Override
    public void run()
    {
        for (OfflinePlayer offlinePlayer : offlinePlayers)
        {
            if (offlinePlayer.getName().equalsIgnoreCase(name))
            {
                new BukkitRunnable()
                {

                    @Override
                    public void run()
                    {
                        listener.done(player, offlinePlayer);
                    }
                }.runTask(plugin);
            }
        }
    }
#

Apparently getPlayer(offlinePlayer) is deprecated.

quasi valley
void void
#

Alright then

#

Also, is there a prettier way to run a sync runnable inside?

quasi valley
#

lambdas I guess

acoustic pilot
#

Nothing in Bukkit should be run async unless it's specifically marked thread-safe in the javadocs, that's the general rule of thumb.

#

Everything should be assumed thread unsafe otherwise.

void void
#

Okey, so i shouldnt be doing at all then?

acoustic pilot
#

If you're doing something async and the javadocs don't explicitly say it's safe to do outside of the main thread, then you shouldn't be doing it async.

void void
#

okey then

quasi valley
#

what are you trying to do with the offlineplayer? it's probably fine working with that async, unless you're doing some specific magic or then interfering with the server

void void
#

i just wanna search and find a offlineplayer from name and return it

quasi valley
#

and then?

void void
#

well the callback is in sync, so later on i will grab the uuid and grab a certain object from a hashmap

#

using the UUID

#

bc people do /ignore <name>

acoustic pilot
#

Server#getOfflinePlayer(String) is not thread safe.

#

Calling it off-thread is not safe.

quasi valley
#

so you're suggesting always executing it on the main thread? then I'd rather not use it at all unless I want to freeze my server thonk

acoustic pilot
#

Doing so has the potential to corrupt internal state.

#

Indeed, you should avoid using it at all, as it can incur an HTTP profile lookup on the main thread

#

You should make your own thread-safe variation of profile lookups.

#

It's not that difficult.

quasi valley
#

doesn't paper have methods to only look locally without http calls?

#

not sure but I remember having heard that at some point

acoustic pilot
#

It might, not sure, but presumably he/she would want the unknown name to be resolved to a UUID regardless.

#

And not just for players who have logged into the server before.

void void
#

So I'll do this instead then:

final OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(args[0]);
User user = UserHandler.i().getUser(offlinePlayer.getUniqueId());
#

and in sync

quasi valley
#

UserHandler.i() thinking_eyes

#

that's a creative way of getting an instance

void void
#

its a singleton

#

how would i otherwise get it?

quasi valley
#

object oriented programming

#

👀

void void
#

you mean getInstance?

acoustic pilot
#

A request to https://api.mojang.com/users/profiles/minecraft/<username>

void void
#

oh so i could write my own http call

acoustic pilot
#

Would return some JSON like {"id": "<uuid>", "name": "some_name"} or a 204 response if not found.

void void
#

ye

acoustic pilot
#

Easy enough to write something that does that which you can re-use in all of your plugins

#

Along with a cache maybe to prevent frequent lookups to the same name, a minute-cache would be more than adequate.

vestal jasper
#

Why is No Content 204 peepoGIGA

void void
#

tyty

acoustic pilot
#

I guess there's a difference, semantically, in HTTP between empty content and a non-existent resource.

#

I'd consider a 204 in this case to be abuse on Mojang's end

#

Should probably be a 404.

vestal jasper
#

Yeah. I imagine a user existing but the user having no data would be a 204
But a user not existing should be a 404

quasi valley
#

also, you'd usually want you plugin main class to hold manager instances, that you either give into listeners or get them by plugin.getXManager... not that the static calls hurt you, but they are rather bad practice and may be abused by others

acoustic pilot
#

2xx indicates a success response, so I'd agree Mojang should've used 404 for non-existent users

#

But it's Mojang we're talking about 😃

vestal jasper
#

I've also seen services return 200 when returning no content

#

Which, considering 204's existence, is a little strange

acoustic pilot
#

204 IMO should def be used when the resource "exists" but has no content

vestal jasper
#

But the service in question always uses 200 whenever any request is successful no matter the output

acoustic pilot
#

but a non-existent profile doesn't seem to fit that criteria

#

Yeah it's common practice to just use 200 for all successful responses 😛

vestal jasper
#

They also randomly switch between 4xx codes for no clear reason

#

Iirc they use 401 for expired auth tokens and 403 for missing auth tokens? Which would be backwards.

acoustic pilot
#

401 vs 403 is a tricky one

#

but I consider 401 to mean "unautheticated" where 403 means "authenticated or not, you are forbidden"

vestal jasper
#

According to the service's docs
403 (Forbidden)
Common Reasons:
No API key was provided with the API request
An invalid API key was provided with the API request

#

401 (Unauthorized)
Common Reasons:
An API key has not been included in the request.

#

thonk if you fail to provide an auth token you can get either a 401 or 403 and there's no way to tell why you got one or the other

upper flicker
#

If you just always return 418 you dont need to worry about it

vestal jasper
#

I'm a teapot

acoustic pilot
#

better not be the teapot shit

vestal jasper
#

it is

acoustic pilot
#

_>

vestal jasper
#

shouldn't teapot be 2xx?

#

I imagine it would intentionally be thrown

upper flicker
#

no more so than a 403 should be

vestal jasper
#

I'm successfully forbidding you to continue

static badge
#

.g 418 http

limber knotBOT
#

(DiscordBot) https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/418 -- 418 I'm a teapot - HTTP | MDN: "Mar 18, 2019 ... The HTTP 418 I'm a teapot client error response code indicates that the server refuses to brew coffee because it is a teapot. This..."

vestal jasper
#

Oh makes sense

void void
#

i havent done the actual lookup yet

acoustic pilot
#

lol a 20 year old april fools' joke

#

@void void I recommend using a Guava cache + Optional (since you can't store null values in it)

vestal jasper
#

i() is a very descriptive name

void void
#

ill change it okeyyyyy

#

it was getInstance in the beginning

#

ill change it back.

vestal jasper
void void
#

how do u do pepe ico

#

n

vestal jasper
#

nitro

acoustic pilot
#

Modified to remove some bits, but you get the idea.

#

Uses OkHttp + Guava cache

#

and Gson

void void
#

thats some pretty code

#

i think i understand thanks

acoustic pilot
#

Profile is just a class with UUID and name.

static badge
#

is that optional?

woven otter
#

wow new nickname again

static badge
#

on my screen?

upper flicker
#

shouldve left it at volatile

vestal jasper
#

Who needs optional when you have ?

acoustic pilot
#

The only reason Optional is used is so that the empty response can be cached.

#

Since Guava cache doesn't allow null values.

woven otter
#

public volatile Spottedleaf

vestal jasper
#

is this guava?
on my screen?

static badge
#

yeah I was thinking of that as the reason

#

it's just more fun to bm optional :>

vestal jasper
#

leaf ur retarded

cedar spade
#

no u

vestal jasper
#

no u

static badge
#

concurrent maps tend to be a bitch since they internally use null

cedar spade
#

no u

vestal jasper
#

forking plugins omegalul

cedar spade
upper flicker
#

opens ticket

woven otter
#

404

upper flicker
#

depends on the audience

static badge
#

i mean if it was "burritos are awful" everyone would hate you

crimson lodge
#

Why would you want to use a old versioin

static badge
#

rightfully so too

upper flicker
#

probably

#

there are some tasty burritos out there

static badge
#

oooo admitting defeat here huh

upper flicker
#

oh no tacos are way better

#

but tacos being better doesnt make burritos bad

#

its not like a broccoli salad or something

woven otter
#

@upper flicker audience is anyone that uses MinecraftDev
@crimson lodge because making plugins for 1.8.x is still profitable

upper flicker
#

idk why you'd revert that for bukkit plugins though

#

bukkit has it so easy

static badge
#

2 what is with this logic it's supposed to be black or white

upper flicker
#

the forge people are the ones who should be annoyed

static badge
#

and it should be white since black theme is retarded

upper flicker
#

changes one line in a pom file -> "oh so difficult"

static badge
#

god I wonder what 1.8 must be like

#

nms

#

doesn't even have my playerconnectioncloseevent 😦

woven otter
#

honestly I figured that making this plugin auto-update might take more time than just changing one version number lel

upper flicker
#

tbh if you were still making any significant amount of scratch from private work for those versions Id expect you to have a base module or something

#

and then you'd not be using the base templates anyway

static badge
#

auto updating is technically retarded

woven otter
#

@upper flicker what do you mean

upper flicker
#

...

#

idk how to go any deeper on that

static badge
#

uh oh

#

you just got ...'d

#

that's a worse fate than death

upper flicker
#

simmer down leaf

static badge
#

...

cedar spade
#

no u

upper flicker
#

fake transient ass leaf

static badge
#

you gave me this name

upper flicker
#

nop

static badge
#

you can't bm me for it

woven otter
#

do you mean like making a base module/template for IJ?

upper flicker
#

I meant like a base template outside of IJ with a static lib or a get up and go gradle base template or something

#

but sure that'd work too

woven otter
#

actually I'll look into that. Might delete that fork then

upper flicker
#

I mean I just dont think its worth your time to maintain it/keep it in sync

#

just for that, on bukkit

woven otter
#

yeah you're right

upper flicker
#

though from some of demon's latest ranting if you asked nicely he'd probably just let you have the real thing :>

woven otter
#

What was his latest rant?
Also when I have seen him talk he is usually not in a mood

upper flicker
#

he seems to go back and forth on mcdev being worth his time and hassle versus other stuff

#

like at one point I thought he was handing it off to gabi(?) or one of the other sponge people

#

but apparently not

#

but now maybe

#

you'd have to run it by him

static badge
#

kotlin :dansgame:

woven otter
#

Could just tag him and make him see what you wrote 😏

#

that would be rude though

upper flicker
#

spooky

woven otter
#

Could you do it so you can take all the blame

upper flicker
#

no

#

maybe when I get into work later Ill ping him if he's on

woven otter
#

wow not helping a fellow duck

upper flicker
#

its like 6am or 5am or something there

static badge
#

demon boy bms a lot but inside he has a big heart

#

trust me he'll be fine if you ping him

upper flicker
#

and then there's this fucking leaf

native thunder
#

Mcdev is much more likely to be picked up by the sponge/forge community ya? It's features are mostly geared on that side

#

Over here I just use it for the cool little icon

upper flicker
#

there's a lot more opportunity over there

#

especially on the forge side

#

christ if someone found some way to write out a list of "no u dumb ass gotchas", throw it in a json file, and load it into the IDE

#

probably be a pretty nice shift for people who used it for nms dev

static badge
#

huh?

upper flicker
#

huh what

static badge
#

ur last sentence wat

#

u need more explaining am retarded

upper flicker
#

there are a ton of potholes for new people screwing with nms

#

if someone found some way to list those and make them warnings in the IDE plugin

static badge
#

potholes break my ankles

upper flicker
#

would be helpful to those people

#

also since when did leaves have ankles

static badge
#

gets notepad

#

tell me bout these potholes 2

upper flicker
#

well you see, as roads experience normal wear and tear, traffic, weather, etc

static badge
#

ur retarded

upper flicker
#

and as roads expand and contract

static badge
#

/part

woven otter
#

potholes

upper flicker
#

small cracks form

#

then shit gets in there and the road keeps expanding and contracting

static badge
#

no way

upper flicker
#

and then it tears up the road

static badge
#

wow

#

rip road

upper flicker
#

and you get potholes

static badge
#

is that an analogy for what happened to ur brain

#

and the shit was tacos?

upper flicker
#

only when Im talking to someone as dum as u

woven otter
#

well I could say something rude about potholes

static badge
#

but ur literally retarded

woven otter
#

but I rather not

#

ur

upper flicker
#

where did the leaf insults pineapple go

#

this is outrageous

#

abdicating his duties here

woven otter
#

just say something bad about concrete or what was the name of that fork

upper flicker
#

under the see

static badge
#

imma pull a 2

#

never happened

upper flicker
#

IRC never forgets

static badge
#

you do forget though

#

you dumfuck

upper flicker
#

You're right

#

I do forget

limber knotBOT
#

.addcmd spottedleaf 07:53 <+DiscordBot> <p​ub​li​c ​tr​an​si​en​t ​Sp​ot​te​dl​ea​f> went back under the see

upper flicker
#

.spottedleaf

limber knotBOT
#

07:53 <+DiscordBot> <p​ub​li​c ​tr​an​si​en​t ​Sp​ot​te​dl​ea​f> went back under the see

upper flicker
#

of course not to be confused with

#

.leaf

static badge
#

alright this is not fair

crimson lodge
#

.spotterleaf

#

.spottedleaf

limber knotBOT
#

07:53 <+DiscordBot> <p​ub​li​c ​tr​an​si​en​t ​Sp​ot​te​dl​ea​f> went back under the see

static badge
#

.z750

woven otter
#

burningleaf

crimson lodge
#

.PixelNotFound

native thunder
#

I know somone with the username fireheart

#

Same series

crimson lodge
#

.addcmd pixelnotfound = Cool

#

damit

#

.pixelnotfound

static badge
#

fireheart's the username you use if you couldn't get firestar

woven otter
#

where was that 1.8.8 paper repo again

upper flicker
#

its a branch

woven otter
#

no no I mean maven repo

upper flicker
#

its the same repo

woven otter
#

oh was the groupId different ?

upper flicker
#

yup

cedar spade
#

pApEr DeStRoYs ToKyO

woven otter
#

right it's under org.github.paperspigot

limber knotBOT
#

@woven otter [Auto] We're now known as Paper.

upper flicker
#

heh

olive garden
#

Don't believe his lies

cedar spade
#

papeRspigoT

limber knotBOT
#

@cedar spade [Auto] We're now known as Paper.

woven otter
#

P4p3rsp1g0t

#

you just need to apply some autism

vestal jasper
#

paperspigot

cedar spade
#

How does Korobi ping Discord users if DiscordBot doesn't send through the whole username to IRC 🤔

upper flicker
#

it sends the nick through

#

it just sends it as part of the message

woven otter
#

you don't really need anything special to ping an user

cedar spade
#

Paperspigot

limber knotBOT
#

@vestal jasper [Auto] We're now known as Paper.

cedar spade
#

The answer is: it just searches for a user with a matching name

upper flicker
#

all its doing is matching the <user> and then putting an @ in front of it

#

there's no searching

#

thats all done by the bridge

cedar spade
#

I mean

vestal jasper
#

spigotpaper

woven otter
upper flicker
#

wow look at you using the full identifier for the specific jar

#

-SNAPSHOT isnt good enough

woven otter
#

yeah that's for scrubs like you

#

(aka I just copied it from nexus without bothering to change it)

finite wave
#

@woven otter Ew using an old IJ thing

#

Or improper syntax’ish

woven otter
#

wait is it outdated 🤔

finite wave
#

Idk

#

What version are you using?

wide chasm
#

2019.1.1 is latest IJ version

upper flicker
#

I see that on pretty much every groovy gradle script at some point

#

I just ignore it

woven otter
#

nope it's the latest

finite wave
#

@upper flicker Yeah, but he could just do it properly

upper flicker
#

idk what 'properly' is

#

at one point that was properly

#

gradle probably changed it

finite wave
#

version: name: version:

#

Idk why there is to versions in there

upper flicker
#

wat

#

example pls

finite wave
#

you can do like compile artifact: “mysrt” name: “js” version: “orka”

#

Probably not exactly

#

But similar

upper flicker
#

yeah you can specifically name what each thing is

#

but you dont have to

finite wave
#

Yesyes

upper flicker
#

thats the short syntax

finite wave
#

Looks better though

upper flicker
#

and is supposedly supported

#

no it doesnt

#

it looks retarded

finite wave
#

Then you have something in common, yes?

upper flicker
#

sanity yes

#

I cant imagine being so stupid as to require an explicit label on a version

#

how is it?

woven otter
#

what how is the labeled version any better than the short one

finite wave
#

Just get out

#

We are discussing silly things

woven otter
#

you're right that's silly

upper flicker
#

this is a no u no u ur dumb no u r fuk u no fuk u argument

woven otter
#

no u

upper flicker
#

nou