Added Ring of Growh, tweaked Greenhouse Glass a bit

This commit is contained in:
Ellpeck 2015-07-25 11:06:10 +02:00
parent 2d9af1748c
commit 4940a6e6f9
6 changed files with 128 additions and 11 deletions

View file

@ -125,7 +125,7 @@ public class CreativeTab extends CreativeTabs{
add(InitItems.diamondPaxel);
add(InitItems.emeraldPaxel);
add(InitItems.obsidianPaxel);
InitForeignPaxels.addToCreativeTab(this.list);
InitForeignPaxels.addToCreativeTab();
add(InitItems.itemPickaxeQuartz);
add(InitItems.itemSwordQuartz);
@ -176,11 +176,11 @@ public class CreativeTab extends CreativeTabs{
return new ItemStack(this.getTabIconItem());
}
private void add(Item item){
public void add(Item item){
item.getSubItems(item, instance, this.list);
}
private void add(Block block){
public void add(Block block){
block.getSubBlocks(new ItemStack(block).getItem(), instance, this.list);
}
}

View file

@ -13,8 +13,6 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemTool;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import java.util.List;
public class InitForeignPaxels{
private static final String THERMAL_FOUNDATION = "ThermalFoundation";
@ -83,15 +81,15 @@ public class InitForeignPaxels{
}
}
public static void addToCreativeTab(List list){
public static void addToCreativeTab(){
for(Item item : tfPaxels){
if(item != null){
item.getSubItems(item, CreativeTab.instance, list);
CreativeTab.instance.add(item);
}
}
for(Item item : mtPaxels){
if(item != null){
item.getSubItems(item, CreativeTab.instance, list);
CreativeTab.instance.add(item);
}
}
}

View file

@ -108,9 +108,14 @@ public class InitItems{
public static Item itemTeleStaff;
public static Item itemWingsOfTheBats;
public static Item itemGrowthRing;
public static void init(){
ModUtil.LOGGER.info("Initializing Items...");
itemGrowthRing = new ItemGrowthRing();
ItemUtil.register(itemGrowthRing);
itemHelmEmerald = new ItemArmorAA("itemHelmEmerald", InitArmorMaterials.armorMaterialEmerald, 0, "gemEmerald", "armorEmerald");
itemChestEmerald = new ItemArmorAA("itemChestEmerald", InitArmorMaterials.armorMaterialEmerald, 1, "gemEmerald", "armorEmerald");
itemPantsEmerald = new ItemArmorAA("itemPantsEmerald", InitArmorMaterials.armorMaterialEmerald, 2, "gemEmerald", "armorEmerald");

View file

@ -0,0 +1,109 @@
package ellpeck.actuallyadditions.items;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import ellpeck.actuallyadditions.util.INameableItem;
import ellpeck.actuallyadditions.util.ModUtil;
import ellpeck.actuallyadditions.util.WorldPos;
import net.minecraft.block.Block;
import net.minecraft.block.BlockGrass;
import net.minecraft.block.IGrowable;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import net.minecraftforge.common.IPlantable;
import java.util.ArrayList;
import java.util.Random;
public class ItemGrowthRing extends ItemEnergy implements INameableItem{
private static final int RANGE = 5;
private static final int ENERGY_USED_PER_TICK = 800;
//The waiting time per growth cycle
private static final int WAIT_TIME = 30;
//The amount of Growth Ticks given to random plants around
private static final int GROWTH_TICKS_PER_CYCLE = 50;
public ItemGrowthRing(){
super(1000000, 5000, 2);
}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5){
if(!(entity instanceof EntityPlayer) || world.isRemote) return;
EntityPlayer player = (EntityPlayer)entity;
ItemStack equipped = player.getCurrentEquippedItem();
if(equipped != null && equipped == stack && this.getEnergyStored(stack) >= ENERGY_USED_PER_TICK){
ArrayList<WorldPos> blocks = new ArrayList<WorldPos>();
if(stack.stackTagCompound == null) stack.setTagCompound(new NBTTagCompound());
int waitTime = stack.stackTagCompound.getInteger("WaitTime");
//Adding all possible Blocks
if(waitTime >= WAIT_TIME){
for(int x = -RANGE; x < RANGE+1; x++){
for(int z = -RANGE; z < RANGE+1; z++){
for(int y = -RANGE; y < RANGE+1; y++){
int theX = (int)player.posX+x;
int theY = (int)player.posY+y;
int theZ = (int)player.posZ+z;
Block theBlock = world.getBlock(theX, theY, theZ);
if((theBlock instanceof IGrowable || theBlock instanceof IPlantable) && !(theBlock instanceof BlockGrass)){
blocks.add(new WorldPos(world, theX, theY, theZ));
}
}
}
}
//Fertilizing the Blocks
if(!blocks.isEmpty()){
for(int i = 0; i < GROWTH_TICKS_PER_CYCLE; i++){
WorldPos pos = blocks.get(new Random().nextInt(blocks.size()));
int metaBefore = pos.getMetadata();
pos.getBlock().updateTick(world, pos.getX(), pos.getY(), pos.getZ(), world.rand);
//Show Particles if Metadata changed
if(pos.getMetadata() != metaBefore){
pos.getWorld().playAuxSFX(2005, pos.getX(), pos.getY(), pos.getZ(), 0);
}
}
}
stack.stackTagCompound.setInteger("WaitTime", 0);
}
else stack.stackTagCompound.setInteger("WaitTime", waitTime+1);
//Use Energy every tick
this.extractEnergy(stack, ENERGY_USED_PER_TICK, false);
}
}
@Override
public EnumRarity getRarity(ItemStack stack){
return EnumRarity.epic;
}
@Override
public IIcon getIcon(ItemStack stack, int pass){
return this.itemIcon;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister iconReg){
this.itemIcon = iconReg.registerIcon(ModUtil.MOD_ID_LOWER + ":" + this.getName());
}
@Override
public String getName(){
return "itemGrowthRing";
}
}

View file

@ -45,7 +45,7 @@ public class ItemPotionRing extends Item implements INameableItem{
ThePotionRings effect = ThePotionRings.values()[stack.getItemDamage()];
if(!effect.needsWaitBeforeActivating || !thePlayer.isPotionActive(effect.effectID)){
if(!((ItemPotionRing)stack.getItem()).isAdvanced){
if(equippedStack != null && stack.isItemEqual(equippedStack)){
if(equippedStack != null && stack == equippedStack){
thePlayer.addPotionEffect(new PotionEffect(effect.effectID, effect.activeTime, effect.normalAmplifier, true));
}
}

View file

@ -5,6 +5,7 @@ import ellpeck.actuallyadditions.util.WorldPos;
import net.minecraft.block.Block;
import net.minecraft.block.BlockGrass;
import net.minecraft.block.IGrowable;
import net.minecraftforge.common.IPlantable;
import java.util.Random;
@ -23,8 +24,12 @@ public class TileEntityGreenhouseGlass extends TileEntityBase{
if(this.timeUntilNextFert > 0){
this.timeUntilNextFert--;
if(timeUntilNextFert <= 0){
int metaBefore = blockToFert.getMetadata();
worldObj.getBlock(blockToFert.getX(), blockToFert.getY(), blockToFert.getZ()).updateTick(worldObj, blockToFert.getX(), blockToFert.getY(), blockToFert.getZ(), worldObj.rand);
worldObj.playAuxSFX(2005, blockToFert.getX(), blockToFert.getY(), blockToFert.getZ(), 0);
if(blockToFert.getMetadata() != metaBefore){
worldObj.playAuxSFX(2005, blockToFert.getX(), blockToFert.getY(), blockToFert.getZ(), 0);
}
}
}
else this.timeUntilNextFert = this.timeUntilNextFertToSet+new Random().nextInt(this.timeUntilNextFertToSet);
@ -37,7 +42,7 @@ public class TileEntityGreenhouseGlass extends TileEntityBase{
for(int i = yCoord-1; i > 0; i--){
Block block = worldObj.getBlock(xCoord, i, zCoord);
if(block != null && !(worldObj.isAirBlock(xCoord, i, zCoord))){
if(block instanceof IGrowable && !(block instanceof BlockGrass)){
if((block instanceof IGrowable || block instanceof IPlantable) && !(block instanceof BlockGrass)){
return new WorldPos(worldObj, xCoord, i, zCoord);
}
else return null;