9fec41f906
Renamed IDimDoor.placeDimDoor() to placeLink(), since that's what it's actually being used for in our doors. Saying it places the door itself is confusing.
118 lines
No EOL
3.3 KiB
Java
118 lines
No EOL
3.3 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.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.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);
|
|
}
|
|
}
|
|
}
|
|
|
|
@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;
|
|
}
|
|
} |