#[IN DEV] CVN (Cross-Version-NMS)

1 messages ยท Page 5 of 1

fallow sky
#

Rewrite your os

woven arrow
#

17s is fine

#

just get the plugin working now

spiral onyx
#

yall should i switch from win11 to fedora on my laptop

#

yes or no

fallow sky
fallow sky
spiral onyx
#

bitch this is a boolean

woven arrow
#

yes

spiral onyx
#

there's no 0.5

spiral onyx
fallow sky
spiral onyx
fallow sky
#

So, I would say 2

woven arrow
#

bro is quanternium

fallow sky
#

Even

#

0 and 1

rigid saffron
#

I'll parallelize everything

#

my laptop is already lagging to death btw

fallow sky
# woven arrow bro is quanternium

QUATERNION F MENTIONED ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ”ฅ WHAT THE HELL IS PAIN ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ”ฅ

woven arrow
rigid saffron
fallow sky
fallow sky
rigid saffron
#

well, I guess I did the best thing I could

#

I do have optimal performance now

woven arrow
#

15-20s is good

fallow sky
#

Destroy your pc

rigid saffron
fallow sky
#

Wait

#

Maybe your pc IS the problem

#

Switch to a gaming laptop

woven arrow
#

juts Bukkit.getAsyncScheduler().runTask() smh

fallow sky
#

I'll test on mine, maybe I'll get 2s lol

rigid saffron
fallow sky
#

PUSH ON GITHUB ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ”ฅ

fallow sky
#

But only when talking fast

fallow sky
#

Maybe the problem is your COUNTRY

woven arrow
#

fr

fallow sky
#

Switch to France

woven arrow
#

move to france smh

#

install france

#

uninstall germany

fallow sky
#

do

#
sudo apt-get install france 
sudo apt-get remove ww1 ww2```
#

Should work perfectly

woven arrow
fallow sky
#

RAD MENTIONED

#

๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ”ฅ

woven arrow
#

omg

#

is that that rad guy

#

isn't he like super cool and stuff

fallow sky
woven arrow
#

omg

fallow sky
#

But

#

You are PINK

woven arrow
#

YAY

fallow sky
#

So you're not the same

spiral onyx
#

some rando probably

woven arrow
#

i love pink ๐Ÿ—ฃ๏ธ ๐Ÿ—ฃ๏ธ ๐Ÿ—ฃ๏ธ ๐Ÿ”ฅ

woven arrow
spiral onyx
#

what the fuck

rigid saffron
#

Now I can peacefully relax

fallow sky
#

EIN SWEIN POLIZEI ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ”ฅ

fallow sky
rigid saffron
#

I'll continue tomorrow

fallow sky
fallow sky
rigid saffron
#

It doesn't merge yet

fallow sky
rigid saffron
#

It only loads and saves very great

spiral onyx
# rigid saffron I'll continue tomorrow

no how dare you pause working without stressing about not achieving what you wanted to achieve and losing all motivation i thought that was illegal/not possible

fallow sky
fallow sky
#

I can't sleep if I don't have my work done

rigid saffron
spiral onyx
fallow sky
#

If it still doesn't work after 4 hours, I delete my code

#

Simple

rigid saffron
spiral onyx
rigid saffron
rigid saffron
spiral onyx
fallow sky
spiral onyx
#

ne podelischa?

rigid saffron
#

Nu ladno

#

Sek

fallow sky
rigid saffron
#

Lmao

spiral onyx
#

make this a gif yall

rigid saffron
fallow sky
#

I don't even know what this mean

spiral onyx
spiral onyx
fallow sky
fallow sky
woven arrow
rigid saffron
#

Lmao

#

Ya guys are making up too many projects for my ass to build

woven arrow
#

wut

fallow sky
#

So

#

We come from CVN to Gyat

rigid saffron
fallow sky
#

Everything is good

spiral onyx
spiral onyx
fallow sky
spiral onyx
woven arrow
fallow sky
fallow sky
rigid saffron
woven arrow
#

tf

rigid saffron
#

My little collection

#

Spigot members when they realize I have recorded even their worst thoughts:

spiral onyx
#

YOU TOOK A SCREENIE OF THE 9TH ONE

#

thank god

#

i thought you'd missed it

rigid saffron
#

Lol

#

How could I not take a screenshot of something as cute as that

spiral onyx
#

you?

spiral onyx
#

i know there's more

#

and host them somewhere

#

make a half assed website

rigid saffron
woven arrow
spiral onyx
#

no

#

like an archive

#

not just a file storage

rigid saffron
spiral onyx
#

but an art gallery

spiral onyx
rigid saffron
spiral onyx
#

idk if that counts

#

i can host a webpage i have a vps

rigid saffron
#

I have a laptop

spiral onyx
woven arrow
#

i have a server too

rigid saffron
spiral onyx
# rigid saffron

or at least send an invite or something we need this to be public

woven arrow
#

yup!!

spiral onyx
#

you have a proper domain too you should do it

#

mine is a free subdomain lol

rigid saffron
spiral onyx
#

make me stuff then? don't see what the big deal is

rigid saffron
#

bro wants to be stuffed

spiral onyx
#

did i just say stuff

#

oh for fucks sake

#

screenshot that

rigid saffron
#

lol

spiral onyx
#

im not even gonna editthat

#

i give up ill go code something or smthidk

rigid saffron
#

Lol

woven arrow
#

add me to that servre

rigid saffron
#

Find my mods modrinth or cf page and find the discord server there

woven arrow
#

no

#

send me inv

fallow sky
rigid saffron
woven arrow
#

bet

spiral onyx
fallow sky
#

Ratio

fallow sky
#

@woven arrow when building for 1.20.5 ERROR: Method a (Lcom/mojang/datafixers/Dynamic;)V couldn't be written.

woven arrow
#

idk it just runs buildtools

fallow sky
#

too many spigot ๐Ÿ’€

#

.m2 is getting fat

fallow sky
#

I think you should fix that

rigid saffron
#

Do we even need 1.20.5

spiral onyx
#

i haven't used js but i've heard some stuff

fallow sky
#

If I remember correctly, 1.20.5 is broken

rigid saffron
#

Yeah there is a critical bug

spiral onyx
#

i finally coded something today

#

ggggggggggggggggggggggggggggg

fallow sky
#

perfect

spiral onyx
#

well i gotta remove all usages of gridfs and substitute them for regular mongodb documents tomorrow because apparently now that i'm like 80% done with this thing it turns out that gridfs is not a good fit for replacing the contents of entire files and furthermore my files are under 1mb so gridfs is simply overkill

#

shit

rigid saffron
#

And I gotta write the merger

woven arrow
#

can you run buildtools jar

fallow sky
#

it's fetching files for 1.20.6

#

well, api isn't in good terms with 1.20.5

#

but that's not a problem

rigid saffron
#

Buildtools does that for some versions

fallow sky
rigid saffron
#

Somewhat

fallow sky
#

somewhat ?

rigid saffron
#

Depends on what code tho

#

I have twenty million of remapping codes

fallow sky
#

bruh

fallow sky
#

and I don't remember what we should do for classes

rigid saffron
#

the what

fallow sky
#

x)

rigid saffron
#

Everything will work dw

fallow sky
#

okok

spiral onyx
bold trout
#

it got replaced by 1.20.6

#

also you need java 21 for it

rigid saffron
bold trout
#

it should

#

sometimes it doesnt

#

that has java 17 being used

woven arrow
#

for any version >=1.20.5 it uses jdk21

rigid saffron
#

We have a tool running bt

bold trout
#

is it a gradle script

woven arrow
#

oh

#

nvm

#

standalone

bold trout
#

make it a gradle script on ur project

woven arrow
#
    val javaVersion: Int get() {
        if(minor < 17) return 8
        if(minor == 17) return 16
        if(minor < 20 && rev < 5) return 17
        return 21
    }
woven arrow
#

than just bt

bold trout
#

more gradle scripts

woven arrow
#

no

bold trout
#

build src plugin it

woven arrow
#

it's gonna do other shit

#

it's supposed to be standalone

rigid saffron
#

Btw @woven arrow would be nice if you can instead of making it take paths seperately for all plugins it will just have one folder that it copies into all servers

woven arrow
#

hm

#

that could be a thing yeah

#

haven't actually implemented that yet so easier to change

rigid saffron
#

Yeah lol

#

Not like me who had to rewrite a TinyMappingFile class three times

woven arrow
#

i get it

#

you're in pain

rigid saffron
#

yes

#

But

#

It is working mostly

fallow sky
rigid saffron
#

damn bro

#

I need a profiler

#

where was it

#

Remapping...
Took 151907ms
Writing tiny...
Took 47171ms

holy god

#

it didn't even work

#

or it did, Irdk tbh

woven arrow
rigid saffron
#

huh???

#

(original is original mappings list, remapped is spigot mappings list)

#

aaa lag

#

yeah okay my brain is fried

inland spoke
#

whatever is happening there

fallow sky
#

wtf

rigid saffron
#

I have nulls even tho I don't have any nulls

#

Like, I looped through all my Pairs and none of them have or are a null, yet I still get null issues

bold trout
#

sounds like you have a null that you arent finding

rigid saffron
#

And I have no idea where

bold trout
#

add sysouts everywhere

rigid saffron
#

๐ŸŽต A pain in the ass ๐ŸŽต

bold trout
#

use a debugger with breakpoints everywhere then

rigid saffron
#

Ig

#

The interesting thing is that there are no nulls, at the adding part, before the saving part, but when the saving happens it suddenly spawns

fallow sky
#

hmmmm

rigid saffron
#

I even null check code that adds elements so nulls are not possible but they occur

rigid saffron
#

Can't rn

fallow sky
#

okok

rigid saffron
#

And it also only occurs after adding the spigot namespace to it

fallow sky
#

strange

rigid saffron
#

And only if I parallelized the adding of the namespace (if I don't it takes up to 2 minutes)

#

It could be that somewhere in the threads a fuckery happens but why

#

When I parallelized the saving of the mappings I had 0 issues and it even kept its order

fallow sky
#

java is suck ๐Ÿค“

#

but use java

rigid saffron
#

I think I should rewrite this in c++

#

Because 20 seconds to save 3mb of mappings is an absolute ๐Ÿ’€ moment

rigid saffron
rigid saffron
#

Lol

fallow sky
rigid saffron
#

Give me a few mins

#

omg it's not erroring

#

Remapping...
Original size: 74574
Remapped size: 74574
Took 36395ms
Writing tiny...
Took 41756ms

#

takes a while

#

but it worked

#

yay

#

I think the slowness comes from my laptop not having enough cores

#

on real server hardware it would probably run way faster

#

anybody wanna test?

bold trout
#

i have 6 cores want me to test

rigid saffron
#

hmm, I wonder if using a Set would work here, finally, I never query something by the index and duplicate elements would also not make any sense

#

aha, I was running low performance mode

fallow sky
#

well

#

I've got 8 cores, I can test for you x)

#

@rigid saffron can you push on github ?

rigid saffron
#

sec

fallow sky
#

I'm eating but I'll try after

rigid saffron
#

Merging mappings mappings.csrg into mappings.tiny.
The process may take a while, please wait...
Merging mappings took 21698ms.
Saving mappings to mappings-new.tiny.
The process may take a while, please wait...
Saving mappings took 35544ms.
The whole process took 57242ms.

#

my best

bold trout
#

send me the jar

#

and command to run it

rigid saffron
#

source code public

bold trout
#

im not compiling it

#

just send me a jar

rigid saffron
#

okay then wait

fallow sky
rigid saffron
#

Idk if I can send the mapping files here

bold trout
#

โœจ dms โœจ

fallow sky
#

let's try

rigid saffron
#

if I get banned you know why

#

but I doubt I will

bold trout
#

what java version

rigid saffron
fallow sky
#

bro

#

I don't have javafx on my jdk

rigid saffron
#

damn

bold trout
#

yeah java fx doesnt exist on most installations

#

make ur own pair class

rigid saffron
#

yeah

#

understood

#

sec

fallow sky
#

lemme cook

woven arrow
#

why tf does pair require jfx AppleSkull

rigid saffron
rigid saffron
bold trout
#
Merging mappings mappings.csrg into mappings.tiny.
The process may take a while, please wait...
Merging mappings took 9055ms.
Saving mappings to mappings-new.tiny.
The process may take a while, please wait...
Saving mappings took 12268ms.
The whole process took 21323ms.
rigid saffron
#

damn

#

that's more than halved from what it was for me

bold trout
#

i doubt it should take 9 seconds still somehow

rigid saffron
#

I can put parallel streams everywhere but I doubt abusing them is a great idea

woven arrow
#

we love abusing shit

rigid saffron
#

Especially villagers

#

Yk what, I decided to try using parallel streams everywhere and performance became worse

#

Lol

fallow sky
#

BRO

#

๐Ÿ˜Ž

#

@rigid saffron

rigid saffron
#

Damn

#

Very hardware dependant, I see

fallow sky
#

yeah

rigid saffron
#

Well, I guess I'm not running cvn on my laptop lol

#

My current implemention is pretty much the fastest apparently

#

@fallow sky btw you can now continue working on cvn

fallow sky
#

what should I do ?

#

I forgot x)

rigid saffron
#

Download spigot mappings, download intermediary mappings, merge them, then remap the plugin jar to spigot

fallow sky
#

okok

#

so based on your code ?

rigid saffron
#

Yeah, with the tools I wrote

fallow sky
#

okay okay

#

I'll have some car to do later

#

so maybe I'll not finish today

rigid saffron
#

I turned off everything on my laptop and ran it

#

My cpu was at 10-15% and it immidiately peaked to 100% as soon I started

#

But I did get a better result, 47 seconds

#

I even closed sharex, my screenshotting software

#

Should've closed explorer too

fallow sky
#

I'm around 10s personally

#

well

#

I need to publish mappings-merger to maven local @rigid saffron ?

#

let's edit a bit

#

@rigid saffron, what are the possible namespaces ?

#

adapted to spigot, now 43Kb

#

I've learned so much of gradle in a while

#

incredible

fallow sky
rigid saffron
#

Anything, it's just what the spigot namespace will get added as

bold trout
#

it has no manifest

fallow sky
bold trout
#

it has no manifest

fallow sky
#

it'll be a dependency

rigid saffron
#

Did I push the manifest and shadow plugin changes to gh?

fallow sky
rigid saffron
#

It has a somewhat of an api

fallow sky
#

yeah

rigid saffron
#

MappingMerger and Tiny- + CsrgMappingFile

rigid saffron
fallow sky
fallow sky
# rigid saffron What did you edit

removing optionparser and his dependency and instead adding arguments, renaming from Main to MappingsMerger, removing shadowjar, removing jetbrains as implementation...

fallow sky
#

now using getLogger

rigid saffron
#

Main should not be used as api

fallow sky
fallow sky
#

see you later

rigid saffron
#

We have a MappingMerger class for a reason

short folio
#

what is even the purpose of this project

spiral onyx
short folio
#

yes, but it seems useless

#

even given the explanation

rigid saffron
#

it's just to make using nms between versions easier

#

it also changes nms and cb imports to the current version

short folio
#

isn't that just 1 gradle script though

rigid saffron
#

no, it does that on runtime so you don't need to have 20 jars or one jar and twenty implementations

short folio
#

why not just write ASM then

rigid saffron
#

well, if you think it's useless then you can just leave this thread

fallow sky
#

basically a gradle plugin

#

but I'll do that by my side, not really the goal of the project actually

#

x)

#

why publishToMavenLocal... doesn't publish to maven local ?

short folio
#

it does if you setup your publish plugin

short folio
#

you need to configure the published component

short folio
#
    publications {
        create<MavenPublication>("Maven") {
            project.shadow.component(this)
            this.artifact(tasks.aggregateJavadocJar)
        }
    }```

If you're using shadow its this, otherwise you just get the jar components
fallow sky
#

okok thanks

fallow sky
short folio
#

no I only use kotlin

fallow sky
#

okok

short folio
#

its probably some random arbitrary less verbose thing

fallow sky
rigid saffron
#

just add maven local to published repos

fallow sky
#

oh

#

I see

rigid saffron
#

in publish you can add repositories, add maven local there, then just run the publish task

fallow sky
#

forget

#

thanks

fallow sky
# rigid saffron in publish you can add repositories, add maven local there, then just run the pu...

still not working...```groovy
plugins {
id 'java'
id 'maven-publish'
}

group = 'io.github.spigotcvn'
version = '1.0-SNAPSHOT'

repositories {
mavenCentral()
mavenLocal()

maven {
    url = 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/'
    content {
        includeGroup 'org.bukkit'
        includeGroup 'org.spigotmc'
    }
}
maven { url = 'https://oss.sonatype.org/content/repositories/snapshots' }
maven { url = 'https://oss.sonatype.org/content/repositories/central' }

}

java {
withSourcesJar()
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

tasks.withType(JavaCompile).configureEach {
it.options.encoding = "UTF-8"

if (JavaVersion.current().isJava9Compatible()) {
    it.options.release = 8
}

}

dependencies {
compileOnly 'org.jetbrains:annotations:20.1.0'
compileOnly 'org.spigotmc:spigot-api:1.8.8-R0.1-SNAPSHOT'
}

test {
useJUnitPlatform()
}```

#

@rigid saffron do you know why ?

rigid saffron
#

Ah wait no

#

I think you don't need to add maven local

#

You just need this

publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}

#

Iirc

fallow sky
#

ok thanks

#

working !!

#

thanks ๐Ÿ˜„

rigid saffron
#

Also why tf are you adapting all the libs to use spigot api

#

That's very unnecessary

#

They work without it

fallow sky
#

to use getLogger basically

#

and to avoid more weight

rigid saffron
#

It doesn't log anything by itself

fallow sky
#

well

#

just to have one method to call

#

@rigid saffron, I put the mapping-merger instead of what ?

rigid saffron
#

Wdym

fallow sky
#
// Remap from intermediary to server obfuscate and put the file as remappedPlugin
this.remappedPlugin = new File(plugin.getAbsolutePath().replace(".jar", "-remapped.jar"));

File classpathJar = new File(FileUtils.formatToGoodJarFilePath(cvn.getServer().getClass()));

remapper.remapJarFromIntermediary(
        classpathJar.toPath(),
        plugin,
        remappedPlugin
);

FileUtils.jarToCVNJar(cvn, remappedPlugin);

Pair<Map<File, String>, File> mapFilePair = FileUtils.remapCraftBukkitImports(cvn, remappedPlugin);

try {
    JarUtil.repackJar(remappedPlugin, mapFilePair.second());
} catch (IOException e) {
    throw new RuntimeException(e);
}```
#

I put it where ?

rigid saffron
#

Before remapping the jar, you download the intermediary mappings, generate combined spigot mappings and after that you run the merger, save the new mapping file and use it to remap from intermediary to spigot instead of to official

fallow sky
#

oh okay thanks

fallow sky
#

I don't think I have it

rigid saffron
#

What is remapJarFromIntermediary, show it

fallow sky
rigid saffron
#

Create a Namespace.SPIGOT

fallow sky
#

okay

#

like this ? SPIGOT("spigot");

rigid saffron
#

Yes

fallow sky
#

should I use SpigotMappingsDownloader#generateCombinedMappings ?

rigid saffron
#

Yes

fallow sky
#

okay

#

but no need to download mojmaps ?

rigid saffron
#

If it is needed it'll do it automatically

fallow sky
#

okay perfect

rigid saffron
#

Btw, don't forget to implement some checks so it reclones the builddata and regenerates the mappings when the version changes

fallow sky
#

huh

#

I didn't writed that code

#

I think you should do that instead...

rigid saffron
#

It's not something the lib should be doing

fallow sky
#

wait

rigid saffron
#

But if you do need me to contribute in the plugin I can do that

fallow sky
#

yeah please

#

because I need to go

rigid saffron
#

Don't forget to push your changes

fallow sky
#

here they are

#

I started writing a downloadSpigotMappings

#

see you later

rigid saffron
#

Tf is MappingMerger.map();

fallow sky
rigid saffron
#

Bruh

fallow sky
#

By replacing args by File and namespace by String

rigid saffron
#

You are unnecessarly complicating stuff

fallow sky
#

Yeah

rigid saffron
#

I have a class with a static method that specifically takes 3 arguments and describes them as good as possible in the javadoc

#

And you still renamed the Main method

fallow sky
#

I'm in a car right now

#

Just rearrange the code correctly

fallow sky
#

@rigid saffron is it working ?

rigid saffron
fallow sky
#

I should try, a day

rigid saffron
#

what even is the point of the downloadSpigotMappings method

#

it just runs the downloadMappings method and that's it

fallow sky
#

That's why I wanted you to do it x)

rigid saffron
#

and I'm unable to do that because I can't understand anything

fallow sky
#

I'll try by myself then

rigid saffron
#

but first you download spigot mappings to some directory (it will pull the whole builddata repo)

#

then you combine them into one mapping

#

then you download intermediary mappings

#

you merge intermediary and combined spigot mappings together

fallow sky
#

Okay thanks

#

I need to go, and I'll be very busy until Wednesday

#

I've got an exam

rigid saffron
#

๐Ÿ‘

rigid saffron
#

@woven arrow when cvn is done, will you use it

woven arrow
#

for my server?

#

no

rigid saffron
#

No, like, in your plugins

woven arrow
#

i don't do other plugins

rigid saffron
#

Damn

woven arrow
#

we run our servers on 1.20.6 and use viaversion for 1.20.2-1.20.6 compatibility

rigid saffron
#

Understandable

rigid saffron
fallow sky
fallow sky
#

But not with compile at runtime

#

But directly as a plugin

#

I'll do that when everything will be working

#

Or even

#

Like multi module basically

rigid saffron
#

Actually, why am I using a list of pairs in the merger

#

Shouldn't a BiMap work

#

I was concerned about duplicates on either side but that's nonsense

#

One thing can't be remapped to multiple things and multiple things can't remap to the same thing

fallow sky
#

Well

#

my convertor from HDMI to VGA for my secondary screen isn't working anymore

rigid saffron
#

performancizationMerging mappings mappings.csrg into mappings.tiny.
The process may take a while, please wait...
Merging mappings took 133ms.
Saving mappings to mappings-new.tiny.
The process may take a while, please wait...
Saving mappings took 163ms.
The whole process took 296ms.

#

Duplicate mapping: Mapping{type=FIELD, name='baa$e', className='a', descriptor='Ljava/nio/file/Path;'} -> Mapping{type=FIELD, name='comp_1156', className='a', descriptor='Ljava/nio/file/Path;'}
Existing mapping: Mapping{type=FIELD, name='baa$a', className='a', descriptor='Ljava/nio/file/Path;'} -> null

wtf

#
eeu/willTickThisTick: Mapping{type=METHOD, name='eel', className='b', descriptor='(Lgt;Ljava/lang/Object;)Z'} -> Mapping{type=METHOD, name='willTickThisTick', className='b', descriptor='(Lgt;Ljava/lang/Object;)Z'}
eeu/willTickThisTick: Mapping{type=METHOD, name='eeu', className='b', descriptor='(Lgt;Ljava/lang/Object;)Z'} -> null
``` this is nonsense
spiral onyx
#

System.out.println(from.getName() + "/" + to.getName() + ": " + from + " -> " + orig2remap.get(from));
vs
println("${from.name}/${to.name}: $from -> ${orig2remap[from]}")

#

sorry i had to glaze kotlin real quick for my kotlin fix

woven arrow
woven arrow
#

willTickThisTick
mojang moment

rigid saffron
#

might be possible that I'm a dumbass

#

and messed up parameters

#

wtf

#

now it's throwing the exception just for fun

#

it does literally not exist

fallow sky
#

wat ๐Ÿ’€

rigid saffron
#

but the exception that it exists is still thrown

#

IT LITERALLY DOES NOT EXIST

#

WHAT THE FUCK

#

wtf

#

I think it isn't accounting for the class name

#

holy god

#

but why

#

this is nonsense

fallow sky
rigid saffron
#

oh my god

#

why the fuck

#

is the remapped name

#

in the class name

#

instead of the name

#

huh but there is no method name o in the class a

#

wait

#

what if

#

huh

#

that worked

#

apparently I messed up the order a little bit

#

first comes class, then name, then description, then remapped name

#

bruh

fallow sky
#

hmm

rigid saffron
#

wtf

#

in the tiny mappings there are nonexistant duplicates

#

just as I said duplicates wouldn't make sense

#

@fallow sky where did you get these cursed mappings from

#

the exact thing that should not happen

rigid saffron
fallow sky
rigid saffron
#

wait

#

what is with the 1.8 mappings

#

where did you get them from

fallow sky
rigid saffron
#

are you sure they work with each other

fallow sky
#

they should

fallow sky
#

@rigid saffron did you solved your problem ?

#

I'll dev tomorrow

rigid saffron
rigid saffron
#
Merging mappings mappings.csrg into mappings.tiny.
The process may take a while, please wait...
Merging mappings took 167ms.
Saving mappings to mappings-new.tiny.
The process may take a while, please wait...
Saving mappings took 220ms.
The whole process took 387ms.
``` does this count as solved
woven arrow
#

yes

#

it very much does

#

make take a while, please wait
finished in 170ms

rigid saffron
coral gyro
#

"minor"

rigid saffron
#

c'mon man, it's just 100 times faster, not that much lol

fallow sky
#

Lol

rigid saffron
#

Should've called it "micro optimization"

fallow sky
#

nah @rigid saffron that was wild

rigid saffron
#

Lol

#

List of pairs did work pretty well but a LinkedHashMap seems to work better (I always look shit up by the obfuscated name of the element so it does kind of make sense to use specifically a HashMap and to keep order a Linked one)

fallow sky
#

logically, here you can use a Set instead of a List, because duplicated key values are already destroyed, so collect your stream to a Set

rigid saffron
#

I don't think it quite matters

fallow sky
#

well

rigid saffron
#

An array list in some cases will be even more performant than a Set (I have tested switching tbe ArrayList to a HashSet in the orig2remap map)

#

And the list will only be looped through which from what I'm aware of is way less complex than looping through a set

fallow sky
#

well, yeah

#

I didn't read at the other part of the code, only the part shown in the commit report

rigid saffron
#

I could even use a forEach and then add but that is a bit bad when it comes to parallel streams

#

I did test

fallow sky
#

okok

#

you're the master

#

x)

rigid saffron
#

Nah I just wasted a lot of time on pointless stuff

fallow sky
#

x)

fallow sky
#

well

#

I've done my exam very well

woven arrow
#

nice

rigid saffron
#

My friends usually tell me the opposite

fallow sky
#

x)

coral gyro
#

ive done quite the opposite today

fallow sky
coral gyro
#

3/20

#

dude of my team did nothing and now we're both fucked

fallow sky
#

bruh

rigid saffron
#

Always the idiots

fallow sky
coral gyro
#

delivered a halfly working site

rigid saffron
#

Usually I'm the guy who isn't allowed to do anything in the back, but when it comes to presenting the project I'm suddenly the most important person and have to give the most fucking amazing speach ever given

coral gyro
#

i love giving demos

woven arrow
#

i'm the guy who has to do everything lmao

fallow sky
#

x)

#

I don't go to school

rigid saffron
#

I'm better at writing than at speaking, but usually I'm the one speaking, rather than the one writing
That cured my social anxiety btw

fallow sky
#

logical

#

POLISH COW ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ

rigid saffron
#

Polska krowa

fallow sky
#

possibly

#

I don't talk polish

#

1.21 -> CookieStorage ๐Ÿ˜”

#

it was just null

fallow sky
#

RASPUTIN ๐Ÿ—ฃ๏ธ

rigid saffron
#

Tf

fallow sky
# rigid saffron Tf

RA-RA RASPUTIN ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ๐Ÿ—ฃ๏ธ

fallow sky
fallow sky
coral gyro
rigid saffron
#

@fallow sky is there anything I have to work on or is everything left to do yours?

rigid saffron
#

well, I did make it speedy and work correctly

fallow sky
#

okay

#

so

rigid saffron
#

but it's now your turn to use it all in the plugin

#

which I hope you will do correctly

fallow sky
#

x)

#

so

#

I need to download spigot mappings, and then remap using spigot mappings and tiny mappings ?

rigid saffron
#

basically, in your plugins data folder you will have two folders, one for remapped jars (rjf for short) and one for the builddata repo (bdrf for short)
Basically, you download spigot mappings, download mojmaps, then combine them and then you use the combined mapping for everything else (iirc the combined mapping generate method should take care of all of everything that hasn't been done before)
If the version changed, run the generate mappings method with argument true, that will ensure the mappings are redownloaded and regenerated
The method will give you a MappingFile, hold onto it until you have downloaded intermediary mappings. Then use the mappings merger (please without renaming the main class and just use the provided api) and combine the tiny and spigot mappings, as the namespace set the spigot
Now you have the tiny mappings, remap the jars using that from intermediary to spigot and store the remapped jars in the rjf. With them also store one text file that has an identical name, just with .txt added to the back (don't even need to remove .jar) which will simply hold the hash of the original (unremapped) file. Every reboot it will go through all jars and if it's a cvn plugin, it should check whether its hash exists and whether it has changed, if any of the conditions don't meet it will remap the jar and regenerate the hash.
Then you just call load on the remapped jars and that's it

woven arrow
#

i ain't reading allat

rigid saffron
#

well, you don't have to

#

paulem has

woven arrow
#

if i try to understand that i will have a breakdown

rigid saffron
#

(c) 2020 Microsoft Corporation. These mappings are provided "as-is" and you bear the risk of using them. You may copy and use the mappings for development purposes, but you may not redistribute the mappings complete and unmodified. Microsoft makes no warranties, express or implied, with respect to the mappings provided here. Use and modification of this document or the source code (in any form) of Minecraft: Java Edition is governed by the Minecraft End User License Agreement available at https://account.mojang.com/documents/minecraft_eula.

#

(btw this means you can freely redistribute code mojampped if you don't bundle mojmaps with it lol)

fallow sky
#

but later, I'm busy now

rigid saffron
#

no problem, do it when you have the time

fallow sky
fallow sky
#

so

#

let's dev a bit, and go sleep after

#

in less than 30 minutes basically x)

fallow sky
#

I think I'm almost done

#

just have to implement the check with hash

#

but not today

#

more likely tomorrow

#

@rigid saffron I passed the combined csrg file to remapJarFromIntermediary and got thatjava java.lang.RuntimeException: java.io.IOException: invalid/unsupported mapping format

#

with java mappings.remapJarFromIntermediary( classpathJar.toPath(), plugin, remappedPlugin, Mappings.Namespace.INTERMEDIARY, Mappings.Namespace.SPIGOT );

#

let's go to sleep, I'll see that tomorrow

#

see ya

rigid saffron
fallow sky
#

@rigid saffron did you make it works ? :3

fallow sky
#

RAYDAN ๐Ÿ—ฃ๏ธ

#

x)

#

GALVANIZED SQUARE STEEL ๐Ÿ—ฃ๏ธ

rigid saffron
#

what

fallow sky
rigid saffron
#

Nah, haven't looked into it yet

fallow sky
#

okok

#

I'm doing a modrinth api system (wrapper ? idk if we say like that) to fetch projects, etc.

#

nothing to do with CVN

rigid saffron
#

k

fallow sky
rigid saffron
#

Like, one that writes multi-module nms for you?

fallow sky
rigid saffron
#

Wdym then

fallow sky
rigid saffron
#

Isn't that kinda eh

fallow sky
#

Or much better, combining all jars into one

#

Like multi module project when they are compiled

rigid saffron
#

So, just making it write the multi module nms for you

fallow sky
#

But directly by manipulating the jar

rigid saffron
#

Ye I understood

#

Sounds fairly simple

#

And fairly complicated because fuck the gradle plugin api

fallow sky
fallow sky
rigid saffron
#

Yk what you could do for that plugin? Something where you can provide seperate modules for versions where nms did change and then it will just generate the ones in-between by itself

rigid saffron
#

So you can for example provide 1.8, 1.13 and 1.20.6 because these are the only versions in which something you do changed and just generate everything in between yourself

#

might run the mass-tester to just run buildtools and generate all the mapping files and shit yk

#

Hmm, I'll have to tweak the cvn gradle plugin to ensure it works correctly with versions that do not have mojmaps

fallow sky
rigid saffron
fallow sky
#

X)

rigid saffron
#

I think to make gradle plugins configurable you use extensions

fallow sky
#

Hum

#

Maybe

fallow sky
#

Guys can you help me translate this ?

rigid saffron
#

Ukrainian?

#

What is that book

coral gyro
fallow sky
#

Ukrainian, interesting

rigid saffron
#

Ye

#

I can see ukrainian from far away

#

Doesn't mean I can easily comprehend it tho

fallow sky
#

I can see that it's not readable from far away personally

rigid saffron
#

Lol

#

I can recognize what language it is when I see cyrillic

#

Send me russian, ukrainian, belarussian, bulgarian and serbian texts and I will be able to tell you what is what

fallow sky
#

Interesting

#

Can be useful x)

rigid saffron
fallow sky
rigid saffron
#

yet you did not push the new code yet

#

hmm, tiny v1 don't got comments lmao

#

pushed update, it should work ig

fallow sky
#

okay thanks

#

I'm pushing for you

rigid saffron
#

try updating the dependency and running cvn again

fallow sky
#

it's pushed

fallow sky
#

Downloading spigot mappings...

#

@rigid saffron

#
java.lang.RuntimeException: java.io.IOException: invalid/unsupported mapping format```
#

โœจ

rigid saffron
#

any extra details?

#

can you show the whole stacktrace

fallow sky
#

here it is

rigid saffron
#

you are never merging the mappings

#

instead you are just passing the spigot mappings which are csrg and not tiny

#

combined spigot mappings != merged mappings

#

combined spigot mappings are just normal spigot mappings but in one file

#

merged mappings include obfuscated, intermediary and spigot

fallow sky
#

how can I fix that ?

rigid saffron
#

by merging the fricking mappigns?

#

there is literally a mapping merger

fallow sky
#

okay okay okay

coral gyro
#

no UncheckedIOException ๐Ÿ‘‰๐Ÿ‘ˆ

fallow sky
#

@rigid saffron like this?java public void mergeMappings() throws InvalidMappingFormatException { File from = plugin.getCombinedMappingFile(); File to = plugin.getTinyMappingFile(); File out = plugin.getMergedMappingFile(); String namespace = Namespace.SPIGOT.getNamespaceName(); CSRGMappingFile fromFile = new CSRGMappingFile(); fromFile.loadFromFile(from); TinyMappingFile toFile = new TinyMappingFile(); toFile.loadFromFile(to); System.out.println("Merging mappings " + from.getName() + " into " + to.getName() + "."); System.out.println("The process may take a while, please wait..."); long start = System.currentTimeMillis(); long startMerge = System.currentTimeMillis(); MappingMerger.mergeTinyWithCSRG(toFile, fromFile, namespace); long endMerge = System.currentTimeMillis(); System.out.println("Merging mappings took " + (endMerge - startMerge) + "ms."); System.out.println("Saving mappings to " + out.getName() + "."); System.out.println("The process may take a while, please wait..."); long startSave = System.currentTimeMillis(); toFile.saveToFile(out); long endSave = System.currentTimeMillis(); System.out.println("Saving mappings took " + (endSave - startSave) + "ms."); long end = System.currentTimeMillis(); System.out.println("The whole process took " + (end - start) + "ms."); }

#

HEY

rigid saffron
#

yes, but without all of the print statements and longs

fallow sky
#

WERE ALMOST THERE

fallow sky
#
[15:53:06 ERROR]: Error occurred while enabling CVN v1.0 (Is it up to date?)
java.lang.RuntimeException: org.bukkit.plugin.InvalidPluginException: Unsupported API version 1.20```
Lol
rigid saffron
#

paper moment

fallow sky
#

x)

#

okay

#

let's retry

#

I've done a lot of pushes

#
[15:56:58 ERROR]: Error occurred while enabling Test-CVN v1.0 (Is it up to date?)
java.lang.NoSuchMethodError: 'void net.minecraft.server.MinecraftServer.method_3779(int)'
        at io.github.spigotcvn.test.Test.onEnable(Test.java:17) ~[NMSTestProject-1.0-remapped.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:541) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugin(CraftServer.java:560) ~[paper-1.18.2.jar:git-Paper-388]
        at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugins(CraftServer.java:474) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:665) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:432) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1164) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
[15:56:58 INFO]: [Test-CVN] Disabling Test-CVN v1.0```
rigid saffron
#

how remapped is the jar

fallow sky
#

wait

#

I pushed on github

rigid saffron
#

tbh no idea

fallow sky
#

๐Ÿ’€

rigid saffron
#

uh in the merged mappings file

#

it doesn't have the right mapping for the method_3779

fallow sky
#

BRUH

rigid saffron
#

lemme see

#

gimme a second

fallow sky
#

the remapped jar

#

only classes are remapped

#

not methods

rigid saffron
#

that's because those two methods are missing a spigot remapping in the merged mappings it seems

#

and I have no idea why

fallow sky
#

huh

rigid saffron
#

I think I fucked up the mapping format again

fallow sky
#

bruh

rigid saffron
#

gimme a minute

fallow sky
#

okay ๐Ÿ‘

rigid saffron
#

why is everybody communist suddenly

fallow sky
#

x)

#

because mappings are communist

#

open source is communism

#

everyone help and contribute with comrades

rigid saffron
#

lol

#

CMarco used to say the same

fallow sky
#

x)

rigid saffron
#

'FIELD' <tab> <parent-class-name-a> <tab> <field-desc-a> <tab> <field-name-a> <tab> <field-name-b> <extra-ns-field-names>

#

hmm

#

but I doubt this is how it has to look like

METHOD    a    (I)V    net/minecraft/server/MinecraftServer    method_3779    setPort
fallow sky
#

maybe... ?

rigid saffron
#
METHOD        net/minecraft/server/MinecraftServer    (I)V    a    method_3779    setPort
``` looks better
fallow sky
#

you know how to fix that ?

rigid saffron
#

changes pushed

fallow sky
#

okay I'll try

#

here we are ๐Ÿ’€

rigid saffron
#

send mapping file

fallow sky
rigid saffron
#

fuck

#

it's making double tabs agin

#

pushing chagnes

fallow sky
#

oka

spiral onyx
fallow sky
#

aaaah

#

an error

fallow sky
#
[16:20:49 WARN]: Enabled plugin with unregistered PluginClassLoader Test-CVN v1.0
[16:20:49 ERROR]: Error occurred while enabling Test-CVN v1.0 (Is it up to date?)
java.lang.NoSuchMethodError: 'void net.minecraft.server.MinecraftServer.method_3779(int)'
        at io.github.spigotcvn.test.Test.onEnable(Test.java:17) ~[NMSTestProject-1.0-remapped.jar:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:370) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:541) ~[paper-api-1.18.2-R0.1-SNAPSHOT.jar:?]
        at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugin(CraftServer.java:560) ~[paper-1.18.2.jar:git-Paper-388]
        at org.bukkit.craftbukkit.v1_18_R2.CraftServer.enablePlugins(CraftServer.java:474) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.loadWorld0(MinecraftServer.java:665) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.loadLevel(MinecraftServer.java:432) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.dedicated.DedicatedServer.initServer(DedicatedServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1164) ~[paper-1.18.2.jar:git-Paper-388]
        at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:316) ~[paper-1.18.2.jar:git-Paper-388]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]```
โœจ
rigid saffron
#

oh holy shit

#

why is that happening now

rigid saffron
#

gimme a second

fallow sky
#

It's for testing purposes ๐Ÿค“โ˜๏ธ

rigid saffron
#

I'm working on something

fallow sky
#

okok

rigid saffron
#

hmmm

#

this is getting complicated

#

I think the issue is that the classpath is in spigot mappings, but the intermediary mappings are in obfuscated

fallow sky
#

huh

rigid saffron
#

it now generates spigot to intermediary mappings!

#

create a tiny mappings file, save it in original form, then call replaceOriginalNamespace(TinyMappingFile tiny, String namespaceReplacedBy) on it with arguments (tinyMappingFile, "spigot"), this will make the main/original namespace spigot and see if that helps at all

#

@fallow sky pls see

fallow sky
fallow sky
rigid saffron
#

hmm I just tried it and it did not seem to work :/

fallow sky
#

:/

#

So I try or no ?

rigid saffron
#

nah

#

it does not work

#

for whatever reason

fallow sky
#

humm

#

strange

rigid saffron
#

Basically, the initial idea of just merging the mappings should work just fine, no idea why it's doing this weird thing

fallow sky
#

hum

rigid saffron
#

I asked in fabric discord, lets wait now

fallow sky
#

okay

fallow sky
#

I can confirm that gradle > maven

rigid saffron
#

lol

rigid saffron
#

I swear if we will end up rewriting the tiny remapper

fallow sky
rigid saffron
#

I HAVE REALIZED

#

Come to a realization

#

The classpath in mapped in spigot, but the from mapping is intermediary

rigid saffron
#

oh shit

#

I think that might require us to change a fuckton of code

#

We can either

  • Remap the server jar and use that as classpath
    or
  • Rewrite some of the tiny remapper in order to make it accept differently mapped input which it can remap on the go so we can get an intermediary mapped class from a jar
    The second will be slightly more efficient simply because we don't need a second jar and we aren't gonna write anything
#

Or we can externally try to add our intermediary classpath which sounds fun and at the same time does not

#

The first one still sounds like the best

rigid saffron
#

well, who could've guessed, it decided to not remap methods

#

even when remapping the spigot server jar

#

fields and methods stay untouched

rigid saffron
#

I wonder if we can remap stuff using specialsource

inland spoke
#

If you can remap stuff by ignoring the mapping hierarchy you could use stianloader-remapper I guess

#

The main "problem" (actually completely intended) is that stianloader-remapper will for example treat java.lang.Object's toString method differently to the toString method of java.lang.Integer - easily causing mapping tears if you are not careful with subclassing

#

This is the reason why TR needs the classpath in the first place as it did not choose the path of trusting the API consumer with that knowledge and will instead try to apply the mappings in a way where mapping tears are not possible

rigid saffron
#

I can remap from obfuscated to intermediary, I wonder if I can revert

#

But on plugin build time I usually have an obfuscated mc server jar, on runtime I do not

#

Tr is good, our situation isn't

fallow sky
#

So, you think you can fix that ?

rigid saffron
#

ยฏ_(ใƒ„)_/ยฏ

spiral onyx
#

reminder that yall should work on cvn

fallow sky
#

Yeah

#

But well, I'm waiting for Raydan

rigid saffron
#

Could've tried coming up with a solution yourself too

fallow sky
rigid saffron
#

The efficiency of working grows logistically depending on the amount of workers

fallow sky
#

But I think you should send me the resources you base on to do everything you have done

#

I need to learn first

rigid saffron
#

well

#

I think I know the issue but I also do not know how to fix it

fallow sky
rigid saffron
#

classpath

#

it needs a spigot jar remapped in intermediary to check hierarchy but Idk how to remap spigot to intermediary

fallow sky
#

huh

rigid saffron
#

well, I guess it's time to write another email to md_5

#

last time he responded pretty quickly (a bit less than a day of wait)

rigid saffron
# woven arrow what'd he reply with

I wrote him the most formal email ever and he responded like I'm his bro with "
Hi
Those field mappings are a combination of Spigot class names and Mojang field names.
On earlier versions, Spigot had its own field mappings."

#

ngl respectable man

woven arrow
#

based

rigid saffron
#

big W I'd say

fallow sky
#

I didn't have time to work on CVN today

#

And it's not even just working, but also learning, I'm very busy this time because I was a sick for a week, I missed a lot of school...

#

And well, my relations are a bit difficult those times...

#

So sorry ๐Ÿ˜” I'll try my best

rigid saffron
woven arrow
#

lmaoo

rigid saffron
#

Ig I'll fork buildtools today, check how it works

woven arrow
#

based md moment

rigid saffron
rigid saffron
#

Well I have a few ideas

fallow sky
#

I find nothing on google to help me :/

rigid saffron
#

why the fuck does tr leave unmapped classes in the jar after remapping wtf

#

would look right to me if not the method name

#

METHOD l (Lclo;Lgt;Lcpi;Lgz;Lcpi;)Ljava/util/Optional; a method_34851 getTopConnectedBlock
METHOD l (Lgt;Lgz$a;ILgz$a;ILjava/util/function/Predicate;)Ll$a; a method_30574 getLargestRectangleAround
METHOD l (Ljava/util/function/Predicate;Lgt$a;Lgz;I)I a method_30575 getLimit
METHOD l ([I)Lcom/mojang/datafixers/util/Pair; a method_30576 getMaxRectangleLocation

for whatever reason they are unmapped in the actual spigot jar

#

the more I look into this the more fucked it is

#

WHY IS THE FIRST EXISTANT AND THE SECOND NOT WHEN BOTH SHOULD EXIST

#

I have specifically implemented equals and hashCode to make sure they work for comparisons and hashmaps but now everythings fucked???

fervent swan
#

Is this what I think it is?

rigid saffron
#

oh I'm an idiot

#

oops

#

wrong method lmao

rigid saffron
#

just a few guys doing a lil project for fun

fervent swan
#

NMS on any version?

rigid saffron
#

yeah but like not really

fervent swan
#

That's not lil project ๐Ÿ’€

rigid saffron
#

you do know nms changes

rigid saffron
fervent swan
#

Yes

rigid saffron
#

true

#

it's just to allow for writing less nms impls when working with nms for example

#

because not all nms versions change stuff yk

fervent swan
#

So it's like a set of wrappers to make working with NMS easier

rigid saffron
#

well, it's a bit complicated what cvn is

coral gyro
#

what are you guys doing?

fervent swan
#

๐Ÿ’€

rigid saffron
#

well, no

coral gyro
#

ยฏ_(ใƒ„)_/ยฏ

rigid saffron
#

yk how fabric works with intermediary mapping mods and stuff?

fervent swan
#

I didn't touch much fabric, but yes, I listend something abt that

fervent swan
#

let him explain

#

This seems interesting

rigid saffron
#

basically, mappings change between versions, but some are made specifically to stay the exact same between versions, called intermediary. CVN has a gradle plugin and a spigot plugin, the gradle plugin remaps spigot plugins to indermediary (currently only mojmap -> intermediary, planning to add support for other stuff and older versions later)
Then we have the spigot plugin, it detects cvn plugins, remaps them (and saves them to some cache directory) to the current mappings and then loads them like usual. It should also store a hash of the original file so whenever the file changes (plugin update or something) it will be re-remapped

fervent swan
#

Oh, that's similar to what paper does?

rigid saffron
#

Yeah, kind of

#

But Idk if paper supports from 1.8 up to latest

fervent swan
#

Probably not

rigid saffron