#general
3141 messages · Page 445 of 4
Here are the fucking banner routes. https://github.com/darbyjack/ResourceBanner/blob/master/src/main/java/thito/resourcebanner/BannerMakerServer.java
Any good libs for making images?
ah yes, my favorite network I/O paradigm: thread-per-connection
Okay cool cause I haven't worked much with image generation.
hey amazon, how is expedited shipping delivering this to me for literally 50 usd aka 2x more expensive than the price of the product in the first place
Ikr Tux.
it's the proven model that Minecraft Beta 1.7.3 uses
☑ Spirekted Away
I'm go ing to make an issue on Septo asking for it to be deleted
you should decorate your beard with sequence
This repo is a mess and this https://github.com/Spookit/Septo.io/blob/master/Septo.io/src/thito/septo/io/HttpField.java is a disgrace, please delete.
All vote agree
yes
because it was literally a scam
hey guess what barty
I'm buying 1 embossing stamp
do you know how much I'm paying for shipping
here's a tip, it's not 50 euros
man you'd go insane at how I buy my mugs then
or specifically how I bought the one mug
and the one bowl
yes
I've literally been using that spork and bowl ever since they got here
daily
it was a great investment
hey barty you'll go insane for this one
I went to the hospital and got surgery for my nose
can you believe that
I didn't get the 12-pack of nose surgeries
my surgeon was pissed
he did charge me through the nose for shipping though
you ever hear about a man who gets mad at other people online because they don't buy in bulk?
why do you care so strongly that I don't buy cutlery in family packs
clearly you do, we've spent enough time around this topic at this point to prove that
ok so how is it different from shipping a single pen
and if you think it costs 50 euros in logistics to ship a single spoon from china you're off your mind
demonstrably so because I think I ended up paying 4 euros total or less for my spork including international shipping and importing
ok
either you actually don't know that this is a widespread scam or you're just playing dumb
here's a super clear example
sort pens on amazon.de by lowest price
lowest price is 1 cent
with 16 euros worth of shipping
that's just not feasible
they hope people will skim over it
I almost did
it's easy to skim over 15 euros worth of shipping if your total basket is over 500 euros
is this guy using a bot account or is my discord bugged
irc bridge bot
It's a robot
ew irc
Paper not only does minecraft but also artificial intelligence
amazon doesn't tell you on the checkout how much each item is shipping for
just the total
it's an issue I keep having
that's why it pisses me off
does it not when you look at total offers?
because the only way to track it down is to remove things individually until you hit it and then put it back on
the total is just that, the total shipping
no i mean like
15 euros worth of shipping isn't that huge when your cart is well into the hundreds
what I mean is it doesn't say how much you're paying for items in your basket on checkout

and I ignore the shipping price because it's always wrong for me because I always ship internationally
so I only get the real total on checkout
the only reason I even noticed the spork had a weird shipping was because it made the total shipping so insanely high, if they had played it smarter I'd never had noticed
I don't get any prime benefits
no 1 day shipping
no free shipping
fun
god
must be good
I'm usually lucky if I can get it within the week when I pay for expedited delivery
yeah, sucks
I hear that we get slightly better service from the spanish store but honestly I haven't seen the difference except for lower selection, higher prices, fewer discounts and much harder browsing when compared to the german storefront
he sells fish. what better place to sell fish than where the fish are?
he's not in ice. he's on it
probs deleted
nah, i refreshed and it worked
lol
Yea, imgur has done that a few times to me for freshly posted images
minecraft obv uses another path to java than your $PATH
wat
mojang's launcher bundles its own JRE...
oh i didnt read that convo up there i was so confused
In the old launcher (the one I still use), you can set the java.
old launcher
the normal launcher allows you to choose the java path too
idk which old launcher you're talking about but yea

So it's basically like taking a photo of a photograph
It really is.
a photo of a monitor showing a photo of a photograph
Ahh
Yeah that's dumb
This new version is going to be much more sexy
More sexy than Billy in the testicle cleavage shorts.
👀
yeah heres where he literally takes the fucking JPanel and turns it into an image https://github.com/darbyjack/ResourceBanner/blob/master/src/main/java/thito/resourcebanner/RectBkg.java#L116
What's the best way to repopulate a vilage in 1.15 after they all died due to AFK?
LOL
time to check out this 1.15 shiz
@spare venture I do not know
I have DiscordSRV so I get pinged if the "server room is on fire"
SwingUtil.convert
Dear lord
yesterday I randomly got pinged and the server room was on fire apparently, whatever, but the server never bounced back, it's dead for some reason
pterodactyl isn't working either.
I'm not quite sure, I'm gonna guess my host is doing something so ¯_(ツ)_/¯
That lag resistant AFK fish farm design is super lag resistant.
Like, I have a simulated 1000ms RTT, and it works fine.
I think the bigger question is why are you stalking my server but never on it 
am gon go lie down, if stuff breaks an mini is around, blame him; Otherwise, blame Z for encouraging me to push or something, nite
o/
bye kitty
That's not too far.
barty
sorry to say but by that metric my server is 10000x better than yours
nearest tree is literally nowhere
30million blocks from spawn
Make no trees in game
What's the best way to protect your AFK spot from spiders?
If it needs to be out in the open, I mean.
Well, I have my AFK spot surrounded by fences.
Oh, I know about the carpet thing, but I can't remember how to do it exactly.
Dig a hole, hole-y enough that mobs won't try to get you through it.
Then put wall signs on the walls of the hole to fill in all the air spots directly on the ground
you know I'm overcomplicating this
just dig a big hole or trench around yourself, then fill like
the
the top part with signs
I'm not sure that would work, it's a AFK fish farm.
then put carpet over it, and you can walk over the carpet but the mobs won't try to get through.
Oh okay, I mean it really depends on what your landscape is like.
I mostly build my bases underground, so I have not ran into this kind of thing before.
The landscape is flat, but only for like 10 blocks radius.
And directly under you is a fish farm?
Trench seems like a solid option, just saying.
Maybe a screenshot would help.
Oooh, yeah okay.
Maybe put carpets over the fence so you can jump over it but spiders will get stuck if they try to climb it.
or: T R E N C H
Where would I put the torches then?
Is it okay to not put capet on the corners?
Anyway, I'll start crafting.
mcl.ist's search function is working, this is fantastic.
Also, yeah what barty said.
@spare venture, it needs open sky, or it gets way worse.
vecr maybe just blocks over the fence?
but not over the fish farm?
fence, then air, then block?
spiders can't climb it and no need for blocks over the fish farm itself.
Yeah, okay.
Carpet is expensive anyway, as I don't have a spider farm.
I mean, I'm just messing about.
Does a carpet on a fence let a zombie over?
I don't think so.
Yeah, it does not matter much if I die anyways.
Yeah, thanks, I'll replace the cobble with carpet when I have more string.
why the hell wont my motherboard detect my pci e nvme ssd as a boot option
i have the ssd into a pcie adapter
debian installs on it fine but the damn motherboard doesnt see it
Mobos are wack.
firmware?
@gloomy sphinx I had issues getting mine to boot as well. I had to do something in the bios settings, but I can't remember what
I think it was something that switched my port from m.2 to nvme or something
I have a Asus z97a. Every guide I looked up said it won't work, except one. I can't find that one now
Oh, and also, every now and then I get a kernel panic on boot right after grub. I have to turn pc off and on (not reset) and try again. Sometimes 3 or 4 tries before it actually boots. Once it boots, though, it's fine
I just need a newer board :p
my poor mobo does that too
Yes
Is it possible to shut up a note block?
Hi
What the fcuk? :D
[09:03:23] [Server thread/WARN]: Mismatch in destroy block pos: BlockPosition{x=0, y=0, z=0} BlockPosition{x=-29, y=68, z=-130}
same
you know the sweet chili heat doritos?
I wonder where @fallen oracle went
spent his retirement funds
that bitch
<electroniccat> am gon go lie down, if stuff breaks an mini is around, blame him; Otherwise, blame Z for encouraging me to push or something, nite <---- all just pretend I didn't read that
lol
Man, ppl be updating fast
I wish they would be as fast for updating java versions....
We hit 7% Java 11 or higher usage a couple days back
what do you mean? isn't java 7 good enough?
Only latest LTS is good enough
ptero runs java 8
so there is probably a big chunk
if pterodactyl moved to java11+
Gonna try and update to java 11 this weekend 
You can specify your own docker image for ptero
Most people don't though, god knows why
It just defaults to their java8 docker image
With have a whole bunch of CI to build our docker image
The image automatically gets the plugins and the server from Nexus, the configs from git, the world from git-lfs
You can run it out of the box
Not that often
I plugged some device into my router and it got an IP address outside the DHCP range
and has no hostname
o.O
oh, I think the LAN ports apart from the first one are blocked on this router
at least I remember something stupid like that
oh god dammit
I didn't log out of the router while connected through LAN, now I can't log in through WLAN
Pepper 1.37.445 when
Oh
Wrong server
@olive garden thats hongarian routers for you
I doubt you own anything that works properly /s
you break my heart :(
Well after fucking around with images in java for a while here's my result. I'm done for the night. Got lots of cleanup to do on this code later lmao
Also need to add more stuff in the image
@fallen oracle when you wake your ass up, there's a v1 example ^ lol
A list of your plugins
None that affect spectating entities.
can people fucking stop with that
Is there any official news obout the performance of 1.15?
Just because you think that none of your plugins are relevant to the issue doesn't mean that none of them are
I know that the official recommendation was to use 1.13.2 rather than 1.14 builds
as far as i know, chunk gen is still shit. chunk loading if already genned and entities are better though
so, wb fill your world and you sohuld be ok
Simple, what's that for?
wat
spigot resource banners
cool, what will it be used for?
resource banners :p
:p
anyone can put their resource into the URL and it will dynamically generate an image like that
stars filled in w/ how well its rated, etc
Then they can put that in the forum sig
Or wherever
neat 🙂
would be cool if it could pick 3 random resources from a profile and generate a longer banner
like 3 of these next to each other
yep it will
this is just like my 5 hours of feverish coding
i have plans to implement by author
and also show an author's profile, like adding all their resources ratings to show an author rating
cool 🙂
MiniDigger, Spring is naise 
spring is oof
ktor or bust
except spring isn't just web
but that looks fun for kotlin
LOL
That was good
U finally ditching php?!
Nah taking a break, lol. Glare challenged me to write an MC proj, so I accepted and chose to do it in spring
:O
oh, it's probably taken sideways and rotated with the rotation flag
because mobile devices ig
If i lick it does it taste like rasins?
just IRC things
lul
gives ^-^ a fisting
love getting that first thing in the morning
Sideways loading images is the best party trick since pre-sliced bread
(Vertanzil) Smithers insist on a fisting - length 6s - 111 likes, 3 dislikes (97.4%) - 16,711 views - Don Nguyen on 2013.08.23
I prefer border-to-center image loading
Nothing like waking up feeling like you didn't sleep \o/
man when will we finally get sleeping pills
same
as in pills that make you feel like you slept
one day™️
I was born in le wrong generation
I mean
Do you suffer with any aches or pains?
Your birth was wrong
if you was asking me, I basically have a joke that I have my grandfathers knees \o/
must be the weight of your sins on your back
Probs
smh
Maybe it’s just magma‘s weight sitting on your shoulders
that's what you get for trying to bully a demigod
technically there is pills that makes your sleep go away for a couple of days ^-^
yeah but you can't take them for years on end and you crash pretty hard after that frostalf
true
that's just sleep with extra steps
but they exist
You could also just stab yourself for never ending sleep
and I have seen people take them for years on end XD
are you not paying attention
But that’s not the best way either 😂
I don't want to sleep
ever
Anti stab yourself?
imagine how much work I could get done if I could work 24/7 without ever getting tired
well, unfortunately our brain dictates we need it, and those that tried to never sleep either went mentally crazy or died
that's a massive amount of shitposting I could add to my schedule
we just need to get the meds right frostalf
Pfftt you would just sit in your room masterbating watching anime and drinking monster
lmao
why wouldI drink monster, I would not be tired
well, you can be the first to test them
nah I'll spike cat's tap water with it to test it
And thats the one thing you pick out of that sentance thats wrong lol
oh sorry you're right
He was right yes
what kind of degenerate would watch anime for masturbation purposes
I forgot to say he dislikes anime
that's what hentai's for
he&
anime is poop
manga is where it's at
anyways, as for the testing of no sleep pills. I would probably be scared to test such things, mainly because of the history behind removing the requirement to sleep has had very permanent negative side effects lol
so did brain surgeries until we started getting them right
that sounds like a dude i know
The major issue is the brain cleaning out all its shit
nvm discord was too scrolled up
lol
that's fine just use the java garbage collection
instantly forget anyone that is dead
just use G1GC smh
Sleeping basically has some effect on your brain that "opens it up" to clean up all the biological waste/crud that gets shoved in there in the day
java garbage collection plugged into my brain pls
I think we should throw ^-^ into the garbage collection
I'd pass through it untouched
I fear no GC
or just freeze from a lag spike
do you?
anyway all of this quality banter I've been showcasing has made me hungry
bbl
look at my cores, my cores are amazing
now to get this rgb under control
give 'em a lick, it tastes just like burning
not sure if trolling or dum
-1.5 days, lol
3 more days at least, just go use spigot instead
wait, vanilla
Not even an option to use Spigot.
God, I've not even built spigot yet
That patched spigot, didn't compile it doe
I mean, Spigot still compiles CB...
Had the odd thought that we should have a --masochist flag to compile CB/Spigot as part of the process just so that it's in your local maven repo 😄
so, are there any like cool (and fairly stable) world generator plugins?.. i run a HUGE server of like.....4 people, and some times exploring the world gets kind of boring because you just see the same types of structures over and over like village and wrecked ship etc and was wondering if there is some way to make exploring more interesting
wow why is it wanting me to log in to see those?.. spigot pages never did that before for me
Because they are paid probably
.............oh
okay im too cheap to pay for any thing
Too bad. This is what you miss. https://www.youtube.com/watch?v=Z-jhJLOHPvE
This is my first cinematic project and I am very happy with the outcome of it. This was fan made as a cinematic trailer for the plugin Epic World Generator. I am going to be working with this coder/plugin creator more in the future! So stay tuned for some more cinematics of t...
(fnutt) [Minecraft Cinematic] Epic World Generator Plugin - length 2m 40s - 143 likes, 1 dislike (99.3%) - 11,533 views - MSU Cinematics on 2017.07.24
no! i don't want to see what i'm missing! get it away from me!
ewg is not worth the money rn
Depending on what you want, you could always use some of the older generators like OTG, pregenerate what you need and use that
RWG?
The second plugin you linked
Is it any good?
am 2 cheap to buy plugins
rwg looks more like someone smoothed out the world, and added custom trees, no fun
presumably that is more realistic
the majority of earth doesnt look like MC's amplified setting yknow
I'm Norwegian, I beg to differ. I can't walk 5 meters without bumping into a mountain or a fjord
why play video games if you want realism lul
There's a reason people found the beta terrain so interesting, it was wacky and weird. I've been considering adding a small patch of GLACIER for my users, just to have some of that funky terrain
is 1.15 stable?
There have only been a handful of releases, so I'd recommend waiting a bit.
alright 😄
Paper 1.15.2 ETA?
eta
did these people miss a message
who already tested 1.15 with 25+ players?
no one probably
Don't wanna be first
.addcmd pstats https://bstats.org/plugin/server-implementation/Paper
.pstats
wow 15% of servers are still on 1.8
that's actually matches up with the statistic that about 15% of server owners are autistic
so i'm not surprised
@bleak apex we have tested it
we're currently running 60 at 20 tps
playercount hasn't gone higher yet
Only 15%?
Oh, thx 🙂 But how many tps it was on 1.14.4?
Just on 1.14.4 i have only 9-10 tps with 30 players
If you are on 1.14, updating is a nobrainer
1.14 it would be down to 15-16 already
sometimes tps drops tho
it's gone down to 17,5 a few times and then back up
@brittle mica so its safe to upgrade to 1.15 paper?
Mine's always at 20 but that's because I have 4-7 players
it's not "safe" but it's safe
i mean are there crashes?
nah
anyone was saying something with 1.15 launchers
I'm gonna stay on spigot until mojang's done with 1.15
crashing ?
something with anvils idk
interesting idea - can't the server open inventory windows on the client? could you just intentionally crash clients with that?
:^)
it's not like this is the first way you can selectively crash a client
You can crash the client in many ways
yea tru
I've heard that explosions of TNT lag less on 1.15. Is that true?
the client doesnt die anymore yeah
Oh thank the heavensPaperMc crew, Paper for 1.15 is out. Thank you guys ❤️
sliced lime says there were some not-just-client side optimizations too iirc
Tnt ja Miles better
So, will the Spigot forks over on McMarket die? Lel
there will always be stupid people making stupid forks bought by more stupid people
So there is indeed a server side performance increase with 1.15 or am I misunderstanding the conversation?
Morning
morning even its 5pm and just woke up xD 😛
Lol
sounds like a regular saturday
paperspigot
@cunning raft [Auto] We're now known as Paper.
ok good
poopspigot
toiletpaper
wait... if those forks use Spigot, by selling them aren't they distributing Mojang's code?
Timolia already did that as well haha that's their actual internal name https://tr7zw.dev/u/1576092051.png
Lol
Seeing that most of them are selling the final jar....
I doubt anyone is not just selling the plain jar
selling final jar is definitely against tos but yea requires mojang to do something prob
lets sue the poopers
so i wanted to install windows 7 ultimate using VMWare. And it somehow manages to install windows 7 home basic 
rekt
lmao
i need ultimate cuz i want windows media center
why do you even need that? kek
cuz we use it for out tv
wat
but the motherboard we bought doesnt support legacy
so we cant install W7 on it xD
yet it has floppy and like the old video ports support 
i forgot what the old bootloader is called
is it just BIOS?
General gist is that those forks are often breaking multiple licenses
oh lmao
They don't provide source so they violate my personal copyright
they sell stupid forks so they violate my personal space of sane people
does Forge support Java 11 yet?
asking in paper discord
Lol
ask cat, I'm dumm
Just ping them.
I don't want to ping anyone
@pulsar wigeon no u pls
;-;
We don't distribute our fork to anyone do we don't need to distribute the source to anyone ;)
@hard thistle what happened to your gum?
@austere ivy Roddy Piper stole it.
Why did I think YAML was a good file format for data storage three years ago. Normal startup: 1-2 seconds; has 1 arena: 6-7 seconds.
Actually, I think the file format isn't the worst offender, it's probably the ~800 heads it loads in on startup.
Since I have a messages.yml with ~3000 values in it and that doesn't have any problems.
The file format choice is still bad though.
Yeah one of my projects loads like 24 files with 400+ lines each in YAML. Only takes a second or two.
I guess it just depends how much data there is to load.
Z, idk if you're around, but the auto generated Javadoc for 1.15 is not working properly.
BRB, going to add dfu to mcmmo
The search bar is broken. Everything returns a 404.
wtf is dfu
Datafixerupper
o
Yeah, it's definitely the heads menu. It consists of 11 submenus which itself have anywhere between 200-1000 lines of XML and load in total about 800 custom textured heads.
Should cache them
caches are for pussies
Paper even offers a nice API for dealing with profiles
Yeah, I'll do some caching. At some point.
cat: just use worldedit, we expose DFU :^)
Lol
Also, I don't think I've seen anyone other than me use the XML stuff for GUIs, so that was a waste of time 🙂
Yeah I use your lib but never used the XML.
Mainly because my end-users probably wouldn't understand it.
the xml stuff feels archaic
I do need to rewrite all the GUIs at some point.
Well, I don't expose the XML to the end-user - I just use it internally.
why not just hardcode stuff
Why would I?
Well I allow high customization to the GUIs in the project, but they are just created inefficiently, so I need to just rework how they are created.
because XML is annoying and now you have to do a bunch of parsing
The parsing is already handled though and I personally quite like XML
wiz did you ban or block NickAc
Also need to make sure I'm on the latest version of the lib. I've noticed that some of the GUIs have more issues than others because people can put items in them and then close it and lose their items.
If you don't expose it then I see no good reason to do it at all tbh
neither duck
im surprised
but not everyone loves themselves so I could see the appeal
i kicked him
Why don't you like XML? Sure, it's not the most concise format and there are definitely things that I'd have changed, but it's overall a pretty solid file format imo.
kinda ugly imo
It is but since my plugin is all about letting players do the configuration, it's easier to give them something they are comfy with.
I use XML for configurations in my stuff :)
❤️
xml is a very pretty format tbh
very structured
not arguing for or against its use for anything
it's just very neat
It's not my fave thing
I think when I rewrite all the GUIs, I'm going to design some kind of builder-type thing for it. I've noticed that when I handle not letting people put items in the GUIs, I use the same method in multiple classes.
I don't see the reason behind putting your inventory configurations in a separate file at all if they're not going to be exposed
I don't really care about the format at all
So I'll probably make some kind of "helper" class to work with it.
But it sure as heck beats json for represention of data
And yaml, and basically all of that
Because it's easier for me to work with, City. I can re-use the same class for multiple different GUIs more easily, the XML is smaller than the code I had before and the XML is easier to add/remove stuff from imo.
Only reason yml is used in bukkit so much is because of the darned config apj and the general fear over server owners being morons
Mhmm
First person to ping me
Can people stop circlejerking about discord pings
oH nO sOmeOne meNtioNed Me BettEr KiCk
why would I say anything to wiz
I'd rather talk to a piece of horse shit
Stef, wdym by re-use the same class for multiple GUIs? Just like some static helper methods for creating the GUIs?
Lies?
Pretty sure it’s your fault
I think you broke it
You’re the last one to touch it, you have to put it away
aka fix it
how am I competing with you
you’re a factions server
yeah but we all know the only players it ever gets are me and my friends
so, 1 player max
why’d you target me instead of like hypixel
I create an instance of class X for gui 1, gui 2, gui 3 etc. Even though they are different GUIs they all work with that class. There's even some extending between different GUI classes, which is, not really anything intentional, but it works I guess.
I don’t understand lol
Interesting.
Stef oh yeah once my server resurrects itself I I’m getting a ton of errors from IF
Yeah, I'm not too happy with the way I approach working with your GUI lib, so I definitely want to rewrite it to clean it up and make it more efficient.
mainly to do with click events
I basically ended up jerry rigging it around to make for the different GUIs.
I’m not sure how I’m supposed to be handling click events but it’s a lot of red text I’ll tell you that

Hes humping the crate!
I like that new emote very cool.
Barty if you’re not factions then what is your server?
Should just be a case of setting a lambda to either a Gui, a pane, or a GuiItem. But, there have been changes regarding handling clicks, so if you're not on 0.5.14 yet, I'd recommend updating to that first and seeing if it helps.
ur a factions
You can be the server and I can be the cool one
Yeah. My top issues were having people be able to lose their items in the guis so I was just throwing in methods to fill with panes.
Even though some of them use the global click event to cancel, but then on some of them I also do some cool things with the GUIs to go back to the previous page and I think the global click event cancel just ruins it.
Ah man what a shame
Stef, once my server is no longer dead l’ll update to 14
0.5.14
So I just need to find a happy medium.
I think something that could be cool is an inventory framework just like Stef’s but the GUIs are actual classes, and the items are fields, and the interaction lambdas whatever are methods.
is there an option to reenable zero tick farms?
Extend AbstractGUI, that kind of thing.
You can make your class extend Gui if you want actually, that's fully supported.
I'm using it myself in some classes.
Oh really?
Huh okay
Barty because it’s vanilla mc
Technical players exist
Also barty what is your new server going to be?
and im the admin and i can do anything
The only thing you can't do is have the class extend Gui and then load that from an XML, so if you do extend you're stuck using normal programmatic ways of working with your GUI, but I don't think most people really mind that.
na i just ant it as vanilla as possible
XML seems a bit wonky for me because you still have to programmatically add the click events
So barty, new server?
no its for a few people and i like zero tick farms
Yes, but you can reference the method in the XML. So:
<item onClick="myMethod" />
will then call myMethod when you click on the item.
Yeah that's pretty cool. I just prefer the program matic way.
Sure, use what works for you.
@spare venture so, smp earth for the public? ;)
Also yes I like programmatic things BUT I have all my strings and such in config.yml
Barty how is smp earth bad?
The gui rewrite is on my list to do. Going to work really hard on DRY since I heavily DRY in the gui classes.
I just poorly implemented the GUIs, made them work, didn't really care how they worked.
so.. helper classes that you have to instantiate for no reason???
If the method really doesn't belong to anything, then a utility class is fine for that imo, just don't make your entire program static.
not EVERYTHING has a state, I sometimes just want a method that gives me the colored string of something Hershey
yeesh*
typing on a phone is extremely uncomfortable one moment
I might try some kind of helper / builder class for the GUIs so I can do something like
GUI gui = new GUIBuilder().disableAllClicks().addFillerSlots();
There we go that's better.
I think one of my biggest challenges is making things OOP.
There was recently a Spigot thread I was talking in, kind of interesting:
In it I linked to this: https://www.reddit.com/r/programming/comments/2h7g3m/oop_alternative_to_utility_classes/ckq3t1w/
Like..
anybody got 1.14>1.15 TPS data yet?
Here's the issue I have, is that people complain about "Enterprise" Java.
"tps data"
Fuck java
Where you have factories of factories and builders of classes and a ton of overhead for not really doing a whole lot
like everyone's tps was homogenous in 1.14
Fuck strings
lmfao
Fuck this api
BUT THEN when you say "uhh just use a static helper class" they're like BuT tHat's nOt oOp
OOP takes some time to get good at, but the more you use it the better you get at it from my experience.
Yeah it is one of those things.
i was looking for and anecdotal better/worse
I just don't understand why people are like YOU HAVE to make this OOP, no static, and then they turn around and then they're like "uhh enterprise java is so bad you write so much and you do nothing lol"
well ask for anecdotal better/worse then
instead of some peer reviewed scientific results LUL
Stef I'll probably hit you up in a week or two when I redo the GUIs to get your opinion on it.
that IS what i asked for
Java can do the same things as some other programming languages like Python. Sure, Python's syntax has a lot less characters but just like with Python, you don't have to go nuts OOP.
Well, I'd preferably have a language which still follows good (OOP) principles, but handles a lot of that stuff for you. I.e. a language which allows you to specify if a field should have a getter/setter, without having to write an entire method for it.
Sure Java doesn't have global functions but just make a class called GlobalFunctions and have a ton of static methods! If it's doing the same thing what's wrong with it?
Kind of like Kotlin then, stef?
Haven't used Kotlin much, but if it does, yes.
And if you read the Spigot thread I posted above, you'd see someone recommending me Kotlin's static thingy helper whatever.
Essentially, the biggest problem I see is that it's very hard to make things OOP if you can't modify classes that are in the API.
For example, let's say you want to have an economy and you assign a balance to each player.
You can't do Player.getBalance(), you have to either make a static method that takes in a Player and spits out their balance, OR you mess about with OOP and make "PlayerManager" and "PlayerProfile" or whatever but the PlayerManager still has to have static methods.
That's the main issue, SO how do you fix it?
Yes, that's usually where utility methods come in - you need to perform some operation on a class, but that class isn't yours, so you can't implement it there, so you kinda just make a utility method for it.
Kotlin has this feature where you have some fancy syntax that lets you do Player.getBalance() after the fact.
BUT.
GUESS WHAT IT COMPILES TO?
A static method that takes in a Player.
Static, yes.
So what's wrong with just making the static method yourself? It's doing the exact same thing.
But that's all for the compiler, nothing you have to worry about.
Just make all your MC GUIs in C# ez.
JVM is probably doing a ton more hacks than we're doing. We don't have to write "Enterprise Java", sure if you want things to be easily extendable and modifiable, go all out, Java has the capabilities to do that
BUT.
You don't HAVE to do enterprise Java if all you want is a simple static method that takes in a string and spits out another string that's colorified.
We're writing Java as if it has to look nice or we're trying to impress someone.
If it's 1. worse performance 2. harder to write 3. more complex to think about then why are we trying to make everything OOP?
OOP is a very powerful tool, don't get me wrong.
For example, something we're all familiar with, a Bicycle. It has state and ways to interact with it. Perfect for OOP.
its more about good practice than anything i think
The advantage of using such an extension method over a static method yourself is that you show that a Player has a balance property and that a balance is tied to a Player. Such a thing isn't the case with a static method (in this example, it's easy to figure out, less easy if you have 5 parameters), you don't intuitively know that Players have a balance property.
Understandable, Stef.

I'm just saying that Java could be as easy to write as Python, we're just making it harder on ourselves for "good pratice."
OOP is a very useful and powerful tool, some things would be extremely hard to make if we had to solely make it in procedural/functional programming.
However Java provides the flexibility of NOT using OOP for everything, a magical thing called static.
I'm not making a case for static.
I'm just saying not everything needs a Factory and a Builder and 10 classes just for one thing.
despite lots of red server seems really happy so far, unfortunatly its not a lot of data
Aikar's Timings Viewer - View Timings v2 reports from Paper and Sponge
Java is a good language, we're just unnecessarily making it harder on ourselves.
i don't exactly know hot to read these things, i just see big angry red numbers and try to interpret meaning
yes barty that's because your timings looks like someone spilled cranberry juice all over it
orange juice
alright fine those look good.
Factories are usually only valuable for situations in which you have two options for the class you want to choose. If I want an instance of class A, I can just do new A(). If I have two classes that extend A, though, B and C, I'd have to choose which one I want. I don't want to do that in a method that's supposed to do something else. Which is where the Factory comes in: it decides for you which class is more appropriate to use, so your method doesn't have to worry about that and you don't have to write that logic out multiple times either.
hol' up here, 1.15?
there's a pin somewhere (maybe in #paper-help ?) on how to read timings
A factory for a class of which only one type exists is pretty unnecessary imo.
You're right, stef.
I'm mainly just talking about this, which everyone loves to point to when they think of Java:
That's a lot of classes.
Yes, Java is quite known for people applying all sorts of boilerplate to it. And there are definitely languages that do this better by baking such design principles into their language, so that you don't have to do it yourself - Java isn't really one of them though.
I'm just saying that it doesn't have to be like that.
Which means you either don't follow them, but that can definitely hurt code readability and scalability, or you do it yourself.
Sometimes you just have to sacrifice beautiful looking code.
I'm 100% sure that Python code can be ported to Java with little changes, except for the syntax of course. Global functions and such can be put in a GlobalFunctions class, you get the idea.
Java doesn't have to have all these fancy things, you just use it to do what you need to do.
Not everything needs to be super extendable.
Well, that is the idea though - you allow for extension, so that if you do need that extension later down the line, you can easily do so. It makes Java code very scalable imo. You can choose to not do it now, which means that you may have to do it later, or you do it now, which creates more work now, but saves time later down the line.
I usually opt for the latter though.
So why don't we do all of that for languages such as Python?
I think as stef talked about earlier, some languages just have this stuff baked into it.
Whereas Java doesn't really.
you can use design patterns in python too 
Well, I think it comes down to multiple things. Java is usually used for larger codebases - you don't see people writing a quick helper script in Java, but that's much more common in Python. This means that a lot less people worry about "we have to follow the following 20 principles", but just kinda make it. From my experience, this makes Python much less scalable than Java, but usually this scalability isn't needed in Python (for such script things), so their decision is to save time and code now, because the chances that you need to scale it further are rather small.
Python is also less OOP heavy. Java is a very pure OOP language by design (and sometimes to a fault imo), while Python definitely has OOP constructs, but not to Java's extent. A lot of principles we went over - factories, builders - only really apply to OOP code, so you don't use them (as much) in Python.
Although I'd argue, that stuff like SRP and encapsulation should definitely be used in Python as well.
stef writing essays again
Java is very pure OOP but it also gives us the ability to choose if we want to use OOP or we don't want to use OOP depending on the situation.
Sometimes we have Bicycles or Lamps that have state and methods to interact with it, sure, that's good for OOP.
But sometimes we have things that need to take in an input, and generate an output, and that's it.
And we can just use static for that. If static is a super bad idea, why did Java add it?
Static isn't a bad idea, it definitely has its use cases and such utility methods like you mentioned are one of them. The point is that if you can make it OOP, then doing so usually helps you a lot more in a language like Java, since it's very much OOP-oriented (keep in mind even your static utility methods are still in a class).
How would it help you, though?
did you not read what he said at all?
Hold on hold on.
I have one piece of anecdote that I'd like to share.
I get what you're saying, I agree with you, definitely, I just think that sometimes you can make things OOP and it helps you. The point I'm trying to make is that people are taking that to heart just too much, and they're overdoing it.
For example:
Recently, I was upgrading a plugin to 1.13+, it was pretty messy internally and I decided I wanted to fix it. In it, there were a couple of GUIs.
The GUIs were basically structured like this: you have a Listener dedicated to the GUI, and you have a BlahBlahGUI class.
Inside the BlahBlahGUI class, there was a method that generates a GUI. No state at all, just a helper method that makes the GUI and spits out an Inventory.
In some of the GUIs, it had parameters for players so that the GUI could be tailored to them, but that's about it.
The GUI was instantiated for no reason. Instead of making those methods static, the BlahBlahGUI class was instantiated whenever it was needed, then the method was called, and then that instance was never seen again.
I'm sure it took a veeeerry small toll on performance, but a static method call has to be cheaper than instantiating an object, then calling said method, then garbage collecting it.
And the thing is this isn't a small little plugin, this is a plugin with thousands and thousands of downloads that a ton of servers I've been on personally have.
Looking back at my wall of text it's a very silly piece of anecdote but the entire point I'm trying to make is that people are taking OOP too far, to the point where it has absolutely no benefits. I agree with you, Java is very extensible and there are use cases where it's very beneficial to have factories and builders and all, but just too many people use OOP because it's "good practice" or "that's the way Java is"
I definitely agree that creating such an object, to just create a different object again is useless (it also has a heavier toll on performance like you said, although unless you're creating ten thousands of GUIs per second, it probably won't be noticeable). I'd say making that method static would be a good idea. However, there are definitely people who will argue that "the creation of the object (and its lifetime) is not the responsibility of the Gui class". Which would mean that your class is doing multiple things at once, which you don't want since every class should have it's own purpose (reason being is that you want your system to be divided into nice chunks that each do one task, so that you don't run into issues of trying to do task A, but then task A also does task B which you don't want). I'd say this ideology goes a bit far, but such reasoning would be a reason for making a Factory for that class.
I myself usually only reserver builders for classes that have a lot of (possible optional) parameters, so I definitely wouldn't use that here at all, though.
Agreed.
(As a side note, if you can remove that entire creation method altogether and move its code to the constructor, do so, the constructor is there for the creation of objects, no need to make it more complicated.)
Well the method returns an Inventory.
Can a constructor return a type different than the class itself?
No
But, it's a Gui class, which presumably needs to do stuff - it may be better to keep that Inventory object internal to that class and let that class handle anything that needs to be done to that Inventory.
Nothing needs to be done, it just shows the player an Inventory.
Unless we stuff the Listener in there too.
But then every time we create a new GUI, we also create a new Listener.

Registering Listeners often isn't really a good idea though, since that can degrade performance since it needs to insert it by priority, which can become an expensive operation if you do it often.
here are some new timings, server is happy even with 32 render distance server side
https://timings.aikar.co/?id=088fe83ecf2c40ec9f6a0a2d4bea7d1f
Aikar's Timings Viewer - View Timings v2 reports from Paper and Sponge
Right, yes, it's a bad idea. I wasn't actually thinking that haha.
it's not even an "insert by priority"
it re-bakes the entire list every time you add or remove a handler
I wanna join the army
Good luck, City.
So a global listener for your GUIs might be better there. But, then you need to know where the code that handles the interaction with the GUI actually is. If it's in the listener, you may not be able to keep a global listener. In this case, I'd say that moving any kind of interaction code to the GUI class works better.
Now you've introduced state to your GUI class though, so then you might want to keep that Inventory internal and just provide a show method on the GUI for opening the GUI for players. (We ended up with an OOP-based approach, though 😉 )
can furries not join or what?
more like people with untreated autoimmune diseases can't
apparently my removing a vital organ wasn't enough for them
me**
Thyroid?
ye
Did it make you feel better after you got it removed or just prevent it from getting worse?
Sorry man that's rough.
balancing thyroid hormone is super hard lol, some people spend years trying to get their dosage right
Yeah no kidding sometimes my family forgets if they took their daily pills or not.
I've gained a considerable amount of weight, I've no energy and I feel like crap all the time. But, it is what it is.
At least I have a sexy scar
You either feel horrible if you don't take it or you feel horrible if you take too much.
yup, different kinds of horrible but horrible nonetheless
Stef, maybe you should have a shot at refactoring the plugin, lol.
I'd be interested in seeing your approach vs mine.
It takes up to two months to notice any difference when changing the dosage, and so it's super hard to get it right
Anyway, treat your thyroids with respect, people.
If the plugin isn't too large, sure
Eat your iodine, avoid being near nuclear disasters.
don't go to chernobyl or fukushima
also avoid being born with any other autoimmune disease because then you'll most likely end up with other ones
ok fix but y
wrong server
IRC will never forget
Fun fact, City, my mother (who has hashimotos) gets super sick when she has iodine.
most of your iodine is stored in your thyroid, it can do whacky stuff
iodine is worse than hitler
That's why radioactive iodine is a good treatment for hyperthyroidism
stef would you like me to send you a link to it or..?
because it can attack the thyroid locally
Yeah, sure
What sucks is that my Russian surgeon decided to also diddle my parathyroids
idk if he just thought I deserved to have less calcium for a couple or months or what
come to think of it, most of my doctors have been russians and all of them have sucked
get better doctors then
i tend to avoid doctors unless its a real emergency that I cant fix myself. theres a reason they call it "practice" and that just doesnt sit well with me lol
i'd never trust a russian to operate on me
I didn't really have a choice because all of our endocrine experts are Russians
ive had an operation a while ago and it was really uncomftrable how casual the doctors were talking while waiting for me to pass out
I think the soviet union invested a decent chunk of money into endocrine research after chernobyl
@worn ember to be fair city doesn't really have a choice, would you prefer to be operated by a swede instead?
also ^^
we have one of the leading medical research hospitals but uh
the russians are better
Loads of people ended up with thyroid cancer in Ukraine and (especially) Belarus
so they needed people that could treat that shit
Russia in a nutshell
that's what happens when you don't know how to do nuclear
also killed loads of swedish reindeer so like fu
everyone should just use hamsters on wheels for energy production
we wouldn't have a metric fuck tons of click baity videos on youtube of people breaking into the exclusion area
and we wouldnt have tons of cool looking mutated fish
o that's very true
eve saw a dude swim in the radioactive lake
plus now we have a fun postapocalyptic wasteland in the middle of europe
that's a yikes
it's still a thing, some of it has decayed (obviously) and they've also shot at it(?) in order to see if they can break it up
what
anybody know if coreprotect works proper for 1.15? (i know it wont handle 1.15 blocks yet)
You can always test it.
coreprotect cant even handle saving potion data in chests anymore. its a dead plugin
oh? been using it all of 1.14 fairly successfully (except for when our host's DB dies 15 times a day)

