mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-22 23:28:35 +01:00
-Added new Villager Field
-Fixed Jam House -Added Dispenser Handlers for Buckets and Fertilizer
This commit is contained in:
parent
4f49f7fc65
commit
d7382976e5
17 changed files with 238 additions and 51 deletions
|
@ -4,10 +4,7 @@ import cpw.mods.fml.common.Mod;
|
||||||
import cpw.mods.fml.common.Mod.EventHandler;
|
import cpw.mods.fml.common.Mod.EventHandler;
|
||||||
import cpw.mods.fml.common.Mod.Instance;
|
import cpw.mods.fml.common.Mod.Instance;
|
||||||
import cpw.mods.fml.common.SidedProxy;
|
import cpw.mods.fml.common.SidedProxy;
|
||||||
import cpw.mods.fml.common.event.FMLInitializationEvent;
|
import cpw.mods.fml.common.event.*;
|
||||||
import cpw.mods.fml.common.event.FMLInterModComms;
|
|
||||||
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
|
|
||||||
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
|
|
||||||
import ellpeck.actuallyadditions.achievement.InitAchievements;
|
import ellpeck.actuallyadditions.achievement.InitAchievements;
|
||||||
import ellpeck.actuallyadditions.blocks.InitBlocks;
|
import ellpeck.actuallyadditions.blocks.InitBlocks;
|
||||||
import ellpeck.actuallyadditions.communication.InterModCommunications;
|
import ellpeck.actuallyadditions.communication.InterModCommunications;
|
||||||
|
@ -22,6 +19,8 @@ import ellpeck.actuallyadditions.inventory.GuiHandler;
|
||||||
import ellpeck.actuallyadditions.items.InitItems;
|
import ellpeck.actuallyadditions.items.InitItems;
|
||||||
import ellpeck.actuallyadditions.items.ItemCoffee;
|
import ellpeck.actuallyadditions.items.ItemCoffee;
|
||||||
import ellpeck.actuallyadditions.material.InitItemMaterials;
|
import ellpeck.actuallyadditions.material.InitItemMaterials;
|
||||||
|
import ellpeck.actuallyadditions.misc.DispenserHandlerEmptyBucket;
|
||||||
|
import ellpeck.actuallyadditions.misc.DispenserHandlerFertilize;
|
||||||
import ellpeck.actuallyadditions.network.PacketHandler;
|
import ellpeck.actuallyadditions.network.PacketHandler;
|
||||||
import ellpeck.actuallyadditions.proxy.IProxy;
|
import ellpeck.actuallyadditions.proxy.IProxy;
|
||||||
import ellpeck.actuallyadditions.recipe.FuelHandler;
|
import ellpeck.actuallyadditions.recipe.FuelHandler;
|
||||||
|
@ -29,6 +28,7 @@ import ellpeck.actuallyadditions.recipe.HairyBallHandler;
|
||||||
import ellpeck.actuallyadditions.tile.TileEntityBase;
|
import ellpeck.actuallyadditions.tile.TileEntityBase;
|
||||||
import ellpeck.actuallyadditions.util.ModUtil;
|
import ellpeck.actuallyadditions.util.ModUtil;
|
||||||
import ellpeck.actuallyadditions.util.Util;
|
import ellpeck.actuallyadditions.util.Util;
|
||||||
|
import net.minecraft.block.BlockDispenser;
|
||||||
|
|
||||||
@Mod(modid = ModUtil.MOD_ID, name = ModUtil.NAME, version = ModUtil.VERSION)
|
@Mod(modid = ModUtil.MOD_ID, name = ModUtil.NAME, version = ModUtil.VERSION)
|
||||||
public class ActuallyAdditions{
|
public class ActuallyAdditions{
|
||||||
|
@ -88,4 +88,11 @@ public class ActuallyAdditions{
|
||||||
public void onIMCReceived(FMLInterModComms.IMCEvent event){
|
public void onIMCReceived(FMLInterModComms.IMCEvent event){
|
||||||
InterModCommunications.processIMC(event.getMessages());
|
InterModCommunications.processIMC(event.getMessages());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void serverStarting(FMLServerStartingEvent event){
|
||||||
|
BlockDispenser.dispenseBehaviorRegistry.putObject(InitItems.itemBucketCanolaOil, new DispenserHandlerEmptyBucket());
|
||||||
|
BlockDispenser.dispenseBehaviorRegistry.putObject(InitItems.itemBucketOil, new DispenserHandlerEmptyBucket());
|
||||||
|
BlockDispenser.dispenseBehaviorRegistry.putObject(InitItems.itemFertilizer, new DispenserHandlerFertilize());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,7 @@ public enum ConfigBoolValues{
|
||||||
LEAF_BLOWER_SOUND("Leaf Blower: Sound", ConfigCategories.TOOL_VALUES, true, "If the Leaf Blower makes Sounds"),
|
LEAF_BLOWER_SOUND("Leaf Blower: Sound", ConfigCategories.TOOL_VALUES, true, "If the Leaf Blower makes Sounds"),
|
||||||
|
|
||||||
JAM_VILLAGER_EXISTS("Jam Villager: Existence", ConfigCategories.WORLD_GEN, true, "If the Jam Villager and his House exist"),
|
JAM_VILLAGER_EXISTS("Jam Villager: Existence", ConfigCategories.WORLD_GEN, true, "If the Jam Villager and his House exist"),
|
||||||
|
CROP_FIELD_EXISTS("Crop Field: Existence", ConfigCategories.WORLD_GEN, true, "If the Custom Crop Fields exist"),
|
||||||
|
|
||||||
GENERATE_QUARTZ("Black Quartz", ConfigCategories.WORLD_GEN, true, "If the Black Quartz generates in the world"),
|
GENERATE_QUARTZ("Black Quartz", ConfigCategories.WORLD_GEN, true, "If the Black Quartz generates in the world"),
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class GrinderCrafting{
|
||||||
GrinderRecipeManualRegistry.registerRecipe(new ItemStack(Blocks.stone), new ItemStack(Blocks.cobblestone));
|
GrinderRecipeManualRegistry.registerRecipe(new ItemStack(Blocks.stone), new ItemStack(Blocks.cobblestone));
|
||||||
GrinderRecipeManualRegistry.registerRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE.ordinal()), new ItemStack(Items.sugar, 2));
|
GrinderRecipeManualRegistry.registerRecipe(new ItemStack(InitItems.itemFoods, 1, TheFoods.RICE.ordinal()), new ItemStack(Items.sugar, 2));
|
||||||
|
|
||||||
GrinderRecipeManualRegistry.registerRecipe("oreNickel", "dustNickel", "dustPlatinum", 30, 2);
|
GrinderRecipeManualRegistry.registerRecipe("oreNickel", "dustNickel", "dustPlatinum", 15, 2);
|
||||||
GrinderRecipeManualRegistry.registerRecipe("oreIron", "dustIron", "dustGold", 20, 2);
|
GrinderRecipeManualRegistry.registerRecipe("oreIron", "dustIron", "dustGold", 20, 2);
|
||||||
|
|
||||||
GrinderRecipeAutoRegistry.searchCases.add(new SearchCase("oreNether", 6));
|
GrinderRecipeAutoRegistry.searchCases.add(new SearchCase("oreNether", 6));
|
||||||
|
|
|
@ -5,6 +5,7 @@ import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||||
import ellpeck.actuallyadditions.blocks.InitBlocks;
|
import ellpeck.actuallyadditions.blocks.InitBlocks;
|
||||||
import ellpeck.actuallyadditions.items.InitItems;
|
import ellpeck.actuallyadditions.items.InitItems;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.event.entity.player.FillBucketEvent;
|
import net.minecraftforge.event.entity.player.FillBucketEvent;
|
||||||
|
|
||||||
|
@ -12,17 +13,16 @@ public class BucketFillEvent{
|
||||||
|
|
||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public void onBucketFilled(FillBucketEvent event){
|
public void onBucketFilled(FillBucketEvent event){
|
||||||
Block block = event.world.getBlock(event.target.blockX, event.target.blockY, event.target.blockZ);
|
this.fillBucket(event, InitItems.itemBucketOil, InitBlocks.blockOil);
|
||||||
if(block == InitBlocks.blockCanolaOil){
|
this.fillBucket(event, InitItems.itemBucketCanolaOil, InitBlocks.blockCanolaOil);
|
||||||
event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ);
|
|
||||||
event.result = new ItemStack(InitItems.itemBucketCanolaOil);
|
|
||||||
event.setResult(Event.Result.ALLOW);
|
|
||||||
}
|
|
||||||
if(block == InitBlocks.blockOil){
|
|
||||||
event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ);
|
|
||||||
event.result = new ItemStack(InitItems.itemBucketOil);
|
|
||||||
event.setResult(Event.Result.ALLOW);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void fillBucket(FillBucketEvent event, Item item, Block fluid){
|
||||||
|
Block block = event.world.getBlock(event.target.blockX, event.target.blockY, event.target.blockZ);
|
||||||
|
if(block == fluid){
|
||||||
|
event.world.setBlockToAir(event.target.blockX, event.target.blockY, event.target.blockZ);
|
||||||
|
event.result = new ItemStack(item);
|
||||||
|
event.setResult(Event.Result.ALLOW);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,9 @@ public class InitVillager{
|
||||||
if(ConfigBoolValues.JAM_VILLAGER_EXISTS.isEnabled()){
|
if(ConfigBoolValues.JAM_VILLAGER_EXISTS.isEnabled()){
|
||||||
initJamVillagePart();
|
initJamVillagePart();
|
||||||
}
|
}
|
||||||
|
if(ConfigBoolValues.CROP_FIELD_EXISTS.isEnabled()){
|
||||||
|
initCustomCropFieldPart();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void initJamVillagePart(){
|
private static void initJamVillagePart(){
|
||||||
|
@ -32,7 +35,7 @@ public class InitVillager{
|
||||||
|
|
||||||
ChestGenHooks jamHouseChest = ChestGenHooks.getInfo(JAM_HOUSE_CHEST_NAME);
|
ChestGenHooks jamHouseChest = ChestGenHooks.getInfo(JAM_HOUSE_CHEST_NAME);
|
||||||
jamHouseChest.setMin(5);
|
jamHouseChest.setMin(5);
|
||||||
jamHouseChest.setMax(20);
|
jamHouseChest.setMax(10);
|
||||||
for(int i = 0; i < TheJams.values().length; i++){
|
for(int i = 0; i < TheJams.values().length; i++){
|
||||||
ChestGenHooks.addItem(JAM_HOUSE_CHEST_NAME, new WeightedRandomChestContent(new ItemStack(InitItems.itemJams, 1, i), 1, 1, 10));
|
ChestGenHooks.addItem(JAM_HOUSE_CHEST_NAME, new WeightedRandomChestContent(new ItemStack(InitItems.itemJams, 1, i), 1, 1, 10));
|
||||||
}
|
}
|
||||||
|
@ -43,4 +46,9 @@ public class InitVillager{
|
||||||
MapGenStructureIO.func_143031_a(VillageComponentJamHouse.class, ModUtil.MOD_ID_LOWER+":jamHouseStructure");
|
MapGenStructureIO.func_143031_a(VillageComponentJamHouse.class, ModUtil.MOD_ID_LOWER+":jamHouseStructure");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void initCustomCropFieldPart(){
|
||||||
|
VillagerRegistry.instance().registerVillageCreationHandler(new VillageCustomCropFieldHandler());
|
||||||
|
MapGenStructureIO.func_143031_a(VillageComponentCustomCropField.class, ModUtil.MOD_ID_LOWER+":customCropFieldStructure");
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,6 +6,7 @@ import ellpeck.actuallyadditions.items.metalists.TheJams;
|
||||||
import net.minecraft.entity.passive.EntityVillager;
|
import net.minecraft.entity.passive.EntityVillager;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.village.MerchantRecipe;
|
import net.minecraft.village.MerchantRecipe;
|
||||||
import net.minecraft.village.MerchantRecipeList;
|
import net.minecraft.village.MerchantRecipeList;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
|
@ -18,15 +19,15 @@ public class JamVillagerTradeHandler implements VillagerRegistry.IVillageTradeHa
|
||||||
private ArrayList<Trade> trades = new ArrayList<Trade>();
|
private ArrayList<Trade> trades = new ArrayList<Trade>();
|
||||||
|
|
||||||
public JamVillagerTradeHandler(){
|
public JamVillagerTradeHandler(){
|
||||||
this.addWants("ingotGold", 5, 2);
|
this.addWants("ingotGold", 5, 7);
|
||||||
this.addWants("cropWheat", 15, 10);
|
this.addWants("cropWheat", 15, 25);
|
||||||
this.addWants("dustRedstone", 25, 15);
|
this.addWants("dustRedstone", 25, 40);
|
||||||
this.addWants(new ItemStack(Items.bucket), 5, 4);
|
this.addWants(new ItemStack(Items.bucket), 5, 9);
|
||||||
this.addWants(new ItemStack(Items.glass_bottle), 12, 5);
|
this.addWants(new ItemStack(Items.glass_bottle), 12, 17);
|
||||||
this.addWants(new ItemStack(Items.potionitem), 1, 0);
|
this.addWants(new ItemStack(Items.potionitem), 1, 1);
|
||||||
this.addWants("ingotIron", 10, 5);
|
this.addWants("ingotIron", 10, 15);
|
||||||
this.addWants("gemDiamond", 1, 2);
|
this.addWants("gemDiamond", 1, 2);
|
||||||
this.addWants("dustGlowstone", 12, 10);
|
this.addWants("dustGlowstone", 12, 22);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -37,12 +38,12 @@ public class JamVillagerTradeHandler implements VillagerRegistry.IVillageTradeHa
|
||||||
ItemStack wantsTwo = null;
|
ItemStack wantsTwo = null;
|
||||||
ItemStack wantsOne = trades.get(i).wants.get(j);
|
ItemStack wantsOne = trades.get(i).wants.get(j);
|
||||||
|
|
||||||
wantsOne.stackSize = rand.nextInt(trades.get(i).extraStackSize) + trades.get(i).baseStackSize;
|
wantsOne.stackSize = MathHelper.getRandomIntegerInRange(rand, trades.get(i).minStackSize, trades.get(i).maxStackSize);
|
||||||
if(rand.nextInt(3) == 0){
|
if(rand.nextInt(3) == 0){
|
||||||
int toGet = rand.nextInt(trades.size());
|
int toGet = rand.nextInt(trades.size());
|
||||||
for(int k = 0; k < trades.get(toGet).wants.size(); k++){
|
for(int k = 0; k < trades.get(toGet).wants.size(); k++){
|
||||||
wantsTwo = trades.get(toGet).wants.get(k);
|
wantsTwo = trades.get(toGet).wants.get(k);
|
||||||
wantsTwo.stackSize = rand.nextInt(trades.get(k).extraStackSize) + trades.get(k).baseStackSize;
|
wantsTwo.stackSize = MathHelper.getRandomIntegerInRange(rand, trades.get(k).minStackSize, trades.get(k).maxStackSize);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(wantsOne == wantsTwo) wantsTwo = null;
|
if(wantsOne == wantsTwo) wantsTwo = null;
|
||||||
|
@ -66,19 +67,19 @@ public class JamVillagerTradeHandler implements VillagerRegistry.IVillageTradeHa
|
||||||
public static class Trade{
|
public static class Trade{
|
||||||
|
|
||||||
public final ArrayList<ItemStack> wants = new ArrayList<ItemStack>();
|
public final ArrayList<ItemStack> wants = new ArrayList<ItemStack>();
|
||||||
public final int baseStackSize;
|
public final int minStackSize;
|
||||||
public final int extraStackSize;
|
public final int maxStackSize;
|
||||||
|
|
||||||
public Trade(ArrayList<ItemStack> wants, int minStackSize, int maxStackSize){
|
public Trade(ArrayList<ItemStack> wants, int minStackSize, int maxStackSize){
|
||||||
this.wants.addAll(wants);
|
this.wants.addAll(wants);
|
||||||
this.baseStackSize = minStackSize <= 0 ? 1 : minStackSize;
|
this.minStackSize = minStackSize <= 0 ? 1 : minStackSize;
|
||||||
this.extraStackSize = maxStackSize <= 0 ? 1 : maxStackSize;
|
this.maxStackSize = maxStackSize <= 0 ? 1 : maxStackSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Trade(ItemStack want, int minStackSize, int maxStackSize){
|
public Trade(ItemStack want, int minStackSize, int maxStackSize){
|
||||||
this.wants.add(want);
|
this.wants.add(want);
|
||||||
this.baseStackSize = minStackSize <= 0 ? 1 : minStackSize;
|
this.minStackSize = minStackSize <= 0 ? 1 : minStackSize;
|
||||||
this.extraStackSize = maxStackSize <= 0 ? 1 : maxStackSize;
|
this.maxStackSize = maxStackSize <= 0 ? 1 : maxStackSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,8 +10,8 @@ import ellpeck.actuallyadditions.util.ModUtil;
|
||||||
import ellpeck.actuallyadditions.util.Util;
|
import ellpeck.actuallyadditions.util.Util;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraft.world.WorldType;
|
|
||||||
import net.minecraft.world.chunk.IChunkProvider;
|
import net.minecraft.world.chunk.IChunkProvider;
|
||||||
import net.minecraft.world.gen.feature.WorldGenMinable;
|
import net.minecraft.world.gen.feature.WorldGenMinable;
|
||||||
import org.apache.logging.log4j.Level;
|
import org.apache.logging.log4j.Level;
|
||||||
|
@ -22,8 +22,6 @@ public class OreGen implements IWorldGenerator{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider){
|
public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider){
|
||||||
if(world.provider.terrainType == WorldType.FLAT) return;
|
|
||||||
|
|
||||||
switch(world.provider.dimensionId){
|
switch(world.provider.dimensionId){
|
||||||
case -1:
|
case -1:
|
||||||
generateNether(world, random, chunkX*16, chunkZ*16);
|
generateNether(world, random, chunkX*16, chunkZ*16);
|
||||||
|
@ -43,7 +41,7 @@ public class OreGen implements IWorldGenerator{
|
||||||
|
|
||||||
private void generateSurface(World world, Random random, int x, int z){
|
private void generateSurface(World world, Random random, int x, int z){
|
||||||
if(ConfigBoolValues.GENERATE_QUARTZ.isEnabled()){
|
if(ConfigBoolValues.GENERATE_QUARTZ.isEnabled()){
|
||||||
this.addOreSpawn(InitBlocks.blockMisc, TheMiscBlocks.ORE_QUARTZ.ordinal(), Blocks.stone, world, random, x, z, this.getRandom(ConfigIntValues.BLACK_QUARTZ_BASE_AMOUNT.getValue(), ConfigIntValues.BLACK_QUARTZ_ADD_CHANCE.getValue(), random), ConfigIntValues.BLACK_QUARTZ_CHANCE.getValue(), ConfigIntValues.BLACK_QUARTZ_MIN_HEIGHT.getValue(), ConfigIntValues.BLACK_QUARTZ_MAX_HEIGHT.getValue());
|
this.addOreSpawn(InitBlocks.blockMisc, TheMiscBlocks.ORE_QUARTZ.ordinal(), Blocks.stone, world, random, x, z, MathHelper.getRandomIntegerInRange(random, ConfigIntValues.BLACK_QUARTZ_BASE_AMOUNT.getValue(), ConfigIntValues.BLACK_QUARTZ_ADD_CHANCE.getValue()), ConfigIntValues.BLACK_QUARTZ_CHANCE.getValue(), ConfigIntValues.BLACK_QUARTZ_MIN_HEIGHT.getValue(), ConfigIntValues.BLACK_QUARTZ_MAX_HEIGHT.getValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,10 +63,6 @@ public class OreGen implements IWorldGenerator{
|
||||||
else ModUtil.LOGGER.log(Level.FATAL, "Couldn't generate '" + block.getUnlocalizedName() + "' into the world because the Min Y coordinate is bigger than the Max! This is definitely a Config Error! Check the Files!");
|
else ModUtil.LOGGER.log(Level.FATAL, "Couldn't generate '" + block.getUnlocalizedName() + "' into the world because the Min Y coordinate is bigger than the Max! This is definitely a Config Error! Check the Files!");
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getRandom(int base, int extra, Random rand){
|
|
||||||
return extra > 0 ? base+rand.nextInt(extra+1) : base;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void init(){
|
public static void init(){
|
||||||
Util.logInfo("Registering World Generator...");
|
Util.logInfo("Registering World Generator...");
|
||||||
GameRegistry.registerWorldGenerator(new OreGen(), 10);
|
GameRegistry.registerWorldGenerator(new OreGen(), 10);
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
package ellpeck.actuallyadditions.gen;
|
||||||
|
|
||||||
|
import ellpeck.actuallyadditions.blocks.InitBlocks;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.init.Blocks;
|
||||||
|
import net.minecraft.util.MathHelper;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.gen.structure.StructureBoundingBox;
|
||||||
|
import net.minecraft.world.gen.structure.StructureComponent;
|
||||||
|
import net.minecraft.world.gen.structure.StructureVillagePieces;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class VillageComponentCustomCropField extends StructureVillagePieces.House1{
|
||||||
|
|
||||||
|
private static final int xSize = 13;
|
||||||
|
private static final int ySize = 4;
|
||||||
|
private static final int zSize = 9;
|
||||||
|
|
||||||
|
private int averageGroundLevel = -1;
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
public VillageComponentCustomCropField(){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public VillageComponentCustomCropField(StructureBoundingBox boundingBox, int par5){
|
||||||
|
this.coordBaseMode = par5;
|
||||||
|
this.boundingBox = boundingBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static VillageComponentCustomCropField buildComponent(List pieces, int p1, int p2, int p3, int p4){
|
||||||
|
StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, xSize, ySize, zSize, p4);
|
||||||
|
return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null ? new VillageComponentCustomCropField(boundingBox, p4) : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean addComponentParts(World world, Random rand, StructureBoundingBox sbb){
|
||||||
|
if(this.averageGroundLevel < 0){
|
||||||
|
this.averageGroundLevel = this.getAverageGroundLevel(world, sbb);
|
||||||
|
if(this.averageGroundLevel < 0) return true;
|
||||||
|
this.boundingBox.offset(0, this.averageGroundLevel-this.boundingBox.maxY+ySize-1, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.fillWithBlocks(world, sbb, 0, 0, 0, xSize-1, ySize-1, zSize-1, Blocks.air);
|
||||||
|
this.spawnActualHouse(world, rand, sbb);
|
||||||
|
|
||||||
|
for (int i = 0; i < xSize; i++){
|
||||||
|
for(int j = 0; j < zSize; j++){
|
||||||
|
this.clearCurrentPositionBlocksUpwards(world, i, ySize, j, sbb);
|
||||||
|
this.func_151554_b(world, Blocks.dirt, 0, i, -1, j, sbb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Block getRandomCropType(Random rand){
|
||||||
|
switch(rand.nextInt(4)){
|
||||||
|
case 0: return InitBlocks.blockFlax;
|
||||||
|
case 1: return InitBlocks.blockCoffee;
|
||||||
|
case 2: return InitBlocks.blockRice;
|
||||||
|
default: return InitBlocks.blockCanola;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void spawnActualHouse(World world, Random rand, StructureBoundingBox sbb){
|
||||||
|
this.fillWithBlocks(world, sbb, 1, 0, 1, 2, 0, 7, Blocks.farmland);
|
||||||
|
this.fillWithBlocks(world, sbb, 4, 0, 1, 5, 0, 7, Blocks.farmland);
|
||||||
|
this.fillWithBlocks(world, sbb, 7, 0, 1, 8, 0, 7, Blocks.farmland);
|
||||||
|
this.fillWithBlocks(world, sbb, 10, 0, 1, 11, 0, 7, Blocks.farmland);
|
||||||
|
this.fillWithBlocks(world, sbb, 0, 0, 0, 0, 0, 8, Blocks.log);
|
||||||
|
this.fillWithBlocks(world, sbb, 6, 0, 0, 6, 0, 8, Blocks.log);
|
||||||
|
this.fillWithBlocks(world, sbb, 12, 0, 0, 12, 0, 8, Blocks.log);
|
||||||
|
this.fillWithBlocks(world, sbb, 1, 0, 0, 11, 0, 0, Blocks.log);
|
||||||
|
this.fillWithBlocks(world, sbb, 1, 0, 8, 11, 0, 8, Blocks.log);
|
||||||
|
this.fillWithBlocks(world, sbb, 3, 0, 1, 3, 0, 7, Blocks.water);
|
||||||
|
this.fillWithBlocks(world, sbb, 9, 0, 1, 9, 0, 7, Blocks.water);
|
||||||
|
|
||||||
|
for(int i = 1; i <= 7; ++i){
|
||||||
|
this.placeBlockAtCurrentPosition(world, this.getRandomCropType(rand), MathHelper.getRandomIntegerInRange(rand, 1, 7), 1, 1, i, sbb);
|
||||||
|
this.placeBlockAtCurrentPosition(world, this.getRandomCropType(rand), MathHelper.getRandomIntegerInRange(rand, 1, 7), 2, 1, i, sbb);
|
||||||
|
this.placeBlockAtCurrentPosition(world, this.getRandomCropType(rand), MathHelper.getRandomIntegerInRange(rand, 1, 7), 4, 1, i, sbb);
|
||||||
|
this.placeBlockAtCurrentPosition(world, this.getRandomCropType(rand), MathHelper.getRandomIntegerInRange(rand, 1, 7), 5, 1, i, sbb);
|
||||||
|
this.placeBlockAtCurrentPosition(world, this.getRandomCropType(rand), MathHelper.getRandomIntegerInRange(rand, 1, 7), 7, 1, i, sbb);
|
||||||
|
this.placeBlockAtCurrentPosition(world, this.getRandomCropType(rand), MathHelper.getRandomIntegerInRange(rand, 1, 7), 8, 1, i, sbb);
|
||||||
|
this.placeBlockAtCurrentPosition(world, this.getRandomCropType(rand), MathHelper.getRandomIntegerInRange(rand, 1, 7), 10, 1, i, sbb);
|
||||||
|
this.placeBlockAtCurrentPosition(world, this.getRandomCropType(rand), MathHelper.getRandomIntegerInRange(rand, 1, 7), 11, 1, i, sbb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fillWithBlocks(World world, StructureBoundingBox sbb, int minX, int minY, int minZ, int maxX, int maxY, int maxZ, Block block){
|
||||||
|
this.fillWithBlocks(world, sbb, minX, minY, minZ, maxX, maxY, maxZ, block, block, false);
|
||||||
|
}
|
||||||
|
}
|
|
@ -17,9 +17,9 @@ import java.util.Random;
|
||||||
|
|
||||||
public class VillageComponentJamHouse extends StructureVillagePieces.House1{
|
public class VillageComponentJamHouse extends StructureVillagePieces.House1{
|
||||||
|
|
||||||
private static final int xSize = 10;
|
private static final int xSize = 11;
|
||||||
private static final int ySize = 8;
|
private static final int ySize = 8;
|
||||||
private static final int zSize = 11;
|
private static final int zSize = 12;
|
||||||
|
|
||||||
private int averageGroundLevel = -1;
|
private int averageGroundLevel = -1;
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ public class VillageComponentJamHouse extends StructureVillagePieces.House1{
|
||||||
}
|
}
|
||||||
|
|
||||||
public static VillageComponentJamHouse buildComponent(List pieces, int p1, int p2, int p3, int p4){
|
public static VillageComponentJamHouse buildComponent(List pieces, int p1, int p2, int p3, int p4){
|
||||||
StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, xSize+1, ySize+1, zSize+1, p4);
|
StructureBoundingBox boundingBox = StructureBoundingBox.getComponentToAddBoundingBox(p1, p2, p3, 0, 0, 0, xSize, ySize, zSize, p4);
|
||||||
return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null ? new VillageComponentJamHouse(boundingBox, p4) : null;
|
return canVillageGoDeeper(boundingBox) && StructureComponent.findIntersecting(pieces, boundingBox) == null ? new VillageComponentJamHouse(boundingBox, p4) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,9 +43,10 @@ public class VillageComponentJamHouse extends StructureVillagePieces.House1{
|
||||||
if(this.averageGroundLevel < 0){
|
if(this.averageGroundLevel < 0){
|
||||||
this.averageGroundLevel = this.getAverageGroundLevel(world, sbb);
|
this.averageGroundLevel = this.getAverageGroundLevel(world, sbb);
|
||||||
if(this.averageGroundLevel < 0) return true;
|
if(this.averageGroundLevel < 0) return true;
|
||||||
this.boundingBox.offset(0, this.averageGroundLevel-this.boundingBox.maxY+ySize, 0);
|
this.boundingBox.offset(0, this.averageGroundLevel-this.boundingBox.maxY+ySize-1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.fillWithBlocks(world, sbb, 0, 0, 0, xSize-1, ySize-1, zSize-1, Blocks.air);
|
||||||
this.spawnActualHouse(world, rand, sbb);
|
this.spawnActualHouse(world, rand, sbb);
|
||||||
|
|
||||||
for (int i = 0; i < xSize; i++){
|
for (int i = 0; i < xSize; i++){
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package ellpeck.actuallyadditions.gen;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.registry.VillagerRegistry;
|
||||||
|
import net.minecraft.world.gen.structure.StructureVillagePieces;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
public class VillageCustomCropFieldHandler implements VillagerRegistry.IVillageCreationHandler{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public StructureVillagePieces.PieceWeight getVillagePieceWeight(Random random, int i){
|
||||||
|
return new StructureVillagePieces.PieceWeight(VillageComponentCustomCropField.class, 5, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<?> getComponentClass(){
|
||||||
|
return VillageComponentCustomCropField.class;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Object buildComponent(StructureVillagePieces.PieceWeight villagePiece, StructureVillagePieces.Start startPiece, List pieces, Random random, int p1, int p2, int p3, int p4, int p5){
|
||||||
|
return VillageComponentCustomCropField.buildComponent(pieces, p1, p2, p3, p4);
|
||||||
|
}
|
||||||
|
}
|
|
@ -159,19 +159,19 @@ public class InitItems{
|
||||||
itemCoffeeBean = new ItemCoffeeBean();
|
itemCoffeeBean = new ItemCoffeeBean();
|
||||||
ItemUtil.register(itemCoffeeBean);
|
ItemUtil.register(itemCoffeeBean);
|
||||||
|
|
||||||
itemRiceSeed = new ItemSeed("itemRiceSeed", InitBlocks.blockRice, itemFoods, TheFoods.RICE.ordinal());
|
itemRiceSeed = new ItemSeed("itemRiceSeed", "seedRice", InitBlocks.blockRice, itemFoods, TheFoods.RICE.ordinal());
|
||||||
ItemUtil.register(itemRiceSeed);
|
ItemUtil.register(itemRiceSeed);
|
||||||
CompatUtil.registerMFRSeed(itemRiceSeed);
|
CompatUtil.registerMFRSeed(itemRiceSeed);
|
||||||
|
|
||||||
itemCanolaSeed = new ItemSeed("itemCanolaSeed", InitBlocks.blockCanola, itemMisc, TheMiscItems.CANOLA.ordinal());
|
itemCanolaSeed = new ItemSeed("itemCanolaSeed", "seedCanola", InitBlocks.blockCanola, itemMisc, TheMiscItems.CANOLA.ordinal());
|
||||||
ItemUtil.register(itemCanolaSeed);
|
ItemUtil.register(itemCanolaSeed);
|
||||||
CompatUtil.registerMFRSeed(itemCanolaSeed);
|
CompatUtil.registerMFRSeed(itemCanolaSeed);
|
||||||
|
|
||||||
itemFlaxSeed = new ItemSeed("itemFlaxSeed", InitBlocks.blockFlax, Items.string, 0);
|
itemFlaxSeed = new ItemSeed("itemFlaxSeed", "seedFlax", InitBlocks.blockFlax, Items.string, 0);
|
||||||
ItemUtil.register(itemFlaxSeed);
|
ItemUtil.register(itemFlaxSeed);
|
||||||
CompatUtil.registerMFRSeed(itemFlaxSeed);
|
CompatUtil.registerMFRSeed(itemFlaxSeed);
|
||||||
|
|
||||||
itemCoffeeSeed = new ItemSeed("itemCoffeeSeed", InitBlocks.blockCoffee, itemCoffeeBean, 0);
|
itemCoffeeSeed = new ItemSeed("itemCoffeeSeed", "seedCoffeeBeans", InitBlocks.blockCoffee, itemCoffeeBean, 0);
|
||||||
ItemUtil.register(itemCoffeeSeed);
|
ItemUtil.register(itemCoffeeSeed);
|
||||||
CompatUtil.registerMFRSeed(itemCoffeeSeed);
|
CompatUtil.registerMFRSeed(itemCoffeeSeed);
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,7 @@ public class ItemCoffeeBean extends ItemFood implements INameableItem{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getOredictName(){
|
public String getOredictName(){
|
||||||
return this.getName();
|
return "cropCoffeeBeans";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -23,10 +23,12 @@ public class ItemSeed extends ItemSeeds implements INameableItem{
|
||||||
|
|
||||||
public Block plant;
|
public Block plant;
|
||||||
public String name;
|
public String name;
|
||||||
|
public String oredictName;
|
||||||
|
|
||||||
public ItemSeed(String name, Block plant, Item returnItem, int returnMeta){
|
public ItemSeed(String name, String oredictName, Block plant, Item returnItem, int returnMeta){
|
||||||
super(plant, Blocks.farmland);
|
super(plant, Blocks.farmland);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
|
this.oredictName = oredictName;
|
||||||
this.plant = plant;
|
this.plant = plant;
|
||||||
((BlockPlant)this.plant).seedItem = this;
|
((BlockPlant)this.plant).seedItem = this;
|
||||||
((BlockPlant)this.plant).returnItem = returnItem;
|
((BlockPlant)this.plant).returnItem = returnItem;
|
||||||
|
@ -72,6 +74,6 @@ public class ItemSeed extends ItemSeeds implements INameableItem{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getOredictName(){
|
public String getOredictName(){
|
||||||
return this.getName();
|
return this.oredictName;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -24,7 +24,7 @@ public enum TheFoods implements INameableItem{
|
||||||
HAMBURGER("Hamburger", 14, 6F, false, 40, EnumRarity.common, "foodHamburger"),
|
HAMBURGER("Hamburger", 14, 6F, false, 40, EnumRarity.common, "foodHamburger"),
|
||||||
PIZZA("Pizza", 20, 10F, false, 45, EnumRarity.uncommon, "foodPizza"),
|
PIZZA("Pizza", 20, 10F, false, 45, EnumRarity.uncommon, "foodPizza"),
|
||||||
BAGUETTE("Baguette", 7, 2F, false, 25, EnumRarity.common, "foodBaguette"),
|
BAGUETTE("Baguette", 7, 2F, false, 25, EnumRarity.common, "foodBaguette"),
|
||||||
RICE("Rice", 2, 1F, false, 10, EnumRarity.uncommon, "foodRice"),
|
RICE("Rice", 2, 1F, false, 10, EnumRarity.uncommon, "cropRice"),
|
||||||
RICE_BREAD("RiceBread", 8, 3F, false, 25, EnumRarity.uncommon, "foodRiceBread");
|
RICE_BREAD("RiceBread", 8, 3F, false, 25, EnumRarity.uncommon, "foodRiceBread");
|
||||||
|
|
||||||
public static void setReturnItems(){
|
public static void setReturnItems(){
|
||||||
|
|
|
@ -18,7 +18,7 @@ public enum TheMiscItems implements INameableItem{
|
||||||
TINY_COAL("TinyCoal", EnumRarity.common, "itemTinyCoal"),
|
TINY_COAL("TinyCoal", EnumRarity.common, "itemTinyCoal"),
|
||||||
TINY_CHAR("TinyCharcoal", EnumRarity.common, "itemTinyChar"),
|
TINY_CHAR("TinyCharcoal", EnumRarity.common, "itemTinyChar"),
|
||||||
RICE_SLIME("RiceSlime", EnumRarity.uncommon, "slimeball"),
|
RICE_SLIME("RiceSlime", EnumRarity.uncommon, "slimeball"),
|
||||||
CANOLA("Canola", EnumRarity.uncommon, "itemCanola"),
|
CANOLA("Canola", EnumRarity.uncommon, "cropCanola"),
|
||||||
CUP("Cup", EnumRarity.uncommon, "itemCup");
|
CUP("Cup", EnumRarity.uncommon, "itemCup");
|
||||||
|
|
||||||
public final String name;
|
public final String name;
|
||||||
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
package ellpeck.actuallyadditions.misc;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockDispenser;
|
||||||
|
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
|
||||||
|
import net.minecraft.dispenser.IBlockSource;
|
||||||
|
import net.minecraft.init.Items;
|
||||||
|
import net.minecraft.item.ItemBucket;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
|
||||||
|
public class DispenserHandlerEmptyBucket extends BehaviorDefaultDispenseItem{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack dispenseStack(IBlockSource source, ItemStack bucket){
|
||||||
|
EnumFacing facing = BlockDispenser.func_149937_b(source.getBlockMetadata());
|
||||||
|
int x = source.getXInt()+facing.getFrontOffsetX();
|
||||||
|
int y = source.getYInt()+facing.getFrontOffsetY();
|
||||||
|
int z = source.getZInt()+facing.getFrontOffsetZ();
|
||||||
|
|
||||||
|
if(source.getWorld().isAirBlock(x, y, z) && !source.getWorld().getBlock(x, y, z).getMaterial().isSolid() && ((ItemBucket)bucket.getItem()).tryPlaceContainedLiquid(source.getWorld(), x, y, z)){
|
||||||
|
return new ItemStack(Items.bucket);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new BehaviorDefaultDispenseItem().dispense(source, bucket);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package ellpeck.actuallyadditions.misc;
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockDispenser;
|
||||||
|
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
|
||||||
|
import net.minecraft.dispenser.IBlockSource;
|
||||||
|
import net.minecraft.item.ItemDye;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumFacing;
|
||||||
|
|
||||||
|
public class DispenserHandlerFertilize extends BehaviorDefaultDispenseItem{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack dispenseStack(IBlockSource source, ItemStack stack){
|
||||||
|
EnumFacing facing = BlockDispenser.func_149937_b(source.getBlockMetadata());
|
||||||
|
int x = source.getXInt()+facing.getFrontOffsetX();
|
||||||
|
int y = source.getYInt()+facing.getFrontOffsetY();
|
||||||
|
int z = source.getZInt()+facing.getFrontOffsetZ();
|
||||||
|
|
||||||
|
if(ItemDye.applyBonemeal(stack, source.getWorld(), x, y, z, null)){
|
||||||
|
source.getWorld().playAuxSFX(2005, x, y, z, 0);
|
||||||
|
}
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue