#dev-general
1 messages ยท Page 81 of 1
what???
=== in kotlin is the equivalent of == in Java, I use it all the time
@hot hull yes, I do that
often
i have literally never had to use ===
.not?
adds a ! To the start
Oh it actually inverts it
I dont think theyre called operators, but yes
Damn
.sout is nice too
It works for every condition too
and soutv
I also use .if
Sysoutprint
what's soutp
@prisma wave he misspelled Soup
ah yes
and it generates a sout for those parameters
that's quite nice
Soup ๐
HELLA useful
You can actually change it to soup if you want to
All of those can be modified
oo
very unfortunate
@prisma wave live templates
wrh
It's early days but here's something kinda cool I've been working on
It's pretty cool
does it load itself or u gotta restart?
it will also download plugin dependencies
oh damn
loads itself
Tab completion doesn't work you might have noticed though
because I think the packet is only sent on startup
ye i think clip had that with DM aswell
i was tagged
yes you were
i confused
Pretty nice bm
i'm playing mc
Ty
I plan to make things like /ppm update which will update all plugins on the server
very cool mr B 'A' M.
merci
Can I make a suggestion
sure
Whats ppm?
/papi update will suggest these 2 args:
/papi update <id> / <name>
/papi update *
First one incase you wanna update one plugin
Second to update all at once
PluginPackageManager
Package manager?
What you think alex?
I like
Also the * one can it be async?
My internet
i think async will be best to do
it should definitely be async
Also, can they queue the installs?
so say i went /ppm install essentials then i went /ppm install vault can it start downloading essentials but queue vault to start after?
hm
small optimization ๐คทโโ๏ธ
Yeah I should probably do what most other package managers do and only allow 1 package downloaded at once
or queue them ๐
but if essentials plugin.yml depends on vault it will automatically install vault as well
it kind of does already
you sure?
ye
I can suggest it but it'll probs be bad
worth a try
ye
need to figure out how to make ACF parse longs properly
@prisma wave What do you mean?
@prisma wave there's also another part i was thinking
I've got 1 method that takes a String (the plugin name) and searches. If I make another with a Long (plugin id) ACF calls the string method @ocean quartz
@pale shell let's hear it
Oooh okok gotcha
wait i was thinking something as there what wasnt sad
Don't suppose your framework could handle that properly?
it actually already does
I've just not set it to display at all
I'm probably gonna need the conversation API so you can select search results and things
I don't understand exactly 100% what you want, but if it's to have long as a parameter it works yeah
alex, you missed out on the fun today
DeathRealms helped me get the elytra and i flew directly into the void by accident and went straight back up
But will it parse long arguments as a String @ocean quartz ? I'll send an example in a sec
nice
someone got a bit scared ๐
@Subcommand("i")
fun install(pluginId: Long) {
//This never gets called
}
@Subcommand("i")
fun install(pluginName: String) {
//This always gets called even if the args are a number
}``` @ocean quartz this is the problem I'm currently facing
which is why I had to make the string command si instead of i
There are workarounds
But effort
alex
yes
idk
Ooh, hmm probably wouldn't work, since it only accepts one method with the same subcommand, though that is something i want to add in the future
It doesn't make much difference
hm alright
I guess I could do the number parsing myself
Well you can always take only a string then check if it's a number or a word and handle it accordingly
yeah that's probably what I'll end up doing
I guess any framework would need some sort of priority system to handle that properly
Which could hurt performance
If it's different types it could be pretty simple to add without priority system
But you might need to try and parse both
For each non-string parameter
If parsing succeeds
Use parsed param
Else treat as string
If you had lots of different argument types that could be like 4 different parse ops even if they pass a string
That's true yeah
Then again that could be a tiny problem with no performance impact ๐คทโโ๏ธ
When I think about it, i was worried about performance when working on the framework and on my tests the command would take less than 1 miliseconds to execute, so i wonder if adding a few more checks would interfere at all
I'll give it a try today actually
Honestly I think even >10ms would still be virtually unnoticeable
If you could get support for number + strings that would be great though
@prisma wave alias
Alias?
Command alias
That's kind of what I'm doing right now
i takes a Long, si takes a String
But I want to avoid it
Make your own system then
as if thats manual
Hey guys, so I have been developing for a while now and I'm not familiar with versioning standards. I get the basis of MAJOR.MINOR.REVISION like 1.0.10 -SNAPSHOT but what should I do when i'm out of the snapshotting phase? Do I go to 1.0.0-RELEASE or go to 1.1.0-RELEASE
I normally do it like major.minor.revision-BETA or something similar, though once it gets out of beta i don't see why adding anything else to it, just version number should be fine
The release would be a recode containing all of my work i've done but in a better way as i've learned a lot since making the plugin.
I try not to worry too much about the version numbers, as long as they increment
That makes sense just removing the -RELEASE or -SNAPSHOT and go from 1.0.10-SNAPSHOT to 1.1.0
I pushed a papi expansion from 1.0.1 to 2.0 just cause I felt like it
Yeah it's basically what I do
Then there is stuff like Citizens where it's like major.minor.revision.build.somethingelse
Thanks for the insight! I get its relativity insignificant as long as it goes up but I just want to do what's best practice!
To say the least
its probably the build number? Like each time a line is changed and complied it goes up by one?
Citizens is... special
@topaz bay ??????????????
???????
it's a version #
They definitely are special
Then there is stuff like Citizens where it's like major.minor.revision.build.somethingelse
am i missing out on something..............?
Yes
how
Youre missing your brain cells
SSpigot
Iffy plugin
@ocean quartz I still prefer your plugin for npc commands
Fuck whoever says theres a better way
what if there is a better way...
I just hate the "never had a valid reason to exist", back in 2016 there was none of that lol
And if anyone says Denizens, wtf, that's a fucking horrible plugin that breaks shit all the time
Plus
LOL
i feel like these plugins have a completely different purpose
yes you smartass
They do but whenever people mentioned my plugin to them they were like "use Denizens if you want to add click to command"
no gaby i wasn't being sarcastic or whatever you wanna call it
was just adding more detail
jk mate
k
any good?
lame
Plus, Denizens still breaks their own system just like it breaks mine lol
imo they should throw that much hate towards you
you created and maintained a simple yet very used add-on for their plugins
why didn't they added this to the plugin itself it they consider yours "iffy" lmao
To be fair, Fullwall doesn't, he's a cool dude, but the McMonkey in other hand..
what did i cause.... lol
You caused nothing, we're just talking xD
He's rude to everyone on their discord
Idk why fullwall made him admin
But hey let's not talk about that much more xD
agree haha
what's that ๐ฎ
Yeah, what is that? ;o
Its a tiny little app that wraps the logic of downloading and running a jar
It was originally only supporting specifying whether it was spigot or bungee, and whether it should be a small (2G) or large (8G) instance
But I added the ability to specify the URL and the min and max ram
So now I guess its a general jar runner?
@topaz bay Do you have any examples of running task async using Coroutines?
Like.... in a plugin?
No, JDA
Nah
You probably wouldnt even need to use coroutines with JDA though?
Async programming is heavily built in to it
it is in it
I love english
Doing database related stuff, and I have a method to insert a bunch of stuff which is holding it back a bit
Where?
It's nothing like needed as I'll probably only run it once or twice here and there just curious about coroutines
I find it best to not mix and match scheduling patterns
The singer of imagine dragons is learning to code ๐ค
Bust
NoLang
LOBOL
๐ฎ
B#
D++
Pulia
Luby
lmao
I can't beat luby
Slowjure
You win
๐
Graavy
Scale
BHB
๐
SASS
Tilescript
Man, at that point it's time for a new repo
Haha
@obtuse gale Wanna help me test something?
mmm?
Make a gradle project, and put this in it
plugins {
id 'java'
}
apply from: "https://www.voxmc.net/paper.gradle"
And see if you can make a plugin
<3
alright
package PLEASE.SEnd.help
import org.bukkit.Bukkit
import org.bukkit.plugin.java.JavaPlugin
class main:JavaPlugin(){
public var COOL_message = "send help"
public var cool_SERVER = Bukkit.getServer()
override fun onEnable() {
cool_SERVER.broadcastMessage(COOL_message)
}
}
``` I mean it lets me code in it, do you want me to export it?
na
i removed everything else and it still works btw
except it tells me kotlins not configured ofc
Yeah
Day two of the campaign to put the staff team through hell looking through my code. I expect to be grilled like Piggy's siblings

oof
what the fuck is that
Ctrl + *
gross
What's gross is this
strength is an op potion effect
does anyone know how to make bungeecord show on the server list, the amount set and total members online in the entire server not just hub\
use the bungeecord server ip? not the hub ip
Anyone can help me with someone join the voice call please.
most people won't help in voice. is it possible to type? also, #development
I need to create my own GUI Framework and Command Framework 
and use gabys action utils
Or use Matt's ๐คทโโ๏ธ
or make my own
ur stinky 
hey thats mean dont say that :(
oh my bad then
Frosty ever tried to right lick User Settings ?
Oh damn
Frosty ever tried to right lick
User Settings?
@steel heart holy shit how long has that been a thing
Idk very long lol
I donโt know I mean itโs efficient though
Free html coders? Tagg me its only a front page of a site with 3 clickables which will send u to another site
I think I know how to do that
Very fire
the paper script adds the repo and dependency for paper, and the github one adds a function for declaring a github package repository @prisma wave
I'm gonna see if I can make one for kotlin
what's voxmc?
sx's server
that web thing is a really good idea
surprised I've never seen it before
The web aspect of it isnt actually a thing
You can apply scripts from anywhere
Those were originally scripts I had in my gradle home, and I thought... hmm how can I make it possible to collaborate without having to put it in the actual project
We will be using them a LOT with vox
what's with all the xtanna's in your discord
Especially since you can have not only private org repos, but private packages in them too
Axtanna??
LOL
jeez
What on earth is going on there
Where would I be put in there
You wouldnt
very ... Minimalist...
VoxMc?
that capitalization is infuriating
not particularly descriptive names I must say
caps of what?
"Mc"
https://youtu.be/_jKylhJtPmI we should make this a FAQ lol
Websites can still be hacked using SQL injection - Tom explains how sites written in PHP (and other languages too) can be vulnerable and have basic security issues.
More from Tom Scott: http://www.youtube.com/user/enyay and https://twitter.com/tomscott
Follow the Cookie Trai...
you should finish your java tutorial
Btw it's like 4am for me and I'm high so idk what I'm saying
He hasnt even started ;D
He's made his tutorial in PowerPoint
google slides*
PowerPoint
It's pronounced sequel
I have actually done some more of the course
No it's pronounced skript
I'm currently describing the difference between primitives and objects
@prisma wave will it be completed before I die
will it be completed before dyescape?
My side project list contains about 30 different things
Time to push a commission in to make it more fun for you >:)
Money is somewhat of a motivator though
You know of it right
I don't think you do...
I told you about the new bungee system right?
@quiet depot would you say lesson 2 is too early to go into primitives Vs objects in detail?
ie null, objects having state and functionality, etc
pff
lesson 2 is deconstructing the garbage collector, understanding reflection and instrumentation, and creating a mock jvm
๐
when talking about null
I often see tutorials mention shit like the "billion dollar mistake", don't bother with that shit
just get right to the point
Yeah it doesn't really achieve anything
I'm trying to keep everything fairly unopinionated so far
Alex, I told you tho right
what
I told you about the new bungee system right?
no
Wdym
There's gonna be teams on the server
If they reach a certain level or member count they get their own server
Less Lag ;)
That's quite cool
Yeah, but the fun part is working out how the fuck I'm gonna do it lmao
that should probably not be a plugin
I'll probably order mehself a dedi or 2
Hard to use?
Lovely null checks
Docker is fairly simple @pale shell
@ocean quartz at least it's not like 10 lines of Java
Yeah, mention argument returns <!@ID> so simple regex to leave only numeric characters
@quiet depot just finished lesson 2, mind checking it out and giving some feedback at some point?
link ples
It's the Google slides I'll DM you link
anyone else wants a look let me know, happy to take any feedback
Its finicky with the version, and sometimes gradle can get detached from knowing the plugin is defined
@prisma wave
Like this...
The library version is implicitly 1.3.72 because it gets it from the plugin
But its saying the plugin version is null
LOL
@prisma wave Can you link me as well?
@quiet depot thanks for the feedback, been through and changed most of it
@ocean quartz sure, one sec
https://docs.google.com/presentation/d/1D8CFy7tWO65qDbnW0QgVyf88SICWIOoisCPCssghaLs/edit?usp=drivesdk may as well put it here, any feedback would be appreciated
@obtuse gale You still got that project open?
@ocean quartz https://github.com/VoxMcNetwork/gradle
thoughts?
@prisma wave just a suggestion it'll be cool if in brackets you put the numbers for the types of values..
@topaz bay That gradle one?
@obtuse gale ye
yyea I should
@obtuse gale can you update it to use this?
any of them
You can use as many as you want xD
I'm still debating is Kotlin a good language to learn.
@obtuse gale yes
pls
well imma download IJ again and start learning Kotlin.
@dawn island good.
u got any good sites Ranald?
ew.... thats... not my name...
Thanks @quiet depot, and fixed.
@prisma wave Looking pretty good so far!
@topaz bay Ooh that's hot
@ocean quartz you know what else is hot?
the vox link is actually just serving from the master branch of that repo
So additions, changes, and improvements are HELLA easy
Day three of the campaign to put the staff team through hell looking through my code, it's getting kinda hot in here... I wanna be butchered and smoked like Piggy's relatives
if (track.screenPoint != null && track.screenCallout != null) {
//npe below -|
this.repaint(
----> track.screenPoint!!.x.toInt(),
track.screenPoint!!.y.toInt(),
track.screenCallout!!.width,
track.screenCallout!!.height
)
}
Nevermind me just realised
Race conditions ๐
@heady birch dont use !!
Have to if it's a var
I can use .let instead apparently

Oh yeah right
Because it doesn't depend on the variable anymore
But you should fix your race condition
I don't like having to do !! inside a let
track.modea?.let {
graphics.drawString(track.modea!!, 10, y)
}
That doesn't fix anything lol
You now have the exact same problem as before
You want to use the argument
it
Aha!
You dont have to, you can redefine the value and actually handle your nullability
Except thats not what doing !! does
It literally inserts "if this == null, throw NPE"
Thats not doing nothing
Using !! is the antithesis of the kotlin type system
It is DEEPLY discouraged by the creators of kotlin, and arguably should not be in the language
val screenPoint = track.screenPoint
val screenCallout = track.screenCallout
if (screenPoint != null && screenCallout != null) {
this.repaint(
screenPoint.x.toInt(),
screenPoint.y.toInt(),
screenCallout.width,
screenCallout.height
)
}
Its literally a simple change like this
And you immediately reap the benefits of not LITERALLY writing an NPE into your code
Everytime you do something.somethingElse you are retrieving the value of somethingElse
If it is mutable, like it is in this case
It could have changed in the time between you do the null check, and the time you actually use it
Which would throw an NPE
Ah yeah
So if you assign it, then you can check, and then use what you assigned
They really thought this out didn't they
I would say its more like some people don't think it out
You get the warning to prevent the NPE, so instead you just manually throw the NPE yourself
BIG LOGIC
BIG!!!
wait
you mean you shouldn't do this?
if (modea != null) {
graphics.drawString(modea, 10, y)
} else {
throw KotlinNullPointerException()
}
๐
equivalent of !!
Any cool kotlin alternative to System.currenttimemillis
like timeMs() or something
Not on the jvm
And... prefer using .let or using the declare and null check?
let isnt composable in the way an if check is
There is no hurt in declaring the variable
In fact, no matter what you do, a variable is going to be declared there
How would one check if the item isn't flying anymore? I get that I need to check the velocity, but unsure what exactly to check
You could probably just check if its on the ground?
See I gotta detect when it hits an object, which could be a wall, so that probs wouldn't work
(probably explained it a bit oof above)
take its current velocity, and get the current location + velocity, check if the block there is air or not
Thats what I did for a paintball game I made
@heady birch there's measureTimeMillis which measures how long a lambda takes
Interesting
also measureTimedValue that uses destructuring to measure the time taken while still returning a value
@pale shell good suggestion but once you get >32 bits the ranges start getting massive which makes it quite difficult to fit the numbers. The long range and the double range probably wouldn't even fit on the line (and most people wouldn't understand the floating point ranges anyway)
whooo wants to see some arrow code
?plsnoarrowcode
lol
smh
import me.SXTaNna.iCAntCoDE.Main; Sx not even naming the main class main with a lowercase
I tend to think this kind of code looks less like an arrow and more like some sort of space ship from an old arcade game
@remote goblet Burn it!
That if
dont ask me i didnt make it
looping over a list of entities in O(n^2) like a boss
You german Ori?
Why the hell would you write outputs in german..
hey guys just looking for a code review on a project, lmk if theres any redundent/stupid code i should remove
Matt, this is in rwd if you magically feel like helping them
Lmao Aj
perfect
Can you use instanceof on a switch?
thanks, I reckon I could simplify it tho, instead of
println("Hello world"```
I could make it
```kotlin
var COOL_message:String? = null
COOL_message = "Hello world"
println(COOL_message)```
Doesn't work Yugi, can you try it for me and make a gif so I know how
just to make life easier
don't thiink so matt
Sadness
welp
Doesn't work Yugi, can you try it for me and make a gif so I know how
@hot hull
Doesn't work Yugi, can you try it for me and make a gif so I know howSure
k thanks
when(variable) {
is Player -> blah
}``` mmmm
couldn't they of simply done this 
for (World world : world) {
for (Entity ent : world.getEntities()) {
if (ent.getPassenger() != null)
return;
if (!(ent instanceof ArmorStand) && !(ent instanceof Tameable) && !(ent instanceof Player))
ent.remove();;
}
}
it's still garbage
but its not as bad
i always forget that
https://i.imgur.com/YmoCq9R.png IJ be supporting win 7
Lol
hello i want make a plugin when i break 5 lapis_ore blocks player received a message
who can help me?
u dont have a way to tell when the player has broke 5 blocks. u need to add a counter for when they break it
player.getStatistic(Statistic.MINE_BLOCK, Material.LAPIS_ORE) % 5 == 0
if the amount of lapis ore theyve broken divided by 5 has no remainder ^
will be true for multiples of 5. ex 5, 10, 15, etc etc
Ah yes, I can see a lot.
See that's effort tho
Give me the rang
idk what that kid is smoking
ye id have to open that in the web browser to do such thing
I need some of that
xD
(32bit cpu)
Kali, :c
But he just wanted the Rang :c
Rang
c:
Not sure if only upgrading the cpu to a 64 bit one is worth it Kali
I love how you tried hiding the link but failed :p
DM me an invite to your server
hmm
I'm confused rn
confused on what?
What'd you dm me?
an invite
Not seeing it..
Deleted xD
Why
dm
I am probably just really tired, but I don't see anything wrong with that code @pliant eagle
Are you sure the event is fired? Test it by sending a message to the player each time the BlockBreakEvent is fired. If it's not sending the message, you haven't registered your event, but that's another problem. (More info here: https://www.spigotmc.org/threads/how-to-i-register-events.317921/)
If you do get the message, try sending the statistic the player already has to the player. What you do have to keep in mind is that the getStatistic is an int value, so in order to send that to the player you'll have to wrap it in a String#valueOf()
probably also worth noting, the statistic wouldnt be updated until after the processing of the event
So maybe this isnt the best way to do it
check if its lapis ore, and then do (player.getStatistic(Statistic.MINE_BLOCK, Material.LAPIS_ORE) + 1) % 5 == 0
notice the + 1
I put a test message and the function is working correctly, I also tested that +1 and it still doesn't work
then make it work lOl
hey guys im messign around creating a plugin, and how am i to in the editable config file that generates in the plugins folder, make it so that the # text i put in there shows?
because it keeps dissaprearing
but doesnt that mess anything up?
depends what you want to do
modifying the config will need saveConfig
which will remove comments
so...
hmm
so theres no work around?
because the config needs to edited to change things in the plugin but i need the notes to help with what each thing is for
saveDefaultConfig() works :>
oh yeah that'll work at first
at first?
if your plugin does getConfig().set(blah) you'll need saveConfig()
which will remove the comments
๐
tysm
Wtf is this shit in #705633782811590666 people are expecting fully customizable pets, abilities, lessons, anticheat and a prison core for $5
JDA youtube tutorials are actually decent, this one even uses final
Why isn't spigot ones the same ๐ข
No one uses spigot anymore
Well, Dr. Sxtanna wasn't available.
Nah, was checking the hastebin stuff, and this one popped in so decided to check it out
Fucking love Kotlin, had to register Int on my command stuff for JDA and was thinking "ugh do I need guava for Ints.tryParse" but remember it's Kotlin and it has "".toIntOrNull()
And to imagine most of them think Java is superior
haters
you can override unary +?
You can override every operator...
Its so great
@prisma wave i thought you were the Kotlin Master
Bruh what is #705633782811590666 now? Look at the latest request
Bruh what is #705633782811590666 now? Look at the latest request
@errant geyser a big meme
Clearly
I'm sure the staff will fix it ๐
hey how to i change player name in chat?
p.setDisplayName(name);
p is sender
player
ty
@pale shell nobody's perfect
???? @prisma wave
@prisma wave i thought you were the Kotlin Master
๐

Ooh even better
why not paste.helpch.at
Trying to do a converter like Cube did
@ocean quartz why when?
More websites, though i can only think of 2 so far, so if i can't think of more i'll not use when
Wouldnt it make more sense to store them in a map, and compose what to do with a function?
infinite extensibility without the need to change logic code
Ooh good idea yeah
Could even take it from the config that way
What would the composition even be in this context?
HeY I WiLl MAYBE GiVe $5 FoR YoU To TEaCh Me AnD 2 OthErS JaVa
Basically a list of websites it can convert from
"[Service] Development Lesson
[Request] Hello! I own a server and all 3 of the owners are learning how to code with IntelliJ. We barely know much and want someone to teach us a little bit of the basics for 30 minutes. After the lesson we MIGHT pay you $5 depending on if it helped us enough. We would like a lesson for 30 minutes to teach us the basics so we can make a Enabled Message, Disabled Message, Config and a Few Basic Commands like /info which will give you the server information.
[Budget] $5
DM me if interested!"
like wtf
@ocean quartz No, I mean like... what would the functions be?
You were checking if it contained pastebin, what would you do with that knowledge?
Well since each website has it's own way of getting the data from, i'll need to check what each does, for example for pastebin i'm trying to convert the link like pastebin.com/asdasdsa to pastebin.com/raw/asdasdsa so I can get the raw data
It gets all the links in a discord message, the links could be anything, so the contains is just to check what is the website in the link
Tbh probably not the best way of doing it
progressive index search?
Trying to do a converter like Cube did
@ocean quartz oh hi
store the current index, and find the index of that value in the string offsetting the current, and run that until you can no longer find indexes
Could even get the actual value of the url with a space index search, offset by the link index
Gotcha, I'll try that
@pallid gale Hope you don't mind me stealing that idea xD
Just really dislike other pastes and most people on my server use pastebin
racist
lol idm, ill find our list of pastes
const regex = /pastebin\.com\/([0-9a-zA-Z]+)|hastebin\.com\/([0-9a-zA-Z]+)|hasteb\.in\/([0-9a-zA-Z]+)/;
Those are the one we can currently convert
Then from that we can grab the raw url https://${matches[0].replace(${matches[1]}, "")}raw/${matches[1]}
https://${matches[0].replace(`${matches[1]}`, "")}raw/${matches[1]}
nice
Barry also has other ways of reading paste services that don't use /raw/ but i won't go into that
question @pallid gale
hi
why dont you have the first group collapsed?
ยฏ_(ใ)_/ยฏ
Pretty sure it's just how i built it, cause it only did pastebin to start with
just never reorganised it
probs all the same code tbh
=paste
Please use a paste service to share configs, errors, code and long logs.
โข HelpChat Paste
just a different ui
no idea what that is
Its like they have a word database, and it just throws a bunch of actual words together
I fucking love kahoot
random spin username
2 bad
=kahoot start
u already know cubes impl will be nicer
@compact perch where de kahoot at
@quiet depot, I didn't get that. Can you say it again?
nightmare. fuel.
@pallid gale is ur triangle emote taller than thr others?
yeah they're all over the shop
fair dinkum
most australians sound british when they be mad or speaking fast
they do be mad doe
Woop got it working
ez
hot
noice
can it do the stupid pebblehost paste too?
Currently only pastebin, haven't dove into the other ones yet xD
gj anyway
Ty ;p
Gotta make it better though currently doing it in a weird way, for example to add the /raw in the middle of the link.. you'll judge me
that A+ will be lowered to a D
URL("https://pastebin.com/raw${URI(link).path}")
THOUGH this was just a test, i just wanted to get it working before I go to bed xD
And yeah it's only one message
joinToString("\n")
Told you xD
To insult me with this
I'll do it better tomorrow! It's 4am i just wanted to get it done xD
Now to convert from https://mcpaste.io/ hmm, it doesn't seem that hard
It's always added the same way, with the numbers on the the td line-number and the actual content on a td line-content
Just would need to cycle through the html and get the line-content data
not optimal, but could work
We're sorry but MCPaste doesn't work properly without JavaScript enabled. Please enable it to continue.
.<
I'll try doing it myself ;p
aight ping me if u want it ๐
Sure thing, that'll be a challenge for tomorrow me though ;p
@ocean quartz you using python? If so I found https://pypi.org/project/requests-html/ recently which can parse js
Already laughed at in offtopic
๐ ๐
i enjoy that i rarely use spigot javadocs
@compact perch Hello
okay
rude
I understand why you'd ignore untouched
but me? 
I understand why you'd ignore untouched
@remote goblet ๐
you know ily
you right
i mean i wouldn't know I don't have emotions so
package me.ItchyDitchy.HelloWorld;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
@Override
public void onEnable() {
}
@Override
public void onDisable() {
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args ) {
if (label.equalsIgnoreCase("hello")) {
if (sender instanceof Player) {
Player player = (Player) sender;
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e&l[!]&e Hello Player!"));
return true;
} else {
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&e&l[!]&e You have to be a player to use this command!"));
return true;
}
return false;
}
}
}
halp
Errors: This method must return a result of type boolean
Unreachable Code
Also give us some details
I am new to this xd
Should I give kotlin a try?
@signal tinsel just do it no questions
Also, @distant sun Have you fixed this yet?
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'ACTIONBAR'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'BROADCAST'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'CENTERBROADCAST'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'CENTERMESSAGE'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'MESSAGE'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'CONSOLE'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'CLOSE'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'JSON'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'PERMISSIONBROADCAST'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'PERMISSION'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'CHAT'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'PLAYER'
>.... [12:13:44 WARN]: [Pouches] [ActionUtil] Overriding the action with ID 'SOUND'
Hm Gaby
It overrides default actions, so it always sends that, but I'm not sure why..
no
because you shade it
๐คท
That doesn't get moved into anotehr package by maven
frosty that sounds like a you problem


sx would be proud



