Rift connecting code implemented
Coded the ItemRiftConnectionTool's primary function
This commit is contained in:
parent
ad29c72984
commit
0c5ef6193c
1 changed files with 37 additions and 5 deletions
|
@ -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;
|
||||
|
@ -24,22 +27,51 @@ import net.minecraft.world.World;
|
|||
* @author Robijnvogel
|
||||
*/
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue