Java Minecraft forge mod 1.7.10版在添加新配方后不断崩溃
我目前在开发第一手编写的mod时遇到了一些问题。我目前使用EclipsePhoton作为我的IDE,在64位机器上运行Windows10Home,有4GB的ram 这是我的密码:Java Minecraft forge mod 1.7.10版在添加新配方后不断崩溃,java,minecraft,minecraft-forge,Java,Minecraft,Minecraft Forge,我目前在开发第一手编写的mod时遇到了一些问题。我目前使用EclipsePhoton作为我的IDE,在64位机器上运行Windows10Home,有4GB的ram 这是我的密码: package com.haxium.basicmod.obsidian.armor; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraftforge.common.util.EnumHe
package com.haxium.basicmod.obsidian.armor;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemArmor.ArmorMaterial;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import com.haxium.basicmod.obsidian.armor.ItemObsidianGeneric;
import com.haxium.basicmod.obsidian.armor.ItemObsidianArmor;
@Mod(modid = ObsidianArmor.MODID, version = ObsidianArmor.VERSION, name = ObsidianArmor.NAME)
public class ObsidianArmor {
public static final String MODID = "obsidian_armor";
public static final String VERSION = "1.7.10-Stable-1.1.0.1";
public static final String NAME = "HaxCraft Obsidian Edition";
//tools
public static Item obsidian_pickaxe;
public static Item obsidian_sword;
public static Item obsidian_ingot;
ToolMaterial obsidian = EnumHelper.addToolMaterial("obsidian", 3, 4500, 10.1F, 4.5F, 10);
//armor
public static Item obsidian_helmet;
public static Item obsidian_chest;
public static Item obsidian_leggings;
public static Item obsidian_boots;
ArmorMaterial hardened_obsidian = EnumHelper.addArmorMaterial("hardened_obsidian", 20, new int[] {3, 7, 6, 3}, 25);
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
//tools
obsidian_pickaxe = new ItemObsidianPickaxe(obsidian, "obsidian_pickaxe");
obsidian_sword = new ItemObsidianSword(obsidian, "obsidian_sword");
obsidian_ingot = new ItemObsidianGeneric("obsidian_ingot");
GameRegistry.registerItem(obsidian_ingot, "Obsidian Ingot");
GameRegistry.registerItem(obsidian_sword, "Obsidian Sword");
GameRegistry.registerItem(obsidian_pickaxe, "Obsidian Pickaxe");
//Armor
obsidian_boots = new ItemObsidianArmor(hardened_obsidian, 3, "obsidian_boots");
obsidian_helmet = new ItemObsidianArmor(hardened_obsidian, 0, "obsidian_helmet");
obsidian_chest = new ItemObsidianArmor(hardened_obsidian, 1, "obsidian_chest");
obsidian_leggings = new ItemObsidianArmor(hardened_obsidian, 2, "obsidian_leggings");
GameRegistry.registerItem(obsidian_helmet, "Obsidian Helmet");
GameRegistry.registerItem(obsidian_chest, "Obsidian Chestplate");
GameRegistry.registerItem(obsidian_leggings, "Obsidian Leggings");
GameRegistry.registerItem(obsidian_boots, "Obsidian Boots");
}
@EventHandler
public void init(FMLInitializationEvent event) {
GameRegistry.addRecipe(new ItemStack(Items.apple, 9),
"XXX",
"XXX",
"XXX",
'X', Blocks.leaves
);
GameRegistry.addRecipe(new ItemStack(ObsidianArmor.obsidian_ingot, 9),
"X",
'X', Blocks.obsidian
);
GameRegistry.addRecipe(new ItemStack(ObsidianArmor.obsidian_pickaxe),
"ABC",
"E",
"H",
'A', ObsidianArmor.obsidian_ingot, 'B', ObsidianArmor.obsidian_ingot, 'C', ObsidianArmor.obsidian_ingot, 'E', Items.stick, 'H', Items.stick
);
GameRegistry.addRecipe(new ItemStack(ObsidianArmor.obsidian_sword),
"B",
"E",
"HI",
'B', ObsidianArmor.obsidian_ingot, 'E', ObsidianArmor.obsidian_ingot, 'H', Items.stick
);
GameRegistry.addRecipe(new ItemStack(ObsidianArmor.obsidian_helmet),
"ABC",
"DF",
'A', ObsidianArmor.obsidian_ingot, 'B', ObsidianArmor.obsidian_ingot, 'C', ObsidianArmor.obsidian_ingot, 'D', ObsidianArmor.obsidian_ingot, 'F', ObsidianArmor.obsidian_ingot
);
GameRegistry.addRecipe(new ItemStack(ObsidianArmor.obsidian_chest),
"AC",
"DEF",
"GHI",
'A', ObsidianArmor.obsidian_ingot, 'C', ObsidianArmor.obsidian_ingot, 'D', ObsidianArmor.obsidian_ingot, 'E', ObsidianArmor.obsidian_ingot, 'F', ObsidianArmor.obsidian_ingot, 'G', ObsidianArmor.obsidian_ingot, 'H', ObsidianArmor.obsidian_ingot, 'I', ObsidianArmor.obsidian_ingot
);
GameRegistry.addRecipe(new ItemStack(ObsidianArmor.obsidian_leggings),
"ABC",
"DF",
"GI",
'A', ObsidianArmor.obsidian_ingot, 'B', ObsidianArmor.obsidian_ingot, 'C', ObsidianArmor.obsidian_ingot, 'D', ObsidianArmor.obsidian_ingot, 'F', ObsidianArmor.obsidian_ingot, 'G', ObsidianArmor.obsidian_ingot, 'I', ObsidianArmor.obsidian_ingot
);
GameRegistry.addRecipe(new ItemStack(ObsidianArmor.obsidian_boots),
"AC",
"DF",
'A', ObsidianArmor.obsidian_ingot, "C", ObsidianArmor.obsidian_ingot, 'D', ObsidianArmor.obsidian_ingot, 'F', ObsidianArmor.obsidian_ingot
);
}
}
有什么建议可以解释为什么这一直失败?如果需要,我确实有一份本地的崩溃日志。你食谱中的字符形状需要是矩形。如果食谱本身不是矩形,请在不需要项目的地方添加空格。例如,这:
"ABC",
"E",
"H",
应该是这样的:
"ABC",
" E ",
" H ",
在你所有的食谱中都做些改变,错误就会消失。
GameRegistry.addRecipe(new ItemStack(ObsidianArmor.obsidian_sword),
"B",
"E",
"HI",
'B', ObsidianArmor.obsidian_ingot, 'E', ObsidianArmor.obsidian_ingot, 'H', Items.stick
);
你缺少I
应该是的东西
在第69行的新代码中,您缺少了一些空格,以使re-ipe成为正方形。您应该始终填写3x3网格。或者确保定义配方的数组中的每个项都包含相同数量的项
"B " // lacks a space
"E ", // lacks a space
"H ", // proper amount of spaces
在这些崩溃日志中,始终查找将为您提供导致崩溃的类中的行号的类 com.haxium.basicmod.obsidian.armor.ObsidianArmor.init(ObsidianArmor.java:69) 这给出了文件ObsidianArmour.java中的第69行 以及顶部的错误 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:7
告诉我们问题在于字符串。字符太少,而不是预期的9个。这里是到crashlog的链接:第69行是哪一行?太棒了!谢谢你的帮助。我将对代码进行这些更改,我做了适当的更改,代码仍会产生相同的错误扫描您是否使用新代码更新问题并链接到新的崩溃日志?在这些崩溃日志中,始终找到属于您的类的类
com.haxuim.basicmod.obsidian.armor.ObsidianArmor.init(ObsidianArmor.java:69)
和顶部的错误java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:7
@Draco18s Brainfart在我这边,9个总数卡在我的脑袋里,输入了,意味着3个。现在修好了