Jump to content

Alternative to saving data other than Capabilities (Server Side)


Burchard36

Recommended Posts

So I have known java for a few years and have even made many MC plugins in the past and decided ill try my hand at modding (1.13.2).
Everything was going good until I wanted to store data more permanently (as of now I was just using EntityPlayerMP#getEntityData and storing data there just to test some features of my mod).

I looked for many hours through the internet and discovered there's Capabilities, but the documentation is very bad for the forge site overall (And most tutorials on youtube for it are outdated and the syntax's have changed) for people trying to learn how to mod. So I was wondering: Would it be considered "bad modding practice" to create my own DataStorage system? I've done this in the past before with my plugins where I did these steps:

1) When the player first joins the server, a data file with default value(s) is written in a file (data/players/<UUID>.json) if it doesn't exist, if it does goto step #2
2) The default data (or grabbed data from #1) is transformed against a PlayerData class (Using google GSON there's a method that allows converting JSON to a class if fields are correctly named, I cant remember the method name off the top of my head but I used it before)
3) The PlayerData instance is then loaded into a HashMap to be accessed again later without needing to read a file (aka cache)
4) Of course there is a Runnable running every 5 minutes or so that saves the PlayerData objects back to they're respective file (in spigot I did this Asynchronously), as well as server stop event the save method is called as well

This worked extremely well for me when using SpigotAPI, so would this type of system be performance demanding on a Forge Server or this considered "bad practice" because I don't want to learn Capabilities? I would assume not since the JSON files are being cached and only ever read from when a player joins the server (this could have issues if a lot (50-100+) of player joins a server at one time, but a queue system can be added if it becomes an issue later down the road, doubt this will ever occur though), not to mention if I use this system it would be far faster for me to setup rather than scouring the internet to try and figure out how capabilities work (not to mention I do want to update the mod to a later version later on, but I found the 1.13 API more resourceful in terms of tutorials on the internet, so I figured I would call it my "learning mod",)

And if anyone asks: The data I'm storing is just a collection of long's, int's, strings, and enums (that can be parsed back to a Enum class during Runtime), I don't have any need to store items for this mod, just raw data (Its for health, level, skill points, energy, money etc etc)

Edit: Please reply "Capabilities are easy" I have already explained above that the documentation was not helpful and that most tutorials are way outdated for what I'm doing. I'm simply asking if what I want to do now will have a major performance impact on the server side aspect

Edited by Burchard36
Added line
Link to comment
Share on other sites

  

5 minutes ago, DietmarKracht said:

Capabilities are not that hard to understand....

I don't want someone to come on this thread saying "they aren't hard to understand", the documentation is not great for them, it throws too much information at you at once, not to mention it doesn't fully explain everything you need to know to properly use them nor completely how you need to set everything up (There is a 1.10 video that perfectly explains everything but when I had tried the video there was multiple things changed between versions and I couldn't even get it to run/figure out how some of the things worked that got added)

I'm not the type to learn through just rushing through 20 paragraphs with out of context code that doesn't fully explain everything, I have my own learning pace and so does everyone else, and those docs are relatively useless to my learning curve

 

Link to comment
Share on other sites

So you are more the type of "give me some code i can copy and paste cuz i don't want to understand the concept thats going on here"?

 

The documentation on capabilities is perfectly fine. They function as the exact purpose you just described in your first post. So give it a try at least. I doubt you are under strict time constraints and need to finish porting your mod within the next week....

Link to comment
Share on other sites

29 minutes ago, Burchard36 said:

Would it be considered "bad modding practice" to create my own DataStorage system?

Yes, because you will most likely get it wrong.

What exactly are you missing from the capability documentation? Note that there is also an article about them on the community wiki, which goes into a bit more detail: https://forge.gemwire.uk/wiki/Capabilities and https://forge.gemwire.uk/wiki/Capabilities/Attaching.

  • Thanks 1
Link to comment
Share on other sites

1 hour ago, DietmarKracht said:

So you are more the type of "give me some code i can copy and paste cuz i don't want to understand the concept thats going on here"?

 

The documentation on capabilities is perfectly fine. They function as the exact purpose you just described in your first post. So give it a try at least. I doubt you are under strict time constraints and need to finish porting your mod within the next week....

No, I never asked for anyone to spoon-feed me, I am actually interested in learning things and being able to write them on my own hence why I was saying that the docs were confusing because they didn't actually teach anything, and inquired about classes they already had assumed you made without know what to extend and how to Override the methods and return correct values, and how to link everything together as one system, it just seemed really confusing to me and I couldn't learn anything from it

However the guides provided by @diesieben07 were absolutely perfectly explained step by step (Which is how I prefer to learn things, I like wikis and tutorials to go down to the very nitty gritty and explain what every single thing does and make things very clear to the end user/developer)

 

1 hour ago, diesieben07 said:

Yes, because you will most likely get it wrong.

What exactly are you missing from the capability documentation? Note that there is also an article about them on the community wiki, which goes into a bit more detail: https://forge.gemwire.uk/wiki/Capabilities and https://forge.gemwire.uk/wiki/Capabilities/Attaching.

You are a LIFESAVER, I'm surprised this wasn't anywhere when I googled for it for hours. Finally managed to get my entire CapabilityManager using that guide it really explained loads more than the docs!

Here what I manager to put together with those guides:

ModCapabilites.java

Spoiler


public class ModCapabilities {

    @CapabilityInject(ICurrentHealth.class)
    public static Capability<ICurrentHealth> CURRENT_HEALTH = null;

    public ModCapabilities() {
        this.registerCapabilities();
    }

    public void registerCapabilities() {
        CapabilityManager.INSTANCE.register(
                ICurrentHealth.class,
                new CapabilityWorker<>(CURRENT_HEALTH),
                CurrentHealth::new
        );
    }

    private static class CapabilityWorker<S extends INBTBase, C extends INBTSerializable<S>> implements Capability.IStorage<C> {

        private final Capability<C> cap;

        public CapabilityWorker(final Capability<C> capability) {
            this.cap = capability;
        }

        @Nullable
        @Override
        public final INBTBase writeNBT(final Capability<C> capability,
                                 final C instance,
                                 final EnumFacing side) {
            if (this.cap != capability) return null; // Make sure were writing to the right Capability
            return instance.serializeNBT();
        }

        @Override
        @SuppressWarnings("unchecked") // No need to check S
        public final void readNBT(final Capability<C> capability,
                            final C instance,
                            final EnumFacing side,
                            final INBTBase nbtBase) {
            if (this.cap != capability) return; // Make sure were writing to the right Capability
            instance.deserializeNBT((S) nbtBase); // No need to check, always using NBT Compounds
        }
    }
}

 


CurrentHealth.java
 

Spoiler


public class CurrentHealth implements ICurrentHealth {

    private long health;

    public CurrentHealth() {
        this.health = 0;
    }

    @Override
    public long getHealth() {
        return this.health;
    }

    @Override
    public final NBTTagCompound serializeNBT() {
        final NBTTagCompound comp = new NBTTagCompound();
        comp.setLong(NBTTags.CURRENT_HEALTH.toString(), this.getHealth());
        return comp;
    }

    @Override
    public final void deserializeNBT(final NBTTagCompound nbt) {
        this.health = nbt.getLong(NBTTags.CURRENT_HEALTH.toString());
    }
}

 


And finally: ICurrentHealth.java
 

Spoiler


public interface ICurrentHealth extends INBTSerializable<NBTTagCompound> {

    long getHealth();
}

 


All that's left is just to attach it to the EntityPlayerMP but that was well explained on the docs at least so that's fairly easy and ill likely change ICurrentHealth and CurrentHealth to hold all stats of a player instead of just the health. (I didn't do type checks because ill be ONLY planning on storing NBT Compounds for data)

I did run into an issue while trying to figure out what the heck CapabilityWorker<S extends INBTBase, C extends INBTSerializable<S>> was, but I thought of it similarly to how I made ClassLoader system for SpigotMC to load external jars, seems just about the same thing (In regards to using ? extends Object)

Was actually really fun learning this, the docs made it seem more complicated than what it really was (It kept referencing psuedo classes I did not have and just had assumed I made those classes before I started making the system, and I had no idea how to create these classes), and again thank you a bunch for providing those guides they explained perfectly what I was missing, haven't tested this yet but I'm sure it will work with a few minor tweaks!

Edited by Burchard36
fixed a word spelling thingy mabob
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Okay, if that's fine then I'll use it. I already sync on block update because I have custom data with the blocks. Should I still add `Level#sendBlockUpdated(BlockPos pos, BlockState oldState, BlockState newState, int flags)` in the `onLoad`?   Also, that whole bug seems weird because it seems to be something that needs to be exclusively coded. I'm very confused about how I even broke the vanilla mechanic in the first place..
    • The proof of concept works! Thank you both for the advice. My only complaint is that since the data is server side, If I want to cancel a RightClickBlock event based on the stored data, its only blocked serverside and the right click appears to work for just a moment before it syncs up again. Is there some way I can make it work properly on both sides?
    • java.lang.NoSuchMethodError:void net.minecraft.server.level.DistanceManager.addRegionTicket(net.minecraft.server.level.TicketType, net.minecraft.world.level.ChunkPos, int, java.lang.Object, boolean) Error report exit code -1   ---- Minecraft Crash Report ---- // I bet Cylons wouldn't have this problem. Time: 6/7/23, 11:31 PM Description: Exception in server tick loop java.lang.NoSuchMethodError: 'void net.minecraft.server.level.DistanceManager.addRegionTicket(net.minecraft.server.level.TicketType, net.minecraft.world.level.ChunkPos, int, java.lang.Object, boolean)'     at net.minecraft.server.level.ServerChunkCache.addRegionTicket(ServerChunkCache.java:429) ~[client-1.18.2-20220404.173914-srg.jar%23133!/:?] {re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B}     at net.minecraft.server.level.ServerChunkCache.m_8387_(ServerChunkCache.java:425) ~[client-1.18.2-20220404.173914-srg.jar%23133!/:?] {re:classloading,pl:accesstransformer:B,re:mixin,pl:accesstransformer:B}     at net.minecraft.server.MinecraftServer.m_129940_(MinecraftServer.java:471) ~[client-1.18.2-20220404.173914-srg.jar%23133!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:balm.mixins.json:MinecraftServerMixin,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_130006_(MinecraftServer.java:318) ~[client-1.18.2-20220404.173914-srg.jar%23133!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:balm.mixins.json:MinecraftServerMixin,pl:mixin:A}     at net.minecraft.client.server.IntegratedServer.m_7038_(IntegratedServer.java:84) ~[client-1.18.2-20220404.173914-srg.jar%23133!/:?] {re:mixin,xf:OptiFine:default,re:classloading,xf:OptiFine:default,pl:mixin:APP:smoothboot.mixins.json:client.IntegratedServerMixin,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:661) ~[client-1.18.2-20220404.173914-srg.jar%23133!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:balm.mixins.json:MinecraftServerMixin,pl:mixin:A}     at net.minecraft.server.MinecraftServer.m_177918_(MinecraftServer.java:261) ~[client-1.18.2-20220404.173914-srg.jar%23133!/:?] {re:mixin,pl:accesstransformer:B,re:classloading,pl:accesstransformer:B,pl:mixin:APP:balm.mixins.json:MinecraftServerMixin,pl:mixin:A}     at java.lang.Thread.run(Thread.java:833) [?:?] {re:mixin} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- System Details -- Details:     Minecraft Version: 1.18.2     Minecraft Version ID: 1.18.2     Operating System: Windows 10 (amd64) version 10.0     Java Version: 17.0.1, Microsoft     Java VM Version: OpenJDK 64-Bit Server VM (mixed mode), Microsoft     Memory: 1690155888 bytes (1611 MiB) / 3087007744 bytes (2944 MiB) up to 12884901888 bytes (12288 MiB)     CPUs: 12     Processor Vendor: AuthenticAMD     Processor Name: AMD Ryzen 5 5600H with Radeon Graphics              Identifier: AuthenticAMD Family 25 Model 80 Stepping 0     Microarchitecture: Zen 3     Frequency (GHz): 3.29     Number of physical packages: 1     Number of physical CPUs: 6     Number of logical CPUs: 12     Graphics card #0 name: AMD Radeon(TM) Graphics     Graphics card #0 vendor: Advanced Micro Devices, Inc. (0x1002)     Graphics card #0 VRAM (MB): 512.00     Graphics card #0 deviceId: 0x1638     Graphics card #0 versionInfo: DriverVersion=30.0.13002.23     Graphics card #1 name: NVIDIA GeForce RTX 3060 Laptop GPU     Graphics card #1 vendor: NVIDIA (0x10de)     Graphics card #1 VRAM (MB): 4095.00     Graphics card #1 deviceId: 0x2520     Graphics card #1 versionInfo: DriverVersion=30.0.15.1181     Memory slot #0 capacity (MB): 8192.00     Memory slot #0 clockSpeed (GHz): 3.20     Memory slot #0 type: DDR4     Memory slot #1 capacity (MB): 8192.00     Memory slot #1 clockSpeed (GHz): 3.20     Memory slot #1 type: DDR4     Virtual memory max (MB): 31448.12     Virtual memory used (MB): 16587.81     Swap memory total (MB): 15724.06     Swap memory used (MB): 671.00     JVM Flags: 4 total; -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Xss1M -Xmx12288m -Xms256m     Server Running: true     Player Count: 0 / 8; []     Data Packs: vanilla, mod:wandering_bags, mod:tinkerslevellingaddon, mod:jei (incompatible), mod:furnish (incompatible), mod:isleofberk, mod:fish_in_planks (incompatible), mod:sophisticatedcore (incompatible), mod:waystones (incompatible), mod:clumps (incompatible), mod:xaeroworldmap, mod:controlling (incompatible), mod:reauth (incompatible), mod:citadel (incompatible), mod:alexsmobs (incompatible), mod:naturescompass (incompatible), mod:artifacts, mod:feature_nbt_deadlock_be_gone (incompatible), mod:dungeoncrawl, mod:bookshelf, mod:sophisticatedbackpacks (incompatible), mod:lazydfu (incompatible), mod:iceandfire (incompatible), mod:balm (incompatible), mod:walljump (incompatible), mod:dragonfight (incompatible), mod:forge, mod:dcintegration (incompatible), mod:idas, mod:selene (incompatible), mod:supplementaries (incompatible), mod:ironchest, mod:tconstruct (incompatible), mod:farmersdelight (incompatible), mod:honeyexpansion, mod:enchdesc (incompatible), mod:mousetweaks (incompatible), mod:getittogetherdrops (incompatible), mod:jade, mod:smoothboot (incompatible), mod:easy_villagers (incompatible), mod:luphieclutteredmod, mod:craftable_saddles (incompatible), mod:cataclysm (incompatible), mod:flywheel (incompatible), mod:create, mod:curios (incompatible), mod:relics (incompatible), mod:mantle (incompatible), mod:xaerominimap, mod:collective (incompatible), mod:camera (incompatible), mod:polymorph (incompatible), mod:autoreglib (incompatible), mod:quark (incompatible), mod:sit (incompatible), mod:ftbultimine (incompatible), mod:tombstone, mod:universalenchants (incompatible), mod:worldedit (incompatible), mod:starterkit, mod:constructionwand, mod:architectury (incompatible), mod:ftblibrary (incompatible), mod:itemfilters (incompatible), mod:ftbteams (incompatible), mod:ftbchunks (incompatible), mod:ftbquests (incompatible), mod:appleskin (incompatible), mod:lootr (incompatible), mod:ferritecore (incompatible), mod:aiimprovements (incompatible), mod:puzzleslib (incompatible), mod:jadeaddons (incompatible), mod:ante (incompatible), mod:fastleafdecay, mod:expandability (incompatible), mod:cosmeticarmorreworked (incompatible), mod:geckolib3 (incompatible), mod:tradingpost (incompatible), mod:inferno, Supplementaries Generated Pack, iceandfire:data     World Generation: Experimental     Type: Integrated Server (map_client.txt)     Is Modded: Definitely; Client brand changed to 'forge'; Server brand changed to 'forge'     OptiFine Version: OptiFine_1.18.2_HD_U_H7     OptiFine Build: 20220410-185216     Render Distance Chunks: 22     Mipmaps: 4     Anisotropic Filtering: 1     Antialiasing: 0     Multitexture: false     Shaders: null     OpenGlVersion: 3.2.14761 Core Profile Forward-Compatible Context 21.30.02 30.0.13002.23     OpenGlRenderer: AMD Radeon(TM) Graphics     OpenGlVendor: ATI Technologies Inc.     CpuCount: 12     ModLauncher: 9.1.3+9.1.3+main.9b69c82a     ModLauncher launch target: forgeclient     ModLauncher naming: srg     ModLauncher services:           mixin PLUGINSERVICE           eventbus PLUGINSERVICE           slf4jfixer PLUGINSERVICE           object_holder_definalize PLUGINSERVICE           runtime_enum_extender PLUGINSERVICE           capability_token_subclass PLUGINSERVICE           accesstransformer PLUGINSERVICE           runtimedistcleaner PLUGINSERVICE           mixin TRANSFORMATIONSERVICE           OptiFine TRANSFORMATIONSERVICE           fml TRANSFORMATIONSERVICE      FML Language Providers:          minecraft@1.0         lowcodefml@null         javafml@null     Mod List:          wandering-bags-1.18.2-2.0.5.jar                   |Wandering Bags                |wandering_bags                |2.0.5               |DONE      |Manifest: NOSIGNATURE         TinkersLevellingAddon-1.18.2-1.2.0.jar            |Tinkers' Levelling Addon      |tinkerslevellingaddon         |1.2.0               |DONE      |Manifest: NOSIGNATURE         jei-1.18.2-9.7.1.255.jar                          |Just Enough Items             |jei                           |9.7.1.255           |DONE      |Manifest: NOSIGNATURE         furnish-1.18-0.6-fix1.jar                         |Furnish                       |furnish                       |1.18-0.6-fix1       |DONE      |Manifest: NOSIGNATURE         Isle of Berk - 1.1.0.jar                          |Isle of Berk                  |isleofberk                    |1.1.0               |DONE      |Manifest: NOSIGNATURE         fish_in_planks-1.18.1-0.5.jar                     |Fish in Planks                |fish_in_planks                |1.18.1-0.5          |DONE      |Manifest: NOSIGNATURE         sophisticatedcore-1.18.2-0.5.50.250.jar           |Sophisticated Core            |sophisticatedcore             |1.18.2-0.5.50.250   |DONE      |Manifest: NOSIGNATURE         waystones-forge-1.18.2-10.2.1.jar                 |Waystones                     |waystones                     |10.2.1              |DONE      |Manifest: NOSIGNATURE         Clumps-forge-1.18.2-8.0.0+17.jar                  |Clumps                        |clumps                        |8.0.0+17            |DONE      |Manifest: NOSIGNATURE         XaerosWorldMap_1.30.0_Forge_1.18.2.jar            |Xaero's World Map             |xaeroworldmap                 |1.30.0              |DONE      |Manifest: NOSIGNATURE         Controlling-forge-1.18.2-9.0+22.jar               |Controlling                   |controlling                   |9.0+22              |DONE      |Manifest: NOSIGNATURE         ReAuth-1.18-Forge-4.0.7.jar                       |ReAuth                        |reauth                        |4.0.7               |DONE      |Manifest: 3d:06:1e:e5:da:e2:ff:ae:04:00:be:45:5b:ff:fd:70:65:00:67:0b:33:87:a6:5f:af:20:3c:b6:a1:35:ca:7e         citadel-1.11.3-1.18.2.jar                         |Citadel                       |citadel                       |1.11.3              |DONE      |Manifest: NOSIGNATURE         alexsmobs-1.18.6.jar                              |Alex's Mobs                   |alexsmobs                     |1.18.6              |DONE      |Manifest: NOSIGNATURE         NaturesCompass-1.18.2-1.9.7-forge.jar             |Nature's Compass              |naturescompass                |1.18.2-1.9.7-forge  |DONE      |Manifest: NOSIGNATURE         artifacts-1.18.2-4.2.1.jar                        |Artifacts                     |artifacts                     |1.18.2-4.2.1        |DONE      |Manifest: NOSIGNATURE         feature_nbt_deadlock_be_gone_forge-2.0.0+1.18.2.ja|Feature NBT Deadlock Be Gone  |feature_nbt_deadlock_be_gone  |2.0.0+1.18.2        |DONE      |Manifest: NOSIGNATURE         DungeonCrawl-1.18.2-2.3.12.jar                    |Dungeon Crawl                 |dungeoncrawl                  |2.3.12              |DONE      |Manifest: NOSIGNATURE         Bookshelf-Forge-1.18.2-13.2.53.jar                |Bookshelf                     |bookshelf                     |13.2.53             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         sophisticatedbackpacks-1.18.2-3.18.46.821.jar     |Sophisticated Backpacks       |sophisticatedbackpacks        |1.18.2-3.18.46.821  |DONE      |Manifest: NOSIGNATURE         lazydfu-1.0-1.18+.jar                             |LazyDFU                       |lazydfu                       |0.1.3               |DONE      |Manifest: NOSIGNATURE         iceandfire-2.1.12-1.18.2-beta2.jar                |Ice and Fire                  |iceandfire                    |2.1.12-1.18.2-beta2 |DONE      |Manifest: NOSIGNATURE         balm-3.2.6.jar                                    |Balm                          |balm                          |3.2.6               |DONE      |Manifest: NOSIGNATURE         walljump-forge-1.18.1-1.3.7.jar                   |Wall-Jump!                    |walljump                      |1.18.1-1.3.7        |DONE      |Manifest: NOSIGNATURE         dragonfight-1.18.2-2.2.jar                        |dragonfight mod               |dragonfight                   |1.18.2-2.2          |DONE      |Manifest: NOSIGNATURE         forge-1.18.2-40.2.2-universal.jar                 |Forge                         |forge                         |40.2.2              |DONE      |Manifest: 84:ce:76:e8:45:35:e4:0e:63:86:df:47:59:80:0f:67:6c:c1:5f:6e:5f:4d:b3:54:47:1a:9f:7f:ed:5e:f2:90         dcintegration-forge-2.5.0-1.18.2.jar              |Discord Integration           |dcintegration                 |2.5.0               |DONE      |Manifest: NOSIGNATURE         idas_forge-1.5.0+1.18.2.jar                       |Integrated Dungeons and Struct|idas                          |1.5.0+1.18.2        |DONE      |Manifest: NOSIGNATURE         selene-1.18.2-1.17.9.jar                          |Selene                        |selene                        |1.18.2-1.17.9       |DONE      |Manifest: NOSIGNATURE         supplementaries-1.18.2-1.5.17.jar                 |Supplementaries               |supplementaries               |1.18.2-1.5.17       |DONE      |Manifest: NOSIGNATURE         ironchest-1.18.2-13.2.11.jar                      |Iron Chests                   |ironchest                     |1.18.2-13.2.11      |DONE      |Manifest: NOSIGNATURE         client-1.18.2-20220404.173914-srg.jar             |Minecraft                     |minecraft                     |1.18.2              |DONE      |Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f         TConstruct-1.18.2-3.6.4.113.jar                   |Tinkers' Construct            |tconstruct                    |3.6.4.113           |DONE      |Manifest: NOSIGNATURE         FarmersDelight-1.18.2-1.2.0.jar                   |Farmer's Delight              |farmersdelight                |1.18.2-1.2.0        |DONE      |Manifest: NOSIGNATURE         honeyexpansion-1.1.1.jar                          |Honey expansion               |honeyexpansion                |1.1.1               |DONE      |Manifest: NOSIGNATURE         EnchantmentDescriptions-Forge-1.18.2-10.0.12.jar  |EnchantmentDescriptions       |enchdesc                      |10.0.12             |DONE      |Manifest: eb:c4:b1:67:8b:f9:0c:db:dc:4f:01:b1:8e:61:64:39:4c:10:85:0b:a6:c4:c7:48:f0:fa:95:f2:cb:08:3a:e5         MouseTweaks-forge-mc1.18-2.21.jar                 |Mouse Tweaks                  |mousetweaks                   |2.21                |DONE      |Manifest: NOSIGNATURE         getittogetherdrops-forge-1.18.2-1.3.jar           |Get It Together, Drops!       |getittogetherdrops            |1.3                 |DONE      |Manifest: NOSIGNATURE         Jade-1.18.2-forge-5.2.6.jar                       |Jade                          |jade                          |5.2.6               |DONE      |Manifest: NOSIGNATURE         smoothboot(reloaded)-mc1.18.2-0.0.2.jar           |Smooth Boot (Reloaded)        |smoothboot                    |0.0.2               |DONE      |Manifest: NOSIGNATURE         easy_villagers-1.18.2-1.0.11.jar                  |Easy Villagers                |easy_villagers                |1.18.2-1.0.11       |DONE      |Manifest: NOSIGNATURE         Cluttered-2.0-1.18.2.jar                          |Cluttered                     |luphieclutteredmod            |2.0                 |DONE      |Manifest: NOSIGNATURE         Craftable Saddles [1.18 All]-1.4.jar              |Craftable Saddles             |craftable_saddles             |1.4                 |DONE      |Manifest: NOSIGNATURE         L_Enders Cataclysm-0.51-changed Them -1.18.2.jar  |Cataclysm Mod                 |cataclysm                     |1.0                 |DONE      |Manifest: NOSIGNATURE         flywheel-forge-1.18.2-0.6.8.a.jar                 |Flywheel                      |flywheel                      |0.6.8.a             |DONE      |Manifest: NOSIGNATURE         create-1.18.2-0.5.0.i.jar                         |Create                        |create                        |0.5.0.i             |DONE      |Manifest: NOSIGNATURE         curios-forge-1.18.2-5.0.9.0.jar                   |Curios API                    |curios                        |1.18.2-5.0.9.0      |DONE      |Manifest: NOSIGNATURE         relics-1.18.2-0.4.1.8.jar                         |Relics                        |relics                        |0.4.1.8             |DONE      |Manifest: NOSIGNATURE         Mantle-1.18.2-1.9.45.jar                          |Mantle                        |mantle                        |1.9.45              |DONE      |Manifest: NOSIGNATURE         Xaeros_Minimap_23.4.0_Forge_1.18.2.jar            |Xaero's Minimap               |xaerominimap                  |23.4.0              |DONE      |Manifest: NOSIGNATURE         collective-1.18.2-6.53.jar                        |Collective                    |collective                    |6.53                |DONE      |Manifest: NOSIGNATURE         camera-1.18.2-1.0.5.jar                           |Camera Mod                    |camera                        |1.18.2-1.0.5        |DONE      |Manifest: NOSIGNATURE         polymorph-forge-1.18.2-0.46.jar                   |Polymorph                     |polymorph                     |1.18.2-0.46         |DONE      |Manifest: NOSIGNATURE         AutoRegLib-1.7-53.jar                             |AutoRegLib                    |autoreglib                    |1.7-53              |DONE      |Manifest: NOSIGNATURE         Quark-3.2-358.jar                                 |Quark                         |quark                         |3.2-358             |DONE      |Manifest: NOSIGNATURE         sit-1.18.2-1.3.3.jar                              |Sit                           |sit                           |1.3.3               |DONE      |Manifest: NOSIGNATURE         ftb-ultimine-forge-1802.3.3-build.70.jar          |FTB Ultimine                  |ftbultimine                   |1802.3.3-build.70   |DONE      |Manifest: NOSIGNATURE         tombstone-7.6.4-1.18.2.jar                        |Corail Tombstone              |tombstone                     |7.6.4               |DONE      |Manifest: NOSIGNATURE         UniversalEnchants-v3.0.6-1.18.2-Forge.jar         |Universal Enchants            |universalenchants             |3.0.6               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         worldedit-mod-7.2.10.jar                          |WorldEdit                     |worldedit                     |7.2.10+1742f98      |DONE      |Manifest: NOSIGNATURE         starterkit-1.18.2-5.2.jar                         |Starter Kit                   |starterkit                    |5.2                 |DONE      |Manifest: NOSIGNATURE         constructionwand-1.18.2-2.9.jar                   |Construction Wand             |constructionwand              |1.18.2-2.9          |DONE      |Manifest: NOSIGNATURE         architectury-4.11.92-forge.jar                    |Architectury                  |architectury                  |4.11.92             |DONE      |Manifest: NOSIGNATURE         ftb-library-forge-1802.3.11-build.177.jar         |FTB Library                   |ftblibrary                    |1802.3.11-build.177 |DONE      |Manifest: NOSIGNATURE         item-filters-forge-1802.2.8-build.47.jar          |Item Filters                  |itemfilters                   |1802.2.8-build.47   |DONE      |Manifest: NOSIGNATURE         ftb-teams-forge-1802.2.10-build.96.jar            |FTB Teams                     |ftbteams                      |1802.2.10-build.96  |DONE      |Manifest: NOSIGNATURE         ftb-chunks-forge-1802.3.17-build.265.jar          |FTB Chunks                    |ftbchunks                     |1802.3.17-build.265 |DONE      |Manifest: NOSIGNATURE         ftb-quests-forge-1802.3.14-build.191.jar          |FTB Quests                    |ftbquests                     |1802.3.14-build.191 |DONE      |Manifest: NOSIGNATURE         appleskin-forge-mc1.18.2-2.4.1.jar                |AppleSkin                     |appleskin                     |2.4.1+mc1.18.2      |DONE      |Manifest: NOSIGNATURE         lootr-1.18.2-0.3.24.61.jar                        |Lootr                         |lootr                         |0.3.24.61           |DONE      |Manifest: NOSIGNATURE         ferritecore-4.2.2-forge.jar                       |Ferrite Core                  |ferritecore                   |4.2.2               |DONE      |Manifest: 41:ce:50:66:d1:a0:05:ce:a1:0e:02:85:9b:46:64:e0:bf:2e:cf:60:30:9a:fe:0c:27:e0:63:66:9a:84:ce:8a         AI-Improvements-1.18.2-0.5.2.jar                  |AI-Improvements               |aiimprovements                |0.5.2               |DONE      |Manifest: NOSIGNATURE         PuzzlesLib-v3.3.6-1.18.2-Forge.jar                |Puzzles Lib                   |puzzleslib                    |3.3.6               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         JadeAddons-1.18.2-forge-2.4.1.jar                 |Jade Addons                   |jadeaddons                    |2.4.1               |DONE      |Manifest: NOSIGNATURE         AnvilNeverTooExpensive-1.18-1.1.jar               |Anvil Never Too Expensive     |ante                          |1.1                 |DONE      |Manifest: NOSIGNATURE         FastLeafDecay-28.jar                              |FastLeafDecay                 |fastleafdecay                 |28                  |DONE      |Manifest: NOSIGNATURE         expandability-6.0.0.jar                           |ExpandAbility                 |expandability                 |6.0.0               |DONE      |Manifest: NOSIGNATURE         CosmeticArmorReworked-1.18.2-v2a.jar              |CosmeticArmorReworked         |cosmeticarmorreworked         |1.18.2-v2a          |DONE      |Manifest: 5e:ed:25:99:e4:44:14:c0:dd:89:c1:a9:4c:10:b5:0d:e4:b1:52:50:45:82:13:d8:d0:32:89:67:56:57:01:53         geckolib-forge-1.18-3.0.57.jar                    |GeckoLib                      |geckolib3                     |3.0.57              |DONE      |Manifest: NOSIGNATURE         TradingPost-v3.2.0-1.18.2-Forge.jar               |Trading Post                  |tradingpost                   |3.2.0               |DONE      |Manifest: 9a:09:85:98:65:c4:8c:11:c5:49:f6:d6:33:23:39:df:8d:b4:ff:92:84:b8:bd:a5:83:9f:ac:7f:2a:d1:4b:6a         infernos-HTTYD-1.6.1.jar                          |Inferno                       |inferno                       |1.0.0               |DONE      |Manifest: NOSIGNATURE     Crash Report UUID: 52147796-a997-4c16-bccf-37d0e493c737     Flywheel Backend: GL33 Instanced Arrays     FML: 40.2     Forge: net.minecraftforge:40.2.2
    • 1.19.4 has now stabilized! Go to our Blog for more details.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.