#dev-general
1 messages · Page 69 of 1
send pictures
cheeky
@floral basin this is the list of em
DH_17(8, "&bBlaster", Material.WOODEN_HOE),
A_280(14, "&bBlaster Rifle", Material.WOODEN_HOE),
DL_44(4, "&bHeavy Blaster", Material.WOODEN_HOE),
T_21(12, "&bSporting Blaster", Material.WOODEN_HOE),
EMPEROR_4(2, "&cBeam Tube", Material.WOODEN_HOE),
ION_BLASTER(2, "&cIonization Blaster", Material.WOODEN_HOE),
BOW_CASTER(1, "&cBow Caster", Material.WOODEN_HOE),
DX_2(6, "&6Disruptor Pistol", Material.WOODEN_HOE),
DXR_6(18, "&6Disruptor Rifle", Material.WOODEN_HOE),
SD_77(10, "&6Sonic Pistol", Material.WOODEN_HOE),
SG_82(3, "&6Sonic Rifle", Material.WOODEN_HOE),
C_22(10, "&5Flame Carbine", Material.WOODEN_HOE),
CR_24(10, "&5Flame Rifle", Material.WOODEN_HOE),
PLX_2M(1, "&5Missile Launcher", Material.WOODEN_HOE);
oh boy give me a sec
Why everything is a wooden hoe 😂
They're using damage values
^
its how people take advantage of resource packs while not disturbing vanilla items
Also, how do I download shit from sketchfab
Recreation of A280 blaster rifle from Star Wars for Covalt - A280 blaster rifle - 3D model by welormit (@welormit) [2a1f2f2]
Like found this, but can I even download it?
You can't unless they allow it to be downloaded
I see
I've only looked through half but I would just assume its safe to say $75 for 14 full models mixed between large and small
@hot hull
Ok ya keine danke
huh
Not trynna go bankrupt for models which I'm gonna use once so gonna download from the interwebs :p
what are you even using them for
Got a clue how to conver the .obj to a json model?
It's for a contest :p
Making laser tag and I need some models
Yeah I can convert obj to a model but its sketchy
Pretty sure you can use Blockbench or smth
lemme try
It makes the models messy and I have to color them myself still
Ah, that's kinda lame
damn these models are really cool https://blockbench.net/
Doesn't even detect the .obj 
I'll show you an example
I'd appreciate that, still waiting for the invoice :p
ye
Gaby, like jesus fuck this is detailed https://sketchfab.com/3d-models/lukes-blaster-esb-da4de3f0506b4e09a4f69cf17c9a9098
Luke's Blaster - ESB - 3D model by jimshart (@jimshart) [da4de3f]
The only thing I dont like about blockbench is that its element based
I mean, that's an object, they can do whatever they want
Element based models look nice if you spend the hours on it
while on minecraft you are limited to dumb rotations and shit
but voxel models are much easier and can be much more detailed, and less blocky
do you have rotations?
22 degreess increments
wdym
Angle shit like blockbench
you are gonna tell me that someone even made that engine on bird's chest?? https://sketchfab.com/3d-models/mechanical-graboid-ass-blaster-firebreathing-cb4dcf3080924f119632ef7c3225da13
Hard surface practice based on Hard Surface Modeling In Blender course by Aidy Burrows & Gleb Alexandrov. Also fan-art for Tremors 3 and those wonderful beasts called Graboids.
Blender and Substance Painter.
https://www.artstation.com/artwork/QzmWeL - Mechanical Graboid Ass ...
@hot hull Before and after the convert
okay this was a terrible example
it actually doesn't look that bad but....
what do you expect Drew
if I lower the voxel resolution
Yea I get what you mean
Mind explaining to me how I can open the .obj format inside blockbench?
@floral basin what's your sketchfab profile?
If I find a few models mind converting them? :p
I mean sure but coloring them costs me time you know
pure black
I mean, anything art related xd
Drawings, models etc.
That's what pigs one was
The rocket?
Yeah
yes, fc just took the rocket from SpaceX and turned it into voxels ez
Thats why it had color, cause it was a json
it was a .obj
how did you import the mtl with it?
pro hacks

Minecraft Spaceship
Modeled by: DrewMagic21
Made with: Cubik Studio PRO by BDCraft. - Spaceship - 3D model by aDrew (@DrewMagic21) [423b7b0]
"Open .obj" hacks
also cause i have a licence to cubix which does all the hard work
Cubik
shh
k ur just trash
Haha
NOW
idfk what I named the rocket in my models folder
btw your google website is so slow drew
sites.google.com nerd
Drew, so how do I open an obj file?
Gaby thats because its loading a million model previews
Frosty if you're using blockbench idk
yt it is
just dm me your obj things and ill convert it
if you want the models to just be one color thats easy
good old bucket tool
Gaby thats because its loading a million model previews
@floral basin well idc, I want to see your stuff not loading bars
The tool 🤦♂️ not the interface
What's with some having a .fbx 
ALL
I think thats ur internet speed chief
ah yes paying 300$ a month for good download speed
no lol
I don't have good download speed at this house
10$ for 1GBp/s
I get like 10 down and 0.5 up
Crate - Pack 1 made by aDrew1 with BDCraft Cubik Studio PRO.
These models are FOR SALE!
https://sites.google.com/view/drews-modeling/store - Crates - Pack 1 - FOR SALE - 3D model by aDrew (@DrewMagic21) [d6f5b36]
0.5 uhh
Crate - Pack 2 made by aDrew1 with BDCraft Cubik Studio PRO.
These models are FOR SALE!
https://sites.google.com/view/drews-modeling/store - Crates - Pack 2 - FOR SALE - 3D model by aDrew (@DrewMagic21) [8624253]
a little too square
smh
are the shades from the website or?
this is a crates pack https://sketchfab.com/3d-models/crates-and-barrels-in-desert-diorama-224dfc6efc0c4410bf2f1b36d3ac4c03
Crates and Barrels in Desert Diorama - 3D model by Petro.Stepaniuk (@Petro.Stepaniuk) [224dfc6]
lmao
ima make my own holograms api
Uh.. good luck 😂
yes
ty
will need lol
I have no clue how this shit works
I've only ever used holodisplays api
LOL
What is people developing today?
Flying rockets
With armor stands?

Huh?
Ok
@prisma wave it’s ok Kotlin is gonna save you anyways
always
But for the record you’re above averege when it comes to short humans (:
I'm gonna take that as a compliment
it probably isn't
but being an above average short person is something i can live with
makeCompliment()
!makeCompliment()
Haha
Its ok, only being that is actually long is Hagrid
HELLO!?!?
he is very long
Haha oh I forgot
Shes taller than him
aha
Well Sxt you’re like doby
Im ok with this
@topaz bay do you consider this ugly
I'm considering DSLing it
I mean it looks kinda neat..
thank you
DSLing?
Too big tabs
yeah
do you mean DELETing
Although that color = Color.RED looks meh
Looks about right
Yucky
soz
sx is kotlin the best language?
Subjectively. Yes.
why’d u make ur server in go then?
it fast
Because the language isnt everything
kotlin can be fast
true
plus Ive already made a server in kotlin
Probably because they dont use kotlin
That would be perfect
And extremely insecure
response {
version {
name = "1.15.2"
protocol = 578
}
players {
max = 100
online = 2
sample = setOf(PlayerInfo("Hello"), PlayerInfo("World"))
}
description = chat {
message = "Welcome to my server"
bold = true
color = Color.RED
}
}```
hypothetically would this be nicer do you think?
version I can bring into an enum at some point
question, why does the format looks the same?
wdym?
I see
{
"version": {
"name": "1.8.7",
"protocol": 47
},
"players": {
"max": 100,
"online": 5,
"sample": [
{
"name": "thinkofdeath",
"id": "4566e69f-c907-48ee-8d71-d7ba5aa00d20"
}
]
},
"description": {
"text": "Hello world"
},
"favicon": "data:image/png;base64,<data>"
}``` @distant sun the actual data that the client uses looks like this
version {
name: "1.15.2"
protocol: 578
}
players {
max: 100
online: 2
sample: [{name: "Hello"}, {name: "World"}]
}
description {
message: "Welcome to my server"
bold: true
color: RED
}
Would be better in korm
JUST saying
perhaps
do you guys plan to do smth with this or just for fun?
mine is just for fun
it will make the world worse
SxtannaChangeWorldEvent
e.setCancelled(true)
I wanted to do that but .. :)))
@prisma wave you fucking HATER
yess
LMFAO
@prisma wave true*
@hot hull A little question, how can I make a 24 hour timer that executes an action, but in turn when I need the remaining time of this, I can use it?
@modern trench #development
Sorry
Imagine asking me a development question, eee
thoughts?
Thought it was json for a while 😂
Why color
Implement color into the text itself and it'll be neat
What's the use for this?
ya
making a minecraft server in kotlin
seems to work well
@hot hull I'll give support for & codes but I'd prefer a more clear reference to what colour it is
&blue ?
I mean from an outsider perspective
or something like that, cuz being able to define only one is iffy
that's how it's done in MC
MC is shit
extra?
yeah
for things like json chat messages and the server list it's done with json
rather than with the fancy S code
Oh how good 1.8 is
ew 1.8
Oh you're building a server from scratch?
hopefully more
1.15
my focuses are on speed and all of the api being thread safe
How does that even happen
So are you cutting out the extra stuff?
hopefully more
@prisma wave lol xd
Whats the difference
not much practically
Ultimate power
although
depending on how you've implemented the server
the mobs can go really fast and things
Do you use the normal client?
Can you optimize it even more than paper (for private use)?
I dont like that xd
the code is completely different
in theory
@prisma wave .
It's better that way BM
@frail glade my plan is to cut out a lot of clutter, but also I want to integrate with coroutines for some speedy processing of events and things
wdym?
I wanna give you a neat idea of what you should try, but I know someone is working on that so I don't wanna spoil it ;c
I won't tell anyone
Idk what corutines are
i'm not 100% sure myself tbh
but they are a form of lightweight thread
kind of a mix of the bukkit scheduler and taskchain
but as part of the language
so you can switch between sync and async very quickly with little effort
That sounds interesting
brister, are you planning on supporting the entire minecraft protocol?
I hope to yeah
MineKraft protocol
👍
Imagine having the choice of not making it spigot but still make it spigot
good
exist*
glowstone is an excellent project for inspiration regarding nms-less minecraft logic implementations in that case
this is kinda anti climactic but currently i've hit the roadblock of getting slf4j working lol
yeah I've had a look at glowstone for some good examples
slf4j is super trivial
I know lol
you add the api
but the log level won't change to debug
here's my logback config https://github.com/PiggyPiglet/Framework/blob/dev/addons/logback/src/main/resources/logback.xml
it supports debugs
a config is a config
I'm pretty sure slf4j has a wrapper around these configs anyway, you should be able to implement it in code
from my research it can be done with system properties
although those don't seem to work
well you're not entirely wrong
the config file location can be set by system properties lol
still a file
regardless, it seems logback has a code-based config system built in
konfig.kt
those docs out here with windows xp screenshots lol
I might put logging to the side for now
not sure it's high priority atm
I have a feeling that pig will learn kt for this
no clear plan so far
I tell you a plan
Make it gud
I had two general concepts when I started my api revision for rpf
clear separation between immutability and mutability
and keys over abundant getters
and, I've achieved it so far, while in the constraints of SOLID
sponge has a Key system, which is sort of comparable to a map
sponge has a giant class, an effective enum, but not a literal enum
called Keys
it contains constants for every type of value retrievable from any sort of entity (not to be confused with minecraft entities, think software engineering)
i.e.
Player#get(Keys.NAME)
that's an interesting way of doing it
now while I didn't copy sponge's implementation of this function, I did copy it's functionality
now, regarding mutability
I've decided to have protected (documented to ensure the access modifier isn't upped) methods in my entity classes handling mutable operations
e.g. my Inventory class has a protected abstract method
how would the api function?
handleUpdate(int slot, Item item)
oh
my mistake
it's not abstract
mutability is optional in my framework
if an implementation wishes to have mutability, I have a sort of mixin interface
like what Cloneable was meant to be, except mine is implemented properly
lmao
I have an abstract PlayerInventory, which contains purely immutable methods
this doesn't touch on mutability at all
the implementation would be called BukkitPlayerInventory for example
if it wishes to be mutable, it would also implement MutableInventory
api users would use PlayerInventory
that seems like a good call
that way, mutability is possible, but isn't directly exposed
the user would have to explicitly cast to MutableInventory
Brister help him finish it so we can finish PAPI3
I'll bear that in mind
Hmm
I'm a little busy
But I will help by giving a motivational speech
piggy work faster so you can finish papi 3
I've got a contest to do
"We must do it for the people that count on us"
fucked if i know
netty's giving me an e
the reason I told you all about that shit, is because I think you should do a similar design on your api
Okay but what about having a finish API
directly exposing things seems like a recipe for disaster
🥺
it could also make thread safety easier
you know what else is nice
it's a mixin system in java that doesn't require instrumentation
cough sponge
brister, quick question. In my API, I'm extensively using generics for handles
handles being, the implementation
like bukkit implementations have getHandle for their nms correspondants
all my api classes have a getHandle method
except the return type is stored as a generic
what's your opinion on this?
bad or meh
and incase you need an example
public final class SpigotPlayer extends Player<org.bukkit.Player> {
@Override
public org.bukkit.Player getHandle() {
return handle;
}
}```
I'm no expert but I'd say that's fine
as long as you're not experiencing any problems that generics can sometimes bring I don't think that's a problem at all
and it's better than having to consult docs to see what Object it returns for instance
ideally handle would only be used by people who are targetting a specific platform
any normal user would just use the wildcard generic
yep
btw, start with the hard stuff
i.e. world generation
good luck
and for gods sake multi thread the fuck out of it
the whole thing has been hard lmao
but thanks
so far
I've got a rainbow status
that's a random colour each time
and that's about it
better than nothing
suggestion
implement your own transfer packet
obviously vanilla minecraft doesn't support such a thing, but you can easily emulate it
a perfect example is bungeecord
with plugin messages?
the minecraft protocol doesn't technically support such a thing
it's impossible to move player from x to z
you'd probably need some sort of proxy like bungee though
yes, but maybe no
Bungeekord
obviously you can't just go changing the ip on them
but that's basically the only thing you can't change
the rest can simply be forwarded on to whichever server your transfer "packet" says
I'll do some research into that
it would be cool to be able to have native support for multiple servers and switching between them
precisely
might even give some incentive for people to use it
wat
I was going to implement a master slave system into my server
i actually got the idea of a transfer packet from gian
I think it was gian
on a spigot post somewhere
what would be the purpose of a "transfer" packet?
without bungee
^^
and less interference
But... what would it do?
yes
the same thing bungee does?
sx, it's not actually a packet
I used "transfer packet", because that's what the concept is called in other games, which actually have a transfer packet in their protocol
oh
what's the overhead like with guice?
tiny
wondering if it's worth using that
The fun part about go, I could technically just make a single server run multiple servers
it definitely is
flex
Doesn't Sponge use Guide?
alright
Guice
yeah it does
well I'm thinking
yeah it does
somewhat poorly though
for example
well, not necessarily poorly
it just doesn't fully use it
I feel like whoever implemented guice into sponge at the beginning, didn't fully understand it's capabilities
or maybe they just didn't like some parts, and chose not to use them
possibly not
or didn't see it's possibilities
who knows
guice usage in sponge is fairly minimal, that's the point
in my case some of the packet classes need things like Gson instances, wondering if it's worth using Guice to instantiate them
they could be instantiated a lot of times per second bearing in mind
(which is actually a JsonService since i'm debating moving from gson to moshi)
flex
don't
no?
simply get the packets to provide a method of initializing themselves
that would still make them need a static reference to a JsonService
is JsonService equivalent to a Gson instance?
you don't need to use reflection or guice actually
you should still use guice everywhere else though
At the moment it's equivalent yeah
then make it a constant
But I've not settled between gson and Moshi yet
tf is moshi
moshi monsters
apparently the fastest JSON lib
yet it'll still be the thing slowing you down
Hm
what do you need json for?
Very philosophical
the server list response, chat messages
it'll be the slow part
This is a micro optimization
I already told you how you can avoid reflection
Youre on the JVM
Everything is slow
In the grand scheme of things, this is a negligible aspect of the program
Avoiding reflection is not really a micro optimisation
Gson and Jackson can do that too
How make a menu that can display the duration of the temporary permission granted to a player(
%luckperms_inherited_expiry_time_essentials.keepinv%) doesn't work tho , please help
Except it is
@forest whale #placeholder-api
my main point is what I should be using for instantiating packets and injection
the json was just an example
If you a lot of serialisation, it does have an impact
Except its not
I'd recommend getting the packets to provide a method of initialization
Injection on packets?
yes
for what??
class PacketOutStatusResponse(private val value: StatusResponse) : Packet this needs a StatusResponse from the incoming packet, but also some sort of Gson/Moshi/Blah instance
assisted injection seems like the obvious choice
but i'm aware that there's a certain amount of overhead with that
not as much as you'd think
guice generates classes at runtime (similar to what dagger does at compile time) which create your instances, presumably via new
the overhead would only be at startup, not effective run time
wdym by "statusresponse from the incoming packet"?
misworded that
PacketInStatusRequest comes in
gets handled
handler replies with a new PacketOutStatusResponse + a StatusResponse
PacketOutStatusResponse serializes StatusResponse and writes json to the client
that last step seems like a problem
I mean... that kinda depends on how you write your serializer?
Technically, this could be completely decoupled from the packet itself
Say your statusresponse and chat objects implement some sort of marker interface like "JsonType"
Your serializer could just have a writeJson(JsonType)
And that would handle the conversion and writing
that's an option
at the moment I'm just using the netty ByteBuf to write
- a few extension functions
don't extension functions have to be stateless?
?
where would the json serializer come from?
no?
Also, thats not state
I mean
making ByteBuf.writeJson would mean that ByteBufs.kt needs something to serialize the json somewhere
at the moment there's no class at all
it's just extension functions
So?
where would it get the Gson or whatever from
you can define a top level gson instance
oh yeah
idk it seems like the gson instance shouldn't be part of ByteBufs
and rather held somewhere else
i'm definitely overthinking this lol
Having it somewhere else implies its used for something else
which it could be
true
but for example
a certain JsonType might need a specific TypeAdapter
it doesn't seem like that should be part of ByteBufs
That doesnt mean it should be a part of something else though
Nor do you even really need to enforce the contract of that marker interface
You could technically just have that function defined on any
writeJson?
yeah I was thinking how would that work lol
hm ok
however
for an example
I need a type adapter for the Color enum to make it mc client friendly
how would I go about registering that?
just inside ByteBufs?
Client friendly how?
in that the client expects "dark_purple" when the enum is named PURPLE
for an example
Did you consider renaming the enum to match the actual protocol?
even if I did
it's still case sensitive I think
and that was just an example
I have other things
This is honestly why Go is better
You can define directly on the type how it handles marshaling
WITHOUT tight coupling
That's ugly
I suppose
sx i'm scared
doesn't really solve my problem though
someone just presented a legit reason why maven is better than gradle
oh god
"parent poms"
in separate projects
not gradle's subprojects
hang on I don't know what I'm talking about
I need to do more research on parent poms
that's dependencies only
parent poms in maven can set things like plugin configurations
Which is a mess
Once youre 20k lines in, and you cant figure out why a behaviour that you cant see is occurring
lel
...
sx u heard about cloudflare spectrum on pro & business plans?
Im.... so confused...
IM SO CONFUSED
Literally 0 cost
And they just turned my fucking VM off
For no reason
could be 0.001
why do you have a google vm anyway?
There has never been a charge on my account
Literally fucking never
I host a bot on a micro instance
And I host my website on app engine
lmao
Clearly.
Helpchats obviously just very racist
@hot hull So what would be the uses of the @SubPermission?
Like what should the framework do with it
Just ignore it, probably not worth the hastle since it would be used like once or twice
Alright but if you need it just let me know i don't mind adding
If you feel so generous I have a request xd
Go on xD
Use plugin.yml for aliases 🥺
That one is too complicated >.<
I can make it so you can add an option where you can add aliases through the command manager if you want
Add that yea, the lib I was using let's me assign commands using the command manager, so would be nice to have that so I can convert over, gotta keep that 100% customisability tag :p
Just finished adding this
wo 😮
Should I make the permissions multiple?
Like @Permission({"permission.node", "permission.node.2"}) and it would require both?
Or sound useless?
I can't see why you'd ever need 2 permissions for 1 command
then only 1
I don't see why either
I might just leave it the way it is
Andre suggested this https://github.com/ipsk/MattFramework/issues/7
But I don't think I can make that work
help me fix actions not being executed in order xd
might be because i take then one by one I D k
but I can't find a better way to do it
@distant sun open terminal at the root of that project
gradlew wrapper --gradle-version 6.3
Why
Also, this is now how you install to local
not*
Thats the only thing I have found on google
I know I use some outdated stuff but Im not a fan of gradle docs
...
The install task is from the maven plugin
Which you should not be using, because it is deprecated
There is this plugin now
which has the publishToMavenLocal task
Thats a maven thing, not a gradle thing
Aight
you need to get section.
@toxic rapids how do i do it?
Hey I am a brand new developer and I am trying to make a simple /heal plugin. I think I mostly have it done except for this one bit, can someone please tell me why there is a red squiggle under line 22?
Hovering over the line will tell you why
it means somewhere in your logic, the function ends, but a boolean result isn't returned
also, considering you're new, I'd recommend making the switch to intellij
It's much better for beginners
could you look at the picture and tell me where I am missing it
yeah Ill install intellij
the picture doesn't include the whole method
also consider using a paste service instead of pictures, for code
=paste
Please use a paste service to share configs, errors, code and long logs.
• HelpChat Paste
how do I send you the link to my paste using that
paste the code in, press the save button, and copy the link
There's no benefit of me spoon feeding you, so I want you to logically deconstruct this
You have 2 return statements currently
but you've got more than 2 possible conditions
meaning any conditions that aren't explicitly handled here with a return statement, will indeed end the function, but aren't returning anything
you need to handle those extra conditions
Where are you learning spigot dev from btw?
Youtube tutorials, any recommendations?
Yes, avoid youtube at all cost
oracle has documentation, https://docs.oracle.com/javase/8/
Java SE 8 Technical Documentation Home
then you can move to spigot's wiki https://www.spigotmc.org/wiki/spigot-plugin-development/
The home of Spigot a high performance, no lag customized CraftBukkit Minecraft server API, and BungeeCord, the cloud server proxy.
then of course there's the javadocs https://helpch.at/docs
the javadocs won't be comprehensible till you have a basic grasp of java however, which you will acquire from oracle's docs
alright I will check those out
There's courses on thing's like udemy if you need something more visual, I can't say if they're any good though
avoid any minecraft related courses, they're generally terrible
just one more
I've seen people vouch for this course: https://www.udemy.com/course/java-the-complete-java-developer-course/
or not necessarily that course, but the author
no you haven't
there's still a condition left
speaking of which, you've actually got a useless condition in there
you're checking if label equals "heal" twice?
which isn't even necessary in the first place, assuming you only plan on using this executor for a single command (which is what you should be doing)
okay so I remove the second label equals heal
remove both
should work now, since you've removed the redundant conditions
Commands in spigot are weird
zod, you use sponge, do you know if there's actually any demand for a placeholderapi plugin?
Oh very much.
The existing one sucks
the existing one is also abandoned afaik
Mhm
I might be totally off here, but since I removed both of the label equals heal, how will it know that i am trying to do /heal
😮 I'm excited
with papi v3, we're adding support for nukkit & sponge
and later down the track bungee & velocity
@sweet apex you register your command executor to your command, and not any other command
I assume papi is a free plugin?
UwU
alright thanks for the help!
Ye
oh sorry
Is spigot down for everyone?
it doesnt let me get on the page whatsoever
It's up and down.
may i ask a question about the @quick lava bot?
Sure
how does the bot check the premium plugin that user has purchased
SpigotBuyerChecker seems broken for me
It doesn't have to be always Java though
So yeah we have our own in house program that pulls down the buyerlists into our mysql db
then the BS bot checks the discord listed on the profile the user is requesting to link
if it matches we link then check the db for any entries with that spigot username
if there is we just add the roles
We actually use to use SpigotBuyerChecker
pull down the buyerlists from spigot?
Sorta, that doesn't really pull them down
It just caches them
We pull them down so if spigot goes offline we still have a list of buyers to check against
So you use SpigotBuyerChecker get the user and store them into db. Then when the user come to discord and veirfy, the bot check from db
where do you pull the data from what source?
spigot
Our accounts.
Each morning, I login and I check names and make sure they are in the database.
so is it manually adding new buyer to db?
but how you know if there's a new buyer? is there a button on premium resouce page to let you see the buyer list?
Yes
oh! Thanks for answering my question 🙂
Yup!
I never realised how challenging it would be to use the youtube api
because every time you google a problem with the keyword youtube in it, youtube tutorials just pop up on a general topic somewhat related to your search
It's horrible to watch an indian teaches tutorial for me
I mean ngl sometimes they can help you
"sometimes"
I have to literally search for like 20-25 minutes to finally found the best tutorial made by an indian
@topaz bay Is this good? https://paste.helpch.at/runeteyaje.gradle
don't set a target compat unless that's actually the only version it's compatible with
also groovy repositories { maven { url = "file://C:/Users/dumit/.m2/repository" } }
mavenLocal()
yeah idk what's going on there
I use a deploy script, I don't do it through gradle atm
it keep saying "Cannot assign 'String' to 'Publications'"
though shouldnt my pom look different?
nice, math chapter "statistic and chance"
this is literally "40% this 30% that 20% another thing, which one has the highest chance of being picked"
what the fuck this is so easy
I say 30% has the best chance of being picked
yes
I agree
I gotta convert 110/1000 into 11%
that's
not hard
I already knew how to calculate a % its not hard lmao
POGGGGGGGGGGGGGGGG
IT FUCKING WORKS
the command framework
Spoke too soon xD
Almost done
Finished hangman yet @obtuse gale ?
nope lol, i stopped working on it cos i had to do something else, im gonna start back now tho
neato
i was having an issue i think with defining the arrays as arrays of chars
Is it gonna mess things up if i cast guess to a Char?
will that be all good if it is actually a char
Lol its almost like its speaking about me as a person.... This life can never succeed
I guess I can try add hangman to my bot too 😂
Would this work in theory?
val guess = event.message.contentRaw.toLowerCase().toCharArray()[0]
gotta copy all of cube's code first
converting the string to a char arrray then getting the first thing in the char array
I don't think that's a theory actually