所以我在Java是一个傻瓜,我正在尝试制作一个Minecraft mod,我不知道发生了什么,因为在eclipse中,当我运行Minecraft时,它会通过forge加载屏幕,它会达到7个,看起来它会完成,但随后崩溃并显示这些错误信息(完整日志):
[21:26:28] [main/WARN] [FML]: Registry Item: Override did not have an associated owner object. Name: mcadditions:netherinium_sword Value: superrobbie10.MinecraftAdditions.items.tools.ToolSword@67127bb1
[21:26:28] [main/INFO] [STDOUT]: [net.minecraft.init.Bootstrap:printToSYSOUT:629]: ---- Minecraft Crash Report ----
// I blame Dinnerbone.
Time: 9/14/19 9:26 PM
Description: Initializing game
java.lang.RuntimeException: One of more entry values did not copy to the correct id. Check log for details!
at net.minecraftforge.registries.ForgeRegistry.sync(ForgeRegistry.java:555)
我发现唯一可以修复它的是,如果我删除了名为RegistryHandler的文件,该文件显示
import net.minecraft.item.Item;
import net.minecraftforge.client.event.ModelRegistryEvent;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import superrobbie10.MinecraftAdditions.init.ModItems;
import superrobbie10.MinecraftAdditions.util.IHasModel;
@EventBusSubscriber
public class RegistryHandler
{
@SubscribeEvent
public static void onItemRegisterer(RegistryEvent.Register<Item> event)
{
event.getRegistry().registerAll(ModItems.ITEMS.toArray(new Item[0]));
}
@SubscribeEvent
public static void onModelRegister(ModelRegistryEvent event)
{
for(Item item : ModItems.ITEMS)
{
if(item instanceof IHasModel)
{
((IHasModel)item).registerModels();
}
}
}
}
另外,这是我的toolsword.java:
package superrobbie10.MinecraftAdditions.items.tools;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemSword;
import superrobbie10.MinecraftAdditions.Main;
import superrobbie10.MinecraftAdditions.init.ModItems;
import superrobbie10.MinecraftAdditions.util.IHasModel;
public class ToolSword extends ItemSword implements IHasModel {
public ToolSword(String name, ToolMaterial material)
{
super(material);
setUnlocalizedName(name);
setRegistryName(name);
setCreativeTab(CreativeTabs.TOOLS);
ModItems.ITEMS.add(this);
}
@Override
public void registerModels()
{
Main.proxy.registerItemRenderer(this, 0, "inventory");
}
}
下面是我的使用方法:
public static final ItemSword NETHERINIUM_SWORD = new ToolSword("netherinium_sword", MATERIAL_NETHERINIUM);
但当我这样做,我进入我的Minecraft世界,它说,一些注册的东西被删除,导致我所有的块和项目消失
看来问题出在这里:
setUnlocalizedName(name);
setRegistryName(name);
在那里,name
是“netherinium_sword”
。您的非本地化名称和注册表名称不应该相同,因为您的注册表名称需要有命名空间。请尝试以下操作:
setUnlocalizedName(name);
setRegistryName("mcadditions:" + name);
(或者如果您的mod ID中有一个常量,则可以使用它而不是硬编码。)
问题内容: 我有一个tomcat作为我的网络服务器,它会根据给定的错误自动停止- 我需要弄清楚实际发生了什么?那警告是什么意思? 问题答案: 没有足够的内存让Java Runtime Environment继续运行。 本机内存分配(malloc)无法分配xxxxx字节来提交保留的内存。 可能的原因: 1.系统没有物理RAM或交换空间 2.在32位模式下,达到了进程大小限制 可能的解决方案:1 .减
问题内容: 使用Maven构建Java 8项目时: 我收到此消息: Java HotSpot(TM)64位服务器VM警告:忽略选项MaxPermSize = 128m;在8.0中删除了支持 如何删除此消息? 问题答案: JDK 8兼容性指南指出,在Java 8中,命令行标志已被删除。原因是永久代已从热点堆中删除,并已移至本机内存。因此,为了删除此消息,请编辑MAVEN_OPTS环境用户变量: Ja
我有一个tomcat作为我的web服务器,它会随着给定的错误自动停止- 我需要弄清楚到底发生了什么?警告意味着什么?
我在运行cassandra时出现以下错误。 $ sudo服务cassandra start $卡桑德拉 JavaHotSpot(TM)服务器VM警告:由于权限被拒绝,无法打开文件 /var/log/cassandra/gc.log。
我只想在OpenSuSE 13.11.10-64x中运行ORACLE SQL Developer 4.0.2.12.21 linux-l4i7:/home/suse/bin/sqldeveloper#./sqldeveloper.sh
我在一个项目中使用java scala(与sbt一起)。 语言信息: 当我运行任何时,我得到一个奇怪的警告提示: 我无法理解这种行为。 更新: 我检查了 选项,它具有相同的行为: 感谢这么快的解释1.8Java新功能! 但是如何解决警告的发生? 以下是的内容: Eclipse有< code>eclipse.ini: 更新2 我从两个配置文件中删除了包含的所有行。 但是这个错误警告一直出现(当<co