Attempt to fix some linking issues
This commit is contained in:
parent
43754c4163
commit
e04b1d1004
11 changed files with 42 additions and 142 deletions
|
@ -16,7 +16,6 @@ import org.modstats.ModstatInfo;
|
|||
import org.modstats.Modstats;
|
||||
|
||||
import resonantinduction.core.handler.TextureHookHandler;
|
||||
import resonantinduction.core.handler.ToolModeLink;
|
||||
import resonantinduction.core.prefab.part.PacketMultiPart;
|
||||
import resonantinduction.core.resource.BlockDust;
|
||||
import resonantinduction.core.resource.ResourceGenerator;
|
||||
|
@ -24,6 +23,7 @@ import resonantinduction.core.resource.TileMaterial;
|
|||
import resonantinduction.core.resource.fluid.TileFluidMixture;
|
||||
import resonantinduction.core.resource.item.ItemOreResource;
|
||||
import calclavia.components.tool.ToolMode;
|
||||
import calclavia.components.tool.ToolModeLink;
|
||||
import calclavia.lib.content.ContentRegistry;
|
||||
import calclavia.lib.network.PacketAnnotation;
|
||||
import calclavia.lib.network.PacketHandler;
|
||||
|
|
|
@ -1,19 +0,0 @@
|
|||
package resonantinduction.core.handler;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import universalelectricity.api.vector.VectorWorld;
|
||||
|
||||
/**
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface ILinkable
|
||||
{
|
||||
/**
|
||||
*
|
||||
* @param player
|
||||
* @param vector
|
||||
* @return True to clear the link.
|
||||
*/
|
||||
public boolean onLink(EntityPlayer player, VectorWorld vector);
|
||||
}
|
|
@ -1,96 +0,0 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package resonantinduction.core.handler;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import universalelectricity.api.vector.VectorWorld;
|
||||
import calclavia.components.tool.ToolMode;
|
||||
import codechicken.multipart.ControlKeyModifer;
|
||||
|
||||
/**
|
||||
* @author Calclavia
|
||||
*/
|
||||
public class ToolModeLink extends ToolMode
|
||||
{
|
||||
@Override
|
||||
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
TileEntity tile = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if (ControlKeyModifer.isControlDown(player))
|
||||
{
|
||||
if (tile instanceof ILinkable)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
if (((ILinkable) tile).onLink(player, this.getLink(stack)))
|
||||
{
|
||||
clearLink(stack);
|
||||
player.addChatMessage("Link cleared.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!world.isRemote)
|
||||
{
|
||||
player.addChatMessage("Set link to block [" + x + ", " + y + ", " + z + "], Dimension: '" + world.provider.getDimensionName() + "'");
|
||||
setLink(stack, new VectorWorld(world, x, y, z));
|
||||
|
||||
if (tile instanceof ILinkable)
|
||||
{
|
||||
if (!world.isRemote)
|
||||
{
|
||||
((ILinkable) tile).onLink(player, this.getLink(stack));
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName()
|
||||
{
|
||||
return "toolmode.link.name";
|
||||
}
|
||||
|
||||
public boolean hasLink(ItemStack itemStack)
|
||||
{
|
||||
return getLink(itemStack) != null;
|
||||
}
|
||||
|
||||
public VectorWorld getLink(ItemStack itemStack)
|
||||
{
|
||||
if (itemStack.stackTagCompound == null || !itemStack.getTagCompound().hasKey("link"))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new VectorWorld(itemStack.getTagCompound().getCompoundTag("link"));
|
||||
}
|
||||
|
||||
public void setLink(ItemStack itemStack, VectorWorld vec)
|
||||
{
|
||||
if (itemStack.getTagCompound() == null)
|
||||
{
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
|
||||
itemStack.getTagCompound().setCompoundTag("link", vec.writeToNBT(new NBTTagCompound()));
|
||||
}
|
||||
|
||||
public void clearLink(ItemStack itemStack)
|
||||
{
|
||||
itemStack.getTagCompound().removeTag("link");
|
||||
}
|
||||
|
||||
}
|
|
@ -16,19 +16,19 @@ import calclavia.lib.prefab.block.BlockSidedIO;
|
|||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public class BlockIOBase extends BlockSidedIO
|
||||
public class BlockRIIO extends BlockSidedIO
|
||||
{
|
||||
public BlockIOBase(String name)
|
||||
public BlockRIIO(String name)
|
||||
{
|
||||
this(name, Settings.getNextBlockID());
|
||||
}
|
||||
|
||||
public BlockIOBase(String name, int id)
|
||||
public BlockRIIO(String name, int id)
|
||||
{
|
||||
this(name, id, UniversalElectricity.machine);
|
||||
}
|
||||
|
||||
public BlockIOBase(String name, int id, Material material)
|
||||
public BlockRIIO(String name, int id, Material material)
|
||||
{
|
||||
super(Settings.CONFIGURATION.get(Configuration.CATEGORY_BLOCK, name, id).getInt(id), material);
|
||||
this.setCreativeTab(TabRI.CORE);
|
|
@ -15,7 +15,7 @@ import net.minecraft.util.MovingObjectPosition;
|
|||
import net.minecraft.world.World;
|
||||
import resonantinduction.core.Reference;
|
||||
import resonantinduction.core.Settings;
|
||||
import resonantinduction.core.prefab.block.BlockIOBase;
|
||||
import resonantinduction.core.prefab.block.BlockRIIO;
|
||||
import resonantinduction.core.render.RIBlockRenderingHandler;
|
||||
import universalelectricity.api.CompatibilityModule;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
@ -27,7 +27,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public class BlockBattery extends BlockIOBase implements ITileEntityProvider
|
||||
public class BlockBattery extends BlockRIIO implements ITileEntityProvider
|
||||
{
|
||||
public BlockBattery()
|
||||
{
|
||||
|
|
|
@ -3,12 +3,17 @@ package resonantinduction.electrical.levitator;
|
|||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import resonantinduction.core.Reference;
|
||||
import resonantinduction.core.prefab.block.BlockRIRotatable;
|
||||
import resonantinduction.core.render.RIBlockRenderingHandler;
|
||||
import universalelectricity.api.vector.VectorWorld;
|
||||
import calclavia.components.tool.ToolModeLink;
|
||||
import calclavia.lib.prefab.block.ILinkable;
|
||||
import calclavia.lib.utility.WrenchUtility;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
|
||||
|
@ -49,11 +54,27 @@ public class BlockLevitator extends BlockRIRotatable
|
|||
@Override
|
||||
public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
|
||||
{
|
||||
if (!entityPlayer.isSneaking())
|
||||
ItemStack itemStack = entityPlayer.getCurrentEquippedItem();
|
||||
|
||||
if (WrenchUtility.isWrench(itemStack))
|
||||
{
|
||||
TileLevitator levitator = (TileLevitator) world.getBlockTileEntity(x, y, z);
|
||||
levitator.incrementFacing();
|
||||
return true;
|
||||
TileEntity tile = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if (tile instanceof ILinkable)
|
||||
{
|
||||
ILinkable linkable = (ILinkable) tile;
|
||||
|
||||
if (linkable.onLink(entityPlayer, ToolModeLink.getLink(itemStack)))
|
||||
{
|
||||
ToolModeLink.clearLink(itemStack);
|
||||
}
|
||||
else
|
||||
{
|
||||
ToolModeLink.setLink(itemStack, new VectorWorld(world, x, y, z));
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
@ -23,13 +23,13 @@ import net.minecraftforge.common.ForgeDirection;
|
|||
import net.minecraftforge.fluids.IFluidBlock;
|
||||
import resonantinduction.core.ResonantInduction;
|
||||
import resonantinduction.core.Settings;
|
||||
import resonantinduction.core.handler.ILinkable;
|
||||
import resonantinduction.electrical.Electrical;
|
||||
import resonantinduction.electrical.tesla.TileTesla;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
import universalelectricity.api.vector.VectorWorld;
|
||||
import calclavia.lib.network.IPacketReceiver;
|
||||
import calclavia.lib.network.IPacketSender;
|
||||
import calclavia.lib.prefab.block.ILinkable;
|
||||
import calclavia.lib.prefab.tile.TileAdvanced;
|
||||
import calclavia.lib.render.EnumColor;
|
||||
import calclavia.lib.utility.inventory.InventoryUtility;
|
||||
|
@ -456,12 +456,6 @@ public class TileLevitator extends TileAdvanced implements IPacketReceiver, IPac
|
|||
return null;
|
||||
}
|
||||
|
||||
public void incrementFacing()
|
||||
{
|
||||
int newOrdinal = getDirection().ordinal() < 5 ? getDirection().ordinal() + 1 : 0;
|
||||
setDirection(ForgeDirection.getOrientation(newOrdinal));
|
||||
}
|
||||
|
||||
public ForgeDirection getDirection()
|
||||
{
|
||||
return ForgeDirection.getOrientation(getBlockType() != null ? getBlockMetadata() : 0);
|
||||
|
|
|
@ -11,7 +11,7 @@ import net.minecraft.world.World;
|
|||
import resonantinduction.core.Reference;
|
||||
import resonantinduction.core.Settings;
|
||||
import resonantinduction.core.Utility;
|
||||
import resonantinduction.core.prefab.block.BlockIOBase;
|
||||
import resonantinduction.core.prefab.block.BlockRIIO;
|
||||
import resonantinduction.core.render.RIBlockRenderingHandler;
|
||||
import calclavia.lib.utility.LanguageUtility;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
|
@ -21,7 +21,7 @@ import cpw.mods.fml.relauncher.SideOnly;
|
|||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public class BlockTesla extends BlockIOBase implements ITileEntityProvider
|
||||
public class BlockTesla extends BlockRIIO implements ITileEntityProvider
|
||||
{
|
||||
public BlockTesla()
|
||||
{
|
||||
|
|
|
@ -22,7 +22,6 @@ import net.minecraftforge.common.ForgeDirection;
|
|||
import resonantinduction.core.Reference;
|
||||
import resonantinduction.core.ResonantInduction;
|
||||
import resonantinduction.core.Settings;
|
||||
import resonantinduction.core.handler.ILinkable;
|
||||
import resonantinduction.electrical.Electrical;
|
||||
import universalelectricity.api.energy.EnergyStorageHandler;
|
||||
import universalelectricity.api.vector.Vector3;
|
||||
|
@ -32,6 +31,7 @@ import calclavia.lib.multiblock.reference.IMultiBlockStructure;
|
|||
import calclavia.lib.multiblock.reference.MultiBlockHandler;
|
||||
import calclavia.lib.network.IPacketReceiver;
|
||||
import calclavia.lib.network.IPacketSender;
|
||||
import calclavia.lib.prefab.block.ILinkable;
|
||||
import calclavia.lib.prefab.tile.TileElectrical;
|
||||
import calclavia.lib.render.EnumColor;
|
||||
import calclavia.lib.utility.LanguageUtility;
|
||||
|
|
|
@ -18,7 +18,7 @@ import resonantinduction.api.fluid.IFluidPipe;
|
|||
import resonantinduction.core.prefab.part.PartFramedConnection;
|
||||
import resonantinduction.mechanical.Mechanical;
|
||||
import resonantinduction.mechanical.fluid.network.PipeNetwork;
|
||||
import calclavia.lib.prefab.block.BlockAdvanced;
|
||||
import calclavia.lib.utility.WrenchUtility;
|
||||
import codechicken.lib.render.CCRenderState;
|
||||
import codechicken.lib.render.IconTransformation;
|
||||
import codechicken.lib.render.RenderUtils;
|
||||
|
@ -76,13 +76,13 @@ public class PartPipe extends PartFramedConnection<EnumPipeMaterial, IFluidPipe,
|
|||
@Override
|
||||
public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item)
|
||||
{
|
||||
if (BlockAdvanced.isUsableWrench(player, player.getCurrentEquippedItem(), x(), y(), z()))
|
||||
if (WrenchUtility.isUsableWrench(player, player.getCurrentEquippedItem(), x(), y(), z()))
|
||||
{
|
||||
if (!world().isRemote)
|
||||
{
|
||||
isExtracting = !isExtracting;
|
||||
player.addChatMessage("Pipe extraction mode: " + isExtracting);
|
||||
BlockAdvanced.damageWrench(player, player.getCurrentEquippedItem(), x(), y(), z());
|
||||
WrenchUtility.damageWrench(player, player.getCurrentEquippedItem(), x(), y(), z());
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ import resonantinduction.mechanical.network.IMechanical;
|
|||
import resonantinduction.mechanical.network.PartMechanical;
|
||||
import calclavia.lib.multiblock.reference.IMultiBlockStructure;
|
||||
import calclavia.lib.multiblock.reference.MultiBlockHandler;
|
||||
import calclavia.lib.prefab.block.BlockAdvanced;
|
||||
import calclavia.lib.utility.WrenchUtility;
|
||||
import codechicken.lib.vec.Cuboid6;
|
||||
import codechicken.lib.vec.Rotation;
|
||||
import codechicken.lib.vec.Transformation;
|
||||
|
@ -114,7 +114,7 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock
|
|||
@Override
|
||||
public boolean activate(EntityPlayer player, MovingObjectPosition hit, ItemStack item)
|
||||
{
|
||||
if (BlockAdvanced.isUsableWrench(player, player.getCurrentEquippedItem(), x(), y(), z()))
|
||||
if (WrenchUtility.isUsableWrench(player, player.getCurrentEquippedItem(), x(), y(), z()))
|
||||
{
|
||||
if (player.isSneaking())
|
||||
{
|
||||
|
@ -133,7 +133,7 @@ public class PartGear extends PartMechanical implements IMechanical, IMultiBlock
|
|||
getMultiBlock().get().manualCrankTime = 10;
|
||||
}
|
||||
|
||||
BlockAdvanced.damageWrench(player, player.getCurrentEquippedItem(), x(), y(), z());
|
||||
WrenchUtility.damageWrench(player, player.getCurrentEquippedItem(), x(), y(), z());
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue