Created mimic blocks

This commit is contained in:
WayofTime 2016-08-14 14:53:25 -04:00
parent c201beb87f
commit 9508eec4b0
7 changed files with 220 additions and 0 deletions

View file

@ -288,6 +288,7 @@ public class Constants
DEMON_CRYSTAL("BlockDemonCrystal"), DEMON_CRYSTAL("BlockDemonCrystal"),
DIMENSIONAL_PORTAL("BlockDimensionalPortal"), DIMENSIONAL_PORTAL("BlockDimensionalPortal"),
BLOOD_TANK("BlockBloodTank"), BLOOD_TANK("BlockBloodTank"),
MIMIC("BlockMimic"),
ALCHEMY_TABLE("BlockAlchemyTable"); ALCHEMY_TABLE("BlockAlchemyTable");
@Getter @Getter

View file

@ -0,0 +1,132 @@
package WayofTime.bloodmagic.block;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nullable;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api.Constants;
import WayofTime.bloodmagic.block.base.BlockStringContainer;
import WayofTime.bloodmagic.client.IVariantProvider;
import WayofTime.bloodmagic.tile.TileMimic;
import WayofTime.bloodmagic.util.Utils;
public class BlockMimic extends BlockStringContainer implements IVariantProvider
{
public static final String[] names = { "nohitbox" };
public BlockMimic()
{
super(Material.ROCK, names);
setUnlocalizedName(Constants.Mod.MODID + ".mimic.");
setCreativeTab(BloodMagic.tabBloodMagic);
setHardness(2.0F);
setResistance(5.0F);
setSoundType(SoundType.STONE);
setHarvestLevel("pickaxe", 0);
}
@Nullable
public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos)
{
return NULL_AABB;
}
@Override
public boolean onBlockActivated(World world, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ)
{
TileMimic mimic = (TileMimic) world.getTileEntity(pos);
if (mimic == null || player.isSneaking())
return false;
Utils.insertItemToTile(mimic, player);
world.notifyBlockUpdate(pos, state, state, 3);
return true;
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess world, BlockPos pos)
{
TileEntity tile = world.getTileEntity(pos);
if (tile instanceof TileMimic)
{
TileMimic mimic = (TileMimic) tile;
ItemStack stack = mimic.getStackInSlot(0);
if (stack != null && stack.getItem() instanceof ItemBlock)
{
Block block = ((ItemBlock) stack.getItem()).getBlock();
IBlockState mimicState = block.getStateFromMeta(stack.getItemDamage());
return mimicState;
}
}
return state;
}
@Override
public boolean isFullCube(IBlockState state)
{
return false;
}
@Override
public boolean isNormalCube(IBlockState state, IBlockAccess world, BlockPos pos)
{
return false;
}
@Override
public boolean isVisuallyOpaque()
{
return false;
}
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
@Override
public boolean canRenderInLayer(IBlockState state, BlockRenderLayer layer)
{
return layer == BlockRenderLayer.CUTOUT_MIPPED || layer == BlockRenderLayer.TRANSLUCENT;
}
@Override
public List<Pair<Integer, String>> getVariants()
{
List<Pair<Integer, String>> ret = new ArrayList<Pair<Integer, String>>();
for (int i = 0; i < names.length; i++)
ret.add(new ImmutablePair<Integer, String>(i, "type=" + names[i]));
return ret;
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta)
{
return new TileMimic();
}
}

View file

@ -0,0 +1,27 @@
package WayofTime.bloodmagic.item.block;
import net.minecraft.block.Block;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import WayofTime.bloodmagic.block.BlockMimic;
public class ItemBlockMimic extends ItemBlock
{
public ItemBlockMimic(Block block)
{
super(block);
setHasSubtypes(true);
}
@Override
public String getUnlocalizedName(ItemStack stack)
{
return super.getUnlocalizedName(stack) + BlockMimic.names[stack.getItemDamage()];
}
@Override
public int getMetadata(int meta)
{
return meta;
}
}

View file

@ -28,6 +28,7 @@ import WayofTime.bloodmagic.block.BlockInputRoutingNode;
import WayofTime.bloodmagic.block.BlockItemRoutingNode; import WayofTime.bloodmagic.block.BlockItemRoutingNode;
import WayofTime.bloodmagic.block.BlockLifeEssence; import WayofTime.bloodmagic.block.BlockLifeEssence;
import WayofTime.bloodmagic.block.BlockMasterRoutingNode; import WayofTime.bloodmagic.block.BlockMasterRoutingNode;
import WayofTime.bloodmagic.block.BlockMimic;
import WayofTime.bloodmagic.block.BlockOutputRoutingNode; import WayofTime.bloodmagic.block.BlockOutputRoutingNode;
import WayofTime.bloodmagic.block.BlockPath; import WayofTime.bloodmagic.block.BlockPath;
import WayofTime.bloodmagic.block.BlockPedestal; import WayofTime.bloodmagic.block.BlockPedestal;
@ -43,6 +44,7 @@ import WayofTime.bloodmagic.item.block.ItemBlockBloodStoneBrick;
import WayofTime.bloodmagic.item.block.ItemBlockBloodTank; import WayofTime.bloodmagic.item.block.ItemBlockBloodTank;
import WayofTime.bloodmagic.item.block.ItemBlockCrystal; import WayofTime.bloodmagic.item.block.ItemBlockCrystal;
import WayofTime.bloodmagic.item.block.ItemBlockDemonCrystal; import WayofTime.bloodmagic.item.block.ItemBlockDemonCrystal;
import WayofTime.bloodmagic.item.block.ItemBlockMimic;
import WayofTime.bloodmagic.item.block.ItemBlockPath; import WayofTime.bloodmagic.item.block.ItemBlockPath;
import WayofTime.bloodmagic.item.block.ItemBlockPedestal; import WayofTime.bloodmagic.item.block.ItemBlockPedestal;
import WayofTime.bloodmagic.item.block.ItemBlockRitualController; import WayofTime.bloodmagic.item.block.ItemBlockRitualController;
@ -60,6 +62,7 @@ import WayofTime.bloodmagic.tile.TileDimensionalPortal;
import WayofTime.bloodmagic.tile.TileImperfectRitualStone; import WayofTime.bloodmagic.tile.TileImperfectRitualStone;
import WayofTime.bloodmagic.tile.TileIncenseAltar; import WayofTime.bloodmagic.tile.TileIncenseAltar;
import WayofTime.bloodmagic.tile.TileMasterRitualStone; import WayofTime.bloodmagic.tile.TileMasterRitualStone;
import WayofTime.bloodmagic.tile.TileMimic;
import WayofTime.bloodmagic.tile.TilePhantomBlock; import WayofTime.bloodmagic.tile.TilePhantomBlock;
import WayofTime.bloodmagic.tile.TilePlinth; import WayofTime.bloodmagic.tile.TilePlinth;
import WayofTime.bloodmagic.tile.TileSoulForge; import WayofTime.bloodmagic.tile.TileSoulForge;
@ -108,6 +111,8 @@ public class ModBlocks
public static Block dimensionalPortal; public static Block dimensionalPortal;
public static Block bloodTank; public static Block bloodTank;
public static Block mimic;
public static void init() public static void init()
{ {
FluidRegistry.registerFluid(BlockLifeEssence.getLifeEssence()); FluidRegistry.registerFluid(BlockLifeEssence.getLifeEssence());
@ -143,6 +148,8 @@ public class ModBlocks
dimensionalPortal = registerBlock(new BlockDimensionalPortal(), Constants.BloodMagicBlock.DIMENSIONAL_PORTAL.getRegName()); dimensionalPortal = registerBlock(new BlockDimensionalPortal(), Constants.BloodMagicBlock.DIMENSIONAL_PORTAL.getRegName());
bloodTank = registerBlock(new ItemBlockBloodTank(new BlockBloodTank()), Constants.BloodMagicBlock.BLOOD_TANK.getRegName()); bloodTank = registerBlock(new ItemBlockBloodTank(new BlockBloodTank()), Constants.BloodMagicBlock.BLOOD_TANK.getRegName());
mimic = registerBlock(new ItemBlockMimic(new BlockMimic()), Constants.BloodMagicBlock.MIMIC.getRegName());
// testSpellBlock = registerBlock(new BlockTestSpellBlock()); // testSpellBlock = registerBlock(new BlockTestSpellBlock());
BloodMagicAPI.addToTeleposerBlacklist(inputRoutingNode); BloodMagicAPI.addToTeleposerBlacklist(inputRoutingNode);
@ -181,6 +188,7 @@ public class ModBlocks
GameRegistry.registerTileEntity(TileDimensionalPortal.class, Constants.Mod.MODID + ":" + TileDimensionalPortal.class.getSimpleName()); GameRegistry.registerTileEntity(TileDimensionalPortal.class, Constants.Mod.MODID + ":" + TileDimensionalPortal.class.getSimpleName());
GameRegistry.registerTileEntity(TileBloodTank.class, Constants.Mod.MODID + ":" + TileBloodTank.class.getSimpleName()); GameRegistry.registerTileEntity(TileBloodTank.class, Constants.Mod.MODID + ":" + TileBloodTank.class.getSimpleName());
GameRegistry.registerTileEntity(TileMimic.class, Constants.Mod.MODID + ":" + TileMimic.class.getSimpleName());
} }
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)

View file

@ -0,0 +1,32 @@
package WayofTime.bloodmagic.tile;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
public class TileMimic extends TileInventory
{
public TileMimic()
{
super(1, "mimic");
}
@Override
public void readFromNBT(NBTTagCompound tagCompound)
{
super.readFromNBT(tagCompound);
}
@Override
public NBTTagCompound writeToNBT(NBTTagCompound tagCompound)
{
super.writeToNBT(tagCompound);
return tagCompound;
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack itemstack)
{
return slot == 0;
}
}

View file

@ -0,0 +1,18 @@
{
"forge_marker": 1,
"defaults": {
"textures": { },
"model": "cube_all",
"uvlock": true
},
"variants": {
"type": {
"nohitbox": {
"textures": {
"all": "bloodmagic:blocks/LargeBloodStoneBrick"
}
}
}
}
}

View file

@ -250,6 +250,8 @@ tile.BloodMagic.demonCrystalDESTRUCTIVE.name=Destructive Will Crystal Cluster
tile.BloodMagic.demonCrystalVENGEFUL.name=Vengeful Will Crystal Cluster tile.BloodMagic.demonCrystalVENGEFUL.name=Vengeful Will Crystal Cluster
tile.BloodMagic.demonCrystalSTEADFAST.name=Steadfast Will Crystal Cluster tile.BloodMagic.demonCrystalSTEADFAST.name=Steadfast Will Crystal Cluster
tile.BloodMagic.mimic.nohitbox.name=Ethereal Mimic Block
# Fluids # Fluids
fluid.lifeEssence=Life Essence fluid.lifeEssence=Life Essence