Added the Red String Comparator and Spoofer.

This commit is contained in:
Lizbeth Rika committed 2014-11-16 23:23:52 +00:00
1 parent e60717ed76
commit f99883c93c
11 files changed
+198 -3

No files matched your search

@@ -140,6 +140,11 @@ public class BlockSpecialFlower extends BlockFlower implements ITileEntityProvid
return ItemBlockSpecialFlower.ofType(name);
}
@Override
protected boolean canPlaceBlockOn(Block block) {
return super.canPlaceBlockOn(block) || block == ModBlocks.redStringRelay;
}
@Override
public void onBlockHarvested(World par1World, int par2, int par3, int par4, int par5, EntityPlayer par6EntityPlayer) {
if(!par6EntityPlayer.capabilities.isCreativeMode)
@@ -70,9 +70,11 @@ import vazkii.botania.common.block.decor.stairs.prismarine.BlockPrismarineBrickS
import vazkii.botania.common.block.decor.stairs.prismarine.BlockPrismarineStairs;
import vazkii.botania.common.block.dispenser.BehaviourSeeds;
import vazkii.botania.common.block.dispenser.BehaviourWand;
import vazkii.botania.common.block.string.BlockRedStringComparator;
import vazkii.botania.common.block.string.BlockRedStringContainer;
import vazkii.botania.common.block.string.BlockRedStringDispenser;
import vazkii.botania.common.block.string.BlockRedStringFertilizer;
import vazkii.botania.common.block.string.BlockRedStringRelay;
import vazkii.botania.common.block.subtile.SubTileManastar;
import vazkii.botania.common.block.subtile.SubTilePureDaisy;
import vazkii.botania.common.block.subtile.functional.SubTileAgricarnation;
@@ -131,9 +133,11 @@ import vazkii.botania.common.block.tile.mana.TilePool;
import vazkii.botania.common.block.tile.mana.TileRFGenerator;
import vazkii.botania.common.block.tile.mana.TileSpreader;
import vazkii.botania.common.block.tile.mana.TileTurntable;
import vazkii.botania.common.block.tile.string.TileRedStringComparator;
import vazkii.botania.common.block.tile.string.TileRedStringContainer;
import vazkii.botania.common.block.tile.string.TileRedStringDispenser;
import vazkii.botania.common.block.tile.string.TileRedStringFertilizer;
import vazkii.botania.common.block.tile.string.TileRedStringRelay;
import vazkii.botania.common.core.handler.ConfigHandler;
import vazkii.botania.common.item.ModItems;
import vazkii.botania.common.lib.LibBlockNames;
@@ -191,6 +195,8 @@ public final class ModBlocks {
public static Block redStringContainer;
public static Block redStringDispenser;
public static Block redStringFertilizer;
public static Block redStringComparator;
public static Block redStringRelay;
public static Block livingwoodStairs;
public static Block livingwoodSlab;
@@ -316,6 +322,8 @@ public final class ModBlocks {
redStringContainer = new BlockRedStringContainer();
redStringDispenser = new BlockRedStringDispenser();
redStringFertilizer = new BlockRedStringFertilizer();
redStringComparator = new BlockRedStringComparator();
redStringRelay = new BlockRedStringRelay();
livingwoodStairs = new BlockLivingwoodStairs();
livingwoodSlab = new BlockLivingwoodSlab(false);
@@ -499,6 +507,8 @@ public final class ModBlocks {
registerTile(TileRedStringContainer.class, LibBlockNames.RED_STRING_CONTAINER);
registerTile(TileRedStringDispenser.class, LibBlockNames.RED_STRING_DISPENSER);
registerTile(TileRedStringFertilizer.class, LibBlockNames.RED_STRING_FERTILIZER);
registerTile(TileRedStringComparator.class, LibBlockNames.RED_STRING_COMPARATOR);
registerTile(TileRedStringRelay.class, LibBlockNames.RED_STRING_RELAY);
BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_PUREDAISY, SubTilePureDaisy.class);
BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_MANASTAR, SubTileManastar.class);
@@ -0,0 +1,40 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under a
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
*
* File Created @ [Nov 16, 2014, 10:19:28 PM (GMT)]
*/
package vazkii.botania.common.block.string;
import net.minecraft.world.World;
import vazkii.botania.common.block.tile.string.TileRedString;
import vazkii.botania.common.block.tile.string.TileRedStringComparator;
import vazkii.botania.common.lib.LibBlockNames;
public class BlockRedStringComparator extends BlockRedString {
public BlockRedStringComparator() {
super(LibBlockNames.RED_STRING_COMPARATOR);
}
@Override
public boolean hasComparatorInputOverride() {
return true;
}
@Override
public int getComparatorInputOverride(World world, int x, int y, int z, int side) {
return ((TileRedStringComparator) world.getTileEntity(x, y, z)).getComparatorValue();
}
@Override
public TileRedString createNewTileEntity(World world, int meta) {
return new TileRedStringComparator();
}
}
@@ -0,0 +1,33 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under a
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
*
* File Created @ [Nov 16, 2014, 10:46:48 PM (GMT)]
*/
package vazkii.botania.common.block.string;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.IPlantable;
import net.minecraftforge.common.util.ForgeDirection;
import vazkii.botania.common.block.tile.string.TileRedString;
import vazkii.botania.common.block.tile.string.TileRedStringRelay;
import vazkii.botania.common.lib.LibBlockNames;
public class BlockRedStringRelay extends BlockRedString {
public BlockRedStringRelay() {
super(LibBlockNames.RED_STRING_RELAY);
}
@Override
public TileRedString createNewTileEntity(World world, int meta) {
return new TileRedStringRelay();
}
}
@@ -17,6 +17,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.IIcon;
import vazkii.botania.api.BotaniaAPI;
@@ -24,6 +25,7 @@ import vazkii.botania.api.lexicon.LexiconEntry;
import vazkii.botania.api.subtile.ISubTileContainer;
import vazkii.botania.api.subtile.SubTileEntity;
import vazkii.botania.api.wand.IWandBindable;
import vazkii.botania.common.block.tile.string.TileRedStringRelay;
public class TileSpecialFlower extends TileMod implements IWandBindable, ISubTileContainer {
@@ -63,8 +65,28 @@ public class TileSpecialFlower extends TileMod implements IWandBindable, ISubTil
@Override
public void updateEntity() {
if(subTile != null)
if(subTile != null) {
TileEntity tileBelow = worldObj.getTileEntity(xCoord, yCoord - 1, zCoord);
if(tileBelow instanceof TileRedStringRelay) {
ChunkCoordinates coords = ((TileRedStringRelay) tileBelow).getBinding();
if(coords != null) {
int currX = xCoord;
int currY = yCoord;
int currZ = zCoord;
xCoord = coords.posX;
yCoord = coords.posY;
zCoord = coords.posZ;
subTile.onUpdate();
xCoord = currX;
yCoord = currY;
zCoord = currZ;
return;
}
}
subTile.onUpdate();
}
}
@Override
@@ -26,7 +26,7 @@ public abstract class TileRedString extends TileMod implements ITileBound {
@Override
public void updateEntity() {
ForgeDirection dir = ForgeDirection.getOrientation(getBlockMetadata());
ForgeDirection dir = getOrientation();
int x = xCoord;
int y = yCoord;
int z = zCoord;
@@ -78,6 +78,10 @@ public abstract class TileRedString extends TileMod implements ITileBound {
this.binding = binding;
}
public ForgeDirection getOrientation() {
return ForgeDirection.getOrientation(getBlockMetadata());
}
public TileEntity getTileAtBinding() {
ChunkCoordinates binding = getBinding();
return binding == null ? null : worldObj.getTileEntity(binding.posX, binding.posY, binding.posZ);
@@ -0,0 +1,50 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under a
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
*
* File Created @ [Nov 16, 2014, 10:22:01 PM (GMT)]
*/
package vazkii.botania.common.block.tile.string;
import net.minecraft.block.Block;
import net.minecraft.util.ChunkCoordinates;
import net.minecraftforge.common.util.ForgeDirection;
public class TileRedStringComparator extends TileRedString {
int comparatorValue = 0;
@Override
public void updateEntity() {
super.updateEntity();
ChunkCoordinates binding = getBinding();
ForgeDirection dir = getOrientation();
Block block = getBlockAtBinding();
int origVal = comparatorValue;
if(block.hasComparatorInputOverride()) {
int val = block.getComparatorInputOverride(worldObj, binding.posX, binding.posY, binding.posZ, dir.getOpposite().ordinal());
comparatorValue = val;
} else comparatorValue = 0;
if(origVal != comparatorValue)
worldObj.func_147453_f(xCoord, yCoord, zCoord, worldObj.getBlock(xCoord, yCoord, zCoord));
}
public int getComparatorValue() {
return comparatorValue;
}
@Override
public boolean acceptBlock(int x, int y, int z) {
Block block = worldObj.getBlock(x, y, z);
return block.hasComparatorInputOverride();
}
}
@@ -0,0 +1,28 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under a
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
*
* File Created @ [Nov 16, 2014, 10:52:21 PM (GMT)]
*/
package vazkii.botania.common.block.tile.string;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFlower;
public class TileRedStringRelay extends TileRedString {
@Override
public boolean acceptBlock(int x, int y, int z) {
if(x == xCoord && y == yCoord + 1 && z == zCoord)
return false;
Block block = worldObj.getBlock(x, y, z);
return block instanceof BlockFlower;
}
}
@@ -114,6 +114,7 @@ public final class BotaniaCreativeTab extends CreativeTabs {
addBlock(ModBlocks.redStringContainer);
addBlock(ModBlocks.redStringDispenser);
addBlock(ModBlocks.redStringFertilizer);
addBlock(ModBlocks.redStringComparator);
addBlock(ModBlocks.shinyFlower);
addBlock(ModBlocks.miniIsland);
@@ -64,6 +64,8 @@ public final class LibBlockNames {
public static final String RED_STRING_CONTAINER = "redStringContainer";
public static final String RED_STRING_DISPENSER = "redStringDispenser";
public static final String RED_STRING_FERTILIZER = "redStringFertilizer";
public static final String RED_STRING_COMPARATOR = "redStringComparator";
public static final String RED_STRING_RELAY = "redStringRelay";
public static final String SUBTILE_PUREDAISY = "puredaisy";
public static final String SUBTILE_MANASTAR = "manastar";