Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[SOLVED] [1.12] Add loot to mineshaft chests


Dylem
 Share

Recommended Posts

Hey,

 

I saw mineshaft chests loots are located in chests/abandoned_mineshaft.json.

How do I add chests loots ? Is there a way to keep minecraft's base JSON so my mod still works great with other mods ?

Edited by Dylem
Link to comment
Share on other sites

LootTableLoadEvent. Uses my LootUtils class.

  • Like 1

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.

Link to comment
Share on other sites

14 minutes ago, Dylem said:

Thanks ! Will try to write my own once I understand what you did. 

Essentially:

When a table is loaded and its the table I'm interested in modifying:

 - remove entries I don't want

 - add entries I do want

 

Entries though, are complicated. Two thirds of that code is merely having to rebuild the desired conditional parameters involved with the loot table entries or boilerplate to aid in such.

 

i.e. this is what the loot table for beef from a cow looks like (there's also a leather entry, so this is only half of the cow.json file inside assets.minecraft.loot_tables.entities):

 

        {
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:beef",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 3
                            }
                        },
                        {
                            "function": "furnace_smelt",
                            "conditions": [
                                {
                                    "condition": "entity_properties",
                                    "entity": "this",
                                    "properties": {
                                        "on_fire": true
                                    }
                                }
                            ]
                        },
                        {
                            "function": "looting_enchant",
                            "count": {
                                "min": 0,
                                "max": 1
                            }
                        }
                    ]
                }
            ]
        }

 

So when I override the quantities involved I've got to recreate all of that.  If you look at this section here, you'll see how that's handled. 318 removes the existing entry, 319 begins the declaration for the new entry. 322-326 handle the "furnace_smelt" functionality. 327-333 handles a custom function (my mod makes animals die of old age, and in such a case, they shouldn't drop any items on death). I did not include a replacement for the looting enchantment; I should go back and add that (an oversight on my part).

 

Fortunately, you're doing something a lot simpler. Downside, I don't know if my LootUtils has all of the features needed. I've only created the methods that do what I need to do. Looks like you would need a way to add an entry to an existing list of entries, assuming its possible.

  • Like 1

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.

Link to comment
Share on other sites

If you want to override a vanilla loot table you can also make your own loot table (wich is a copy of the vanilla one + the items of your mod) and then in that event set your loot table as the table of the event. For example, i do this to override the vanilla mineshaft chest loot table. I create my own mineshaft chest loot table by doing this

public static ResourceLocation CHESTS_ABANDONED_MINESHAFT;
CHESTS_ABANDONED_MINESHAFT =  LootTableList.register(new ResourceLocation(MW.MODID, "abandoned_mineshaft"));


and i call this from the init method in main mod file.

This will assume that in your assets folder you have a folder called "loot_tables" and inside that folder you have the loot table you're looking for (in this case "abandoned_mineshaft"). That will be the replaced loot table (so the game will load this instead of the vanilla one). For example look at this loot table

{
    "pools": [
        {
            "name": "abandoned_mineshaft_1",
            "rolls": 1,
            "entries": [
                {
                    "type": "item",
                    "entryName": "golden_apple",
                    "name": "minecraft:golden_apple",
                    "weight": 20
                },
                {
                    "type": "item",
                    "entryName": "enchanted_golden_apple",
                    "name": "minecraft:golden_apple",
                    "weight": 1,
                    "functions": [
                        {
                            "function": "set_data",
                            "data": 1
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:name_tag",
                    "weight": 30
                },
                {
                    "type": "item",
                    "name": "minecraft:book",
                    "weight": 10,
                    "functions": [
                        {
                            "function": "enchant_randomly"
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "minecraft:iron_pickaxe",
                    "weight": 5
                },
                {
                    "type": "item",
                    "name": "mw:ruby",
                    "weight": 20,
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 4
                            }
                        }
                    ]
                },
                {
                    "type": "item",
                    "name": "mw:sapphire",
                    "weight": 20,
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 4
                            }
                        }
                    ]
                },
                {
                    "type": "empty",
                    "weight": 5
                }
            ]
        },
        {
            "name": "abandoned_mineshaft_2",
            "rolls": {
                "min": 2,
                "max": 4
            },
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:iron_ingot",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 5
                            }
                        }
                    ],
                    "weight": 10
                },
                {
                    "type": "item",
                    "name": "minecraft:gold_ingot",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 3
                            }
                        }
                    ],
                    "weight": 5
                },
                {
                    "type": "item",
                    "name": "minecraft:redstone",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 4,
                                "max": 9
                            }
                        }
                    ],
                    "weight": 5
                },
                {
                    "type": "item",
                    "name": "minecraft:dye",
                    "functions": [
                        {
                            "function": "set_data",
                            "data": 4
                        },
                        {
                            "function": "set_count",
                            "count": {
                                "min": 4,
                                "max": 9
                            }
                        }
                    ],
                    "weight": 5
                },
                {
                    "type": "item",
                    "name": "minecraft:diamond",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 2
                            }
                        }
                    ],
                    "weight": 3
                },
                {
                    "type": "item",
                    "name": "minecraft:coal",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 3,
                                "max": 8
                            }
                        }
                    ],
                    "weight": 10
                },
                {
                    "type": "item",
                    "name": "minecraft:bread",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 3
                            }
                        }
                    ],
                    "weight": 15
                },
                {
                    "type": "item",
                    "name": "minecraft:melon_seeds",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 2,
                                "max": 4
                            }
                        }
                    ],
                    "weight": 10
                },
                {
                    "type": "item",
                    "name": "minecraft:pumpkin_seeds",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 2,
                                "max": 4
                            }
                        }
                    ],
                    "weight": 10
                },
                {
                    "type": "item",
                    "name": "minecraft:beetroot_seeds",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 2,
                                "max": 4
                            }
                        }
                    ],
                    "weight": 10
                }
            ]
        },
        {
            "name": "abandoned_mineshaft_3",
            "rolls": 3,
            "entries": [
                {
                    "type": "item",
                    "name": "minecraft:rail",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 4,
                                "max": 8
                            }
                        }
                    ],
                    "weight": 20
                },
                {
                    "type": "item",
                    "name": "minecraft:golden_rail",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 4
                            }
                        }
                    ],
                    "weight": 5
                },
                {
                    "type": "item",
                    "name": "minecraft:detector_rail",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 4
                            }
                        }
                    ],
                    "weight": 5
                },
                {
                    "type": "item",
                    "name": "minecraft:activator_rail",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 4
                            }
                        }
                    ],
                    "weight": 5
                },
                {
                    "type": "item",
                    "name": "minecraft:torch",
                    "functions": [
                        {
                            "function": "set_count",
                            "count": {
                                "min": 1,
                                "max": 16
                            }
                        }
                    ],
                    "weight": 15
                }
            ]
        }
    ]
}



This is the vanilla abandoned_mineshaft loot table plus some rolls for my mod items, so in game in mineshafts i can find mod items too in chests. Finally, to load this table instead of the vanilla one you'll have to catch the LootTableLoadEvent and set the table to your own table.

public void onLootTableLoad(LootTableLoadEvent event) {
        if(event.getName().equals(LootTableList.CHESTS_ABANDONED_MINESHAFT)) {
            event.setTable(event.getLootTableManager().getLootTableFromLocation(MWLootTables.CHESTS_ABANDONED_MINESHAFT));
        }
}



In game, when you'll open a mineshaft chest it will load your loot table (the one showed up) instead of the vanilla one and so yuour mod items will have a chance to be in that cehst. Hope this is clear :)

  • Like 1

Don't blame me if i always ask for your help. I just want to learn to be better :)

Link to comment
Share on other sites

Thanks guys a lot, you were both very helpful. Made it, that wasn't that hard finally :)

Note : I put a random attribute so I don't override all minecraft loot tables and it's still compatible with other mods !

Edited by Dylem
Link to comment
Share on other sites

Just adding a comment to say that I found a very easy way to do it.

Simply :

public static LootEntry entry = new LootEntryItem(
			StyxItems.ANCIENT_COMPASS, 100, 50, new LootFunction[0], new LootCondition[0], "styx:loot_ancient_compass");
	
	@SubscribeEvent
	public void onLootTableLoad(final LootTableLoadEvent event) {
		
            if(event.getName().equals(LootTableList.CHESTS_ABANDONED_MINESHAFT)) {
        	
                event.getTable().getPool("main").addEntry(entry);
            }
	}

 

That works surprisingly well and I don't have to override anything from Minecraft files.

Edited by Dylem
Link to comment
Share on other sites

Nice. I figured there was a way like that, I just didn't feel like diving into the loot table code to see what was public and modifiable. 

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.

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
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Thanks for the feedback. But it seems there is not really an easy way for this, most of the code is hard-coded and could not be accessed directly. 😞 I worked around this by using the "RenderHandEvent" and "RenderPlayerEvent" to create a dedicated render for my crossbow item.
    • I'm wondering how to go about creating a block that is essentially an Ender Chest (its contents are the same regardless of which chest you check), but where any player in that world can see the contents of the Ender Chest. I was thinking of modifying the saved data for a world, but I'm struggling to understand how that even works. Are there any tutorials out there on tools I can use to work on this sort of problem?  EDIT: I just found this post: is this about what I should be looking at for 1.16.5?    
    • Hey guys I have created a mod that assigns levels to mobs and scales them up using capabilities, everything works great but because of the recent changes to capabilities I am unable to find examples on how to save the level of my mobs so that it remains the same if I restart the server. I will upload all my files relating to the capability and hope you guys can lead me in the right direction   package com.chickenwand3.rpgmod.core.capabilities.entity; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.CapabilityInject; import net.minecraftforge.common.capabilities.CapabilityManager; @SuppressWarnings("removal") public class CapabilityMobLevel { @CapabilityInject(MobLevel.class) public static Capability<MobLevel> MOB_LEVEL_CAPABILITY = null; public static void register() { CapabilityManager.INSTANCE.register(MobLevel.class); } } package com.chickenwand3.rpgmod.core.capabilities.entity; public class DefaultMobLevel implements MobLevel { public int mobLevel; public float mobMaxHealth; public float mobCurrentHealth; public boolean crazy; public boolean isCrazy() { return crazy; } public float getMaxHealth() { return mobMaxHealth; } public float getCurrentHealth() { return mobCurrentHealth; } } package com.chickenwand3.rpgmod.core.capabilities.entity; public interface MobLevel { } package com.chickenwand3.rpgmod.core.capabilities.entity; import com.chickenwand3.rpgmod.RPGMod; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.monster.Zombie; import net.minecraft.world.item.enchantment.Enchantments; import net.minecraftforge.event.AttachCapabilitiesEvent; import net.minecraftforge.event.entity.EntityJoinWorldEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber(modid = RPGMod.MODID, bus = Mod.EventBusSubscriber.Bus.FORGE) public class MobLevelEventHandler { @SubscribeEvent public static void onAttachCapabilitiesEvent(AttachCapabilitiesEvent<Entity> event) { if (event.getObject() instanceof Mob && !event.getObject().getCommandSenderWorld().isClientSide) { MobLevelProvider providerMobLevel = new MobLevelProvider(); event.addCapability(new ResourceLocation(RPGMod.MODID, "moblevel"), providerMobLevel); event.addListener(providerMobLevel::invalidate); } } @SubscribeEvent public static void OnSpawn(final EntityJoinWorldEvent event) { if (event.getEntity()instanceof Mob target && !event.getWorld().isClientSide) { target.getCapability(CapabilityMobLevel.MOB_LEVEL_CAPABILITY).ifPresent(mobLevel -> { DefaultMobLevel actualMobLevel = (DefaultMobLevel) mobLevel; actualMobLevel.mobLevel = (randomizeMobLevel()); if (superCrazy(actualMobLevel.mobLevel)) { actualMobLevel.crazy = true; } if (actualMobLevel.crazy) { if (!target.getMainHandItem().isEmpty()) { target.getMainHandItem().enchant(Enchantments.FIRE_ASPECT, 1); } if (event.getEntity()instanceof Zombie zombie) { zombie.getAttribute(Attributes.SPAWN_REINFORCEMENTS_CHANCE).setBaseValue(0.99D); } System.out.println("Super Crazy " + target.getName() + " has spawned!"); } actualMobLevel.mobMaxHealth = (target.getMaxHealth() * actualMobLevel.mobLevel * 2); actualMobLevel.mobCurrentHealth = actualMobLevel.mobMaxHealth; target.getAttribute(Attributes.MOVEMENT_SPEED) .setBaseValue(target.getAttributeValue(Attributes.MOVEMENT_SPEED) * (1 + (actualMobLevel.mobLevel - 1.0) / 10.0)); if (target.getAttribute(Attributes.ATTACK_DAMAGE) != null) { target.getAttribute(Attributes.ATTACK_DAMAGE) .setBaseValue(target.getAttributeValue(Attributes.ATTACK_DAMAGE) * (1 + (actualMobLevel.mobLevel - 1.0) / 2.0)); } }); } } private static int randomizeMobLevel() { boolean roll = true; int level = 1; while (roll) { if (Math.random() > .5) { level += 1; roll = true; } else { roll = false; } } return level; } private static boolean superCrazy(int level) { boolean result = false; if (level >= 5) { if (Math.random() < .25) { result = true; } else result = false; } return result; } } package com.chickenwand3.rpgmod.core.capabilities.entity; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.common.capabilities.ICapabilitySerializable; import net.minecraftforge.common.util.LazyOptional; import javax.annotation.Nonnull; import javax.annotation.Nullable; public class MobLevelProvider implements ICapabilitySerializable<CompoundTag> { private final DefaultMobLevel mobLevel = new DefaultMobLevel(); private final LazyOptional<MobLevel> mobLevelOptional = LazyOptional.of(() -> mobLevel); public void invalidate() { mobLevelOptional.invalidate(); } @Nonnull @Override public <T> LazyOptional<T> getCapability(@Nonnull Capability<T> cap, @Nullable Direction side) { return mobLevelOptional.cast(); } @Override public CompoundTag serializeNBT() { if (CapabilityMobLevel.MOB_LEVEL_CAPABILITY == null) { return new CompoundTag(); } else { CompoundTag compoundNBT = new CompoundTag(); compoundNBT.putInt("mobLevel", mobLevel.mobLevel); compoundNBT.putFloat("mobCurrentHealth", mobLevel.mobCurrentHealth); compoundNBT.putFloat("mobMaxHealth", mobLevel.mobMaxHealth); compoundNBT.putBoolean("crazy", mobLevel.crazy); return compoundNBT; } } @Override public void deserializeNBT(CompoundTag nbt) { if (CapabilityMobLevel.MOB_LEVEL_CAPABILITY != null) { mobLevel.mobLevel = (nbt.getInt("mobLevel")); float mobCurrentHealth = nbt.getFloat("mobCurrentHealth"); mobLevel.mobCurrentHealth = (mobCurrentHealth); float mobMaxHealth = nbt.getFloat("mobMaxHealth"); mobLevel.mobMaxHealth = (mobMaxHealth); boolean crazy = nbt.getBoolean("crazy"); mobLevel.crazy = (crazy); } } }  
    • Trying to install forge on Debian 11 (bullseye). I ran java -jar forge-1.18-38.0.4-installer.jar in the terminal, and that part seemed to work fine. I did the install client, and it was fine until the building processors step. It stopped and gave the following error message: Failed to run processor: java.lang.RuntimeException:Could not delete output file: home/[user]/.minecraft/libraries/de/oceanlabs/mcp/mcp_config/1.18-20211130.085255/mcp_config-1.18-20211130.085255-mappings.txt My dad did the same thing on his computer without complications. Any help would be much appreciated. Below is the installation log: JVM info: Debian - 17.0.1 - 17.0.1+12-Debian-1deb11u2 java.net.preferIPv4Stack=true Found java version 17.0.1 Extracting json Considering minecraft client jar Downloading libraries Found 0 additional library directories Considering library cpw.mods:securejarhandler:0.9.54 File exists: Checksum validated. Considering library org.ow2.asm:asm:9.1 File exists: Checksum validated. Considering library org.ow2.asm:asm-commons:9.1 File exists: Checksum validated. Considering library org.ow2.asm:asm-tree:9.1 File exists: Checksum validated. Considering library org.ow2.asm:asm-util:9.1 File exists: Checksum validated. Considering library org.ow2.asm:asm-analysis:9.1 File exists: Checksum validated. Considering library net.minecraftforge:accesstransformers:8.0.4 File exists: Checksum validated. Considering library org.antlr:antlr4-runtime:4.9.1 File exists: Checksum validated. Considering library net.minecraftforge:eventbus:5.0.3 File exists: Checksum validated. Considering library net.minecraftforge:forgespi:4.0.10 File exists: Checksum validated. Considering library net.minecraftforge:coremods:5.0.1 File exists: Checksum validated. Considering library cpw.mods:modlauncher:9.0.7 File exists: Checksum validated. Considering library net.minecraftforge:unsafe:0.2.0 File exists: Checksum validated. Considering library com.electronwill.night-config:core:3.6.4 File exists: Checksum validated. Considering library com.electronwill.night-config:toml:3.6.4 File exists: Checksum validated. Considering library org.apache.maven:maven-artifact:3.6.3 File exists: Checksum validated. Considering library org.apache.commons:commons-lang3:3.12.0 File exists: Checksum validated. Considering library net.jodah:typetools:0.8.3 File exists: Checksum validated. Considering library org.apache.logging.log4j:log4j-api:2.14.1 File exists: Checksum validated. Considering library org.apache.logging.log4j:log4j-core:2.14.1 File exists: Checksum validated. Considering library net.minecrell:terminalconsoleappender:1.2.0 File exists: Checksum validated. Considering library org.jline:jline-reader:3.12.1 File exists: Checksum validated. Considering library org.jline:jline-terminal:3.12.1 File exists: Checksum validated. Considering library net.sf.jopt-simple:jopt-simple:5.0.4 File exists: Checksum validated. Considering library org.openjdk.nashorn:nashorn-core:15.3 File exists: Checksum validated. Considering library com.google.guava:guava:31.0.1-jre File exists: Checksum validated. Considering library com.google.code.gson:gson:2.8.8 File exists: Checksum validated. Considering library cpw.mods:bootstraplauncher:0.1.17 File exists: Checksum validated. Considering library net.minecraftforge:fmlloader:1.18-38.0.4 File exists: Checksum validated. Considering library com.github.jponge:lzma-java:1.3 File exists: Checksum validated. Considering library com.google.code.findbugs:jsr305:3.0.2 File exists: Checksum validated. Considering library com.google.code.gson:gson:2.8.7 File exists: Checksum validated. Considering library com.google.errorprone:error_prone_annotations:2.1.3 File exists: Checksum validated. Considering library com.google.guava:guava:20.0 File exists: Checksum validated. Considering library com.google.guava:guava:25.1-jre File exists: Checksum validated. Considering library com.google.j2objc:j2objc-annotations:1.1 File exists: Checksum validated. Considering library com.nothome:javaxdelta:2.0.1 File exists: Checksum validated. Considering library com.opencsv:opencsv:4.4 File exists: Checksum validated. Considering library commons-beanutils:commons-beanutils:1.9.3 File exists: Checksum validated. Considering library commons-collections:commons-collections:3.2.2 File exists: Checksum validated. Considering library commons-io:commons-io:2.4 File exists: Checksum validated. Considering library commons-logging:commons-logging:1.2 File exists: Checksum validated. Considering library de.oceanlabs.mcp:mcp_config:1.18-20211130.085255@zip File exists: Checksum validated. Considering library de.siegmar:fastcsv:2.0.0 File exists: Checksum validated. Considering library net.md-5:SpecialSource:1.10.0 File exists: Checksum validated. Considering library net.minecraftforge:ForgeAutoRenamingTool:0.1.17:all File exists: Checksum validated. Considering library net.minecraftforge:binarypatcher:1.0.12 File exists: Checksum validated. Considering library net.minecraftforge:fmlcore:1.18-38.0.4 File exists: Checksum validated. Considering library net.minecraftforge:fmlloader:1.18-38.0.4 File exists: Checksum validated. Considering library net.minecraftforge:forge:1.18-38.0.4:universal File exists: Checksum validated. Considering library net.minecraftforge:installertools:1.2.10 File exists: Checksum validated. Considering library net.minecraftforge:jarsplitter:1.1.4 File exists: Checksum validated. Considering library net.minecraftforge:javafmllanguage:1.18-38.0.4 File exists: Checksum validated. Considering library net.minecraftforge:mclanguage:1.18-38.0.4 File exists: Checksum validated. Considering library net.minecraftforge:srgutils:0.4.3 File exists: Checksum validated. Considering library net.minecraftforge:srgutils:0.4.7 File exists: Checksum validated. Considering library net.sf.jopt-simple:jopt-simple:5.0.4 File exists: Checksum validated. Considering library net.sf.jopt-simple:jopt-simple:6.0-alpha-3 File exists: Checksum validated. Considering library org.apache.commons:commons-collections4:4.2 File exists: Checksum validated. Considering library org.apache.commons:commons-lang3:3.8.1 File exists: Checksum validated. Considering library org.apache.commons:commons-text:1.3 File exists: Checksum validated. Considering library org.checkerframework:checker-qual:2.0.0 File exists: Checksum validated. Considering library org.codehaus.mojo:animal-sniffer-annotations:1.14 File exists: Checksum validated. Considering library org.ow2.asm:asm-analysis:9.1 File exists: Checksum validated. Considering library org.ow2.asm:asm-analysis:9.2 File exists: Checksum validated. Considering library org.ow2.asm:asm-commons:9.1 File exists: Checksum validated. Considering library org.ow2.asm:asm-commons:9.2 File exists: Checksum validated. Considering library org.ow2.asm:asm-tree:9.1 File exists: Checksum validated. Considering library org.ow2.asm:asm-tree:9.2 File exists: Checksum validated. Considering library org.ow2.asm:asm:9.1 File exists: Checksum validated. Considering library org.ow2.asm:asm:9.2 File exists: Checksum validated. Considering library trove:trove:1.0.2 File exists: Checksum validated. Created Temporary Directory: /tmp/forge_installer10859551180063758840 Extracting: /data/client.lzma Building Processors =============================================================================== MainClass: net.minecraftforge.installertools.ConsoleTool Classpath: /home/qila/.minecraft/libraries/net/minecraftforge/installertools/1.2.10/installertools-1.2.10.jar /home/qila/.minecraft/libraries/net/md-5/SpecialSource/1.10.0/SpecialSource-1.10.0.jar /home/qila/.minecraft/libraries/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar /home/qila/.minecraft/libraries/com/google/code/gson/gson/2.8.7/gson-2.8.7.jar /home/qila/.minecraft/libraries/de/siegmar/fastcsv/2.0.0/fastcsv-2.0.0.jar /home/qila/.minecraft/libraries/net/minecraftforge/srgutils/0.4.3/srgutils-0.4.3.jar /home/qila/.minecraft/libraries/org/ow2/asm/asm-commons/9.1/asm-commons-9.1.jar /home/qila/.minecraft/libraries/com/google/guava/guava/20.0/guava-20.0.jar /home/qila/.minecraft/libraries/com/opencsv/opencsv/4.4/opencsv-4.4.jar /home/qila/.minecraft/libraries/org/ow2/asm/asm-analysis/9.1/asm-analysis-9.1.jar /home/qila/.minecraft/libraries/org/ow2/asm/asm-tree/9.1/asm-tree-9.1.jar /home/qila/.minecraft/libraries/org/ow2/asm/asm/9.1/asm-9.1.jar /home/qila/.minecraft/libraries/org/apache/commons/commons-text/1.3/commons-text-1.3.jar /home/qila/.minecraft/libraries/org/apache/commons/commons-lang3/3.8.1/commons-lang3-3.8.1.jar /home/qila/.minecraft/libraries/commons-beanutils/commons-beanutils/1.9.3/commons-beanutils-1.9.3.jar /home/qila/.minecraft/libraries/org/apache/commons/commons-collections4/4.2/commons-collections4-4.2.jar /home/qila/.minecraft/libraries/commons-logging/commons-logging/1.2/commons-logging-1.2.jar /home/qila/.minecraft/libraries/commons-collections/commons-collections/3.2.2/commons-collections-3.2.2.jar Args: --task, MCP_DATA, --input, /home/qila/.minecraft/libraries/de/oceanlabs/mcp/mcp_config/1.18-20211130.085255/mcp_config-1.18-20211130.085255.zip, --output, /home/qila/.minecraft/libraries/de/oceanlabs/mcp/mcp_config/1.18-20211130.085255/mcp_config-1.18-20211130.085255-mappings.txt, --key, mappings Task: MCP_DATA Input: /home/qila/.minecraft/libraries/de/oceanlabs/mcp/mcp_config/1.18-20211130.085255/mcp_config-1.18-20211130.085255.zip Output: /home/qila/.minecraft/libraries/de/oceanlabs/mcp/mcp_config/1.18-20211130.085255/mcp_config-1.18-20211130.085255-mappings.txt Key: mappings Could not delete output file: /home/qila/.minecraft/libraries/de/oceanlabs/mcp/mcp_config/1.18-20211130.085255/mcp_config-1.18-20211130.085255-mappings.txt java.lang.RuntimeException: Could not delete output file: /home/qila/.minecraft/libraries/de/oceanlabs/mcp/mcp_config/1.18-20211130.085255/mcp_config-1.18-20211130.085255-mappings.txt at net.minecraftforge.installertools.Task.error(Task.java:28) at net.minecraftforge.installertools.McpData.process(McpData.java:63) at net.minecraftforge.installertools.ConsoleTool.main(ConsoleTool.java:55) 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 net.minecraftforge.installer.actions.PostProcessors.process(PostProcessors.java:226) at net.minecraftforge.installer.actions.ClientInstall.run(ClientInstall.java:144) at net.minecraftforge.installer.InstallerPanel.run(InstallerPanel.java:423) at net.minecraftforge.installer.SimpleInstaller.launchGui(SimpleInstaller.java:175) at net.minecraftforge.installer.SimpleInstaller.main(SimpleInstaller.java:147)  
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.