Rift Connection Tool basic visuals

Cleaned up a lot of logging code
Added a function to send chat messages to the player
This commit is contained in:
Mathijs Riezebos 2017-01-20 00:02:28 +01:00
parent a9fb3f5445
commit 5ebf7aab70
11 changed files with 50 additions and 42 deletions

View file

@ -5,7 +5,9 @@ import com.zixiken.dimdoors.shared.PocketSavedData;
import com.zixiken.dimdoors.shared.RiftRegistry; import com.zixiken.dimdoors.shared.RiftRegistry;
import com.zixiken.dimdoors.shared.RiftSavedData; import com.zixiken.dimdoors.shared.RiftSavedData;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.fml.common.FMLLog; import net.minecraftforge.fml.common.FMLLog;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
@ -65,6 +67,10 @@ public class DimDoors {
return proxy.getDefWorld(); //gets the server or client world dim 0 handler return proxy.getDefWorld(); //gets the server or client world dim 0 handler
} }
public static void chat(EntityPlayer player, String text) {
player.sendMessage(new TextComponentString(text));
}
public static void log(Class classFiredFrom, String text) { public static void log(Class classFiredFrom, String text) {
FMLLog.info("[DimDoors] " + text + " (" + classFiredFrom.toString() + " )", 0); FMLLog.info("[DimDoors] " + text + " (" + classFiredFrom.toString() + " )", 0);
} }

View file

@ -2,6 +2,7 @@ package com.zixiken.dimdoors;
import com.zixiken.dimdoors.blocks.ModBlocks; import com.zixiken.dimdoors.blocks.ModBlocks;
import com.zixiken.dimdoors.items.ModItems; import com.zixiken.dimdoors.items.ModItems;
import static com.zixiken.dimdoors.items.ModItems.itemRiftConnectionTool;
import net.minecraft.block.BlockDoor; import net.minecraft.block.BlockDoor;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelBakery;
@ -35,6 +36,7 @@ public class ModelManager {
register(ModItems.itemDimDoorChaos); register(ModItems.itemDimDoorChaos);
register(ModItems.itemDimDoorWarp); register(ModItems.itemDimDoorWarp);
register(ModItems.itemWorldThread); register(ModItems.itemWorldThread);
register(ModItems.itemRiftConnectionTool);
} }
public static void registerModelVariants() { public static void registerModelVariants() {

View file

@ -41,8 +41,6 @@ public abstract class BlockDimDoorBase extends BlockDoor implements IDimDoor, IT
&& (entity.timeUntilPortal < 1) //to prevent the player from teleporting all over the place we have a 150-tick cooldown && (entity.timeUntilPortal < 1) //to prevent the player from teleporting all over the place we have a 150-tick cooldown
&& isEntityFacingDoor(down, (EntityLivingBase) entity)) { && isEntityFacingDoor(down, (EntityLivingBase) entity)) {
this.toggleDoor(world, pos, false); this.toggleDoor(world, pos, false);
DimDoors.log(this.getClass(), "Facing direction of Door-block that was just entered by an entity is: "
+ world.getBlockState(pos).getValue(BlockDoor.FACING));
enterDimDoor(world, pos, entity); enterDimDoor(world, pos, entity);
} }
} }
@ -123,12 +121,13 @@ public abstract class BlockDimDoorBase extends BlockDoor implements IDimDoor, IT
public void enterDimDoor(World world, BlockPos pos, Entity entity) { public void enterDimDoor(World world, BlockPos pos, Entity entity) {
DDTileEntityBase riftTile = getRiftTile(world, pos, world.getBlockState(pos)); DDTileEntityBase riftTile = getRiftTile(world, pos, world.getBlockState(pos));
if (riftTile.tryTeleport(entity)) { if (riftTile.tryTeleport(entity)) {
DimDoors.log(this.getClass(), "Entity was teleported succesfully");
//player is succesfully teleported //player is succesfully teleported
} else { } else {
DimDoors.log(this.getClass(), "Entity was NOT teleported succesfully");
//@todo some kind of message that teleporting wasn't successfull
//probably should only happen on personal dimdoors //probably should only happen on personal dimdoors
if (entity instanceof EntityPlayer) {
EntityPlayer entityPlayer = (EntityPlayer) entity;
DimDoors.chat(entityPlayer, "[DimDoors:] Teleporting failed, please report this to the mod authors.");
}
} }
} }
@ -160,7 +159,6 @@ 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.getRiftID());
} }
} }

View file

@ -67,17 +67,14 @@ public abstract class ItemDoorBase extends ItemDoor {
} }
RayTraceResult hit = ItemDoorBase.doRayTrace(worldIn, playerIn, true); RayTraceResult hit = ItemDoorBase.doRayTrace(worldIn, playerIn, true);
if (hit != null) { if (hit != null) {
DimDoors.log(this.getClass(), "Raytrace hit is not null");
BlockPos pos = hit.getBlockPos(); BlockPos pos = hit.getBlockPos();
if (worldIn.getBlockState(pos).getBlock() == ModBlocks.blockRift) { if (worldIn.getBlockState(pos).getBlock() == ModBlocks.blockRift) {
DimDoors.log(this.getClass(), "Raytrace hit Block is a BlockRift");
EnumActionResult canDoorBePlacedOnGroundBelowRift EnumActionResult canDoorBePlacedOnGroundBelowRift
= onItemUse(stack, playerIn, worldIn, pos.down(2), hand, EnumFacing.UP, = onItemUse(stack, playerIn, worldIn, pos.down(2), hand, EnumFacing.UP,
(float) hit.hitVec.xCoord, (float) hit.hitVec.yCoord, (float) hit.hitVec.zCoord); (float) hit.hitVec.xCoord, (float) hit.hitVec.yCoord, (float) hit.hitVec.zCoord);
return new ActionResult(canDoorBePlacedOnGroundBelowRift, stack); return new ActionResult(canDoorBePlacedOnGroundBelowRift, stack);
} }
} }
DimDoors.log(this.getClass(), "Raytrace hit is null, or doesn't hit a BlockRift");
return new ActionResult(EnumActionResult.PASS, stack); return new ActionResult(EnumActionResult.PASS, stack);
} }
@ -110,16 +107,9 @@ public abstract class ItemDoorBase extends ItemDoor {
&& doorBlock.canPlaceBlockAt(worldIn, pos)) { && doorBlock.canPlaceBlockAt(worldIn, pos)) {
TileEntity possibleOldRift = worldIn.getTileEntity(pos.up()); TileEntity possibleOldRift = worldIn.getTileEntity(pos.up());
//start logging code
if (possibleOldRift instanceof DDTileEntityBase) { //
DDTileEntityBase oldRift = (DDTileEntityBase) possibleOldRift;
DimDoors.log(this.getClass(), "Old Rift rift-ID before placement: " + oldRift.getRiftID());
}
//end of logging code
EnumFacing enumfacing = EnumFacing.fromAngle((double) playerIn.rotationYaw); EnumFacing enumfacing = EnumFacing.fromAngle((double) playerIn.rotationYaw);
int i = enumfacing.getFrontOffsetX(); int i = enumfacing.getFrontOffsetX();
int j = enumfacing.getFrontOffsetZ(); int j = enumfacing.getFrontOffsetZ();
DimDoors.log(this.getClass(), "Facing direction of door is being set to: " + enumfacing);
boolean flag = i < 0 && hitZ < 0.5F || i > 0 && hitZ > 0.5F || j < 0 && hitX > 0.5F || j > 0 && hitX < 0.5F; boolean flag = i < 0 && hitZ < 0.5F || i > 0 && hitZ > 0.5F || j < 0 && hitX > 0.5F || j > 0 && hitX < 0.5F;
placeDoor(worldIn, pos, enumfacing, doorBlock, flag); placeDoor(worldIn, pos, enumfacing, doorBlock, flag);
SoundType soundtype = worldIn.getBlockState(pos).getBlock().getSoundType(worldIn.getBlockState(pos), worldIn, pos, playerIn); SoundType soundtype = worldIn.getBlockState(pos).getBlock().getSoundType(worldIn.getBlockState(pos), worldIn, pos, playerIn);
@ -129,14 +119,10 @@ 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.getRiftID());
newTileEntityDimDoor.loadDataFrom(oldRift); newTileEntityDimDoor.loadDataFrom(oldRift);
} else { } else {
newTileEntityDimDoor.register(); newTileEntityDimDoor.register();
} }
DimDoors.log(this.getClass(), "New Door rift-ID after placement: " + newTileEntityDimDoor.getRiftID());
DimDoors.log(this.getClass(), "Facing direction of Door-block at pos of this Rift tile entity is: "
+ newTileEntityDimDoor.getWorld().getBlockState(newTileEntityDimDoor.getPos()).getValue(BlockDimDoor.FACING));
if (newTileEntityDimDoor instanceof TileEntityDimDoor) { if (newTileEntityDimDoor instanceof TileEntityDimDoor) {
TileEntityDimDoor tileEntityDimDoor = (TileEntityDimDoor) newTileEntityDimDoor; TileEntityDimDoor tileEntityDimDoor = (TileEntityDimDoor) newTileEntityDimDoor;
tileEntityDimDoor.orientation tileEntityDimDoor.orientation

View file

@ -54,38 +54,42 @@ public class ItemRiftConnectionTool extends ItemTool {
return selectRift(stack, worldIn, rift, playerIn); //new ActionResult(EnumActionResult.PASS, stack)); return selectRift(stack, worldIn, rift, playerIn); //new ActionResult(EnumActionResult.PASS, stack));
} }
} else { } else {
return changeMode(stack); return changeMode(stack, playerIn);
} }
return new ActionResult(EnumActionResult.FAIL, stack); return new ActionResult(EnumActionResult.FAIL, stack);
} }
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.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.getRiftID(); int secondaryRiftID = rift.getRiftID();
if (!worldIn.isRemote) { if (!worldIn.isRemote) {
DimDoors.log(this.getClass(), "Pairing rifts with IDs: " + primaryRiftID + " and " + secondaryRiftID); DimDoors.chat(playerIn, "Pairing rift " + primaryRiftID
+ " with rift " + secondaryRiftID + ".");
RiftRegistry.Instance.pair(primaryRiftID, secondaryRiftID); RiftRegistry.Instance.pair(primaryRiftID, secondaryRiftID);
} }
compound.removeTag("RiftID"); compound.removeTag("RiftID");
stack.damageItem(1, playerIn); stack.damageItem(1, playerIn);
} else { } else {
compound.setInteger("RiftID", rift.getRiftID()); int riftID = rift.getRiftID();
compound.setInteger("RiftID", riftID);
DimDoors.chat(playerIn, "Rift " + riftID + " stored for connecting.");
} }
} else { } else {
if (!worldIn.isRemote) { if (!worldIn.isRemote) {
RiftRegistry.Instance.unpair(rift.getRiftID()); int riftID = rift.getRiftID();
RiftRegistry.Instance.unpair(riftID);
DimDoors.chat(playerIn, "Rift " + riftID + " and its paired rift are now disconnected.");
} }
stack.damageItem(1, playerIn); stack.damageItem(1, playerIn);
} }
return new ActionResult(EnumActionResult.SUCCESS, stack); return new ActionResult(EnumActionResult.SUCCESS, stack);
} }
private ActionResult<ItemStack> changeMode(ItemStack stack) { private ActionResult<ItemStack> changeMode(ItemStack stack, EntityPlayer player) {
NBTTagCompound compound = stack.getTagCompound(); NBTTagCompound compound = stack.getTagCompound();
if (compound.getBoolean("isInConnectMode")) { if (compound.getBoolean("isInConnectMode")) {
compound.setBoolean("isInConnectMode", false); compound.setBoolean("isInConnectMode", false);
@ -95,7 +99,8 @@ public class ItemRiftConnectionTool extends ItemTool {
} else { } else {
compound.setBoolean("isInConnectMode", true); compound.setBoolean("isInConnectMode", true);
} }
DimDoors.log(this.getClass(), "isInConnectMode set to: " + compound.getBoolean("isInConnectMode")); DimDoors.chat(player, "Connection tool mode set to: "
+ (compound.getBoolean("isInConnectMode") ? "Connect" : "Disconnect"));
return new ActionResult(EnumActionResult.SUCCESS, stack); return new ActionResult(EnumActionResult.SUCCESS, stack);
} }
} }

View file

@ -81,7 +81,6 @@ public class RiftRegistry {
} }
public Location getRiftLocation(int ID) { public Location getRiftLocation(int ID) {
DimDoors.log(this.getClass(), "Fetching rift location of rift with ID: " + ID);
return riftList.get(ID); return riftList.get(ID);
} }
@ -89,7 +88,6 @@ public class RiftRegistry {
if (riftID < 0 || riftID2 < 0) { if (riftID < 0 || riftID2 < 0) {
return; return;
} }
DimDoors.log(this.getClass(), "pairing rift with ID " + riftID + " to rift with ID " + riftID2);
Location location = riftList.get(riftID); Location location = riftList.get(riftID);
TileEntity tileEntity = location.getTileEntity(); //@todo this method might need to be in another class? TileEntity tileEntity = location.getTileEntity(); //@todo this method might need to be in another class?
if (tileEntity != null && tileEntity instanceof DDTileEntityBase) { if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {
@ -104,7 +102,7 @@ public class RiftRegistry {
} }
Location location = riftList.get(riftID); Location location = riftList.get(riftID);
if (location == null) { if (location == null) {
DimDoors.log(this.getClass(), "riftID with null location = " + riftID); DimDoors.log(this.getClass(), "RiftID with null location = " + riftID);
} }
TileEntity tileEntity = location.getTileEntity(); TileEntity tileEntity = location.getTileEntity();
if (tileEntity != null && tileEntity instanceof DDTileEntityBase) { if (tileEntity != null && tileEntity instanceof DDTileEntityBase) {

View file

@ -26,7 +26,7 @@ public class TeleportHelper extends Teleporter {
public static boolean teleport(Entity entity, Location newLocation) { public static boolean teleport(Entity entity, Location newLocation) {
if (entity instanceof EntityPlayerSP) { if (entity instanceof EntityPlayerSP) {
DimDoors.log(TeleportHelper.class, "Not teleporting, because EntityPlayerSP."); //DimDoors.log(TeleportHelper.class, "Not teleporting, because EntityPlayerSP.");
return false; return false;
} }
@ -35,10 +35,10 @@ public class TeleportHelper extends Teleporter {
int newDimID = newLocation.getDimensionID(); int newDimID = newLocation.getDimensionID();
WorldServer oldWorldServer = DimDoors.proxy.getWorldServer(oldDimID); WorldServer oldWorldServer = DimDoors.proxy.getWorldServer(oldDimID);
WorldServer newWorldServer = DimDoors.proxy.getWorldServer(newDimID); WorldServer newWorldServer = DimDoors.proxy.getWorldServer(newDimID);
DimDoors.log(TeleportHelper.class, "Starting teleporting now:"); //DimDoors.log(TeleportHelper.class, "Starting teleporting now:");
if (oldDimID == newDimID) { if (oldDimID == newDimID) {
if (entity instanceof EntityPlayer) { if (entity instanceof EntityPlayer) {
DimDoors.log(TeleportHelper.class, "Using teleport method 1"); //DimDoors.log(TeleportHelper.class, "Using teleport method 1");
EntityPlayerMP player = (EntityPlayerMP) entity; EntityPlayerMP player = (EntityPlayerMP) entity;
player.setPositionAndUpdate(newPos.getX() + 0.5, newPos.getY() + 0.5, newPos.getZ() + 0.5); player.setPositionAndUpdate(newPos.getX() + 0.5, newPos.getY() + 0.5, newPos.getZ() + 0.5);
@ -46,7 +46,7 @@ public class TeleportHelper extends Teleporter {
//player.connection.sendPacket(new SPacketUpdateHealth(player.getHealth(), player.getFoodStats().getFoodLevel(), player.getFoodStats().getSaturationLevel())); //player.connection.sendPacket(new SPacketUpdateHealth(player.getHealth(), player.getFoodStats().getFoodLevel(), player.getFoodStats().getSaturationLevel()));
player.timeUntilPortal = 150; player.timeUntilPortal = 150;
} else { } else {
DimDoors.log(TeleportHelper.class, "Using teleport method 2"); //DimDoors.log(TeleportHelper.class, "Using teleport method 2");
WorldServer world = (WorldServer) entity.world; WorldServer world = (WorldServer) entity.world;
entity.setPosition(newPos.getX() + 0.5, newPos.getY() + 0.5, newPos.getZ() + 0.5); entity.setPosition(newPos.getX() + 0.5, newPos.getY() + 0.5, newPos.getZ() + 0.5);
@ -55,14 +55,14 @@ public class TeleportHelper extends Teleporter {
} }
} else { } else {
if (entity instanceof EntityPlayer) { if (entity instanceof EntityPlayer) {
DimDoors.log(TeleportHelper.class, "Using teleport method 3"); //DimDoors.log(TeleportHelper.class, "Using teleport method 3");
EntityPlayerMP player = (EntityPlayerMP) entity; EntityPlayerMP player = (EntityPlayerMP) entity;
player.changeDimension(newDimID); //@todo, this only works for Vanilla dimensions, I've heard? player.changeDimension(newDimID); //@todo, this only works for Vanilla dimensions, I've heard?
player.setPositionAndUpdate(newPos.getX() + 0.5, newPos.getY() + 0.5, newPos.getZ() + 0.5); player.setPositionAndUpdate(newPos.getX() + 0.5, newPos.getY() + 0.5, newPos.getZ() + 0.5);
player.world.updateEntityWithOptionalForce(player, false); player.world.updateEntityWithOptionalForce(player, false);
//player.connection.sendPacket(new SPacketUpdateHealth(player.getHealth(), player.getFoodStats().getFoodLevel(), player.getFoodStats().getSaturationLevel())); //player.connection.sendPacket(new SPacketUpdateHealth(player.getHealth(), player.getFoodStats().getFoodLevel(), player.getFoodStats().getSaturationLevel()));
} else if (!entity.world.isRemote) { } else if (!entity.world.isRemote) {
DimDoors.log(TeleportHelper.class, "Using teleport method 4"); //DimDoors.log(TeleportHelper.class, "Using teleport method 4");
entity.changeDimension(newDimID); entity.changeDimension(newDimID);
entity.setPosition(newPos.getX() + 0.5, newPos.getY() + 0.5, newPos.getZ() + 0.5); entity.setPosition(newPos.getX() + 0.5, newPos.getY() + 0.5, newPos.getZ() + 0.5);
oldWorldServer.resetUpdateEntityTick(); oldWorldServer.resetUpdateEntityTick();

View file

@ -17,12 +17,6 @@ public abstract class DDTileEntityBase extends TileEntity {
private int riftID = -1; //should not start at 0 private int riftID = -1; //should not start at 0
private int pairedRiftID = -1; private int pairedRiftID = -1;
public DDTileEntityBase() {
super();
DimDoors.log(this.getClass(), "Printing stacktrace for debugging purposes:");
Thread.dumpStack();
}
/** /**
* *
* @return an array of floats representing RGBA color where 1.0 = 255. * @return an array of floats representing RGBA color where 1.0 = 255.

View file

@ -23,6 +23,7 @@ item.itemDimDoor.name=Dimensional Door
item.itemDimDoorWarp.name=Warp Door item.itemDimDoorWarp.name=Warp Door
item.itemLinkSignature.name=Rift Signature item.itemLinkSignature.name=Rift Signature
item.itemStabilizedRiftSig.name=Stabilized Rift Signature item.itemStabilizedRiftSig.name=Stabilized Rift Signature
item.itemRiftConnectionTool.name=Below Average Rift Connection Tool
item.itemRiftRemover.name=Rift Remover item.itemRiftRemover.name=Rift Remover
item.itemStableFabric.name=Stable Fabric item.itemStableFabric.name=Stable Fabric
item.itemChaosDoor.name=Unstable Door item.itemChaosDoor.name=Unstable Door

View file

@ -0,0 +1,18 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "dimdoors:items/itemRiftConnectionTool"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 B