#dev-general
1 messages · Page 167 of 1
What's your opinion on minecraft command length. Short and concise vs long but powerful. I don't know where to draw the line in terms of command options. What sort of command to support and what not to support for the sake of brevity.
Not what I meant
I am talking in terms of arguments for commands where you could allow more than one
for example, say you want to set a specific value for a player
Well that depends on the command. Would you rather /chat <colour here> <yourmessage>
Or /chatred <message> and /Chatblue <message>
you don't go with just one. you do it based on context. if you think a more lenghty command is better then go for it but I like to keep mine as short as possible if possible.
should I allow the same command to set that value for multiple players like so:
/setplayerval <player> <val> [, <player> <val>, ...]
/setplayerval <player> <val>
short version to force them to call the command multiple times or enable varargs style arguments?
nah don't
Don't think you should use the first one
just let them do it multiple times
Or have a cfg
because it looks better xD
Also, message length and readability
no need to ask here as well
But you could do /setplayerval <value <player1> <player2> etc
oh that could be a thing ^
so the same value for multiple players
but not mutliple values and multiple players in the same command
hm
What about multiple optional values for some object in the same command
/create obj <name> [<attr1> <value1>] [<attr2> <value2>] [<attr3> <value3>]
Yoo that's it for me today, the hover even has been broken for over 8 commits and I only noticed it now
ugh I'm trying to make a repository on github for my plugin but can't seem to be able to import folders?
like I want to import the entire plugin folder or at least the folders and files that are included but can't seem to be able to
do I need to go and create the directories manually and import just the files/
I recommend using what i use for managing github, GitKraken
Might make that easier for you
Yeah
Yeah i'm done today, actions are broken, doesn't work on old versions, it's a mess
Piggy did warn me about bungee's component, gonna have to write my own
And prolly gonna make it work with adventure too, cuz why not
a bit more work for better outcome
Yeah, more pain
🌝
How hard would it be to make a plugin that simply makes storms last longer. I think it would be really cool to have just a simple plugin that overrides minecrafts normal weather (ie doWeatherTick=false) and instead puts in its own in which you can customize the min and max time that a storm would last (ie it would choose a random number of seconds from the 2 values given for the duration of the storm)
Hey, random shot in the dark, is anyone familiar with spawning fake maps using packets?
It's better if you ask what you want to know about maps with packets than ask if anyone is familiar ;p
Well, we're trying to figure out if anyone knows of a way to spawn an item frame that contains a map image using packets, or even just knows of a plugin that already does it
Does anyone know what im talking about ^
https://helpch.at/docs/1.16.1/org/bukkit/World.html#setWeatherDuration(int)
https://helpch.at/docs/1.16.1/org/bukkit/World.html#getWeatherDuration()
@static rampart think you are looking for these methods
Well seems like chat packets aren't that hard to make
And it's pretty speedy compared to spigot's
Nah this is just packets and gson
Can somebody explain what the in and out keywords in Kotlin mean?
I just read this explanation and feel like I read it in chinese or something...
https://stackoverflow.com/questions/44298702/what-is-out-keyword-in-kotlin
What would be the Java equivalent?
<? extends T> and <? super T>?
Yeah kind of
But like in java it is :
? extends T - T can be cast to this
? super T - this can be cast to T
iirc I guess it’s quite the same in kotlin.
How would one determine if a jar was used on bungee or on a normal spigot server?, Going to try and add a bungee version of my plugin, but not sure if I should make a seperate jar, or just use modules and somehow do it with that
Dont you just add a bungee.yml to it that points to a different main class, then have like common code that applies to both in a common package or something? idk ive never done it tho, just heard
Anyone know of any threads which would explain this? nvm, going to use seperate jars
@hot hull you could take a look at the LuckPerms repo, they do it there
I'ma go back to ANTLR, fuck command line parsers
How does one fix imports when using kotlin, instead of let's say this
import java.util.SplittableRandom
it would do this
import java.util.*
It imports all classes in that specific package
Not sub packages but just that package
Any fixes, or do I just leave it as is?
Just importing unnecesarry shit ig
I mean if you’re using a lot of classes in the same package it might be worth using the wildcard to make the class having less lines
i need help with intelliJ
when i do build configuration to a project to test it it is adds the compiled files of the spigot.jar and depends
and i switched it into provided and still
no i am not using gradle
clean and rebuild the project
how :\ i am new to IntelliJ installed it last night :\
@empty flint
Can somebody explain what the in and out keywords in Kotlin mean?
Its probably explained better in the official documentation but heres a simpler short way to see it
outas in Output as in itProducesa output of that type but not take in
inas in Input as in itConsumesa input of that type but not return something of that type
What would be the Java equivalent?
<? extends T> and <? super T>?
As per the documentation,
PECS
i.e,
Producer(out) -> extends
Consumer(in) -> super
Tried to send earlier but didnt have network coverage at cousin's house
Can you not put nbt tags onto a pickaxe?
Im so confused rn
this uses exactly the same theory as my pickaxe and as shown by internal= it does have an NBT tag
wheras
should have an nbt tag but doesnt
You can Jerry
How are you applying the nbt
i = NBTUtil.setInt(i,"chunkbuster",size);
how i do it with chunkbuster
i = an itemstack
i = NBTUtil.setInt(i,"trenchpickaxe",size);
how i do it with trenchpick ^
shitty variables names, anyhow, are you setting them both in the same order?
yes
at the very end
i.setItemMeta(meta);
i = NBTUtil.setInt(i,"trenchpickaxe",size);
return i;
i.setItemMeta(meta);
i = NBTUtil.setInt(i,"chunkbuster",size);
return i;
hmm
im just lazy with item when making creationmethods
the rest of my variable names are fine
@prisma wave send h3lp
No clue Jerry, you sure you aren't clearing it anywhere else? And are you sure that it is that itemstack (debug it might be some corruption)
Invalid import?
Yeah it's really strange guess more debugging is needed
Missing () yea
Anyhow KM, I have a seperate jar which is the action shit which I threw in my local repo since jitpack is being a hoe, however doesn't seem like it resolves it?
I'm probably missing something
(the dependency get's resolved properly)
Hey my man @ocean quartz I need some help on the hex gradient as I really don't get it
Check the jar actually contains the class @hot hull ?
And do any other imports work?
Nothing from it works
Could it be kotlin fucking it over?
(The classes are all there showing up properly)
Could it be kotlin fucking it over?
Never!
of course it's not Kotlin
also that ActionHolder should probably be a data class btw
@hot hull why are you using FQCNs anyway?
it shouldn't matter, but I'm curious
also you're not relocating without realising are you
FQCN?
Fully Qualified Class Name
it's the name I use to describe class paths
if you're relocating, idk whether you need to use the relocated package or not, or does that just apply to the JAR idk
:what:
If you guys could check out #showcase and give me some feedback that would be great as today I will be doing the last hours on it. Will maybe revisit it in the future though.
looks cool @obtuse gale , just wondering what /answer is for
since if you need an answer for something in chat, you could just have them type it out without the command and then cancel their message actually sending and use that as your answer
selecting item presets so you have like categories of items the randomizer can choose from
I mean I didn't choose the command this is a project I had commissioned and am able to share though
ah okay, so you didn't make this
He did..
Yes I made this
or did somebody commission it from you
okay
@hot hull if you just use ActionHolder does IJ prompt to import it?
Any suggestions on the scoreboard btw? I am trying to use the new hex codes but I tried implementing the changing hue one but it always spit out white and I don't know why.
wow I've got a lot to do today lol
got a meeting some time today with a youtuber called "LoverFella" who has over 1.5 million subs about possibly becoming a developer on his Minecraft server
and I also got a lot of learning to do since I'm expanding Octo to do a lot more than just JDA commands
Same thing @prisma wave
F
gl Bardy
thanks
Check if the class is present in the "External Libraries" section of project view maybe
Did you invalidate caches?
bruh it works on java..
Hold up
seperate project in java
I had a similar problem a while aog
ago*
But the other way around
It's something to do with gradle config I think
Guide me KM 
frost, can you try running the assemble task?
sure, sec
or any tbh, just need to see if gradle finds the error as well
It finds errors, just not the one in question meaning it's an IJ bug I guess
do you guys know how to cancel this kind of text to be sent in the chat ?
tried something like this already ```java
@EventHandler
public void onChat(AsyncPlayerChatEvent e) {
if (e.getMessage().contains("[Server: Killed")) {
e.setCancelled(true);
}
}
sending photo in a sec
@hot hull try closing intellij, deleting .gradle and .idea in your project folder and trying again?
and an quick tutorial on how should i use them ?
Yugi :((
Still same issue Yugi
Hey my man @ocean quartz I need some help on the hex gradient as I really don't get it
@obtuse gale Hmm? What do you not get about it?
OpenJDK available in there is always good :)
oracles jdk is noice though
Anyway to access this command map thing without reflection?
Yeah but I don't want it changing in the future
pretty sure it wont
Wheres it kept again?
CraftServer
Whats its field name
final Field commandMapField = plugin.getServer().getPluginManager().getClass().getField("commandMap");
set accessible required I guess
Btw to access knownCommands on 1.13+ (or some version above that) you need one extra step
private final static Field COMMAND_MAP;
static {
(COMMAND_MAP = SimplePluginManager.class.getDeclaredField("commandMap")).setAccessible(true);
}
private final CommandMap commandMap;
Construtor() {
commandMap = COMMAND_MAP.get(Bukkit.getPluginManager());
}``` this or smtng
Or is it the command name
also my bad its static final
https://github.com/thienbao860/Javascript-Expansion/blob/master/src/main/java/com/extendedclip/papi/expansion/javascript/JavascriptExpansion.java i think i already did this before 👀
The knownCommand reference is at unregisterCommand method of mine
No idea
hmm yeah I think the sync stuff happens automatically
wot
Nothing like the spigot conversation API exists for JDA does it?
i dont think
rip
F
thinking of making some conversation framework/api/thing just for my own use
java.lang.NoSuchFieldException: commandMap
[14:34:09 WARN]: at java.base/java.lang.Class.getField(Class.java:2004)
i am doing this on the interface however
how you get the command map?
SimplePluginManager.class.getDeclaredField("commandMap")
Im using the API so no SimplePluginManager available
plugin.getServer().getPluginManager().getClass()
Which would return SimplePluginManager at runtime correct?
yeah
yes
also SPM
you gotta use getDeclaredField
is available
This is what I use for 1.16 https://paste.helpch.at/wudekolene.cs
@obtuse gale Hmm? What do you not get about it?
@ocean quartz ```v
public static String translateHex(String startTag, String endTag, String message) {
final Pattern hexPattern = Pattern.compile(startTag + "([A-Fa-f0-9]{6})" + endTag);
Matcher matcher = hexPattern.matcher(message);
StringBuffer buffer = new StringBuffer(message.length() + 4 * 8);
while (matcher.find()) {
String group = matcher.group(1);
matcher.appendReplacement(buffer, COLOR_CHAR + "x"
+ COLOR_CHAR + group.charAt(0) + COLOR_CHAR + group.charAt(1)
+ COLOR_CHAR + group.charAt(2) + COLOR_CHAR + group.charAt(3)
+ COLOR_CHAR + group.charAt(4) + COLOR_CHAR + group.charAt(5)
);
}
return matcher.appendTail(buffer).toString();
}
Shouldn't this return me a gradient string?
@heady birch its never ?

Whats that for smh
hms
:smh:
:hms:
@obtuse gale I don't think so
If you want, this is the code i use, it's not mine https://github.com/ipsk/MF-MSG/blob/master/src/main/java/me/mattstudios/mfmsg/base/internal/color/handler/GradientHandler.java#L39
Will try thanks
The registering of the aliases didn't even work
bruh @prisma wave I'm disgusted, but I guess it should work?
Then I just pass in the Handler to my kotlin shit and call the executes

I legit can't get it to work with kotlin, but it works perfectly with java
Like fuck is this sorcery
frcsty are you like using two themes at once or smthn?
No, fix your shitty spacing, then you can judge my theme bish

What theme is that frost? @hot hull
Highly customized Oceanic
we can tell its highly customized....
The icons are part of it right?
Is there actually a way to set a custom icon maybe?
I doubt it
I despise the icon for the kotlin file (non class one)
I like my current theme for the other things tho
There is a wait to set custom icons yeah
@obtuse gale I don't think so
If you want, this is the code i use, it's not mine https://github.com/ipsk/MF-MSG/blob/master/src/main/java/me/mattstudios/mfmsg/base/internal/color/handler/GradientHandler.java#L39
@ocean quartz Wait how do you use it? ```c
private static String parseGradients(String message) {
String parsed = message;
Matcher matcher = GRADIENT_PATTERN.matcher(parsed);
while (matcher.find()) {
StringBuilder parsedGradient = new StringBuilder();
String match = matcher.group();
int tagLength = match.startsWith("<gr") ? 10 : 3;
int indexOfClose = match.indexOf(">");
String hexContent = match.substring(tagLength, indexOfClose);
List<Color> hexSteps = Arrays.stream(hexContent.split(":")).map(Color::decode).collect(Collectors.toList());
int stop = findStop(parsed, matcher.end());
String content = parsed.substring(matcher.end(), stop);
Gradient gradient = new Gradient(hexSteps, content.length());
for (char c : content.toCharArray())
parsedGradient.append(translateHex(gradient.next())).append(c);
String before = parsed.substring(0, matcher.start());
String after = parsed.substring(stop);
parsed = before + parsedGradient + after;
matcher = GRADIENT_PATTERN.matcher(parsed);
}
return parsed;
}
Where can i find it matt?
I think material icons plugin has a customization tab, i don't remember where correctly though, but i think it does
Roses are red
Kotlin good
your theme just put me
in a suicidal mood
You inspired a poem, @hot hull
lmao
Ah Ill have a look
@obtuse gale That isn't the class i sent you
@heady birch how do you unregister
Yeah but the one that you sent me uses the gradient part right?
Though that method is simple <g:#000000:#000000>message here and it'll make it gradient
Yeah but not that one
and you can keep concatenating more :#HEX ?
So that works anyway?
Okay got it will try both
@ocean quartz Are you gonna support rainbows as well, the way Nicole does?
noice
Yeah
KM, it is a sad moment.
what did you do
I made a java class which calls the lib methods, which I then use in the kotlin classes
@steel heart
kiteBoardCommand.unregister(commandMap); kiteBoardCommand.setAliases(GlobalSettings.COMMAND_ALIASES);
kiteBoardCommand.register(commandMap);
Any idea where I should look matt? @ocean quartz
for what?
huh?
I think material icons plugin has a customization tab, i don't remember where correctly though, but i think it does
@old wyvern just search for it
Search for what mate
the material icons customisation tab...?
I think it's somewhere on tools but i don't remember correctly, i just know i did a while ago
I'd say it's most likely to be in Appearance & Behaviour since that fits best
@hot hull you have failed kotlin
no KM
not the other way around
@old wyvern ik Atom Material Icons is in Appearance & Behaviour
clojure wouldn't fail you
ffs
clojure is kind
get outta here with your BS circlejerking lol
ironic
Clojure best agreed
if it was Kotlin I'd be fine with the circlejerking
Lisps are trash
evidence?
wdym?
Where's the proof weeb
Got the icons 👌
Noice
Clojure butiful and superior
Thanks Matt and bard 
Does Clojure run on JVM?
it's horrible @prisma wave
Does Clojure run on JVM?
Yes
yeah but it's not interoperable with Java somehow
it is
there's your proof (Yugi you bastard xD)
Bard isnt that a bit biased?
maybe
there's your proof (Yugi you bastard)
Wha? xD
I mean I wouldnt assume to know the keywords of a language I havent used
you slipped your link in there before I got my message out so it looked like I was saying the java interop was @prisma wave 's proof lol
also wtf is
def something nil
doesn't take a genius to work it out
I cant really comment on this much since I personally havent used the lang
But its not that hard to understand
@heady birch when are you doing that, cuz its weird since it worked for me excellently
I guess it is subjective, but personally I prefer a more traditional, mathematical declaration (using =)
at on enable
Understandable
I mean, I am a good mathematician and logician, it just makes sense to me more than without the =
haskell
you might want to do it after onEnable
I dont really like clojure much either, but jokes aside I dont really see why I would call it bad without using it
@prisma wave right now you can just get out lol
bruh
I mean, I am a good mathematician and logician, it just makes sense to me more than without the
=
I mean finally thats the representation of your code
haskell is literally the most mathematical language
A operation , lhs expression and a rhs expression
i just cant wait when pepl are gonna make plugins in clojure..
it's possible
also @prisma wave is it a better idea to use ThreadLocalRandom.current() or Random.Default for randomness?
since Random.Default means you pretty much never have more than a single Random instance
doesn't really make a huge difference
I believe SplittableRandom is better
its faster iirc
unless you need it to be thread local, use Default or SplittableRandom yeah
is SplittableRandom still faster than Kotlin's Random.Default?
yes
although SplittableRandom isnt secure nor thread safe iirc
I don't need thread safety or security, since I'm just using it to generate a random RGB colour int
it's thread safe in that it can be split
but SplittableRandom means you need to create a new instance every time you call it doesn't it?
no?
Does (int range).random() use normal random?
I believe so
tf is that Matt?
@steel heart
I guess can easily make it use splittable instead though
https://tenor.com/EtJK.gif @heady birch
actually not as easily as you might think
since SplittableRandom doesn't implement Random
In Kotlin (1..10).random()
@heady birch how can one survive using the default white theme?
jerk
please teach me the ways of such an act
🟢
@jovial warren clip's using it all the time 👀
tf does a consumer or whatever look like in java?
yeah ik
sendMessage().queue{
}``` that in kotlin lol
value -> {}
This shit of an icon seems to be not associated with any filetype in the theme settings 🙃 . I guess its time to settle into the new normal
that's a Kotlin class
sendMessage().queue($ -> {
})
Hello please fix it conclure
Yes ik
@steel heart NO
Lol
Its not present in the icon mappings if you check bard
cc lov u
@hot hull Almost ready to make it work across versions ofc gradient wont
0.69
nice nice
and speedy
Kotlin has a single one associated with it there and its the K one for files with more than 1 classes
69%
What if a ms was a plank second
Hmm
😂
maybe niall, try to remove the command from knownCommands
instead of the unregister method
Will give it ago
@ocean quartz one thing when you have <g:#000000:#ffffff>message here
The gradient ends on the message string
How would I apply it to both so its seamless?
@ocean quartz smexy
Ok @steel heart So I did it my way and just used put (alias, my command)
works fine
Second question
yaaa
I mean you could have a Map if you want lesser lines
It is illegal to have a premium plugin depend on another premium plugin right
Even if they are both mine
I dont think?
@obtuse gale Modify it to take a list instead of just one string, sum the string lengths and use the same gradient object for both, should do it
well check the rules for the sake of not getting banned
Resources must NOT depend on other premium resources well fU*k
I think i did this quite well
aye
Looks perfect to me
So if the main plugin is free and all the resources related are not then it would be fine?
I feel like it might get me a ban if I try doing that
Releasing premium resources which are basically expansions to my existing free plugin
No have a free resource which is a common lib to all your premium resources
Yeah I mean that's what I am talking about, the free resource would be the 'base' plugin and the other premium resources are different expansions
@obtuse gale Modify it to take a list instead of just one string, sum the string lengths and use the same gradient object for both, should do it
@ocean quartz Yeah got it
yeah klyser that should be fine
but you might ask a mod before so you know for sure you dont break any rules
Is it possible to change a resource from premium to free in the future?
If I want to in case
What are you using to distribute it
Like what publisher
Yes you can
With spigot atleast
I believe so
Whats better name CriteriaGroup or CriteriaContainer?
Context?
2
basically contains some criteria
GroupCriteriaContextContainer 
CriteriaCriteria
KiteUser#updateGroups or KiteUser#refreshGroups
or
GroupManager#updateGroup(KiteUser)
@steel heart
2nd
frosty u got that enterprise logic engrained in u boi
Why do people call stuff "context"? I always feel like it's a pretty ambiguous name
no
smh matt u dont have the enterprise logic
AbstractWrapperCommandNodeExectionContext
Just really curiosity, i know acf call the parameter types handler context and i always thought it was super weird
To avoid ambiguity, just number your class names!
lmaoo

Oof, another thing i find weird, naming interfaces ISomething and implementations SomethingImpl
Seems lazy xD
@onyx loom 
Lol
🤷♂️
Also question, what do you guys think about the option to set default color for the messages?
Useful or nah?
Useful 

is 1-2ms good for gui create speed?
i mean it has to read from yaml
It has to be read everytime?
Can you cache the gui?
Then it's ight
yeh it has to decrypt item from base64
You can keep the changes loaded in memory for sometime and write in some interval
well
i have no idea how to make it faster
i've tried cahcing stuff
and its still the same speed
It's 1-2ms it's not like the server is going to die kek
Yes lol
yea thats fine
i just know that first time it takes like 50ms for some reason
then its 1-2ms
apparently its 1-3 now
Assuming cause the config isn't loaded in memory yet
well maybe cause i construct object like entire class everytime i create gui for first time or when player doesnt have active gui
i guess that my gui handler just cant be any faster than 1-3ms
and i could probably handle it different
smexy
i mean its not that bad
http://images.virtusdevelops.eu/shareX/jd68qn0s.png
im making kiteboard-world guard criteria
I got regions covered, anything else cool I should add
has-flag or something
Sheesh new combat will make axes OP 😮
Minecraft 1.16.2 The Nether Update Videos ► https://www.youtube.com/playlist?list=PL7VmhWGNRxKixIX8tWEQn-BnYKE9AaAXk
Minecraft combat is changing! It won't be part of 1.16 but the latest combat test number 8b is here and in this video we go over the many changes.
https://www....
so they keep updating 1.16 4 times a month? xD
It's a separate update only focused on combat, probably won't be out till like 1.18
ah
just revert the changes to 1.8 fully kappa
Nah
Maybe just the delays
Am I just dumb or? It doesn't seem to be doing anything, aim is that the loops through the inventory, get the correct amount of specific items, which then get removed from the inventory
A member of staff has requested I move your message to a paste,
Most likely beacause it contains a config/error/code snippet.
why is that a while loop?
Because I need it to loop only till it finds the necesarry amount required
can still be a for loop
Doesn't matter
Also start at position = -1
yeah that as well, since you're checking if the incremented value of position is equal to the size of contents, not the actual position
which means that player.getInventory().getContents()[position] is gonna return 1 on the first round
also I thought you converted
converted what?
I mean I thought he converted to Kotlin lol
🤦
Doesn't mean I'm going to make every plugin in kotlin, it's a commission
ah okay
make every plugin in clojure
actually
I have a new mission
Write a plugin in every JVM language
omg
if you can list at least 10 JVM languages without using Google in a minute, I'll do it
@prisma wave
actually that's too hard
if you can list five JVM languages in a minute from your own head alone I'll do it
There aren't 10
5
I corrected it to 5
Java kotlin scala groovy clojure Jython JRuby
lol
ceylon?
now write a plugin in each of then bombardy
Never heard of that
you totally didn't just Google "list of jvm languages", go to Wikipedia and name the top 6 you find on that page
name me a lesser known one
JRuby is probably the most obscure
fantom
what about Nashorn
Not sure you could call that a JVM language
according to Wikipedia, Nashorn is a Java implementation of JavaScript
It's not its own language so
true
Another 2021 resolution boiz
Nashorn is a JS engine
Not a language
weird java https://www.eclipse.org/xtend/
Xtend is a statically typed programming language sitting on top of Java.
they should just use kotlin
It introduces more "defaults" and a few other things while being extremely similar to java at the same time or something
public String sayHello(String personToGreet) {
return "Hello " + personToGreet + "!";
}
```vs.```xtend
def public String sayHello(String personToGreet) {
return "Hello " + personToGreet + "!";
}
```(I tried putting `xtend` for the syntax highlighting but it doesn't exist F)
watch the whole thing as I said my guy
The lambdas look cool
few seconds in
okay that's an improvement
and theres more
wait does this language do a Kotlin and make public the default fucking visibility like Java should've done from the start?
wait it has type inference as well? okay this is looking promising
and return being redundant?
WHAT?!?!
interesting
man this is actually good
Too bad it doesnt have a intellij plugin
That symbol is annoying to type
not sure about this though: ```
people.forEach [
// code
]
For interpolation
thats just double < i think
it might just look like that
U+00BB is the unicode hex value of the character Right-Pointing Double Angle Quotation Mark. Char U+00BB, Encodings, HTML Entitys:»,»,», UTF-8 (hex), UTF-16 (hex), UTF-32 (hex)
I dont think any person would be idiotic enough to add a random unicode character to code syntax
Julia
I mean it doesn't have expression functions which is annoying lol
It literally does
«
Which part?
As with variables, Unicode can also be used for function names:Isnt this it?
idk about anyone else, but one-line functions are a really useful feature to me lol
@hot hull https://github.com/Frcsty/Frcsty/commits/master do you not know how to properly explain changes made in a commit description? xD (I guess this one is just messing around but I've seen other occasions where your commits are about this same quality)
This looks very....eh...
^
it's like somewhere between Java and Kotlin I think, in both rating and functionality imo
very dynamic
You haven't seen much of his commits yet
@jovial warren Worry about your own commits nerd 
possibly too dynamic
uh I have like 60 tabs open and cant find which one im playing music on yt on... fuck
brb
@hot hull my commits are good thank you very much
Nah important stuff
I don't describe commits on public plugins since noone cares what they are
actually, people do

bruh Yugi, you got like 5T of ram or what?
oh I found the barely visible music icon
bruh Yugi, you got like 5T of ram or what?
nah works fine tho
I can't be the only person who thinks that properly describing what changes you make in your commits is important
What languages do you guys support on your plugins?
16 gigs
English is the only language I could speak well enough @empty flint
Bardy, even if someone cares, I honestly couldn't care less, if they care so much they can comment on it themselves 
If a plugin got attention I'd add language support
just use Crowdin and get enough people to join your project on there
Not worth it for most things
@prisma wave I'd have the community translate if they want the language to be supported...
Just DM advertise your shitty plugins :kek:
@empty flint yeah adding Lang support might be a good idea
wdym? Crowdin is great
I didn't say it wasn't great
I said it wasn't worth the effort for most things
Neither is CI
Ez have language files and something to convert it to any given language with google translate or something 😂
I just use CI because it makes my life easier
@prisma wave So again, what languages do you think most MC players are covered by? English, Spanish, German, Italian, French, Portuguese...?
Russian
Really?
Might as well make it extendable
hm
@jovial warren again, yes, it does. But setting up CI for every single project is usually more trouble than it's worth. Unless you know there will actually be people interested in translating, then setting up Crowdin is a waste of time
I just use Crowdin on BardyBot because I hope that one day it may grow to the point where people will actually want to contribute
yeah I can agree with that
unless you have evidence that it's actually in demand, there's not much point
or both
Bruh
or both yeah

I was just about to say maybe I should just support all languages that mojang supports
I looked it up
just make it extendable
no chance
don't support them all in advance
How many do you guys think there are as of 1.15?
@empty flint over 300 at least
60-100?
just make it extendable
@prisma wave Probably gonna be that way, yeah
it's officially 118
damn
117 according to the fandom
pirate english for example
nah Pirate Speak is a good language wdym
flippin Klingon
Frosty, you bring pain to my life 😢
Blame Gian
Why
I was gonna drop 1.12- support, but cause I'm nice and I know Gian has a 1.8 server I kept it
Omg, ChatSerializer is in IChatBaseComponent in 1.8, it's out of it in 1.12 and it's back in it in 1.16
lmao Matt
https://avatars2.githubusercontent.com/u/2412916?s=400&u=1d2ea774bb335cefc8b92b78339b9b3e2b50bf15&v=4 who knew Maxim Van De Wynckel did drugs xD
Who?
MaximVDW
creator of FeatherBoard is probably where you're most likely to know him from
idk why you'd even take a picture that looks like you just snorted coke and make it your GH avatar but eh
did he?
did he what?
drugs
The pic looks just fine, why you hatin on the young lad?
That looks nothing like someone who is high
oh I just seem to hold a grudge against people who sell nothing but premium plugins
Why?
@old wyvern yeah maybe he was tired
@empty flint idk, I'm just a massive supporter of open-source
He doesnt look tired, looks like a normal dude spendin his day
you mad?
@empty flint idk, I'm just a massive supporter of open-source
@jovial warren The two aren't mutually exclusive. McMMO for example has an open-source gh repo and is still premium on spigotmc
@empty flint true, let me rephrase: I seem to hold a grudge against people who make proprietary software
What's wrong with people wanting to get paid for their hard work? As long as there's buyers willing to pay it shouldn't bother u
true
you mad?
@jovial warren
Not really but you probably shouldnt pick on a random dude for no reason
@jovial warren
Not really but you probably shouldnt pick on a random dude for no reason
@old wyvern this.
I wasn't picking on him originally, just put it in because I thought it was kinda funny
and I'm not trying to pick on him now either
¯_(ツ)_/¯
Mvdw is a clever guy
I mean, he is a PhD student
exactly
@jovial warren You're 15, how will you know how someone who's high looks eeeee
Unless you wanna admit anything 
I've seen what people look like when they've taken drugs, and tbh, thinking about it, it's not like what he looks like
and no, I don't have anything to admit
almost 3 ms?
1.8 problem
Because you know 1.8 good performance right
Well supporting older versions
@ocean quartz You using any chat components? If so there's room for improvement
This is just a test with shitty reflection, there is a lot of improvement to make
And what do you mean chat components? You mean with bungee?
here's my question: do you have anything to admit?
Not using bungee
oh Discord wow, took it 10 seconds to send that message, meaning it ended up below Matt's message
How are you sending the message?
Packets
Didn't Niall write a custom serializer or something?
custom serialiser?
packet serializer
ah okay
for components
@heady birch Do you have one?
Didn't Niall write a custom serializer or something?
Bardy, I'm 18, I go to parties, all you need to know
![]()
@hot hull that's all I want to know, thanks
you don't go outside?
Ew going outside, nerds
I mean, I don't have a life, and I do spend around 80-90% of my life indoors, but it's good to go outside sometimes
Take a bath
lol
I've not been outside outside in a bit
Socializing? Fuck is that
@ocean quartz He posted a link sometime ago in here
Damn Dan, that's a hefty budget for a bingo plugin :p
I mean I want the page looking sleek if I release it 😄
it doesn't cost $200 to get some decent graphic design around here
I mean that's my budget, depending on the work I will determine a price haha
Usually the logo and then the page itself attract the client more than the plugin features themselves.
am I the only one who reads (50/200)$ as $0.25?
Lmao
Usually the logo and then the page itself attract the client more than the plugin features themselves.
@obtuse gale not necessarily true, it's mostly both
you could have the best looking page, but if your plugin is shit, nobody's gonna buy it
and the other way around is probably why I'll never have a popular plugin
You should see my plugins smexy art
you mean cube's smexy art
Well yes, but I paid for it
I mean for a bingo plugin there are a bit of them. Mine is a bit unique as it introduces the map like in some servers but yeah it should have a bit of a distinction from others having a good looking page.
Best part that happened in this project is that I recorded everything, and I recommend it to anyone it is a very good way to keep track of what you do besides plugin versions ecc..
the prop I give to you is that you actually got it finished
For the spigot release in the future I will need to do a bit of work for compatibility as I coded everything on 1.16 not minding older versions but yeah its finished.
and that isn't because I'm surprised you got it finished, it's because I'm in one of those "what's the point" moods
Dan quick suggestion
Screw backwards compatibility
Bardy, always have more than 1 active projects
what?
So when you're annoyed by 1 project, you switch to the other
Frosty's law of procrastinating between 2 projects
It works.
😏
you think I've got original ideas and enough motivation for that?
this is gonna get dark I can feel it
I was gonna say something, but I'm not going to
I mean there are a lot of things where a better plugin could be made if someone took the time and effort
A throwback to the earlier mention of something kek
@old wyvern true, but that's just a copy, and I don't have enough self-confidence to think that anything of mine will even be wanted anyway
and I'm just a lazy bastard generally anyway
Its not a copy if you do it one better
Dont release it till you are confident enough that it can compete with whats available
even if it's better I still doubt that anything I make will take off, I've just generally got a very low self-esteem, mainly due to my Autism, but that's a personal problem
How do you reference a class in the javadoc comment?
{@code} or {@link} I believe
lol
Screw backwards compatibility
@hot hull I don't know should I?
Like a lot of people have not switched to 1.16
So i don't know if it will be worth releasing only on that version
@hot hull that image has only just finished loading for me lol
@obtuse gale Well since bingo benefits from item variety, it's perfect for latest version
And honestly, most people that would be interested in it are probably survival servers, which are 1.16, with the exception of those idiots who stay on 1.8
Yeah I guess it does right. Will decide as I still need to decide if to release it for free or paid
I mean I like 1.8 simplicity and how fast it loads but yeah wouldn't really stick with it, although my clients are mostly for that version
anyone here good with web design? because unfortunately it's kinda came to the point where BardyBot needs a website for some things, for example, API keys
@obtuse gale I've been doing only 1.8 commissions for the past like 4 months, but I still dislike the version itself :p
I just that that version is the main core of the "pvp" community
1.18 will hopefully change that
I am waiting for Hytale to see its take on this
Like everything should be doable in that game but who knows, till they release it they can promise whatever
Any set release date?
Should be 2021
They hyped it up about 2 years too soon
Yeah but they saw an opportunity at the time to make the word spread quickly as people were getting back to minecraft
And tbh it would have been a good decision if only they had way more progress on the game.
I mean the word spread anyway but people are not that interested about it anymore
Well yea, they took to long to make it lol, if they announced it later, they would still get lots of interest since hypixel is continuesly growing
I think Hypixel just saw that playerbase was getting back up and just yeeted the game info out haha
How many players did they even have at the time of announcing it?
I don't remember
Can't have been larger than 40k surely
Imagine if they announced it like this summer
Well yeah it would have been a hit with all the info spreading online when people where at home
But they couldn't predict that haha
Or could have they 
I dont think they expected hytale to be this big tbh
Maybe actually they were trying to get just their players to the game as 2018/2019 was their meh year with less players than ever looking at the graph
Hm how does command autocomplete work? I've never used it, can somebody explain?
Like I know the tabComplete(...) method https://hub.spigotmc.org/javadocs/spigot/org/bukkit/command/Command.html#tabComplete(org.bukkit.command.CommandSender,java.lang.String,java.lang.String[]) gets called when a user tabs, but how do you know what parts to suggest and stuff...?
declaration: package: org.bukkit.command, class: Command
it's based on the args parameter
Say you have the command to set a player's nickname or whatever: /set player <player> name <name> (I made it unnecessarily longer for explanation purposes)
if a player types /set I'd suggest all subcommands of set. So I'd have to analize the args parameter and see that no args are set and therefor return listOf("player", "time", ...)?
for /set player the args would be [player] and I'd suggest the names of all the players currently online. for example listOf(<online player names>)
and so on? Did I get that right?
pretty much
usually you'd check based on args that start with the typed data
since it might be /set pl
So what do you suggest if it's only /set ?
@prisma wave Yo, you got a fix for PDM yet?
unfortunately not
😦 😦 😦
@empty flint whatever your subcommands are idk
The thing is I'm trying to parse the command using an AST and so if the token/arg isn't recognized, it's gonna throw an error, right?
this is gonna be interesting to solve
thanks for the explanation though
Is the autocomplete suggestion triggered whenever the user types something? Or only when they press tab?
I'm mind blown
I just started one of these start JS courses and I'm on the third exercise, and I see that JS has such loose typing that you can have an array with different types in it
like wtf?
why does var myArray = ["hello", 123, true] work?
Have you not seen JSON arrays? xD
I've worked very, very little with JSON
the furthest I've got with JSON is using kotlinx.serialization to serialise the status of my bot
Yeah no JS is great if you know what you're doing but you're not gonna get babysat through the coding process like you are with Kotlin
Declare a variable without a scope? Everyone and there mother will access it
basically turning this: kotlin @Serializable data class BardyBotStatus(val status: String) in to this: ```json
{"status": "running"}
You make a mistake, JS says fuck you, not my problem.
The plus is that it lets you abuse it like it's a 19yo with daddy issues
wait... what kind of a method name is
push????
@jovial warren in what context?
to add to an array (which should be immutable because it's an array), you run push
that's not uncommon terminology
no, arrays are not immutable in JS
and js arrays are not like normal arrays
well
they're more like linked lists than anything else
depends actually
if they're not immutable, that means that they're not actually arrays internally or on computer memory
Array() is mutable, [] is immutable afaik
nope
they're both arrays tho
