diff --git a/src/minecraft/biomesoplenty/configuration/BOPBiomes.java b/src/minecraft/biomesoplenty/configuration/BOPBiomes.java index 16b555c2d..8b0798a48 100644 --- a/src/minecraft/biomesoplenty/configuration/BOPBiomes.java +++ b/src/minecraft/biomesoplenty/configuration/BOPBiomes.java @@ -94,6 +94,18 @@ public class BOPBiomes { public static WTBiomesOP WTBiomesOP; + public static int getLastBiomeID() + { + int x; + for(x = 255; x >= 0; x--) { + if (BiomeGenBase.biomeList[x] == null) + { + break; + } + } + return x; + } + public static void init() { // Initialize biomes diff --git a/src/minecraft/biomesoplenty/configuration/BOPConfiguration.java b/src/minecraft/biomesoplenty/configuration/BOPConfiguration.java index 415ba7783..5baedc1cf 100644 --- a/src/minecraft/biomesoplenty/configuration/BOPConfiguration.java +++ b/src/minecraft/biomesoplenty/configuration/BOPConfiguration.java @@ -6,6 +6,7 @@ import java.util.logging.Level; import biomesoplenty.ClientProxy; import biomesoplenty.mod_BiomesOPlenty; +import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.Configuration; import cpw.mods.fml.common.FMLLog; diff --git a/src/minecraft/biomesoplenty/configuration/BOPEntities.java b/src/minecraft/biomesoplenty/configuration/BOPEntities.java new file mode 100644 index 000000000..ab4077f18 --- /dev/null +++ b/src/minecraft/biomesoplenty/configuration/BOPEntities.java @@ -0,0 +1,59 @@ +package biomesoplenty.configuration; + +import biomesoplenty.mod_BiomesOPlenty; +import biomesoplenty.api.Biomes; +import biomesoplenty.items.projectiles.EntityMudball; +import biomesoplenty.mobs.EntityJungleSpider; +import biomesoplenty.mobs.EntityRosester; +import cpw.mods.fml.common.registry.EntityRegistry; +import cpw.mods.fml.common.registry.LanguageRegistry; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityEggInfo; +import net.minecraft.entity.EntityList; +import net.minecraft.entity.EnumCreatureType; + +public class BOPEntities { + + //Eggs + public static int eggIdCounter = 300; + + //Find the first available egg ID after our egg ID counter + public static int getUniqueEntityEggId() { + do { + eggIdCounter++; + } while (EntityList.getStringFromID(eggIdCounter) != null); + + return eggIdCounter; + } + + @SuppressWarnings("unchecked") + public static void registerEntityEgg(Class entity, int primaryColor, int secondaryColor) { + int id = getUniqueEntityEggId(); + EntityList.IDtoClassMapping.put(id, entity); + EntityList.entityEggs.put(id, new EntityEggInfo(id, primaryColor, secondaryColor)); + } + + public static void init() + { + + EntityRegistry.registerModEntity(EntityMudball.class, "MudBall", EntityRegistry.findGlobalUniqueEntityId(), mod_BiomesOPlenty.instance, 80, 3, true); + EntityRegistry.registerModEntity(EntityJungleSpider.class, "JungleSpider", BOPConfiguration.jungleSpiderID, mod_BiomesOPlenty.instance, 80, 3, true); + EntityRegistry.registerModEntity(EntityRosester.class, "Rosester", BOPConfiguration.rosesterID, mod_BiomesOPlenty.instance, 80, 3, true); + + registerEntityEgg(EntityJungleSpider.class, 5147192, 11013646); + registerEntityEgg(EntityRosester.class, 14831439, 16756224); + + if (Biomes.jungleNew.isPresent() && Biomes.tropicalRainforest.isPresent() && Biomes.oasis.isPresent() && Biomes.tropics.isPresent()) + { + EntityRegistry.addSpawn(EntityJungleSpider.class, 8, 1, 3, EnumCreatureType.monster, Biomes.jungleNew.get(), Biomes.tropicalRainforest.get(), Biomes.oasis.get(), Biomes.tropics.get()); + } + + if (Biomes.garden.isPresent()) + { + EntityRegistry.addSpawn(EntityRosester.class, 10, 2, 4, EnumCreatureType.creature, Biomes.garden.get()); + } + + LanguageRegistry.instance().addStringLocalization("entity.BiomesOPlenty.JungleSpider.name", "en_US", "Jungle Spider"); + LanguageRegistry.instance().addStringLocalization("entity.BiomesOPlenty.Rosester.name", "en_US", "Rosester"); + } +} diff --git a/src/minecraft/biomesoplenty/configuration/BOPItems.java b/src/minecraft/biomesoplenty/configuration/BOPItems.java index cb164ac08..0d5ecdd78 100644 --- a/src/minecraft/biomesoplenty/configuration/BOPItems.java +++ b/src/minecraft/biomesoplenty/configuration/BOPItems.java @@ -28,6 +28,8 @@ import net.minecraft.item.EnumToolMaterial; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; +import net.minecraft.util.WeightedRandomChestContent; +import net.minecraftforge.common.ChestGenHooks; import net.minecraftforge.common.EnumHelper; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.registry.GameRegistry; diff --git a/src/minecraft/biomesoplenty/configuration/BOPVanillaCompat.java b/src/minecraft/biomesoplenty/configuration/BOPVanillaCompat.java new file mode 100644 index 000000000..fdc59e1df --- /dev/null +++ b/src/minecraft/biomesoplenty/configuration/BOPVanillaCompat.java @@ -0,0 +1,52 @@ +package biomesoplenty.configuration; + +import biomesoplenty.items.projectiles.DispenserBehaviorMudball; +import net.minecraft.block.BlockDispenser; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.WeightedRandomChestContent; +import net.minecraftforge.common.ChestGenHooks; + +public class BOPVanillaCompat { + + public static void init() + { + // Dispenser behavior for mud balls + BlockDispenser.dispenseBehaviorRegistry.putObject(BOPItems.mudBall, new DispenserBehaviorMudball()); + + ChestGenHooks dungeon; + ChestGenHooks mineshaft; + ChestGenHooks strongholdCorridor; + ChestGenHooks strongholdCrossing; + ChestGenHooks village; + + dungeon = ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST); + mineshaft = ChestGenHooks.getInfo(ChestGenHooks.MINESHAFT_CORRIDOR); + strongholdCorridor = ChestGenHooks.getInfo(ChestGenHooks.STRONGHOLD_CORRIDOR); + strongholdCrossing = ChestGenHooks.getInfo(ChestGenHooks.STRONGHOLD_CROSSING); + village = ChestGenHooks.getInfo(ChestGenHooks.VILLAGE_BLACKSMITH); + + dungeon.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.bopDisc), 1, 1, 2)); + dungeon.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.mossItem), 2, 8, 50)); + dungeon.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 2), 4, 12, 75)); + + mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.ashes), 2, 8, 25)); + mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.thorn), 4, 6, 15)); + mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.mudBall), 2, 8, 10)); + mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 3), 4, 12, 75)); + + strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.mossItem), 2, 8, 50)); + strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.glowFlower), 1, 4, 25)); + strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.deathbloom), 1, 4, 25)); + + strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.mossItem), 2, 8, 50)); + strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.glowFlower), 1, 4, 25)); + strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.deathbloom), 1, 4, 25)); + + village.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.barleyItem), 4, 10, 75)); + village.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.shroomPowder), 1, 5, 50)); + village.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.thorn), 2, 6, 25)); + village.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 2), 4, 12, 75)); + village.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 3), 4, 12, 75)); + } +} diff --git a/src/minecraft/biomesoplenty/mod_BiomesOPlenty.java b/src/minecraft/biomesoplenty/mod_BiomesOPlenty.java index e4bfbf215..997da0b0a 100644 --- a/src/minecraft/biomesoplenty/mod_BiomesOPlenty.java +++ b/src/minecraft/biomesoplenty/mod_BiomesOPlenty.java @@ -23,7 +23,9 @@ import biomesoplenty.api.Biomes; import biomesoplenty.configuration.BOPBiomes; import biomesoplenty.configuration.BOPBlocks; import biomesoplenty.configuration.BOPConfiguration; +import biomesoplenty.configuration.BOPEntities; import biomesoplenty.configuration.BOPItems; +import biomesoplenty.configuration.BOPVanillaCompat; import biomesoplenty.helpers.AchievementHelper; import biomesoplenty.helpers.BonemealUse; import biomesoplenty.helpers.CreativeTabsBOP; @@ -109,6 +111,10 @@ public class mod_BiomesOPlenty BOPBiomes.init(); + BOPEntities.init(); + + BOPVanillaCompat.init(); + // Achievement declaration if (BOPConfiguration.achievements == true) { @@ -132,93 +138,10 @@ public class mod_BiomesOPlenty proxy.registerRenderers(); - EntityRegistry.registerModEntity(EntityJungleSpider.class, "JungleSpider", BOPConfiguration.jungleSpiderID, this, 80, 3, true); - LanguageRegistry.instance().addStringLocalization("entity.BiomesOPlenty.JungleSpider.name", "en_US", "Jungle Spider"); - if (Biomes.jungleNew.isPresent() && Biomes.tropicalRainforest.isPresent() && Biomes.oasis.isPresent() && Biomes.tropics.isPresent()) - EntityRegistry.addSpawn(EntityJungleSpider.class, 8, 1, 3, EnumCreatureType.monster, Biomes.jungleNew.get(), Biomes.tropicalRainforest.get(), Biomes.oasis.get(), Biomes.tropics.get()); - registerEntityEgg(EntityJungleSpider.class, 5147192, 11013646); - - EntityRegistry.registerModEntity(EntityRosester.class, "Rosester", BOPConfiguration.rosesterID, this, 80, 3, true); - LanguageRegistry.instance().addStringLocalization("entity.BiomesOPlenty.Rosester.name", "en_US", "Rosester"); - if (Biomes.garden.isPresent()) - EntityRegistry.addSpawn(EntityRosester.class, 10, 2, 4, EnumCreatureType.creature, Biomes.garden.get()); - registerEntityEgg(EntityRosester.class, 14831439, 16756224); - - EntityRegistry.registerModEntity(EntityMudball.class, "MudBall", EntityRegistry.findGlobalUniqueEntityId(), this, 80, 3, true); - - // Dispenser behavior for mud balls - BlockDispenser.dispenseBehaviorRegistry.putObject(BOPItems.mudBall, new DispenserBehaviorMudball()); - DimensionManager.registerProviderType(BOPConfiguration.promisedLandDimID, WorldProviderPromised.class, false); DimensionManager.registerDimension(BOPConfiguration.promisedLandDimID, BOPConfiguration.promisedLandDimID); - - dungeon = ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST); - mineshaft = ChestGenHooks.getInfo(ChestGenHooks.MINESHAFT_CORRIDOR); - strongholdCorridor = ChestGenHooks.getInfo(ChestGenHooks.STRONGHOLD_CORRIDOR); - strongholdCrossing = ChestGenHooks.getInfo(ChestGenHooks.STRONGHOLD_CROSSING); - village = ChestGenHooks.getInfo(ChestGenHooks.VILLAGE_BLACKSMITH); - - dungeon.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.bopDisc), 1, 1, 2)); - dungeon.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.mossItem), 2, 8, 50)); - dungeon.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 2), 4, 12, 75)); - - mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.ashes), 2, 8, 25)); - mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.thorn), 4, 6, 15)); - mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.mudBall), 2, 8, 10)); - mineshaft.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 3), 4, 12, 75)); - - strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.mossItem), 2, 8, 50)); - strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.glowFlower), 1, 4, 25)); - strongholdCorridor.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.deathbloom), 1, 4, 25)); - - strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.mossItem), 2, 8, 50)); - strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.glowFlower), 1, 4, 25)); - strongholdCrossing.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.deathbloom), 1, 4, 25)); - - village.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.barleyItem), 4, 10, 75)); - village.addItem(new WeightedRandomChestContent(new ItemStack(BOPItems.shroomPowder), 1, 5, 50)); - village.addItem(new WeightedRandomChestContent(new ItemStack(BOPBlocks.thorn), 2, 6, 25)); - village.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 2), 4, 12, 75)); - village.addItem(new WeightedRandomChestContent(new ItemStack(Item.dyePowder, 1, 3), 4, 12, 75)); } - //Find the first available egg ID after our egg ID counter - public static int getUniqueEntityEggId() { - do { - eggIdCounter++; - } while (EntityList.getStringFromID(eggIdCounter) != null); - - return eggIdCounter; - } - - @SuppressWarnings("unchecked") - public static void registerEntityEgg(Class entity, int primaryColor, int secondaryColor) { - int id = getUniqueEntityEggId(); - EntityList.IDtoClassMapping.put(id, entity); - EntityList.entityEggs.put(id, new EntityEggInfo(id, primaryColor, secondaryColor)); - } - - //Eggs - public static int eggIdCounter = 300; - public static CreativeTabs tabBiomesOPlenty; - - public static ChestGenHooks dungeon; - public static ChestGenHooks mineshaft; - public static ChestGenHooks strongholdCorridor; - public static ChestGenHooks strongholdCrossing; - public static ChestGenHooks village; - - public static int getLastBiomeID() - { - int x; - for(x = 255; x >= 0; x--) { - if (BiomeGenBase.biomeList[x] == null) - { - break; - } - } - return x; - } } \ No newline at end of file