0

我正在尝试为 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_);
}

ChunkProviderGenerateIChunkProvider如果有任何区别,则实现接口。我也试过让我自己的班级也这样做,但没有效果。

在控制台中,我得到以下输出:

[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 的东西”)从未显示过,我放在那里的任何其他代码似乎都没有运行,所以我在这里错过了什么?

当游戏很高兴地跳过我所有的类来获得世界类型时,为什么不使用我的新方法?

4

1 回答 1

0

可能loadChunk()没有被调用。如果loadChunk()只是调用provideChunk(),那么 loadChunk() 可能是一个不再使用的遗留函数。

于 2014-12-30T12:20:24.147 回答