121 lines
3.4 KiB
Java
121 lines
3.4 KiB
Java
|
package StevenDimDoors.mod_pocketDim.blocks;
|
||
|
|
||
|
import java.util.Random;
|
||
|
|
||
|
import net.minecraft.block.Block;
|
||
|
import net.minecraft.block.BlockTrapDoor;
|
||
|
import net.minecraft.block.ITileEntityProvider;
|
||
|
import net.minecraft.block.material.Material;
|
||
|
import net.minecraft.client.renderer.texture.IconRegister;
|
||
|
import net.minecraft.entity.Entity;
|
||
|
import net.minecraft.item.ItemDoor;
|
||
|
import net.minecraft.tileentity.TileEntity;
|
||
|
import net.minecraft.world.World;
|
||
|
import StevenDimDoors.mod_pocketDim.mod_pocketDim;
|
||
|
import StevenDimDoors.mod_pocketDim.core.DDTeleporter;
|
||
|
import StevenDimDoors.mod_pocketDim.core.DimLink;
|
||
|
import StevenDimDoors.mod_pocketDim.core.LinkTypes;
|
||
|
import StevenDimDoors.mod_pocketDim.core.NewDimData;
|
||
|
import StevenDimDoors.mod_pocketDim.core.PocketManager;
|
||
|
import StevenDimDoors.mod_pocketDim.items.BaseItemDoor;
|
||
|
import StevenDimDoors.mod_pocketDim.tileentities.TileEntityTransTrapdoor;
|
||
|
|
||
|
public class TransTrapdoor extends BlockTrapDoor implements IDimDoor, ITileEntityProvider
|
||
|
{
|
||
|
|
||
|
public TransTrapdoor(int blockID, Material material)
|
||
|
{
|
||
|
super(blockID, material);
|
||
|
this.setCreativeTab(mod_pocketDim.dimDoorsCreativeTab);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void registerIcons(IconRegister par1IconRegister)
|
||
|
{
|
||
|
this.blockIcon = par1IconRegister.registerIcon(mod_pocketDim.modid + ":" + this.getUnlocalizedName2());
|
||
|
}
|
||
|
|
||
|
//Teleports the player to the exit link of that dimension, assuming it is a pocket
|
||
|
@Override
|
||
|
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
|
||
|
{
|
||
|
enterDimDoor(world, x, y, z, entity);
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void enterDimDoor(World world, int x, int y, int z, Entity entity)
|
||
|
{
|
||
|
if (!world.isRemote && isTrapdoorOpen(world.getBlockMetadata(x, y, z)))
|
||
|
{
|
||
|
this.onPoweredBlockChange(world, x, y, z, false);
|
||
|
|
||
|
DimLink link = PocketManager.getLink(x, y, z, world);
|
||
|
if (link != null)
|
||
|
{
|
||
|
DDTeleporter.traverseDimDoor(world, link, entity,this);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void onBlockAdded(World world, int x, int y, int z)
|
||
|
{
|
||
|
this.placeLink(world, x, y, z);
|
||
|
world.setBlockTileEntity(x, y, z, this.createNewTileEntity(world));
|
||
|
this.updateAttachedTile(world, x, y, z);
|
||
|
}
|
||
|
|
||
|
public void updateTick(World world, int x, int y, int z, Random random)
|
||
|
{
|
||
|
TileEntityTransTrapdoor tile = (TileEntityTransTrapdoor) world.getBlockTileEntity(x, y, z);
|
||
|
tile.hasRift = PocketManager.getLink(x, y, z, world) != null;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public TileEntity createNewTileEntity(World world)
|
||
|
{
|
||
|
return new TileEntityTransTrapdoor();
|
||
|
}
|
||
|
|
||
|
public void updateAttachedTile(World world, int x, int y, int z)
|
||
|
{
|
||
|
TileEntity tile = world.getBlockTileEntity(x, y, z);
|
||
|
if (tile instanceof TileEntityTransTrapdoor)
|
||
|
{
|
||
|
TileEntityTransTrapdoor trapdoorTile = (TileEntityTransTrapdoor) tile;
|
||
|
trapdoorTile.hasRift = (PocketManager.getLink(x, y, z, world) != null);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void placeLink(World world, int x, int y, int z)
|
||
|
{
|
||
|
if (!world.isRemote)
|
||
|
{
|
||
|
NewDimData dimension = PocketManager.getDimensionData(world);
|
||
|
DimLink link = dimension.getLink(x, y, z);
|
||
|
if (link == null && dimension.isPocketDimension())
|
||
|
{
|
||
|
dimension.createLink(x, y, z, LinkTypes.UNSAFE_EXIT);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
@Override
|
||
|
public int idDropped(int metadata, Random random, int fortuneLevel)
|
||
|
{
|
||
|
return getDrops();
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public int getDrops()
|
||
|
{
|
||
|
return Block.trapdoor.blockID;
|
||
|
}
|
||
|
|
||
|
public static boolean isTrapdoorSetLow(int metadata)
|
||
|
{
|
||
|
return (metadata & 8) == 0;
|
||
|
}
|
||
|
}
|