Jump to content

What does processResources do?


Cydhra

Recommended Posts

I am developing a mod within IntelliJ Ultimate and I'm using Kotlin instead of Java. This comes with various problems, because Forge and ForgeGradle are vastly undocumented. To solve one of my problems, I tried to move the resource output into the classes output within the IDE. Forge seems unable to load resources using the ResourceLocation system (again, undocumented), if the resources do not reside alongside the classes in the filesystem. If I try to load a resource using the classloader:
 

SomeClass.class.getResourceAsStream("/assets/<mod.id>/textures/items/someTexture.png")

 

the resource is found, so it is not a problem to find resources in general. Just forge is unable to find them, as long as they are not in the same output folder as the JVM class files.
But when I tried to move the output resources into the compilation output folder like this:

 

sourceSets {
    main {
        output.resourcesDir = output.classesDirs.find { it.getPath().contains("kotlin") }
    }
}

 

then creating the reobfuscated jar file (using the reobf task of forge-gradle) failed: (the assets are found this way, if the client is started within the IDE)

 

Error while building FML annotations cache: duplicate entry: assets/<mod.id>/blockstates/someFile.json
java.util.zip.ZipException: duplicate entry: assets/<mod.id>/blockstates/someFile.json
	at java.util.zip.ZipOutputStream.putNextEntry(ZipOutputStream.java:232)
	at net.minecraftforge.gradle.user.TaskExtractAnnotations.processJar(TaskExtractAnnotations.java:96)
	at net.minecraftforge.gradle.user.TaskExtractAnnotations.doTask(TaskExtractAnnotations.java:69)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	// 133 further calls omitted 

 

However, the build output folders only contained one version of the resource files, so I suspect the gradle processResources task to be responsible. It is, again, undocumented and I have no idea what the task is actually doing (besides expanding some variables within the mcmod.info file, if configured that way. I tried to omit the task configuration and I tried to reconfigure the task to exclude all resources. The result of reobfJar was exactly the same. 

So: What does processResources do, why can't I relocate the resources output of gradle and why do I need to do that (so resources can be found) in the first place?

 

Edited by Cydhra
Link to comment
Share on other sites

37 minutes ago, Cydhra said:

I'm using Kotlin instead of Java

Launch the nukes.

 

39 minutes ago, Cydhra said:

Forge seems unable to load resources using the ResourceLocation

Please elaborate. What happened? What is the error message?

It would be helpful if you could post your code with ResourceLocation that caused the problem.

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

22 minutes ago, DavidM said:

Please elaborate. What happened? What is the error message?

It would be helpful if you could post your code with ResourceLocation that caused the problem.

Oh well, that is really easy: You know what happens, when you fail to create a blockstate file when adding a new block? The loader will complain and the block model will fail to display ingame, because your blockstate is missing. That is exactly what happens (only with all the assets, not just one), if I do not copy the resources into the compilation code output.

So I do not really have any code using ResourceLocations, because the default model loading etc is done by forge and already not working.


Here is an excerpt of the error message, if you still need it:

[13:41:47] [Client thread/ERROR] [FML]: Exception loading blockstate for the variant <mod.id>:<some.block>#facing=west: 
java.lang.Exception: Could not load model definition for variant <mod.id>:<some.block>
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:269) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadBlock(ModelBakery.java:121) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.loadBlocks(ModelLoader.java:223) ~[ModelLoader.class:?]
	at net.minecraftforge.client.model.ModelLoader.setupModelRegistry(ModelLoader.java:150) ~[ModelLoader.class:?]
	at net.minecraft.client.renderer.block.model.ModelManager.onResourceManagerReload(ModelManager.java:28) [ModelManager.class:?]
	at net.minecraft.client.resources.SimpleReloadableResourceManager.registerReloadListener(SimpleReloadableResourceManager.java:132) [SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.Minecraft.init(Minecraft.java:560) [Minecraft.class:?]
	at net.minecraft.client.Minecraft.run(Minecraft.java:422) [Minecraft.class:?]
	at net.minecraft.client.main.Main.main(Main.java:118) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_191]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_191]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_191]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_191]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_191]
	at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:97) [start/:?]
	at GradleStart.main(GradleStart.java:25) [start/:?]
Caused by: java.lang.RuntimeException: Encountered an exception when loading model definition of model <mod.id>:blockstates/<some.block>.json
	at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:228) ~[ModelBakery.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?]
	... 20 more
Caused by: java.io.FileNotFoundException: <mod.id>:blockstates/<some.block>.json
	at net.minecraft.client.resources.SimpleReloadableResourceManager.getAllResources(SimpleReloadableResourceManager.java:87) ~[SimpleReloadableResourceManager.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.loadMultipartMBD(ModelBakery.java:221) ~[ModelBakery.class:?]
	at net.minecraft.client.renderer.block.model.ModelBakery.getModelBlockDefinition(ModelBakery.java:208) ~[ModelBakery.class:?]
	at net.minecraftforge.client.model.ModelLoader.getModelBlockDefinition(ModelLoader.java:265) ~[ModelLoader.class:?]
	... 20 more
[13:41:47] [Client thread/FATAL] [FML]: Suppressed additional 130 model loading errors for domain <mod.id>

 

actually I was mixing a few things up: It is not a problem solely with the ResourceLocations. Its a problem with the resource loading system in general, I just used the ResourceLocations to reference this system in general. Sorry for the confusion.

Edited by Cydhra
disabled syntax hightlighting
Link to comment
Share on other sites

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

    • Honestly i gave up on hiring a online hacker due to the bad experienced i always encounter with them but this time i was really in urgent need for a legit one cos i needed to be sure what my partners plan is as he is avoiding me and always hiding hen making calls couple with his late night movement. i was so scared so i got a helping hand from a friend Hyung who introduced me with this expert hacker, i was scared and lost trust in him at first but after giving him a try in couple of hours i got access to my partner phone and saw his call recordings, hidden text messages, social accounts , hidden photos and more. Thank you [ Hacker11tech @ gm ail . c om ] for been legit.
    • Hello I'm looking for help launching minecraft through curseforge. I've scoured the Internet and can't seem to find anyone with a solution to my specific situation/fix that I haven't tried. I'll post the Curseforge debug Logs below. But basically I'm on a Laptop (Lenovo Legion Slim 7 2021) And the people I've seen with the most similar scenario and found a fix they always had an AMD graphics card and were missing the correct drivers, Well i have the Nvidia geforce RTX 3060 Laptop version with all the most updated drivers, I've reinstalled the drivers so that doesn't seem to me the problem. Also, minecraft will launch in vanilla and through another modloader called modrinth. So it doesn't feel like a Java error either but I don't no how to read this debug page so I'm looking for advice. Please help?!  
    • Hello. Basically I made a custom standalone util library (https://github.com/lolhol/Pathfinder3D) and want to use it with my mod. Although I have done the normal jit pack stuff (basically the tutorial on their website) the Minecraft crashes the second it starts saying that it cannot find the name of a class inside of my library. (When I remove the implement(<my library link thingy>) mc launches normally and does not crash (if I comment out the code that uses the custom lib)). Now then, is there a quick fix for this because all of the other questions that I found on this topic were trying to load another mod (again, not what I’m trying to do). Am I doing something wrong? 
    • Fast Leaf Decay (by olafskiii) Rubidium (by Asek3) Artifacts (by ochotonida) Framework (by MrCrayfish) Max Health Fix (by DarkhaxDev) Embeddium/Rubidium Extras (by Txni) Essential Mod (by SparkUniverse_) Immersive Aircraft [Fabric/Forge] (by Conczin) Cherished Worlds (Fabric/Forge/NeoForge/Quilt) (by TheIllusiveC4) ExpandAbility (by florensie) Sophisticated Core (by P3pp3rF1y) Tinkers' Levelling Addon (by Pyre540) Better Advancements (by way2muchnoise) Immersive Melodies [Fabric/Forge] (by Conczin) Citadel (by sbom_xela) Vampirism - Become a vampire! (by maxanier) FerriteCore ((Neo)Forge) (by malte0811) CoroUtil (by Corosus) Create Big Cannons (by rbasamoyai) Controlling (by Jaredlll08) Cloth Config API (Fabric/Forge/NeoForge) (by shedaniel) Mekanism (by bradyaidanc) BetterF3 (by cominixo) Supplementaries (by MehVahdJukaar) Chest Cavity - Forge Port (by booneldanforever) ConnectedTexturesMod (by tterrag1098) NetherPortalFix (by BlayTheNinth) Spartan Weaponry (by ObliviousSpartan) Charm of Undying (Fabric/Forge/Quilt) (by TheIllusiveC4) Plushie Mod (by Link4real) JourneyMap (by techbrew) Farmer's Delight (by vectorwing) Connectivity[Forge/Fabric] (by someaddon) Create : Misc & Things (by To0pa) Create: Steam 'n' Rails (by IThundxr) Shutup Experimental Settings! (by Corgi_Taco) Alex's Mobs (by sbom_xela) Quark (by Vazkii) Tool Belt (by gigaherz) Just Enough Items (JEI) (by mezz) Bookshelf (by DarkhaxDev) FastWorkbench (by Shadows_of_Fire) Tinkers Construct (by mDiyo) Collective (by Serilum) Inventory HUD+ (by dmitrylovin) Explorer's Compass (by Chaosyr) playerAnimator (by KosmX) Size Devices (by DaFlame_rl) Jade 🔍 (by Snownee) Create Slice & Dice (by possible_triangle) Create Jetpack (by possible_triangle) Carry On (by Tschipp) Moonlight Lib (by MehVahdJukaar) Kotlin for Forge (by thedarkcolour) CraftTweaker (by Jaredlll08) Just Enough Resources (JER) (by way2muchnoise) AI Improvements (by QueenOfMissiles) Patchouli (by Vazkii) Catalogue (by MrCrayfish) Tool Stats (by DarkhaxDev) It Takes a Pillage (by izofar) JEITweaker (by Jaredlll08) Waystones (by BlayTheNinth) Vampires Need Umbrellas (by focamacho) Oculus (by Asek3) Mantle (by mDiyo) Mob Grinding Utils (by vadis365) Chiseled (by freepeopleworking) AutoRegLib (by Vazkii) Mystical Agriculture (by BlakeBr0) Embeddium/Rubidium Dynamic Lights (by Txni) Flywheel (Legacy) (by jozufozu) Builder's Delight (Forge) (by Tynoxs) Apotheosis (by Shadows_of_Fire) What Are They Up To (Watut) (by Corosus) Create: Interiors (by sudolev) FastFurnace (by Shadows_of_Fire) Balm (Forge Edition) (by BlayTheNinth) Clumps (by Jaredlll08) Iris & Oculus Flywheel Compat (by leon_mout) Configured (by MrCrayfish) Tinkers' Expansion (by Insane96) Crafting on a stick (by OfekN_) MrCrayfish's Gun Mod (by MrCrayfish) Create: Crystal Clear (by singularity_cyvack) FTB Library (Forge) (by FTB) AppleSkin (by squeek502) Curios API (Forge/NeoForge) (by TheIllusiveC4) Better Third Person (by Socolio) Caelus API (Forge/NeoForge) (by TheIllusiveC4) Sons Of Sins (by Furti_Two) SwingThroughGrass (by exidex) AttributeFix (by DarkhaxDev) Quests Additions (Forge) (by NaturaSpell) Building Gadgets (by Direwolf20) Enchantment Descriptions (by DarkhaxDev) Skin Layers 3D (Fabric/Forge) (by tr7zw) Bad Wither No Cookie - Reloaded (by Kreezxil) Placebo (by Shadows_of_Fire) FTB Teams (Forge) (by FTB) Mod Name Tooltip (by mezz) Enigmatic Graves (by Quarris) Sophisticated Backpacks (by P3pp3rF1y) GeckoLib (by Gecko) Builders Crafts & Additions (by MRHminer) Immersive Portals (for Forge) (by qouteall) Architectury API (Fabric/Forge/NeoForge) (by shedaniel) Lazy DataFixerUpper(LazyDFU) [FORGE] (by Corgi_Taco) Create Ore Excavation (by tom54541) Tinkers' Rapier (by sz0999312) Mowzie's Mobs (by bobmowzie) Better Combat [Fabric & Forge] (by daedelus_dev) Create Stuff & Additions (by Furti_Two) Cucumber Library (by BlakeBr0) FPS Reducer (by bre2el) Item Filters (by LatvianModder) FTB Quests (Forge) (by FTB) L_Ender 's Cataclysm (by mcl_ender) Starter Kit (by Serilum) Feature NBT Deadlock Be Gone (by telepathicgrunt) Materialis (by RCXcrafter) KleeSlabs (by BlayTheNinth) Pehkui (by Virtuoel) Grappling Hook Mod (by yyonne) Security Craft (by Geforce132) Ars Nouveau (by baileyholl2) Mouse Tweaks (by YaLTeR) Werewolves - Become a Beast! (by Cheaterpaul) Elytra Slot (Fabric/Forge/Quilt) (by TheIllusiveC4) Create (by simibubi) Budschie's Morph Mod (by budschie_) Ore Excavation (by Funwayguy) Create Confectionery (by Furti_Two)
    • Hello, im kind of a newbie on creating mods, and i been trying to make simples mods so far, Right now, i'm creating a mod which detect an specific type of mob and kill it if reach a certain number, by far the mod is detecting the mob and counting them but at the time it reach the limit number, it don't do anything. The Game don't tweak, don't crash, just i't don't run the method i call, which is kill().   public InteractionResultHolder<ItemStack> use(Level pLevel, Player pPlayer, InteractionHand pUsedHand) { final var TotalCows = pLevel.getNearbyEntities(Cow.class, TargetingConditions.forNonCombat(), pPlayer, pPlayer.getBoundingBox().inflate(5)); if(pLevel.isClientSide){ if(pPlayer.getItemInHand(InteractionHand.MAIN_HAND).getItem() == this.asItem()){ if(!TotalCows.isEmpty()){ if(TotalCows.get(0).isAlive()){ TotalCows.get(0).kill(); } }else{ pPlayer.sendSystemMessage(Component.literal("No hay vacas")); } } } The sendSystemMessage is get triggered, and when i change the method .kill() by any other like send a message it got called, can i get some tips, and a clue of what i'm missing
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

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