java重写方法没有被调用

时间:2014-12-29 21:45:08

标签: java minecraft minecraft-forge

我正在尝试为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.

但是最后一条消息(&#34;来自自定义loadChunk&#34;的东西)从未显示过,我放在那里的任何其他代码似乎从未运行过,所以我在这里缺少什么?

为什么游戏不能使用我的新方法,因为它很乐意跳过我所有的课程来获得世界类型?

1 个答案:

答案 0 :(得分:0)

loadChunk()可能无法被调用。如果loadChunk()只调用provideChunk(),则loadChunk()可能是遗留功能,不再使用。