I'm fairly new to Minecraft modding in general, but I do have a fair amount of experience coding in C++ and a touch of Java knowledge as well. That being said, I've been trying to port one of my favorite dungeon mods (DungeonPack) back in the day from 1.8 to 1.12. Its been going pretty smooth overall, probably because the mod only generates structures and adds no mobs/items etc., and Forge recognizes it and loads it without a hiccup. Problem is, none of the structures seem to generate. The way I believe this mod generates structures is by placing each block individually, specifically through a function called addBlock(), which goes like this:
public void addBlock(int par1, int par2, int par3, int par4) {
this.world.setBlockState(new BlockPos(par1, par2, par3), Block.getStateById(par4));
}
Each structure's class calls this function hundreds of times, using different parameters which I'm guessing is for position and type of block. There is also a less used function called addBlockAndMetadata():
public void addBlockAndMetadata(int par1, int par2, int par3, int par4, int par5) {
this.world.setBlockState(new BlockPos(par1, par2, par3), Block.getBlockById(par4).getStateFromMeta(par5));
}
Finally, there's addBlockSecond(), which appears only twice and is identical to the first function. This one is only used when the first function is overridden by a class, which I assume is to add additional prerequisites? I'm entirely blind to what any of these variables actually mean:
public void addBlock(int par1, int par2, int par3, int par4) {
if (par4 < 0) {
par4 = 53;
}
addBlockSecond(par1, par2, par3, par4);
}
I don't know how helpful these are, but they're good to have in order to understand the context of this problem. What I think the source of the problem is are the things I had to change between versions. Eclipse instructed me to change the object world (used above) from the class World to WorldServer (which I believe inherits from World). Also,
MinecraftServer.getServer().worldServerForDimension();
wasn't valid, and I had to change it to
FMLCommonHandler.instance().getMinecraftServerInstance().getWorld(0);
Which was recommended here: http://www.minecraftforge.net/forum/topic/60383-how-is-worldserverfordimension-called-in-the-newest-version-of-forge/
These changes may have a hand in the structures not generating, as the addBlock() function relies on the world object, and thus by extension the return value of the function above as well as the class type (as far as I know) do as well. So perhaps the functionality didn't quite carry over from previous versions? The source code is available here: https://github.com/ie04/dungeonpackreloaded. Thanks in advance.