Merge remote-tracking branch 'refs/remotes/origin/Teleportation' into 1.10-WIP

# Conflicts:
#	src/main/java/com/zixiken/dimdoors/blocks/BlockDimDoorBase.java
Removed a redundant method
#	src/main/java/com/zixiken/dimdoors/tileentities/DDTileEntityBase.java
Imports going amok
This commit is contained in:
Mathijs Riezebos 2017-01-19 04:17:00 +01:00
commit 30c86f1e16
18 changed files with 153 additions and 96 deletions

View file

@ -3,8 +3,6 @@ package com.zixiken.dimdoors.blocks;
import com.zixiken.dimdoors.items.ModItems; import com.zixiken.dimdoors.items.ModItems;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class BlockDimDoor extends BlockDimDoorBase { public class BlockDimDoor extends BlockDimDoorBase {
@ -18,10 +16,6 @@ public class BlockDimDoor extends BlockDimDoorBase {
setRegistryName(ID); setRegistryName(ID);
} }
@Override
public void placeLink(World world, BlockPos pos) {
}
@Override @Override
public Item getItemDoor() { public Item getItemDoor() {
return ModItems.itemDimDoor; return ModItems.itemDimDoor;

View file

@ -34,7 +34,20 @@ public abstract class BlockDimDoorBase extends BlockDoor implements IDimDoor, IT
@Override @Override
public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity entity) { public void onEntityCollidedWithBlock(World world, BlockPos pos, IBlockState state, Entity entity) {
enterDimDoor(world, pos, entity); IBlockState down = world.getBlockState(pos.down());
if (!world.isRemote && down.getBlock() == this) {
if (down.getValue(BlockDoor.OPEN)
&& entity instanceof EntityPlayer
&& isEntityFacingDoor(down, (EntityLivingBase) entity)) {
this.toggleDoor(world, pos, false);
enterDimDoor(world, pos, entity);
}
} else {
BlockPos up = pos.up();
if (world.getBlockState(up).getBlock() == this) {
enterDimDoor(world, up, entity);
}
}
} }
@Override @Override
@ -110,20 +123,12 @@ public abstract class BlockDimDoorBase extends BlockDoor implements IDimDoor, IT
@Override @Override
public void enterDimDoor(World world, BlockPos pos, Entity entity) { public void enterDimDoor(World world, BlockPos pos, Entity entity) {
// Check that this is the top block of the door DDTileEntityBase riftTile = getRiftTile(world, pos, world.getBlockState(pos));
IBlockState state = world.getBlockState(pos.down()); if (riftTile.tryTeleport(entity)) {
if (!world.isRemote && state.getBlock() == this) { //player is succesfully teleported
if (state.getValue(BlockDoor.OPEN)
&& entity instanceof EntityPlayer
&& isEntityFacingDoor(state, (EntityLivingBase) entity)) {
this.toggleDoor(world, pos, false);
//DimDoors.log("RiftID = " + getRiftTile(world, pos, world.getBlockState(pos)).riftID);
}
} else { } else {
BlockPos up = pos.up(); //@todo some kind of message that teleporting wasn't successfull
if (world.getBlockState(up).getBlock() == this) { //probably should only happen on personal dimdoors
enterDimDoor(world, up, entity);
}
} }
} }
@ -155,10 +160,11 @@ public abstract class BlockDimDoorBase extends BlockDoor implements IDimDoor, IT
world.setBlockState(pos, ModBlocks.blockRift.getDefaultState()); world.setBlockState(pos, ModBlocks.blockRift.getDefaultState());
DDTileEntityBase newRift = (DDTileEntityBase) world.getTileEntity(pos); DDTileEntityBase newRift = (DDTileEntityBase) world.getTileEntity(pos);
newRift.loadDataFrom(origRift); newRift.loadDataFrom(origRift);
DimDoors.log(this.getClass(), "New Rift rift-ID after breaking door " + newRift.riftID); DimDoors.log(this.getClass(), "New Rift rift-ID after breaking door " + newRift.getRiftID());
} }
} }
//returns the DDTileEntityBase that is the tile entity belonging to the door block "state" at this "pos" in the "world"
public DDTileEntityBase getRiftTile(World world, BlockPos pos, IBlockState state) { public DDTileEntityBase getRiftTile(World world, BlockPos pos, IBlockState state) {
TileEntity tileEntity; TileEntity tileEntity;
if (state.getValue(BlockDoor.HALF) == EnumDoorHalf.LOWER) { if (state.getValue(BlockDoor.HALF) == EnumDoorHalf.LOWER) {

View file

@ -2,11 +2,9 @@ package com.zixiken.dimdoors.blocks;
import com.zixiken.dimdoors.items.ModItems; import com.zixiken.dimdoors.items.ModItems;
import com.zixiken.dimdoors.tileentities.TileEntityDimDoorGold; import com.zixiken.dimdoors.tileentities.TileEntityDimDoorGold;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
public class BlockDimDoorGold extends BlockDimDoorBase { public class BlockDimDoorGold extends BlockDimDoorBase {
@ -20,10 +18,6 @@ public class BlockDimDoorGold extends BlockDimDoorBase {
setRegistryName(ID); setRegistryName(ID);
} }
@Override
public void placeLink(World world, BlockPos pos) {
}
@Override @Override
public Item getItemDoor() { public Item getItemDoor() {
return ModItems.itemDimDoorGold; return ModItems.itemDimDoorGold;

View file

@ -3,8 +3,6 @@ package com.zixiken.dimdoors.blocks;
import com.zixiken.dimdoors.items.ModItems; import com.zixiken.dimdoors.items.ModItems;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class BlockDimDoorPersonal extends BlockDimDoorBase { public class BlockDimDoorPersonal extends BlockDimDoorBase {
@ -17,10 +15,6 @@ public class BlockDimDoorPersonal extends BlockDimDoorBase {
setRegistryName(ID); setRegistryName(ID);
} }
@Override
public void placeLink(World world, BlockPos pos) {
}
@Override @Override
public Item getItemDoor() { public Item getItemDoor() {
return ModItems.itemDimDoorPersonal; return ModItems.itemDimDoorPersonal;

View file

@ -6,7 +6,6 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -40,10 +39,6 @@ public class BlockDimDoorTransient extends BlockDimDoorBase {
} }
} }
@Override
public void placeLink(World world, BlockPos pos) {
}
@Override @Override
public Item getItemDoor() { public Item getItemDoor() {
return null; return null;

View file

@ -1,14 +1,11 @@
package com.zixiken.dimdoors.blocks; package com.zixiken.dimdoors.blocks;
import com.zixiken.dimdoors.items.ModItems; import com.zixiken.dimdoors.items.ModItems;
import java.util.Random;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import java.util.Random;
public class BlockDimDoorUnstable extends BlockDimDoorBase { public class BlockDimDoorUnstable extends BlockDimDoorBase {
@ -22,10 +19,6 @@ public class BlockDimDoorUnstable extends BlockDimDoorBase {
setLightLevel(.0F); setLightLevel(.0F);
} }
@Override
public void placeLink(World world, BlockPos pos) {
}
@Override @Override
public Item getItemDoor() { public Item getItemDoor() {
return ModItems.itemDimDoorChaos; return ModItems.itemDimDoorChaos;

View file

@ -3,8 +3,6 @@ package com.zixiken.dimdoors.blocks;
import com.zixiken.dimdoors.items.ModItems; import com.zixiken.dimdoors.items.ModItems;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public class BlockDimDoorWarp extends BlockDimDoorBase { public class BlockDimDoorWarp extends BlockDimDoorBase {
@ -17,10 +15,6 @@ public class BlockDimDoorWarp extends BlockDimDoorBase {
setRegistryName(ID); setRegistryName(ID);
} }
@Override
public void placeLink(World world, BlockPos pos) {
}
@Override @Override
public Item getItemDoor() { public Item getItemDoor() {
return ModItems.itemDimDoorWarp; return ModItems.itemDimDoorWarp;

View file

@ -3,6 +3,7 @@ package com.zixiken.dimdoors.blocks;
import java.util.Random; import java.util.Random;
import com.zixiken.dimdoors.DimDoors; import com.zixiken.dimdoors.DimDoors;
import com.zixiken.dimdoors.tileentities.TileEntityTransTrapdoor;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockTrapDoor; import net.minecraft.block.BlockTrapDoor;
import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.ITileEntityProvider;
@ -20,7 +21,6 @@ import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.World; import net.minecraft.world.World;
import com.zixiken.dimdoors.tileentities.TileEntityTransTrapdoor;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
@ -75,21 +75,11 @@ public class BlockTransTrapdoor extends BlockTrapDoor implements IDimDoor, ITile
} }
} }
@Override
public void onBlockAdded(World world, BlockPos pos, IBlockState state) {
this.placeLink(world, pos);
world.setTileEntity(pos, createNewTileEntity(world, getMetaFromState(state)));
}
@Override @Override
public TileEntity createNewTileEntity(World world, int metadata) { public TileEntity createNewTileEntity(World world, int metadata) {
return new TileEntityTransTrapdoor(); return new TileEntityTransTrapdoor();
} }
@Override
public void placeLink(World world, BlockPos pos) {
}
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) { public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) {

View file

@ -2,7 +2,6 @@ package com.zixiken.dimdoors.blocks;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -20,16 +19,6 @@ public interface IDimDoor {
*/ */
public void enterDimDoor(World world, BlockPos pos, Entity entity); public void enterDimDoor(World world, BlockPos pos, Entity entity);
/**
* called when a door is placed to determine how it will place a link
*
* @param world
* @param x
* @param y
* @param z
*/
public void placeLink(World world, BlockPos pos);
public Item getItemDoor(); public Item getItemDoor();
/** /**

View file

@ -111,7 +111,7 @@ public abstract class ItemDoorBase extends ItemDoor {
//start logging code //start logging code
if (possibleOldRift instanceof DDTileEntityBase) { // if (possibleOldRift instanceof DDTileEntityBase) { //
DDTileEntityBase oldRift = (DDTileEntityBase) possibleOldRift; DDTileEntityBase oldRift = (DDTileEntityBase) possibleOldRift;
DimDoors.log(this.getClass(), "Old Rift rift-ID before placement: " + oldRift.riftID); DimDoors.log(this.getClass(), "Old Rift rift-ID before placement: " + oldRift.getRiftID());
} }
//end of logging code //end of logging code
EnumFacing enumfacing = EnumFacing.fromAngle((double) playerIn.rotationYaw); EnumFacing enumfacing = EnumFacing.fromAngle((double) playerIn.rotationYaw);
@ -126,12 +126,12 @@ public abstract class ItemDoorBase extends ItemDoor {
DDTileEntityBase newTileEntityDimDoor = (DDTileEntityBase) worldIn.getTileEntity(pos.up()); DDTileEntityBase newTileEntityDimDoor = (DDTileEntityBase) worldIn.getTileEntity(pos.up());
if (possibleOldRift instanceof DDTileEntityBase) { // if (possibleOldRift instanceof DDTileEntityBase) { //
DDTileEntityBase oldRift = (DDTileEntityBase) possibleOldRift; DDTileEntityBase oldRift = (DDTileEntityBase) possibleOldRift;
DimDoors.log(this.getClass(), "Old Rift rift-ID after placement: " + oldRift.riftID); DimDoors.log(this.getClass(), "Old Rift rift-ID after placement: " + oldRift.getRiftID());
newTileEntityDimDoor.loadDataFrom(oldRift); newTileEntityDimDoor.loadDataFrom(oldRift);
} else { } else {
newTileEntityDimDoor.register(); newTileEntityDimDoor.register();
} }
DimDoors.log(this.getClass(), "New Door rift-ID after placement: " + newTileEntityDimDoor.riftID); DimDoors.log(this.getClass(), "New Door rift-ID after placement: " + newTileEntityDimDoor.getRiftID());
return EnumActionResult.SUCCESS; return EnumActionResult.SUCCESS;
} else { } else {

View file

@ -61,12 +61,12 @@ public class ItemRiftConnectionTool extends ItemTool {
} }
private ActionResult<ItemStack> selectRift(ItemStack stack, World worldIn, DDTileEntityBase rift, EntityPlayer playerIn) { private ActionResult<ItemStack> selectRift(ItemStack stack, World worldIn, DDTileEntityBase rift, EntityPlayer playerIn) {
DimDoors.log(this.getClass(), "Selecting rift with ID: " + rift.riftID); DimDoors.log(this.getClass(), "Selecting rift with ID: " + rift.getRiftID());
NBTTagCompound compound = stack.getTagCompound(); NBTTagCompound compound = stack.getTagCompound();
if (compound.getBoolean("isInConnectMode")) { if (compound.getBoolean("isInConnectMode")) {
if (compound.hasKey("RiftID")) { if (compound.hasKey("RiftID")) {
int primaryRiftID = compound.getInteger("RiftID"); int primaryRiftID = compound.getInteger("RiftID");
int secondaryRiftID = rift.riftID; int secondaryRiftID = rift.getRiftID();
if (!worldIn.isRemote) { if (!worldIn.isRemote) {
DimDoors.log(this.getClass(), "Pairing rifts with IDs: " + primaryRiftID + " and " + secondaryRiftID); DimDoors.log(this.getClass(), "Pairing rifts with IDs: " + primaryRiftID + " and " + secondaryRiftID);
RiftRegistry.Instance.pair(primaryRiftID, secondaryRiftID); RiftRegistry.Instance.pair(primaryRiftID, secondaryRiftID);
@ -74,11 +74,11 @@ public class ItemRiftConnectionTool extends ItemTool {
compound.removeTag("RiftID"); compound.removeTag("RiftID");
stack.damageItem(1, playerIn); stack.damageItem(1, playerIn);
} else { } else {
compound.setInteger("RiftID", rift.riftID); compound.setInteger("RiftID", rift.getRiftID());
} }
} else { } else {
if (!worldIn.isRemote) { if (!worldIn.isRemote) {
RiftRegistry.Instance.unpair(rift.riftID); RiftRegistry.Instance.unpair(rift.getRiftID());
} }
stack.damageItem(1, playerIn); stack.damageItem(1, playerIn);
} }

View file

@ -1,5 +1,6 @@
package com.zixiken.dimdoors.shared; package com.zixiken.dimdoors.shared;
import net.minecraft.block.state.IBlockState;
import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
@ -13,25 +14,47 @@ import net.minecraftforge.common.DimensionManager;
*/ */
public class Location { public class Location {
public int dimensionID; private int dimensionID;
public BlockPos pos; private BlockPos pos;
Location(int dimID, int x, int y, int z) { public Location(World world, BlockPos pos) {
this.dimensionID = dimID; this(world.provider.getDimension(), pos);
pos = new BlockPos(x, y, z);
} }
Location(int dimID, BlockPos pos) { public Location(World world, int x, int y, int z) {
this(world, new BlockPos(x,y,z));
}
public Location(int dimID, int x, int y, int z) {
this(dimID, new BlockPos(x, y, z));
}
public Location(int dimID, BlockPos pos) {
this.dimensionID = dimID; this.dimensionID = dimID;
this.pos = pos.up(0); //copyOf this.pos = pos.up(0); //copyOf
} }
public TileEntity getTileEntity() { public TileEntity getTileEntity() {
World world = DimensionManager.getWorld(dimensionID); //@todo HOW? return getWorld().getTileEntity(pos);
return world.getTileEntity(pos);
} }
static Location getLocation(TileEntity tileEntity) { public IBlockState getBlockState() {
return getWorld().getBlockState(getPos());
}
public BlockPos getPos() {
return pos;
}
public World getWorld() {
return DimensionManager.getWorld(dimensionID);
}
public int getDimensionID() {
return dimensionID;
}
static Location getLocation(TileEntity tileEntity) {//@todo Location is not yet comparable, so a Location begotten by this method, can not be used to find a rift ID in the RiftRegistry
World world = tileEntity.getWorld(); World world = tileEntity.getWorld();
int dimID = world.provider.getDimension(); int dimID = world.provider.getDimension();
BlockPos blockPos = tileEntity.getPos(); BlockPos blockPos = tileEntity.getPos();

View file

@ -9,6 +9,7 @@ import com.zixiken.dimdoors.DimDoors;
import com.zixiken.dimdoors.tileentities.DDTileEntityBase; import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
@ -118,4 +119,8 @@ public class RiftRegistry {
public DDTileEntityBase getLastChangedRift() { public DDTileEntityBase getLastChangedRift() {
return lastBrokenRift; return lastBrokenRift;
} }
public void teleportEntityToRift(Entity entity, int pairedRiftID) {
TeleportHelper.teleport(entity, getRiftLocation(pairedRiftID));
}
} }

View file

@ -0,0 +1,31 @@
package com.zixiken.dimdoors.shared;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.Teleporter;
import net.minecraft.world.WorldServer;
public class TeleportHelper extends Teleporter {
Location location;
public TeleportHelper(Location location) {
super((WorldServer) location.getWorld());
}
@Override
public void placeInPortal(Entity entityIn, float rotationYaw) {
BlockPos pos = location.getPos();
entityIn.setPositionAndUpdate(pos.getX() + .5, pos.getY() + .05, pos.getZ() + .5);
}
public static void teleport(Entity entity, Location location) {
Teleporter tele = new TeleportHelper(location);
if (entity instanceof EntityPlayerMP) {
location.getWorld().getMinecraftServer().getPlayerList().transferPlayerToDimension((EntityPlayerMP) entity, location.getDimensionID(), tele);
} else {
location.getWorld().getMinecraftServer().getPlayerList().transferEntityToWorld(entity, entity.world.provider.getDimension(), (WorldServer) entity.world, (WorldServer) location.getWorld(), tele);
}
}
}

View file

@ -1,9 +1,11 @@
package com.zixiken.dimdoors.tileentities; package com.zixiken.dimdoors.tileentities;
import com.zixiken.dimdoors.DimDoors; import com.zixiken.dimdoors.DimDoors;
import com.zixiken.dimdoors.shared.Location;
import com.zixiken.dimdoors.shared.RiftRegistry; import com.zixiken.dimdoors.shared.RiftRegistry;
import java.util.Random; import java.util.Random;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
@ -11,9 +13,9 @@ import net.minecraft.world.World;
public abstract class DDTileEntityBase extends TileEntity { public abstract class DDTileEntityBase extends TileEntity {
public boolean isPaired = false; private boolean isPaired = false;
public int riftID = -1; //should not start at 0 private int riftID = -1; //should not start at 0
public int pairedRiftID = -1; private int pairedRiftID = -1;
public DDTileEntityBase() { public DDTileEntityBase() {
super(); super();
@ -91,4 +93,22 @@ public abstract class DDTileEntityBase extends TileEntity {
this.markDirty(); this.markDirty();
} }
} }
public int getRiftID() {
return riftID;
}
public int getPairedRiftID() {
return pairedRiftID;
}
public boolean isPaired() {
return isPaired;
}
public Location getTeleportTarget() {
return new Location(this.getWorld().provider.getDimension(), this.getPos());
}
public abstract boolean tryTeleport(Entity entity);
} }

View file

@ -1,14 +1,15 @@
package com.zixiken.dimdoors.tileentities; package com.zixiken.dimdoors.tileentities;
import com.zixiken.dimdoors.shared.RiftRegistry;
import java.util.Random; import java.util.Random;
import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
public class TileEntityDimDoor extends DDTileEntityBase { public class TileEntityDimDoor extends DDTileEntityBase {
public boolean openOrClosed; public boolean openOrClosed;
public EnumFacing orientation; public EnumFacing orientation = EnumFacing.SOUTH;
public boolean hasExit; public boolean hasExit;
public byte lockStatus; public byte lockStatus;
public boolean isDungeonChainLink; public boolean isDungeonChainLink;
@ -30,7 +31,7 @@ public class TileEntityDimDoor extends DDTileEntityBase {
@Override @Override
public NBTTagCompound writeToNBT(NBTTagCompound nbt) { public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt); super.writeToNBT(nbt);
nbt.setBoolean("openOrClosed", this.openOrClosed); nbt.setBoolean("openOrClosed", this.openOrClosed);
nbt.setBoolean("hasExit", this.hasExit); nbt.setBoolean("hasExit", this.hasExit);
@ -55,4 +56,20 @@ public class TileEntityDimDoor extends DDTileEntityBase {
return rgbaColor; return rgbaColor;
} }
/*@Override
public Location getTeleportTarget() {
EnumFacing facing = getWorld().getBlockState(getPos()).getValue(BlockDimDoor.FACING);
return new Location(world, pos.offset(facing));
}*/
@Override
public boolean tryTeleport(Entity entity) {
if (!isPaired()) {
//@todo try to automatically pair this door somehow
}
RiftRegistry.Instance.teleportEntityToRift(entity, getPairedRiftID());
return true;
}
} }

View file

@ -142,4 +142,9 @@ public class TileEntityRift extends DDTileEntityBase implements ITickable {
public float[] getRenderColor(Random rand) { public float[] getRenderColor(Random rand) {
return null; return null;
} }
@Override
public boolean tryTeleport(Entity entity) {
return false; //@todo, rift blade functionality?
}
} }

View file

@ -1,6 +1,7 @@
package com.zixiken.dimdoors.tileentities; package com.zixiken.dimdoors.tileentities;
import java.util.Random; import java.util.Random;
import net.minecraft.entity.Entity;
public class TileEntityTransTrapdoor extends DDTileEntityBase { public class TileEntityTransTrapdoor extends DDTileEntityBase {
@ -18,4 +19,10 @@ public class TileEntityTransTrapdoor extends DDTileEntityBase {
} }
return rgbaColor; return rgbaColor;
} }
@Override
public boolean tryTeleport(Entity entity) {
//@todo teleport the player somewhere to the Overworld?
return false;
}
} }