我正在尝试为 Minecraft 制作一个小模组。
这涉及创建自定义 WorldType。
到目前为止,我的代码如下所示:
@Mod(modid = HungryPillarsMod.MODID, version = HungryPillarsMod.VERSION)
public class HungryPillarsMod {
public static final String MODID = "hungry-pillars";
public static final String VERSION = "0.1";
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
WorldType HUNGRYPILLARS = new HungryPillarsWorld();
}
}
在 HungryPillarWorld.class
public class HungryPillarsWorld extends WorldType {
public HungryPillarsWorld(){
super("HUNGRYPILLARS");
}
@Override
public IChunkProvider getChunkGenerator(World world, String generatorOptions) {
System.out.println("Custom getChunkGenerator is running.");
return new HungryPillarsChunkProvider(world, world.getSeed(), world.getWorldInfo().isMapFeaturesEnabled());
}
}
在 HungryPillarsChunkProvider.class
public class HungryPillarsChunkProvider extends ChunkProviderGenerate {
public World hungryWorldObj;
public HungryPillarsChunkProvider(World world, long seed, boolean mapfeatures) {
super(world,seed,mapfeatures);
System.out.println("custom HungryPillarsChunkProvider is running and the super has been called.");
this.hungryWorldObj = world;
System.out.println(this.loadChunk(3,4));
}
@Override
public Chunk loadChunk(int xPos, int yPos) {
System.out.println("something from custom loadChunk");
// my custom code would go here.
}
}
编译或运行时没有错误,但我的方法HungryPillarsChunkProvider.loadChunk
方法没有被游戏调用。它仍然使用来自ChunkProviderGenerate
. 我可以在这里发布原始的 Minecraft 代码,但它非常大。
我已经检查过它不是私有的或最终的。
我的方法如下所示ChunkProviderGenerate
:
public Chunk loadChunk(int p_73158_1_, int p_73158_2_) {
return this.provideChunk(p_73158_1_, p_73158_2_);
}
ChunkProviderGenerate
IChunkProvider
如果有任何区别,则实现接口。我也试过让我自己的班级也这样做,但没有效果。
在控制台中,我得到以下输出:
[22:19:52] [Server thread/INFO] [STDOUT]: [com.impellar.hungrypillars.HungryPillarsWorld:getChunkGenerator:14]: Custom getChunkGenerator is running.
[22:19:52] [Server thread/INFO] [STDOUT]: [com.impellar.hungrypillars.HungryPillarsChunkProvider:<init>:19]: custom HungryPillarsChunkProvider is running and the super has been called.
但是最后一条消息(“来自自定义 loadChunk 的东西”)从未显示过,我放在那里的任何其他代码似乎都没有运行,所以我在这里错过了什么?
当游戏很高兴地跳过我所有的类来获得世界类型时,为什么不使用我的新方法?