#dev-general
1 messages · Page 176 of 1
oh no not that
:P*
with it's hard-coded Premium class
it's still hard-coded though
and you have to manually go in and update the variable
well true
which can be a pain
but it uses NMS i think
yeah probably
we have to make new holograms plugin that runs on packets :3
Caused by: java.lang.NullPointerException using java be like 
i mean it already exists but watever
i want to make clickable holograms like CMI has so next/prev page
Have you figured out how to detect the correct text?
nop
didnt even try yet
if i had cmi i could check if they use entities i guess?
or maybe if i check on hypixel they also have clickable holos
oh buts only
like no prev next
just click
?
Cool?
if anyone wants to ever make clickable holos let me know i wanna help.
@jovial warren whatcha doing?
Nice pfp Matt
Gotta take advantages of nitro xD
which anime is that? maybe Tokyo Ghoul?
Yup
uu
Frosty i got idea how i could check which part of text player clicked
like you know pitch/yaw
i could check how far (angle) from holo player clicked XD
Yea nah, 100% that'll break, if you even manage to make it
Sounds like a very inconsistent method
If they get too close the hologram moves which will break it
Spawn an invisible entity where you want it to be clicked
matt but entiti moves?*
baby bees
rotation will stick cuck it up
like holo rotates?
no AI
Yea but the hologram will rotate lol
o
holo text rotates.
Meaning you'd still need some hella ass math to make the mob follow the hologram rotation
yea nvm did not consider that
yep
Sounds like an almost impossible situation to deal with
CMI did it somehow?
Imma make a clickabla hologram lib maybe
Because it'll rotate different for each client
But wait
another issue
Clicking on air with nothing on hand doesnt send a packet to the server afaik
rly?
Yeah
nope :kek:
wtf
mhm
It is quite possible if you atleast know when the player has clicked
theres another issue like if you have custom font text can be longer/shorter
🤷♂️
i realy have no idea how they do it.
Also @quiet depot can I have one of my multi spins?
=multi
no
Oh
we still have one going
Time to talk then xD
is it cumulative?
i realy have no idea how i could check where the player clicked
no yugi
rip
So you said CMI did it right?
Can you link me? I don't think i ever heard of it
That's two entities
didnt copy the gif..
Looks like two entities to me too
With a big hitbox
beee
i mean you get players pitch/yaw right
Imma try making that
....
That would actually be easy lol
its probably not that hard either
just some math to calc where on circle shoudl you put mob
righht
What?
you alreadyx have players yaw
Just check the display name of the mob lol
Why would you need rotation?
text ROTATES?
But it's two seperate entities lol
ye
but you need to move them
cause if you rotate 90 degs
you are gonna be only able to hit 1 mob?
That's how it works with CMI yes
they probably move mobs dont they?
From my playing around in the past with the holograms on CMI, they were very unresponsive when it rotated, so I doubt it
oh
since if you like move mobs stay at wrong position
bad showcase but yeh
i mean it probably wouldnt be hard to just get players yaw
and just rotate mobs on centre of circle?
@ocean quartz wdym "whatcha doing"? lol
I created a fork of Matt's Framework
I wanna contribute to v2 lol
like just check how player is rotated and move mobs to position?
http://images.virtusdevelops.eu/shareX/y9dvykg8.png
using circle math?
@jovial warren I know but what are you planning on doing?
Don't want to just get a PR like for jda, at least not until it is fully done
but what if there are multiple players in the area? Gasper?
thats why you use packets??
well idk that's why I'm asking LOL xD
XD
like you can send armorstand packets i guess you can also send other mob packets
and give it custom name
then when player hits it you get stuf
bam
@ocean quartz I wanna do stuff, but at this early stage in the rewrite, my contributions would just kinda make it my project, and I don't want to do that
also, please change your packages lol
me.mattstudios.mfcmd would probably look better as me.mattstudios.framework.command tbh
No lol
ok another idea. Have just one hologram and be able to add click areas in the hologram. and just add an invisible mob with no text. just so they're able to click it. it will rotate the same just it won't be named
@dusky drum
?
thats what we are doing?
invisible mob with name so you know which part player clicked
ah
well I thought you were doing multiple holograms in a line
my bad then
with invisible mobs to click
btw how are you checking for like palyers?
like I assume you won't go thru all players and check their location right?
or is that the only way? xD
Ah yes the good old, server go brrrrrr
xD
?
dk I was told player move event is a thing I should almost never use
@ocean quartz fair enough, you do you I guess lol
I mean, I'm just trying to learn. not trying to teach you xD
that's why I'm asking
i mean i guess those are the only 2 ways to do it
like I used to check player move event to check if they are in a location but turned out it wasn't that good
yeh
move even does a lot of like executions or how could we call it
like 20 times every 1 sec for each player
i guess
anyone has NMS for spawning mob with no AI?
Yes
can i have it for testing ?
final net.minecraft.server.v1_8_R3.Entity nmsEntity = ((CraftEntity) entity).getHandle();
final NBTTagCompound compound = new NBTTagCompound();
nmsEntity.c(compound);
compound.setByte("NoAI", (byte) 1);
nmsEntity.f(compound);
nmsEntity.b(true);
Should probably still work on latest, if it doesn't 
okay
I mean spigot has entity.setAI(false)
eh
does spigot have like public repo so i dont have to use buildtools for each ver of mc?
?
Yes, but the repo only provides spigot api, not nms or craftbukkit
they're illegal
@prisma wave Got any clue what this would be in groovy?
dependencies {
val implementation by configurations
implementation(kotlin("stdlib-jdk8"))
}
probably
¯_(ツ)_/¯
Even google doesn't know -.-
wait
brister u ever done subprojects with gradle, groovy & kotlin?
isn't it just implementation 'blah'?
i've done something similar for pdm
check that I guess
no cuz kotlin plugin registers it’s own implementation configuration, which for some reason can’t be accessed in the subprojects block
u can get around that in the kotlin dsl with the code frosty pasted before
I know what to do here
but idk how tf u do it in groovy
check the pdm base build.gradle, you add like apply false to the plugins block
and then use apply plugin or something
yey running build tools gotta wait another 1h now
Holy shit I remember that
o right
testing some stuff for holo
anyone know if i can disable these brackets from collapsing?
Final issue, how do I exlude this?
w: Some JAR files in the classpath have the Kotlin Runtime library bundled into them. This may cause difficult to debug problems if there's a different version of the Kotlin Runtime library in the classpath. Consider removing these libraries from the classpath
w: C:\Users\Frosty\Desktop\Projects\IntelliJ\Kotlin\FrozenJoin\common\build\libs\common-3.0.0.jar: Library has Kotlin runtime bundled into it
@onyx loom just press on the expand button on left
@dusky drum
but i have to do that everytime i open IJ gaby 
but those are 2 holos
Again, it's impossible with just 1 holo..
I mean CMI has too as well
it is frosty
how do you know
Yes
cause im doing it right now
different clicks?
Gaby, because there's no way to detect what the user clicks lol, if you can manage to make it, then go ahead I'll be impressed
but i have no idea how to spawn mob with no AI im stupid.
nbt 🤷
nms?
I was talking to Gasper @hot hull
how do you know
?
ow
it is frosty
Doubt you'll be able to make it functional with one holo only, but if you do props to you
no ai it's just a nbt tag "NoAI": true
Maybe check for left or right click?
Left back right next
That could work with only one holo
am i stupid:
http://images.virtusdevelops.eu/shareX/zjd08x1q.png
thanks matt
Also it requires server world not world
new NBTEntity(event.getEntity()).setInteger("NoAI", 1); if you dont use 1.16 or so
oke
wait... did I just read that @quiet depot is using Kotlin? xD
no
Kotlin Masterrace lol
also why do I get https://en.wikipedia.org/wiki/Master_race this when I google "define master race" lol
@prisma wave Found this, but doubt it's relevant since this isn't a case of transitive dependencies right?
unlikely
Yea all I'm seeing is in a case of transitive deps
Time to go find a kotlin plugin which uses modules I guess ,-,
lets see if what i made works
great i made fully working plugin.yml file
(i forgot it)
any idea why i cant update mobs location?
do i need to teleport it?
here i made it work now you set center as hologram and i need to change the angle and bam
http://images.virtusdevelops.eu/shareX/lcau7g7n.gif
why bees @ocean quartz ?
you mena me?
didnt he suggest to use bees?
why bee cause thats what i rememberd of
ye
i mean slimes would be good to?
they are square and easy to change size of
idk I'm just asking xd
so you can basicly change sizhe
Oh, cuz the hitboxes seemed perfect for it
Does that work per player?
Also good luck making it invisible lmao
Yeah it's not that easy xD
I went with armorstands on my example
why not that easy?
i mean i could also use armorstands if i wanted to
thats just concept
Idk, making entity invisible seems like a pretty ass thing from what I searched
just stop it sending the packet about the entity being created, no?
actually it's never that easy
Would String.class.isInstance(String.class) be true?
wat?
yeah
howly
It's a neat thing
@steel heart that method checks if a specific object is an instance of a specific class
I'll throw a wild guess and say no @steel heart
oh isAssignableFrom is what I'm looking for
wow Java reflection lol
Idk I'm just casually writing some code in java which is kinda annoying
Any reason as to why my module doesn't detect another modules methods, even though it should?
e: C:\Users\Frosty\Desktop\Projects\IntelliJ\Kotlin\FrozenJoin\spigot\src\main\kotlin\com\github\frcsty\command\admin\HelpCommand.kt: (5, 31): Unresolved reference: color
e: C:\Users\Frosty\Desktop\Projects\IntelliJ\Kotlin\FrozenJoin\spigot\src\main\kotlin\com\github\frcsty\command\admin\HelpCommand.kt: (6, 31): Unresolved reference: simpleColor
@steel heart it's Java code, no wonder it's annoying 😎
@hot hull wat?
does 1 module properly depend on another?
yup but this will make my java code more kotliny
Yes, implementation project(":common") I have this within my spigot module, and the methods I'm trying to access are in the common one
It worked before, doesn't now tho
can it find them before you compile it?
like is it just not finding them at runtime or what?
It just shit itself when I try to compile
so if you actually go to HelpCommand.kt, it resolves the methods no problems?
yup
how would i send like packet to player like mob got teleported?
mhm
It's odd because I have another thing which is in my common module and that works as it should
that error usually only occurs when it actually can't find those methods, and IJ will tell you when it can't find them
Well I mean is there a fix lol
good
where could i get list of all the packets?
nowhere lol
PacketPlayOutEntity perhaps?
any1 here knows android app development (java)
i disagree 🤷♂️
why?
java is faster
eh, not by a lot
depends what u working on
if it was a significant difference, Google wouldn't've endorsed Kotlin as the official language for Android
also @dusky drum, PacketPlayOutEntityVelocity might be a contender
google endorsed it cuz they have law suits with oracle
I disagree
will check
gg
any1 knows that?
was this changed?
EntityZombie entityZombie = new EntityZombie(((CraftWorld) location.getWorld()).getHandle());
oh I know Kotlin like the back of my head @pearl birch
Like this entire discord is filled of kotlin fanboys
yeah sure
or give me some tutorials that are trust worthy
Like this entire discord is filled of kotlin fanboys
yeah we're on a mission to convert everyone over lol

@pearl birch if you want tutorials, I'd suggest reading the official documentation
there's a "Learn" tab at the top
owerplay are you the one from MH?
omg
Two Gasper's here eee
crazy
I use IntelliJ because I don't do Android development, but Android Studio is literally IntelliJ anyway so it doesn't matter @pearl birch
you sure EntitySlime's constructor only takes that?
idk
lemme check
okay Bom thats great
now i have to learn all the shit xD
do you have any tips where to start?
i cant even do hello world in kotlin
i know c++ tho 🤣
hello world is pretty much this: ```kotlin
fun main() {
println("Hello World!")
}
main() = println("hello world")
it requires entitytipes bom
yeah I saw ^
read the code lol
good evening King Circle (Jerk) I
No jerking > jerking
🙄
@ocean quartz it's not jerking, it's just stating facts 😎
In other news, managed to do the most annoying part of the abstraction of the framework, the messaging system
yeah that's what I struggled with when I tried to abstract Octo
how did you do it?
Pretty simple actually
MessageHandler<T>
send(final String id, final T sender)
MessageHandler<CommandSender>
MessageHandler<Member>
oh that's genius
why didn't I think of that xD
I bet you have a method in there that returns T so you can access the actual message
or whatever
What do you mean?
actually I'm misinterpreting what this does I think
I thought you meant abstraction between JDA's Message and Bukkit's... well... fuck all
I mean yeah it is
lets see if i did packet stuff correctly
It's MIT do whatever
fair enough
ow my fucking god i made packets work
noice
now lets see if i use 2 players
the hardest part about NMS is knowing what each variable is and what it does and knowing what to replace it with
eh
those were simple for teleport
well will event like player hit entity still be triggered if that entity is actually just like client sided?
i think hitbox is a bit wierd:
http://images.virtusdevelops.eu/shareX/oxoglgxw.png
a bit to big
I think slime is a good decision here
works !!!!
now i need to check when player hits the slime
i guess i'll have to like make new hologram plugin that works on packets?
and not like hd
wtf is that skin
Nice skin
How did you even get a CraftWorld 
Is the player an nms one?
but like nms World
(player.world as CraftWorld).handler
yes
Yeah mb
it was so funny when i hit the mob and got disconnected XDDD
Matt, can you add CommandSender shit to your msgs lib as well btw?
What do you mean?
lel
@kindred hatch 2+2 is 3 tho..
1+1 = 10
Oi Frosty wdym command sender?
component#sendMessage(Player)
now i gotta find how to get entity from PacketPlayInUseEntity
Make a command sender one as well 
Hmmmn
That makes no sense, you can't send json to console
should i use my own packet handler or just use protocollib?
since idk how to make packets all version compatible
love when this packet isnt even on https://wiki.vg/Protocol
¯_(ツ)_/¯
it's not that hard lol
I already told you how to do that
client-side only?
well
only that player sees the entity so it doesnt exist on server
and i get null
so how can i make it cross version compatible?
https://wiki.vg/Protocol#Interact_Entity this sends the entity ID
keep track of the entity ID you used for the interactive holograms
🤷♂️
Are you not using the packets?
oof
how do i get entity ID?
There's a Integer field
Reflection mate
NMS is just one of those things that's kinda just "guess and hope for the best"
its private
^
idk how to use reflections on kotlin
You can use Java reflection just the same way
public void updateField(final @NotNull Object object, final @NotNull String name, final @NotNull Object value) {
try {
final Field declaredField = object.getClass().getDeclaredField(name);
declaredField.setAccessible(true);
declaredField.set(object, value);
} catch (NoSuchFieldException | IllegalAccessException exception) {
exception.printStackTrace();
}
}
```this will do you
never used reflections btw
but that updates field bardy
oh
so i can get field
im stupid
im realy stupid
you can do the opposite of that to get fields
public Object retriveField(final Object object, final String name) {
try {
final Field declaredField = object.getClass().getDeclaredField(name);
declaredField.setAccessible(true);
return declaredField.get();
} catch (NoSuchFieldException | IllegalAccessException exception) {
exception.printStackTrace();
}
}
```might do
also are you blind BM
does that look like Kotlin to you xD
declaredField.get(object);
aha
but
nvm
after that i need to make this all versions compatible
so i need like nms class grabber
just create an Adapter interface and make implementations for each one of the different adapters for each version
java.lang.NoSuchFieldException: Entity ID
oof
you think that's what it's called in fucking OBFUSCATED CODE?!?!
yes
which class are you looking at btw?
That's for a packet
PacketPlayInUseEntity
Not EntityPlayer or wherever you're looking
its a
it's probably a then yeah
MiniMappingViewer
what's that gaby?
open it
well first, we gotta find out how it's stored
yeah the actual Entity isn't stored in the packet
ye
because the packet isn't world-specific, entities are
its just id
there is a nullable method called a() though which takes a World and will give you an Entity
?
in PacketPlayInUseEntity
ah okay
you sure Item<T> is what you think it is?
that variable is called packedItems apparently btw
wtf is taht
a is the ID, b is packed items
apparently the original name for DataWatcher$Item is SynchedEntityData$DataItem
some say i could use like invoke
but SynchedEntityData has a field that's obfuscated name is c that stores the Entity
okay so i have to get that data watcher as syncedtadwadawd and then get c?
not what I meant by my original message
SynchedEntityData is the original name
DataWatcher is the name given to the class by bukkit
they're the same class just different names
but yes, you need to get c I think
no idea how to get the data watcher though
so something like this:
http://images.virtusdevelops.eu/shareX/2qx5gj9p.png
wait you never told me you were using Kotlin lol
:?
I could've optimised that original retrieveField method I sent
.,.
lemme fix it up for ya
fun Any.retrieveField(name: String)
= this::class.members.single { it.name == name }.apply { isAccessible = true }
don't even ask, it works lol
actually will that work for Java classes as well? @prisma wave you'd know this lol
@dusky drum are you depending on kotlin-reflect?
um?
implementation 'org.jetbrains.kotlin:kotlin-reflect'
```in groovy
if you hover over "member" it'll probably tell you to depend on reflect
Why not just use Java reflection?
okay after that i im not completly sure how to make it cross version compatible
@jovial warren Java reflection will mostly work
eh i just hate reflections they are hard to work with, love how friking mc obfafafwefsa code.
fun Any.retrieveField(name: String): Any
= this::class.java.getDeclaredField(name).apply { isAccessible = true }.get(this)
```maybe this? maybe that should return `Any?`
that is an abomination
fun Any.updateField(name: String, value: Any)
= this::class.java.getDeclaredField(name).apply { isAccessible = true }.set(this, value)
Anyone got any clue how to fix when a modules code get's imported fine, just can't be found when I try to compile a project?
^ that's one for BM lol
Sounds like you've imported it with IJ and are building with gradle
gotta love when you add kotlin reflect plugin size is already 4mb
p
just remove kotlin-reflect since you're now using Java reflection which is built-in anyway
though Kotlin reflection is better when you only wanna work with Kotlin stuff, since it supports everything that Kotlin has
okay
now i gotta check how to update armorstand name
its not hard to do it using protocollib
but
i dont want to depend on it
but cant find any good tutorial (text)
So BM, the fix being what exactly?
anyone has NMS util?
I might make one at some point just because of how much it looks like we all could do with one lol
but for now, idk
protocollib?
literally everyone has it installed
eh then
then i made my stuff for no reason oke.
at least now i know how to deal with crappy packets.
they're not actually that bad
if they weren't obfuscated, albeit it would still be a mess because Minecraft just is, but it would be better
also that's because Minecraft isn't backwards compat
yeh
treat every new version as a new major
i mean if there was explanation for what each obstufff in class is it would be nice.
but yeh
I think they also do some changing just to throw you off
because of course, they don't actually want you decompiling their shit
i mean
they released the obfuscation maps
as a company they don't but people like dinnerbone are pretty prevalent in the modding community
or were
@dusky drum Niall's KiteBoard supports (1.7 is deprecated but still there) 1.8 and 1.12-1.16 and that only has like 10-15 classes
10-15 cause there is 10-15 versions .
@prisma wave did they?
yes?
@dusky drum nope
yes
1_10r1
1_11R1
1_12R1
1_13R1
1_13R2
1_14R1
1_15R1
1_16R1
1_16R2
1_8R1
1_8R2
1_8R3
1_9R1
1_9R2
1 for the Adapter interface, 1 for the AdapterCapability enum which stores adapter capabilities like tablist header/footer, unlimited chars and hexadecimal, one for AdapterConstants, which is full of god knows what (I haven't deobfuscated them yet lol), one for the AdapterProvider which provides the appropriate Adapter implementation, 1 for the UnsupportedAdapter which does absolutely nothing, and then 10 adapters for the versions lol
and idk how you get acces to kiteboard if its private repo
I hope the adapter thingys is something that @heady birch chooses to open-source because it could get really handy
@dusky drum I'm deobfuscating it with Niall's permission
i hope someone makes HD packet based and implements what i made todasy
or i wasted 5h of my coding
MAKE SURE YALL SUBSCRIBE AND CHECK OUT MY NEW VIDEOS !!!!! THANK YOU! LETS GET TO 20k!!!
^^^^
or i wasted 5h of my coding
.,.
I'm kidding lol
Gonna drop this question here, ping me with responses.
So let's say I have a bungee and a spigot version of my plugin, I handle the action firing through events, all fine and dandy. Now let's say I want to expose some stuff as an API, (adding custom actions, perhaps even events that get fired), should I expose it on the spigot version, or the bungee version? And if I do expose them, how would I make them communicate with each other? (ie. If someone was to add a custom action through a bungee plugin, how would I send that action to my spigot one so it can get triggered, vice versa?). I am guessing bungeecord channels, but that leaves me with another channels, those wouldn't work on Velocity or similar bungeecord alternatives would they? How would I handle that?
I don't use anything right now, still considering stuff
@hot hull if you want to make an API, ideally it should be fully standalone (in this case especially), and should have no idea about the mere existence of the rest of the project
also the PMC is for plugins to communicate with BungeeCord and other plugins (including other instances of itself) across a BungeeCord network
and it's not very fast or efficient at doing that either
Okay yea that's no problem to make it standalone, question still stands what I should use for them to communicate
why do they need to communicate?
Well let's you have a spigot addon which adds a custom action, and then you try executing that action through bungee, the plugin won't know it exists will it
also apparently my new module button has just kinda taken a day off for some reason lol
I just restarted my PC and it still does nothing
module button?
the new -> module
I literally just enabled floating mode and moved it around to see if it's behind it and it's just not there lol
(if you wanna know what I mean by "enabled floating mode", I'm using a tiling window manager called "i3")
okay lemme read your damn question first
you realise your API is supposed to be abstract enough to work with both Bukkit and Bungee right?
meaning backend-specific features aren't meant to be possible to make use of
if you want support for backend-specific features (Bukkit features, like GUIs and other stuff), you'd need to add some extra stuff for a Bukkit API
Don't worry about that, I'll worry about how it'll work when I get to it, just what I kinda need to know is how I could have the communicate
I like to go with an interface-only (I mean like 99% interfaces lol, this doesn't include anything like util classes or extension functions) policy for APIs
it still comes back to the question of: why?
actually I see why
but if you're making a backend-specific addon, you just make it work with the backend and the backend alone
unless you want mixed addon support
like addons that have backend-specific features but also use features that both support
Okay Imma continue and worry about this when I actually get to it, danke for ur assistance so far
you're welcome
bruh haskell is near impossible to use
i've got about 30 files and 2 errors just for a hello world
i can't even ironically circlejerk about this
😠
bruh haskell is near impossible to use
Any objections @light leaf ?
oh dear
:^)
is @NotNull Optional<@Nullable MyClass> a bit over the top as far as nullability annotations go
why would an optional be nullable
Optional<@Nullable ...> makes no sense whatsoever
^
if it's type param was non-null then the Optional would be redundant thinking about it
exactly
isn't Optional Java's attempt at introducing a decent nullability pattern in to the language btw?
that like 95% of developers don't use lol
but they're a good alternative
they're a more declarative way of handling nullability
yeah
indeed
isn't declarative programming that concept that people say is "really amazing" that literally 0 languages actually use?
although it would be a bit impractical
@jovial warren not in the slightest
loads of languages have support for declarative styles
functional languages are pretty much entirely declarative
I remember researching what declarative programming is after md_5 claimed it was the reason why "Maven wins"
maven is imperative
Maven is not a programming language
yea
which is even more dumb
but his point was that build tools should be imperative
which XML is
Hold on
yeah, md_5 said this:
Imperative vs. Declarative
A build system should be the latter, therefore Maven wins
(also Maven is almost always faster than Gradle)
Declarative you mean
yes he claimed that "Maven is faster than Gradle"
Ok but this specific instance isn't really about programming but about how you define your build
"(Also Gradle is almost invariably slower at actually building)"
imperative is for loop, declarative is forEach right? in a very basic sense
is it the other way around
No
"In computer science, declarative programming is a programming paradigm—a style of building the structure and elements of computer programs—that expresses the logic of a computation without describing its control flow."
The idea of a loop is imperative
basically saying what you want to do without actually saying how to do it
Right
obviously duh
right
maven >>>
@onyx loom get out
ok wait i take that back maven is ass
come back lol
i shouldnt joke about that 🌚
Functional programming is declarative because your code is defined in terms of function composition
yeah I get it now
Not do this then do that then do this other thing
not necessarily
I think you confused it again
sometimes declarative programming can be useful, other times imperative can be the better option
one thing that we can all agree on though is that there is absolutely NO reason at all why a build system has to be declarative
so he's talking out of his ass then
yeah
I personally much prefer Gradle since switching to it because of how fast it builds changes and how much less shit I have to write
but the latter point there is just because I'm a lazy shitbag
i am pretty sure everyone here prefers gradle except Niall
nialls opinion doesnt count
lol
so its just a huge W
technically he has a right to his own opinion
no 🌝
I remember speaking to my friend the other day, and he brought up a really interesting point where in Gradle you can't do this: ```kotlin
object Versions {
const val KOTLIN = "1.4.0"
}
plugins {
kotlin("jvm") version Versions.KOTLIN
}
```because the plugins block is initialised first for some weird reason, even though IntelliJ says that's totally fine
and having to create a buildSrc directory just to make that work is effort
dsl bad
it's not just DSL
you can solve this with the buildscript block
let me just take a screenshot of that real quick
@lunar cypress I swear that was deprecated
kinda
unless you're one of those still using Gradle 4 @lunar cypress
anyone worked with protocollib, how do i spawn new entitiy?
https://wiki.vg/Protocol#Spawn_Entity ooh I wonder what this is
sorry but you asked for that lol
i didnt ask for NMS i asked for protocollib
it's ProtocolLib
I just googled "protocollib wiki" and got that lol
if i use that i need Entity class for each version.,
probably what you're looking for
bruh haskell is near impossible to use
i've got about 30 files and 2 errors just for a hello world
i can't even ironically circlejerk about this
i've got about 30 files and 2 errors just for a hello world
🌝
idk what that is nor do i care :)
[ [ x | x <- xs, even x ] | xs <- xxs] now this is readability
I get it but what is xxs
but what does it do
¯_(ツ)_/¯
lol
so for every xs in xss create a list with every x in xs where x is even
what he said
list comprehension
wtf is with this protocol lib is like wtf:
http://images.virtusdevelops.eu/shareX/icrunibw.png
you dont spawn entitiy like this how da fk would i set entity time if i can only set numbers,......,,.::ČŠČ???90
[[x for x in filter(even, xs)] for xs in xss] that would be the same in python i think
@dusky drum I think the stuff on https://wiki.vg/protocol will help you
no
https://i.imgur.com/RRp7ZxK.png though there's no doubles xd
should be on that wiki
idk since armor stands id there isnt the same
how can then snowball and armorstand have 78 id?
armorstand has id 78 under objects tab
Object IDs and Entity IDs are different. Most objects also have an entity ID, but should only ever be spawned via Spawn Object.
and apparently im spawning mob wrong even so the wiki said i did it correctly
i have no idea how to get field index...
using java, can u guess what all of these IJ warnings are for?!!?!
Welcome to the life of rewriting

xDD
The worst thing is when you format the pc, install the IDE and realize that you need the 20 external libraries that you installed.
Welp
xd
@ocean quartz lol
Welcome to the life of rewriting
@ocean quartz welcome
Welcome? I've been living in this life for years
Smh
I could say the same, if not because every day I discover something new e.e
http://images.virtusdevelops.eu/shareX/2qe1j0b4.png
i've tried living one but same results
wait why are you not using apply? lol
apply?
don't
lol
any idea why it doesnt spawn slimes?
@dusky drum apply allows you to return an instance of the object while applying stuff
like setting the ID
you'd need to specify all of the fields
I mean, that is what they use isn't it?
i imagine
i mean idk if you need to specify metadata
will check, yeh uuid doesnt help
doesnt say like its required to specify
i think ids arent correct
eh i guess i'll edit ids manualy
Everyone in here that wants to start a career in plugin development DM ME. We will pay and will help you get into bigger servers. we need more staff because of the high demand for more mini games!
lol
wdym "temporarily remove part of the..." oh... right... I know exactly what you mean
@dusky drum seems legit
well i made it accept ints in wrapper so i use ints from wiki.vg
seems to work
i just dont get it why slime of size 1 has hitbox of the size 5 or 3 or what is it
if it did you would be able to hit it from inside that hitbox
