Rift connecting code implemented

Coded the ItemRiftConnectionTool's primary function
This commit is contained in:
Mathijs Riezebos 2017-01-17 04:18:42 +01:00
parent ad29c72984
commit 0c5ef6193c

View file

@ -5,6 +5,8 @@
*/
package com.zixiken.dimdoors.items;
import com.zixiken.dimdoors.DimDoors;
import com.zixiken.dimdoors.shared.RiftRegistry;
import com.zixiken.dimdoors.tileentities.DDTileEntityBase;
import java.util.Set;
import net.minecraft.block.Block;
@ -12,6 +14,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemTool;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
@ -25,21 +28,50 @@ import net.minecraft.world.World;
*/
public class ItemRiftConnectionTool extends ItemTool {
ItemRiftConnectionTool(float attackDamageIn, float attackSpeedIn, Item.ToolMaterial materialIn, Set<Block> effectiveBlocksIn){
ItemRiftConnectionTool(float attackDamageIn, float attackSpeedIn, Item.ToolMaterial materialIn, Set<Block> effectiveBlocksIn) {
super(attackDamageIn, attackSpeedIn, materialIn, effectiveBlocksIn);
//@todo add extra stuff
//@todo add extra stuff?
}
//@todo actually implement this item as a tool and stuff
@Override
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World worldIn, EntityPlayer playerIn, EnumHand hand) {
RayTraceResult hit = ItemDoorBase.doRayTrace(worldIn, playerIn, true);
if (hit != null) {
BlockPos pos = hit.getBlockPos();
if (worldIn.getTileEntity(pos) instanceof DDTileEntityBase) {
//@todo implementation here?
DDTileEntityBase rift = (DDTileEntityBase) worldIn.getTileEntity(pos);
if (!playerIn.isSneaking()) {
selectPrimaryRift(stack, rift);
} else {
selectSecondaryRiftAndTakeAction(stack, rift);
}
return new ActionResult(EnumActionResult.PASS, stack);
}
}
return new ActionResult(EnumActionResult.FAIL, stack);
}
private void selectPrimaryRift(ItemStack stack, DDTileEntityBase rift) {
NBTTagCompound compound = stack.getTagCompound();
compound.setInteger("primaryRiftID", rift.riftID);
}
private void selectSecondaryRiftAndTakeAction(ItemStack stack, DDTileEntityBase rift) {
NBTTagCompound compound = stack.getTagCompound();
if (!compound.hasKey("isInConnectMode")) {
compound.setBoolean("isInConnectMode", true);
}
if (compound.getBoolean("isInConnectMode")) {
if (compound.hasKey("primaryRiftID")) {
int primaryRiftID = compound.getInteger("primaryRiftID");
int secondaryRiftID = rift.riftID;
RiftRegistry.Instance.pair(primaryRiftID, secondaryRiftID);
} else {
DimDoors.log(this.getClass(), "Primary Rift not selected. First select a primary rift by right-clicking without sneaking.");
}
} else {
int secondaryRiftID = rift.riftID;
RiftRegistry.Instance.unpair(secondaryRiftID);
}
}
}