#dev-general
1 messages · Page 246 of 1
any way to make releases/tags from intellij
new taG?
oh
I cant read
wait
where do I put the version
on github theres Version and Name
in intellij theres just Name
that's a release
oh
not a tag
im pretty sure you cant
oh
a release = also a tag
Should I take ap computer science lmfao
What do you guys think is Microsoft's plan with Minecraft Java edition
I have a feeling they'll wanna get rid of it in some way, since it makes way less money than Bedrock Edition
Probably not
rather they would try to unify the diff platforms and introduce other things from bedrock in JE
Ye do it :0
or atleast get Bedrock close enough to JE that people wont care much
is bedrock still a mess?
Yea
ig itll improve over time
apparently performance is much better on bedrock tho ive heard
I think there still are the fall through world issues from float precision
lol
You can use a custom mod launcher too I think
in JE u dont pay for anything, except u give ur wallet to servers instead 
How come whenever I ctrl + click a class that has @NotNull in it my IDE gives a billion errors saying that it cannot find JetBrains and stuff?
then I have to invalidate caches and restart
Probably because jetbrains annotations was used as a compileOnly dependency
I broke my keyboard
Idk how
I do alt + 21 and it goes down 21 lines then pastes §
where does it do that? everywhere?
seems like you binded it to something. or the app you're using it in has that key combination binded to something
Everywhere
It does that for me too
It pastes § for me asw
And on IntelliJ IDEA it goes down 21 lines too
yeah
I'd assume that alt + numbers goes down the typed amount of lines
And alt + 21 is the code for §
well you could probably change it to something like shift+alt+number
if that's not taken already xD
bit of a random question guys: anyone got any idea how to use in-memory caching with OkHttp?
no matter how hard I look, all I can seem to find is the Cache class, which is only for file caching
you really do rethink life when you are working at 2 AM
still php?
bully ur boss into letting you rewrite the php in another language
elara
we actually wanted to do that
since the other php developers don't work here anymore
but it's way too big of an application
this has been in the works for more than a year now
we're so close though
even though it's still crappy imo
for reference this is the db
every line is a relationship
lel
That is beautiful
🥲
i need to take a crap
okie
okie
I dont understand my issue
I'm getting this exception:
[00:14:03 ERROR]: [org.bukkit.craftbukkit.v1_16_R3.CraftServer] null initializing SMPPlugin v1.0.0 (Is it up to date?)
java.lang.NullPointerException: null
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.loadPlugins(CraftServer.java:393) ~[patched_1.16.4.jar:git-Paper-323]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:206) ~[patched_1.16.4.jar:git-Paper-323]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:936) ~[patched_1.16.4.jar:git-Paper-323]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:178) ~[patched_1.16.4.jar:git-Paper-323]
at java.lang.Thread.run(Thread.java:832) [?:?]
even with no code
in my onEnable method
like nothing
its still getting that weird npe for no reason
im also packaging correctly
the plugin.yml and classes are there when i extract the jar file
Is it up to date?

that's weird
send your plugin.yml maybe?
worked before with no changes toplugin.yml
but
main: com.github.pulsebeat02.SMPPlugin
name: SMPPlugin
version: 1.0.0
description: Plugin for the SMP Server
api-version: 1.16
author: PulseBeat_02
prefix: SMP Plugin
commands:
status:
description: Sets your current status
permission: smp.status
usage: /status set [peaceful | war]
permissions:
smp.status:
description: Allows the user to set the status
default: true
smp.*:
description: Allows access to all commands
default: op
if anything it would throw invallid pluginyml or whatever
yea ik but i googled the error and it said something to do with the plugin.yml so i wanted to see it
it looks fine tho
smp.*:
oh jesus no please leave wildcards to the permissions plugin
hm
like just a server with one plugin
might want to put quotations in this tho /status set [peaceful | war]
yeah
weird af
but either way
the npe still there
idk why
maybe my server jar shit
let me redownload paper
lol
lol
yea thats really weird ive never seen that before lol
i kinda doubt it but its possible i guess
thats my main plugin class
if i comment out
everything in onenable
it doesnt work still :/
dont use Objects.requireNonNull there
just null check normally or ignore the IJ warning lol
yeah lol
i did
however
see this as my warnings
File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
And
/C:/Users/Brandon Li/Downloads/MinecraftVideo2_Master/SMP-Plugin/src/main/java/com/github/pulsebeat02/SMPPlugin.java: C:\Users\Brandon Li\Downloads\MinecraftVideo2_Master\SMP-Plugin\src\main\java\com\github\pulsebeat02\SMPPlugin.java uses or overrides a deprecated API. /C:/Users/Brandon Li/Downloads/MinecraftVideo2_Master/SMP-Plugin/src/main/java/com/github/pulsebeat02/SMPPlugin.java: Recompile with -Xlint:deprecation for details.
thing is
that isnt realted
that error points out it doesn't even reach to onLoad??
or even the constructor
dk the stages exactly
lol most defo not
uuh wait a second
that was another thing google said but it looks right
Does it say "Loading SMPPlugin v1.0.0" before the error?
it wont be right before probably
it should
actually it wouldn't
private final Logger logger = getLogger();
@Override
public Logger getLogger() {
return logger;
}```
this seems wrong
logger = getLogger() but getLogger returns logger
why are you overriding getConfig and getLogger
leave those methods as they are
lol
idk if that will fix the original problem but its definitely a problem
and bukkit tries to print that with the plugin logger
since it's null, it throws
lmao
you can conveniently fix it with some assertions and annotations :)
theres no warnings i can't imagine an error ever ocurring
It's warning you that you need to annotate both the field and the method with @NotNull
Don't assert it
It’s a joke matt
i just did the "smart" fixes that IJ provided lol
Don’t worry
o
also yea
if you thought that was my code you should have been more worried about the code itself than the annotation xD
Don't mind me, it's 5am
fair enough
Initialising with its own getter 😂
yo u guys know why i am getting this error upon load up when there is data saved.
[03:59:40] [Server thread/WARN]: at org.bukkit.Location.getChunk(Location.java:78)
[03:59:40] [Server thread/WARN]: at codes.biscuit.litcollectionchest.utils.ChunkCoords.<init>(ChunkCoords.java:19)
[03:59:40] [Server thread/WARN]: at codes.biscuit.litcollectionchest.utils.ConfigValues.loadChests(ConfigValues.java:89)
[03:59:40] [Server thread/WARN]: at codes.biscuit.litcollectionchest.LitCollectionChest.onEnable(LitCollectionChest.java:19)
[03:59:40] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321)
[03:59:40] [Server thread/WARN]: at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:332)
[03:59:40] [Server thread/WARN]: at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404)
[03:59:40] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.loadPlugin(CraftServer.java:359)
[03:59:40] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_8_R3.CraftServer.enablePlugins(CraftServer.java:318)
[03:59:40] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.s(MinecraftServer.java:403)
[03:59:40] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.k(MinecraftServer.java:367)
[03:59:40] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.a(MinecraftServer.java:322)
[03:59:40] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.DedicatedServer.init(DedicatedServer.java:283)
[03:59:40] [Server thread/WARN]: at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:558)
[03:59:40] [Server thread/WARN]: at java.lang.Thread.run(Thread.java:748)```
package codes.biscuit.litcollectionchest.utils;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.bukkit.Chunk;
import org.bukkit.Location;
public class ChunkCoords {
private int x;
private int z;
public ChunkCoords(Chunk chunk) {
this.x = chunk.getX();
this.z = chunk.getZ();
}
public ChunkCoords(Location loc) {
this(loc.getChunk());
}
@Override
public boolean equals(Object obj) {
if (obj == null) { return false; }
if (obj == this) { return true; }
if (obj.getClass() != getClass()) {
return false;
}
ChunkCoords chunkCoords = (ChunkCoords)obj;
return new EqualsBuilder().append(x, chunkCoords.x).append(z, chunkCoords.z).isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder(83, 11).append(x).append(z).toHashCode();
}
}
the issue line is this(loc.getChunk());
Location is null
hmm wtf? but it's not, the data.yml has the coords saved I believe.
The location isn't null
If it's getChunk, then the World the Location is in is null
Make sure your plugin.yml has load: POSTWORLD
And that a world by that name actually exists lmao
Isn’t that because the location you are on about isn’t loaded yet?
You need to ensure the chunk is loaded
@NotNull
public Chunk getChunk()```
Gets the chunk at the represented location
Chunk at the represented location
@NotNull
public Chunk getChunk()```
Gets the chunk at the represented location
Chunk at the represented location
Wat
If you try to modify a chunk that isn’t loaded you get fat errors
lol
Yeah but null?
Even if the chunk is unloaded it should return a valid Chunk
Your location is null I believe
That isn't loaded
That is where the NPE is caused
The location can't be null, otherwise it wouldn't be caused inside the getChunk method
@prisma wave not gonna add that lombok faq because someone had a hissy fit when I pasted it elsewhere and they said the info is outdated
I think we should just start recommending people to update java if they want the features that lombok provides
because they're slowly being added to java
He sounds like a butthurt man
ok since generics arent gonna work how should i do this head thing?
wat
am making heads plugin some mobs have special cases ie a sheep, bee, wolf etc
atm all mobs just drop heads
but i need a way to handle special cases
was gonna just use generic <T:Entity> then fun getHead(entity:T) then store in map but that wont work cos T isnt known when pulled from mpa
so whats best way to do
Just cast yourself smh
sounds like EfFort to me
Smh
postworld is right
but thething is
i just added dependancy to multiverse
and it worked
Yikes
I cba to crawl through all of that, but the first point is literally based off of experience -- very recently, using a method reference to a Lombok generated method caused weird internal errors which were very difficult to debug
lol
would rather go with your word on it than the other guy's anyway
he was so butthurt and was being a dick about it
Yeah the reply is pretty condescending
wouldn't even tell me why my info was wrong at first, just said "that's outdated"
I had to apologise to him just to get some information lol
spigot
Not surprised then
it was a shame because I thought the guy was actually a decent person
boy was I wrong
People can get toxic pretty quickly when you say their favourite things are bad
¯\_(ツ)_/¯
Hopefully once java 11 becomes mainstream people start to move away from Lombok anyway
yeah but that's gonna take a long time
eh
whatever
it'll happen within the next 4 years
that's a guarantee
might be 4 and a half actually
What's it? Paper requiring it?
ye
hopefully
paper said they're going to be bumping the requirement to every new lts release
assuming they give 3 years per release, that means by java 22 or whatever the next lts is after 17, paper should be at least 17
they may not do 3 years though, it could be done in as soon as 2 years
that's good to hear
Even though I really liked to learn to using Android Studio environment, I can't even with this potato pc..
do you use ij thien?
bm ij ultimate has everything android studio has right?
yeah it does
just checked changelogs
I use IJ for coding with it, yeah
thien if you use ij then you should be able to run android studio
But as soon as I turned on android emulator, my pc wants to burn already
oh
Is there a way to connect that to a real phone instead? 
¯_(ツ)_/¯
I only think of exporting .apk everytime on a USB cable then install
You can just connect your phone to your computer and hit the run/debug button and it'll install it and attach to the process
You have to enable debugging in your phone dev setting though
Yeah turn on USB debugging and android studio should show it as a device
and to access the dev settings mode, go to about and tap the build number 7 times
you'll know you're doing it right because you'll get messages like "you're 2 taps away from enabling developer mode" or something like that
"you are now x steps away from being a developer" that's the one
okay, im looking at the bytecode of stuff and this is pretty interesting
of what stuff
java already does the implicit else sort of thing we do
simple programs
1 sec
if(args.length == 0) {
System.out.println("Hello World");
}```
this for example, gets translated to ```
1: arraylength //puts the array length on the stack
2: ifne #13 //if the value on the stack is not 0, go to line 13
...
13: return
and then it has the printing thing in between 2 and 13
kinda cool
there's a dedicated instruction for arraylength too which is interesting
yeah I think conclure mentioned it
yeah
i guess it's easier to do it that way
switches are fun too
the fallthrough is just because all of the branches are done in sequence
and then if you add a break then it just uses goto to break out of the branch code
fun
Most compilers work this way with if and else
do you know how astore would work if there were more than 2^16 local variables?
would it just not allow that many?
Makes sense
I mean you can try it out if you want
wrong chat ups
does the dup instruction duplicate the value or the reference?
all i can find is
duplicate the value on top of the stack
but that sounds pretty wasteful to duplicate whenever you call a method?
is it not?
also copying primitives and references is basically free
i thought the method call popped it from the stack
so you'd need to dup it if you needed that object later
assuming it was a local variable
but i think it dupes the reference, according to an explanation i found
wait
idk
You load the variable and call some method on it
the variable still exists
you can push it to the stack again
hmm
what does internal in kotlin comlile to?
it scrambles the method name
to make it like module$methodName()
which is usually a good sign you shouldnt use it
yum
aload 0 // push reference to local variable 0 to stack
invokevirtual toString() // call toString method on top stack reference, consuming it
aload 0 // push reference to local variable 0 to stack
yeah
doesn't affect the variable
oh so in that example is the actual value of local variable 0 on the stack?
and then it puts a reference as well
the "actual value" is a reference
yes
or a primitive
yes, in any case no more than 32 or 64 bits
okay that makes sense
so in this example ```
0: new #2 // class Main$1
3: dup
4: invokespecial #3 // Method Main$1."<init>":()V
7: astore_1
then we duplicate that reference,
then invoke the constructor popping the duplicate,
and then store the original reference into a local variable
is that right?
yes
i was making getter methods in intellij
i didnt see that
weird
okay, rewritten the first episode's slides of the course - not sure about a formal script, this is probably enough to riff off?
https://docs.google.com/presentation/d/1qKUdPS2t6kVUpj3ECeSk1N_yBrkuY40fuTHCjGkopgA/edit?usp=sharing
might want a more catchy name as well
the Ultimate Spigot and Java Course
Sounds familiar...
The verbosity of the notes on the slides is almost script level anyway
Yeah that's what I was thinking
I'll just add some detail in the video and then attach a transcript with the slides
just did a test run, wasn't recording but it seems like there's enough to talk about
gonna do an actual recording tomorrow sometime
open_mouth
😮
this looks like good stuff BM
yea probably one of the best YT tutorial series out there if you go through with finishing it
yeah lol
dont fall into the trap of "write down this code here, ill explain what it does later" pls
thought so lol. theirs look so good
yeah carbon is amazing
ofc not, ima try and explain everything as much as possible
it's difficult to explain a java hello world to a complete beginner tho
what is public, what is class, what is void, what is static, what is String[], what is args, what is System, what is out, what is println
Yeah that is not productive
yeah it's a lot harder than something like python
Best side of java
i'll just gloss over it and say "write code in here for now"
After 30 hours (12 hours straight today :d), 2.3k additions, and .5k deletions, I present to the world docdex, a public bot.
@obtuse gale it's on now btw, and sorry for topic change guys
i need to go to sleep
congrats
Aww
oof so close to 10k
oh cool
Oo let me downloadé that
i’ve always wanted to see breakdowns like that for my projects lol
i figured github could provide it but never did
wakatime or statistic plugin
i use both
What's the bot do?
d;string
This object is too big to be viewed in discord, please refer to it's javadoc page: https://docs.oracle.com/javase/8/docs/api/java/lang/String.html
lol bad example
I've got a self-hosted wakatime instance because the 2 week limit kinda sucks
d;player
There was no direct match for that query, did you mean any of the following?: java.awt.print.Paper java.util.concurrent.Phaser javax.swing.text.html.parser.Parser java.util.concurrent.Delayed javax.swing.Painter
d;spigot player
public interface Player
extends HumanEntity, PluginMessageRecipient, Conversable, OfflinePlayer```
Represents a player, connected or not
shit like that
Ah, I see
it's not just a bot
d;spigot Player#getPlayer
@Nullable
Player getPlayer()```
Gets a Player object that this represents, if there is one If the player is online, this will return that player. Otherwise, it will return null.
Online player
Maybe send bigger docs regardless but crop them off
or paginate
I wanted to paginate but I'm not sure how to accurately determine a pagination point
jdk javadocs often have code examples in them so can't really use newline for a cut off point
Hi, I have a question;
(Java)
if you add an object to a set within an if statement, does it still add the object, example:
something;
}
assuming it obviously returns true, would that object be added to the set?
there's probably just an element per method
Yes (if it doesnt exist in the set yet)
which you can show
Definitely cool stuff, I tried to make one of these myself and somewhat failed
Scraping different javadoc versions is no fun
this is a bit different than alternatives
most people do a web request every time
this one actually scrapes an entire javadoc and stores the data
scratch www
yes
It will be public, you say?
only if it already contains it tho
maybe needs to be changed lol
it will return true
Or free to host yourself?
thanks Pulse & Brister.
both
you can think of it like this java boolean added = set.add(obj); if (added) { something; }
np
yes
We're definitely gonna steal that for our server
We've had our half-broken javadoc bot for too long
I'd prefer it if you used my public ver which I'll set up tomorrow
just so I can get a dev badge if they ever bring it back
but if self hosting is essential then the code is there
if we're missing a javadoc, just ping me with the javadoc jar and i'll add it
same lol
They won't bring back dev badges I'm fairly sure
i can live in hope
Nighty Piggy 
Aww they changed it from verified bot developer to early verified bot developer:/
hmm yeah mb
gn
dont sleep stay strong
Oh that is definitely not the reason
It's rather because they didn't want to remove the badges they'd already given out
But still signify that those aren't the only verified people
Any plans on adding html->markdown for javadoc texts?
Someone needs to PR Kotlin to allow
val something = getSomething() ?: {
println("error")
return
}
This would be so useful
?: run {}
Not as nice
unavoidable for now 
because {} is an expression it would be interpreted as a lambda
unless they added a special case
and that's gross-er
idk
Yeah it'd probably need to like default to run in this specific case
you could replicate it
pr or shutup 
inline infix fun <T> T.orElse(other: () -> T) : T {
if(this != null) {
return this
}
return other()
}
getSomething() orElse {
println("lol")
return
}
pretty sure that would work
but it's quite gross
yeah it works
mostly
wait ?: run { } is a thing?
🙂
oh
cant
🥲
planned feature for elara ```rust
let lazy lol = someIntenseCalculation()
lateinit val
or just laziness
Pro programming language
pro gramming language
pro gaming language
pro language
cry about the fact that no other language has managed to topple visual basic in its greatness
ever heard of elara?
yeah
Actually I know exactly why I started, there used to be this game called Club Penguin. There were people making "trainers" a.k.a hacked client. I wanted to know how to make one
lmaooo
xD
club penguin hacks
Yea those old yt tutorials
O-o
with "hit the floor" as the backing track
Hi
I started to make a bot in darkorbit
I have been S u m m o n e d
my first application had imagine recognition and everything
Whats darkorbit?
😭
Thats sounds vaguely like that weird youtube video
Fourteen-year-old programmer and software developer Santiago Gonzalez might just be the next Steve Jobs. He already has 15 iOS apps to his name and dreams of designing for Apple. At age 12, Santiago became a full-time college student and is on track to earn his bachelor's degree in computer science and electrical engineering by age 16. By 17, w...
who is she?
lmfao
"prodigy" programmer
that's an old video
AHAHAH
no
basically my Internet lagged
and to me we were still talking about Elara
Elara is a programming language
sorry for not seeing gender
@obtuse gale why cant i dm you
yeah I know, I just wanted to joker arouns
ew
dont worry we all know that efefury is just a 40 year old catfish in his moms basement
:V
lmao
dissing
inb4 google starts making discord user bots to see the rich presence of users and make personalized ads
hot
Great idea
👀
Aight
elaramoon2
its not hard to find 👁️
lol
lol
Ban this man

☹️
absolutely
let's go
31/12/2020 => 1/13/2020
The year just never ends
😬
obligatory overflow joke
-31/12/2020
wow
okay
i see how it is
everyone says wheres elara mitten and not how's elara mitten
😔
excellent
hes undergoing metamorphosis. Bristacademy when?
😂
whats your languafe
how we meant to run qubits on a normal pc 😮
You dont. You buy one
o
Someone deleting you messages
what is going on
lmao
have u tried sending the message
my messages literally took a minute to send and then the silly bots delete them both
wot
Are you sure its barry?
my messages literally took a minute to send and then the ass bots delete them both
it's like $5
it's the best $5 you'll ever spend
uh
lol
its not barry
=ping
• Replied in 243ms.
• API Ping is 62ms
ok who did this
Probably lemmo or gaby?
• Replied in 78ms.
• API Ping is 54ms
Fuck off lol
=ping
• Replied in 182ms.
• API Ping is 57ms
=ban
Why is ping allowed in all channels?
Probably not
You cant delete messages that fast without a bot
Rip I forgot to turn it off
speaking of which
The app and discord module seems to be exactly the same with just 1 extra pckage
weird
hm?
strange
The only difference is the botpackage
whats the difference
why is so annoying to publish a kotlin lib smh
it shouldnt be
smh
tried even with mavenLocal() and it still doesn't work properly
https://paste.helpch.at/iwejagipux.groovy this is what I use and sources aren't available somehow ..
whats the from components.whatever part cause i always use components.java (even for kotlin projects) and it seems to work
^
that didn't fixed anything 😔
i was asking a question lol
i literally dont know what its doing when i add that line
i just always add it and it works lmao
Execution failed for task ':publishGprPublicationToMavenLocalRepository'.
> Failed to publish publication 'gpr' to repository 'MavenLocal'
> Invalid publication 'gpr': multiple artifacts with the identical extension and classifier ('jar', 'sources').```
what now
oh in your build folder are there two jars
last time that happened to me i had to like get rid of the classifier on my shadow jar, but my guess is that your issue is having both the javadoc and sources jar being built or something
guess what, it worked 30s ago
so its working, orr?
Whats the issue?
.
import com.massivecraft.factions.entity.BoardColl;
import com.massivecraft.factions.entity.Faction;
import com.massivecraft.factions.entity.FactionColl;
import com.massivecraft.massivecore.ps.PS;
import org.bukkit.Location;
class MCoreHook {
boolean isWilderness(Location loc) {
return BoardColl.get().getFactionAt(PS.valueOf(loc)).isNone();
}
void claimLand(Location location) {
if (!isWilderness(location)) return;
Faction faction = FactionColl.get().getByName("RaidEvent");
if (faction == null) {
faction = FactionColl.get().create();
faction.setName("RaidEvent");
// faction.setFlag(MFlag.getFlagOpen(), false);
}
BoardColl.get().setFactionAt(PS.valueOf(location), faction);
}
void unclaimLand(Location loc) {
if (BoardColl.get().getFactionAt(PS.valueOf(loc)).getName().equals("RaidEvent")) {
BoardColl.get().setFactionAt(PS.valueOf(loc), FactionColl.get().getNone());
}
}
}```
Guys a dev says: you can set the ownership of the ps on the grid for this factioons fork. What does that mean exactly?
what?
also wrong channel you want #development
and in your code blocks do ```java so it has syntax highlighting
@prisma wave im sure you will but in the while loops section you should explain the difference between do while and while do
ofc
Someone send help ploz 😔
i think your issue is the sources/javadoc jar. try to remove one and see if it works. it wont fix the problem in the end cause you need both but see if it will publish to maven local without the javadoc one
random question (I seem to like these): anyone know anything about cloning Windows to another drive?
let me explain what my issue is first actually
removed artifact packageSources and it worked but what is very weird is that it worked just fine before (and by 'before' I mean a few seconds before ...)
the other day, I cloned Windows to my new M.2 SSD, from my old SATA SSD, and it went well (after about 4 hours lol), but the only issue is: without the drive plugged in, it boots fine, but if I plug my old drive in, it fails to boot
i would just reinstall rather than trying to salvage it
I removed Windows from my old drive with GParted live and extended the EXT4 partition, and also removed my EXT4 partition from my new drive and extended Windows
Need some suggestion, what would you call the implementation of the interface ChatPlayer?
just toss Impl at the end lol
Never
Player 
Just rename the interface to IChatPlayer
oh god no
it's not a problem with the OS though, since it boots just fine from my M.2 when my SATA drive isn't plugged in
can we ban that
Sadly no
Why are yall like this 😭
Some cases require it
CraftChatPlayer and ChatPlayer
Unless you want to go through a dictionary and find words that no one would recognize
maybe the boot priorities then? the SATA might be higher priority and it's failing to boot from that
maybe I need to mess around with boot manager a bit, I reckon it thinks I still have the old system there
I have it called PlayerHandle right now xD
yeah I'll take a look, thanks
What does the interface define?
It's basically a wrapper for Bukkit's player which adds saved settings and a few other things
BetterPlayer
Player++
Wonder why there's 2 Windows boot managers, weird
There
great
MFPlayer?
or actually maybe just Player
probably 1 per drive
But the other drive isn't even plugged in
I would name it just Player but then Bukkit's would be odd
And as you can see, they're both on the same drive
oh yeah lol
You would probably just use the local wrapper right?
I hate when easy stuff do not work
Yeah
Lemme try booting from both individually
Then that shouldnt be an issue unless its exposed
Latest https://paste.helpch.at/enaxetiweg.groovy build.gradle 🥺
They both boot into Windows just fine, very odd
I might just go with either what i have or succumb to naming it ChatPlayerImpl
IChatPlayer and ChatPlayer wasn't terrible was it? I forget who said that
Imo it is
I think i've had a similar thing before, no idea what the cause is but I've had various boot devices duplicate and both work
The interface should be more descriptive than the implementation
Maybe it's something to do with what's in the EFI system partition
IChatPlayer is like "Interface interface chat player"
If Windows will even let me look at it lol
Wondering if the problem is with the project itself rather than how I publish it 🤔
Not bad actually
Also, boot seems to be stored on the C drive partition for some reason, rather than it's own partition
JustAChatPlayer
doesnt windows use a combination of both?
it has some stuff on c partition and other stuff on the system reserved one
ABukkitPlayerWithExtraSettingsAndConfiguration
ASlightlyBetterBukkitPlayerThatStoresMoreDataThanARegularBukkitPlayer
Yeah I think so, but I don't have a system reserved partition
Android devs have this weird convention of naming a variable to start with m to show that its a "member" variable. Disgusting
gross
wanna talk about c ?
What about it gab?
mmmmMyPokerFace
__thi__s__a_vaRia__le
xD
Let's vote:
1️⃣ - PlayerHandle
2️⃣ - PlayerContext
3️⃣ - ChatPlayerImpl
4️⃣ - ChatablePlayer
oh man all developers need help today lmaoo
confused
#development , #off-topic and #dev-general are used just #developer-chat is dead
i have i question in #development psl help
Ikr
well all of them
I mean if IChatPlayer is bad, ChatPlayerImpl is equally bad
i always just do impl for my stuff cause im lazy
xD
Enterprise by length
add the ++ back and we have a winner
Aight ty I'll decide what to name it xD
ChatablePlayer is best imo
but I think you should never do what I say
because I don't even know how to name my stuff
I like that and PlayerContext the most
what is this class for again? sorry I missed it lol
a player wrapper
what exactly does it do?
yes
it stores player data like configuration stuff and setitngs
it does
as well as the player or uuid i assume
Yes
MFPlayer? or FrameworkPlayer?
It's not a framework xD
or FireWorkPlayer
It's a chat plugin
TriumphPlayer
ChatPlayer then
ThePlayer
That's the interface
thats the interface
ah okay
TriumfChatPlayer
Why is it an interface exactly?
if it's an implementation for the interface then ChatPlayerImpl
xD
oh btw I was suggesting ChatablePlayer for the interface name
Makes it easier for API
what's wrong with Impl?
ew
It's ugly
Not a good name for anything
Theres no reason for that name
How so
The only info it gives is that its an implemention which the class definition already provides
Just asking because I see a lot of people randomly throwing in interfaces when they don't actually have a use for them
what do you suggest as a general replacement to Impl then?
Basically the API will be separate and be mostly interfaces, that way i don't need to depend on implementations inside the API
is Impl not "convention"?
interfaces are nice for an api cause you can publish only what you want the api to have access to.
There is no "general" name for anything
because I use Impl for implementations of my API implementation API interfaces
wow that's a tongue twister
Oop was a mistake
Lmao
rewrite in haskell
Its usually better to specific more of what the implementation does
you know like how JDA is an implementation of the Discord API that has an API and an implementation for that API
that's what I mean
Might just do PlayerWrapper : ChatPlayer tbh
JDA is not the pinnacle of software design
no but that's what my project's structure is based off of
and I wasn't saying it was, I was just using JDA as an example to explain what I meant by that tongue twister
I suppose I could use JsonPlayer rather than PlayerImpl as the implementation of Player is basically just to make it able to be serialised into JSON
PlayerImpl : IPlayer
starting interface names with I is definitely not something I do lol
if its for a chat plugin then i dont see whats wrong with TriumphChatPlayer 
you can see that it's an interface by literally looking at the little green circle with the "I" on it lol
also, on a side note, in-memory caching with OkHttp is a nightmare
using expiring map for the cache and intercepting requests and checking the cache
also, can anyone explain this? ```
java.io.IOException: Unable to retrieve player from API! Error: {"error":true,"descriptor":"Page not found"}
Expected exception: java.io.IOException
java.lang.AssertionError: Expected exception: java.io.IOException
my test literally throws an IOException and JUnit goes "nah m8"
it couldn't have anything to do with the fact that it's thrown on a CompletableFuture that's .joined to the main thread could it?
https://stackoverflow.com/questions/2814805/java-interfaces-implementation-naming-convention @ocean quartz this is a good answer about ways you could name it. the second answer applies more to the situation where you only implement it once and it says use Default(InterfaceName) which isn't terrible if you like that more.
quite possibly, i've always found CF exception handling to be an absolute nightmare
any way to force a CompletableFuture to execute on the main thread? I know it sounds counter-intuitive but it's for testing purposes lol
actually ik what to do
futures have no concept of what thread they're executing on
since for tests, I use a custom implementation of the TMP4J interface (the main interface with the methods that get thingys from the API), I can just execute everything in thenRun or something
or I can do something else that's whacky
like executing the code synchronously and returning null or something






