Jump to content

Recommended Posts

Posted (edited)

So I'm trying to make a silly "mobile furnace".

 

I have it mostly functional, but (inventory) items don't update on the client unless you reopen the GUI, and I feel like I'm doing something horribly, deeply wrong, as this should probably not be the case for any use of Container/IInventory (because detectAndSendChanges). I've been studying the TileEntityFurnace/TileEntityChest classes a LOT trying to figure out what to do here. But it's really really hard to do things, since there are no instances of items, so I can't use class variables or whatever. That's fine, I'll just load from NBT and then save it again in onUpdate. Which is bad, I hate it.

 

So, I'm really, badly needing a code review. I need someone to look at my code, figure out what's wrong with it, and please please teach me how to do it right. I never thought something as simple as an item furnace could be so complicated...

 

The simplest way for you to see how things are, my code, and etc. is to download the project and run it for yourself. ./gradlew setupDecompWorkspace idea genIntellijRuns and so on. The project's on GitHub.

 

Here are some quick links to the Kotlin files, if you want to take a look without downloading it:

ItemPotatoFurnace (the Item)

ContainerPotatoFurnace (the ContainerFurnace)

GuiPotatoFurnace (the GuiFurnace)

InventoryPotatoFurnace (the IInventory)

 

If you can teach me how to use capabilities for items, that would be great too. The forge docs are SO confusing on capabilities, I wouldn't even know how to use them for blocks.

 

Basically, I'm just really looking for help on anything. If you can, teach me how to keep the items synchronized on client and server. Anything else would definitely be appreciated. I started modding about 2 days ago, never touched the MDK ever before that. This is also my first time with Kotlin, hehe.

 

Notes for each thingy:

  • The item: This isn't listed in a creative tab like the other items so you'll have to use /give @p diamond2potato:potato_furnace. Right click to open the furnace, obviously. Use it like a normal furnace. It'll keep smelting as long as it's in your inventory, I think. I haven't checked if onUpdate gets called in a chest.
  • The container: It has a logger left over from when I made sure this was being called, it's weird. You can ignore it, or remove it (which would be nice for keeping your logs clean)
  • The GUI: Just a GuiFurnace. I made it its own class in case I need to change anything, but I don't think I'll need to.
  • The inventory: This is where I think my error is. There's, of course, the item implementation which mandates some sort of bad practice due to the way it handles things (advice would be appreciated by the way), but this inventory is probably the source of all my problems. I would love to use capabilities but I'm just not sure how. Please advise...
Edited by LoganDark
Added 'Notes for each thingy'
Posted (edited)
  1. Issue 5 was detailed in my post, read it. If you want me to use capabilities you're going to have to tell me how they work because I don't know how to put capabilities in an item. Issue 10, point taken, I'm in the process of fixing it and pushing it to GitHub. Issue 14, at first I didn't understand what you meant, but then I realized you didn't mean registering them, but actually instantiating them (like ItemPotatoPickaxe and such).
  2. I only do that so I don't have to add ? to all the types. I know Forge replaces them at runtime using reflection, which is why I assign dumb values to them, knowing they'll change. Kotlin has no "guaranteed to be injected at runtime" annotation, unfortunately. And there's a difference between nullable and non-nullable types.
  3. I wasn't actually aware that Items existed until a while ago.
  4. Point taken
  5. I do that so I can use val rather than var, but still, point taken. Kotlin has no ternary which is what I would've used.
  6. These are not item instances, they're classes, like ItemHoe or ItemFood. ItemHoeFood is an ItemHoe that can be eaten. It's meant to be subclassed, not registered. Then the subclasses registered. See ItemPotatoHoe.
Edited by LoganDark
Posted
Just now, LoganDark said:

Kotlin has no "guaranteed to be injected at runtime" annotation, unfortunately

Doesn’t it exist and isn’t it called “lateinit” or something?

About Me

Spoiler

My Discord - Cadiboo#8887

My WebsiteCadiboo.github.io

My ModsCadiboo.github.io/projects

My TutorialsCadiboo.github.io/tutorials

Versions below 1.14.4 are no longer supported on this forum. Use the latest version to receive support.

When asking support remember to include all relevant log files (logs are found in .minecraft/logs/), code if applicable and screenshots if possible.

Only download mods from trusted sites like CurseForge (minecraft.curseforge.com). A list of bad sites can be found here, with more information available at stopmodreposts.org

Edit your own signature at www.minecraftforge.net/forum/settings/signature/ (Make sure to check its compatibility with the Dark Theme)

Posted (edited)
1 minute ago, Cadiboo said:

Doesn’t it exist and isn’t it called “lateinit” or something?

Only works on vars (which are then forever cursed with the absence of a non-null guarantee, requiring me to use !! everywhere I use it), and I strongly prefer using vals. I'll look into it.

Edited by LoganDark
Posted
Just now, diesieben07 said:

lateinit is exactly the thing to do here. No, it does not require you to make your field nullable.

 

if-else is an expression in Kotlin, just like when:

val foo = if (a == b) "true" else "false"

Or even more complex:

val foo = if (a == b) {

    // do stuff here

    "foo's value here"

} else {

    // do more other stuff

    "foo's more different value here"

}

 

Capabilities on items work by overriding initCapabilities on your Item class.

 

They instantiate ItemFood inside them, which is then used (you are calling methods on it) without it being registered. This is a bad idea.

Sorry, didn't know if-else could be that small, heh...

 

And, well, I instantiated ItemFood because I didn't want to reimplement everything (even if it is just copy and paste).

 

Also, where would I put the lateinit? Would I store all items in their own variables under my mod class and register them all individually? Put them in companion objects and use reflection to set it during the registration step?

 

Also, sure I can override initCapabilities but what do I put in it? The docs are completely unclear on this.

Posted (edited)
11 minutes ago, diesieben07 said:

Unfortunately that's what you will have to do. In 1.14.3 this changes.

 

On your @ObjectHolder fields. Forge will then automatically inject them after registration. The documentation has more information on this.

 

You need to return an ICapabilityProvider, which then exposes one or more capability, just like described for tile entities, etc. in the documentation.

  1. Isn't an item just a data structure, with methods and such? I don't see anything wrong with instantiating one without registering it, but I'll see if I can remove that.
  2. So I need an ObjectHolder for every item in my mod rather than doing it the way I currently do? It probably doesn't make any difference if I instantiate my singleton items before or during registration. Items don't do anything on their own when instantiated, right? Please do clarify on this though, what could go wrong if I keep doing it the way I currently do?
  3. How would I keep a separate instance of the Capability for each item? I have no idea how to do this other than instantiating it every tick in onUpdate. Unless something else handles what I return from initCapabilities? I'm confused, you need to provide more info than "read the docs" because the docs don't actually detail this. They just say "make an instance of the capability and override get/hasCapability". Read it yourself and then tell me how useful that is!
Edited by LoganDark
Posted (edited)
5 minutes ago, diesieben07 said:

No. You can assign the fields yourself if you want to.

So I need a field for every item in my mod? I have no issue with ObjectHolder. I have an issue with having to manually create variables for each item and assign an instance to it manually for every single item in the mod. I'm not saying I WOULDN'T do it, I'm just trying to figure out why exactly I SHOULD do it, rather than what I'm doing right now, which is adding an entry to an array and calling it good.

 

5 minutes ago, diesieben07 said:

setRegistryName for example does not work correctly when called outside of "mod context". A static initializer has no set time when it will run, so there is no guarantee that Forge can determine it's your mod that is executing code. setRegistryName however needs to know which mod is using it.

Could you give me an example of it not "working correctly"?

 

5 minutes ago, diesieben07 said:

Did you read the javadoc on initCapabilities? It explains that the resulting ICapabilityProvider is tied to the given ItemStack. Your item is queried again for every ItemStack that's created of it.

Okay, thank you. Sorry I haven't read the javadoc...

 

I'm going to go try things now. Now that I have the mod in version control, I can go crazy. I'll provide an update if things change.

Edited by LoganDark
Posted
3 minutes ago, diesieben07 said:

If Forge cannot determine it's your mod that's executing code your Item's registry name will now be "minecraft:myawesomeblock" and it will be tracked as being a vanilla Minecraft item.

ResourceLocations have a namespace argument that's always set to my mod ID, that's what Forge uses for the namespace, right?

 

9 minutes ago, diesieben07 said:

No. If you do not need a reference to your items it is fine to just create an instance, register them and then move on. You do not need to keep the instance around if you do not need it. It will still be in Forge's registry.

Oh, wait, so I can use ObjectHolders in each class that uses them...? Or Item.getByNameOrId?

Posted (edited)

Okay, so I did some updates.

 

First, I'm now using Items and Blocks for almost all vanilla items/blocks (minus potatoFood and bakedPotatoFood in the Diamond2Potato class, to not have to cast them to ItemFood every time I use their ItemFood methods). Second, I've moved the Potato Furnace over to Capabilities.

 

bc93b1659a.gif

 

Now, the new Capability-based furnace seems to work okay, except for one problem. It doesn't seem to save, and items disappear randomly if you drop the item, move it around, etc. Now, I've defined the Capabilities.IStorage methods in my capability, but it doesn't seem to do anything on its own. So, my question now is, how do I get it to save? Should I just save it manually using the stack's tag compound using a 'mark dirty' method of some sort?

 

Additionally, how do I keep this in sync between client and server? Does it just happen automatically, or is there something specific I should do?

 

Capabilities commit

Edited by LoganDark
Posted (edited)

Okay, so after some more work I've made the potato furnace almost fully functional in singleplayer. You can move the item around in your inventory, drop it on the ground, etc. and pick it back up and the state persists.

 

GitHub commit

 

It still doesn't work in multiplayer. Even in singleplayer, sometimes when, for example, there's 16 Potatoes in the item slot and you try to drop 16 on top, the 16 extra disappears.

 

Any more advice on how to make this work?

Edited by LoganDark
Posted (edited)
2 hours ago, diesieben07 said:

Why do you have an adapter to IInventory? You don't need this.

What do I use instead?

2 hours ago, diesieben07 said:

on your TE

What TE? Is an ItemStack a TileEntity? No, so why would you mark it dirty? I'm pretty sure it saves on its own...

 

--------------------------------------------------------------------

 

Please see my new post here:

 

This one is obsolete.

 

Edited by LoganDark
Posted (edited)
2 minutes ago, diesieben07 said:

IItemHandler. You already have it.

How do I use that for the GUI then? Is there a type of GUI slot that accepts IItemHandlers? Because the regular GUI Slot only accepts IInventories. I need the adapter, even though I use IItemHandler behind the scenes.

Edited by LoganDark
Posted (edited)
43 minutes ago, diesieben07 said:

SlotItemHandler.

Even that uses IInventory LOL

 

Besides, I need get/setField. Thanks for the recommendation, though, I'll be sure to use that next time if I need something like a chest.

 

Edit: I'm dumb, I can make the container take FurnaceCapability instead of IItemHandler. Working on it...

Edited by LoganDark
Posted
4 hours ago, LoganDark said:

Even that uses IInventory LOL

You mean this line?

private static IInventory emptyInventory = new InventoryBasic("[Null]", true, 0);

Yeah, that's so it can call super without passing null, which would crash. It doesn't actually USE it, its literally a dummy variable.

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • My game was running smoothly for a few days, but once when I exited the forge app and opened it and minecraft again, it wouldn't move past "Loading bootstrap resources". I've looked up solutions online, but all I found was to just increase my ram or check if certain mods aren't compatible, though my ram is already half of my computer's max, and all of my mods shouldn't have issues with one another. I don't know much about code, tech or logs, so hopefully somebody out there could decipher this log file?   2025-01-24 20:25:27,222 main WARN Advanced terminal features are not available in this environment [20:25:27] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, SUPERBoBober, --version, forge-47.3.0, --gameDir, C:\Users\Bogdan\curseforge\minecraft\Instances\Profile2, --assetsDir, C:\Users\Bogdan\curseforge\minecraft\Install\assets, --assetIndex, 5, --uuid, e4373b79426b3fffa6159b893e4f6944, --accessToken, ????????, --clientId, 0, --xuid, 0, --userType, msa, --versionType, release, --width, 1024, --height, 768, --launchTarget, forgeclient, --fml.forgeVersion, 47.3.0, --fml.mcVersion, 1.20.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20230612.114412] [20:25:27] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.9+10.0.9+main.dcd20f30 starting: java version 17.0.8 by Microsoft; OS Windows 11 arch amd64 version 10.0 [20:25:28] [main/INFO] [ne.mi.fm.lo.ImmediateWindowHandler/]: Loading ImmediateWindowProvider fmlearlywindow [20:25:28] [main/INFO] [EARLYDISPLAY/]: Trying GL version 4.6 [20:25:28] [main/INFO] [EARLYDISPLAY/]: Requested GL version 4.6 got version 4.6 [20:25:29] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/Bogdan/curseforge/minecraft/Install/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%23100!/ Service=ModLauncher Env=CLIENT [20:25:29] [pool-4-thread-1/INFO] [EARLYDISPLAY/]: GL info: AMD Radeon RX 6600 GL version 4.6.0 Core Profile Context 23.10.2.231013, ATI Technologies Inc. [20:25:29] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\Bogdan\curseforge\minecraft\Install\libraries\net\minecraftforge\fmlcore\1.20.1-47.3.0\fmlcore-1.20.1-47.3.0.jar is missing mods.toml file [20:25:29] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\Bogdan\curseforge\minecraft\Install\libraries\net\minecraftforge\javafmllanguage\1.20.1-47.3.0\javafmllanguage-1.20.1-47.3.0.jar is missing mods.toml file [20:25:29] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\Bogdan\curseforge\minecraft\Install\libraries\net\minecraftforge\lowcodelanguage\1.20.1-47.3.0\lowcodelanguage-1.20.1-47.3.0.jar is missing mods.toml file [20:25:29] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\Bogdan\curseforge\minecraft\Install\libraries\net\minecraftforge\mclanguage\1.20.1-47.3.0\mclanguage-1.20.1-47.3.0.jar is missing mods.toml file [20:25:30] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select two dependency jars from JarJar which have the same identification: Mod File:  and Mod File: . Using Mod File: [20:25:30] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: aeroblender. Using Mod File: C:\Users\Bogdan\curseforge\minecraft\Instances\Profile2\mods\aeroblender-1.20.1-1.0.1-neoforge.jar [20:25:30] [main/WARN] [ne.mi.ja.se.JarSelector/]: Attempted to select a dependency jar for JarJar which was passed in as source: curios. Using Mod File: C:\Users\Bogdan\curseforge\minecraft\Instances\Profile2\mods\curios-forge-5.11.1+1.20.1.jar [20:25:30] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: Found 26 dependencies adding them to mods collection [20:25:33] [main/INFO] [mixin/]: Compatibility level set to JAVA_17 [20:25:34] [main/INFO] [cp.mo.mo.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeclient' with arguments [--version, forge-47.3.0, --gameDir, C:\Users\Bogdan\curseforge\minecraft\Instances\Profile2, --assetsDir, C:\Users\Bogdan\curseforge\minecraft\Install\assets, --uuid, e4373b79426b3fffa6159b893e4f6944, --username, SUPERBoBober, --assetIndex, 5, --accessToken, ????????, --clientId, 0, --xuid, 0, --userType, msa, --versionType, release, --width, 1024, --height, 768] [20:25:34] [main/WARN] [mixin/]: Reference map 'createdeco-forge-refmap.json' for createdeco.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'handcrafted-forge-1.20.1-forge-refmap.json' for handcrafted.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'morevillagers-forge-forge-refmap.json' for morevillagers.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'nitrogen_internals.refmap.json' for nitrogen_internals.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'jeitweaker.refmap.json' for jeitweaker.forge.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'jeitweaker.refmap.json' for jeitweaker.common.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'farmersrespite.refmap.json' for farmersrespite.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/INFO] [Puzzles Lib/]: Loading 198 mods:     - aeroblender 1.20.1-1.0.1-neoforge     - aether 1.20.1-1.5.1-neoforge         |-- cumulus_menus 1.20.1-1.0.1-neoforge         \-- nitrogen_internals 1.20.1-1.0.11-neoforge     - alexscaves 2.0.2     - alexsdelight 1.5     - alexsmobs 1.22.9     - architectury 9.2.14     - ascended_quark 1.1.4     - athena 3.1.2     - attributefix 21.0.4     - attributeslib 1.3.7     - autochefsdelight 1.0.5+forge     - bagus_lib 1.20.1-5.3.0     - balm 7.3.11         \-- kuma_api 20.1.9-SNAPSHOT     - betteradvancements 0.4.2.25     - betterdungeons 1.20-Forge-4.0.4     - bettermineshafts 1.20-Forge-4.0.4     - betteroceanmonuments 1.20-Forge-3.0.4     - betterstrongholds 1.20-Forge-4.0.3     - biomesoplenty 19.0.0.94     - biomeswevegone 1.5.2     - bloodandmadness 2.0     - bloodmagic 3.3.3-45     - blue_skies 1.3.31     - bosses_of_mass_destruction 1.1.1     - bossominium 18.5     - botarium 2.3.4     - brutalbosses 1.20.1-7.1     - brutalharvest 1.14.4     - caelus 3.2.0+1.20.1     - cataclysm 2.43     - cerbons_api 1.0.0     - chisel 1.8.0     - choups_drakvyrn_mod 2.5.0     - citadel 2.6.1     - cloth_config 11.1.136     - cofh_core 11.0.2     - corgilib 4.0.3.3     - crafttweaker 14.0.50     - create 0.5.1.j         \-- flywheel 0.6.11-13     - create_central_kitchen 1.3.12         |-- create_dragon_lib 1.4.3         \-- mixinextras 0.2.0     - create_dd 0.1b.Release-Early-Dev     - create_enchantment_industry 1.2.9.d     - create_factory 0.4b-1.20.1     - create_new_age 1.1.2     - createaddition 1.20.1-1.2.5     - createdeco 2.0.2-1.20.1-forge     - cristellib 1.1.6     - ctov 3.4.11     - culinaryconstruct 5.2.1+1.20.1         \-- spectrelib 0.13.14+1.20.1     - cupboard 1.20.1-2.7     - curios 5.11.1+1.20.1     - deep_aether 1.20.1-1.0.4     - deep_dark_regrowth 1.2.6.1     - diamethyst_arrows 1.1.5-1.20.1     - diamethyst_golem 1.0.2-1.20.1     - diamethyst_mw 1.0.1-1.20.1     - diamethysts 1.9.7-1.20.1     - dragonseeker 1.2.0-1.20.1     - dungeons_arise 2.1.58-1.20.x     - dungeons_arise_seven_seas 1.0.2     - dynamicvillage 0.4     - endersdelight 1.0.3     - enhancedcelestials 1.20.1-5.0.2.3     - epicfight 20.9.6     - excompressum 20.1.6     - exdeorum 1.44     - fabledweaponry 1.20.1-1.0.7.5     - falchionmoveset 20.8.2     - farmers_delight_christmas_editio 1.0.0     - farmers_structures 1.0.0     - farmersdelight 1.20.1-1.2.6     - farmersrespite 1.20.1-2.1     - forge 47.3.0     - formations 1.0.3     - formationsnether 1.0.5     - friendsandfoes 3.0.7     - fusion 1.2.3     - geckolib 4.7     - glitchcore 0.0.1.1     - handcrafted 3.0.6     - hanew_village_mod 3.0.0     - hunters_return 1.20.1-11.6.4     - huntersmoon 1.20     - iceandfire 2.1.13-1.20.1     - illager_additions 1.20.1-0.0.2-alpha     - illager_trader 3.0.0     - illagerinvasion 8.0.6     - illagerraidmusic 1.1.1     - illagerrevolutionmod 1.4}     - illagerwarship 1.0.0     - immersive_armors 1.6.1+1.20.1     - immersive_melodies 0.3.0+1.20.1     - impactful 20.8.3     - indestructible 20.9.2     - interiors 0.5.6     - irons_spellbooks 1.20.1-3.4.0.7     - jade 11.12.3+forge     - jadeaddons 5.3.1+forge     - jei 15.20.0.106     - jeitweaker 8.0.6     - justenoughprofessions 3.0.1     - kotlinforforge 4.11.0     - kubejs 2001.6.5-build.16     - kubejs_create 2001.2.5-build.2     - lendersdelight 1.0.2-1.20.1     - lionfishapi 2.4-Fix     - lithostitched 1.4     - ls_spooky_music 1.0.1     - magistuarmory 9.21     - mantle 1.11.36     - medieval_buildings 1.0.2     - medieval_paintings 7.0     - medievalend 1.0.1     - medievalmusic 1.20.1-2.1     - medievalorigins 6.5.0+1.20.1-forge         \-- apugli 2.10.2+1.20.1-forge     - meetyourfight 1.20.1-1.4.1     - minecraft 1.20.1     - moremobvariants 1.3.0.1     - morevillagers 5.0.0     - mowzies_cataclysm 1.1.0     - mowziesdelight 1.1.2.4-1.20.1     - mowziesmobs 1.6.4     - mr_hero_proof 5.1.2     - mr_tidal_towns 1.3.4     - mutant_iceologer 2.0.2     - mutant_wolf 1.0.0     - mutantmonsters 8.0.7     - mutantsbuff 1.0.0     - nethersdelight 1.20.1-4.0     - oceansdelight 1.0.2-1.20     - octolib 0.4.2     - oculus 1.8.0     - ohthetreesyoullgrow 1.20.1-1.3.4     - origins 1.20.1-1.10.0.9         |-- additionalentityattributes 1.4.0.5+1.20.1         |-- apoli 1.20.1-2.9.0.8         \-- calio 1.20.1-1.11.0.5     - patchouli 1.20.1-84-FORGE     - pehkui 3.8.2+1.20.1-forge     - placebo 8.6.2     - playeranimator 1.0.2-rc1+1.20     - projectile_damage 3.2.2+1.20.1     - puzzleslib 8.1.25         \-- puzzlesaccessapi 8.0.7     - quark 4.0-460     - quarkoddities 1.20.1     - raccompat 0.1.3     - railways 1.6.7+forge-mc1.20.1     - ramcompat 0.1.4     - rechiseled 1.1.6     - rechiseledcreate 1.0.2     - relics 0.8.0.7     - repurposed_structures 7.1.15+1.20.1-forge     - resourcefullib 2.1.29     - rhino 2001.2.3-build.6     - simplecorelib 1.20.1-6.0.1.2     - sliceanddice 3.3.0     - soulsweapons 1.1.5-1.20.1-forge}     - spartanshields 3.1.1     - spartantoolkit 1.5.1     - spartantwilight 3.1.0     - spartanweaponry 3.1.3     - structure_gel 2.16.2     - supermartijn642configlib 1.1.8     - supermartijn642corelib 1.1.18     - sword_soaring 20.1.11.11     - t_and_t 0.0NONE     - takesapillage 1.0.3     - taxcp 1.0.1     - taxov 3.1.3     - taxtg 1.1.0     - tconstruct 3.9.1.19     - terrablender 3.0.1.7     - terralith 2.5.4     - tflostblocks 1.20.1-1.5.0     - tfmg 0.9.3-1.20.1     - thermal_dynamics 11.0.1     - thermal_expansion 11.0.1     - thermal_foundation 11.0.6         \-- thermal 11.0.6     - traveloptics 3.5.3-1.20.1     - twilightaether 1.20.1-1.0.0     - twilightdelight 2.0.13         \-- l2library 2.4.16     - twilightforest 4.3.2508     - twilighttweaks 1.2     - wom 20.1.8.5.6     - yungsapi 1.20-Forge-4.0.6     - zeta 1.0-24     - zillagersweararmor 1.20.1-1.4.0 [20:25:34] [main/WARN] [mixin/]: Reference map '${mod_id}.refmap.json' for medievalorigins.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'cristellib-forge-refmap.json' for cristellib.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'bloodmagic.refmap.json' for bloodmagic.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:34] [main/WARN] [mixin/]: Reference map 'tfmg.refmap.json' for tfmg.mixins.json could not be read. If this is a development environment you can ignore this message [20:25:35] [main/INFO] [ne.mi.co.Co.placebo/COREMODLOG]: Patching IForgeItemStack#getEnchantmentLevel [20:25:35] [main/INFO] [ne.mi.co.Co.placebo/COREMODLOG]: Patching IForgeItemStack#getEnchantmentLevel [20:25:35] [main/WARN] [mixin/]: Error loading class: mekanism/client/render/entity/RenderFlame (java.lang.ClassNotFoundException: mekanism.client.render.entity.RenderFlame) [20:25:35] [main/WARN] [mixin/]: Error loading class: mekanism/client/render/armor/MekaSuitArmor (java.lang.ClassNotFoundException: mekanism.client.render.armor.MekaSuitArmor) [20:25:35] [main/WARN] [mixin/]: Error loading class: dev/tr7zw/skinlayers/SkinUtil (java.lang.ClassNotFoundException: dev.tr7zw.skinlayers.SkinUtil) [20:25:35] [main/WARN] [mixin/]: @Mixin target dev.tr7zw.skinlayers.SkinUtil was not found mixins.epicfight.json:SkinLayer3DMixinSkinUtil [20:25:35] [main/WARN] [mixin/]: Error loading class: dev/tr7zw/skinlayers/versionless/render/CustomModelPart (java.lang.ClassNotFoundException: dev.tr7zw.skinlayers.versionless.render.CustomModelPart) [20:25:35] [main/WARN] [mixin/]: @Mixin target dev.tr7zw.skinlayers.versionless.render.CustomModelPart was not found mixins.epicfight.json:SkinLayer3DMixinCustomModelPart [20:25:35] [main/WARN] [mixin/]: Error loading class: dev/tr7zw/skinlayers/versionless/render/CustomizableCube (java.lang.ClassNotFoundException: dev.tr7zw.skinlayers.versionless.render.CustomizableCube) [20:25:35] [main/WARN] [mixin/]: @Mixin target dev.tr7zw.skinlayers.versionless.render.CustomizableCube was not found mixins.epicfight.json:SkinLayer3DMixinCustomizableCubeWrapper$SkinLayer3DMixinCustomModelCube [20:25:35] [main/WARN] [mixin/]: Error loading class: de/teamlapen/vampirism/client/renderer/entity/layers/VampirePlayerHeadLayer (java.lang.ClassNotFoundException: de.teamlapen.vampirism.client.renderer.entity.layers.VampirePlayerHeadLayer) [20:25:35] [main/WARN] [mixin/]: @Mixin target de.teamlapen.vampirism.client.renderer.entity.layers.VampirePlayerHeadLayer was not found mixins.epicfight.json:VampirismMixinVampirePlayerHeadLayer [20:25:35] [main/WARN] [mixin/]: Error loading class: de/teamlapen/werewolves/client/render/layer/HumanWerewolfLayer (java.lang.ClassNotFoundException: de.teamlapen.werewolves.client.render.layer.HumanWerewolfLayer) [20:25:35] [main/WARN] [mixin/]: @Mixin target de.teamlapen.werewolves.client.render.layer.HumanWerewolfLayer was not found mixins.epicfight.json:WerewolvesMixinHumanWerewolfLayer [20:25:36] [main/WARN] [mixin/]: Error loading class: com/legacy/lost_aether/entity/AerwhaleKingEntity (java.lang.ClassNotFoundException: com.legacy.lost_aether.entity.AerwhaleKingEntity) [20:25:36] [main/WARN] [mixin/]: Error loading class: mezz/modnametooltip/TooltipEventHandler (java.lang.ClassNotFoundException: mezz.modnametooltip.TooltipEventHandler) [20:25:36] [main/WARN] [mixin/]: Error loading class: me/shedaniel/rei/impl/client/ClientHelperImpl (java.lang.ClassNotFoundException: me.shedaniel.rei.impl.client.ClientHelperImpl) [20:25:36] [main/WARN] [mixin/]: Error loading class: noobanidus/mods/lootr/config/ConfigManager (java.lang.ClassNotFoundException: noobanidus.mods.lootr.config.ConfigManager) [20:25:36] [main/WARN] [mixin/]: Error loading class: dan200/computercraft/shared/integration/MoreRedIntegration (java.lang.ClassNotFoundException: dan200.computercraft.shared.integration.MoreRedIntegration) [20:25:36] [main/WARN] [mixin/]: @Mixin target dan200.computercraft.shared.integration.MoreRedIntegration was not found create_central_kitchen.mixins.json:common.computercraft.MoreRedIntegrationMixin [20:25:36] [main/WARN] [mixin/]: Error loading class: com/sammy/minersdelight/content/block/copper_pot/CopperPotBlockEntity (java.lang.ClassNotFoundException: com.sammy.minersdelight.content.block.copper_pot.CopperPotBlockEntity) [20:25:36] [main/WARN] [mixin/]: @Mixin target com.sammy.minersdelight.content.block.copper_pot.CopperPotBlockEntity was not found create_central_kitchen.mixins.json:common.minersdelight.CopperPotBlockEntityMixin [20:25:36] [main/WARN] [mixin/]: Error loading class: com/sammy/minersdelight/content/block/sticky_basket/StickyBasketBlockEntity (java.lang.ClassNotFoundException: com.sammy.minersdelight.content.block.sticky_basket.StickyBasketBlockEntity) [20:25:36] [main/WARN] [mixin/]: @Mixin target com.sammy.minersdelight.content.block.sticky_basket.StickyBasketBlockEntity was not found create_central_kitchen.mixins.json:common.minersdelight.StickyBasketBlockEntityAccessor [20:25:36] [main/WARN] [mixin/]: Error loading class: com/sammy/minersdelight/content/block/sticky_basket/StickyBasketBlockEntity (java.lang.ClassNotFoundException: com.sammy.minersdelight.content.block.sticky_basket.StickyBasketBlockEntity) [20:25:36] [main/WARN] [mixin/]: @Mixin target com.sammy.minersdelight.content.block.sticky_basket.StickyBasketBlockEntity was not found create_central_kitchen.mixins.json:common.minersdelight.StickyBasketBlockEntityMixin [20:25:36] [main/WARN] [mixin/]: Error loading class: net/orcinus/overweightfarming/blocks/CropFullBlock (java.lang.ClassNotFoundException: net.orcinus.overweightfarming.blocks.CropFullBlock) [20:25:36] [main/WARN] [mixin/]: @Mixin target net.orcinus.overweightfarming.blocks.CropFullBlock was not found create_central_kitchen.mixins.json:common.overweightfarming.CropFullBlockMixin [20:25:37] [main/INFO] [MixinExtras|Service/]: Initializing MixinExtras via com.llamalad7.mixinextras.service.MixinExtrasServiceImpl(version=0.4.0). [20:25:38] [main/INFO] [ne.mi.co.Co.placebo/COREMODLOG]: Patching IForgeItemStack#getEnchantmentLevel [20:25:38] [main/INFO] [ne.mi.co.Co.placebo/COREMODLOG]: Patching IForgeItemStack#getEnchantmentLevel [20:25:39] [main/INFO] [ne.mi.co.Co.attributeslib/COREMODLOG]: Patching EffectRenderingInventoryScreen#renderEffects [20:25:39] [main/INFO] [ne.mi.co.Co.attributeslib/COREMODLOG]: Patching EffectRenderingInventoryScreen#renderEffects [20:25:40] [pool-7-thread-1/INFO] [ne.mi.co.Co.placebo/COREMODLOG]: Patching IForgeItemStack#getEnchantmentLevel [20:25:40] [pool-7-thread-1/INFO] [ne.mi.co.Co.placebo/COREMODLOG]: Patching IForgeItemStack#getEnchantmentLevel [20:25:40] [pool-7-thread-1/WARN] [mixin/]: @Final field f_31427_:[I in mixins.epicfight.json:MixinWitherBoss should be final [20:25:40] [pool-7-thread-1/WARN] [mixin/]: @Final field f_31428_:[I in mixins.epicfight.json:MixinWitherBoss should be final [20:25:41] [Datafixer Bootstrap/INFO] [mojang/DataFixerBuilder]: 188 Datafixer optimizations took 107 milliseconds [20:25:42] [pool-7-thread-1/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.LivingEntity from class yesman.epicfight.world.capabilities.entitypatch.LivingEntityPatch [20:25:42] [pool-7-thread-1/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.LivingEntity from class yesman.epicfight.world.capabilities.entitypatch.LivingEntityPatch [20:25:42] [pool-7-thread-1/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.LivingEntity from class yesman.epicfight.world.capabilities.entitypatch.LivingEntityPatch [20:25:42] [pool-7-thread-1/WARN] [minecraft/SynchedEntityData]: defineId called for: class net.minecraft.world.entity.LivingEntity from class yesman.epicfight.world.capabilities.entitypatch.LivingEntityPatch [20:25:42] [pool-7-thread-1/WARN] [mixin/]: Method overwrite conflict for scheduleRandomTick in corgilib-common.mixins.json:chunk.MixinChunkAccess, previously written by dev.corgitaco.ohthetreesyoullgrow.mixin.chunk.MixinChunkAccess. Skipping method. [20:25:42] [pool-7-thread-1/WARN] [mixin/]: Method overwrite conflict for getScheduledRandomTicks in corgilib-common.mixins.json:chunk.MixinChunkAccess, previously written by dev.corgitaco.ohthetreesyoullgrow.mixin.chunk.MixinChunkAccess. Skipping method. [20:25:43] [pool-7-thread-1/WARN] [mixin/]: Mixin alexscaves.mixins.json:SwampHutPieceMixin has multiple constructors, (Lnet/minecraft/world/level/levelgen/structure/pieces/StructurePieceType;IIIIIILnet/minecraft/core/Direction;)V was selected [20:25:43] [pool-7-thread-1/INFO] [ne.mi.co.Co.exdeorum/COREMODLOG]: Successfully patched End City generation for void worlds [20:25:43] [Render thread/WARN] [mixin/]: Error loading class: net/caffeinemc/mods/sodium/api/memory/MemoryIntrinsics (java.lang.ClassNotFoundException: net.caffeinemc.mods.sodium.api.memory.MemoryIntrinsics) Exception in thread "Render thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:32)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.run(Launcher.java:108)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.Launcher.main(Launcher.java:78)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23)     at [email protected]/cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) Caused by: java.lang.reflect.InvocationTargetException     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)     at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.base/java.lang.reflect.Method.invoke(Method.java:568)     at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111)     at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.targets.CommonLaunchHandler.clientService(CommonLaunchHandler.java:99)     at MC-BOOTSTRAP/[email protected]/net.minecraftforge.fml.loading.targets.CommonClientLaunchHandler.lambda$makeService$0(CommonClientLaunchHandler.java:25)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30)     ... 7 more Caused by: java.lang.NoClassDefFoundError: Could not initialize class com.mojang.blaze3d.systems.RenderSystem     at TRANSFORMER/[email protected]/net.minecraft.SystemReport.m_143522_(SystemReport.java:66)     at TRANSFORMER/[email protected]/net.minecraft.client.Minecraft.m_167850_(Minecraft.java:2339)     at TRANSFORMER/[email protected]/net.minecraft.client.Minecraft.m_167872_(Minecraft.java:2332)     at TRANSFORMER/[email protected]/net.minecraft.client.main.Main.main(Main.java:191)     ... 15 more Caused by: java.lang.ExceptionInInitializerError: Exception org.spongepowered.asm.mixin.transformer.throwables.MixinTransformerError: An unexpected critical error was encountered [in thread "Render thread"]     at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:392)     at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:250)     at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.service.modlauncher.MixinTransformationHandler.processClass(MixinTransformationHandler.java:131)     at MC-BOOTSTRAP/org.spongepowered.mixin/org.spongepowered.asm.launch.MixinLaunchPluginLegacy.processClass(MixinLaunchPluginLegacy.java:131)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.serviceapi.ILaunchPluginService.processClassWithFlags(ILaunchPluginService.java:156)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120)     at MC-BOOTSTRAP/[email protected]/cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50)     at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:113)     at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.lambda$findClass$15(ModuleClassLoader.java:219)     at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:229)     at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:219)     at cpw.mods.securejarhandler/cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:135)     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525)     at TRANSFORMER/[email protected]/com.mojang.blaze3d.vertex.Tesselator.<init>(Tesselator.java:19)     at TRANSFORMER/[email protected]/com.mojang.blaze3d.vertex.Tesselator.<init>(Tesselator.java:23)     at TRANSFORMER/[email protected]/com.mojang.blaze3d.vertex.Tesselator.<clinit>(Tesselator.java:11)     at TRANSFORMER/[email protected]/com.mojang.blaze3d.systems.RenderSystem.<clinit>(RenderSystem.java:50)     at TRANSFORMER/[email protected]/net.minecraft.client.main.Main.main(Main.java:180)     ... 15 more
    • This is a minecraft forge forum, as explained in the FAQ (https://forums.minecraftforge.net/topic/125488-rules-and-frequently-asked-questions-faq/) and it appears you are using fabric. You would get more/better help posting wherever Fabric support is given.
    • Please read the FAQ (https://forums.minecraftforge.net/topic/125488-rules-and-frequently-asked-questions-faq/) and post logs as described there.  
    • Please read the FAQ (https://forums.minecraftforge.net/topic/125488-rules-and-frequently-asked-questions-faq/) and post logs as described. Without them, there is no way to know what is going on.  
  • Topics

×
×
  • Create New...

Important Information

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