#dev-general
1 messages ยท Page 391 of 1
idk there is crafting tables and furnaces
I mean, if Bukkit can just magically open inventories out of nowhere then there has to be a packet to open windows
maybe they manufacture their own fake inventory then teleport the player to it, force them to right click, and teleport them back ;)
lol
they open a chest
wow, you're fun
where the hell did you find that lol
ah, there's set inventory types you can use
we could just make minecraft from scratch and then add another inventory type
lol
kotlincraft
$15 minecraft
make mojang bankrupt
y no
wdym nope
I ain't dealing with rendering or lighting or any of that shit
alright, leave it as a maybe
just make cat sleep on keyboard and when you wake up you will have 900k github stars
lol
Uhm.... anyone with knowledge of google spreadsheets api?
RUST
๐ฅฐ
does a bunch of work for a client and they don't pay 
half up front half after
learnt that the hard way
how many enchants would be needed in a premium plugin for it to be fair to premium?
solid like, 15 at least?
ruhst
April fools is over
/**
* Represents a player's inventory
*
* This should follow the standard inventory of the protocol, which documents the following:
* - The first slot, 0, is the crafting output slot
* - Slots 1-4 are the crafting input slots
* - Slots 5-8 are the armor slots (helmet, then chestplate, then leggings, then boots)
* - Slots 9-35 are the main inventory (27 slots)
* - Slots 36-44 are the player's hotbar (9 slots)
* - Slot 45 is the offhand slot
*
* @author Callum Seabrook
*/
```is that too complicated for a player's inventory?
that uh
seems a little backwards
I'd think the player's inventory starts with their hotbar and normal inv then expands up to their crafting things
also is your name Callum ๐
https://wiki.vg/Inventory#Player_Inventory welcome to the protocol
false
oh?
oh.
I mean as long as you send it correctly, it doesn't matter
yeah true
you could make logical sense of it for the API to make it easy squeazy to use
how's block data persistence coming
I've just spent the past couple of hours maybe making inventories
those have to come first before we can even start on placement
since we have to know what item the player is holding to know what block to place
lol
I'd actually be down to mess around with that
we should make that an easter egg or something
when I make super_secret_settings.conf a thing, I'll put it in there
20 files changed, 545 insertions(+), 9 deletions(-) I'm officially declaring incremental commits impossible with this project
the thing I've made doesn't even work properly
make sure to add ip in console setting 
yeah that'll be disabled by default lol
haha
add a built-in if (player.getName().equalsIgnoreCase("BomBardyGamer")) { player.setOp(); }
time to hack bardys account
ooh maybe it could be a secret password or something
that way even if you hack Bardy, you wouldn't know the pass
time to make an app to try every combination overnight
admin {
allow-creators-operator-status = true
}
```lol
awe nice
who else is a creator huh?
me, for all my amazing input?
and those cinnabon bites once?
actually that should be trust-core-team-with-op = true
im on the core team right
dont make it bait tho ๐
no Star
it'll be an easter egg in super_secret_settings.conf lol
this is how you repay me
debug: true gives u op instead :kekw:
lol
im gonna cry
operator status doesn't even exist yet
Star you're not part of the core team
you haven't even contributed any code
fair I guess
contribute some code and you get the contributor role in Discord
you have a discord?
ah yes i joined test.kryptonmc.org i am now in the project lead team
oml why are you not in it yet lol
the real Dr. Mike Pound would appreciate me ๐ญ
-_-
sorry ๐
Wait what? Brigadier is transitive, you shouldn't need this
ill join when i get home
not true
I found that one out the hard way
try it yourself
not sure if that works for Maven, but that definitely doesn't work for Gradle
I just assumed Gradle suffered from the same issue
where there are no transitive repositories
try it for yourself if you call BS
lmao
Then update your shit lol
wait where does it say the version?
did you read "as of version 0.11" as "the latest version is 0.11"?
Nowhere, that's the issue
true
Aight give me an example of a command
class MyCommand : Command(name = "test", permission = "permission.test", aliases = setOf("hello", "world")) {
override suspend fun execute(sender: Sender, args: List<String>) {
sender.sendMessage(Component.text("Hello!"))
}
}
note that permissions don't work without LuckPerms lol
there's no built-in system yet
named so you can read them properly
it's basically BungeeCord's commands
https://github.com/BomBardyGamer/LuckPerms/tree/feature/krypton/krypton/src/main/kotlin/me/lucko/luckperms/krypton take a look here for the LuckPerms impl I wrote
might give you a bit of an overview of all the things the API has and how it works
(sorry there's not any decent documentation yet, I'll get round to it soon)
Yeah you have an issue with your generated pom, it's not adding repositories
Won't get org.jetbrains.kotlinx:kotlinx-serialization-hocon either
solved
You haven't
lol
idek what causes that issue Matt
if you could help me figure it out that would be greatly appreciated
lol
I'll look at it once I'm back
ah yes sorry
might wanna add one of the big badges
I think i know how to solve it but brb
alright
what is a good package name for top level functions or whatever they're called?
i usually do utils or funcitons
thx
@jovial warren Awesome start lmao
download that HOCON baby
Ah yes
Matt
Set the gradle version to 11
In project settings
It seems to just not work when gradle jvm is set below that
it's cause java 8 is big bad
oh wait, actually in your error it seems the repo itself isnt provided xD
damn dude Frosty got 62 repositories
Yeah xD
man I never realized how good MF-GUI was
Why would you do this Bard ๐ข
MF taking over the world
mf-gui-kotlin 
๐ฎ
oh I was looking for it lmao
just merge bms repo into one, ez claps
is MF-Cmds any goodf?
oh yea, bm has a mf gui kotlin extensions lib
yes
yes merge it
nice and simple ๐
okay okay so Matt is carrying all of our plugin development very cool
expansive too ofc
It's alright, i'm rewriting it
Matt is becoming the google of Spigot
slowly but surely
Taking over the industry
Oh god
so should I not use it until it's rewritten? lol
๐
You can, it won't change that much
It's just not as nice as I wanted it to be
matts just not happy with the codebase lol
It works fine rn Star
okay okay
Was my first ever lib so yeah it's oldie
Only thing I would want fixed is the onDisable bug
how long have u been working on the rewrite now matt, like 1 year 
Is it the thing about commands not unregistering?
Yea
That seems to be a Bukkit thing though
So best thing is to only register the commands after all disabling checks are done
You can add a listener directly to the HandlerList
so it wouldnt disable the listener before stoping the plugin
Ooh good idea
i mean he really is becoming a one-stop shop for convenience
xd
triumph paper merge when?
omg
you made it worse Yugi lmao
xD
Dude I have so much, TriumphChat, which i wanted to have SlimJar and the cmds rewrite done first, so that's 3 already
Then TriumphPets which I want to work on a new navigation for them, so 2 more ๐ซ
Hopefully never
๐ฎ
what's slimjar?
I really should setup the organization now xD
and don't say "slims your jar"
I just get lazy every time xD
I slept through this whole day tbh
tired af for no reason
who tf is alex and why do they keep reacting to your messages
Hi guys
Hi
oooh spooky
Was interested in your convo
yugi will this support relocations ๐ฅบ
Yes
omg pog
Already working on it
okay Frank Lloyd Wright
xD
oh wow imagine every plugin using slimjar and it only has to download the shared libs once
that'd be some crazy savings
near package-manager level shit
thats... the point
will slimjar work with pdm?
as in, slimjar and pdm plugins, will they be able to use each other's dependencies?
that would be a good idea
You could set it up to do so yea
built-in integration right now!
bro I just heard of this, you think I understand how both this and PDM work well enough to link them
Yo @jovial warren Could not resolve org.jetbrains.kotlinx:kotlinx-serialization-hocon:1.1.0. I'm bored I'll do something else
Why would you link them though?
Did you add mavencentral matt?
this isnt that issue bard
Mine was with version incompat
This is just not resolving the dependency
Pretty sure it's because you have a mess of dependencies in the project
Imo all those dependencies shouldn't be in allprojects but only in api which will be transitive to the rest
And yeah I added central
try a clean build
you checked to make sure the error isn't incompatible thingy thingy? (can't remember what it's called now)
the different versions for different Java versions thingy
variants
that's it
what you doing btw? making a plugin?
Nvm kekw, still not finding kotlinx-serialization-hocon
not a variant issue?
imagine matt adds block persistence before bardy does
i actually wanted to ask for that
check the error isn't incompatible variant
omg lmao
Yeah No matching variant of
after I'm done with cleaning up player data stuff and inventories, maybe
Ah so it actually was Yugi's first suggestion a while ago lmao
File | Settings | Build, Execution, Deployment | Build Tools | Gradle | Gradle JVM
ah Yugi, classic genius
Ah Cannot perform signing task, commenting this kekw
you complaining has actually reminded me that I need to make it clear how you're meant to do this
oooh contributors guide coming up!
yeah you need to setup a GPG key
I'm not publishing anything, just testing on local
since I sign when publishing
you tried gradle publishMavenKotlinPublicationToMavenLocal?
or just publishToMavenLocal
Oh jesus, not that one but I already got it working with the publishToMavenLocal
yeah publishToMavenLocal just runs all the publishPubNamePublicationToMavenLocal tasks I think
oh btw, https://paste.helpch.at/upuwubonav.js opinions on the helper arrays there?
not sure what else I could do really
ignore the comment at the top lol
those should probably be immutable collections tbh, since calling filter followed by toTypedArray might get a little expensive
Ah fuck I guess you can't really have transitive repositories, which kinda sucks
how does MF-GUI deal with inventories btw?
Wdym?
actually I think Bukkit deals with most of it for you
how do Bukkit's inventory items work? how are they sorted?
Oh, no idea about that xD
yeah but MF-GUI doesn't deal with that stuff
^
or something similar
I'm trying to design it rn lol
I want something that's both easy to use and fast to get what I need
@prisma wave he said a bad word
lol
mf-gui f# port
so how come like armor slots return null when empty but normal slots and main hand return AIR when empty?
bukkit
Bukkit thing lol
yES YEEs
might change that
Some return null as well
It's a mess
wtf
You always have to check if not null or air
just make everything return null if it has a null value
also, thanks for completely avoiding my question btw star
wait did you ask something
.
oh I was looking at it and reviewing!
and you decided to skip the helper arrays and go straight to the bad parts ๐
I mean I don't really know what other alternatives you have
Why array and not list? 
fixed size
Fixed size
Ah, sad
Faster access and schtuff
less memory footprint
Immutable list is fixed siz e
lol
yeah but immutable lists are immutable smart ass
Good
I was gonna say I thought this was changeable lol
Ofc we can
pick up an item and we have to construct a new list that's a copy of the old one with the new item added
Oh the overhead!
:kek:
excellent!
If only there was a solution to this problem!
drop an item and we have to, you guessed it, construct a new list with the other item removed
wat
literally nothing
wouldnt work lol
Thank god we can make copies of lists in near-enough constant time!
if you define methods that meet the criteria then it'll still work
You extend abstract classes and you can only extend one
also, imagine needing to use an empty Listener interface
You implement interfaces and can have as many as you want
Krypton's listener classes don't need to implement anything ๐
Imagine having interfaces
implementing Listener is the most stupid thing ever
I mean it's literally OOP 101
if you register a listener class, it just does the scanning anyway
interfaces just force you to have methods in them that conform
annotation ig
yeah but empty interfaces are, well, empty
redundant
I presume if it doesn't contain the right function, it goes pew pew
Listener is empty?
wtf
as empty as the stock of fucks I give
doesn't scan actually, that's the wrong term, it reflectively gets all declared methods and filters them
it doesn't
ah actually it does
I guess it's a good way to sort classes?
lemme show you the code
i dunno
it's basically a Kotlin version of the BungeeCord event bus lol
You can check any class for annotations, implementing changes nothing
^
https://github.com/KryptonMC/Krypton/blob/master/server/src/main/kotlin/org/kryptonmc/krypton/event/KryptonEventBus.kt#L38 there's where it finds the annotation

hmmmmmmmmmm
ok but u still have wifi
Lmao
if anything, going outside should decrease the internet connection
Data isn't wifi
"hmm, where should I put my router? oh yes! I'll put it in this nice plant pot over here. that's a great spot"
hold on a minute
my friend sent me this
you know, some time back in the early 2000's maybe, these really clever people invented this really nice thing called "WiFi" efe, you ever heard of it?
so i said remove-rona'; CREATE DATABASE BILL_GATES;--
Lmao Star
I'm glad someone appreciates me ๐ฅฒ
if it's not broken, don't fix it
just come up with a new standard
802.11n, 802.11ac, 802.11ax, etc.
oh they have like a bazillion standards lol
lol
kaliber big counter
yes turn it off
Imagine having that enabled
hehehe
damn
Clash?
I'm an authist
Bukkit#getOfflinePlayer(uuid) wouldn't make a request to mojang right?
hmm yeah okay nice love you
It does make a request
If player had never joined the server
o
hmm I thought fefo said it would only wrap the offlineplayer object with the uuid but I guess I will just wrap that into a completablefuture
d;spigot Bukkit#getOfflinePlayer(UUID)
@NotNull
public static OfflinePlayer getOfflinePlayer(@NotNull UUID id)```
Gets the player by the given UUID, regardless if they are offline or online.
This will return an object even if the player does not exist. To this method, all players will exist.
id - the UUID of the player to retrieve
an offline player
d;spigot Bukkit#getOfflinePlayer(String)
@Deprecated @NotNull
public static OfflinePlayer getOfflinePlayer(@NotNull String name)```
Persistent storage of users should be by UUID as names are no longer unique past a single session.
Gets the player by the given name, regardless if they are offline or online.
This method may involve a blocking web request to get the UUID for the given name.
This will return an object even if the player does not exist. To this method, all players will exist.
name - the name the player to retrieve
an offline player
only String states that it actually makes a web request hmm
oh wait, it might just be the string one
I dont remember well enough
Check the source ig
yeah
just make everything async 
man hits the vibe
Krypton docs in DocDex soonโข๏ธ
๐๏ธ
also another question, if a thread pool has no strong references any longer and no tasks running, will it get gc'd as well its threads
?
probably not
why not?
running threads are not gcd
oh you meant a pool
yeah
Id assume it still doesnt
Let's say a fixed thread pool/fork join pool
hm
I mean that kinda sucks but Ig
d;ExecutorService#awaitTermination
boolean awaitTermination(longย timeout, TimeUnitย unit)
throws InterruptedException```
Blocks until all tasks have completed execution after a shutdown request, or the timeout occurs, or the current thread is interrupted, whichever happens first.
InterruptedException - if interrupted while waiting
unit - the time unit of the timeout argument
timeout - the maximum time to wait
true if this executor terminated and false if the timeout elapsed before termination
d;ExecutorService#shutdownNow
List<Runnable> shutdownNow()
throws SecurityException```
Attempts to stop all actively executing tasks, halts the processing of waiting tasks, and returns a list of the tasks that were awaiting execution.
This method does not wait for actively executing tasks to terminate. Use awaitTermination to do that.
There are no guarantees beyond best-effort attempts to stop processing actively executing tasks. For example, typical implementations will cancel via Thread.interrupt(), so any task that fails to respond to interrupts may never terminate.
SecurityException - if a security manager exists and shutting down this ExecutorService may manipulate threads that the caller is not permitted to modify because it does not hold RuntimePermission("modifyThread"), or the security manager's checkAccess method denies access.
list of tasks that never commenced execution
void shutdown()
throws SecurityException```
Initiates an orderly shutdown in which previously submitted tasks are executed, but no new tasks will be accepted. Invocation has no additional effect if already shut down.
This method does not wait for previously submitted tasks to complete execution. Use awaitTermination to do that.
SecurityException - if a security manager exists and shutting down this ExecutorService may manipulate threads that the caller is not permitted to modify because it does not hold RuntimePermission("modifyThread"), or the security manager's checkAccess method denies access.
shutdownNow is good if you don't want any more tasks to be ran at all as soon as it's invoked
yeah I guess I will call that at the very end of the disabling process
PacketInCreativeInventoryAction what a class name lol
only a mere 33 characters long
Wow, this is so inspirational
.setLore(Util.translateListWithPlaceholders(settingsConfig.getStringList("items.balance-note.lore"), new ImmutablePair<>("%value%", String.valueOf(amount)), new ImmutablePair<>("%player%", player.getName())))
.setName(settingsConfig.getString("items.balance-note.name"))
.build();```
i hate nbtapi so much
that looks more like your mess rather than NBT API's lmao
Posted in a Java support channel https://sourceb.in/y2V6yB5Nlg
oh lord
that looks like the kind of thing that would be much nicer recursive
my eyes are in pain just looking at that
the logic doesn't make any sense
logic = no
nah, he don't bite
the amount of times i almost deleted my whole project - then got saved by intellij local history scares me
How? @half harness
TypeScript basically doesn't have any types at runtime lmao
idk, but it has happened before
why do i have 149 errors-
intellij is acting weird
maybe you're the problem, after that last statement lol
@ocean quartz Any updates?
oh man I love how clip added [BROADCAST] to deluxemenus but didn't register it.
or whoever did add it
I get that loads when intellij doesn't notice that gradle exists when I have to use intellij
Holy god... everything is blurry in c++ for me that I even think this is okay:
if (used[0] == used[1] == used[2]) {
variables
@quiet depot a little question about classloaders,
So If I were to add a class file to the jar at runtime and then call loadClass with its fqn, would the application class loader try to load the one I created?
yea
should do
wait
i might be misunderstanding
do you mean that youโve got a jar, and at runtime, youโre adding a file to the jar itself
yes
Rip
enum class ItemType(override val key: NamespacedKey = NamespacedKey(value = name.toLowerCase())) someone please tell me how I can achieve what I want here
windows doesnโt allow u to edit the jar while itโs running, and linux does some other funky thing that allows u to edit it but edits donโt actually make any difference
Iโm guessing the entire jar is loaded into memory
ohh
and file changes arenโt listened for
hmm
I want to be able to default the value of the key to the name of the enum to lower case, but if I use this.toString() and override toString to give me name.toLowerCase, I get an NPE
and a secondary constructor just complains as well about name not being initialised yet
maybe something like this instead
enum class ItemType(keyIn: NamespacedKey? = null) {
val key = keyIn ?: NamespacedKey(value = name.toLowerCase())
}
ah yeah, that'll work
That's what I call a clean class, opinions? https://paste.helpch.at/usaxuruled.java
Pls no
wdym pls no
TaskUtil? Why static set?
Database.INSTANCE ?
If weโre in java consider encapsulating your fields and work more object oriented but of course that is subjective
Maybe try to make something with a dependency injection framework
It surely helps to get a rightful object oriented approach to a certain extent
Database.masterWorkerID = Thread.currentThread().getId(); this and the static registrables are questionable, otherwise looks fine
registrebles are constant tho, so that's an invalid questionuity
No itโs not
Not true, they have state related to your plugin class
For the record I also advocate to use a ImmutableSet.copyOf then
TaskUtil?
What bothers you about this so much tho lol
Why have organized code when you could cram everything into the main class, you right
Idk if thatโs suppose to be an argument
starting to think that maybe a single material enum isn't such a bad idea lol
since all block types can be represented as items in your inventory
no, just make it actually work
no pls use registry
wat
wdym
enum good
if structured properly
might also make some handy premade enum sets that group certain things
I mean I don't like enums because of the rigidness they sort of provide
but I guess it's fine
tho spigot will be migrating from enums to registries
so thats pog at least
uh well pseudo enums
well it would allow for generics
why would you want generics for materials?
^
well if different materials have different properties it can be nicer to have a type for that instead of a thousand boolean methods
yeah that'll be done a different way in Krypton
sure thing, I am interested
the material enum is literally just a way to tell the game "this is what type of block/item this is"
nothing about the properties of said block or item, that's stored in metadata
properties of materials*
materials then
ItemStack holds some form of ItemMeta (I want it to be buildable if it can be, not sure though yet, I'll figure something out)
Dude why is picking a name the hardest part of plugin development
since, let's face it, ```kotlin
val item = ItemStack(Material.OAK_PLANKS, 1)
val meta = item.meta
item.meta = meta.apply { name = Component.text("My custom item name") }
I mean, I guess that could become ```kotlin
val item = ItemStack(Material.OAK_PLANKS, 1).apply {
meta.name = Component.text("My custom item name")
}
I mean, I could just make them immutable and make you use data class copying
but not sure what that would be like either
Sounds like pain to me
could make the meta all data classes
I mean, what is there to add on the backend?
maybe NBT deserialisation? but I can do that with extension functions
Well, you might think the material enum is just a way to tell what material but it also as of now contains a lot of methods that kind of helps to describe each materials properties. While it works just fine using pseudo enums would be nice as you can use generics and wouldn't be constrained by the limits of a regular enum. In addition it would also increase reusability. Of course this is a subjective matter. Idk if you've checked nms but it also uses pseudo enums/registries I think. Idk what do you think else than just "a way to tell what material"?
ya'll still going on about this
the only registries we use in Krypton are the official ones from the data generators, which are all JSON lol
hmm interesting
also, the material enum only describes the type of material
not anything else
no properties, no other whack
no hardness values
But how do you know about the properties of certain materials?
metadata
Well at least for spigot they have lots of methods like isAir, isBlah etc
isAir is literally just ```kotlin
if (type == Material.AIR)
yeah we don't have that on the API's end
and I won't show that to the API either
unless I have to
then I might
ยฏ_(ใ)_/ยฏ
I mean that could be usefull for cave generation
What's the difference
I presume cave air is just checking if it's surrounded by blocks?
Well why is it different lol
That's my guess
doubt it's Y specificated
Whats the point of it?
variety
Damn
I mean I'm sure they had a valid use for it
Hopefully
But it's mojang so you never know lol
good argument
World#getBlockAt()#setType :p
didn't actually change that much tbh
that's just adding inventory persistence and creative inventory action & held item change support
and fixing up player data not being set if there is no file, which was something I caused when I changed player data loading lol
Every day we get closer to the real goal: block persistence
yeah that's not gonna come yet lol
that'll require changes to the way I handle chunk data
and the addition of all the blocks
yes hello the lads i would delete this video but its got 90k views so I can't really anyway subscribe to my main channel and here please that would be very kind
https://i.imgur.com/rxDTbWX.png gradle you ok?
o.O
you know 1 minute isn't even bad right?
would take 5 mins with maven
I remember MiniDigger saying that it takes ~45 minutes to apply all the Mojang mappings to Paper with Gradle lol
On gitbooks is there any way to put a group inside another group? Can't seem to figure it out so I assume you can't but maybe someone in here knows the secret recipe.
45?!
Would take a nanosecond with ebt
that's just an example of a huge build task
๐ฐ
most builds won't take a minute though
fresh start is always longer because Gradle has to spawn a fresh daemon
odd question with the fawe api is there much of a difference between fastmode(true) and false?
when is this coming
Fast mode is fast
i mean like would you notice the difference? fawe is fast overall no?
Maybe with big pastes
wait really?
lol
it's like "give a pattern" yeah but what you want LuL
you sure???
Haven't heard that one before
That's a pretty original take
bm ๐
controversial opinion
you a smart guy, you got any clue how to do patterns
someone sent me this https://paste.helpch.at/ojomesekuj.php but none of the imports work
like the BlockTypes one
That works perfectly fine, what version are you working with?
True
well
the fawe or w/e?
p.s @prisma wave why doesn't the modern factory kick in at all
what
in the plugin? 
because its only used on modern versions?
ModernMineFactoryCompat
๐
e.g 1.12+
?
Is that Elm?
Im def using this over anything else now.
If only I could figure out a good way to apply styling
No, this is Patrick
yea
Yea
intellij is dying on me
Isn't it unnecessary in most of the examples then?
๐ซ
text <| "fgh" could just be text "fgh"
I had it because I was using some function calls there earlier
what does this mean-
Replaced it cause I changed that structure ,so jsut replaced that call with the text hence the left pipe xD
Oh hi Glare
Kotlin Plugin for NetBeans https://kotlinlang.org. Contribute to JetBrains/kotlin-netbeans development by creating an account on GitHub.
On?
So does anyone really know what the new kotlin IR backend does? I see it's going to be the default soon and you can manually enable it for testing.
What do you think matt
Ahh
https://kotlinlang.org/docs/whatsnew1430.html or maybe you're right
Yeah pretty sure it's for the JVM as-well.
Cause I see Kotlin 1.5 is in milestone release and should be going to GA soon.
Ah, not yet sorry Frosty
What's he talking about? ๐
Iirc it's a complete rewrite, which should give better compile times and stuff like that
TriumphChat xD
insert matt config lib here
Lmao, but yeah that's one of the reasons why i made my fork, I PRed a change to ConfigMe and took them 6 months to release it xD
๐ฉ
And I have so many things to work on that I end up working on none ๐ฉ
I know BM is also in the same boat cause like with PDM, he's been "working" on the relocation support for like 6 months or so.

Did you see what me and Yugi have been working on? ๐
has he even started it with that hmmmm
For me, real life has taken over. I'm working my ass off for school + I am in the process of getting a full time internship for the summer.
Nope, feel free to share, Matt.
Will it support relocation? ๐
I'm working on the plugin part, working on the relocations right now ๐
Plugin being gradle plugin?
Yeah
Nice!
I'm still trying to understand how the jar building works so I can do the relocations on the imports, then hopefully make it so the same relocator can be used to do the relocatiosn at runtime
I'm not entirely sure how Luck does it but you might be able to see what he does in the backend for that stuff.
God bless, this looks like it will handle transitive too.
Yeah i am also checking what he does
anyone knows?
Didn't mean to commit that, then Yugi made the PR without me knowing xD
Ahh
How can I compile a project from Github
that has a Makefile ;C
@prisma wave
welp
is it in C?
yea
No idea how to compile it in combination with gcc ;C
and without ?
Geany IDE ๐ฅฒ
do you not have CLion?>
nu ;c
are you a student?
cuz I just wanna compile a project.
:what:
No instructions on the github page?
yeah you probably just need to run make lol
I take it you're running windows
yeah
And you want a windows executable
Are you running the mingw shell?
no
well that'd do it
open the minGW shell
You run mingw in your terminal of choice
Dont have an shell
What
what
probably not in the path
make ๐ฅฒ
Dont have it
install it then
senpaiiiii
just install linux and use LLVM like a normal boi
its a piece of bloatware
it is made by oracle
sadly
but it is very solid for what it does
and you have quite the opinions for someone using Windows lol
Kali is recommendable as distro?
don't use Kali for anything other than security stuff lol
it's not very good for much else
you plan on reverse engineering?
yes
it's just ubuntu but it comes with cybersecurity stuff lol
wtf you know what kali is and you can't figure out how to use a makefile?
what skillset do you have lol
meh
I tried C a bit ago and that was ok but C++ was honestly just too much of a pain to learn at all... I got passed pointers and some memory stuff and then trying to figure out the best way to structure a project killed it for me
I mean pointers and "memory stuff" is also crucial to C
it's not a C++ realm specific topic
it's crucial to every language, most just hide them from you
but it isn't something you have to know in every other language to work with it
it's good to understand how they work though
gives you a better understanding of programming
not denying that, but it isn't necessary to know for you to work with the language
yeah knowing how the CPU operates at the micro instructions level will help you better understand how you can help it with performance by optimizing your code... but is it really necessary for you to know that other than when working with assembly?
well a lot of stuff you do in other languages works like you're using pointers, you just can't directly access them
you ain't thinking that with python
it's much more directly relevant than CPU microinstructions lol
Oh ya, sorry i was just meant i learned that in C and then was trying to do all of that with OO in C++ and just quit
It was really interesting to try out and i defintely wanna get back into it but not for a bit probably
alright Fefo you're right, understanding anything isn't necessary for programming
all you need to know is how to type eh?
Especially since ive never used OpenGL in C and only with LWJGL in java
you can't tell me you deem it necessary to know how pointers work when you're working with SQL
oooh I'd try SFML in C++ if you're interested
or hell, kotlin even
SQL is not the language we're talking about Fefo
I mean ive never used them in SQL
we are talking about languages in general
In Kotlin or Java you are literally working with pointers in like linked lists and stuff
You just can't edit them
in java or kt you don't need to know about them
alright Fefo whatever
you put something in a list and it's there
yeah no
knowledge is imaginary
not at all
I'd rather be on the streets ig
All I'm saying is that it isn't something you have to know to work with the language
it's not that you straight up can't program if you don't know them
does it help? yes absolutely
but it's not a must
yes and I agree with that
Knowing C-like pointers doesn't give you any benefit in Java, you only need to understand how reference types work
They're the same thing
is it bad that I made 4 years of C++ and I barely remember anything?
Just you can't modify java pointers
No, they are not the exact same thing
Things that work different and need to be understood differently are precisely not the same
Well pointers are just memory locations
and so are named variables for objects
any reference type is
I feel like you're making the mistake of confusing language and JVM, as many people seem to do here
I mean in the language, when you're making a linked list and you do this.node = this.node.next, you are directly modifying pointers

