From 3d874e6d8d08e495cc7d4d5c4f8c0fcc4127490c Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 9 Apr 2014 22:21:02 -0400 Subject: [PATCH 001/144] Reduced torque and velocity loss in gears and rods ( 50% rods %500 gears) --- .../engineering/TileEngineeringTable.java | 1390 ++++++++--------- .../mechanical/energy/gear/PartGear.java | 12 +- .../mechanical/energy/gear/PartGearShaft.java | 12 +- 3 files changed, 707 insertions(+), 707 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java b/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java index 1fa342d0d..edbf77e58 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java +++ b/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java @@ -30,7 +30,6 @@ import universalelectricity.api.vector.Vector3; import calclavia.lib.content.module.TileRender; import calclavia.lib.content.module.prefab.TileInventory; import calclavia.lib.gui.ContainerDummy; -import calclavia.lib.type.Pair; import calclavia.lib.network.IPacketReceiver; import calclavia.lib.network.PacketHandler; import calclavia.lib.prefab.item.ItemBlockSaved; @@ -38,6 +37,7 @@ import calclavia.lib.prefab.slot.ISlotPickResult; import calclavia.lib.prefab.tile.IRotatable; import calclavia.lib.prefab.vector.Cuboid; import calclavia.lib.render.RenderItemOverlayUtility; +import calclavia.lib.type.Pair; import calclavia.lib.utility.WorldUtility; import calclavia.lib.utility.inventory.AutoCraftingManager; import calclavia.lib.utility.inventory.AutoCraftingManager.IAutoCrafter; @@ -49,700 +49,700 @@ import com.google.common.io.ByteArrayDataInput; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +/** Advanced crafting table that stores its crafting grid, can craft out of the player's inv, and be + * configed to auto craft. + * + * @author DarkGuardsman, Calclavia */ public class TileEngineeringTable extends TileInventory implements IPacketReceiver, IRotatable, ISidedInventory, ISlotPickResult, IAutoCrafter { - public static final int CRAFTING_MATRIX_END = 9; - public static final int CRAFTING_OUTPUT_END = CRAFTING_MATRIX_END + 1; - public static final int PLAYER_OUTPUT_END = CRAFTING_OUTPUT_END + 40; - public static final int CENTER_SLOT = 4; - - // Relative slot IDs - public static final int CRAFTING_OUTPUT_SLOT = 0; - private static final int IMPRINT_SLOT = 1; - - private AutoCraftingManager craftManager; - - /** 9 slots for crafting, 1 slot for a output. */ - public static final int CRAFTING_MATRIX_SIZE = 9; - public ItemStack[] craftingMatrix = new ItemStack[CRAFTING_MATRIX_SIZE]; - public static final int[] craftingSlots = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; - - /** The output inventory containing slots. */ - public ItemStack[] outputInventory = new ItemStack[1]; - - /** The ability for the engineering table to search nearby inventories. */ - public boolean searchInventories = true; - - /** Temporary player inventory stored to draw the player's items. */ - private InventoryPlayer invPlayer = null; - private int[] playerSlots; - - @SideOnly(Side.CLIENT) - private static Icon iconTop, iconFront, iconSide; - - public TileEngineeringTable() - { - super(Material.wood); - bounds = new Cuboid(0, 0, 0, 1, 0.9f, 1); - isOpaqueCube = false; - normalRender = false; - itemBlock = ItemBlockSaved.class; - } - - @Override - @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int meta) - { - return side == 1 ? iconTop : (side == meta ? iconFront : iconSide); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister iconRegister) - { - iconTop = iconRegister.registerIcon(getTextureName() + "_top"); - iconFront = iconRegister.registerIcon(getTextureName() + "_front"); - iconSide = iconRegister.registerIcon(getTextureName() + "_side"); - } - - @Override - public void click(EntityPlayer player) - { - if (!world().isRemote && ControlKeyModifer.isControlDown(player)) - { - if (this instanceof IInventory) - { - IInventory inventory = this; - - // Don't drop the output, so subtract by one. - for (int i = 0; i < inventory.getSizeInventory() - 1; ++i) - { - ItemStack dropStack = inventory.getStackInSlot(i); - - if (dropStack != null) - { - InventoryUtility.dropItemStack(world(), new Vector3(player), dropStack); - inventory.setInventorySlotContents(i, null); - } - } - - inventory.onInventoryChanged(); - } - } - } - - @Override - protected boolean use(EntityPlayer player, int hitSide, Vector3 hit) - { - if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemHammer) - { - return false; - } - - if (hitSide == 1) - { - if (!world().isRemote) - { - Vector3 hitVector = new Vector3(hit.x, 0, hit.z); - final double regionLength = 1d / 3d; - - // Rotate the hit vector based on direction of the tile. - hitVector.translate(new Vector3(-0.5, 0, -0.5)); - hitVector.rotate(WorldUtility.getAngleFromForgeDirection(getDirection()), Vector3.UP()); - hitVector.translate(new Vector3(0.5, 0, 0.5)); - - /** Crafting Matrix */ - matrix: - for (int j = 0; j < 3; j++) - { - for (int k = 0; k < 3; k++) - { - Vector2 check = new Vector2(j, k).scale(regionLength); - - if (check.distance(hitVector.toVector2()) < regionLength) - { - int slotID = j * 3 + k; - interactCurrentItem(this, slotID, player); - break matrix; - } - } - } - - onInventoryChanged(); - } - - return true; - } - else if (hitSide != 0) - { - /** Take out of engineering table. */ - if (!world().isRemote) - { - setPlayerInventory(player.inventory); - - ItemStack output = getStackInSlot(9); - boolean firstLoop = true; - - while (output != null && (firstLoop || ControlKeyModifer.isControlDown(player))) - { - onPickUpFromSlot(player, 9, output); - - if (output.stackSize > 0) - { - InventoryUtility.dropItemStack(world(), new Vector3(player), output, 0); - } - - setInventorySlotContents(9, null); - onInventoryChanged(); - - output = getStackInSlot(9); - firstLoop = false; - } - - setPlayerInventory(null); - } - - return true; - - } - return false; - } - - @Override - protected boolean configure(EntityPlayer player, int side, Vector3 hit) - { - if (player.isSneaking()) - { - searchInventories = !searchInventories; - - if (!world().isRemote) - { - if (searchInventories) - player.addChatMessage("Engineering table will now search for nearby inventories for resources."); - else - player.addChatMessage("Engineering table will not search for nearby inventories for resources."); - } - - markUpdate(); - return true; - } - - return super.configure(player, side, hit); - } - - @Override - public ArrayList getDrops(int metadata, int fortune) - { - return new ArrayList(); - } - - @Override - public void onRemove(int par5, int par6) - { - ItemStack stack = ItemBlockSaved.getItemStackWithNBT(this.getBlockType(), world(), x(), y(), z()); - InventoryUtility.dropItemStack(world(), center(), stack); - } - - /** Creates a "fake inventory" and hook the player up to the crafter to use the player's items. */ - public void setPlayerInventory(InventoryPlayer invPlayer) - { - if (searchInventories) - { - if (invPlayer != null) - { - playerSlots = new int[invPlayer.getSizeInventory()]; - for (int i = 0; i < playerSlots.length; i++) - playerSlots[i] = i + CRAFTING_OUTPUT_END; - } - else - { - playerSlots = null; - } - - this.invPlayer = invPlayer; - } - } - - @Override - public boolean canUpdate() - { - return false; - } - - /** Gets the AutoCraftingManager that does all the crafting results */ - public AutoCraftingManager getCraftingManager() - { - if (craftManager == null) - { - craftManager = new AutoCraftingManager(this); - } - return craftManager; - } - - @Override - public Packet getDescriptionPacket() - { - NBTTagCompound nbt = new NBTTagCompound(); - this.writeToNBT(nbt); - return ResonantInduction.PACKET_TILE.getPacket(this, nbt); - } - - @Override - public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) - { - try - { - readFromNBT(PacketHandler.readNBTTagCompound(data)); - } - catch (Exception e) - { - e.printStackTrace(); - } - } - - @Override - public int getSizeInventory() - { - return 10 + (this.invPlayer != null ? this.invPlayer.getSizeInventory() : 0); - } - - /** DO NOT USE THIS INTERNALLY. FOR EXTERNAL USE ONLY! */ - @Override - public ItemStack getStackInSlot(int slot) - { - if (slot < CRAFTING_MATRIX_END) - { - return this.craftingMatrix[slot]; - } - else if (slot < CRAFTING_OUTPUT_END) - { - return outputInventory[slot - CRAFTING_MATRIX_END]; - } - else if (slot < PLAYER_OUTPUT_END && invPlayer != null) - { - return this.invPlayer.getStackInSlot(slot - CRAFTING_OUTPUT_END); - } - else if (searchInventories) - { - int idDisplacement = PLAYER_OUTPUT_END; - - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = new Vector3(this).translate(dir).getTileEntity(worldObj); - - if (tile instanceof IInventory) - { - IInventory inventory = (IInventory) tile; - int slotID = slot - idDisplacement; - - if (slotID >= 0 && slotID < inventory.getSizeInventory()) - return inventory.getStackInSlot(slotID); - - idDisplacement += inventory.getSizeInventory(); - } - } - } - - return null; - } - - @Override - public ItemStack decrStackSize(int i, int amount) - { - if (getStackInSlot(i) != null) - { - ItemStack stack; - - if (getStackInSlot(i).stackSize <= amount) - { - stack = getStackInSlot(i); - setInventorySlotContents(i, null); - return stack; - } - else - { - stack = getStackInSlot(i).splitStack(amount); - - if (getStackInSlot(i).stackSize == 0) - { - setInventorySlotContents(i, null); - } - - return stack; - } - } - else - { - return null; - } - } - - @Override - public void setInventorySlotContents(int slot, ItemStack itemStack) - { - if (slot < CRAFTING_MATRIX_END) - { - craftingMatrix[slot] = itemStack; - } - else if (slot < CRAFTING_OUTPUT_END) - { - outputInventory[slot - CRAFTING_MATRIX_END] = itemStack; - } - else if (slot < PLAYER_OUTPUT_END && this.invPlayer != null) - { - this.invPlayer.setInventorySlotContents(slot - CRAFTING_OUTPUT_END, itemStack); - EntityPlayer player = this.invPlayer.player; - - if (player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerToPlayer(player.inventoryContainer); - } - } - else if (searchInventories) - { - int idDisplacement = PLAYER_OUTPUT_END; - - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = new Vector3(this).translate(dir).getTileEntity(worldObj); - - if (tile instanceof IInventory) - { - IInventory inventory = (IInventory) tile; - int slotID = slot - idDisplacement; - - if (slotID >= 0 && slotID < inventory.getSizeInventory()) - inventory.setInventorySlotContents(slotID, itemStack); - - idDisplacement += inventory.getSizeInventory(); - } - } - } - - onInventoryChanged(); - } - - /** - * When some containers are closed they call this on each slot, then drop whatever it returns as - * an EntityItem - like when you close a workbench GUI. - */ - @Override - public ItemStack getStackInSlotOnClosing(int slot) - { - if (this.getStackInSlot(slot) != null) - { - ItemStack var2 = this.getStackInSlot(slot); - this.setInventorySlotContents(slot, null); - return var2; - } - else - { - return null; - } - } - - @Override - public String getInvName() - { - return this.getBlockType().getLocalizedName(); - } - - @Override - public void openChest() - { - this.onInventoryChanged(); - } - - @Override - public void closeChest() - { - this.onInventoryChanged(); - } - - /** - * Construct an InventoryCrafting Matrix on the fly. - * - * @return - */ - public InventoryCrafting getCraftingMatrix() - { - InventoryCrafting inventoryCrafting = new InventoryCrafting(new ContainerDummy(this), 3, 3); - - for (int i = 0; i < this.craftingMatrix.length; i++) - { - inventoryCrafting.setInventorySlotContents(i, this.craftingMatrix[i]); - } - - return inventoryCrafting; - } - - /** Updates all the output slots. Call this to update the Engineering Table. */ - @Override - public void onInventoryChanged() - { - if (worldObj != null) - { - if (!worldObj.isRemote) - { - this.outputInventory[CRAFTING_OUTPUT_SLOT] = null; - - /** Try to craft from crafting grid. If not possible, then craft from imprint. */ - boolean didCraft = false; - - /** Simulate an Inventory Crafting Instance */ - InventoryCrafting inventoryCrafting = this.getCraftingMatrix(); - - ItemStack matrixOutput = CraftingManager.getInstance().findMatchingRecipe(inventoryCrafting, this.worldObj); - - if (matrixOutput != null && this.getCraftingManager().getIdealRecipe(matrixOutput) != null) - { - this.outputInventory[CRAFTING_OUTPUT_SLOT] = matrixOutput; - didCraft = true; - } - - /** If output does not exist, try using the filter. */ - if (!didCraft) - { - ItemStack filterStack = craftingMatrix[CENTER_SLOT]; - - if (filterStack != null && filterStack.getItem() instanceof ItemImprint) - { - Set filters = ItemImprint.getFilters(filterStack); - - for (ItemStack outputStack : filters) - { - if (outputStack != null) - { - Pair idealRecipe = this.getCraftingManager().getIdealRecipe(outputStack); - - if (idealRecipe != null) - { - ItemStack recipeOutput = idealRecipe.left(); - if (recipeOutput != null & recipeOutput.stackSize > 0) - { - this.outputInventory[CRAFTING_OUTPUT_SLOT] = recipeOutput; - didCraft = true; - break; - } - } - } - } - } - } - - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } - - @Override - public void onPickUpFromSlot(EntityPlayer entityPlayer, int slotID, ItemStack itemStack) - { - if (!worldObj.isRemote) - { - if (itemStack != null) - { - Pair idealRecipeItem = getCraftingManager().getIdealRecipe(itemStack); - - if (idealRecipeItem != null) - { - getCraftingManager().consumeItems(idealRecipeItem.right().clone()); - } - else - { - itemStack.stackSize = 0; - } - } - } - } - - // /////////////////////////////////////// - // // Save And Data processing ////// - // /////////////////////////////////////// - /** NBT Data */ - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - - NBTTagList nbtList = nbt.getTagList("Items"); - this.craftingMatrix = new ItemStack[9]; - this.outputInventory = new ItemStack[1]; - - for (int i = 0; i < nbtList.tagCount(); ++i) - { - NBTTagCompound stackTag = (NBTTagCompound) nbtList.tagAt(i); - byte id = stackTag.getByte("Slot"); - - if (id >= 0 && id < this.getSizeInventory()) - { - this.setInventorySlotContents(id, ItemStack.loadItemStackFromNBT(stackTag)); - } - } - - this.searchInventories = nbt.getBoolean("searchInventories"); - } - - /** Writes a tile entity to NBT. */ - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - - NBTTagList nbtList = new NBTTagList(); - - for (int i = 0; i < this.getSizeInventory(); ++i) - { - if (this.getStackInSlot(i) != null) - { - NBTTagCompound var4 = new NBTTagCompound(); - var4.setByte("Slot", (byte) i); - this.getStackInSlot(i).writeToNBT(var4); - nbtList.appendTag(var4); - } - } - - nbt.setTag("Items", nbtList); - nbt.setBoolean("searchInventories", this.searchInventories); - } - - // /////////////////////////////////////// - // // Inventory Access side Methods ////// - // /////////////////////////////////////// - - @Override - public boolean isInvNameLocalized() - { - return false; - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemstack) - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return 64; - } - - @Override - public boolean isUseableByPlayer(EntityPlayer entityplayer) - { - return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : entityplayer.getDistanceSq(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D) <= 64.0D; - - } - - @Override - public int[] getAccessibleSlotsFromSide(int side) - { - return new int[0]; - } - - /** Auto-crafting methods. */ - @Override - public boolean canInsertItem(int slot, ItemStack itemstack, int side) - { - if (getStackInSlot(4) != null && getStackInSlot(4).getItem() instanceof ItemImprint) - return true; - - int minSize = 64; - int optimalSlot = -1; - - for (int i = 0; i < craftingMatrix.length; i++) - { - ItemStack checkStack = getStackInSlot(i); - - if (checkStack != null && checkStack.isItemEqual(itemstack)) - { - if (checkStack.stackSize < minSize || optimalSlot < 0) - { - optimalSlot = i; - minSize = checkStack.stackSize; - } - } - } - - return slot == optimalSlot; - } - - @Override - public boolean canExtractItem(int slot, ItemStack itemstack, int side) - { - ItemStack outputStack = getStackInSlot(CRAFTING_MATRIX_END); - - if (outputStack != null) - { - /** Only allow take out crafting result when it can be crafted twice! */ - Pair idealRecipeItem = this.getCraftingManager().getIdealRecipe(outputStack); - ItemStack[] doubleResults = ArrayUtils.addAll(idealRecipeItem.right(), idealRecipeItem.right()); - - if (!getCraftingManager().consumeItems(false, doubleResults)) - { - return false; - } - } - - return slot == CRAFTING_MATRIX_END; - } - - @Override - public int[] getCraftingInv() - { - int[] slots = craftingSlots; - - if (playerSlots != null) - { - slots = ArrayUtils.addAll(playerSlots, slots); - } - - if (searchInventories) - { - int temporaryInvID = PLAYER_OUTPUT_END; - - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = new Vector3(this).translate(dir).getTileEntity(worldObj); - - if (tile instanceof IInventory) - { - IInventory inventory = (IInventory) tile; - int[] nearbySlots = new int[inventory.getSizeInventory()]; - - for (int i = 0; i < inventory.getSizeInventory(); i++) - { - nearbySlots[i] = temporaryInvID++; - } - - slots = ArrayUtils.addAll(nearbySlots, slots); - } - } - } - - return slots; - } - - @Override - @SideOnly(Side.CLIENT) - protected TileRender newRenderer() - { - return new TileRender() - { - @Override - public boolean renderDynamic(Vector3 position, boolean isItem, float frame) - { - if (!isItem) - { - GL11.glPushMatrix(); - RenderItemOverlayUtility.renderItemOnSides(TileEngineeringTable.this, getStackInSlot(9), position.x, position.y, position.z); - RenderItemOverlayUtility.renderTopOverlay(TileEngineeringTable.this, craftingMatrix, getDirection(), position.x, position.y - 0.1, position.z); - GL11.glPopMatrix(); - } - - return false; - } - }; - } + public static final int CRAFTING_MATRIX_END = 9; + public static final int CRAFTING_OUTPUT_END = CRAFTING_MATRIX_END + 1; + public static final int PLAYER_OUTPUT_END = CRAFTING_OUTPUT_END + 40; + public static final int CENTER_SLOT = 4; + + // Relative slot IDs + public static final int CRAFTING_OUTPUT_SLOT = 0; + private static final int IMPRINT_SLOT = 1; + + private AutoCraftingManager craftManager; + + /** 9 slots for crafting, 1 slot for a output. */ + public static final int CRAFTING_MATRIX_SIZE = 9; + public ItemStack[] craftingMatrix = new ItemStack[CRAFTING_MATRIX_SIZE]; + public static final int[] craftingSlots = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; + + /** The output inventory containing slots. */ + public ItemStack[] outputInventory = new ItemStack[1]; + + /** The ability for the engineering table to search nearby inventories. */ + public boolean searchInventories = true; + + /** Temporary player inventory stored to draw the player's items. */ + private InventoryPlayer invPlayer = null; + private int[] playerSlots; + + @SideOnly(Side.CLIENT) + private static Icon iconTop, iconFront, iconSide; + + public TileEngineeringTable() + { + super(Material.wood); + bounds = new Cuboid(0, 0, 0, 1, 0.9f, 1); + isOpaqueCube = false; + normalRender = false; + itemBlock = ItemBlockSaved.class; + } + + @Override + @SideOnly(Side.CLIENT) + public Icon getIcon(int side, int meta) + { + return side == 1 ? iconTop : (side == meta ? iconFront : iconSide); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IconRegister iconRegister) + { + iconTop = iconRegister.registerIcon(getTextureName() + "_top"); + iconFront = iconRegister.registerIcon(getTextureName() + "_front"); + iconSide = iconRegister.registerIcon(getTextureName() + "_side"); + } + + @Override + public void click(EntityPlayer player) + { + if (!world().isRemote && ControlKeyModifer.isControlDown(player)) + { + if (this instanceof IInventory) + { + IInventory inventory = this; + + // Don't drop the output, so subtract by one. + for (int i = 0; i < inventory.getSizeInventory() - 1; ++i) + { + ItemStack dropStack = inventory.getStackInSlot(i); + + if (dropStack != null) + { + InventoryUtility.dropItemStack(world(), new Vector3(player), dropStack); + inventory.setInventorySlotContents(i, null); + } + } + + inventory.onInventoryChanged(); + } + } + } + + @Override + protected boolean use(EntityPlayer player, int hitSide, Vector3 hit) + { + if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemHammer) + { + return false; + } + + if (hitSide == 1) + { + if (!world().isRemote) + { + Vector3 hitVector = new Vector3(hit.x, 0, hit.z); + final double regionLength = 1d / 3d; + + // Rotate the hit vector based on direction of the tile. + hitVector.translate(new Vector3(-0.5, 0, -0.5)); + hitVector.rotate(WorldUtility.getAngleFromForgeDirection(getDirection()), Vector3.UP()); + hitVector.translate(new Vector3(0.5, 0, 0.5)); + + /** Crafting Matrix */ + matrix: + for (int j = 0; j < 3; j++) + { + for (int k = 0; k < 3; k++) + { + Vector2 check = new Vector2(j, k).scale(regionLength); + + if (check.distance(hitVector.toVector2()) < regionLength) + { + int slotID = j * 3 + k; + interactCurrentItem(this, slotID, player); + break matrix; + } + } + } + + onInventoryChanged(); + } + + return true; + } + else if (hitSide != 0) + { + /** Take out of engineering table. */ + if (!world().isRemote) + { + setPlayerInventory(player.inventory); + + ItemStack output = getStackInSlot(9); + boolean firstLoop = true; + + while (output != null && (firstLoop || ControlKeyModifer.isControlDown(player))) + { + onPickUpFromSlot(player, 9, output); + + if (output.stackSize > 0) + { + InventoryUtility.dropItemStack(world(), new Vector3(player), output, 0); + } + + setInventorySlotContents(9, null); + onInventoryChanged(); + + output = getStackInSlot(9); + firstLoop = false; + } + + setPlayerInventory(null); + } + + return true; + + } + return false; + } + + @Override + protected boolean configure(EntityPlayer player, int side, Vector3 hit) + { + if (player.isSneaking()) + { + searchInventories = !searchInventories; + + if (!world().isRemote) + { + if (searchInventories) + player.addChatMessage("Engineering table will now search for nearby inventories for resources."); + else + player.addChatMessage("Engineering table will not search for nearby inventories for resources."); + } + + markUpdate(); + return true; + } + + return super.configure(player, side, hit); + } + + @Override + public ArrayList getDrops(int metadata, int fortune) + { + return new ArrayList(); + } + + @Override + public void onRemove(int par5, int par6) + { + ItemStack stack = ItemBlockSaved.getItemStackWithNBT(this.getBlockType(), world(), x(), y(), z()); + InventoryUtility.dropItemStack(world(), center(), stack); + } + + /** Creates a "fake inventory" and hook the player up to the crafter to use the player's items. */ + public void setPlayerInventory(InventoryPlayer invPlayer) + { + if (searchInventories) + { + if (invPlayer != null) + { + playerSlots = new int[invPlayer.getSizeInventory()]; + for (int i = 0; i < playerSlots.length; i++) + playerSlots[i] = i + CRAFTING_OUTPUT_END; + } + else + { + playerSlots = null; + } + + this.invPlayer = invPlayer; + } + } + + @Override + public boolean canUpdate() + { + return false; + } + + /** Gets the AutoCraftingManager that does all the crafting results */ + public AutoCraftingManager getCraftingManager() + { + if (craftManager == null) + { + craftManager = new AutoCraftingManager(this); + } + return craftManager; + } + + @Override + public Packet getDescriptionPacket() + { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return ResonantInduction.PACKET_TILE.getPacket(this, nbt); + } + + @Override + public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) + { + try + { + readFromNBT(PacketHandler.readNBTTagCompound(data)); + } + catch (Exception e) + { + e.printStackTrace(); + } + } + + @Override + public int getSizeInventory() + { + return 10 + (this.invPlayer != null ? this.invPlayer.getSizeInventory() : 0); + } + + /** DO NOT USE THIS INTERNALLY. FOR EXTERNAL USE ONLY! */ + @Override + public ItemStack getStackInSlot(int slot) + { + if (slot < CRAFTING_MATRIX_END) + { + return this.craftingMatrix[slot]; + } + else if (slot < CRAFTING_OUTPUT_END) + { + return outputInventory[slot - CRAFTING_MATRIX_END]; + } + else if (slot < PLAYER_OUTPUT_END && invPlayer != null) + { + return this.invPlayer.getStackInSlot(slot - CRAFTING_OUTPUT_END); + } + else if (searchInventories) + { + int idDisplacement = PLAYER_OUTPUT_END; + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = new Vector3(this).translate(dir).getTileEntity(worldObj); + + if (tile instanceof IInventory) + { + IInventory inventory = (IInventory) tile; + int slotID = slot - idDisplacement; + + if (slotID >= 0 && slotID < inventory.getSizeInventory()) + return inventory.getStackInSlot(slotID); + + idDisplacement += inventory.getSizeInventory(); + } + } + } + + return null; + } + + @Override + public ItemStack decrStackSize(int i, int amount) + { + if (getStackInSlot(i) != null) + { + ItemStack stack; + + if (getStackInSlot(i).stackSize <= amount) + { + stack = getStackInSlot(i); + setInventorySlotContents(i, null); + return stack; + } + else + { + stack = getStackInSlot(i).splitStack(amount); + + if (getStackInSlot(i).stackSize == 0) + { + setInventorySlotContents(i, null); + } + + return stack; + } + } + else + { + return null; + } + } + + @Override + public void setInventorySlotContents(int slot, ItemStack itemStack) + { + if (slot < CRAFTING_MATRIX_END) + { + craftingMatrix[slot] = itemStack; + } + else if (slot < CRAFTING_OUTPUT_END) + { + outputInventory[slot - CRAFTING_MATRIX_END] = itemStack; + } + else if (slot < PLAYER_OUTPUT_END && this.invPlayer != null) + { + this.invPlayer.setInventorySlotContents(slot - CRAFTING_OUTPUT_END, itemStack); + EntityPlayer player = this.invPlayer.player; + + if (player instanceof EntityPlayerMP) + { + ((EntityPlayerMP) player).sendContainerToPlayer(player.inventoryContainer); + } + } + else if (searchInventories) + { + int idDisplacement = PLAYER_OUTPUT_END; + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = new Vector3(this).translate(dir).getTileEntity(worldObj); + + if (tile instanceof IInventory) + { + IInventory inventory = (IInventory) tile; + int slotID = slot - idDisplacement; + + if (slotID >= 0 && slotID < inventory.getSizeInventory()) + inventory.setInventorySlotContents(slotID, itemStack); + + idDisplacement += inventory.getSizeInventory(); + } + } + } + + onInventoryChanged(); + } + + /** When some containers are closed they call this on each slot, then drop whatever it returns as + * an EntityItem - like when you close a workbench GUI. */ + @Override + public ItemStack getStackInSlotOnClosing(int slot) + { + if (this.getStackInSlot(slot) != null) + { + ItemStack var2 = this.getStackInSlot(slot); + this.setInventorySlotContents(slot, null); + return var2; + } + else + { + return null; + } + } + + @Override + public String getInvName() + { + return this.getBlockType().getLocalizedName(); + } + + @Override + public void openChest() + { + this.onInventoryChanged(); + } + + @Override + public void closeChest() + { + this.onInventoryChanged(); + } + + /** Construct an InventoryCrafting Matrix on the fly. + * + * @return */ + public InventoryCrafting getCraftingMatrix() + { + InventoryCrafting inventoryCrafting = new InventoryCrafting(new ContainerDummy(this), 3, 3); + + for (int i = 0; i < this.craftingMatrix.length; i++) + { + inventoryCrafting.setInventorySlotContents(i, this.craftingMatrix[i]); + } + + return inventoryCrafting; + } + + /** Updates all the output slots. Call this to update the Engineering Table. */ + @Override + public void onInventoryChanged() + { + if (worldObj != null) + { + if (!worldObj.isRemote) + { + this.outputInventory[CRAFTING_OUTPUT_SLOT] = null; + + /** Try to craft from crafting grid. If not possible, then craft from imprint. */ + boolean didCraft = false; + + /** Simulate an Inventory Crafting Instance */ + InventoryCrafting inventoryCrafting = this.getCraftingMatrix(); + + ItemStack matrixOutput = CraftingManager.getInstance().findMatchingRecipe(inventoryCrafting, this.worldObj); + + if (matrixOutput != null && this.getCraftingManager().getIdealRecipe(matrixOutput) != null) + { + this.outputInventory[CRAFTING_OUTPUT_SLOT] = matrixOutput; + didCraft = true; + } + + /** If output does not exist, try using the filter. */ + if (!didCraft) + { + ItemStack filterStack = craftingMatrix[CENTER_SLOT]; + + if (filterStack != null && filterStack.getItem() instanceof ItemImprint) + { + Set filters = ItemImprint.getFilters(filterStack); + + for (ItemStack outputStack : filters) + { + if (outputStack != null) + { + Pair idealRecipe = this.getCraftingManager().getIdealRecipe(outputStack); + + if (idealRecipe != null) + { + ItemStack recipeOutput = idealRecipe.left(); + if (recipeOutput != null & recipeOutput.stackSize > 0) + { + this.outputInventory[CRAFTING_OUTPUT_SLOT] = recipeOutput; + didCraft = true; + break; + } + } + } + } + } + } + + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + } + } + + @Override + public void onPickUpFromSlot(EntityPlayer entityPlayer, int slotID, ItemStack itemStack) + { + if (!worldObj.isRemote) + { + if (itemStack != null) + { + Pair idealRecipeItem = getCraftingManager().getIdealRecipe(itemStack); + + if (idealRecipeItem != null) + { + getCraftingManager().consumeItems(idealRecipeItem.right().clone()); + } + else + { + itemStack.stackSize = 0; + } + } + } + } + + // /////////////////////////////////////// + // // Save And Data processing ////// + // /////////////////////////////////////// + /** NBT Data */ + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + + NBTTagList nbtList = nbt.getTagList("Items"); + this.craftingMatrix = new ItemStack[9]; + this.outputInventory = new ItemStack[1]; + + for (int i = 0; i < nbtList.tagCount(); ++i) + { + NBTTagCompound stackTag = (NBTTagCompound) nbtList.tagAt(i); + byte id = stackTag.getByte("Slot"); + + if (id >= 0 && id < this.getSizeInventory()) + { + this.setInventorySlotContents(id, ItemStack.loadItemStackFromNBT(stackTag)); + } + } + + this.searchInventories = nbt.getBoolean("searchInventories"); + } + + /** Writes a tile entity to NBT. */ + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + + NBTTagList nbtList = new NBTTagList(); + + for (int i = 0; i < this.getSizeInventory(); ++i) + { + if (this.getStackInSlot(i) != null) + { + NBTTagCompound var4 = new NBTTagCompound(); + var4.setByte("Slot", (byte) i); + this.getStackInSlot(i).writeToNBT(var4); + nbtList.appendTag(var4); + } + } + + nbt.setTag("Items", nbtList); + nbt.setBoolean("searchInventories", this.searchInventories); + } + + // /////////////////////////////////////// + // // Inventory Access side Methods ////// + // /////////////////////////////////////// + + @Override + public boolean isInvNameLocalized() + { + return false; + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemstack) + { + return true; + } + + @Override + public int getInventoryStackLimit() + { + return 64; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer entityplayer) + { + return this.worldObj.getBlockTileEntity(this.xCoord, this.yCoord, this.zCoord) != this ? false : entityplayer.getDistanceSq(this.xCoord + 0.5D, this.yCoord + 0.5D, this.zCoord + 0.5D) <= 64.0D; + + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) + { + return new int[0]; + } + + /** Auto-crafting methods. */ + @Override + public boolean canInsertItem(int slot, ItemStack itemstack, int side) + { + if (getStackInSlot(4) != null && getStackInSlot(4).getItem() instanceof ItemImprint) + return true; + + int minSize = 64; + int optimalSlot = -1; + + for (int i = 0; i < craftingMatrix.length; i++) + { + ItemStack checkStack = getStackInSlot(i); + + if (checkStack != null && checkStack.isItemEqual(itemstack)) + { + if (checkStack.stackSize < minSize || optimalSlot < 0) + { + optimalSlot = i; + minSize = checkStack.stackSize; + } + } + } + + return slot == optimalSlot; + } + + @Override + public boolean canExtractItem(int slot, ItemStack itemstack, int side) + { + ItemStack outputStack = getStackInSlot(CRAFTING_MATRIX_END); + + if (outputStack != null) + { + /** Only allow take out crafting result when it can be crafted twice! */ + Pair idealRecipeItem = this.getCraftingManager().getIdealRecipe(outputStack); + ItemStack[] doubleResults = ArrayUtils.addAll(idealRecipeItem.right(), idealRecipeItem.right()); + + if (!getCraftingManager().consumeItems(false, doubleResults)) + { + return false; + } + } + + return slot == CRAFTING_MATRIX_END; + } + + @Override + public int[] getCraftingInv() + { + int[] slots = craftingSlots; + + if (playerSlots != null) + { + slots = ArrayUtils.addAll(playerSlots, slots); + } + + if (searchInventories) + { + int temporaryInvID = PLAYER_OUTPUT_END; + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = new Vector3(this).translate(dir).getTileEntity(worldObj); + + if (tile instanceof IInventory) + { + IInventory inventory = (IInventory) tile; + int[] nearbySlots = new int[inventory.getSizeInventory()]; + + for (int i = 0; i < inventory.getSizeInventory(); i++) + { + nearbySlots[i] = temporaryInvID++; + } + + slots = ArrayUtils.addAll(nearbySlots, slots); + } + } + } + + return slots; + } + + @Override + @SideOnly(Side.CLIENT) + protected TileRender newRenderer() + { + return new TileRender() + { + @Override + public boolean renderDynamic(Vector3 position, boolean isItem, float frame) + { + if (!isItem) + { + GL11.glPushMatrix(); + RenderItemOverlayUtility.renderItemOnSides(TileEngineeringTable.this, getStackInSlot(9), position.x, position.y, position.z); + RenderItemOverlayUtility.renderTopOverlay(TileEngineeringTable.this, craftingMatrix, getDirection(), position.x, position.y - 0.1, position.z); + GL11.glPopMatrix(); + } + + return false; + } + }; + } } diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index 55c84012f..4481af0b2 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -80,11 +80,11 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure Date: Thu, 10 Apr 2014 00:01:27 -0400 Subject: [PATCH 002/144] Changed turbines to no longer extend the AS turbine prefab in Calc-Core --- .../turbine/BlockMechanicalTurbine.java | 236 +++++++++--------- .../energy/turbine/BlockTurbineBase.java | 62 +++++ .../energy/turbine/TileMechanicalTurbine.java | 4 +- .../energy/turbine/TileTurbineBase.java | 216 ++++++++++++++++ .../energy/turbine/TileWindTurbine.java | 2 +- .../energy/turbine/TurbineMBlockHandler.java | 28 +++ 6 files changed, 424 insertions(+), 124 deletions(-) create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockTurbineBase.java create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileTurbineBase.java create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TurbineMBlockHandler.java diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockMechanicalTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockMechanicalTurbine.java index adc8c3877..7839ba8f7 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockMechanicalTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockMechanicalTurbine.java @@ -11,150 +11,146 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import resonantinduction.core.Reference; import resonantinduction.core.resource.ItemHandCrank; -import calclavia.lib.prefab.turbine.BlockTurbine; -import calclavia.lib.prefab.turbine.TileTurbine; -public class BlockMechanicalTurbine extends BlockTurbine +public class BlockMechanicalTurbine extends BlockTurbineBase { - public BlockMechanicalTurbine(int id) - { - super(id, Material.iron); - setTextureName(Reference.PREFIX + "material_wood_surface"); - rotationMask = Byte.parseByte("111111", 2); - } + public BlockMechanicalTurbine(int id) + { + super(id, Material.iron); + setTextureName(Reference.PREFIX + "material_wood_surface"); + rotationMask = Byte.parseByte("111111", 2); + } - @Override - public int getDamageValue(World world, int x, int y, int z) - { - TileEntity tile = world.getBlockTileEntity(x, y, z); + @Override + public int getDamageValue(World world, int x, int y, int z) + { + TileEntity tile = world.getBlockTileEntity(x, y, z); - if (tile instanceof TileTurbine) - return ((TileTurbine) tile).tier; + if (tile instanceof TileTurbineBase) + return ((TileTurbineBase) tile).tier; - return 0; - } + return 0; + } - /** - * Temporarily "cheat" var for dropping with damage. - */ - int dropDamage = 0; + /** Temporarily "cheat" var for dropping with damage. */ + int dropDamage = 0; - @Override - public int damageDropped(int par1) - { - return dropDamage; - } + @Override + public int damageDropped(int par1) + { + return dropDamage; + } - @Override - public void breakBlock(World world, int x, int y, int z, int par5, int par6) - { - dropDamage = getDamageValue(world, x, y, z); - super.breakBlock(world, x, y, z, par5, par6); - } + @Override + public void breakBlock(World world, int x, int y, int z, int par5, int par6) + { + dropDamage = getDamageValue(world, x, y, z); + super.breakBlock(world, x, y, z, par5, par6); + } - @Override - public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLiving, ItemStack itemStack) - { - super.onBlockPlacedBy(world, x, y, z, entityLiving, itemStack); - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entityLiving, ItemStack itemStack) + { + super.onBlockPlacedBy(world, x, y, z, entityLiving, itemStack); + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if (tileEntity instanceof TileMechanicalTurbine) - { - ((TileMechanicalTurbine) tileEntity).tier = itemStack.getItemDamage(); - } - } + if (tileEntity instanceof TileMechanicalTurbine) + { + ((TileMechanicalTurbine) tileEntity).tier = itemStack.getItemDamage(); + } + } - @Override - public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) - { - if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemHandCrank) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + @Override + public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemHandCrank) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if (tileEntity instanceof TileTurbine) - { - if (!world.isRemote) - { - TileMechanicalTurbine tile = (TileMechanicalTurbine) tileEntity; - tile.mechanicalNode.torque = -tile.mechanicalNode.torque; - tile.mechanicalNode.angularVelocity = -tile.mechanicalNode.angularVelocity; - } - return true; - } - } + if (tileEntity instanceof TileTurbineBase) + { + if (!world.isRemote) + { + TileMechanicalTurbine tile = (TileMechanicalTurbine) tileEntity; + tile.mechanicalNode.torque = -tile.mechanicalNode.torque; + tile.mechanicalNode.angularVelocity = -tile.mechanicalNode.angularVelocity; + } + return true; + } + } - return false; - } + return false; + } - @Override - public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + @Override + public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if (tileEntity instanceof TileTurbine) - { - if (!world.isRemote) - { - TileTurbine tile = (TileTurbine) tileEntity; + if (tileEntity instanceof TileTurbineBase) + { + if (!world.isRemote) + { + TileTurbineBase tile = (TileTurbineBase) tileEntity; - if (tile.getMultiBlock().isConstructed()) - { - tile.getMultiBlock().deconstruct(); - tile.multiBlockRadius++; + if (tile.getMultiBlock().isConstructed()) + { + tile.getMultiBlock().deconstruct(); + tile.multiBlockRadius++; - if (!tile.getMultiBlock().construct()) - { - tile.multiBlockRadius = 1; - } + if (!tile.getMultiBlock().construct()) + { + tile.multiBlockRadius = 1; + } - return true; - } - else - { - if (!tile.getMultiBlock().construct()) - { - tile.multiBlockRadius = 1; - tile.getMultiBlock().construct(); - } - } - } + return true; + } + else + { + if (!tile.getMultiBlock().construct()) + { + tile.multiBlockRadius = 1; + tile.getMultiBlock().construct(); + } + } + } - return true; - } + return true; + } - return false; - } + return false; + } - @Override - public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + @Override + public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer par5EntityPlayer, int side, float hitX, float hitY, float hitZ) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if (!world.isRemote && tileEntity instanceof TileTurbine) - { - Set toFlip = new HashSet(); + if (!world.isRemote && tileEntity instanceof TileTurbineBase) + { + Set toFlip = new HashSet(); - if (!((TileTurbine) tileEntity).getMultiBlock().isConstructed()) - { - toFlip.add((TileTurbine) tileEntity); - } - else - { - Set str = ((TileTurbine) tileEntity).getMultiBlock().getPrimary().getMultiBlock().getStructure(); + if (!((TileTurbineBase) tileEntity).getMultiBlock().isConstructed()) + { + toFlip.add((TileTurbineBase) tileEntity); + } + else + { + Set str = ((TileTurbineBase) tileEntity).getMultiBlock().getPrimary().getMultiBlock().getStructure(); - if (str != null) - toFlip.addAll(str); - } + if (str != null) + toFlip.addAll(str); + } - for (TileTurbine turbine : toFlip) - { - if (side == turbine.getDirection().ordinal()) - world.setBlockMetadataWithNotify(turbine.xCoord, turbine.yCoord, turbine.zCoord, side ^ 1, 3); - else - world.setBlockMetadataWithNotify(turbine.xCoord, turbine.yCoord, turbine.zCoord, side, 3); - } - } + for (TileTurbineBase turbine : toFlip) + { + if (side == turbine.getDirection().ordinal()) + world.setBlockMetadataWithNotify(turbine.xCoord, turbine.yCoord, turbine.zCoord, side ^ 1, 3); + else + world.setBlockMetadataWithNotify(turbine.xCoord, turbine.yCoord, turbine.zCoord, side, 3); + } + } - return true; - } + return true; + } } diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockTurbineBase.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockTurbineBase.java new file mode 100644 index 000000000..0777f119c --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockTurbineBase.java @@ -0,0 +1,62 @@ +package resonantinduction.mechanical.energy.turbine; + +import net.minecraft.block.material.Material; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import calclavia.lib.prefab.block.BlockRotatable; + +/* + * Turbine block, extend this. + */ +public class BlockTurbineBase extends BlockRotatable +{ + public BlockTurbineBase(int id, Material material) + { + super(id, material); + rotationMask = Byte.parseByte("000001", 2); + } + + @Override + public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if (tileEntity instanceof TileTurbineBase) + { + if (!world.isRemote) + { + return ((TileTurbineBase) tileEntity).getMultiBlock().toggleConstruct(); + } + + return true; + } + + return false; + } + + @Override + public void breakBlock(World world, int x, int y, int z, int par5, int par6) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + + if (tileEntity instanceof TileTurbineBase) + { + ((TileTurbineBase) tileEntity).getMultiBlock().deconstruct(); + } + + super.breakBlock(world, x, y, z, par5, par6); + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public boolean isOpaqueCube() + { + return false; + } +} diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java index 57b1ee5cb..3ff480818 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java @@ -11,10 +11,9 @@ import calclavia.lib.grid.INodeProvider; import calclavia.lib.network.Synced; import calclavia.lib.network.Synced.SyncedInput; import calclavia.lib.network.Synced.SyncedOutput; -import calclavia.lib.prefab.turbine.TileTurbine; //TODO: MC 1.7, merge turbines in. -public class TileMechanicalTurbine extends TileTurbine implements INodeProvider +public class TileMechanicalTurbine extends TileTurbineBase implements INodeProvider { protected MechanicalNode mechanicalNode; @Synced(1) @@ -66,7 +65,6 @@ public class TileMechanicalTurbine extends TileTurbine implements INodeProvider public TileMechanicalTurbine() { super(); - energy = new EnergyStorageHandler(0); mechanicalNode = new TurbineNode(this); } diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileTurbineBase.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileTurbineBase.java new file mode 100644 index 000000000..5ede2f0ac --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileTurbineBase.java @@ -0,0 +1,216 @@ +package resonantinduction.mechanical.energy.turbine; + +import java.util.HashSet; +import java.util.Set; + +import net.minecraft.block.material.Material; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.packet.Packet; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; +import universalelectricity.api.vector.Vector3; +import calclavia.components.CalclaviaLoader; +import calclavia.lib.content.module.TileBase; +import calclavia.lib.multiblock.reference.IMultiBlockStructure; +import calclavia.lib.network.Synced; +import calclavia.lib.network.Synced.SyncedInput; +import calclavia.lib.network.Synced.SyncedOutput; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +/** Reduced version of the main turbine class */ +public abstract class TileTurbineBase extends TileBase implements IMultiBlockStructure +{ + /** Radius of large turbine? */ + public int multiBlockRadius = 1; + + /** Max power in watts. */ + protected long maxPower; + + /** The power of the turbine this tick. In joules/tick */ + public long power = 0; + + /** Current rotation of the turbine in radians. */ + public float rotation = 0; + + protected final long defaultTorque = 5000; + protected long torque = defaultTorque; + protected float prevAngularVelocity = 0; + + @Synced(1) + protected float angularVelocity = 0; + @Synced + public int tier = 0; + + public TileTurbineBase() + { + super(Material.wood); + } + + public ForgeDirection getDirection() + { + return ForgeDirection.getOrientation(getBlockMetadata()); + } + + @Override + public void initiate() + { + super.initiate(); + } + + @Override + public void updateEntity() + { + super.updateEntity(); + + getMultiBlock().update(); + + if (getMultiBlock().isPrimary()) + { + if (!worldObj.isRemote) + { + /** Set angular velocity based on power and torque. */ + angularVelocity = (float) ((double) power / torque); + + if (!worldObj.isRemote && ticks % 3 == 0 && prevAngularVelocity != angularVelocity) + { + sendPowerUpdate(); + prevAngularVelocity = angularVelocity; + } + + if (power > 0) + onProduce(); + } + + if (angularVelocity != 0) + { + playSound(); + + /** Update rotation. */ + rotation = (float) ((rotation + angularVelocity / 20) % (Math.PI * 2)); + } + } + + if (!worldObj.isRemote) + power = 0; + } + + protected long getMaxPower() + { + if (this.getMultiBlock().isConstructed()) + { + return (long) (maxPower * getArea()); + } + + return maxPower; + } + + public int getArea() + { + return (int) (((multiBlockRadius + 0.5) * 2) * ((multiBlockRadius + 0.5) * 2)); + } + + public void onProduce() + { + } + + public void playSound() + { + + } + + @Override + public Packet getDescriptionPacket() + { + return CalclaviaLoader.PACKET_ANNOTATION.getPacket(this); + } + + public void sendPowerUpdate() + { + CalclaviaLoader.PACKET_ANNOTATION.sync(this, 1); + } + + /** Reads a tile entity from NBT. */ + @Override + @SyncedInput + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + multiBlockRadius = nbt.getInteger("multiBlockRadius"); + getMultiBlock().load(nbt); + } + + /** Writes a tile entity to NBT. */ + @Override + @SyncedOutput + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + nbt.setInteger("multiBlockRadius", multiBlockRadius); + getMultiBlock().save(nbt); + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getRenderBoundingBox() + { + return AxisAlignedBB.getAABBPool().getAABB(this.xCoord - multiBlockRadius, this.yCoord - multiBlockRadius, this.zCoord - multiBlockRadius, this.xCoord + 1 + multiBlockRadius, this.yCoord + 1 + multiBlockRadius, this.zCoord + 1 + multiBlockRadius); + } + + /** MutliBlock methods. */ + private TurbineMBlockHandler multiBlock; + + @Override + public Vector3[] getMultiBlockVectors() + { + Set vectors = new HashSet(); + + ForgeDirection dir = getDirection(); + int xMulti = dir.offsetX != 0 ? 0 : 1; + int yMulti = dir.offsetY != 0 ? 0 : 1; + int zMulti = dir.offsetZ != 0 ? 0 : 1; + + for (int x = -multiBlockRadius; x <= multiBlockRadius; x++) + { + for (int y = -multiBlockRadius; y <= multiBlockRadius; y++) + { + for (int z = -multiBlockRadius; z <= multiBlockRadius; z++) + { + vectors.add(new Vector3(x * xMulti, y * yMulti, z * zMulti)); + } + } + } + + return vectors.toArray(new Vector3[0]); + } + + @Override + public Vector3 getPosition() + { + return new Vector3(this); + } + + @Override + public TurbineMBlockHandler getMultiBlock() + { + if (multiBlock == null) + multiBlock = new TurbineMBlockHandler(this); + + return multiBlock; + } + + @Override + public void onMultiBlockChanged() + { + worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType() != null ? getBlockType().blockID : 0); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + @Override + public World getWorld() + { + return worldObj; + } + +} diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java index 5559556af..8ad896875 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java @@ -22,7 +22,7 @@ import calclavia.lib.utility.inventory.InventoryUtility; * @author Calclavia * */ -public class TileWindTurbine extends TileMechanicalTurbine implements IBoilHandler +public class TileWindTurbine extends TileMechanicalTurbine { private final byte[] openBlockCache = new byte[224]; private int checkCount = 0; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TurbineMBlockHandler.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TurbineMBlockHandler.java new file mode 100644 index 000000000..c2e179dc9 --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TurbineMBlockHandler.java @@ -0,0 +1,28 @@ +package resonantinduction.mechanical.energy.turbine; + +import net.minecraft.tileentity.TileEntity; +import universalelectricity.api.vector.Vector3; +import calclavia.lib.multiblock.reference.MultiBlockHandler; + +public class TurbineMBlockHandler extends MultiBlockHandler +{ + public TurbineMBlockHandler(TileTurbineBase wrapper) + { + super(wrapper); + } + + public TileTurbineBase getWrapperAt(Vector3 position) + { + TileEntity tile = position.getTileEntity(self.getWorld()); + + if (tile != null && wrapperClass.isAssignableFrom(tile.getClass())) + { + if (((TileTurbineBase) tile).getDirection() == self.getDirection() && ((TileTurbineBase) tile).tier == self.tier) + { + return (TileTurbineBase) tile; + } + } + + return null; + } +} From 58fe23f7dd59dce7d6456079bb51411d7207e989 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 01:02:46 -0400 Subject: [PATCH 003/144] Reduced gear shaft angle velocity lose to zero --- .../mechanical/energy/gear/PartGearShaft.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java index 1b944775b..5e769dacd 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java @@ -63,16 +63,7 @@ public class PartGearShaft extends PartMechanical @Override public double getAngularVelocityLoad() { - // Decelerate the gear based on tier. - switch (tier) - { - default: - return 0.03; - case 1: - return 0.02; - case 2: - return 0.01; - } + return 0; } @Override From 594be4e06220213cc420b0bf310d326206d4c76a Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 01:16:18 -0400 Subject: [PATCH 004/144] Removed annoying entity pushing effect from wind turbines --- .../energy/turbine/TileWindTurbine.java | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java index 8ad896875..e745b8c95 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java @@ -74,54 +74,6 @@ public class TileWindTurbine extends TileMechanicalTurbine super.updateEntity(); } - @Override - public void onProduce() - { - super.onProduce(); - - /** - * Blow entities if greater than max power. - */ - double velocity = !worldObj.isRemote ? mechanicalNode.getAngularVelocity() : renderAngularVelocity; - - if (velocity != 0) - { - ForgeDirection dir = getDirection(); - - double affectRange = Math.abs(velocity * 2); - - Cuboid effect = Cuboid.full().translate(new Vector3(this).translate(dir)); - - if (getMultiBlock().isConstructed()) - { - double xMulti = dir.offsetX != 0 ? affectRange : 1; - double yMulti = dir.offsetY != 0 ? affectRange : 1; - double zMulti = dir.offsetZ != 0 ? affectRange : 1; - - effect.expand(new Vector3(multiBlockRadius * xMulti, multiBlockRadius * yMulti, multiBlockRadius * zMulti)); - } - else - { - double xMulti = dir.offsetX != 0 ? affectRange : 0; - double yMulti = dir.offsetY != 0 ? affectRange : 0; - double zMulti = dir.offsetZ != 0 ? affectRange : 0; - - effect.expand(new Vector3(xMulti, yMulti, zMulti)); - } - - List entities = worldObj.getEntitiesWithinAABB(Entity.class, effect.toAABB()); - - velocity = Math.min(Math.max(velocity, -0.3), 0.3); - - for (Entity entity : entities) - { - entity.motionX += dir.offsetX * velocity / 20 * 0.3; - entity.motionY += dir.offsetY * velocity / 20 * 0.3; - entity.motionZ += dir.offsetZ * velocity / 20 * 0.3; - } - } - } - private void computePower() { int checkSize = 10; From 5598571f42a89a817b64713af59ab016fc60d097 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 01:46:08 -0400 Subject: [PATCH 005/144] Buff wind and water turbines by x100 to compete with other power sources --- .../mechanical/energy/turbine/TileMechanicalTurbine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java index 3ff480818..6931d4387 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java @@ -117,7 +117,7 @@ public class TileMechanicalTurbine extends TileTurbineBase implements INodeProvi if (mechanicalNode.angularVelocity < 0) angularVelocity = -Math.abs(angularVelocity); - mechanicalNode.apply((torque - mechanicalNode.getTorque()) / 10, (angularVelocity - mechanicalNode.getAngularVelocity()) / 10); + mechanicalNode.apply((torque - mechanicalNode.getTorque()) * 10, (angularVelocity - mechanicalNode.getAngularVelocity()) * 10); } } From c436ee2dfb5d426dba01bf332ea89579c415e44f Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 01:54:42 -0400 Subject: [PATCH 006/144] Reverted last change due to render issues, need to implement max rotation for renders --- .../mechanical/energy/turbine/TileMechanicalTurbine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java index 6931d4387..3ff480818 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java @@ -117,7 +117,7 @@ public class TileMechanicalTurbine extends TileTurbineBase implements INodeProvi if (mechanicalNode.angularVelocity < 0) angularVelocity = -Math.abs(angularVelocity); - mechanicalNode.apply((torque - mechanicalNode.getTorque()) * 10, (angularVelocity - mechanicalNode.getAngularVelocity()) * 10); + mechanicalNode.apply((torque - mechanicalNode.getTorque()) / 10, (angularVelocity - mechanicalNode.getAngularVelocity()) / 10); } } From c5368ba283a857005632440678eba3a2975cc810 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Thu, 10 Apr 2014 20:57:21 +0300 Subject: [PATCH 007/144] Added support for any phase loading, This will leave no values unconfigured --- .../core/ResonantInduction.java | 18 +++++++++--------- .../scala/resonantinduction/core/Settings.java | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/scala/resonantinduction/core/ResonantInduction.java b/src/main/scala/resonantinduction/core/ResonantInduction.java index f8371c4fd..578c7a9be 100644 --- a/src/main/scala/resonantinduction/core/ResonantInduction.java +++ b/src/main/scala/resonantinduction/core/ResonantInduction.java @@ -137,15 +137,15 @@ public class ResonantInduction proxy.postInit(); Settings.CONFIGURATION.save(); } -// -// @ForgeSubscribe -// public void configAnnotationAdded(ConfigAnnotationEvent event) -// { -// if (event.sourceClass.startsWith("resonantinduction")) -// { -// ConfigHandler.handleClass(event.sourceClass, Settings.CONFIGURATION); -// } -// } + + @ForgeSubscribe + public void configAnnotationAdded(ConfigAnnotationEvent event) + { + if (event.sourceClass.startsWith(Settings.DOMAIN)) + { + ConfigHandler.handleClass(event.sourceClass, Settings.CONFIGURATION); + } + } /** * Recipe Types diff --git a/src/main/scala/resonantinduction/core/Settings.java b/src/main/scala/resonantinduction/core/Settings.java index 73146c652..4c47c104e 100644 --- a/src/main/scala/resonantinduction/core/Settings.java +++ b/src/main/scala/resonantinduction/core/Settings.java @@ -16,7 +16,7 @@ import cpw.mods.fml.common.ModMetadata; public class Settings { public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), Reference.NAME + ".cfg")); - + public static final String DOMAIN = "resonantinduction"; /** IDs suggested by Jyzarc and Horfius */ public static final IDManager idManager; @@ -27,7 +27,7 @@ public class Settings CONFIGURATION.save(); } - public static int getNextBlockID() + public static int getNextBlockID() { return idManager.getNextBlockID(); } From d0bac1e9a7203bbfe7afe801f35caee405826c62 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 16:28:51 -0400 Subject: [PATCH 008/144] Increase solar panel output from 25 to 50 --- .../electrical/generator/solar/TileSolarPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java index 80d01df76..c1caa1c87 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java @@ -64,7 +64,7 @@ public class TileSolarPanel extends TileEnergyDistribution { if (!(this.worldObj.isThundering() || this.worldObj.isRaining())) { - this.energy.receiveEnergy(25, true); + this.energy.receiveEnergy(50, true); markDistributionUpdate |= produce() > 0; } } From 190691793f79cfd2843bc04333edb24fb6a9eaf1 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 16:32:48 -0400 Subject: [PATCH 009/144] Solar output can be configured --- .../electrical/generator/solar/TileSolarPanel.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java index c1caa1c87..8e9d5ba40 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java @@ -1,5 +1,6 @@ package resonantinduction.electrical.generator.solar; +import calclavia.lib.config.Config; import calclavia.lib.content.module.TileRender; import calclavia.lib.prefab.vector.Cuboid; import calclavia.lib.render.ConnectedTextureRenderer; @@ -8,6 +9,7 @@ import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.util.Icon; +import net.minecraftforge.common.Configuration; import resonantinduction.core.Reference; import resonantinduction.electrical.battery.TileEnergyDistribution; import universalelectricity.api.energy.EnergyStorageHandler; @@ -16,11 +18,13 @@ public class TileSolarPanel extends TileEnergyDistribution { @SideOnly(Side.CLIENT) public static Icon sideIcon, bottomIcon; + @Config(category = "Power", key = "Solor_Panel") + public static long SOLAR_ENERGY = 50; public TileSolarPanel() { super(Material.iron); - energy = new EnergyStorageHandler(800); + energy = new EnergyStorageHandler(SOLAR_ENERGY * 20); ioMap = 728; textureName = "solarPanel_top"; bounds = new Cuboid(0, 0, 0, 1, 0.3f, 1); @@ -64,7 +68,7 @@ public class TileSolarPanel extends TileEnergyDistribution { if (!(this.worldObj.isThundering() || this.worldObj.isRaining())) { - this.energy.receiveEnergy(50, true); + this.energy.receiveEnergy(SOLAR_ENERGY, true); markDistributionUpdate |= produce() > 0; } } From 8e896a9a66e706bbc0d3476151a7e06e0205bc2b Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 16:37:14 -0400 Subject: [PATCH 010/144] Increase large gear ratio --- .../resonantinduction/mechanical/energy/gear/PartGear.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index 4481af0b2..a673cd0bd 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -328,7 +328,7 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure Date: Thu, 10 Apr 2014 16:37:48 -0400 Subject: [PATCH 011/144] Increased hand cranking power --- .../resonantinduction/mechanical/energy/gear/PartGear.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index a673cd0bd..1e5e426a6 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -342,7 +342,7 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure 0) { - node.apply(isClockwiseCrank ? 5 : -5, isClockwiseCrank ? 0.025f : -0.025f); + node.apply(isClockwiseCrank ? 15 : -15, isClockwiseCrank ? 0.025f : -0.025f); manualCrankTime--; } From 7061027154212b21d935a21069dbb44fe983f9e0 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 16:38:18 -0400 Subject: [PATCH 012/144] Increased hand crank time --- .../resonantinduction/mechanical/energy/gear/PartGear.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index 1e5e426a6..1131a6aa4 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -371,7 +371,7 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure Date: Thu, 10 Apr 2014 16:58:16 -0400 Subject: [PATCH 013/144] Implemented max rotation delta for renders --- .../mechanical/energy/gear/PartGear.java | 1024 ++++++++--------- .../mechanical/energy/gear/RenderGear.java | 1 + .../energy/grid/MechanicalNode.java | 436 ++++--- 3 files changed, 715 insertions(+), 746 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index 1131a6aa4..0c07a0dd0 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -33,529 +33,509 @@ import codechicken.multipart.TileMultipart; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -/** - * We assume all the force acting on the gear is 90 degrees. +/** We assume all the force acting on the gear is 90 degrees. * - * @author Calclavia - */ + * @author Calclavia */ public class PartGear extends PartMechanical implements IMultiBlockStructure { - public static Cuboid6[][] oBoxes = new Cuboid6[6][2]; - - static - { - oBoxes[0][0] = new Cuboid6(1 / 8D, 0, 0, 7 / 8D, 1 / 8D, 1); - oBoxes[0][1] = new Cuboid6(0, 0, 1 / 8D, 1, 1 / 8D, 7 / 8D); - for (int s = 1; s < 6; s++) - { - Transformation t = Rotation.sideRotations[s].at(Vector3.center); - oBoxes[s][0] = oBoxes[0][0].copy().apply(t); - oBoxes[s][1] = oBoxes[0][1].copy().apply(t); - } - } - - private boolean isClockwiseCrank = true; - private int manualCrankTime = 0; - private int multiBlockRadius = 1; - - public PartGear() - { - super(); - node = new MechanicalNode(this) - { - @Override - public void onUpdate() - { - if (!getMultiBlock().isPrimary()) - { - torque = 0; - angularVelocity = 0; - } - } - - @Override - public double getTorqueLoad() - { - // Decelerate the gear based on tier. - switch (tier) - { - default: - return 0.03; - case 1: - return 0.02; - case 2: - return 0.01; - } - } - - @Override - public double getAngularVelocityLoad() - { - // Decelerate the gear based on tier. - switch (tier) - { - default: - return 0.03; - case 1: - return 0.02; - case 2: - return 0.01; - } - } - - @Override - public void doRecache() - { - connections.clear(); - - /** - * Only call refresh if this is the main block of a multiblock gear or a single - * gear - * block. - */ - if (!getMultiBlock().isPrimary() || world() == null) - { - return; - } - - /** Look for gears that are back-to-back with this gear. Equate torque. */ - TileEntity tileBehind = new universalelectricity.api.vector.Vector3(tile()).translate(placementSide).getTileEntity(world()); - - if (tileBehind instanceof INodeProvider) - { - MechanicalNode instance = ((INodeProvider) tileBehind).getNode(MechanicalNode.class, placementSide.getOpposite()); - - if (instance != null && instance != this && !(instance.parent instanceof PartGearShaft) && instance.canConnect(placementSide.getOpposite(), this)) - { - connections.put(instance, placementSide); - } - } - - /** - * Look for gears that are internal and adjacent to this gear. (The 4 sides + - * the internal center) - */ - for (int i = 0; i < 6; i++) - { - ForgeDirection checkDir = ForgeDirection.getOrientation(i); - - TileEntity tile = tile(); - - if (getMultiBlock().isConstructed() && checkDir != placementSide && checkDir != placementSide.getOpposite()) - { - tile = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir).getTileEntity(world()); - } - - if (tile instanceof INodeProvider) - { - /** - * If we're checking for the block that is opposite to the gear's - * placement - * side - * (the center), then we try to look for a gear shaft in the center. - */ - MechanicalNode instance = ((INodeProvider) tile).getNode(MechanicalNode.class, checkDir == placementSide.getOpposite() ? ForgeDirection.UNKNOWN : checkDir); - - if (!connections.containsValue(checkDir) && instance != this && checkDir != placementSide && instance != null && instance.canConnect(checkDir.getOpposite(), this)) - { - connections.put(instance, checkDir); - } - } - } - - int displaceCheck = 1; - - if (getMultiBlock().isPrimary() && getMultiBlock().isConstructed()) - { - displaceCheck = 2; - } - - /** Look for gears outside this block space, the relative UP, DOWN, LEFT, RIGHT */ - for (int i = 0; i < 4; i++) - { - ForgeDirection checkDir = ForgeDirection.getOrientation(Rotation.rotateSide(PartGear.this.placementSide.ordinal(), i)); - TileEntity checkTile = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir, displaceCheck).getTileEntity(world()); - - if (!connections.containsValue(checkDir) && checkTile instanceof INodeProvider) - { - MechanicalNode instance = ((INodeProvider) checkTile).getNode(MechanicalNode.class, placementSide); - - if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this) && !(instance.parent instanceof PartGearShaft)) - { - connections.put(instance, checkDir); - } - } - } - } - - /** - * Can this gear be connected BY the source? - * - * @param from - Direction source is coming from. - * @param with - The source of the connection. - * @return True is so. - */ - @Override - public boolean canConnect(ForgeDirection from, Object with) - { - if (!getMultiBlock().isPrimary()) - { - return false; - } - - if (with instanceof MechanicalNode) - { - INodeProvider parent = ((MechanicalNode) with).parent; - - /** - * Check for flat connections (gear face on gear face) to make sure it's - * actually on this gear block. - */ - if (from == placementSide.getOpposite()) - { - if (parent instanceof PartGear || parent instanceof PartGearShaft) - { - if (parent instanceof PartGearShaft) - { - PartGearShaft shaft = (PartGearShaft) parent; - return shaft.tile().partMap(from.getOpposite().ordinal()) == PartGear.this && Math.abs(shaft.placementSide.offsetX) == Math.abs(placementSide.offsetX) && Math.abs(shaft.placementSide.offsetY) == Math.abs(placementSide.offsetY) && Math.abs(shaft.placementSide.offsetZ) == Math.abs(placementSide.offsetZ); - } - else if (parent instanceof PartGear) - { - if (((PartGear) parent).tile() == tile() && !getMultiBlock().isConstructed()) - { - return true; - } - - if (((PartGear) parent).placementSide != placementSide) - { - TMultiPart part = tile().partMap(((PartGear) parent).placementSide.ordinal()); - - if (part instanceof PartGear) - { - /** - * Case when we connect gears via edges internally. Large - * gear - * attempt to connect to small gear. - */ - PartGear sourceGear = (PartGear) part; - - if (sourceGear.isCenterMultiBlock() && !sourceGear.getMultiBlock().isPrimary()) - { - // For large gear to small gear on edge connection. - return true; - } - } - else - { - /** Small gear attempting to connect to large gear. */ - if (getMultiBlock().isConstructed()) - { - TMultiPart checkPart = ((PartGear) parent).tile().partMap(placementSide.ordinal()); - - if (checkPart instanceof PartGear) - { - ForgeDirection requiredDirection = ((PartGear) checkPart).getPosition().subtract(position()).toForgeDirection(); - return ((PartGear) checkPart).isCenterMultiBlock() && ((PartGear) parent).placementSide == requiredDirection; - } - } - } - } - } - } - - /** Face to face stick connection. */ - TileEntity sourceTile = position().translate(from.getOpposite()).getTileEntity(world()); - - if (sourceTile instanceof INodeProvider) - { - MechanicalNode sourceInstance = ((INodeProvider) sourceTile).getNode(MechanicalNode.class, from); - return sourceInstance == with; - } - } - else if (from == placementSide) - { - /** Face to face stick connection. */ - TileEntity sourceTile = position().translate(from).getTileEntity(world()); - - if (sourceTile instanceof INodeProvider) - { - MechanicalNode sourceInstance = ((INodeProvider) sourceTile).getNode(MechanicalNode.class, from.getOpposite()); - return sourceInstance == with; - } - } - else - { - TileEntity destinationTile = ((MechanicalNode) with).position().translate(from.getOpposite()).getTileEntity(world()); - - if (destinationTile instanceof INodeProvider && destinationTile instanceof TileMultipart) - { - TMultiPart destinationPart = ((TileMultipart) destinationTile).partMap(placementSide.ordinal()); - - if (destinationPart instanceof PartGear) - { - if (PartGear.this != destinationPart) - { - return ((PartGear) destinationPart).isCenterMultiBlock(); - } - else - { - return true; - } - } - else - { - return true; - } - } - } - } - - return false; - } - - @Override - public float getRatio(ForgeDirection dir, IMechanicalNode with) - { - universalelectricity.api.vector.Vector3 deltaPos = with.position().subtract(position()); - - boolean caseX = placementSide.offsetX != 0 && deltaPos.y == 0 && deltaPos.z == 0; - boolean caseY = placementSide.offsetY != 0 && deltaPos.x == 0 && deltaPos.z == 0; - boolean caseZ = placementSide.offsetZ != 0 && deltaPos.x == 0 && deltaPos.y == 0; - - if (caseX || caseY || caseZ) - { - return super.getRatio(dir, with); - } - - return getMultiBlock().isConstructed() ? 3f : super.getRatio(dir, with); - } - }; - } - - @Override - public void update() - { - super.update(); - - if (!this.world().isRemote) - { - if (manualCrankTime > 0) - { - node.apply(isClockwiseCrank ? 15 : -15, isClockwiseCrank ? 0.025f : -0.025f); - manualCrankTime--; - } - - } - - getMultiBlock().update(); - } - - @Override - public void checkClientUpdate() - { - if (getMultiBlock().isPrimary()) - super.checkClientUpdate(); - } - - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition hit, ItemStack itemStack) - { - if (itemStack != null && itemStack.getItem() instanceof ItemHandCrank) - { - if (!world().isRemote && ControlKeyModifer.isControlDown(player)) - { - getMultiBlock().get().node.torque = -getMultiBlock().get().node.torque; - getMultiBlock().get().node.angularVelocity = -getMultiBlock().get().node.angularVelocity; - return true; - } - - isClockwiseCrank = player.isSneaking(); - getMultiBlock().get().manualCrankTime = 20; - world().playSoundEffect(x() + 0.5, y() + 0.5, z() + 0.5, Reference.PREFIX + "gearCrank", 0.5f, 0.9f + world().rand.nextFloat() * 0.2f); - player.addExhaustion(0.01f); - return true; - } - - if (WrenchUtility.isWrench(itemStack)) - { - getMultiBlock().toggleConstruct(); - return true; - } - - return super.activate(player, hit, itemStack); - } - - @Override - public void preRemove() - { - super.preRemove(); - getMultiBlock().deconstruct(); - } - - /** - * Is this gear block the one in the center-edge of the multiblock that can interact with other - * gears? - * - * @return - */ - public boolean isCenterMultiBlock() - { - if (!getMultiBlock().isConstructed()) - { - return true; - } - - universalelectricity.api.vector.Vector3 primaryPos = getMultiBlock().getPrimary().getPosition(); - - if (primaryPos.intX() == x() && placementSide.offsetX == 0) - { - return true; - } - - if (primaryPos.intY() == y() && placementSide.offsetY == 0) - { - return true; - } - - if (primaryPos.intZ() == z() && placementSide.offsetZ == 0) - { - return true; - } - - return false; - } - - @Override - protected ItemStack getItem() - { - return new ItemStack(Mechanical.itemGear, 1, tier); - } - - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(Vector3 pos, float frame, int pass) - { - if (pass == 0) - { - RenderGear.INSTANCE.renderDynamic(this, pos.x, pos.y, pos.z, tier); - } - } - - @Override - public String getType() - { - return "resonant_induction_gear"; - } - - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - getMultiBlock().load(nbt); - } - - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - getMultiBlock().save(nbt); - } - - /** Multiblock */ - private GearMultiBlockHandler multiBlock; - - @Override - public universalelectricity.api.vector.Vector3[] getMultiBlockVectors() - { - Set vectors = new HashSet(); - ForgeDirection dir = placementSide; - - universalelectricity.api.vector.Vector3 rotationalAxis = universalelectricity.api.vector.Vector3.UP(); - - if (placementSide == ForgeDirection.NORTH || placementSide == ForgeDirection.SOUTH) - { - rotationalAxis = universalelectricity.api.vector.Vector3.EAST(); - } - else if (placementSide == ForgeDirection.WEST || placementSide == ForgeDirection.EAST) - { - rotationalAxis = universalelectricity.api.vector.Vector3.SOUTH(); - } - - for (int x = -1; x <= 1; x++) - { - for (int z = -1; z <= 1; z++) - { - universalelectricity.api.vector.Vector3 vector = new universalelectricity.api.vector.Vector3(x, 0, z); - vector.rotate(90, rotationalAxis); - vector = vector.round(); - vectors.add(vector); - } - } - - return vectors.toArray(new universalelectricity.api.vector.Vector3[0]); - } - - @Override - public World getWorld() - { - return world(); - } - - @Override - public void onMultiBlockChanged() - { - if (world() != null) - { - tile().notifyPartChange(this); - - if (!world().isRemote) - { - sendDescUpdate(); - } - } - } - - @Override - public MultiBlockHandler getMultiBlock() - { - if (multiBlock == null) - multiBlock = new GearMultiBlockHandler(this); - - return multiBlock; - } - - @Override - public N getNode(Class nodeType, ForgeDirection from) - { - if (nodeType.isAssignableFrom(node.getClass())) - return (N) getMultiBlock().get().node; - return null; - } - - /** Multipart Bounds */ - @Override - public Iterable getOcclusionBoxes() - { - return Arrays.asList(oBoxes[this.placementSide.ordinal()]); - } - - @Override - public int getSlotMask() - { - return 1 << this.placementSide.ordinal(); - } - - @Override - public Cuboid6 getBounds() - { - return FaceMicroClass.aBounds()[0x10 | this.placementSide.ordinal()]; - } - - @Override - @SideOnly(Side.CLIENT) - public Cuboid6 getRenderBounds() - { - return Cuboid6.full.copy().expand(multiBlockRadius); - } + public static Cuboid6[][] oBoxes = new Cuboid6[6][2]; + + static + { + oBoxes[0][0] = new Cuboid6(1 / 8D, 0, 0, 7 / 8D, 1 / 8D, 1); + oBoxes[0][1] = new Cuboid6(0, 0, 1 / 8D, 1, 1 / 8D, 7 / 8D); + for (int s = 1; s < 6; s++) + { + Transformation t = Rotation.sideRotations[s].at(Vector3.center); + oBoxes[s][0] = oBoxes[0][0].copy().apply(t); + oBoxes[s][1] = oBoxes[0][1].copy().apply(t); + } + } + + private boolean isClockwiseCrank = true; + private int manualCrankTime = 0; + private int multiBlockRadius = 1; + + public PartGear() + { + super(); + node = new MechanicalNode(this) + { + @Override + public void onUpdate() + { + if (!getMultiBlock().isPrimary()) + { + torque = 0; + angularVelocity = 0; + } + } + + @Override + public double getTorqueLoad() + { + // Decelerate the gear based on tier. + switch (tier) + { + default: + return 0.03; + case 1: + return 0.02; + case 2: + return 0.01; + } + } + + @Override + public double getAngularVelocityLoad() + { + // Decelerate the gear based on tier. + switch (tier) + { + default: + return 0.03; + case 1: + return 0.02; + case 2: + return 0.01; + } + } + + @Override + public void doRecache() + { + connections.clear(); + + /** Only call refresh if this is the main block of a multiblock gear or a single gear + * block. */ + if (!getMultiBlock().isPrimary() || world() == null) + { + return; + } + + /** Look for gears that are back-to-back with this gear. Equate torque. */ + TileEntity tileBehind = new universalelectricity.api.vector.Vector3(tile()).translate(placementSide).getTileEntity(world()); + + if (tileBehind instanceof INodeProvider) + { + MechanicalNode instance = ((INodeProvider) tileBehind).getNode(MechanicalNode.class, placementSide.getOpposite()); + + if (instance != null && instance != this && !(instance.parent instanceof PartGearShaft) && instance.canConnect(placementSide.getOpposite(), this)) + { + connections.put(instance, placementSide); + } + } + + /** Look for gears that are internal and adjacent to this gear. (The 4 sides + the + * internal center) */ + for (int i = 0; i < 6; i++) + { + ForgeDirection checkDir = ForgeDirection.getOrientation(i); + + TileEntity tile = tile(); + + if (getMultiBlock().isConstructed() && checkDir != placementSide && checkDir != placementSide.getOpposite()) + { + tile = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir).getTileEntity(world()); + } + + if (tile instanceof INodeProvider) + { + /** If we're checking for the block that is opposite to the gear's placement + * side (the center), then we try to look for a gear shaft in the center. */ + MechanicalNode instance = ((INodeProvider) tile).getNode(MechanicalNode.class, checkDir == placementSide.getOpposite() ? ForgeDirection.UNKNOWN : checkDir); + + if (!connections.containsValue(checkDir) && instance != this && checkDir != placementSide && instance != null && instance.canConnect(checkDir.getOpposite(), this)) + { + connections.put(instance, checkDir); + } + } + } + + int displaceCheck = 1; + + if (getMultiBlock().isPrimary() && getMultiBlock().isConstructed()) + { + displaceCheck = 2; + } + + /** Look for gears outside this block space, the relative UP, DOWN, LEFT, RIGHT */ + for (int i = 0; i < 4; i++) + { + ForgeDirection checkDir = ForgeDirection.getOrientation(Rotation.rotateSide(PartGear.this.placementSide.ordinal(), i)); + TileEntity checkTile = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir, displaceCheck).getTileEntity(world()); + + if (!connections.containsValue(checkDir) && checkTile instanceof INodeProvider) + { + MechanicalNode instance = ((INodeProvider) checkTile).getNode(MechanicalNode.class, placementSide); + + if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this) && !(instance.parent instanceof PartGearShaft)) + { + connections.put(instance, checkDir); + } + } + } + } + + /** Can this gear be connected BY the source? + * + * @param from - Direction source is coming from. + * @param with - The source of the connection. + * @return True is so. */ + @Override + public boolean canConnect(ForgeDirection from, Object with) + { + if (!getMultiBlock().isPrimary()) + { + return false; + } + + if (with instanceof MechanicalNode) + { + INodeProvider parent = ((MechanicalNode) with).parent; + + /** Check for flat connections (gear face on gear face) to make sure it's + * actually on this gear block. */ + if (from == placementSide.getOpposite()) + { + if (parent instanceof PartGear || parent instanceof PartGearShaft) + { + if (parent instanceof PartGearShaft) + { + PartGearShaft shaft = (PartGearShaft) parent; + return shaft.tile().partMap(from.getOpposite().ordinal()) == PartGear.this && Math.abs(shaft.placementSide.offsetX) == Math.abs(placementSide.offsetX) && Math.abs(shaft.placementSide.offsetY) == Math.abs(placementSide.offsetY) && Math.abs(shaft.placementSide.offsetZ) == Math.abs(placementSide.offsetZ); + } + else if (parent instanceof PartGear) + { + if (((PartGear) parent).tile() == tile() && !getMultiBlock().isConstructed()) + { + return true; + } + + if (((PartGear) parent).placementSide != placementSide) + { + TMultiPart part = tile().partMap(((PartGear) parent).placementSide.ordinal()); + + if (part instanceof PartGear) + { + /** Case when we connect gears via edges internally. Large + * gear attempt to connect to small gear. */ + PartGear sourceGear = (PartGear) part; + + if (sourceGear.isCenterMultiBlock() && !sourceGear.getMultiBlock().isPrimary()) + { + // For large gear to small gear on edge connection. + return true; + } + } + else + { + /** Small gear attempting to connect to large gear. */ + if (getMultiBlock().isConstructed()) + { + TMultiPart checkPart = ((PartGear) parent).tile().partMap(placementSide.ordinal()); + + if (checkPart instanceof PartGear) + { + ForgeDirection requiredDirection = ((PartGear) checkPart).getPosition().subtract(position()).toForgeDirection(); + return ((PartGear) checkPart).isCenterMultiBlock() && ((PartGear) parent).placementSide == requiredDirection; + } + } + } + } + } + } + + /** Face to face stick connection. */ + TileEntity sourceTile = position().translate(from.getOpposite()).getTileEntity(world()); + + if (sourceTile instanceof INodeProvider) + { + MechanicalNode sourceInstance = ((INodeProvider) sourceTile).getNode(MechanicalNode.class, from); + return sourceInstance == with; + } + } + else if (from == placementSide) + { + /** Face to face stick connection. */ + TileEntity sourceTile = position().translate(from).getTileEntity(world()); + + if (sourceTile instanceof INodeProvider) + { + MechanicalNode sourceInstance = ((INodeProvider) sourceTile).getNode(MechanicalNode.class, from.getOpposite()); + return sourceInstance == with; + } + } + else + { + TileEntity destinationTile = ((MechanicalNode) with).position().translate(from.getOpposite()).getTileEntity(world()); + + if (destinationTile instanceof INodeProvider && destinationTile instanceof TileMultipart) + { + TMultiPart destinationPart = ((TileMultipart) destinationTile).partMap(placementSide.ordinal()); + + if (destinationPart instanceof PartGear) + { + if (PartGear.this != destinationPart) + { + return ((PartGear) destinationPart).isCenterMultiBlock(); + } + else + { + return true; + } + } + else + { + return true; + } + } + } + } + + return false; + } + + @Override + public float getRatio(ForgeDirection dir, IMechanicalNode with) + { + universalelectricity.api.vector.Vector3 deltaPos = with.position().subtract(position()); + + boolean caseX = placementSide.offsetX != 0 && deltaPos.y == 0 && deltaPos.z == 0; + boolean caseY = placementSide.offsetY != 0 && deltaPos.x == 0 && deltaPos.z == 0; + boolean caseZ = placementSide.offsetZ != 0 && deltaPos.x == 0 && deltaPos.y == 0; + + if (caseX || caseY || caseZ) + { + return super.getRatio(dir, with); + } + + return getMultiBlock().isConstructed() ? 3f : super.getRatio(dir, with); + } + }; + } + + @Override + public void update() + { + super.update(); + + if (!this.world().isRemote) + { + if (manualCrankTime > 0) + { + node.apply(isClockwiseCrank ? 15 : -15, isClockwiseCrank ? 0.025f : -0.025f); + manualCrankTime--; + } + + } + + getMultiBlock().update(); + } + + @Override + public void checkClientUpdate() + { + if (getMultiBlock().isPrimary()) + super.checkClientUpdate(); + } + + @Override + public boolean activate(EntityPlayer player, MovingObjectPosition hit, ItemStack itemStack) + { + if (itemStack != null && itemStack.getItem() instanceof ItemHandCrank) + { + if (!world().isRemote && ControlKeyModifer.isControlDown(player)) + { + getMultiBlock().get().node.torque = -getMultiBlock().get().node.torque; + getMultiBlock().get().node.angularVelocity = -getMultiBlock().get().node.angularVelocity; + return true; + } + + isClockwiseCrank = player.isSneaking(); + getMultiBlock().get().manualCrankTime = 20; + world().playSoundEffect(x() + 0.5, y() + 0.5, z() + 0.5, Reference.PREFIX + "gearCrank", 0.5f, 0.9f + world().rand.nextFloat() * 0.2f); + player.addExhaustion(0.01f); + return true; + } + + if (WrenchUtility.isWrench(itemStack)) + { + getMultiBlock().toggleConstruct(); + return true; + } + + return super.activate(player, hit, itemStack); + } + + @Override + public void preRemove() + { + super.preRemove(); + getMultiBlock().deconstruct(); + } + + /** Is this gear block the one in the center-edge of the multiblock that can interact with other + * gears? + * + * @return */ + public boolean isCenterMultiBlock() + { + if (!getMultiBlock().isConstructed()) + { + return true; + } + + universalelectricity.api.vector.Vector3 primaryPos = getMultiBlock().getPrimary().getPosition(); + + if (primaryPos.intX() == x() && placementSide.offsetX == 0) + { + return true; + } + + if (primaryPos.intY() == y() && placementSide.offsetY == 0) + { + return true; + } + + if (primaryPos.intZ() == z() && placementSide.offsetZ == 0) + { + return true; + } + + return false; + } + + @Override + protected ItemStack getItem() + { + return new ItemStack(Mechanical.itemGear, 1, tier); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderDynamic(Vector3 pos, float frame, int pass) + { + if (pass == 0) + { + RenderGear.INSTANCE.renderDynamic(this, pos.x, pos.y, pos.z, tier); + } + } + + @Override + public String getType() + { + return "resonant_induction_gear"; + } + + @Override + public void load(NBTTagCompound nbt) + { + super.load(nbt); + getMultiBlock().load(nbt); + } + + @Override + public void save(NBTTagCompound nbt) + { + super.save(nbt); + getMultiBlock().save(nbt); + } + + /** Multiblock */ + private GearMultiBlockHandler multiBlock; + + @Override + public universalelectricity.api.vector.Vector3[] getMultiBlockVectors() + { + Set vectors = new HashSet(); + ForgeDirection dir = placementSide; + + universalelectricity.api.vector.Vector3 rotationalAxis = universalelectricity.api.vector.Vector3.UP(); + + if (placementSide == ForgeDirection.NORTH || placementSide == ForgeDirection.SOUTH) + { + rotationalAxis = universalelectricity.api.vector.Vector3.EAST(); + } + else if (placementSide == ForgeDirection.WEST || placementSide == ForgeDirection.EAST) + { + rotationalAxis = universalelectricity.api.vector.Vector3.SOUTH(); + } + + for (int x = -1; x <= 1; x++) + { + for (int z = -1; z <= 1; z++) + { + universalelectricity.api.vector.Vector3 vector = new universalelectricity.api.vector.Vector3(x, 0, z); + vector.rotate(90, rotationalAxis); + vector = vector.round(); + vectors.add(vector); + } + } + + return vectors.toArray(new universalelectricity.api.vector.Vector3[0]); + } + + @Override + public World getWorld() + { + return world(); + } + + @Override + public void onMultiBlockChanged() + { + if (world() != null) + { + tile().notifyPartChange(this); + + if (!world().isRemote) + { + sendDescUpdate(); + } + } + } + + @Override + public MultiBlockHandler getMultiBlock() + { + if (multiBlock == null) + multiBlock = new GearMultiBlockHandler(this); + + return multiBlock; + } + + @Override + public N getNode(Class nodeType, ForgeDirection from) + { + if (nodeType.isAssignableFrom(node.getClass())) + return (N) getMultiBlock().get().node; + return null; + } + + /** Multipart Bounds */ + @Override + public Iterable getOcclusionBoxes() + { + return Arrays.asList(oBoxes[this.placementSide.ordinal()]); + } + + @Override + public int getSlotMask() + { + return 1 << this.placementSide.ordinal(); + } + + @Override + public Cuboid6 getBounds() + { + return FaceMicroClass.aBounds()[0x10 | this.placementSide.ordinal()]; + } + + @Override + @SideOnly(Side.CLIENT) + public Cuboid6 getRenderBounds() + { + return Cuboid6.full.copy().expand(multiBlockRadius); + } } \ No newline at end of file diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java index 2cc436ee1..cd29575ac 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java @@ -18,6 +18,7 @@ public class RenderGear implements ISimpleItemRenderer { public static final RenderGear INSTANCE = new RenderGear(); public final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "gears.obj"); + public void renderGear(int side, int tier, boolean isLarge, double angle) { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java index 53b37c882..a06b2a96c 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java @@ -15,285 +15,273 @@ import universalelectricity.api.vector.Vector3; import java.util.Iterator; import java.util.Map.Entry; -/** - * A mechanical node for mechanical energy. +/** A mechanical node for mechanical energy. *

* Useful Formula: *

- * Power is the work per unit time. - * Power (W) = Torque (Strength of the rotation, Newton Meters) x Speed (Angular Velocity, RADIAN - * PER SECOND). - * *OR* - * Power = Torque / Time + * Power is the work per unit time. Power (W) = Torque (Strength of the rotation, Newton Meters) x + * Speed (Angular Velocity, RADIAN PER SECOND). *OR* Power = Torque / Time *

* Torque = r (Radius) * F (Force) * sin0 (Direction/Angle of the force applied. 90 degrees if * optimal.) - * - * @author Calclavia - */ -public class MechanicalNode extends Node - implements IMechanicalNode + * + * @author Calclavia */ +public class MechanicalNode extends Node implements IMechanicalNode { - public double torque = 0; - public double prevAngularVelocity, angularVelocity = 0; - public float acceleration = 2f; + public double torque = 0; + public double prevAngularVelocity, angularVelocity = 0; + public float acceleration = 2f; - /** - * The current rotation of the mechanical node. - */ - public double angle = 0; + /** The current rotation of the mechanical node. */ + public double angle = 0; + public double prev_angle = 0; + protected double maxDeltaAngle = Math.toRadians(15); - protected double load = 2; - protected byte connectionMap = Byte.parseByte("111111", 2); + protected double load = 2; + protected byte connectionMap = Byte.parseByte("111111", 2); - private double power = 0; + private double power = 0; - public MechanicalNode(INodeProvider parent) - { - super(parent); - } + public MechanicalNode(INodeProvider parent) + { + super(parent); + } - @Override - public MechanicalNode setLoad(double load) - { - this.load = load; - return this; - } + @Override + public MechanicalNode setLoad(double load) + { + this.load = load; + return this; + } - public MechanicalNode setConnection(byte connectionMap) - { - this.connectionMap = connectionMap; - return this; - } + public MechanicalNode setConnection(byte connectionMap) + { + this.connectionMap = connectionMap; + return this; + } - @Override - public void update(float deltaTime) - { - prevAngularVelocity = angularVelocity; + @Override + public void update(float deltaTime) + { + prevAngularVelocity = angularVelocity; - if (!ResonantInduction.proxy.isPaused()) - { - angle += angularVelocity * deltaTime; - } + if (!ResonantInduction.proxy.isPaused()) + { + angle += angularVelocity * deltaTime; + } - if (angle % (Math.PI * 2) != angle) - { - revolve(); - angle = angle % (Math.PI * 2); - } + if (angle % (Math.PI * 2) != angle) + { + revolve(); + angle = angle % (Math.PI * 2); + } - if (world() != null && !world().isRemote) - { - double acceleration = this.acceleration * deltaTime; + if (world() != null && !world().isRemote) + { + double acceleration = this.acceleration * deltaTime; - /** - * Energy loss - */ - double torqueLoss = Math.min(Math.abs(getTorque()), (Math.abs(getTorque() * getTorqueLoad()) + getTorqueLoad() / 10) * deltaTime); + /** Energy loss */ + double torqueLoss = Math.min(Math.abs(getTorque()), (Math.abs(getTorque() * getTorqueLoad()) + getTorqueLoad() / 10) * deltaTime); - if (torque > 0) - { - torque -= torqueLoss; - } - else - { - torque += torqueLoss; - } + if (torque > 0) + { + torque -= torqueLoss; + } + else + { + torque += torqueLoss; + } - double velocityLoss = Math.min(Math.abs(getAngularVelocity()), (Math.abs(getAngularVelocity() * getAngularVelocityLoad()) + getAngularVelocityLoad() / 10) * deltaTime); + double velocityLoss = Math.min(Math.abs(getAngularVelocity()), (Math.abs(getAngularVelocity() * getAngularVelocityLoad()) + getAngularVelocityLoad() / 10) * deltaTime); - if (angularVelocity > 0) - { - angularVelocity -= velocityLoss; - } - else - { - angularVelocity += velocityLoss; - } + if (angularVelocity > 0) + { + angularVelocity -= velocityLoss; + } + else + { + angularVelocity += velocityLoss; + } - power = getEnergy() / deltaTime; + power = getEnergy() / deltaTime; - synchronized (connections) - { - Iterator> it = connections.entrySet().iterator(); + synchronized (connections) + { + Iterator> it = connections.entrySet().iterator(); - while (it.hasNext()) - { - Entry entry = it.next(); + while (it.hasNext()) + { + Entry entry = it.next(); - ForgeDirection dir = entry.getValue(); - MechanicalNode adjacentMech = entry.getKey(); + ForgeDirection dir = entry.getValue(); + MechanicalNode adjacentMech = entry.getKey(); - /** - * Calculate angular velocity and torque. - */ - float ratio = adjacentMech.getRatio(dir.getOpposite(), this) / getRatio(dir, adjacentMech); - boolean inverseRotation = inverseRotation(dir, adjacentMech) && adjacentMech.inverseRotation(dir.getOpposite(), this); + /** Calculate angular velocity and torque. */ + float ratio = adjacentMech.getRatio(dir.getOpposite(), this) / getRatio(dir, adjacentMech); + boolean inverseRotation = inverseRotation(dir, adjacentMech) && adjacentMech.inverseRotation(dir.getOpposite(), this); - int inversion = inverseRotation ? -1 : 1; + int inversion = inverseRotation ? -1 : 1; - double applyTorque = inversion * adjacentMech.getTorque() / ratio * acceleration; + double applyTorque = inversion * adjacentMech.getTorque() / ratio * acceleration; - if (Math.abs(torque + applyTorque) < Math.abs(adjacentMech.getTorque() / ratio)) - { - torque += applyTorque; - } - else - { - torque -= applyTorque; - } + if (Math.abs(torque + applyTorque) < Math.abs(adjacentMech.getTorque() / ratio)) + { + torque += applyTorque; + } + else + { + torque -= applyTorque; + } - double applyVelocity = inversion * adjacentMech.getAngularVelocity() * ratio * acceleration; + double applyVelocity = inversion * adjacentMech.getAngularVelocity() * ratio * acceleration; - if (Math.abs(angularVelocity + applyVelocity) < Math.abs(adjacentMech.getAngularVelocity() * ratio)) - { - angularVelocity += applyVelocity; - } - else - { - angularVelocity -= applyVelocity; - } + if (Math.abs(angularVelocity + applyVelocity) < Math.abs(adjacentMech.getAngularVelocity() * ratio)) + { + angularVelocity += applyVelocity; + } + else + { + angularVelocity -= applyVelocity; + } - /** - * Set all current rotations - */ - // adjacentMech.angle = Math.abs(angle) * (adjacentMech.angle >= 0 ? 1 : -1); - } - } - } + /** Set all current rotations */ + // adjacentMech.angle = Math.abs(angle) * (adjacentMech.angle >= 0 ? 1 : -1); + } + } + } - onUpdate(); - } + onUpdate(); + //Locks the angle change to prevent visual errors + if (Math.abs(angle - prev_angle) > maxDeltaAngle) + { + angle = prev_angle + (angularVelocity >= 0 ? maxDeltaAngle : -maxDeltaAngle); + } + prev_angle = angle; + } - protected void onUpdate() - { + protected void onUpdate() + { - } + } - /** - * Called when one revolution is made. - */ - protected void revolve() - { + /** Called when one revolution is made. */ + protected void revolve() + { - } + } - @Override - public void apply(double torque, double angularVelocity) - { - this.torque += torque; - this.angularVelocity += angularVelocity; - } + @Override + public void apply(double torque, double angularVelocity) + { + this.torque += torque; + this.angularVelocity += angularVelocity; + } - @Override - public double getTorque() - { - return angularVelocity != 0 ? torque : 0; - } + @Override + public double getTorque() + { + return angularVelocity != 0 ? torque : 0; + } - @Override - public double getAngularVelocity() - { - return torque != 0 ? angularVelocity : 0; - } + @Override + public double getAngularVelocity() + { + return torque != 0 ? angularVelocity : 0; + } - @Override - public float getRatio(ForgeDirection dir, IMechanicalNode with) - { - return 0.5f; - } + @Override + public float getRatio(ForgeDirection dir, IMechanicalNode with) + { + return 0.5f; + } - @Override - public boolean inverseRotation(ForgeDirection dir, IMechanicalNode with) - { - return true; - } + @Override + public boolean inverseRotation(ForgeDirection dir, IMechanicalNode with) + { + return true; + } - /** - * The energy percentage loss due to resistance in seconds. - */ - public double getTorqueLoad() - { - return load; - } + /** The energy percentage loss due to resistance in seconds. */ + public double getTorqueLoad() + { + return load; + } - public double getAngularVelocityLoad() - { - return load; - } + public double getAngularVelocityLoad() + { + return load; + } - /** - * Recache the connections. This is the default connection implementation. - */ - @Override - public void doRecache() - { - connections.clear(); + /** Recache the connections. This is the default connection implementation. */ + @Override + public void doRecache() + { + connections.clear(); - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = position().translate(dir).getTileEntity(world()); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = position().translate(dir).getTileEntity(world()); - if (tile instanceof INodeProvider) - { - MechanicalNode check = ((INodeProvider) tile).getNode(MechanicalNode.class, dir.getOpposite()); + if (tile instanceof INodeProvider) + { + MechanicalNode check = ((INodeProvider) tile).getNode(MechanicalNode.class, dir.getOpposite()); - if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this)) - { - connections.put(check, dir); - } - } - } - } + if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this)) + { + connections.put(check, dir); + } + } + } + } - public World world() - { - return parent instanceof TMultiPart ? ((TMultiPart) parent).world() : parent instanceof TileEntity ? ((TileEntity) parent).getWorldObj() : null; - } + public World world() + { + return parent instanceof TMultiPart ? ((TMultiPart) parent).world() : parent instanceof TileEntity ? ((TileEntity) parent).getWorldObj() : null; + } - public Vector3 position() - { - return parent instanceof TMultiPart ? new Vector3(((TMultiPart) parent).x(), ((TMultiPart) parent).y(), ((TMultiPart) parent).z()) : parent instanceof TileEntity ? new Vector3((TileEntity) parent) : null; - } + public Vector3 position() + { + return parent instanceof TMultiPart ? new Vector3(((TMultiPart) parent).x(), ((TMultiPart) parent).y(), ((TMultiPart) parent).z()) : parent instanceof TileEntity ? new Vector3((TileEntity) parent) : null; + } - @Override - public boolean canConnect(ForgeDirection from, Object source) - { - return (source instanceof MechanicalNode) && (connectionMap & (1 << from.ordinal())) != 0; - } + @Override + public boolean canConnect(ForgeDirection from, Object source) + { + return (source instanceof MechanicalNode) && (connectionMap & (1 << from.ordinal())) != 0; + } - @Override - public double getEnergy() - { - return getTorque() * getAngularVelocity(); - } + @Override + public double getEnergy() + { + return getTorque() * getAngularVelocity(); + } - @Override - public double getPower() - { - return power; - } + @Override + public double getPower() + { + return power; + } - @Override - public TickingGrid newGrid() - { - return new TickingGrid(this, MechanicalNode.class); - } + @Override + public TickingGrid newGrid() + { + return new TickingGrid(this, MechanicalNode.class); + } - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - torque = nbt.getDouble("torque"); - angularVelocity = nbt.getDouble("angularVelocity"); - } + @Override + public void load(NBTTagCompound nbt) + { + super.load(nbt); + torque = nbt.getDouble("torque"); + angularVelocity = nbt.getDouble("angularVelocity"); + } - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - nbt.setDouble("torque", torque); - nbt.setDouble("angularVelocity", angularVelocity); - } + @Override + public void save(NBTTagCompound nbt) + { + super.save(nbt); + nbt.setDouble("torque", torque); + nbt.setDouble("angularVelocity", angularVelocity); + } } From 0503daadceadbe27d7640a2ab9dd9772d51b418c Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 17:09:09 -0400 Subject: [PATCH 014/144] Added a pumpkin gear which produces a constant 100 vel and torq for debug --- .../mechanical/energy/gear/ItemGear.java | 2 ++ .../mechanical/energy/gear/PartGear.java | 12 ++++++++++++ .../mechanical/energy/gear/RenderGear.java | 3 +++ 3 files changed, 17 insertions(+) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGear.java index 1deb32513..1f38e96eb 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGear.java @@ -62,6 +62,8 @@ public class ItemGear extends JItemMultiPart implements IHighlight { listToAddTo.add(new ItemStack(itemID, 1, i)); } + + listToAddTo.add(new ItemStack(itemID, 1, 10)); } @Override diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index 0c07a0dd0..0f31b421b 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -69,6 +69,14 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure Date: Thu, 10 Apr 2014 17:19:53 -0400 Subject: [PATCH 015/144] Reduced max angle change from 15 to 10 degrees per tick --- .../mechanical/energy/grid/MechanicalNode.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java index a06b2a96c..71fcc3feb 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java @@ -35,7 +35,7 @@ public class MechanicalNode extends Node Date: Thu, 10 Apr 2014 17:29:16 -0400 Subject: [PATCH 016/144] Moved power configs to settings class, attempting to fix missing config gen --- .../generator/solar/TileSolarPanel.java | 8 +- .../energy/turbine/TileWindTurbine.java | 173 +++++++++--------- .../resonantinduction/core/Settings.java | 7 + 3 files changed, 95 insertions(+), 93 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java index 8e9d5ba40..4dad00015 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java @@ -11,6 +11,7 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.util.Icon; import net.minecraftforge.common.Configuration; import resonantinduction.core.Reference; +import resonantinduction.core.Settings; import resonantinduction.electrical.battery.TileEnergyDistribution; import universalelectricity.api.energy.EnergyStorageHandler; @@ -18,13 +19,12 @@ public class TileSolarPanel extends TileEnergyDistribution { @SideOnly(Side.CLIENT) public static Icon sideIcon, bottomIcon; - @Config(category = "Power", key = "Solor_Panel") - public static long SOLAR_ENERGY = 50; + public TileSolarPanel() { super(Material.iron); - energy = new EnergyStorageHandler(SOLAR_ENERGY * 20); + energy = new EnergyStorageHandler(Settings.SOLAR_ENERGY * 20); ioMap = 728; textureName = "solarPanel_top"; bounds = new Cuboid(0, 0, 0, 1, 0.3f, 1); @@ -68,7 +68,7 @@ public class TileSolarPanel extends TileEnergyDistribution { if (!(this.worldObj.isThundering() || this.worldObj.isRaining())) { - this.energy.receiveEnergy(SOLAR_ENERGY, true); + this.energy.receiveEnergy(Settings.SOLAR_ENERGY, true); markDistributionUpdate |= produce() > 0; } } diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java index e745b8c95..4996b739a 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java @@ -2,6 +2,7 @@ package resonantinduction.mechanical.energy.turbine; import java.util.List; +import resonantinduction.core.Settings; import net.minecraft.block.Block; import net.minecraft.entity.Entity; import net.minecraft.item.Item; @@ -12,115 +13,109 @@ import net.minecraft.world.biome.BiomeGenPlains; import net.minecraftforge.common.ForgeDirection; import universalelectricity.api.vector.Vector3; import calclavia.api.resonantinduction.IBoilHandler; +import calclavia.lib.config.Config; import calclavia.lib.prefab.vector.Cuboid; import calclavia.lib.utility.inventory.InventoryUtility; -/** - * The vertical wind turbine collects airflow. - * The horizontal wind turbine collects steam from steam power plants. +/** The vertical wind turbine collects airflow. The horizontal wind turbine collects steam from steam + * power plants. * - * @author Calclavia - * - */ + * @author Calclavia */ public class TileWindTurbine extends TileMechanicalTurbine { - private final byte[] openBlockCache = new byte[224]; - private int checkCount = 0; - private float efficiency = 0; - private long windPower = 0; + private final byte[] openBlockCache = new byte[224]; + private int checkCount = 0; + private float efficiency = 0; + private long windPower = 0; - @Override - public void updateEntity() - { - /** - * Break under storm. - */ - if (tier == 0 && getDirection().offsetY == 0 && worldObj.isRaining() && worldObj.isThundering() && worldObj.rand.nextFloat() < 0.00000008) - { - InventoryUtility.dropItemStack(worldObj, new Vector3(this), new ItemStack(Block.cloth, 1 + worldObj.rand.nextInt(2))); - InventoryUtility.dropItemStack(worldObj, new Vector3(this), new ItemStack(Item.stick, 3 + worldObj.rand.nextInt(8))); - worldObj.setBlockToAir(xCoord, yCoord, zCoord); - return; - } + - /** - * Only the primary turbine ticks. - */ - if (!getMultiBlock().isPrimary()) - return; + @Override + public void updateEntity() + { + /** Break under storm. */ + if (tier == 0 && getDirection().offsetY == 0 && worldObj.isRaining() && worldObj.isThundering() && worldObj.rand.nextFloat() < 0.00000008) + { + InventoryUtility.dropItemStack(worldObj, new Vector3(this), new ItemStack(Block.cloth, 1 + worldObj.rand.nextInt(2))); + InventoryUtility.dropItemStack(worldObj, new Vector3(this), new ItemStack(Item.stick, 3 + worldObj.rand.nextInt(8))); + worldObj.setBlockToAir(xCoord, yCoord, zCoord); + return; + } - /** - * If this is a vertical turbine. - */ - if (getDirection().offsetY == 0) - { - maxPower = 3000; + /** Only the primary turbine ticks. */ + if (!getMultiBlock().isPrimary()) + return; - if (ticks % 20 == 0 && !worldObj.isRemote) - computePower(); + /** If this is a vertical turbine. */ + if (getDirection().offsetY == 0) + { + maxPower = 3000; - getMultiBlock().get().power += windPower; - } - else - { - maxPower = 10000; - } + if (ticks % 20 == 0 && !worldObj.isRemote) + computePower(); - if (getMultiBlock().isConstructed()) - torque = (long) (defaultTorque / (9d / multiBlockRadius)); - else - torque = defaultTorque / 12; + getMultiBlock().get().power += windPower; + } + else + { + maxPower = 10000; + } - super.updateEntity(); - } + if (getMultiBlock().isConstructed()) + torque = (long) (defaultTorque / (9d / multiBlockRadius)); + else + torque = defaultTorque / 12; - private void computePower() - { - int checkSize = 10; - int height = yCoord + checkCount / 28; - int deviation = checkCount % 7; - ForgeDirection checkDir; + super.updateEntity(); + } - Vector3 check = new Vector3(this); + private void computePower() + { + int checkSize = 10; + int height = yCoord + checkCount / 28; + int deviation = checkCount % 7; + ForgeDirection checkDir; - switch (checkCount / 7 % 4) - { - case 0: - checkDir = ForgeDirection.NORTH; - check = new Vector3(xCoord - 3 + deviation, height, zCoord - 4); - break; - case 1: - checkDir = ForgeDirection.WEST; - check = new Vector3(xCoord - 4, height, zCoord - 3 + deviation); - break; - case 2: - checkDir = ForgeDirection.SOUTH; - check = new Vector3(xCoord - 3 + deviation, height, zCoord + 4); - break; - default: - checkDir = ForgeDirection.EAST; - check = new Vector3(xCoord + 4, height, zCoord - 3 + deviation); - } + Vector3 check = new Vector3(this); - byte openAirBlocks = 0; + switch (checkCount / 7 % 4) + { + case 0: + checkDir = ForgeDirection.NORTH; + check = new Vector3(xCoord - 3 + deviation, height, zCoord - 4); + break; + case 1: + checkDir = ForgeDirection.WEST; + check = new Vector3(xCoord - 4, height, zCoord - 3 + deviation); + break; + case 2: + checkDir = ForgeDirection.SOUTH; + check = new Vector3(xCoord - 3 + deviation, height, zCoord + 4); + break; + default: + checkDir = ForgeDirection.EAST; + check = new Vector3(xCoord + 4, height, zCoord - 3 + deviation); + } - while (openAirBlocks < checkSize && worldObj.isAirBlock(check.intX(), check.intY(), check.intZ())) - { - check.translate(checkDir); - openAirBlocks++; - } + byte openAirBlocks = 0; - efficiency = efficiency - openBlockCache[checkCount] + openAirBlocks; - openBlockCache[checkCount] = openAirBlocks; - checkCount = (checkCount + 1) % (openBlockCache.length - 1); + while (openAirBlocks < checkSize && worldObj.isAirBlock(check.intX(), check.intY(), check.intZ())) + { + check.translate(checkDir); + openAirBlocks++; + } - float multiblockMultiplier = (multiBlockRadius + 0.5f) * 2; - float materialMultiplier = tier == 0 ? 1.1f : tier == 1 ? 0.9f : 1; + efficiency = efficiency - openBlockCache[checkCount] + openAirBlocks; + openBlockCache[checkCount] = openAirBlocks; + checkCount = (checkCount + 1) % (openBlockCache.length - 1); - BiomeGenBase biome = worldObj.getBiomeGenForCoords(xCoord, zCoord); - boolean hasBonus = biome instanceof BiomeGenOcean || biome instanceof BiomeGenPlains || biome == BiomeGenBase.river; + float multiblockMultiplier = (multiBlockRadius + 0.5f) * 2; + float materialMultiplier = tier == 0 ? 1.1f : tier == 1 ? 0.9f : 1; - float windSpeed = (worldObj.rand.nextFloat() / 8) + (yCoord / 256f) * (hasBonus ? 1.2f : 1) + worldObj.getRainStrength(1.5f); - windPower = (long) Math.min(materialMultiplier * multiblockMultiplier * windSpeed * efficiency, maxPower); - } + BiomeGenBase biome = worldObj.getBiomeGenForCoords(xCoord, zCoord); + boolean hasBonus = biome instanceof BiomeGenOcean || biome instanceof BiomeGenPlains || biome == BiomeGenBase.river; + + float windSpeed = (worldObj.rand.nextFloat() / 8) + (yCoord / 256f) * (hasBonus ? 1.2f : 1) + worldObj.getRainStrength(1.5f); + windPower = (long) Math.min(materialMultiplier * multiblockMultiplier * windSpeed * efficiency * Settings.WIND_POWER_RATIO, maxPower * Settings.WIND_POWER_RATIO); + } } diff --git a/src/main/scala/resonantinduction/core/Settings.java b/src/main/scala/resonantinduction/core/Settings.java index 4c47c104e..e535270f4 100644 --- a/src/main/scala/resonantinduction/core/Settings.java +++ b/src/main/scala/resonantinduction/core/Settings.java @@ -65,6 +65,13 @@ public class Settings public static double LEVITATOR_MAX_SPEED = .2; @Config(category = Configuration.CATEGORY_GENERAL, key = "Levitator Acceleration") public static double LEVITATOR_ACCELERATION = .02; + + @Config(category = "Power", key = "Wind_tubine_Ratio") + public static int WIND_POWER_RATIO = 1; + @Config(category = "Power", key = "Water_tubine_Ratio") + public static int WATER_POWER_RATIO = 1; + @Config(category = "Power", key = "Solor_Panel") + public static long SOLAR_ENERGY = 50; public static void setModMetadata(ModMetadata metadata, String id, String name) { From f089f1301b2870ec7fc604de4fa3a73adc4e74f0 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 17:35:06 -0400 Subject: [PATCH 017/144] Implemented config for water turbine power ratio, unsure how effective it is --- .../mechanical/energy/turbine/TileWaterTurbine.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWaterTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWaterTurbine.java index b157e2551..a78bca264 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWaterTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWaterTurbine.java @@ -8,6 +8,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.ForgeDirection; +import resonantinduction.core.Settings; import resonantinduction.mechanical.energy.grid.MechanicalNode; import universalelectricity.api.vector.Vector3; import calclavia.lib.grid.INodeProvider; @@ -132,6 +133,6 @@ public class TileWaterTurbine extends TileMechanicalTurbine */ private long getWaterPower() { - return maxPower / (2 - tier + 1); + return (maxPower / (2 - tier + 1)) * Settings.WATER_POWER_RATIO; } } From 4b7b50623ce57de28e2dd5568ae81d2afb13acd8 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 17:51:26 -0400 Subject: [PATCH 018/144] Increase torque of gears --- .../resonantinduction/mechanical/energy/gear/PartGear.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index 0f31b421b..365d654fe 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -86,11 +86,11 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure Date: Thu, 10 Apr 2014 18:28:26 -0400 Subject: [PATCH 019/144] Fixed render limits causing gears to spin to fast --- .../mechanical/energy/gear/PartGear.java | 2 +- .../mechanical/energy/grid/MechanicalNode.java | 12 +++++------- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index 365d654fe..b6545fe5f 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -322,7 +322,7 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure= 0) + angle += Math.min(angularVelocity, this.maxDeltaAngle) * deltaTime; + else + angle += Math.max(angularVelocity, -this.maxDeltaAngle) * deltaTime; } if (angle % (Math.PI * 2) != angle) @@ -151,11 +154,6 @@ public class MechanicalNode extends Node maxDeltaAngle) - { - angle = prev_angle + (angularVelocity >= 0 ? maxDeltaAngle : -maxDeltaAngle); - } prev_angle = angle; } From ccffd62055288bc180c36848548126ab13e7a8e3 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 19:06:47 -0400 Subject: [PATCH 020/144] Change solar energy config from long to int --- src/main/scala/resonantinduction/core/Settings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/resonantinduction/core/Settings.java b/src/main/scala/resonantinduction/core/Settings.java index e535270f4..49592ebaa 100644 --- a/src/main/scala/resonantinduction/core/Settings.java +++ b/src/main/scala/resonantinduction/core/Settings.java @@ -71,7 +71,7 @@ public class Settings @Config(category = "Power", key = "Water_tubine_Ratio") public static int WATER_POWER_RATIO = 1; @Config(category = "Power", key = "Solor_Panel") - public static long SOLAR_ENERGY = 50; + public static int SOLAR_ENERGY = 50; public static void setModMetadata(ModMetadata metadata, String id, String name) { From 9e45080d243f72e760779ffe40d0fd38a6e1485c Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 19:15:37 -0400 Subject: [PATCH 021/144] Removed GearShaftNode from PartGearShaft allowing it to more easily be worked on --- .../mechanical/energy/gear/GearShaftNode.java | 116 ++++++++++++++++++ .../mechanical/energy/gear/PartGearShaft.java | 98 +-------------- 2 files changed, 117 insertions(+), 97 deletions(-) create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearShaftNode.java diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearShaftNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearShaftNode.java new file mode 100644 index 000000000..f6884ba5c --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearShaftNode.java @@ -0,0 +1,116 @@ +package resonantinduction.mechanical.energy.gear; + +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.common.ForgeDirection; +import calclavia.api.resonantinduction.IMechanicalNode; +import calclavia.lib.grid.INodeProvider; +import resonantinduction.mechanical.energy.grid.MechanicalNode; + +public class GearShaftNode extends MechanicalNode +{ + + public GearShaftNode(PartGearShaft parent) + { + super(parent); + } + + @Override + public double getTorqueLoad() + { + // Decelerate the gear based on tier. + switch (shaft().tier) + { + default: + return 0.03; + case 1: + return 0.02; + case 2: + return 0.01; + } + } + + @Override + public double getAngularVelocityLoad() + { + return 0; + } + + @Override + public void doRecache() + { + connections.clear(); + + /** Check for internal connections, the FRONT and BACK. */ + for (int i = 0; i < 6; i++) + { + ForgeDirection checkDir = ForgeDirection.getOrientation(i); + + if (checkDir == shaft().placementSide || checkDir == shaft().placementSide.getOpposite()) + { + MechanicalNode instance = ((INodeProvider) shaft().tile()).getNode(MechanicalNode.class, checkDir); + + if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this)) + { + connections.put(instance, checkDir); + } + } + } + + /** Look for connections outside this block space, the relative FRONT and BACK */ + for (int i = 0; i < 6; i++) + { + ForgeDirection checkDir = ForgeDirection.getOrientation(i); + + if (!connections.containsValue(checkDir) && (checkDir == shaft().placementSide || checkDir == shaft().placementSide.getOpposite())) + { + TileEntity checkTile = new universalelectricity.api.vector.Vector3(shaft().tile()).translate(checkDir).getTileEntity(world()); + + if (checkTile instanceof INodeProvider) + { + MechanicalNode instance = ((INodeProvider) checkTile).getNode(MechanicalNode.class, checkDir.getOpposite()); + + // Only connect to shafts outside of this block space. + if (instance != null && instance != this && instance.parent instanceof PartGearShaft && instance.canConnect(checkDir.getOpposite(), this)) + { + connections.put(instance, checkDir); + } + } + } + } + } + + @Override + public boolean canConnect(ForgeDirection from, Object source) + { + if (source instanceof MechanicalNode) + { + if (((MechanicalNode) source).parent instanceof PartGear) + { + PartGear gear = (PartGear) ((MechanicalNode) source).parent; + + if (!(Math.abs(gear.placementSide.offsetX) == Math.abs(shaft().placementSide.offsetX) && Math.abs(gear.placementSide.offsetY) == Math.abs(shaft().placementSide.offsetY) && Math.abs(gear.placementSide.offsetZ) == Math.abs(shaft().placementSide.offsetZ))) + { + return false; + } + } + } + + return from == shaft().placementSide || from == shaft().placementSide.getOpposite(); + } + + @Override + public boolean inverseRotation(ForgeDirection dir, IMechanicalNode with) + { + if (shaft().placementSide.offsetY != 0 || shaft().placementSide.offsetZ != 0) + { + return dir == shaft().placementSide.getOpposite(); + } + + return dir == shaft().placementSide; + } + + public PartGearShaft shaft() + { + return (PartGearShaft) this.parent; + } +} diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java index 5e769dacd..e31fcfe27 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java @@ -43,103 +43,7 @@ public class PartGearShaft extends PartMechanical { super(); - node = new MechanicalNode(this) - { - @Override - public double getTorqueLoad() - { - // Decelerate the gear based on tier. - switch (tier) - { - default: - return 0.03; - case 1: - return 0.02; - case 2: - return 0.01; - } - } - - @Override - public double getAngularVelocityLoad() - { - return 0; - } - - @Override - public void doRecache() - { - connections.clear(); - - /** Check for internal connections, the FRONT and BACK. */ - for (int i = 0; i < 6; i++) - { - ForgeDirection checkDir = ForgeDirection.getOrientation(i); - - if (checkDir == placementSide || checkDir == placementSide.getOpposite()) - { - MechanicalNode instance = ((INodeProvider) tile()).getNode(MechanicalNode.class, checkDir); - - if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this)) - { - connections.put(instance, checkDir); - } - } - } - - /** Look for connections outside this block space, the relative FRONT and BACK */ - for (int i = 0; i < 6; i++) - { - ForgeDirection checkDir = ForgeDirection.getOrientation(i); - - if (!connections.containsValue(checkDir) && (checkDir == placementSide || checkDir == placementSide.getOpposite())) - { - TileEntity checkTile = new universalelectricity.api.vector.Vector3(tile()).translate(checkDir).getTileEntity(world()); - - if (checkTile instanceof INodeProvider) - { - MechanicalNode instance = ((INodeProvider) checkTile).getNode(MechanicalNode.class, checkDir.getOpposite()); - - // Only connect to shafts outside of this block space. - if (instance != null && instance != this && instance.parent instanceof PartGearShaft && instance.canConnect(checkDir.getOpposite(), this)) - { - connections.put(instance, checkDir); - } - } - } - } - } - - @Override - public boolean canConnect(ForgeDirection from, Object source) - { - if (source instanceof MechanicalNode) - { - if (((MechanicalNode) source).parent instanceof PartGear) - { - PartGear gear = (PartGear) ((MechanicalNode) source).parent; - - if (!(Math.abs(gear.placementSide.offsetX) == Math.abs(placementSide.offsetX) && Math.abs(gear.placementSide.offsetY) == Math.abs(placementSide.offsetY) && Math.abs(gear.placementSide.offsetZ) == Math.abs(placementSide.offsetZ))) - { - return false; - } - } - } - - return from == placementSide || from == placementSide.getOpposite(); - } - - @Override - public boolean inverseRotation(ForgeDirection dir, IMechanicalNode with) - { - if (placementSide.offsetY != 0 || placementSide.offsetZ != 0) - { - return dir == placementSide.getOpposite(); - } - - return dir == placementSide; - } - }; + node = new GearShaftNode(this); } @Override From 58141f22149533a944c1e92069145a5e9f070c02 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 10 Apr 2014 19:17:18 -0400 Subject: [PATCH 022/144] Moved gear shaft to its own package --- .../main/scala/resonantinduction/mechanical/ClientProxy.java | 2 +- .../main/scala/resonantinduction/mechanical/Mechanical.java | 2 +- .../mechanical/energy/gear/PartGearShaft.java | 2 ++ .../mechanical/energy/{gear => gearshaft}/GearShaftNode.java | 5 +++-- .../mechanical/energy/{gear => gearshaft}/ItemGearShaft.java | 3 ++- .../energy/{gear => gearshaft}/RenderGearShaft.java | 3 ++- 6 files changed, 11 insertions(+), 6 deletions(-) rename mechanical/src/main/scala/resonantinduction/mechanical/energy/{gear => gearshaft}/GearShaftNode.java (95%) rename mechanical/src/main/scala/resonantinduction/mechanical/energy/{gear => gearshaft}/ItemGearShaft.java (91%) rename mechanical/src/main/scala/resonantinduction/mechanical/energy/{gear => gearshaft}/RenderGearShaft.java (94%) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java b/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java index 0ce7e9b11..53d3fe0eb 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java @@ -1,7 +1,7 @@ package resonantinduction.mechanical; import resonantinduction.mechanical.energy.gear.RenderGear; -import resonantinduction.mechanical.energy.gear.RenderGearShaft; +import resonantinduction.mechanical.energy.gearshaft.RenderGearShaft; import resonantinduction.mechanical.fluid.pipe.RenderPipe; import calclavia.lib.render.item.GlobalItemRenderer; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java b/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java index b5b2081e2..082449d2f 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java @@ -32,7 +32,7 @@ import resonantinduction.core.TabRI; import resonantinduction.mechanical.belt.BlockConveyorBelt; import resonantinduction.mechanical.belt.TileConveyorBelt; import resonantinduction.mechanical.energy.gear.ItemGear; -import resonantinduction.mechanical.energy.gear.ItemGearShaft; +import resonantinduction.mechanical.energy.gearshaft.ItemGearShaft; import resonantinduction.mechanical.energy.grid.MechanicalNode; import resonantinduction.mechanical.energy.turbine.*; import resonantinduction.mechanical.fluid.pipe.EnumPipeMaterial; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java index e31fcfe27..e8b5b055d 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java @@ -12,6 +12,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import resonantinduction.mechanical.Mechanical; +import resonantinduction.mechanical.energy.gearshaft.GearShaftNode; +import resonantinduction.mechanical.energy.gearshaft.RenderGearShaft; import resonantinduction.mechanical.energy.grid.MechanicalNode; import resonantinduction.mechanical.energy.grid.PartMechanical; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearShaftNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java similarity index 95% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearShaftNode.java rename to mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java index f6884ba5c..890730f5c 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearShaftNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java @@ -1,14 +1,15 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.energy.gearshaft; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import calclavia.api.resonantinduction.IMechanicalNode; import calclavia.lib.grid.INodeProvider; +import resonantinduction.mechanical.energy.gear.PartGear; +import resonantinduction.mechanical.energy.gear.PartGearShaft; import resonantinduction.mechanical.energy.grid.MechanicalNode; public class GearShaftNode extends MechanicalNode { - public GearShaftNode(PartGearShaft parent) { super(parent); diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ItemGearShaft.java similarity index 91% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGearShaft.java rename to mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ItemGearShaft.java index 0e187e6c7..adb1f4dae 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ItemGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ItemGearShaft.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.energy.gearshaft; import java.util.List; @@ -7,6 +7,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import resonantinduction.core.prefab.part.IHighlight; +import resonantinduction.mechanical.energy.gear.PartGearShaft; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.multipart.JItemMultiPart; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java similarity index 94% rename from mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGearShaft.java rename to mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java index 4328e3581..8f33e1fb5 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java @@ -1,4 +1,4 @@ -package resonantinduction.mechanical.energy.gear; +package resonantinduction.mechanical.energy.gearshaft; import static org.lwjgl.opengl.GL11.glRotatef; import net.minecraft.item.ItemStack; @@ -9,6 +9,7 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; import resonantinduction.core.Reference; +import resonantinduction.mechanical.energy.gear.PartGearShaft; import calclavia.lib.render.RenderUtility; import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.relauncher.Side; From 8f488d9ee567938af6ffb81bddd650ec290deac7 Mon Sep 17 00:00:00 2001 From: Robert S Date: Fri, 11 Apr 2014 00:30:36 -0400 Subject: [PATCH 023/144] Working on a sub network for gear shaft --- .../energy/gearshaft/ShaftGrid.java | 12 ++++++++++++ .../energy/gearshaft/ShaftSubNode.java | 19 +++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java create mode 100644 mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java new file mode 100644 index 000000000..775b24bdc --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java @@ -0,0 +1,12 @@ +package resonantinduction.mechanical.energy.gearshaft; + +import calclavia.lib.grid.NodeGrid; + +public class ShaftGrid extends NodeGrid +{ + public ShaftGrid(ShaftSubNode node) + { + super(ShaftSubNode.class); + add(node); + } +} diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java new file mode 100644 index 000000000..f182e4de0 --- /dev/null +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java @@ -0,0 +1,19 @@ +package resonantinduction.mechanical.energy.gearshaft; + +import resonantinduction.mechanical.energy.gear.PartGearShaft; +import calclavia.lib.grid.INodeProvider; +import calclavia.lib.grid.Node; + +public class ShaftSubNode extends Node +{ + public ShaftSubNode(PartGearShaft parent) + { + super(parent); + } + + @Override + protected ShaftGrid newGrid() + { + return new ShaftGrid(this); + } +} From c1fea3aeb19e8e576395541d4acf476b18929e1d Mon Sep 17 00:00:00 2001 From: tgame14 Date: Sat, 12 Apr 2014 13:01:35 +0300 Subject: [PATCH 024/144] Adjusted Electrical Tile handling to support better encapsulation --- .../electrical/battery/BlockBattery.java | 9 +++++---- .../battery/EnergyDistributionNetwork.java | 13 +++++++------ .../electrical/battery/RenderBattery.java | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java index 533781442..88d14ed5a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java @@ -13,6 +13,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.Reference; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalElectricity; @@ -64,8 +65,8 @@ public class BlockBattery extends BlockSidedIO implements ITileEntityProvider { ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem(); TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); - battery.energy.setCapacity(TileBattery.getEnergyForTier(ItemBlockBattery.getTier(itemStack))); - battery.energy.setEnergy(itemBlock.getEnergy(itemStack)); + battery.getEnergyHandler().setCapacity(TileBattery.getEnergyForTier(ItemBlockBattery.getTier(itemStack))); + battery.getEnergyHandler().setEnergy(itemBlock.getEnergy(itemStack)); battery.updateStructure(); world.setBlockMetadataWithNotify(x, y, z, ItemBlockBattery.getTier(itemStack), 3); } @@ -98,7 +99,7 @@ public class BlockBattery extends BlockSidedIO implements ITileEntityProvider TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem(); ItemBlockBattery.setTier(itemStack, (byte) world.getBlockMetadata(x, y, z)); - itemBlock.setEnergy(itemStack, battery.energy.getEnergy()); + itemBlock.setEnergy(itemStack, battery.getEnergy(ForgeDirection.UNKNOWN)); } ret.add(itemStack); return ret; @@ -146,6 +147,6 @@ public class BlockBattery extends BlockSidedIO implements ITileEntityProvider } TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); - return CompatibilityModule.getItemWithCharge(ItemBlockBattery.setTier(new ItemStack(id, 1, 0), (byte) world.getBlockMetadata(x, y, z)), battery.energy.getEnergy()); + return CompatibilityModule.getItemWithCharge(ItemBlockBattery.setTier(new ItemStack(id, 1, 0), (byte) world.getBlockMetadata(x, y, z)), battery.getEnergy(ForgeDirection.UNKNOWN)); } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java b/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java index 6382360a1..2ef47c173 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java @@ -4,6 +4,7 @@ import java.util.Arrays; import java.util.LinkedHashSet; import java.util.Set; +import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.net.Network; public class EnergyDistributionNetwork extends Network @@ -25,8 +26,8 @@ public class EnergyDistributionNetwork extends Network disabledParts = new ArrayList(); From ea869281246256c60955ab8969cadf7b02d62c4a Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 13 Apr 2014 00:37:29 -0400 Subject: [PATCH 025/144] Removed unneeded var from battery box --- .../resonantinduction/electrical/battery/TileBattery.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java index 91acb1506..1b6d46ede 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java @@ -32,9 +32,6 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput /** The transfer rate **/ public static final long DEFAULT_WATTAGE = getEnergyForTier(0); - /** Voltage increases as series connection increases */ - public static final long DEFAULT_VOLTAGE = UniversalElectricity.DEFAULT_VOLTAGE; - public TileBattery() { this.energy = new EnergyStorageHandler(0); @@ -97,13 +94,13 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput @Override public long getVoltageOutput(ForgeDirection side) { - return DEFAULT_VOLTAGE; + return UniversalElectricity.DEFAULT_VOLTAGE; } @Override public long getVoltageInput(ForgeDirection direction) { - return DEFAULT_VOLTAGE; + return UniversalElectricity.DEFAULT_VOLTAGE; } @Override From 99cfdc7fdbdfebd2c9e857a8167b0b907931ac11 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 13 Apr 2014 00:46:55 -0400 Subject: [PATCH 026/144] Fixed some issues with battery box --- .../battery/EnergyDistributionNetwork.java | 156 +++++----- .../electrical/battery/TileBattery.java | 10 +- .../battery/TileEnergyDistribution.java | 269 +++++++++--------- 3 files changed, 216 insertions(+), 219 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java b/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java index 2ef47c173..a2bda4f58 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java @@ -7,106 +7,104 @@ import java.util.Set; import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.net.Network; +/** Energy network designed to allow several tiles to act as if they share the same energy + * level */ public class EnergyDistributionNetwork extends Network { - public long totalEnergy = 0; - public long totalCapacity = 0; + public long totalEnergy = 0; + public long totalCapacity = 0; - public EnergyDistributionNetwork() - { - super(TileEnergyDistribution.class); - } + public EnergyDistributionNetwork() + { + super(TileEnergyDistribution.class); + } - public void redistribute(TileEnergyDistribution... exclusion) - { - int lowestY = 255, highestY = 0; + public void redistribute(TileEnergyDistribution... exclusion) + { + int lowestY = 255, highestY = 0; - totalEnergy = 0; - totalCapacity = 0; + totalEnergy = 0; + totalCapacity = 0; - for (TileEnergyDistribution connector : this.getConnectors()) - { - totalEnergy += connector.getEnergy(ForgeDirection.UNKNOWN); - totalCapacity += connector.getEnergyCapacity(ForgeDirection.UNKNOWN); + for (TileEnergyDistribution connector : this.getConnectors()) + { + totalEnergy += connector.getEnergyHandler().getEnergy(); + totalCapacity += connector.getEnergyHandler().getEnergyCapacity(); - lowestY = Math.min(connector.yCoord, lowestY); - highestY = Math.max(connector.yCoord, highestY); + lowestY = Math.min(connector.yCoord, lowestY); + highestY = Math.max(connector.yCoord, highestY); - connector.renderEnergyAmount = 0; - } + connector.renderEnergyAmount = 0; + } - /** - * Apply render - */ - long remainingRenderEnergy = totalEnergy; + /** Apply render */ + long remainingRenderEnergy = totalEnergy; - for (int y = lowestY; y <= highestY; y++) - { - Set connectorsInlevel = new LinkedHashSet(); + for (int y = lowestY; y <= highestY; y++) + { + Set connectorsInlevel = new LinkedHashSet(); - for (TileEnergyDistribution connector : this.getConnectors()) - { - if (connector.yCoord == y) - { - connectorsInlevel.add(connector); - } - } + for (TileEnergyDistribution connector : this.getConnectors()) + { + if (connector.yCoord == y) + { + connectorsInlevel.add(connector); + } + } - int levelSize = connectorsInlevel.size(); - long used = 0; + int levelSize = connectorsInlevel.size(); + long used = 0; - for (TileEnergyDistribution connector : connectorsInlevel) - { - long tryInject = Math.min(remainingRenderEnergy / levelSize, connector.getEnergyCapacity(ForgeDirection.UNKNOWN)); - connector.renderEnergyAmount = tryInject; - used += tryInject; - } + for (TileEnergyDistribution connector : connectorsInlevel) + { + long tryInject = Math.min(remainingRenderEnergy / levelSize, connector.getEnergyHandler().getEnergyCapacity()); + connector.renderEnergyAmount = tryInject; + used += tryInject; + } - remainingRenderEnergy -= used; + remainingRenderEnergy -= used; - if (remainingRenderEnergy <= 0) - break; - } + if (remainingRenderEnergy <= 0) + break; + } - /** - * Apply energy loss. - */ - double percentageLoss = 0;// Math.max(0, (1 - (getConnectors().size() * 6 / 100d))); - long energyLoss = (long) (percentageLoss * 100); - totalEnergy -= energyLoss; + /** Apply energy loss. */ + double percentageLoss = 0;// Math.max(0, (1 - (getConnectors().size() * 6 / 100d))); + long energyLoss = (long) (percentageLoss * 100); + totalEnergy -= energyLoss; - int amountOfNodes = this.getConnectors().size() - exclusion.length; + int amountOfNodes = this.getConnectors().size() - exclusion.length; - if (totalEnergy > 0 && amountOfNodes > 0) - { - long remainingEnergy = totalEnergy; + if (totalEnergy > 0 && amountOfNodes > 0) + { + long remainingEnergy = totalEnergy; - TileEnergyDistribution firstNode = this.getFirstConnector(); + TileEnergyDistribution firstNode = this.getFirstConnector(); - for (TileEnergyDistribution node : this.getConnectors()) - { - if (node != firstNode && !Arrays.asList(exclusion).contains(node)) - { - double percentage = ((double) node.getEnergyCapacity(ForgeDirection.UNKNOWN) / (double) totalCapacity); - long energyForBattery = Math.max(Math.round(totalEnergy * percentage), 0); - node.setEnergy(ForgeDirection.UNKNOWN, energyForBattery); - remainingEnergy -= energyForBattery; - } - } + for (TileEnergyDistribution node : this.getConnectors()) + { + if (node != firstNode && !Arrays.asList(exclusion).contains(node)) + { + double percentage = ((double) node.getEnergyHandler().getEnergyCapacity() / (double) totalCapacity); + long energyForBattery = Math.max(Math.round(totalEnergy * percentage), 0); + node.getEnergyHandler().setEnergy(energyForBattery); + remainingEnergy -= energyForBattery; + } + } - firstNode.setEnergy(ForgeDirection.UNKNOWN, Math.max(remainingEnergy, 0)); - } - } + firstNode.getEnergyHandler().setEnergy(Math.max(remainingEnergy, 0)); + } + } - @Override - protected void reconstructConnector(TileEnergyDistribution node) - { - node.setNetwork(this); - } + @Override + protected void reconstructConnector(TileEnergyDistribution node) + { + node.setNetwork(this); + } - @Override - public EnergyDistributionNetwork newInstance() - { - return new EnergyDistributionNetwork(); - } + @Override + public EnergyDistributionNetwork newInstance() + { + return new EnergyDistributionNetwork(); + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java index 1b6d46ede..9a6102b02 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java @@ -18,7 +18,7 @@ import calclavia.lib.network.IPacketSender; import com.google.common.io.ByteArrayDataInput; /** - * A modular battery. + * A modular battery box that allows shared connections with boxes next to it. * * @author Calclavia */ @@ -34,7 +34,7 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput public TileBattery() { - this.energy = new EnergyStorageHandler(0); + this.setEnergyHandler(new EnergyStorageHandler(0)); this.ioMap = 0; this.saveIOMap = true; } @@ -52,7 +52,7 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput public void initiate() { super.initiate(); - energy.setCapacity(getEnergyForTier(getBlockMetadata())); + getEnergyHandler().setCapacity(getEnergyForTier(getBlockMetadata())); } @Override @@ -62,7 +62,7 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput { // energy.setMaxTransfer((long) Math.min(Math.pow(10000, // this.getNetwork().getConnectors().size()), energy.getEnergyCapacity())); - energy.setMaxTransfer(energy.getEnergyCapacity()); + getEnergyHandler().setMaxTransfer(getEnergyHandler().getEnergyCapacity()); markDistributionUpdate |= produce() > 0; } @@ -78,7 +78,7 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput @Override public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) { - energy.setEnergy(data.readLong()); + getEnergyHandler().setEnergy(data.readLong()); ioMap = data.readShort(); } diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/TileEnergyDistribution.java b/electrical/src/main/scala/resonantinduction/electrical/battery/TileEnergyDistribution.java index ebc4adab0..eaa89863e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/TileEnergyDistribution.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/TileEnergyDistribution.java @@ -7,165 +7,164 @@ import net.minecraftforge.common.ForgeDirection; import universalelectricity.api.net.IConnector; import universalelectricity.api.vector.Vector3; -public class TileEnergyDistribution extends TileElectrical - implements IConnector +public class TileEnergyDistribution extends TileElectrical implements IConnector { - public boolean markClientUpdate = false; - public boolean markDistributionUpdate = false; - public long renderEnergyAmount = 0; - private EnergyDistributionNetwork network; + public boolean markClientUpdate = false; + public boolean markDistributionUpdate = false; + public long renderEnergyAmount = 0; + private EnergyDistributionNetwork network; - public TileEnergyDistribution() - { - super(null); - } + public TileEnergyDistribution() + { + super(null); + } - public TileEnergyDistribution(Material material) - { - super(material); - } + public TileEnergyDistribution(Material material) + { + super(material); + } - @Override - public void initiate() - { - super.initiate(); - this.updateStructure(); - } + @Override + public void initiate() + { + super.initiate(); + this.updateStructure(); + } - @Override - public void onAdded() - { - if (!world().isRemote) - { - updateStructure(); - } - } + @Override + public void onAdded() + { + if (!world().isRemote) + { + updateStructure(); + } + } - @Override - public void onNeighborChanged() - { - if (!world().isRemote) - { - updateStructure(); - } - } + @Override + public void onNeighborChanged() + { + if (!world().isRemote) + { + updateStructure(); + } + } - @Override - public void updateEntity() - { - super.updateEntity(); + @Override + public void updateEntity() + { + super.updateEntity(); - if (!this.worldObj.isRemote) - { - if (markDistributionUpdate && ticks % 5 == 0) - { - getNetwork().redistribute(); - markDistributionUpdate = false; - } + if (!this.worldObj.isRemote) + { + if (markDistributionUpdate && ticks % 5 == 0) + { + getNetwork().redistribute(); + markDistributionUpdate = false; + } - if (markClientUpdate && ticks % 5 == 0) - { - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } - } - } + if (markClientUpdate && ticks % 5 == 0) + { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + } + } - @Override - public long getEnergy(ForgeDirection from) - { - return getNetwork().totalEnergy; - } + @Override + public long getEnergy(ForgeDirection from) + { + return getNetwork().totalEnergy; + } - @Override - public long getEnergyCapacity(ForgeDirection from) - { - return getNetwork().totalCapacity; + @Override + public long getEnergyCapacity(ForgeDirection from) + { + return getNetwork().totalCapacity; - } + } - @Override - public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) - { - long returnValue = super.onReceiveEnergy(from, receive, doReceive); - markDistributionUpdate = true; - markClientUpdate = true; - return returnValue; - } + @Override + public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) + { + long returnValue = super.onReceiveEnergy(from, receive, doReceive); + markDistributionUpdate = true; + markClientUpdate = true; + return returnValue; + } - @Override - public long onExtractEnergy(ForgeDirection from, long extract, boolean doExtract) - { - long returnValue = super.onExtractEnergy(from, extract, doExtract); - markDistributionUpdate = true; - markClientUpdate = true; - return returnValue; - } + @Override + public long onExtractEnergy(ForgeDirection from, long extract, boolean doExtract) + { + long returnValue = super.onExtractEnergy(from, extract, doExtract); + markDistributionUpdate = true; + markClientUpdate = true; + return returnValue; + } - @Override - public EnergyDistributionNetwork getNetwork() - { - if (this.network == null) - { - this.network = new EnergyDistributionNetwork(); - this.network.addConnector(this); - } + @Override + public EnergyDistributionNetwork getNetwork() + { + if (this.network == null) + { + this.network = new EnergyDistributionNetwork(); + this.network.addConnector(this); + } - return this.network; - } + return this.network; + } - @Override - public void setNetwork(EnergyDistributionNetwork structure) - { - this.network = structure; - } + @Override + public void setNetwork(EnergyDistributionNetwork structure) + { + this.network = structure; + } - public void updateStructure() - { - if (!this.worldObj.isRemote) - { - for (Object obj : getConnections()) - { - if (obj != null) - { - this.getNetwork().merge(((TileEnergyDistribution) obj).getNetwork()); - } - } + public void updateStructure() + { + if (!this.worldObj.isRemote) + { + for (Object obj : getConnections()) + { + if (obj != null) + { + this.getNetwork().merge(((TileEnergyDistribution) obj).getNetwork()); + } + } - markDistributionUpdate = true; - markClientUpdate = true; - } - } + markDistributionUpdate = true; + markClientUpdate = true; + } + } - @Override - public Object[] getConnections() - { - Object[] connections = new Object[6]; + @Override + public Object[] getConnections() + { + Object[] connections = new Object[6]; - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = new Vector3(this).translate(dir).getTileEntity(this.worldObj); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = new Vector3(this).translate(dir).getTileEntity(this.worldObj); - if (tile != null && tile.getClass() == this.getClass()) - { - connections[dir.ordinal()] = tile; - } - } + if (tile != null && tile.getClass() == this.getClass()) + { + connections[dir.ordinal()] = tile; + } + } - return connections; - } + return connections; + } - @Override - public void invalidate() - { - this.getNetwork().redistribute(this); - this.getNetwork().split(this); - super.invalidate(); - } + @Override + public void invalidate() + { + this.getNetwork().redistribute(this); + this.getNetwork().split(this); + super.invalidate(); + } - @Override - public IConnector getInstance(ForgeDirection from) - { - return this; - } + @Override + public IConnector getInstance(ForgeDirection from) + { + return this; + } } From 2a9927bdc8b29a52be7f7da8a9bcde0c03cbc951 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 13 Apr 2014 01:09:02 -0400 Subject: [PATCH 027/144] Fixed battery box not saving due to a late init capacity set --- .../resonantinduction/electrical/battery/BlockBattery.java | 4 ++-- .../electrical/battery/RenderBattery.java | 2 +- .../resonantinduction/electrical/battery/TileBattery.java | 7 +++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java index 88d14ed5a..c8d5a974e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java @@ -99,7 +99,7 @@ public class BlockBattery extends BlockSidedIO implements ITileEntityProvider TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); ItemBlockBattery itemBlock = (ItemBlockBattery) itemStack.getItem(); ItemBlockBattery.setTier(itemStack, (byte) world.getBlockMetadata(x, y, z)); - itemBlock.setEnergy(itemStack, battery.getEnergy(ForgeDirection.UNKNOWN)); + itemBlock.setEnergy(itemStack, battery.getEnergyHandler().getEnergy()); } ret.add(itemStack); return ret; @@ -147,6 +147,6 @@ public class BlockBattery extends BlockSidedIO implements ITileEntityProvider } TileBattery battery = (TileBattery) world.getBlockTileEntity(x, y, z); - return CompatibilityModule.getItemWithCharge(ItemBlockBattery.setTier(new ItemStack(id, 1, 0), (byte) world.getBlockMetadata(x, y, z)), battery.getEnergy(ForgeDirection.UNKNOWN)); + return CompatibilityModule.getItemWithCharge(ItemBlockBattery.setTier(new ItemStack(id, 1, 0), (byte) world.getBlockMetadata(x, y, z)), battery.getEnergyHandler().getEnergy()); } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/RenderBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/RenderBattery.java index f122855de..c853b6373 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/RenderBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/RenderBattery.java @@ -80,7 +80,7 @@ public class RenderBattery extends TileEntitySpecialRenderer implements ISimpleI TileBattery tile = (TileBattery) t; - int energyLevel = (int) Math.round(((double) tile.getEnergy(ForgeDirection.UNKNOWN) / (double) TileBattery.getEnergyForTier(tile.getBlockMetadata())) * 8); + int energyLevel = (int) Math.round(((double) tile.getEnergyHandler().getEnergy() / (double) TileBattery.getEnergyForTier(tile.getBlockMetadata())) * 8); RenderUtility.bind(Reference.DOMAIN, Reference.MODEL_PATH + "battery/battery.png"); List disabledParts = new ArrayList(); diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java index 9a6102b02..46af6ad37 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java @@ -35,6 +35,7 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput public TileBattery() { this.setEnergyHandler(new EnergyStorageHandler(0)); + this.getEnergyHandler().setCapacity(Long.MAX_VALUE); this.ioMap = 0; this.saveIOMap = true; } @@ -53,16 +54,14 @@ public class TileBattery extends TileEnergyDistribution implements IVoltageInput { super.initiate(); getEnergyHandler().setCapacity(getEnergyForTier(getBlockMetadata())); + getEnergyHandler().setMaxTransfer(getEnergyHandler().getEnergyCapacity()); } @Override public void updateEntity() { if (!this.worldObj.isRemote) - { - // energy.setMaxTransfer((long) Math.min(Math.pow(10000, - // this.getNetwork().getConnectors().size()), energy.getEnergyCapacity())); - getEnergyHandler().setMaxTransfer(getEnergyHandler().getEnergyCapacity()); + { markDistributionUpdate |= produce() > 0; } From 729ce5375f0f190804aca89fdfa9cd7c07d1a58a Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 13 Apr 2014 03:53:52 -0400 Subject: [PATCH 028/144] Minor improvement to rod connection rebuild --- .../energy/gearshaft/GearShaftNode.java | 42 +++++++++++-------- 1 file changed, 24 insertions(+), 18 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java index 890730f5c..2be327d91 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java @@ -1,5 +1,9 @@ package resonantinduction.mechanical.energy.gearshaft; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; import calclavia.api.resonantinduction.IMechanicalNode; @@ -14,7 +18,7 @@ public class GearShaftNode extends MechanicalNode { super(parent); } - + @Override public double getTorqueLoad() { @@ -40,12 +44,14 @@ public class GearShaftNode extends MechanicalNode public void doRecache() { connections.clear(); - + List dirs = new ArrayList(); + dirs.add(shaft().placementSide); + dirs.add(shaft().placementSide.getOpposite()); /** Check for internal connections, the FRONT and BACK. */ - for (int i = 0; i < 6; i++) + Iterator it = dirs.iterator(); + while(it.hasNext()) { - ForgeDirection checkDir = ForgeDirection.getOrientation(i); - + ForgeDirection checkDir = it.next(); if (checkDir == shaft().placementSide || checkDir == shaft().placementSide.getOpposite()) { MechanicalNode instance = ((INodeProvider) shaft().tile()).getNode(MechanicalNode.class, checkDir); @@ -53,31 +59,31 @@ public class GearShaftNode extends MechanicalNode if (instance != null && instance != this && instance.canConnect(checkDir.getOpposite(), this)) { connections.put(instance, checkDir); + it.remove(); } } } /** Look for connections outside this block space, the relative FRONT and BACK */ - for (int i = 0; i < 6; i++) - { - ForgeDirection checkDir = ForgeDirection.getOrientation(i); - - if (!connections.containsValue(checkDir) && (checkDir == shaft().placementSide || checkDir == shaft().placementSide.getOpposite())) + if (!dirs.isEmpty()) + for (ForgeDirection checkDir : dirs) { - TileEntity checkTile = new universalelectricity.api.vector.Vector3(shaft().tile()).translate(checkDir).getTileEntity(world()); - - if (checkTile instanceof INodeProvider) + if (!connections.containsValue(checkDir) && (checkDir == shaft().placementSide || checkDir == shaft().placementSide.getOpposite())) { - MechanicalNode instance = ((INodeProvider) checkTile).getNode(MechanicalNode.class, checkDir.getOpposite()); + TileEntity checkTile = new universalelectricity.api.vector.Vector3(shaft().tile()).translate(checkDir).getTileEntity(world()); - // Only connect to shafts outside of this block space. - if (instance != null && instance != this && instance.parent instanceof PartGearShaft && instance.canConnect(checkDir.getOpposite(), this)) + if (checkTile instanceof INodeProvider) { - connections.put(instance, checkDir); + MechanicalNode instance = ((INodeProvider) checkTile).getNode(MechanicalNode.class, checkDir.getOpposite()); + + // Only connect to shafts outside of this block space. + if (instance != null && instance != this && instance.parent instanceof PartGearShaft && instance.canConnect(checkDir.getOpposite(), this)) + { + connections.put(instance, checkDir); + } } } } - } } @Override From 555e3f0cceb17a6981942d81c019c90d48571d14 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 13 Apr 2014 04:20:27 -0400 Subject: [PATCH 029/144] Changes to IMechanicalNode api --- .../resonantinduction/mechanical/energy/gear/PartGear.java | 2 +- .../mechanical/energy/grid/MechanicalNode.java | 2 +- .../mechanical/energy/turbine/TileMechanicalTurbine.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index b6545fe5f..f38c1c89d 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -336,7 +336,7 @@ public class PartGear extends PartMechanical implements IMultiBlockStructure 0) { - node.apply(isClockwiseCrank ? 15 : -15, isClockwiseCrank ? 0.025f : -0.025f); + node.apply(this, isClockwiseCrank ? 15 : -15, isClockwiseCrank ? 0.025f : -0.025f); manualCrankTime--; } diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java index 6c8eec6ab..633c2a45a 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java @@ -169,7 +169,7 @@ public class MechanicalNode extends Node Date: Sun, 13 Apr 2014 04:30:05 -0400 Subject: [PATCH 030/144] .test --- .../resonantinduction/electrical/generator/TileMotor.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java b/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java index 6e75fcd79..d871380cb 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java @@ -81,7 +81,7 @@ public class TileMotor extends TileElectrical implements IRotatable, INodeProvid if (receive > 0) { double percentageUsed = receive / power; - node.apply(-node.getTorque() * percentageUsed, -node.getAngularVelocity() * percentageUsed); + node.apply(this, -node.getTorque() * percentageUsed, -node.getAngularVelocity() * percentageUsed); } } @@ -111,7 +111,7 @@ public class TileMotor extends TileElectrical implements IRotatable, INodeProvid if (currentVelo != 0) setAngularVelocity = Math.min(+setAngularVelocity, maxAngularVelocity) * (node.getAngularVelocity() / currentVelo); - node.apply(setTorque - node.getTorque(), setAngularVelocity - node.getAngularVelocity()); + node.apply(this, setTorque - node.getTorque(), setAngularVelocity - node.getAngularVelocity()); energy.extractEnergy((long) Math.abs(setTorque * setAngularVelocity), true); } } From 1b9f984afca71102a35664caaa5fe90668c9a3e0 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 13 Apr 2014 05:57:20 -0400 Subject: [PATCH 031/144] Improvement in crate inv update calls --- .../scala/resonantinduction/archaic/crate/BlockCrate.java | 3 --- .../resonantinduction/archaic/crate/InventoryCrate.java | 1 + .../scala/resonantinduction/archaic/crate/TileCrate.java | 5 +++-- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java index b167011ae..cf9d3dd6d 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java @@ -372,15 +372,12 @@ public class BlockCrate extends BlockTile } if (ammountEjected >= requestSize) { - tileEntity.onInventoryChanged(); return true; } } - tileEntity.onInventoryChanged(); return true; } } - tileEntity.onInventoryChanged(); return false; } diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java index 25daca6bb..6fba855d0 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java @@ -33,6 +33,7 @@ public class InventoryCrate extends ExternalInventory break; } } + this.onInventoryChanged(); } } diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index c0d670bd5..fac00621f 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -4,6 +4,7 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; +import net.minecraft.util.ChatMessageComponent; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; import resonantinduction.core.ResonantInduction; @@ -143,7 +144,6 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, if (flag) { this.getInventory().buildInventory(this.sampleStack); - this.onInventoryChanged(); } } } @@ -194,7 +194,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, { return false; } - + int ddd = 0; @Override public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) { @@ -206,6 +206,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, { this.sampleStack = ItemStack.loadItemStackFromNBT(PacketHandler.readNBTTagCompound(data)); this.sampleStack.stackSize = data.readInt(); + //player.sendChatToPlayer(ChatMessageComponent.createFromText("Crate Packet " + (ddd++))); } else { From 714c3ec2a294d35ae0a7d7e0e858ef93e994ca4d Mon Sep 17 00:00:00 2001 From: Calclavia Date: Sun, 13 Apr 2014 23:11:36 +0800 Subject: [PATCH 032/144] Fixed #514 - Mixer NPE --- .../process/purifier/TileMixer.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java index 649c5aeae..87be812a4 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java @@ -143,7 +143,7 @@ public class TileMixer extends TileMechanical implements IInventory if (timeLeft <= 0) { - if (this.doneWork(processingItem)) + if (doneWork(processingItem)) { if (--processingItem.getEntityItem().stackSize <= 0) { @@ -190,20 +190,24 @@ public class TileMixer extends TileMechanical implements IInventory if (mixPosition.getBlockID(world()) != blockID()) { Block block = Block.blocksList[mixPosition.getBlockID(worldObj)]; + Block blockFluidFinite = ResourceGenerator.getMixture(ResourceGenerator.getName(entity.getEntityItem())); - if (block instanceof BlockFluidMixture) + if (blockFluidFinite != null) { - ItemStack itemStack = entity.getEntityItem().copy(); - - if (((BlockFluidMixture) block).mix(worldObj, mixPosition.intX(), mixPosition.intY(), mixPosition.intZ(), itemStack)) + if (block instanceof BlockFluidMixture) { - worldObj.notifyBlocksOfNeighborChange(mixPosition.intX(), mixPosition.intY(), mixPosition.intZ(), mixPosition.getBlockID(worldObj)); - return true; + ItemStack itemStack = entity.getEntityItem().copy(); + + if (((BlockFluidMixture) block).mix(worldObj, mixPosition.intX(), mixPosition.intY(), mixPosition.intZ(), itemStack)) + { + worldObj.notifyBlocksOfNeighborChange(mixPosition.intX(), mixPosition.intY(), mixPosition.intZ(), mixPosition.getBlockID(worldObj)); + return true; + } + } + else if (block != null && (block.blockID == Block.waterStill.blockID || block.blockID == Block.waterMoving.blockID)) + { + mixPosition.setBlock(worldObj, blockFluidFinite.blockID); } - } - else if (block != null && (block.blockID == Block.waterStill.blockID || block.blockID == Block.waterMoving.blockID)) - { - mixPosition.setBlock(worldObj, ResourceGenerator.getMixture(ResourceGenerator.getName(entity.getEntityItem())).blockID); } } From 3d1cf14e8ef829299e575a59f171198fb0236fec Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 13 Apr 2014 23:17:43 -0400 Subject: [PATCH 033/144] Fixed NPE in generator --- .../resonantinduction/electrical/generator/TileMotor.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java b/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java index d871380cb..2a81b33d2 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java @@ -43,7 +43,8 @@ public class TileMotor extends TileElectrical implements IRotatable, INodeProvid public void initiate() { super.initiate(); - node.reconstruct(); + if (node != null) + node.reconstruct(); } @Override From 6119f44947d0676195f1f2fe841f8726c33c9251 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 04:36:43 -0400 Subject: [PATCH 034/144] Removed BlockGlyph.class as its unused --- .../quantum/gate/BlockGlyph.java | 55 ------------------- 1 file changed, 55 deletions(-) delete mode 100644 electrical/src/main/scala/resonantinduction/quantum/gate/BlockGlyph.java diff --git a/electrical/src/main/scala/resonantinduction/quantum/gate/BlockGlyph.java b/electrical/src/main/scala/resonantinduction/quantum/gate/BlockGlyph.java deleted file mode 100644 index c7d63d2e6..000000000 --- a/electrical/src/main/scala/resonantinduction/quantum/gate/BlockGlyph.java +++ /dev/null @@ -1,55 +0,0 @@ -package resonantinduction.quantum.gate; - -import java.util.List; - -import net.minecraft.block.material.Material; -import net.minecraft.client.renderer.texture.IconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.item.ItemStack; -import net.minecraft.util.Icon; -import resonantinduction.core.Reference; -import calclavia.lib.prefab.block.BlockAdvanced; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class BlockGlyph extends BlockAdvanced -{ - public static final int MAX_GLYPH = 4; - public static final Icon[] icons = new Icon[MAX_GLYPH]; - - public BlockGlyph(int id) - { - super(id, Material.iron); - setHardness(32F); - setResistance(1000F); - } - - @Override - @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int meta) - { - return icons[meta]; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IconRegister register) - { - for (int i = 0; i < icons.length; i++) - { - icons[i] = register.registerIcon(Reference.PREFIX + "glyph_" + i); - } - - this.blockIcon = icons[0]; - } - - @Override - @SideOnly(Side.CLIENT) - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - for (int i = 0; i < icons.length; i++) - { - par3List.add(new ItemStack(par1, 1, i)); - } - } -} From 847c182571549a891334c8122979a02f437ee150 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 05:07:29 -0400 Subject: [PATCH 035/144] Little cleanup on crate code --- .../archaic/crate/TileCrate.java | 451 ++++++++---------- 1 file changed, 208 insertions(+), 243 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index fac00621f..777324b77 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -1,6 +1,7 @@ package resonantinduction.archaic.crate; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; @@ -15,276 +16,240 @@ import calclavia.lib.utility.inventory.IExtendedStorage; import com.google.common.io.ByteArrayDataInput; -/** - * Basic single stack inventory. +/** Basic single stack inventory. * * TODO: Add filter-locking feature. Put filter in, locks the crate to only use that item. * - * @author DarkGuardsman - */ + * @author DarkGuardsman */ public class TileCrate extends TileExternalInventory implements IPacketReceiver, IExtendedStorage { - /* - * TODO - * Fix issues with ItemStacks with NBT tags having issues - * Fix possible render issues with some items - * Yell at MachineMuse for her items rendering threw walls - * Add support to disable sides of crates when rendering items are unwanted - * Simplify item rendering to decrease graphic lag - * Add crafting manger to prevent crafting with full crates - * As well keep item stacks when upgrade crate threw crafting - * Add upgrade item for crate - * Add crate swapping in which an advanced can trade place with a basic while keeping inventory - * at the locaiton - */ - /** Collective total stack of all inv slots */ - private ItemStack sampleStack; + /** Collective total stack of all inv slots */ + private ItemStack sampleStack; - /** delay from last click */ - public long prevClickTime = -1000; - /** max meta size of the crate */ - public static final int maxSize = 2; + /** delay from last click */ + public long prevClickTime = -1000; + /** max meta size of the crate */ + public static final int maxSize = 2; - @Override - public InventoryCrate getInventory() - { - if (this.inventory == null) - { - inventory = new InventoryCrate(this); - } - return (InventoryCrate) this.inventory; - } + @Override + public InventoryCrate getInventory() + { + if (this.inventory == null) + { + inventory = new InventoryCrate(this); + } + return (InventoryCrate) this.inventory; + } - /** Gets the sample stack that represent the total inv */ - public ItemStack getSampleStack() - { - if (this.sampleStack == null) - { - this.buildSampleStack(); - } - return this.sampleStack; - } + /** Gets the sample stack that represent the total inventory */ + public ItemStack getSampleStack() + { + if (this.sampleStack == null) + { + this.buildSampleStack(); + } + return this.sampleStack; + } - /** - * Turns the inventory array into a single stack of matching items. This assumes that all items - * in the crate are the same TODO eject minority items and only keep the majority that are the - * same to prevent duplication issues - * TODO: Add Force? - * @param force - force a rebuild of the inventory from the single stack created - */ - public void buildSampleStack() - { - ItemStack stack = null; + /** Builds the sample stack using the inventory as a point of reference. Assumes all items match + * each other, and only takes into account stack sizes */ + public void buildSampleStack() + { + ItemStack newSampleStack = null; + boolean rebuildBase = false; - boolean rebuildBase = false; + /* Creates the sample stack that is used as a collective itemstack */ + for (int slot = 0; slot < this.getSizeInventory(); slot++) + { + ItemStack slotStack = this.getInventory().getContainedItems()[slot]; + if (slotStack != null && Item.itemsList[slotStack.itemID] != null && slotStack.stackSize > 0) + { + if (newSampleStack == null) + newSampleStack = slotStack.copy(); + else + newSampleStack.stackSize += slotStack.stackSize; - /* Creates the sample stack that is used as a collective itemstack */ - for (int i = 0; i < this.getInventory().getContainedItems().length; i++) - { - ItemStack s = this.getInventory().getContainedItems()[i]; - if (s != null && s.itemID > 0 && s.stackSize > 0) - { - if (stack == null) - { - stack = s.copy(); - } - else - { - stack.stackSize += this.getInventory().getContainedItems()[i].stackSize; - } - if (this.getInventory().getContainedItems()[i].stackSize > this.getInventory().getContainedItems()[i].getMaxStackSize()) - { - rebuildBase = true; - } - } - } - if (stack == null || stack.itemID == 0 || stack.stackSize == 0) - { - this.sampleStack = null; - } - else - { - this.sampleStack = stack.copy(); - } - /* if one stack is over sized this rebuilds the inv to redistribute the items in the slots */ - if ((rebuildBase || this.getInventory().getContainedItems().length > this.getSlotCount()) && this.sampleStack != null) - { - this.getInventory().buildInventory(this.sampleStack); - } - } + if (slotStack.stackSize > slotStack.getMaxStackSize()) + rebuildBase = true; + } + } + if (newSampleStack == null || newSampleStack.itemID == 0 || newSampleStack.stackSize <= 0) + this.sampleStack = null; + else + this.sampleStack = newSampleStack.copy(); - /** Adds an item to the stack */ - public void addToStack(ItemStack stack, int amount) - { - if (stack != null) - { - this.addToStack(new ItemStack(stack.stackSize, amount, stack.getItemDamage())); - } - } + /* Rebuild inventory if the inventory is not valid */ + if (this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) + { + this.getInventory().buildInventory(this.sampleStack); + } + } - /** Adds the stack to the sample stack */ - public void addToStack(ItemStack stack) - { - if (stack != null) - { - this.buildSampleStack(); - boolean flag = false; + @Override + public ItemStack addStackToStorage(ItemStack stack) + { + return BlockCrate.addStackToCrate(this, stack); + } - if (this.sampleStack == null) - { - this.sampleStack = stack; - flag = true; - } - else if (this.sampleStack.isItemEqual(stack) || OreDictionary.getOreID(sampleStack) == OreDictionary.getOreID(stack)) - { - this.sampleStack.stackSize += stack.stackSize; - flag = true; - } + /** Adds an item to the stack */ + public void addToStack(ItemStack stack, int amount) + { + if (stack != null) + { + ItemStack newStack = stack.copy(); + newStack.stackSize = amount; + this.addToStack(newStack); + } + } - if (flag) - { - this.getInventory().buildInventory(this.sampleStack); - } - } - } + /** Adds the stack to the sample stack */ + public void addToStack(ItemStack stack) + { + if (stack != null && stack.stackSize > 0) + { + if (this.getSampleStack() == null) + { + this.sampleStack = stack; + getInventory().buildInventory(getSampleStack()); + } + else if (this.getSampleStack().isItemEqual(stack) || OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack)) + { + getSampleStack().stackSize += stack.stackSize; + getInventory().buildInventory(getSampleStack()); + } + } + } - @Override - public void onInventoryChanged() - { - super.onInventoryChanged(); + @Override + public void onInventoryChanged() + { + super.onInventoryChanged(); - if (worldObj != null && !worldObj.isRemote) - { - PacketHandler.sendPacketToClients(getDescriptionPacket(), this.worldObj); - } - } + if (worldObj != null && !worldObj.isRemote) + { + PacketHandler.sendPacketToClients(getDescriptionPacket(), this.worldObj); + } + } - @Override - public boolean canStore(ItemStack stack, int slot, ForgeDirection side) - { - return sampleStack == null || stack != null && (stack.isItemEqual(sampleStack) || OreDictionary.getOreID(sampleStack) == OreDictionary.getOreID(stack)); - } + @Override + public boolean canStore(ItemStack stack, int slot, ForgeDirection side) + { + return getSampleStack() == null || stack != null && (stack.isItemEqual(getSampleStack()) || OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack)); + } - /** Gets the current slot count for the crate */ - public int getSlotCount() - { - if (this.worldObj == null) - { - return TileCrate.getSlotCount(TileCrate.maxSize); - } - return TileCrate.getSlotCount(this.getBlockMetadata()); - } + /** Gets the current slot count for the crate */ + public int getSlotCount() + { + if (this.worldObj == null) + { + return TileCrate.getSlotCount(TileCrate.maxSize); + } + return TileCrate.getSlotCount(this.getBlockMetadata()); + } - /** Gets the slot count for the crate meta */ - public static int getSlotCount(int metadata) - { - if (metadata >= 2) - { - return 256; - } - else if (metadata >= 1) - { - return 64; - } - return 32; - } + /** Gets the slot count for the crate meta */ + public static int getSlotCount(int metadata) + { + if (metadata >= 2) + { + return 256; + } + else if (metadata >= 1) + { + return 64; + } + return 32; + } - @Override - public boolean canUpdate() - { - return false; - } - int ddd = 0; - @Override - public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) - { - if (this.worldObj.isRemote) - { - try - { - if (data.readBoolean()) - { - this.sampleStack = ItemStack.loadItemStackFromNBT(PacketHandler.readNBTTagCompound(data)); - this.sampleStack.stackSize = data.readInt(); - //player.sendChatToPlayer(ChatMessageComponent.createFromText("Crate Packet " + (ddd++))); - } - else - { - this.sampleStack = null; - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - } + @Override + public boolean canUpdate() + { + return false; + } - @Override - public Packet getDescriptionPacket() - { - this.buildSampleStack(); - ItemStack stack = this.getSampleStack(); - if (stack != null) - { - return ResonantInduction.PACKET_TILE.getPacket(this, true, stack.writeToNBT(new NBTTagCompound()), stack.stackSize); - } - else - { - return ResonantInduction.PACKET_TILE.getPacket(this, false); - } - } + @Override + public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) + { + if (this.worldObj.isRemote) + { + try + { + if (data.readBoolean()) + { + this.sampleStack = ItemStack.loadItemStackFromNBT(PacketHandler.readNBTTagCompound(data)); + this.sampleStack.stackSize = data.readInt(); + } + else + { + this.sampleStack = null; + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } - /** NBT Data */ - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - /* Load current two inv methods */ - ItemStack stack = null; - int count = nbt.getInteger("Count"); - if (nbt.hasKey("itemID")) - { - stack = new ItemStack(nbt.getInteger("itemID"), count, nbt.getInteger("itemMeta")); - } - else - { - stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack")); - if (stack != null) - { - stack.stackSize = count; - } - } + @Override + public Packet getDescriptionPacket() + { + this.buildSampleStack(); + ItemStack stack = this.getSampleStack(); + if (stack != null) + { + return ResonantInduction.PACKET_TILE.getPacket(this, true, stack.writeToNBT(new NBTTagCompound()), stack.stackSize); + } + else + { + return ResonantInduction.PACKET_TILE.getPacket(this, false); + } + } - /* Only load sample stack if the read stack is valid */ - if (stack != null && stack.itemID != 0 && stack.stackSize > 0) - { - this.sampleStack = stack; - this.getInventory().buildInventory(this.sampleStack); - } + /** NBT Data */ + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + /* Load current two inv methods */ + ItemStack stack = null; + int count = nbt.getInteger("Count"); + if (nbt.hasKey("itemID")) + { + stack = new ItemStack(nbt.getInteger("itemID"), count, nbt.getInteger("itemMeta")); + } + else + { + stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack")); + if (stack != null) + { + stack.stackSize = count; + } + } - } + /* Only load sample stack if the read stack is valid */ + if (stack != null && stack.itemID != 0 && stack.stackSize > 0) + { + this.sampleStack = stack; + this.getInventory().buildInventory(this.sampleStack); + } - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - /* Re-Build sample stack for saving */ - this.buildSampleStack(); - ItemStack stack = this.getSampleStack(); - /* Save sample stack */ - if (stack != null) - { - nbt.setInteger("Count", stack.stackSize); - nbt.setCompoundTag("stack", stack.writeToNBT(new NBTTagCompound())); - } + } - } + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + /* Re-Build sample stack for saving */ + this.buildSampleStack(); + ItemStack stack = this.getSampleStack(); + /* Save sample stack */ + if (stack != null) + { + nbt.setInteger("Count", stack.stackSize); + nbt.setCompoundTag("stack", stack.writeToNBT(new NBTTagCompound())); + } - @Override - public ItemStack addStackToStorage(ItemStack stack) - { - return BlockCrate.addStackToCrate(this, stack); - } + } } From 1212e27f5447696bae1a4b1013fb58a5340aac27 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 05:22:22 -0400 Subject: [PATCH 036/144] Cleanup on crate wrenching code, also made ore filtering optional --- .../archaic/crate/BlockCrate.java | 689 +++++++++--------- .../archaic/crate/TileCrate.java | 19 +- 2 files changed, 343 insertions(+), 365 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java index cf9d3dd6d..dc15536a7 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java @@ -17,427 +17,400 @@ import resonantinduction.core.Reference; import universalelectricity.api.UniversalElectricity; import calclavia.lib.prefab.block.BlockTile; import calclavia.lib.utility.WrenchUtility; +import calclavia.lib.utility.inventory.InventoryUtility; import codechicken.multipart.ControlKeyModifer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -/** - * A block that allows the placement of mass amount of a specific item within it. It will be allowed +/** A block that allows the placement of mass amount of a specific item within it. It will be allowed * to go on Conveyor Belts. * * NOTE: Crates should be upgraded with an item. * - * @author DarkGuardsman - */ + * @author DarkGuardsman */ public class BlockCrate extends BlockTile { - Icon advanced, elite; + Icon advanced, elite; - public BlockCrate(int id) - { - super(id, UniversalElectricity.machine); - } + public BlockCrate(int id) + { + super(id, UniversalElectricity.machine); + } - @SideOnly(Side.CLIENT) - @Override - public void registerIcons(IconRegister iconReg) - { - this.blockIcon = iconReg.registerIcon(Reference.PREFIX + "crate_wood"); - this.advanced = iconReg.registerIcon(Reference.PREFIX + "crate_iron"); - this.elite = iconReg.registerIcon(Reference.PREFIX + "crate_steel"); - } + @SideOnly(Side.CLIENT) + @Override + public void registerIcons(IconRegister iconReg) + { + this.blockIcon = iconReg.registerIcon(Reference.PREFIX + "crate_wood"); + this.advanced = iconReg.registerIcon(Reference.PREFIX + "crate_iron"); + this.elite = iconReg.registerIcon(Reference.PREFIX + "crate_steel"); + } - @Override - @SideOnly(Side.CLIENT) - public Icon getIcon(int side, int meta) - { - if (meta == 1) - { - return advanced; - } - else if (meta == 2) - { - return elite; - } - return this.blockIcon; - } + @Override + @SideOnly(Side.CLIENT) + public Icon getIcon(int side, int meta) + { + if (meta == 1) + { + return advanced; + } + else if (meta == 2) + { + return elite; + } + return this.blockIcon; + } - @Override - public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player) - { - if (!world.isRemote) - { - if (world.getBlockTileEntity(x, y, z) instanceof TileCrate) - { - TileCrate tileEntity = (TileCrate) world.getBlockTileEntity(x, y, z); + @Override + public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player) + { + if (!world.isRemote) + { + if (world.getBlockTileEntity(x, y, z) instanceof TileCrate) + { + TileCrate tileEntity = (TileCrate) world.getBlockTileEntity(x, y, z); - /** Make double clicking input all stacks. */ - boolean allMode = (world.getWorldTime() - tileEntity.prevClickTime < 10); + /** Make double clicking input all stacks. */ + boolean allMode = (world.getWorldTime() - tileEntity.prevClickTime < 10); - tileEntity.prevClickTime = world.getWorldTime(); + tileEntity.prevClickTime = world.getWorldTime(); - this.tryEject(tileEntity, player, allMode); - } + this.tryEject(tileEntity, player, allMode); + } - } - } + } + } - /** Placed the item the player is holding into the crate. */ - @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) - { - if (!world.isRemote) - { - if (world.getBlockTileEntity(x, y, z) instanceof TileCrate) - { - TileCrate tile = (TileCrate) world.getBlockTileEntity(x, y, z); + /** Placed the item the player is holding into the crate. */ + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + if (!world.isRemote) + { + if (world.getBlockTileEntity(x, y, z) instanceof TileCrate) + { + TileCrate tile = (TileCrate) world.getBlockTileEntity(x, y, z); + tile.buildSampleStack(); + ItemStack sampleStack = tile.getSampleStack(); - if (player.getCurrentEquippedItem() != null && WrenchUtility.isWrench(player.getCurrentEquippedItem())) - { - if (player.isSneaking()) - { - ItemStack containingStack = tile.getSampleStack(); - tile.buildSampleStack(); + if (WrenchUtility.isWrench(player.getCurrentEquippedItem())) + { + if (player.isSneaking()) + { + if (sampleStack != null && sampleStack.stackSize > 0) + { + ItemStack dropStack = new ItemStack(this, 1, world.getBlockMetadata(x, y, z)); + ItemBlockCrate.setContainingItemStack(dropStack, sampleStack); + InventoryUtility.dropItemStack(world, x, y, z, dropStack, 10, 0); - if (containingStack != null) - { - if (containingStack.stackSize > 0) - { - float area = 0.7F; - double dropX = (world.rand.nextFloat() * area) + (1.0F - area) * 0.5D; - double dropY = (world.rand.nextFloat() * area) + (1.0F - area) * 0.5D; - double dropZ = (world.rand.nextFloat() * area) + (1.0F - area) * 0.5D; + for (int i = 0; i < tile.getInventory().getSizeInventory(); i++) + { + tile.getInventory().setInventorySlotContents(i, null); + } + world.setBlock(x, y, z, 0, 0, 3); + } + return true; + } - ItemStack dropStack = new ItemStack(this, 1, tile.getBlockMetadata()); - ItemBlockCrate.setContainingItemStack(dropStack, containingStack); + int oreID = OreDictionary.getOreID(sampleStack); - EntityItem var13 = new EntityItem(world, x + dropX, y + dropY, z + dropZ, dropStack); - var13.delayBeforeCanPickup = 10; - world.spawnEntityInWorld(var13); + if (oreID != -1) + { + ArrayList ores = OreDictionary.getOres(oreID); - for (int i = 0; i < tile.getInventory().getSizeInventory(); i++) - { - tile.getInventory().setInventorySlotContents(i, null); - } - world.setBlock(x, y, z, 0, 0, 3); - return true; - } - } + for (int i = 0; i < ores.size(); i++) + { + if (ores.get(i).isItemEqual(sampleStack)) + { + int nextIndex = (i + 1) % ores.size(); + ItemStack desiredStack = ores.get(nextIndex).copy(); + desiredStack.stackSize = sampleStack.stackSize; - return false; - } + for (int index = 0; index < tile.getSizeInventory(); index++) + tile.setInventorySlotContents(index, null); - /** - * Swap oredict nodes if the player is wrenching the crate. - */ - ItemStack sampleStack = tile.getSampleStack(); + tile.addStackToStorage(desiredStack); + break; + } + } + } + return true; + } - int oreID = OreDictionary.getOreID(sampleStack); + /** Make double clicking input all stacks. */ + boolean allMode = (world.getWorldTime() - tile.prevClickTime < 10); - if (oreID != -1) - { - ArrayList ores = OreDictionary.getOres(oreID); + tile.prevClickTime = world.getWorldTime(); - for (int i = 0; i < ores.size(); i++) - { - if (ores.get(i).isItemEqual(sampleStack)) - { - int nextIndex = (i + 1) % ores.size(); - ItemStack desiredStack = ores.get(nextIndex).copy(); - desiredStack.stackSize = sampleStack.stackSize; + if (ControlKeyModifer.isControlDown(player)) + { + tryEject(tile, player, allMode); + } + else + { + ItemStack current = player.inventory.getCurrentItem(); + if (side == 1 && player.capabilities.isCreativeMode) + { + if (current != null && tile.getSampleStack() == null) + { + ItemStack cStack = current.copy(); + cStack.stackSize = TileCrate.getSlotCount(world.getBlockMetadata(x, y, z)) * 64; + addStackToCrate(tile, cStack); + } + } - for (int index = 0; index < tile.getSizeInventory(); index++) - tile.setInventorySlotContents(index, null); + tryInsert(tile, player, allMode); + } + } + } - tile.addStackToStorage(desiredStack); - break; - } - } - } - } + return true; + } - /** Make double clicking input all stacks. */ - boolean allMode = (world.getWorldTime() - tile.prevClickTime < 10); + /** Try to inject it into the crate. Otherwise, look around for nearby crates and try to put them + * in. */ + public void tryInsert(TileCrate tileEntity, EntityPlayer player, boolean allMode, boolean doSearch) + { + boolean success; - tile.prevClickTime = world.getWorldTime(); + if (allMode) + { + success = this.insertAllItems(tileEntity, player); + } + else + { + success = this.insertCurrentItem(tileEntity, player); + } - if (ControlKeyModifer.isControlDown(player)) - { - tryEject(tile, player, allMode); - } - else - { - ItemStack current = player.inventory.getCurrentItem(); - if (side == 1 && player.capabilities.isCreativeMode) - { - if (current != null && tile.getSampleStack() == null) - { - ItemStack cStack = current.copy(); - cStack.stackSize = TileCrate.getSlotCount(world.getBlockMetadata(x, y, z)) * 64; - addStackToCrate(tile, cStack); - } - } + if (!success && doSearch) + { + PathfinderCrate pathfinder = new PathfinderCrate().init(tileEntity); - tryInsert(tile, player, allMode); - } - } - } + for (TileEntity checkTile : pathfinder.iteratedNodes) + { + if (checkTile instanceof TileCrate) + { + this.tryInsert(((TileCrate) checkTile), player, allMode, false); + } + } + } + } - return true; - } + public void tryInsert(TileCrate tileEntity, EntityPlayer player, boolean allMode) + { + tryInsert(tileEntity, player, allMode, true); + } - /** - * Try to inject it into the crate. Otherwise, look around for nearby crates and try to put them - * in. - */ - public void tryInsert(TileCrate tileEntity, EntityPlayer player, boolean allMode, boolean doSearch) - { - boolean success; + public void tryEject(TileCrate tileEntity, EntityPlayer player, boolean allMode) + { + if (tileEntity.getSampleStack() == null) + { + return; + } + if (allMode && !player.isSneaking()) + { + this.ejectItems(tileEntity, player, tileEntity.getSlotCount() * 64); + } + else + { + if (player.isSneaking()) + { + this.ejectItems(tileEntity, player, 1); + } + else + { + this.ejectItems(tileEntity, player, tileEntity.getSampleStack().getMaxStackSize()); + } + } + } - if (allMode) - { - success = this.insertAllItems(tileEntity, player); - } - else - { - success = this.insertCurrentItem(tileEntity, player); - } + /** Inserts a the itemStack the player is holding into the crate. */ + public boolean insertCurrentItem(TileCrate tileEntity, EntityPlayer player) + { + ItemStack currentStack = player.getCurrentEquippedItem(); - if (!success && doSearch) - { - PathfinderCrate pathfinder = new PathfinderCrate().init(tileEntity); + if (currentStack != null) + { + if (currentStack.getItem().itemID == blockID) + { + ItemStack containedStack = ItemBlockCrate.getContainingItemStack(currentStack); + ItemStack crateStack = tileEntity.getSampleStack(); - for (TileEntity checkTile : pathfinder.iteratedNodes) - { - if (checkTile instanceof TileCrate) - { - this.tryInsert(((TileCrate) checkTile), player, allMode, false); - } - } - } - } + if (containedStack != null && (crateStack == null || ItemStack.areItemStacksEqual(containedStack, crateStack))) + { + ItemStack returned = BlockCrate.addStackToCrate(tileEntity, containedStack); + ItemBlockCrate.setContainingItemStack(currentStack, returned); + return true; + } + } + else + { + if (tileEntity.getSampleStack() != null) + { + if (!(tileEntity.getSampleStack().isItemEqual(currentStack) || (tileEntity.oreFilterEnabled && !OreDictionary.getOreName(OreDictionary.getOreID(tileEntity.getSampleStack())).equals("Unknown") && OreDictionary.getOreID(tileEntity.getSampleStack()) == OreDictionary.getOreID(currentStack)))) + { + return false; + } + } - public void tryInsert(TileCrate tileEntity, EntityPlayer player, boolean allMode) - { - tryInsert(tileEntity, player, allMode, true); - } + player.inventory.setInventorySlotContents(player.inventory.currentItem, BlockCrate.addStackToCrate(tileEntity, currentStack)); + return true; + } + } - public void tryEject(TileCrate tileEntity, EntityPlayer player, boolean allMode) - { - if (tileEntity.getSampleStack() == null) - { - return; - } - if (allMode && !player.isSneaking()) - { - this.ejectItems(tileEntity, player, tileEntity.getSlotCount() * 64); - } - else - { - if (player.isSneaking()) - { - this.ejectItems(tileEntity, player, 1); - } - else - { - this.ejectItems(tileEntity, player, tileEntity.getSampleStack().getMaxStackSize()); - } - } - } + return false; + } - /** Inserts a the itemStack the player is holding into the crate. */ - public boolean insertCurrentItem(TileCrate tileEntity, EntityPlayer player) - { - ItemStack currentStack = player.getCurrentEquippedItem(); + /** Inserts all items of the same type this player has into the crate. + * + * @return True on success */ + public boolean insertAllItems(TileCrate tileEntity, EntityPlayer player) + { + ItemStack requestStack = null; - if (currentStack != null) - { - if (currentStack.getItem().itemID == blockID) - { - ItemStack containedStack = ItemBlockCrate.getContainingItemStack(currentStack); - ItemStack crateStack = tileEntity.getSampleStack(); + if (tileEntity.getSampleStack() != null) + { + requestStack = tileEntity.getSampleStack().copy(); + } - if (containedStack != null && (crateStack == null || ItemStack.areItemStacksEqual(containedStack, crateStack))) - { - ItemStack returned = BlockCrate.addStackToCrate(tileEntity, containedStack); - ItemBlockCrate.setContainingItemStack(currentStack, returned); - return true; - } - } - else - { - if (tileEntity.getSampleStack() != null) - { - if (!(tileEntity.getSampleStack().isItemEqual(currentStack) || (!OreDictionary.getOreName(OreDictionary.getOreID(tileEntity.getSampleStack())).equals("Unknown") && OreDictionary.getOreID(tileEntity.getSampleStack()) == OreDictionary.getOreID(currentStack)))) - { - return false; - } - } + if (requestStack == null) + { + requestStack = player.getCurrentEquippedItem(); + } - player.inventory.setInventorySlotContents(player.inventory.currentItem, BlockCrate.addStackToCrate(tileEntity, currentStack)); - return true; - } - } + if (requestStack != null && requestStack.itemID != this.blockID) + { + boolean success = false; - return false; - } + for (int i = 0; i < player.inventory.getSizeInventory(); i++) + { + ItemStack currentStack = player.inventory.getStackInSlot(i); - /** - * Inserts all items of the same type this player has into the crate. - * - * @return True on success - */ - public boolean insertAllItems(TileCrate tileEntity, EntityPlayer player) - { - ItemStack requestStack = null; + if (currentStack != null) + { + if (requestStack.isItemEqual(currentStack)) + { + player.inventory.setInventorySlotContents(i, BlockCrate.addStackToCrate(tileEntity, currentStack)); - if (tileEntity.getSampleStack() != null) - { - requestStack = tileEntity.getSampleStack().copy(); - } + if (player instanceof EntityPlayerMP) + { + ((EntityPlayerMP) player).sendContainerToPlayer(player.inventoryContainer); + } - if (requestStack == null) - { - requestStack = player.getCurrentEquippedItem(); - } + success = true; + } + } + } + return success; + } + return false; + } - if (requestStack != null && requestStack.itemID != this.blockID) - { - boolean success = false; + /** Ejects and item out of the crate and spawn it under the player entity. + * + * @param tileEntity + * @param player + * @param requestSize - The maximum stack size to take out. Default should be 64. + * @return True on success */ + public boolean ejectItems(TileCrate tileEntity, EntityPlayer player, int requestSize) + { + World world = tileEntity.worldObj; + if (!world.isRemote) + { + ItemStack sampleStack = tileEntity.getSampleStack(); + int ammountEjected = 0; + if (sampleStack != null && requestSize > 0) + { + for (int slot = 0; slot < tileEntity.getInventory().getSizeInventory(); slot++) + { + ItemStack slotStack = tileEntity.getInventory().getStackInSlot(slot); - for (int i = 0; i < player.inventory.getSizeInventory(); i++) - { - ItemStack currentStack = player.inventory.getStackInSlot(i); + if (slotStack != null && slotStack.stackSize > 0) + { + int amountToTake = Math.min(slotStack.stackSize, requestSize); - if (currentStack != null) - { - if (requestStack.isItemEqual(currentStack)) - { - player.inventory.setInventorySlotContents(i, BlockCrate.addStackToCrate(tileEntity, currentStack)); + ItemStack dropStack = slotStack.copy(); + dropStack.stackSize = amountToTake; - if (player instanceof EntityPlayerMP) - { - ((EntityPlayerMP) player).sendContainerToPlayer(player.inventoryContainer); - } + EntityItem entityItem = new EntityItem(world, player.posX, player.posY, player.posZ, dropStack); + entityItem.delayBeforeCanPickup = 0; + world.spawnEntityInWorld(entityItem); - success = true; - } - } - } - return success; - } - return false; - } + slotStack.stackSize -= amountToTake; + ammountEjected += amountToTake; + if (slotStack.stackSize <= 0) + { + slotStack = null; + } + tileEntity.getInventory().setInventorySlotContents(slot, slotStack); - /** - * Ejects and item out of the crate and spawn it under the player entity. - * - * @param tileEntity - * @param player - * @param requestSize - The maximum stack size to take out. Default should be 64. - * @return True on success - */ - public boolean ejectItems(TileCrate tileEntity, EntityPlayer player, int requestSize) - { - World world = tileEntity.worldObj; - if (!world.isRemote) - { - ItemStack sampleStack = tileEntity.getSampleStack(); - int ammountEjected = 0; - if (sampleStack != null && requestSize > 0) - { - for (int slot = 0; slot < tileEntity.getInventory().getSizeInventory(); slot++) - { - ItemStack slotStack = tileEntity.getInventory().getStackInSlot(slot); + } + if (ammountEjected >= requestSize) + { + return true; + } + } + return true; + } + } + return false; + } - if (slotStack != null && slotStack.stackSize > 0) - { - int amountToTake = Math.min(slotStack.stackSize, requestSize); + /** Puts an itemStack into the crate. + * + * @param tileEntity + * @param itemStack */ + public static ItemStack addStackToCrate(TileCrate tileEntity, ItemStack itemStack) + { + if (itemStack == null || itemStack.getItem().isDamageable() && itemStack.getItem().getDamage(itemStack) > 0) + { + return itemStack; + } - ItemStack dropStack = slotStack.copy(); - dropStack.stackSize = amountToTake; + ItemStack containingStack = tileEntity.getSampleStack(); - EntityItem entityItem = new EntityItem(world, player.posX, player.posY, player.posZ, dropStack); - entityItem.delayBeforeCanPickup = 0; - world.spawnEntityInWorld(entityItem); + if (containingStack == null || (containingStack.isItemEqual(itemStack) || (tileEntity.oreFilterEnabled && OreDictionary.getOreID(containingStack) == OreDictionary.getOreID(itemStack)))) + { + int room = Math.max((tileEntity.getInventory().getSizeInventory() * 64) - (containingStack != null ? containingStack.stackSize : 0), 0); + if (itemStack.stackSize <= room) + { + tileEntity.addToStack(itemStack); + itemStack = null; + } + else + { + tileEntity.addToStack(itemStack, room); + itemStack.stackSize -= room; + } + return itemStack; - slotStack.stackSize -= amountToTake; - ammountEjected += amountToTake; - if (slotStack.stackSize <= 0) - { - slotStack = null; - } - tileEntity.getInventory().setInventorySlotContents(slot, slotStack); + } - } - if (ammountEjected >= requestSize) - { - return true; - } - } - return true; - } - } - return false; - } + if (itemStack.stackSize <= 0) + { + return null; + } - /** - * Puts an itemStack into the crate. - * - * @param tileEntity - * @param itemStack - */ - public static ItemStack addStackToCrate(TileCrate tileEntity, ItemStack itemStack) - { - if (itemStack == null || itemStack.getItem().isDamageable() && itemStack.getItem().getDamage(itemStack) > 0) - { - return itemStack; - } + return itemStack; + } - ItemStack containingStack = tileEntity.getSampleStack(); + @Override + public int damageDropped(int metadata) + { + return metadata; + } - if (containingStack == null || (containingStack.isItemEqual(itemStack) || OreDictionary.getOreID(containingStack) == OreDictionary.getOreID(itemStack))) - { - int room = Math.max((tileEntity.getInventory().getSizeInventory() * 64) - (containingStack != null ? containingStack.stackSize : 0), 0); - if (itemStack.stackSize <= room) - { - tileEntity.addToStack(itemStack); - itemStack = null; - } - else - { - tileEntity.addToStack(itemStack, room); - itemStack.stackSize -= room; - } - return itemStack; + @Override + public TileEntity createNewTileEntity(World var1) + { + return new TileCrate(); + } - } - - if (itemStack.stackSize <= 0) - { - return null; - } - - return itemStack; - } - - @Override - public int damageDropped(int metadata) - { - return metadata; - } - - @Override - public TileEntity createNewTileEntity(World var1) - { - return new TileCrate(); - } - - @Override - public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) - { - par3List.add(new ItemStack(par1, 1, 0)); - par3List.add(new ItemStack(par1, 1, 1)); - par3List.add(new ItemStack(par1, 1, 2)); - } + @Override + public void getSubBlocks(int par1, CreativeTabs par2CreativeTabs, List par3List) + { + par3List.add(new ItemStack(par1, 1, 0)); + par3List.add(new ItemStack(par1, 1, 1)); + par3List.add(new ItemStack(par1, 1, 2)); + } } diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index 777324b77..5bfac7657 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -23,13 +23,17 @@ import com.google.common.io.ByteArrayDataInput; * @author DarkGuardsman */ public class TileCrate extends TileExternalInventory implements IPacketReceiver, IExtendedStorage { - /** Collective total stack of all inv slots */ - private ItemStack sampleStack; + /** max meta size of the crate */ + public static final int maxSize = 2; /** delay from last click */ public long prevClickTime = -1000; - /** max meta size of the crate */ - public static final int maxSize = 2; + + /** Check to see if oreName items can be force stacked */ + public boolean oreFilterEnabled = false; + + /** Collective total stack of all inv slots */ + private ItemStack sampleStack; @Override public InventoryCrate getInventory() @@ -112,7 +116,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, this.sampleStack = stack; getInventory().buildInventory(getSampleStack()); } - else if (this.getSampleStack().isItemEqual(stack) || OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack)) + else if (this.getSampleStack().isItemEqual(stack) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))) { getSampleStack().stackSize += stack.stackSize; getInventory().buildInventory(getSampleStack()); @@ -134,7 +138,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, @Override public boolean canStore(ItemStack stack, int slot, ForgeDirection side) { - return getSampleStack() == null || stack != null && (stack.isItemEqual(getSampleStack()) || OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack)); + return getSampleStack() == null || stack != null && (stack.isItemEqual(getSampleStack()) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))); } /** Gets the current slot count for the crate */ @@ -233,6 +237,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, this.sampleStack = stack; this.getInventory().buildInventory(this.sampleStack); } + this.oreFilterEnabled = nbt.getBoolean("oreFilter"); } @@ -249,7 +254,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, nbt.setInteger("Count", stack.stackSize); nbt.setCompoundTag("stack", stack.writeToNBT(new NBTTagCompound())); } - + nbt.setBoolean("oreFilter", this.oreFilterEnabled); } } From a23962aef70bff6ae10ec4e4fd2d471a184cdc7f Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 05:30:14 -0400 Subject: [PATCH 037/144] Separated crate activation methods into correct method calls --- .../archaic/crate/BlockCrate.java | 153 ++++++++++-------- 1 file changed, 83 insertions(+), 70 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java index dc15536a7..89f6c30ec 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java @@ -81,89 +81,102 @@ public class BlockCrate extends BlockTile } } - /** Placed the item the player is holding into the crate. */ @Override - public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + public boolean onUseWrench(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - if (!world.isRemote) + if (!world.isRemote && world.getBlockTileEntity(x, y, z) instanceof TileCrate) { - if (world.getBlockTileEntity(x, y, z) instanceof TileCrate) + TileCrate tile = (TileCrate) world.getBlockTileEntity(x, y, z); + tile.buildSampleStack(); + ItemStack sampleStack = tile.getSampleStack(); + int oreID = OreDictionary.getOreID(sampleStack); + + if (ControlKeyModifer.isControlDown(player)) { - TileCrate tile = (TileCrate) world.getBlockTileEntity(x, y, z); - tile.buildSampleStack(); - ItemStack sampleStack = tile.getSampleStack(); - if (WrenchUtility.isWrench(player.getCurrentEquippedItem())) + } + else if (oreID != -1) + { + ArrayList ores = OreDictionary.getOres(oreID); + + for (int oreIndex = 0; oreIndex < ores.size(); oreIndex++) { - if (player.isSneaking()) + if (ores.get(oreIndex).isItemEqual(sampleStack)) { - if (sampleStack != null && sampleStack.stackSize > 0) - { - ItemStack dropStack = new ItemStack(this, 1, world.getBlockMetadata(x, y, z)); - ItemBlockCrate.setContainingItemStack(dropStack, sampleStack); - InventoryUtility.dropItemStack(world, x, y, z, dropStack, 10, 0); + int nextIndex = (oreIndex + 1) % ores.size(); + ItemStack desiredStack = ores.get(nextIndex).copy(); + desiredStack.stackSize = sampleStack.stackSize; - for (int i = 0; i < tile.getInventory().getSizeInventory(); i++) - { - tile.getInventory().setInventorySlotContents(i, null); - } - world.setBlock(x, y, z, 0, 0, 3); - } - return true; + for (int index = 0; index < tile.getSizeInventory(); index++) + tile.setInventorySlotContents(index, null); + + tile.addStackToStorage(desiredStack); + break; } - - int oreID = OreDictionary.getOreID(sampleStack); - - if (oreID != -1) - { - ArrayList ores = OreDictionary.getOres(oreID); - - for (int i = 0; i < ores.size(); i++) - { - if (ores.get(i).isItemEqual(sampleStack)) - { - int nextIndex = (i + 1) % ores.size(); - ItemStack desiredStack = ores.get(nextIndex).copy(); - desiredStack.stackSize = sampleStack.stackSize; - - for (int index = 0; index < tile.getSizeInventory(); index++) - tile.setInventorySlotContents(index, null); - - tile.addStackToStorage(desiredStack); - break; - } - } - } - return true; - } - - /** Make double clicking input all stacks. */ - boolean allMode = (world.getWorldTime() - tile.prevClickTime < 10); - - tile.prevClickTime = world.getWorldTime(); - - if (ControlKeyModifer.isControlDown(player)) - { - tryEject(tile, player, allMode); - } - else - { - ItemStack current = player.inventory.getCurrentItem(); - if (side == 1 && player.capabilities.isCreativeMode) - { - if (current != null && tile.getSampleStack() == null) - { - ItemStack cStack = current.copy(); - cStack.stackSize = TileCrate.getSlotCount(world.getBlockMetadata(x, y, z)) * 64; - addStackToCrate(tile, cStack); - } - } - - tryInsert(tile, player, allMode); } } } + return true; + } + @Override + public boolean onSneakUseWrench(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + if (!world.isRemote && world.getBlockTileEntity(x, y, z) instanceof TileCrate) + { + TileCrate tile = (TileCrate) world.getBlockTileEntity(x, y, z); + tile.buildSampleStack(); + ItemStack sampleStack = tile.getSampleStack(); + + if (sampleStack != null && sampleStack.stackSize > 0) + { + ItemStack dropStack = new ItemStack(this, 1, world.getBlockMetadata(x, y, z)); + ItemBlockCrate.setContainingItemStack(dropStack, sampleStack); + InventoryUtility.dropItemStack(world, x, y, z, dropStack, 10, 0); + + for (int i = 0; i < tile.getInventory().getSizeInventory(); i++) + { + tile.getInventory().setInventorySlotContents(i, null); + } + world.setBlock(x, y, z, 0, 0, 3); + } + } + return true; + } + + @Override + public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + { + if (!world.isRemote && world.getBlockTileEntity(x, y, z) instanceof TileCrate) + { + TileCrate tile = (TileCrate) world.getBlockTileEntity(x, y, z); + + /** Make double clicking input all stacks. */ + boolean allMode = (world.getWorldTime() - tile.prevClickTime < 10); + + tile.prevClickTime = world.getWorldTime(); + + if (ControlKeyModifer.isControlDown(player)) + { + tryEject(tile, player, allMode); + } + else + { + /* Creative mode way to fill crates to max in one click */ + ItemStack current = player.inventory.getCurrentItem(); + if (side == 1 && player.capabilities.isCreativeMode) + { + if (current != null && tile.getSampleStack() == null) + { + ItemStack cStack = current.copy(); + cStack.stackSize = TileCrate.getSlotCount(world.getBlockMetadata(x, y, z)) * 64; + addStackToCrate(tile, cStack); + } + } + + tryInsert(tile, player, allMode); + } + } return true; } From 019407d983a2618816ce5ff93f6d35bf78aa669a Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 05:42:08 -0400 Subject: [PATCH 038/144] Added a way to toggle orefilter on crate using Ctrl + wrench --- .../archaic/crate/BlockCrate.java | 45 ++++++------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java index 89f6c30ec..28c5650cf 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java @@ -10,12 +10,14 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatMessageComponent; import net.minecraft.util.Icon; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; import resonantinduction.core.Reference; import universalelectricity.api.UniversalElectricity; import calclavia.lib.prefab.block.BlockTile; +import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.WrenchUtility; import calclavia.lib.utility.inventory.InventoryUtility; import codechicken.multipart.ControlKeyModifer; @@ -64,20 +66,11 @@ public class BlockCrate extends BlockTile @Override public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player) { - if (!world.isRemote) + if (!world.isRemote && world.getBlockTileEntity(x, y, z) instanceof TileCrate) { - if (world.getBlockTileEntity(x, y, z) instanceof TileCrate) - { - TileCrate tileEntity = (TileCrate) world.getBlockTileEntity(x, y, z); - - /** Make double clicking input all stacks. */ - boolean allMode = (world.getWorldTime() - tileEntity.prevClickTime < 10); - - tileEntity.prevClickTime = world.getWorldTime(); - - this.tryEject(tileEntity, player, allMode); - } - + TileCrate tileEntity = (TileCrate) world.getBlockTileEntity(x, y, z); + this.tryEject(tileEntity, player, world.getWorldTime() - tileEntity.prevClickTime < 10); + tileEntity.prevClickTime = world.getWorldTime(); } } @@ -93,10 +86,12 @@ public class BlockCrate extends BlockTile if (ControlKeyModifer.isControlDown(player)) { - + tile.oreFilterEnabled = !tile.oreFilterEnabled; + player.sendChatToPlayer(ChatMessageComponent.createFromText(LanguageUtility.getLocal("crate.orefilter." + tile.oreFilterEnabled))); } else if (oreID != -1) { + /* Switches ore itemStack around */ ArrayList ores = OreDictionary.getOres(oreID); for (int oreIndex = 0; oreIndex < ores.size(); oreIndex++) @@ -151,14 +146,9 @@ public class BlockCrate extends BlockTile { TileCrate tile = (TileCrate) world.getBlockTileEntity(x, y, z); - /** Make double clicking input all stacks. */ - boolean allMode = (world.getWorldTime() - tile.prevClickTime < 10); - - tile.prevClickTime = world.getWorldTime(); - if (ControlKeyModifer.isControlDown(player)) { - tryEject(tile, player, allMode); + tryEject(tile, player, world.getWorldTime() - tile.prevClickTime < 10); } else { @@ -174,8 +164,10 @@ public class BlockCrate extends BlockTile } } - tryInsert(tile, player, allMode); + tryInsert(tile, player, world.getWorldTime() - tile.prevClickTime < 10); + } + tile.prevClickTime = world.getWorldTime(); } return true; } @@ -184,16 +176,7 @@ public class BlockCrate extends BlockTile * in. */ public void tryInsert(TileCrate tileEntity, EntityPlayer player, boolean allMode, boolean doSearch) { - boolean success; - - if (allMode) - { - success = this.insertAllItems(tileEntity, player); - } - else - { - success = this.insertCurrentItem(tileEntity, player); - } + boolean success = allMode ? this.insertAllItems(tileEntity, player) : this.insertCurrentItem(tileEntity, player); if (!success && doSearch) { From 43de4351f064967fdf32ee421a82b436b2afba34 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 05:50:26 -0400 Subject: [PATCH 039/144] Fixed create update issue when ejecting items --- .../main/scala/resonantinduction/archaic/crate/BlockCrate.java | 1 + 1 file changed, 1 insertion(+) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java index 28c5650cf..b44f41677 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java @@ -346,6 +346,7 @@ public class BlockCrate extends BlockTile return true; } } + tileEntity.onInventoryChanged(); return true; } } From 32119744d33a93d6c5127683da6789e7b360c26b Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 06:23:51 -0400 Subject: [PATCH 040/144] Added Crate filtering Ctrl + click with items to set filter --- .../archaic/crate/BlockCrate.java | 19 ++++++++++++--- .../archaic/crate/TileCrate.java | 24 +++++++++++++++---- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java index b44f41677..283996a7e 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java @@ -148,20 +148,33 @@ public class BlockCrate extends BlockTile if (ControlKeyModifer.isControlDown(player)) { - tryEject(tile, player, world.getWorldTime() - tile.prevClickTime < 10); + if (player.getCurrentEquippedItem() != null && (!player.getCurrentEquippedItem().getItem().isDamageable() || player.getCurrentEquippedItem().getItem().getDamage(player.getCurrentEquippedItem()) > 0)) + { + ItemStack filter = player.getCurrentEquippedItem().copy(); + filter.stackSize = 0; + tile.setFilter(filter); + } + else + { + tile.setFilter(null); + } } else { /* Creative mode way to fill crates to max in one click */ ItemStack current = player.inventory.getCurrentItem(); - if (side == 1 && player.capabilities.isCreativeMode) + if (player.capabilities.isCreativeMode) { - if (current != null && tile.getSampleStack() == null) + if (side == 1 && current != null && tile.getSampleStack() == null) { ItemStack cStack = current.copy(); cStack.stackSize = TileCrate.getSlotCount(world.getBlockMetadata(x, y, z)) * 64; addStackToCrate(tile, cStack); } + else if (hitY >= 0.5) + { + tryEject(tile, player, world.getWorldTime() - tile.prevClickTime < 10); + } } tryInsert(tile, player, world.getWorldTime() - tile.prevClickTime < 10); diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index 5bfac7657..91e0a72e4 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -1,14 +1,17 @@ package resonantinduction.archaic.crate; +import java.util.HashSet; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; -import net.minecraft.util.ChatMessageComponent; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; import resonantinduction.core.ResonantInduction; +import resonantinduction.core.prefab.imprint.ItemImprint; +import calclavia.api.resonantinduction.IFilterable; import calclavia.lib.network.IPacketReceiver; import calclavia.lib.network.PacketHandler; import calclavia.lib.prefab.tile.TileExternalInventory; @@ -21,19 +24,20 @@ import com.google.common.io.ByteArrayDataInput; * TODO: Add filter-locking feature. Put filter in, locks the crate to only use that item. * * @author DarkGuardsman */ -public class TileCrate extends TileExternalInventory implements IPacketReceiver, IExtendedStorage +public class TileCrate extends TileExternalInventory implements IPacketReceiver, IExtendedStorage, IFilterable { /** max meta size of the crate */ public static final int maxSize = 2; /** delay from last click */ public long prevClickTime = -1000; - + /** Check to see if oreName items can be force stacked */ public boolean oreFilterEnabled = false; /** Collective total stack of all inv slots */ private ItemStack sampleStack; + private ItemStack filterStack; @Override public InventoryCrate getInventory() @@ -78,7 +82,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, } } if (newSampleStack == null || newSampleStack.itemID == 0 || newSampleStack.stackSize <= 0) - this.sampleStack = null; + this.sampleStack = this.getFilter() != null ? this.getFilter().copy() : null; else this.sampleStack = newSampleStack.copy(); @@ -257,4 +261,16 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, nbt.setBoolean("oreFilter", this.oreFilterEnabled); } + @Override + public void setFilter(ItemStack filter) + { + this.filterStack = filter; + } + + @Override + public ItemStack getFilter() + { + return this.filterStack; + } + } From ac05a8149e5672484b2a39ab61a19601925a637e Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 06:26:50 -0400 Subject: [PATCH 041/144] Added translation key for crate stacksize tool tip --- .../scala/resonantinduction/archaic/crate/ItemBlockCrate.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java index 425986208..e7f1b93f1 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java @@ -2,6 +2,7 @@ package resonantinduction.archaic.crate; import java.util.List; +import calclavia.lib.utility.LanguageUtility; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemBlock; @@ -33,7 +34,7 @@ public class ItemBlockCrate extends ItemBlock if (containingStack != null) { par3List.add(containingStack.getDisplayName()); - par3List.add("Amount: " + containingStack.stackSize); + par3List.add(LanguageUtility.getLocal("crate.tooltip.amount") +" " + containingStack.stackSize); } } From b4d0140ff9a7d0e943c288cf56b96b33079bdbef Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 06:39:02 -0400 Subject: [PATCH 042/144] Added tools tips to helper users understand how to use the crate --- .../archaic/crate/ItemBlockCrate.java | 231 +++++++++--------- 1 file changed, 116 insertions(+), 115 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java index e7f1b93f1..9c0cbc774 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java @@ -2,148 +2,149 @@ package resonantinduction.archaic.crate; import java.util.List; -import calclavia.lib.utility.LanguageUtility; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; +import calclavia.lib.prefab.item.ItemBlockTooltip; +import calclavia.lib.utility.LanguageUtility; -public class ItemBlockCrate extends ItemBlock +public class ItemBlockCrate extends ItemBlockTooltip { - public ItemBlockCrate(int par1) - { - super(par1); - this.setHasSubtypes(true); - } + public ItemBlockCrate(int par1) + { + super(par1); + this.setHasSubtypes(true); + } - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - return this.getUnlocalizedName() + "." + itemStack.getItemDamage(); - } + @Override + public String getUnlocalizedName(ItemStack itemStack) + { + return this.getUnlocalizedName() + "." + itemStack.getItemDamage(); + } - @Override - public void addInformation(ItemStack itemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - ItemStack containingStack = getContainingItemStack(itemStack); + @Override + public void addInformation(ItemStack itemStack, EntityPlayer par2EntityPlayer, List list, boolean par4) + { + super.addInformation(itemStack, par2EntityPlayer, list, par4); + ItemStack containingStack = getContainingItemStack(itemStack); - if (containingStack != null) - { - par3List.add(containingStack.getDisplayName()); - par3List.add(LanguageUtility.getLocal("crate.tooltip.amount") +" " + containingStack.stackSize); - } - } + if (containingStack != null) + { + list.add(containingStack.getDisplayName()); + list.add(LanguageUtility.getLocal("crate.tooltip.amount") + " " + containingStack.stackSize); + } + } - @Override - public int getItemStackLimit(ItemStack stack) - { - ItemStack containingStack = getContainingItemStack(stack); - if (containingStack != null) - { - return 1; - } - return this.maxStackSize; - } + @Override + public int getItemStackLimit(ItemStack stack) + { + ItemStack containingStack = getContainingItemStack(stack); + if (containingStack != null) + { + return 1; + } + return this.maxStackSize; + } - @Override - public void onUpdate(ItemStack itemStack, World par2World, Entity entity, int par4, boolean par5) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - ItemStack containingStack = getContainingItemStack(itemStack); + @Override + public void onUpdate(ItemStack itemStack, World par2World, Entity entity, int par4, boolean par5) + { + if (entity instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) entity; + ItemStack containingStack = getContainingItemStack(itemStack); - if (containingStack != null && !player.capabilities.isCreativeMode) - { - player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 5, (int) ((float) containingStack.stackSize / (float) TileCrate.getSlotCount(itemStack.getItemDamage())) * 5)); - } - } - } + if (containingStack != null && !player.capabilities.isCreativeMode) + { + player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 5, (int) ((float) containingStack.stackSize / (float) TileCrate.getSlotCount(itemStack.getItemDamage())) * 5)); + } + } + } - public static void setContainingItemStack(ItemStack itemStack, ItemStack containingStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } + public static void setContainingItemStack(ItemStack itemStack, ItemStack containingStack) + { + if (itemStack.stackTagCompound == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } - if (containingStack != null) - { - NBTTagCompound itemTagCompound = new NBTTagCompound(); - containingStack.stackSize = Math.abs(containingStack.stackSize); - containingStack.writeToNBT(itemTagCompound); - itemStack.getTagCompound().setTag("Item", itemTagCompound); + if (containingStack != null) + { + NBTTagCompound itemTagCompound = new NBTTagCompound(); + containingStack.stackSize = Math.abs(containingStack.stackSize); + containingStack.writeToNBT(itemTagCompound); + itemStack.getTagCompound().setTag("Item", itemTagCompound); - itemStack.getTagCompound().setInteger("Count", containingStack.stackSize); - } - else - { - itemStack.getTagCompound().setTag("Item", new NBTTagCompound()); - itemStack.getTagCompound().setInteger("Count", 0); - } - } + itemStack.getTagCompound().setInteger("Count", containingStack.stackSize); + } + else + { + itemStack.getTagCompound().setTag("Item", new NBTTagCompound()); + itemStack.getTagCompound().setInteger("Count", 0); + } + } - public static ItemStack getContainingItemStack(ItemStack itemStack) - { - if (itemStack.stackTagCompound == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - return null; - } + public static ItemStack getContainingItemStack(ItemStack itemStack) + { + if (itemStack.stackTagCompound == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + return null; + } - NBTTagCompound itemTagCompound = itemStack.getTagCompound().getCompoundTag("Item"); - ItemStack containingStack = ItemStack.loadItemStackFromNBT(itemTagCompound); + NBTTagCompound itemTagCompound = itemStack.getTagCompound().getCompoundTag("Item"); + ItemStack containingStack = ItemStack.loadItemStackFromNBT(itemTagCompound); - if (containingStack != null) - { - containingStack.stackSize = itemStack.getTagCompound().getInteger("Count"); - } + if (containingStack != null) + { + containingStack.stackSize = itemStack.getTagCompound().getInteger("Count"); + } - return containingStack; - } + return containingStack; + } - @Override - public int getMetadata(int metadata) - { - return metadata; - } + @Override + public int getMetadata(int metadata) + { + return metadata; + } - @Override - public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) - { - if (super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata)) - { - ItemStack containingItem = getContainingItemStack(stack); + @Override + public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) + { + if (super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata)) + { + ItemStack containingItem = getContainingItemStack(stack); - if (world.getBlockTileEntity(x, y, z) != null && containingItem != null) - { - if (containingItem.stackSize > 0) - { - TileCrate tileEntity = (TileCrate) world.getBlockTileEntity(x, y, z); - int count = containingItem.stackSize; + if (world.getBlockTileEntity(x, y, z) != null && containingItem != null) + { + if (containingItem.stackSize > 0) + { + TileCrate tileEntity = (TileCrate) world.getBlockTileEntity(x, y, z); + int count = containingItem.stackSize; - for (int slot = 0; slot < tileEntity.getInventory().getSizeInventory(); slot++) - { - int stackSize = Math.min(64, count); - tileEntity.getInventory().setInventorySlotContents(slot, new ItemStack(containingItem.itemID, stackSize, containingItem.getItemDamage())); - count -= stackSize; + for (int slot = 0; slot < tileEntity.getInventory().getSizeInventory(); slot++) + { + int stackSize = Math.min(64, count); + tileEntity.getInventory().setInventorySlotContents(slot, new ItemStack(containingItem.itemID, stackSize, containingItem.getItemDamage())); + count -= stackSize; - if (count <= 0) - { - containingItem = null; - break; - } + if (count <= 0) + { + containingItem = null; + break; + } - } - tileEntity.buildSampleStack(); - } - } - } + } + tileEntity.buildSampleStack(); + } + } + } - return true; - } + return true; + } } From 597df343b1b9685d61f32a66e1249abff61fa652 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 06:41:12 -0400 Subject: [PATCH 043/144] Updated languages submodule --- src/main/resources/assets/resonantinduction/languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/resonantinduction/languages b/src/main/resources/assets/resonantinduction/languages index 63935dce3..d161acb99 160000 --- a/src/main/resources/assets/resonantinduction/languages +++ b/src/main/resources/assets/resonantinduction/languages @@ -1 +1 @@ -Subproject commit 63935dce34b6ef16188fe2c7b3250c2158c2b574 +Subproject commit d161acb9922c0d6f4be8927df14442a2f38cd758 From 4d6444bd43ec0e2e85c8ada514025b64a4bb0941 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 06:43:10 -0400 Subject: [PATCH 044/144] Fixed packet not being sent when crate filter changes --- .../scala/resonantinduction/archaic/crate/ItemBlockCrate.java | 4 ++-- .../main/scala/resonantinduction/archaic/crate/TileCrate.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java index 9c0cbc774..539d74d81 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java @@ -14,9 +14,9 @@ import calclavia.lib.utility.LanguageUtility; public class ItemBlockCrate extends ItemBlockTooltip { - public ItemBlockCrate(int par1) + public ItemBlockCrate(int id) { - super(par1); + super(id); this.setHasSubtypes(true); } diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index 91e0a72e4..f5a271a43 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -265,6 +265,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, public void setFilter(ItemStack filter) { this.filterStack = filter; + this.onInventoryChanged(); } @Override From f9dbf0c71d1685fbcbe28b1279bf0ebd124aa773 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 06:45:00 -0400 Subject: [PATCH 045/144] Removed ItemStorageCan due to being an empty class --- .../archaic/crate/ItemStorageCan.java | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 archaic/src/main/scala/resonantinduction/archaic/crate/ItemStorageCan.java diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemStorageCan.java b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemStorageCan.java deleted file mode 100644 index 1c63d9608..000000000 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemStorageCan.java +++ /dev/null @@ -1,11 +0,0 @@ -package resonantinduction.archaic.crate; - -/** - * Can that is used to store items such as food, parts, or solid fuels. - * - * @author DarkGuardsman - */ -public class ItemStorageCan -{ - -} From 5864de83288340f543965004526f849fae65ebd3 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 06:47:57 -0400 Subject: [PATCH 046/144] Forgot to have crate save its filter --- .../main/scala/resonantinduction/archaic/crate/TileCrate.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index f5a271a43..09bbb6eb0 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -242,6 +242,8 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, this.getInventory().buildInventory(this.sampleStack); } this.oreFilterEnabled = nbt.getBoolean("oreFilter"); + if(nbt.hasKey("filter")) + filterStack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("filter")); } @@ -259,6 +261,8 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, nbt.setCompoundTag("stack", stack.writeToNBT(new NBTTagCompound())); } nbt.setBoolean("oreFilter", this.oreFilterEnabled); + if (this.filterStack != null) + nbt.setCompoundTag("filter", filterStack.writeToNBT(new NBTTagCompound())); } @Override From 3df464812d436041a938bcd2f95f6f7cb13623f3 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Mon, 14 Apr 2014 20:35:17 +0800 Subject: [PATCH 047/144] Fixed #522, #513 - Dust water mixture not generating correctly --- .../main/scala/resonantinduction/archaic/filter/TileFilter.java | 1 - .../resonantinduction/core/resource/ResourceGenerator.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java b/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java index 99be3dc45..307bdb83d 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java +++ b/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java @@ -84,7 +84,6 @@ public class TileFilter extends TileFilterable implements IFilterable Vector3 checkBelow = position.clone().translate(ForgeDirection.DOWN); Block bAbove = Block.blocksList[checkAbove.getBlockID(worldObj)]; - Block bBelow = Block.blocksList[checkAbove.getBlockID(worldObj)]; if (bAbove instanceof BlockFluidMixture && (worldObj.isAirBlock(checkBelow.intX(), checkBelow.intY(), checkBelow.intZ()) || checkBelow.getTileEntity(worldObj) instanceof IFluidHandler)) { diff --git a/src/main/scala/resonantinduction/core/resource/ResourceGenerator.java b/src/main/scala/resonantinduction/core/resource/ResourceGenerator.java index 511f16471..a5a72d74e 100644 --- a/src/main/scala/resonantinduction/core/resource/ResourceGenerator.java +++ b/src/main/scala/resonantinduction/core/resource/ResourceGenerator.java @@ -360,7 +360,7 @@ public class ResourceGenerator implements IVirtualObject public static String getName(ItemStack itemStack) { - return LanguageUtility.decapitalizeFirst(OreDictionary.getOreName(OreDictionary.getOreID(itemStack)).replace("dust", "").replace("ore", "").replace("ingot", "")); + return LanguageUtility.decapitalizeFirst(OreDictionary.getOreName(OreDictionary.getOreID(itemStack)).replace("dirtyDust", "").replace("dust", "").replace("ore", "").replace("ingot", "")); } public static int getColor(String name) From 339b9e71e520a67e04d2866c9b04e6eb9982158b Mon Sep 17 00:00:00 2001 From: Calclavia Date: Mon, 14 Apr 2014 20:44:43 +0800 Subject: [PATCH 048/144] More filter fix --- .../scala/resonantinduction/archaic/filter/TileFilter.java | 3 ++- .../mechanical/process/purifier/TileMixer.java | 2 -- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java b/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java index 307bdb83d..a291c7855 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java +++ b/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java @@ -99,8 +99,9 @@ public class TileFilter extends TileFilterable implements IFilterable /** * Drop item from fluid. */ - for (RecipeResource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER.name(), "dust" + LanguageUtility.capitalizeFirst(ResourceGenerator.mixtureToMaterial(fluidBlock.getFluid().getName())))) + for (RecipeResource resoure : MachineRecipes.INSTANCE.getOutput(RecipeType.MIXER.name(), "dirtyDust" + LanguageUtility.capitalizeFirst(ResourceGenerator.mixtureToMaterial(fluidBlock.getFluid().getName())))) { + InventoryUtility.dropItemStack(worldObj, checkAbove.clone().add(0.5), resoure.getItemStack().copy(), 0, 0); } diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java index 87be812a4..eefe110a8 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java @@ -149,7 +149,6 @@ public class TileMixer extends TileMechanical implements IInventory { processingItem.setDead(); timer.remove(processingItem); - processingItem = null; } else { @@ -170,7 +169,6 @@ public class TileMixer extends TileMechanical implements IInventory else { timer.remove(processingItem); - processingItem = null; } } From 853c7bfdb0df276c9629b0884d4f5421cd2ea614 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Mon, 14 Apr 2014 20:53:13 +0800 Subject: [PATCH 049/144] Fixed #455 - EM Levitator item dupe --- .../electrical/levitator/PartLevitator.java | 88 ++++++++++--------- 1 file changed, 48 insertions(+), 40 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java index d78026507..ab0af5491 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java @@ -1,13 +1,15 @@ package resonantinduction.electrical.levitator; -import java.lang.ref.WeakReference; -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockFluid; -import net.minecraft.block.BlockLadder; -import net.minecraft.block.BlockSnow; -import net.minecraft.block.BlockVine; +import calclavia.lib.render.EnumColor; +import calclavia.lib.utility.LinkUtility; +import calclavia.lib.utility.WrenchUtility; +import calclavia.lib.utility.inventory.InventoryUtility; +import codechicken.lib.data.MCDataInput; +import codechicken.lib.data.MCDataOutput; +import codechicken.multipart.TMultiPart; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.*; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -28,28 +30,23 @@ import resonantinduction.electrical.Electrical; import resonantinduction.electrical.tesla.TileTesla; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LinkUtility; -import calclavia.lib.utility.WrenchUtility; -import calclavia.lib.utility.inventory.InventoryUtility; -import codechicken.lib.data.MCDataInput; -import codechicken.lib.data.MCDataOutput; -import codechicken.multipart.TMultiPart; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; + +import java.lang.ref.WeakReference; +import java.util.List; public class PartLevitator extends PartFace { - private int pushDelay; - - private AxisAlignedBB operationBounds; - private AxisAlignedBB suckBounds; - /** * true = suck, false = push */ public boolean input = true; - + /** + * Client Side Only + */ + public float renderRotation = 0; + private int pushDelay; + private AxisAlignedBB operationBounds; + private AxisAlignedBB suckBounds; /** * Pathfinding */ @@ -57,20 +54,21 @@ public class PartLevitator extends PartFace private PathfinderLevitator pathfinder; private WeakReference linked; private int lastCalcTime = 0; - - /** Color of beam */ + /** + * Color of beam + */ private int dyeID = TileTesla.DEFAULT_COLOR; - /** * Linking */ private byte saveLinkSide; private VectorWorld saveLinkVector; - /** - * Client Side Only - */ - public float renderRotation = 0; + public static boolean canBePath(World world, Vector3 position) + { + Block block = Block.blocksList[position.getBlockID(world)]; + return block == null || (block instanceof BlockSnow || block instanceof BlockVine || block instanceof BlockLadder || ((block instanceof BlockFluid || block instanceof IFluidBlock) && block.blockID != Block.lavaMoving.blockID && block.blockID != Block.lavaStill.blockID)); + } @Override public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack itemStack) @@ -80,13 +78,17 @@ public class PartLevitator extends PartFace if (tryLink(LinkUtility.getLink(itemStack), LinkUtility.getSide(itemStack))) { if (world().isRemote) + { player.addChatMessage("Successfully linked devices."); + } LinkUtility.clearLink(itemStack); } else { if (world().isRemote) + { player.addChatMessage("Marked link for device."); + } LinkUtility.setLink(itemStack, new VectorWorld(world(), x(), y(), z())); LinkUtility.setSide(itemStack, (byte) placementSide.ordinal()); @@ -111,7 +113,9 @@ public class PartLevitator extends PartFace } if (player.isSneaking()) + { input = !input; + } updateBounds(); updatePath(); @@ -152,18 +156,18 @@ public class PartLevitator extends PartFace */ if (!world().isRemote && input && canFunction() && entity instanceof EntityItem) { - EntityItem item = (EntityItem) entity; + EntityItem entityItem = (EntityItem) entity; IInventory inventory = (IInventory) getLatched(); - ItemStack remains = InventoryUtility.putStackInInventory(inventory, item.getEntityItem(), placementSide.getOpposite().getOpposite().ordinal(), false); + ItemStack remains = InventoryUtility.putStackInInventory(inventory, entityItem.getEntityItem(), placementSide.getOpposite().getOpposite().ordinal(), false); if (remains == null) { - item.setDead(); + entityItem.setDead(); } else { - item.setEntityItemStack(remains); + entityItem.getEntityItem().stackSize = remains.stackSize; } // TODO: Add redstone pulse and reaction? @@ -174,7 +178,9 @@ public class PartLevitator extends PartFace public void update() { if (ticks % 60 == 0) + { updateBounds(); + } super.update(); @@ -277,7 +283,9 @@ public class PartLevitator extends PartFace final ForgeDirection direction = difference.toForgeDirection(); if (renderBeam) + { Electrical.proxy.renderElectricShock(world(), prevResult.clone().translate(0.5), result.clone().translate(0.5), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); + } AxisAlignedBB bounds = AxisAlignedBB.getAABBPool().getAABB(result.x, result.y, result.z, result.x + 1, result.y + 1, result.z + 1); List entities = world().getEntitiesWithinAABB(EntityItem.class, bounds); @@ -313,7 +321,9 @@ public class PartLevitator extends PartFace } if (ticks % renderPeriod == 0) + { Electrical.proxy.renderElectricShock(world(), getBeamSpawnPosition(), new Vector3(operationBounds.maxX - 0.5 - placementSide.offsetX / 3f, operationBounds.maxY - 0.5 - placementSide.offsetY / 3f, operationBounds.maxZ - 0.5 - placementSide.offsetZ / 3f), EnumColor.DYES[dyeID].toColor(), world().rand.nextFloat() > 0.9); + } } } @@ -325,21 +335,19 @@ public class PartLevitator extends PartFace { TMultiPart partSelf = MultipartUtility.getMultipart(new VectorWorld(world, position), placementSide.ordinal()); if (partSelf == this) + { return true; + } TMultiPart partLink = MultipartUtility.getMultipart(new VectorWorld(world, position), getLink().placementSide.ordinal()); if (partLink == getLink()) + { return true; + } return canBePath(world, position); } - public static boolean canBePath(World world, Vector3 position) - { - Block block = Block.blocksList[position.getBlockID(world)]; - return block == null || (block instanceof BlockSnow || block instanceof BlockVine || block instanceof BlockLadder || ((block instanceof BlockFluid || block instanceof IFluidBlock) && block.blockID != Block.lavaMoving.blockID && block.blockID != Block.lavaStill.blockID)); - } - private boolean hasLink() { return getLink() != null && getLink().getLink() == this; From bb1aaecc5b9df6684e40d961afd6076640be2574 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 19:19:51 -0400 Subject: [PATCH 050/144] Changed how electrocution is handled for wires, damage is no longer in the millions and only works when wire has a current --- .../electrical/wire/PartAdvancedWire.java | 565 +++++++++--------- 1 file changed, 280 insertions(+), 285 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java index 3358ed9aa..3c1dc5cf5 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java @@ -16,6 +16,7 @@ import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.MultipartUtility; import resonantinduction.electrical.Electrical; import universalelectricity.api.CompatibilityModule; +import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.IConductor; import calclavia.lib.prefab.CustomDamageSource; import codechicken.lib.data.MCDataInput; @@ -23,337 +24,331 @@ import codechicken.lib.data.MCDataOutput; import codechicken.multipart.IRedstonePart; import codechicken.multipart.TMultiPart; -/** - * @author Calclavia - * - */ +/** @author Calclavia */ @Deprecated public abstract class PartAdvancedWire extends PartConductor { - public static final int DEFAULT_COLOR = 15; - public int color = DEFAULT_COLOR; + public static final int DEFAULT_COLOR = 15; + public int color = DEFAULT_COLOR; - public EnumWireMaterial material = EnumWireMaterial.COPPER; - public boolean isInsulated = false; - protected Item insulationType = Electrical.itemInsulation; + public EnumWireMaterial material = EnumWireMaterial.COPPER; + public boolean isInsulated = false; + protected Item insulationType = Electrical.itemInsulation; - /** - * INTERNAL USE. - * Can this conductor connect with an external object? - */ - @Override - public boolean canConnectTo(Object obj) - { - if (obj != null && (obj.getClass().isAssignableFrom(this.getClass()) || this.getClass().isAssignableFrom(obj.getClass()))) - { - PartAdvancedWire wire = (PartAdvancedWire) obj; + /** INTERNAL USE. Can this conductor connect with an external object? */ + @Override + public boolean canConnectTo(Object obj) + { + if (obj != null && (obj.getClass().isAssignableFrom(this.getClass()) || this.getClass().isAssignableFrom(obj.getClass()))) + { + PartAdvancedWire wire = (PartAdvancedWire) obj; - if (this.getMaterial() == wire.getMaterial()) - { - if (this.isInsulated() && wire.isInsulated()) - { - return this.getColor() == wire.getColor() || (this.getColor() == DEFAULT_COLOR || wire.getColor() == DEFAULT_COLOR); - } + if (this.getMaterial() == wire.getMaterial()) + { + if (this.isInsulated() && wire.isInsulated()) + { + return this.getColor() == wire.getColor() || (this.getColor() == DEFAULT_COLOR || wire.getColor() == DEFAULT_COLOR); + } - return true; - } - } - else if (!(obj instanceof IConductor)) - { - return CompatibilityModule.isHandler(obj); - } + return true; + } + } + else if (!(obj instanceof IConductor)) + { + return CompatibilityModule.isHandler(obj); + } - return false; - } + return false; + } - protected boolean canConnectTo(Object obj, ForgeDirection dir) - { - if (obj != null && (obj.getClass().isAssignableFrom(this.getClass()) || this.getClass().isAssignableFrom(obj.getClass()))) - { - PartAdvancedWire wire = (PartAdvancedWire) obj; + protected boolean canConnectTo(Object obj, ForgeDirection dir) + { + if (obj != null && (obj.getClass().isAssignableFrom(this.getClass()) || this.getClass().isAssignableFrom(obj.getClass()))) + { + PartAdvancedWire wire = (PartAdvancedWire) obj; - if (this.getMaterial() == wire.getMaterial()) - { - if (this.isInsulated() && wire.isInsulated()) - { - return this.getColor() == wire.getColor() || (this.getColor() == DEFAULT_COLOR || wire.getColor() == DEFAULT_COLOR); - } + if (this.getMaterial() == wire.getMaterial()) + { + if (this.isInsulated() && wire.isInsulated()) + { + return this.getColor() == wire.getColor() || (this.getColor() == DEFAULT_COLOR || wire.getColor() == DEFAULT_COLOR); + } - return true; - } - } - else if (!(obj instanceof IConductor)) - { - return CompatibilityModule.canConnect(obj, dir.getOpposite(), this); - } + return true; + } + } + else if (!(obj instanceof IConductor)) + { + return CompatibilityModule.canConnect(obj, dir.getOpposite(), this); + } - return false; - } + return false; + } - @Override - public void onEntityCollision(Entity entity) - { - if (!this.isInsulated() && this.getNetwork().getLastBuffer() > 0) - { - entity.attackEntityFrom(CustomDamageSource.electrocution, this.getNetwork().getLastBuffer()); - } - } + @Override + public void onEntityCollision(Entity entity) + { + if (!this.isInsulated()) + { + float damage = 0; - @Override - public float getResistance() - { - return this.getMaterial().resistance; - } + if (this.getNetwork() instanceof IElectricalNetwork && this.getNetwork().getRequest() > 0) + { + damage = ((IElectricalNetwork) this.getNetwork()).getVoltage() / 60; + } - @Override - public long getCurrentCapacity() - { - return this.getMaterial().maxAmps; - } + if (damage > 0) + entity.attackEntityFrom(CustomDamageSource.electrocution, Math.max(damage, 10)); + } + } - /** - * Material Methods - */ - public EnumWireMaterial getMaterial() - { - return this.material; - } + @Override + public float getResistance() + { + return this.getMaterial().resistance; + } - public void setMaterial(EnumWireMaterial material) - { - this.material = material; - } + @Override + public long getCurrentCapacity() + { + return this.getMaterial().maxAmps; + } - public void setMaterial(int id) - { - this.setMaterial(EnumWireMaterial.values()[id]); - } + /** Material Methods */ + public EnumWireMaterial getMaterial() + { + return this.material; + } - public int getMaterialID() - { - return this.material.ordinal(); - } + public void setMaterial(EnumWireMaterial material) + { + this.material = material; + } - /** - * Insulation Methods - */ - public void setInsulated(boolean insulated) - { - this.isInsulated = insulated; - this.color = DEFAULT_COLOR; + public void setMaterial(int id) + { + this.setMaterial(EnumWireMaterial.values()[id]); + } - if (!this.world().isRemote) - { - tile().notifyPartChange(this); - this.sendInsulationUpdate(); - } - } + public int getMaterialID() + { + return this.material.ordinal(); + } - public void setInsulated(int dyeColour) - { - this.isInsulated = true; - this.color = dyeColour; + /** Insulation Methods */ + public void setInsulated(boolean insulated) + { + this.isInsulated = insulated; + this.color = DEFAULT_COLOR; - if (!this.world().isRemote) - { - tile().notifyPartChange(this); - this.sendInsulationUpdate(); - this.sendColorUpdate(); - } - } + if (!this.world().isRemote) + { + tile().notifyPartChange(this); + this.sendInsulationUpdate(); + } + } - public boolean isInsulated() - { - return this.isInsulated; - } + public void setInsulated(int dyeColour) + { + this.isInsulated = true; + this.color = dyeColour; - public void sendInsulationUpdate() - { - tile().getWriteStream(this).writeByte(1).writeBoolean(this.isInsulated); - } + if (!this.world().isRemote) + { + tile().notifyPartChange(this); + this.sendInsulationUpdate(); + this.sendColorUpdate(); + } + } - /** - * Wire Coloring Methods - */ - public int getColor() - { - return this.isInsulated ? this.color : -1; - } + public boolean isInsulated() + { + return this.isInsulated; + } - public void setColor(int dye) - { - if (this.isInsulated) - { - this.color = dye; + public void sendInsulationUpdate() + { + tile().getWriteStream(this).writeByte(1).writeBoolean(this.isInsulated); + } - if (!this.world().isRemote) - { - tile().notifyPartChange(this); - this.sendColorUpdate(); - } - } - } + /** Wire Coloring Methods */ + public int getColor() + { + return this.isInsulated ? this.color : -1; + } - public void sendColorUpdate() - { - tile().getWriteStream(this).writeByte(2).writeInt(this.color); - } + public void setColor(int dye) + { + if (this.isInsulated) + { + this.color = dye; - /** - * Changes the wire's color. - */ - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack itemStack) - { - if (itemStack != null) - { - int dyeColor = MultipartUtility.isDye(itemStack); + if (!this.world().isRemote) + { + tile().notifyPartChange(this); + this.sendColorUpdate(); + } + } + } - if (dyeColor != -1 && this.isInsulated()) - { - if (!player.capabilities.isCreativeMode) - { - player.inventory.decrStackSize(player.inventory.currentItem, 1); - } + public void sendColorUpdate() + { + tile().getWriteStream(this).writeByte(2).writeInt(this.color); + } - this.setColor(dyeColor); - return true; - } - else if (itemStack.getItem() == insulationType) - { - if (this.isInsulated()) - { - if (!world().isRemote && player.capabilities.isCreativeMode) - { - tile().dropItems(Collections.singletonList(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color)))); - } + /** Changes the wire's color. */ + @Override + public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack itemStack) + { + if (itemStack != null) + { + int dyeColor = MultipartUtility.isDye(itemStack); - this.setInsulated(false); - return true; - } - else - { - if (!player.capabilities.isCreativeMode) - { - player.inventory.decrStackSize(player.inventory.currentItem, 1); - } + if (dyeColor != -1 && this.isInsulated()) + { + if (!player.capabilities.isCreativeMode) + { + player.inventory.decrStackSize(player.inventory.currentItem, 1); + } - this.setInsulated(BlockColored.getDyeFromBlock(itemStack.getItemDamage())); - return true; - } - } - else if (itemStack.getItem() instanceof ItemShears && isInsulated()) - { - if (!world().isRemote && !player.capabilities.isCreativeMode) - { - tile().dropItems(Collections.singletonList(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color)))); - } + this.setColor(dyeColor); + return true; + } + else if (itemStack.getItem() == insulationType) + { + if (this.isInsulated()) + { + if (!world().isRemote && player.capabilities.isCreativeMode) + { + tile().dropItems(Collections.singletonList(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color)))); + } - this.setInsulated(false); - return true; - } - } + this.setInsulated(false); + return true; + } + else + { + if (!player.capabilities.isCreativeMode) + { + player.inventory.decrStackSize(player.inventory.currentItem, 1); + } - return false; - } + this.setInsulated(BlockColored.getDyeFromBlock(itemStack.getItemDamage())); + return true; + } + } + else if (itemStack.getItem() instanceof ItemShears && isInsulated()) + { + if (!world().isRemote && !player.capabilities.isCreativeMode) + { + tile().dropItems(Collections.singletonList(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color)))); + } - @Override - protected ItemStack getItem() - { - return EnumWireMaterial.values()[getMaterialID()].getWire(); - } + this.setInsulated(false); + return true; + } + } - @Override - public Iterable getDrops() - { - List drops = new ArrayList(); - drops.add(getItem()); + return false; + } - if (this.isInsulated) - { - drops.add(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color))); - } + @Override + protected ItemStack getItem() + { + return EnumWireMaterial.values()[getMaterialID()].getWire(); + } - return drops; - } + @Override + public Iterable getDrops() + { + List drops = new ArrayList(); + drops.add(getItem()); - @Override - public ItemStack pickItem(MovingObjectPosition hit) - { - return getItem(); - } + if (this.isInsulated) + { + drops.add(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color))); + } - @Override - public void readDesc(MCDataInput packet) - { - this.setMaterial(packet.readByte()); - this.color = packet.readByte(); - this.isInsulated = packet.readBoolean(); - } + return drops; + } - @Override - public void writeDesc(MCDataOutput packet) - { - packet.writeByte((byte) this.getMaterialID()); - packet.writeByte((byte) this.color); - packet.writeBoolean(this.isInsulated); - } + @Override + public ItemStack pickItem(MovingObjectPosition hit) + { + return getItem(); + } - public void read(MCDataInput packet, int packetID) - { - switch (packetID) - { - case 1: - this.isInsulated = packet.readBoolean(); - this.tile().markRender(); - break; - case 2: - this.color = packet.readInt(); - this.tile().markRender(); - break; - } - } + @Override + public void readDesc(MCDataInput packet) + { + this.setMaterial(packet.readByte()); + this.color = packet.readByte(); + this.isInsulated = packet.readBoolean(); + } - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - nbt.setInteger("typeID", getMaterialID()); - nbt.setBoolean("isInsulated", isInsulated); - nbt.setInteger("dyeID", color); - } + @Override + public void writeDesc(MCDataOutput packet) + { + packet.writeByte((byte) this.getMaterialID()); + packet.writeByte((byte) this.color); + packet.writeBoolean(this.isInsulated); + } - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - setMaterial(nbt.getInteger("typeID")); - this.isInsulated = nbt.getBoolean("isInsulated"); - this.color = nbt.getInteger("dyeID"); - } + public void read(MCDataInput packet, int packetID) + { + switch (packetID) + { + case 1: + this.isInsulated = packet.readBoolean(); + this.tile().markRender(); + break; + case 2: + this.color = packet.readInt(); + this.tile().markRender(); + break; + } + } - @Override - protected boolean checkRedstone(int side) - { - if (this.world().isBlockIndirectlyGettingPowered(x(), y(), z())) - { - return true; - } - else - { - for (TMultiPart tp : tile().jPartList()) - { - if (tp instanceof IRedstonePart) - { - IRedstonePart rp = (IRedstonePart) tp; - if ((Math.max(rp.strongPowerLevel(side), rp.weakPowerLevel(side)) << 4) > 0) - { - return true; - } - } - } - } + @Override + public void save(NBTTagCompound nbt) + { + super.save(nbt); + nbt.setInteger("typeID", getMaterialID()); + nbt.setBoolean("isInsulated", isInsulated); + nbt.setInteger("dyeID", color); + } - return false; - } + @Override + public void load(NBTTagCompound nbt) + { + super.load(nbt); + setMaterial(nbt.getInteger("typeID")); + this.isInsulated = nbt.getBoolean("isInsulated"); + this.color = nbt.getInteger("dyeID"); + } + + @Override + protected boolean checkRedstone(int side) + { + if (this.world().isBlockIndirectlyGettingPowered(x(), y(), z())) + { + return true; + } + else + { + for (TMultiPart tp : tile().jPartList()) + { + if (tp instanceof IRedstonePart) + { + IRedstonePart rp = (IRedstonePart) tp; + if ((Math.max(rp.strongPowerLevel(side), rp.weakPowerLevel(side)) << 4) > 0) + { + return true; + } + } + } + } + + return false; + } } From c04955cd8ac69b6e459b68baac7c9ad2ccf61158 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 19:33:24 -0400 Subject: [PATCH 051/144] Tweaked wire electrocution damage range --- .../resonantinduction/electrical/wire/PartAdvancedWire.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java index 3c1dc5cf5..9c3baa642 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java @@ -16,6 +16,7 @@ import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.MultipartUtility; import resonantinduction.electrical.Electrical; import universalelectricity.api.CompatibilityModule; +import universalelectricity.api.UniversalElectricity; import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.IConductor; import calclavia.lib.prefab.CustomDamageSource; @@ -94,11 +95,11 @@ public abstract class PartAdvancedWire extends PartConductor if (this.getNetwork() instanceof IElectricalNetwork && this.getNetwork().getRequest() > 0) { - damage = ((IElectricalNetwork) this.getNetwork()).getVoltage() / 60; + damage = ((IElectricalNetwork) this.getNetwork()).getVoltage() / UniversalElectricity.DEFAULT_VOLTAGE; } if (damage > 0) - entity.attackEntityFrom(CustomDamageSource.electrocution, Math.max(damage, 10)); + entity.attackEntityFrom(CustomDamageSource.electrocution, Math.min(damage, 10)); } } From ade00d97dcfae8a13a80ec33e30e3bb0674a9592 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 19:38:59 -0400 Subject: [PATCH 052/144] Wire electrocution now drains 100j per damage done --- .../electrical/wire/PartAdvancedWire.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java index 9c3baa642..d0853ec49 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java @@ -89,17 +89,18 @@ public abstract class PartAdvancedWire extends PartConductor @Override public void onEntityCollision(Entity entity) { - if (!this.isInsulated()) + if (!this.isInsulated() && this.getNetwork() instanceof IElectricalNetwork) { float damage = 0; - if (this.getNetwork() instanceof IElectricalNetwork && this.getNetwork().getRequest() > 0) - { + if (this.getNetwork().getRequest() > 0) damage = ((IElectricalNetwork) this.getNetwork()).getVoltage() / UniversalElectricity.DEFAULT_VOLTAGE; - } if (damage > 0) + { entity.attackEntityFrom(CustomDamageSource.electrocution, Math.min(damage, 10)); + this.getNetwork().setBuffer((long) Math.max(0, this.getNetwork().getBuffer() - damage * 100)); + } } } From 28897ac249ee16bb60cc74299a3447d04b773020 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 20:10:45 -0400 Subject: [PATCH 053/144] Changed electrocution damage of wires to be handled by calc-core CustomDamage class --- .../electrical/wire/PartAdvancedWire.java | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java index d0853ec49..e81076d17 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java @@ -16,7 +16,6 @@ import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.MultipartUtility; import resonantinduction.electrical.Electrical; import universalelectricity.api.CompatibilityModule; -import universalelectricity.api.UniversalElectricity; import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.IConductor; import calclavia.lib.prefab.CustomDamageSource; @@ -90,18 +89,7 @@ public abstract class PartAdvancedWire extends PartConductor public void onEntityCollision(Entity entity) { if (!this.isInsulated() && this.getNetwork() instanceof IElectricalNetwork) - { - float damage = 0; - - if (this.getNetwork().getRequest() > 0) - damage = ((IElectricalNetwork) this.getNetwork()).getVoltage() / UniversalElectricity.DEFAULT_VOLTAGE; - - if (damage > 0) - { - entity.attackEntityFrom(CustomDamageSource.electrocution, Math.min(damage, 10)); - this.getNetwork().setBuffer((long) Math.max(0, this.getNetwork().getBuffer() - damage * 100)); - } - } + CustomDamageSource.handleElectrocution(entity, this, (IElectricalNetwork) this.getNetwork(), 1); } @Override From b082997714bac9ce42319992b8261ebc3530696d Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 14 Apr 2014 20:16:41 -0400 Subject: [PATCH 054/144] Changed tesla coil to use electrocution handler --- .../scala/resonantinduction/electrical/tesla/TileTesla.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java b/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java index 35b10b53d..8aaadedfd 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java +++ b/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java @@ -24,6 +24,7 @@ import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; import resonantinduction.electrical.Electrical; +import universalelectricity.api.UniversalElectricity; import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; @@ -241,7 +242,7 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure Date: Mon, 14 Apr 2014 20:36:27 -0400 Subject: [PATCH 055/144] Changed methods calls from CustomDamageSource to ElectricalDamage --- .../scala/resonantinduction/electrical/tesla/TileTesla.java | 3 ++- .../resonantinduction/electrical/wire/PartAdvancedWire.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java b/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java index 8aaadedfd..4bc59d014 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java +++ b/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java @@ -34,6 +34,7 @@ import calclavia.lib.network.IPacketReceiver; import calclavia.lib.network.IPacketSender; import calclavia.lib.network.PacketHandler; import calclavia.lib.prefab.CustomDamageSource; +import calclavia.lib.prefab.damage.ElectricalDamage; import calclavia.lib.prefab.tile.TileElectrical; import calclavia.lib.render.EnumColor; @@ -242,7 +243,7 @@ public class TileTesla extends TileElectrical implements IMultiBlockStructure Date: Mon, 14 Apr 2014 21:26:56 -0400 Subject: [PATCH 056/144] Minor change to wire percent damage --- .../resonantinduction/electrical/wire/PartAdvancedWire.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java index 981827da1..43b9773ef 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java @@ -90,7 +90,7 @@ public abstract class PartAdvancedWire extends PartConductor public void onEntityCollision(Entity entity) { if (!this.isInsulated() && this.getNetwork() instanceof IElectricalNetwork) - ElectricalDamage.handleElectrocution(entity, this, (IElectricalNetwork) this.getNetwork(), 1); + ElectricalDamage.handleElectrocution(entity, this, (IElectricalNetwork) this.getNetwork()); } @Override From f0e0c3ed5c69d1a1b848060e6c29fab73ed7f57b Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 15 Apr 2014 05:28:55 -0400 Subject: [PATCH 057/144] Recipe change --- .../resonantinduction/archaic/Archaic.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/Archaic.java b/archaic/src/main/scala/resonantinduction/archaic/Archaic.java index 44037c760..7752f98cd 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/Archaic.java +++ b/archaic/src/main/scala/resonantinduction/archaic/Archaic.java @@ -19,6 +19,7 @@ import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; import resonantinduction.archaic.blocks.TileTurntable; import resonantinduction.archaic.crate.BlockCrate; @@ -129,12 +130,20 @@ public class Archaic public void postInit(FMLPostInitializationEvent evt) { TabRI.ITEMSTACK = new ItemStack(blockEngineeringTable); + if(OreDictionary.getOres("cobblestone") == null) + { + OreDictionary.registerOre("cobblestone", Block.cobblestone); + } + if(OreDictionary.getOres("stickWood") == null) + { + OreDictionary.registerOre("stickWood", Item.stick); + } // Add recipes GameRegistry.addRecipe(new ShapedOreRecipe(blockEngineeringTable, "P", "C", 'P', Block.pressurePlatePlanks, 'C', Block.workbench)); GameRegistry.addRecipe(new ShapedOreRecipe(blockFilter, "B", "P", "B", 'B', Block.fenceIron, 'P', Item.paper)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 0), "WWW", "WSW", "WWW", 'S', Item.stick, 'W', "logWood")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 0), "WWW", "WSW", "WWW", 'S', "stickWood", 'W', "logWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 1), "WWW", "WSW", "WWW", 'S', new ItemStack(blockCrate, 1, 0), 'W', "ingotIron")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 2), "WWW", "WSW", "WWW", 'S', new ItemStack(blockCrate, 1, 1), 'W', UniversalRecipe.PRIMARY_METAL.get())); @@ -145,15 +154,15 @@ public class Archaic GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, "SSS", "PGP", "WWW", 'S', Block.stone, 'G', Item.redstone, 'P', Block.pistonBase, 'W', "logWood")); GameRegistry.addRecipe(new ShapedOreRecipe(blockCast, "I I", "IBI", "III", 'S', Item.ingotIron, 'B', Block.fenceIron)); - GameRegistry.addRecipe(new ShapedOreRecipe(blockGutter, "S S", "I I", "III", 'S', Item.stick, 'I', Block.cobblestone)); + GameRegistry.addRecipe(new ShapedOreRecipe(blockGutter, "S S", "I I", "III", 'S', Item.stick, 'I', "cobblestone")); GameRegistry.addRecipe(new ShapedOreRecipe(blockGrate, "WBW", "B B", "WBW", 'B', Block.fenceIron, 'W', "plankWood")); GameRegistry.addRecipe(new ShapedOreRecipe(blockHotPlate, "SSS", "III", 'I', Item.ingotIron, 'S', Block.stone)); GameRegistry.addRecipe(new ShapedOreRecipe(blockMillstone, "SPS", "SAS", "SSS", 'P', Block.pistonBase, 'A', Item.pickaxeStone, 'S', Block.stone)); GameRegistry.addRecipe(new ShapedOreRecipe(blockTank, "GGG", "GSG", "GGG", 'G', Block.glass, 'S', Item.ingotIron)); - GameRegistry.addRecipe(new ShapedOreRecipe(itemHandCrank, "S ", "SSS", " S", 'S', Item.stick)); + GameRegistry.addRecipe(new ShapedOreRecipe(itemHandCrank, "S ", "SSS", " S", 'S', "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(itemImprint, "PPP", "PIP", "PPP", 'P', Item.paper, 'I', new ItemStack(Item.dyePowder, 0))); - GameRegistry.addRecipe(new ShapedOreRecipe(itemHammer, "CC ", "CS ", " S", 'C', Block.cobblestone, 'S', Item.stick)); + GameRegistry.addRecipe(new ShapedOreRecipe(itemHammer, "CC ", "CS ", " S", 'C', "cobblestone", 'S', "stickWood")); proxy.postInit(); } } From 41b83362b2b957d3a2d6c40a05d1baa38d2c0208 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Tue, 15 Apr 2014 21:28:46 +0800 Subject: [PATCH 058/144] Updated some textures --- .../textures/blocks/filter.png | Bin 2455 -> 2393 bytes .../textures/blocks/firebox_front_off.png | Bin 0 -> 1661 bytes .../textures/blocks/firebox_front_on.png | Bin 0 -> 1842 bytes .../textures/blocks/firebox_side_off.png | Bin 1372 -> 2135 bytes .../textures/blocks/firebox_side_on.png | Bin 1441 -> 2331 bytes .../textures/blocks/firebox_top_off.png | Bin 1625 -> 2146 bytes .../textures/blocks/firebox_top_on.png | Bin 1851 -> 2484 bytes .../textures/blocks/material_steel.png | Bin 2942 -> 1367 bytes .../textures/blocks/material_steel_dark.png | Bin 1556 -> 1364 bytes 9 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/resonantinduction/textures/blocks/firebox_front_off.png create mode 100644 src/main/resources/assets/resonantinduction/textures/blocks/firebox_front_on.png diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/filter.png b/src/main/resources/assets/resonantinduction/textures/blocks/filter.png index 3509b62f7d694848ab328db4f5bd5801c6ad9026..35eb11173443fa4a9d6a3a1d90f57a7b3a4f101d 100644 GIT binary patch literal 2393 zcmbVOdpK148Xi(gDupf@r)fq?GFLNWCS#hb>(~xzgq_CBqKUbfSu#dKB}u!oiA3z| z%_C1osgz4DHA;3a2bEi5C)tG%DQujj(m8+h>_5(W)>^;Idf)fE{J!sbR=k_5{R%x3 zJs1qO!qI{44vmQUXXz5?tyHVWprTJk+k9LUoXkB0|#b5Vk5RBp?Am0YW7SmMW<#8uGI)6`Id)V~~i?5HN^_ z{Nj`s&keznDF6f!O|TMTaX18tgvMDDNhI731RjgSW3bRovcg$Yi6knXjQDyXA!`az z0M(t%{b~zZ(U1o~P)@~Q!otGPVFa{H5s1N2D3o~(Jl+aISSiD$pg?6MRiYLY*nm=~ z5X(WaOp2IS6!^m4KngmtX-Mb`S|k=x z32X|H$R)7JcnXU{z~LB7Hrs|wwq`N#HcT5lX+h(ATqcV{CRtNhECPp%!*K`fM#)lto#RvPX$vJ3O8H5X?BaC5b&O%WJeg7FqB-P=v%3;IZxA%-WB5b$Jt_F?2GABQ+SQ-mvP= z->aJA6LXf$WsQ-YMDPdrXut>gW6k+kOP|F0B%K1K;NFGxy`=?#Q|%x)o_SUMtK$dn zW7JEgIl*VQD?_Ko>URx&ROh>2IX66gYfSAtbcmX-U+$S({;t48e`iSu8&@AqqMBap-Gg-A;`hq8$o&1_I9qhShOv`EHQo>_Oic26yzP`jdfBeN620=M zk7urGU%P+9xW2UHjQs;I324w+U4TdnO0k5kN+Md(M=zx>H3 zyvRF;V%|3GAt^I+VxQH{P*py1gUl3>zisO){K0VnfOh9Q{3H<2r!c z^mEsBBK?ON`U4~YI>iws{4?T&u-@H}(bdGG4w5%K2-NdhGfvaW* z3;#?Y^KbEX`ea8%*jH{EpU{shh_9$@HJ<6X&(GFK?vd+)9)!5mnx)ZnRSn6!-zthr z&)xC1(mQ(YXWzJ1?;JG#^K>rsK3fa;QYx_nJeM zR_FSv2CcUBkJ_F_-xK(0k+NXXfkQ?VCV|j&seBz`qtpA+3J@hjt`ngj7)pelO#v2r zoH{D!D9v-}p{_Gsn5l>59zq{OI+NyFGMElG@Oxy+YB1%!?i$4@VHWttv9zq{!F|ov z{aWWPmrrX!7?HR$4yk7-Iu$XN=}prnX3D@ocbV)gLCXPt(_8wAY}yuvcsL zuZh#?+52+U+US=^#~YB&P@6mFO6-7hc=?MS`r#|;E&O6t|Zr+>s)NYBc*+#j(0$!8y@@Dzeahm_$Jw%nFYFTqSDNr zV>77zo0mGl^Pau6)?>Lpye&-XwltP#ZW2rf%8v&AWov!evr}zS-*0p9tv`wYq)KeE zl{#y(PHSGZg!Je{TDeZQkOH$_7iF?CuAkIg z*iG7$9+W)V>t6`|!?iD>a=-uGcf(!{u@~`#ZsWS*)mi>Y19h8Qe{nU)SnZoQ6Oy|% zI;j1mrZfkY$}2le)HKAfD!5v06l@>t(8^$mbQ^4^E~z6(uc{%YVIo&M|M2cbxf%Bw zP@2t;M>wOS{l$ya`xr=%YV?U;>)W>oP-kb1s|(xveucPate~GuLe^Zz|Ov>=tBaSR~xNv=C+DP>S=09g^F0C?8t~)hw tCv8O2O6gBMo!f5s{673q@|+$P7QJbGpF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-^7j^FlWO00{<3 zL_t(oM~zo!j~nL^-ajBXU#zR-vG>kpS&~a`CAsY7ilj)VdVkT`KE<-6z|LP5AVIxL zlX+%MAu#eG1YXSB=H02!3>B^BP*bguWsGHDj=jI`|Ml#@@BFWO|Ib~_6}6@j|CHm! zO6b@f2tArF$!zN~xAh)<`}R%oY**HsyH=-5-DZnEfBvi(t&Z#sOk3#5axL`A>X5*X zIX(#5H>~e#Wq;)K<&l27M{duip>C3quae#D(CPYwZrweXv!3OVS#MFd)1#@?C$neJ z%pS;DHl3l>U`(UQSnkB52|60h=pYcG^>9K9*P~*gN;6if+33ifa=zeO0H%5M>Xm|z zLn@OW{P^*stTD&llphD(-0}Fsu*i%b$KHzR*>v_Hzx~(=XSmKd4qoetny1GSec1_=KD3i(y4eSMJ(jQURU<KBbK2rU%n{W z?Vzli@qaAUqiLDvb`FGQwgN(Xxr)%@euOYEF9&1v;ll?-&y>Uhcn?-8?1iZmh{_!( z2J5DN+>^E8O#K*`4M!9VhD3{KG*0bQfkL4O<#GkOaqEmOUHXBBa zOqonh_-xany}baLwk7w~!ByhGWWR*)5Jsu~>o*4#L!77ZwU7aZfy+ zlpw@@_#h^{;DZ1G7Ir+Ei$D&$&F+sm-By1Wa~z&r7mBEdDS!FrV>VN2(xas=MdvfRYy`SjXjXPrMpDuo*ckkW_A9&8r9|+HHPyS609{!8Ie*LQK?;ePI zz>hP%F1d~;XT5fZtp0$MYgbPteN4v>MhJqG znJ!MKthT@JLF3IGd;}D02!*-U@lzC!gSx{xJ$v>{nXj(OotH0PD%+QLhfMIY>a}4BiIZnADX__YY8h^Dq zsj5m&-=$`=N!7ASwOUPp2yYY$1#;}6oB@cygVZ;8Pq}&O`=jp+#7}0=he@n0!xn1* z{jfI~O@$&8;OF^tAp#*TjIJqX>*b-u1bDITv~;Sg4Y6Qb@6ek!Z-gJ;nod@vJbdtk z!NjDKqbqbcTajz`33)#q&lqkkfq!E79WKEh1^@>ZfI!W<#viEBz#Wn|9+6|YRLqw+ zE_BX@l-xaB9Z@b@k~HmgZO)(pshq|`kF((Bja#BkTWg8LV{asMF`G+pVU9e9eXI2JuB>4t1hCd<3RGin^9{HVuAHz{l}C@BNLA_& zxwdoFgBGxW<=B!|Krx&d_K5UeSE62Px9IrrNYwh00LyAY{T3BUFu zfIxq^^f!uz{Tjca`?~?LRwk8|)J-Qdw1HRfL91juC2R0(_E8-%*9{-+z>oEC!2Q7e zv!A6qfdD8*!TkdPB0rKdbd}Q-kD?wxGoW8ClV`xO1>x|x&VPjkcVX^YwJ!JYUL@rA z1`x8QY69o8DfbnerqYS&HkaSiy8;|QEoce+23VkUM#H}3sf4dF(h9Uv^1EBC^Neta zXapSky-+avr-!$e4hxIGM^&p;#u= z_YgNH03viWz<>MRW)*2!taz2R8h_fV~ zNHGeA^>HgX@5;W#WoZ^vn@Yp>NOvDD&@MY zk<-$6a+_7i`weQl)f4wXL#%NIisA$9F|URa;ue%<+*SEqWjS9-5P}i?`hfd1bgcl1 z#r#luLI{G6#~V(i0s>Znczw=e+y@lv9sWbZE`S1va(oyuf^&315EN~_$$rNks-ard z01h*H{eSxPcg>**D5L}LVwB0K(A4kg5EP)mXi$wGMStTc@xgQKS^RHEVuG2`^^~{->s*j9 zH`ooZM3pNj?rvy-QF3#CHJJ&77rFG~ES)YhhS#`=a50*2KZu?X16?uxA7I?Oe<9s3 z2H+JPlRq5k1u&2i&>jPD3vj{!j>I_iFz~kw{>OlIkcQD%n*IYI{=N65_Y%GU0000< LMFvhpu0mjf4wsyV diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/firebox_front_off.png b/src/main/resources/assets/resonantinduction/textures/blocks/firebox_front_off.png new file mode 100644 index 0000000000000000000000000000000000000000..38969ce48e691d8177caa1b5111670eef9dde8be GIT binary patch literal 1661 zcmbVNeNfYO7_Km!vN1o{IaKtrARtPcq#tQoTa`8xD-;-10d-($QizbIw80jbcqnd% zOmxmK&N(ZH4o`H5Ize$0-4Lf!#!e)o^!&Ejjo{eQptleNGc_9RoOafZkkV3|g z1|ln?fmHB#?j}kf&&KN_^}W92vCF) zjFaeKokdNiQj4;!WNdb%-k6+vGAu^fFr6CmZIRxL9Wo8WyzS-tCs(_O=qm{C- z6k`TliiTt+lU0J8r_V#6Ejrx`VY6){QC!L(hrt3N0vMucS6str8yiFZ>&8pbHhq?b zgkne=lW8?_=V9_2C3CrZwILUf^F|(JrMN>eq~nY+lP1lq7FUAY7Xd*LauF_*NHii` zDwL^1MF~A8g}6|JVM16MB2=kH zxmvT0HJFX$s9lP)JHnN{k}FqRNdwDR^$e3fS^?3i49nP384I9}MS zJdYM9t<-9g&{!E77|ySpdWn4))*x!JN)xJ4i(GMI8Vr@;p)w7ENieRSz!5I-e{u$K z&Ool>_)oEnZgCapn!YG~ZtvKB?h zyj1{3PcJz5wgt1K?>|&4dG?Iwb$m&ld&~vC?i&c+Qw-fOU#ys%xQ_`tf7t$O)#|UB ztAg)au!(c({n_xDhRO92rz3VQ_E&`k)rob*5W6)1Jb$ot_OX7otk-)-CA~W;Au!Rr z!*qPjnHo?rcjx$L3Z-}AXM3x<&PMI(?#qAg0=nJ3y+0Q~D|4eZZ_Yolc>A?p1%3bM z-UXhO3xgi7EbYmAG)TND*g(Li0$Te%=)j7|V?Zj+&-;1c zJGcC4{iYdr`qoZyFD@-z18@-+FPA$VL{&S<8JPIBbALNl!Wsg z;gw*`P@zXwSZilinJV~ESyD-Mk}ZKsb582?UZ$ScG|h6^w7v>{@aL3Wi8;6Wok6W* ziaIiE#f^2%@L(i!E^%ms&u_V(qSH^6`w`Bd{`i1<{w9yVz^1AIFFs72lQv$S>!gYU zp{-5Jzs$-lp)uc?PaC`YPDt~*$vRlE@m#9-$IOZK+IPJxZgzE+Z@V--=xSd}cl%J? zV4Gz5wjHl|O|{jK3HoU1T|U;ftoGEM<`uK{yxy|pkmTv)O@#H~F?~Djq%ZAHzTLN~ z;y}(%1Go2W@nLIf{g`A^5YZDJ_lb{lv47wDjWd{QSj)!i<%%O^?Grqf{*g3hEbmD| V>_zJ1Gob5-pbd@0kEm9z`v(_*f=2)V literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/firebox_front_on.png b/src/main/resources/assets/resonantinduction/textures/blocks/firebox_front_on.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab61bf93b6c3dc669b01d7f90846a9dec861f0c GIT binary patch literal 1842 zcmbVNc~BE~6i%yFN8_M?6jXE@k>Wv;&7DAkNj4EwFaj+R#mTZ+U<=8H&0@mkITgW* z7Hg`Gii#CaDxL^b5uylE@qj|5U_DXs8ZQ(Bbc0~~hvOgJ+1=l<@B6;@-tWEHY)#nA zk;BIhr_pF5LxQ1jY6P6mu+OQt!}DvUtivl4AI35j0VSQ?H z4H`(J4T{4ewWKz5js(FCOxS6|v>Hqlnnnu@vYKEd5ha0GG#)cb8Bfd3FaS(1Wkm5q z*`X#Snt%nT5oknOSR|5`h=}!!AQ=#7l~4o*l!O7RA<1Z#Sfz|UUI{gKZnGFbp9z^L zWxRJv8>#`6IDrCuCf6TfgCHOfFhL$)AONQW95%>dv8h|&5Aq~@frKLj`Y#5hM(E=t z;gGsti&{w;2_$Kfuviw0g=yh3aUz}tip63l2Z!TNS@@e%jU;UKH<~96FhHmoAutn( z;YPs82*=_nq?AE<`aT4MDKzv0vC-V0C@N(vD{NwcOg774aK_bVZ6?Fff8F?~wK+1? zgtEd>GoC^q)Oo~B8URzd`?QeLkn%<{m%yk)fs-H{Nim>CG6a$`s4q-Crk8LbF`uvI zLPCyMsp5j5TmeBMp^&GPb3_UeM=-$gF)U9k;wnHnU&&PqKv2aMaaE8)!H0xwl~Tm# zs0OehMl%T;5p+NoqjdYRyiZ~!N&6wAOCRe{dwhtj7OADRa>QXNB3twB$e?Vvg?HUyGKTCbOX8-u&b-CI#x zj9-Io&y483?yKFui#_OaUgjD4u*v0lqkU%Y>dbw;6%%*3_^KagMZc4en{Jq=T+lqE zw#a;G)1h-hHybbO!QD%BQf_9{c)Hu4S#v zN8>G}-d#Ey(lXYAfS*>(Y)YxSy2=5jwQhH8xuo~Wg$i8fhSmFo`M9obJ>pZ^eHv={ zqA+2w$HkoWZnpvqg2}n(Z@E_8JY4^(Vfh+;*`(OmVic$ z-|h!nI!eF)b8C~!GcxSWJG-wg ztU1X}@Xs%uS}b4lcvCuXCKLTFIW6 zH+4OC3uIArzgfq0SVT-!ysmiBs$F|?ceNDSlE(;ri#yllS9srRuVOsv_KUsYs4hHz zxAKleG2z67A9A_^&;FFvT)nwwrsL*4H*NGg&!#|#%>2w_(vp$%{VQeD>e}d6VjuBO zXI91ky*(d^_YSDvF&!Iva8GBxY=d^`i-oripj*==S<#UTqw`7}v6&U|cPHO#tA)3@ z?LP53ch(5NMceC&akLfNyJWeSU$*V?Fr@d)Zt1$3r(Ihf7pEVZ@$6a6&l$rzcsGzC zNZ|Mj=^Ex3$C66a_v;AkFZ)@`nXdSwTvr#Dj-F#=S7miUeFLv6PhGHF6|=Y4(D^y6 zscTQJ^?g47RqzCJC4F2^%N@-X-++>!m}Nza4wzrBtn38oYlL>o;oF0EG1fI+(YtVE z;92I;bJvEh(`Gb0g&I5l==gE%7_@vvIqU_?rt}(JZWp9U*9TnqGG|Ho{tfe5kLX@S zJ$!N`Yt;C%y16U6cRZAPzgFdJZclre+$}`z)0d23)7IJ+I(!4@&YvJHL=^@VDRe9T E0lD+zFaQ7m literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/firebox_side_off.png b/src/main/resources/assets/resonantinduction/textures/blocks/firebox_side_off.png index 95afb03cc1e21ff386bfd161e203a1a75a351f6d..58fe4ec76c6b89f0d0b4d6024a4a1c4aa9f947ed 100644 GIT binary patch literal 2135 zcmbVNX;f2Z8qPo&5rI;w5&YP{+N62z29=5=Xsa!ea}7P z-4S~40YGi!DaX<+R10qBcDtxY42ZxD- zRCpkPgXYK>K%~ecUJe|N_u>lTj|<2`xGN3jqM?8SVnE4pn=6AKm2#LaJ zU4aQG1agr~DUwQH21S0DG*(H4gPy(%K`i5N-U~|CLk1w|4aHk70uO~B&6Ema#ehWV$)v); zFG!(CNWn451Ogk!bjFeyEF1D`ZbWA?!I?#7u$lCAuBSwyT`q+o2lz^S|%VDsQ@8cE)~Px=9eP+fPFNYjbY&3*eo^!XNa4` zCK1U@7MYD95lCP?!PmIL|0icC&>57WIR2+t*0;b4G)&)@KDc<_Jb(o37&+J)vt#oc zAdrtzJ(+Z_X6PRQJ(+gS<~uv%qDtxpRbB~cuU1|6s=Vwz_di0NWR>>iTn^8&KT*SF zrITQZe{7<64`$m;h8)-^cxKY^*S#3kUU__*wcFH+CEvrh6guPAw;7Oi`7`Si^n91? z56}bW9k8~~ZC8pO>Sk^aT}rI=9^KWk6MvwmVsq|4i`=b}mOYx9T?@Q|Mu-IB-zv;< zb~vaD^uY9|(;b;2+ec%=4X)KucO`fSrBy_RC?#JD#ddW4GS*Hym(yn2(|hcc zKuoK(epJY6qB&0gBtLCrom`?@27ZNB?(6HONa7r5$9}CcoR_;%yQ@IP+y^ zp&rwHy`jU`)aj=rQCj81$PXB<5ltV80N$Dnf>PuYT{#_xAa2;<=`6{%+Z>Iv~AS(mGRi z-n*0M`B_DMR!N?HzxcqX+fp*LTW*bQw4=G;%iEUn0tm2=IN4k2nb7p=3q=S2vK6}t z0j;|y2|quSIMp`Gp^ALjj+=Dc)HXhD4F4$cB>qBG5-rVq(I-@VWXsN^Q)#tK9#Vhm zEf7(*GjofhbA6jie~#3mWVC}-L9hCj?r)49%0F|qv~t+$@NN5At$Dekp>_Tor5ei5 z+gcdP?oGay+-1Bnx~(kB^y_eBdaR5F7yr$TO^KClCRJ0t(5^? z(50v0=qEM$q7yt6Nha<(76ck_x_`M#1AYnw%L zdd4EpVxll^W~Jg!V|t!^kejP`_GRjr{_Gv`p>Z^B_3`DG2dTQR`hHHD3JyrQ`n@VM zI#o{F>K_yO$+?4t!_M2M9LEPv?5e^eYAwn02%r(Urx$u7tJ5k!V?#fBre#DDYTO=X zvm+1pD!nc+%0%B<@o{rOecGS*XN_e0Y{}tV?QSb-nRyz7|9s(Tq2o){nbWtPhir~o z48Zj~3wFNu;}!k=+4>yTXBxZ67mYEb%ln%+yqh<6&cveTQe(Ow6B}6_J2WV43lBND za>_>ujE(o_Cr{qs$3jglv&%kzR&hSP{ksDADhSIb_g9?6vu;HsRMI|*e4 z>iFK)$^}{IgIm$kh^pzv#jZ_xJkoB7#L!a* ymHS?e1O7iDxig8K`w}lu+w`wr4F9S#GKYLub$PK@JH6lVtM_DiF|WCWCjACd+H;LN@>a1j|W8K~z{r#h2SoBS#R1c?M2GNJwzQJ!cWZ8GjpNFyOI0HsJHwfDN`e zc(rU$q`X1iDi=xaqDa~7qg47Y?>}w>POidUlxqIz>aMSQs(WUJwzjt9TbcqS5(%kR zs}c@})zay-TwGk}btaRMa=9$|d|t25&(Eb^uS=m&kW?xq$z)Qp*{ry(tJmmTDwVW< zJRaA0#>HYW^?%40i9~t;7@S1!Wsc*hR{#*hM}oWWV#sxNcGd&Hk`kcc`qgU5BWdKr z-gPqbVnXXTox0G~2E-r*fBf<*9Zd&zDJQ79A-i0@5nEYWA1}z+>?MTCJ7` zz@Y!biUtB6xpKK&4*&&40FcrH<|=(+d`KQjG5Ju5%70BMEDzPVB#w9GbpLzFxd-yo zT~+9JSe*!%m3x?-{tdPzv_}cH`4OaRDXHhRQ=)Mq1T4%kF})KQekdvGeNPVjsG+! z_}!cL-8ZhCKz}R&uCA_n0Co{BE-uRQ^0NAcg$0?Ln^S{^EiEnSeR#G()9icm^YfnP zJpyp+zbZlmkBp4S@bIwA&d$ElD=RCWo`0E{QKJSRVyMyA);2)jLBtmW8WDtG7&^by zmyJvNZwv&Vk-Z*aa9H8&hI* z#*A%^B-9vmdV1Q^h(*jGtpH{_A{RbPJOCCU&S?aVkB{qfBY>>|K#k;ppyrIJ34dU> z6QJ)Ls8lL_0231vYD_ptBRPzk0MrDq+X>M3F5t0}g*H~6w z!&Afa9zCzw54+&a72u(OMtlRn<2{deK0ZF4Zc zFd_N@?25r?i^Ksugy;PoRUngK`5Fv1ULr@?7>uiXyqqtHgb^SV4iigh;8e|R5D*J# z;BJyP-doOq!^JyP3fN!e6ChAU3Y>+YyBpvdPelbJFv17oB~el(HJ%23(50et%{C4M zK0uI28u-yEp7&0GAydEr2}^Vk;2{Vgld+H^iA;v<0RkQ(;PB{8c7PnIBr=uY1bn(c z)S5ylqWUq}pKPHk8W@fsaw-lN7Z-<(BVuKWFdXFU?5xos5FAj1gEB#i@Z%k%O6z3> zCae@F#BxL|lL8t=eyA)4p@FEUA48DHy}dsROO>Azg{BM_&zIvMEFLG3XyW>SRw91z zf8F>ZS{aZahjD(eQWm2Spywg7UM8ct`(r~IAnFa(S0P3Zg&)O~31TF$6yY*yAo>L> z6bq?DrZb7eCNiA}&I}e2f;{LNq0&?yA+vc{LVEVdJbCo|~`BAX0BEFzuA zqR>fnIvG!-<2~@qWiD5$MEFtxylhvD+Wo}!_(Lw0p@8{_Oc5ZHMJ-pr&TttbQ-;gr z0K=aQ*zFceg|ay1R?YEzjFt&2#IdlDt&mB85Ba5vzhEDaXG07}I-A925H)dA*c7re zljY2YC?pD6Pv9r6@c+pf4s`~nDUSasmgOz90yWdmrH?K?HxDdDJ4S)FhBj%*27}S@ z;xat~;`?d?TTg9dt*IOY&&IaOY#%S~}k_0~t4(UsvUXcvqW7exLm+ zzgd|L^9ts8&R=+FF**)33p0cmX=WpCKHgrjQKerxtkMQQX9(H-x-OzoF4E}<-S^&8!fvy zdN&cVEv_tnlT{zw(NFXYo+-FHJ;^;VCcC5}_h&Vh^_OX%OX-yjiKL@Xe~_+dIdd*x zU@R(~r_6DCZ>`>voG^HMZQIJpxnyqb#et>Sl)S~L5gU%;-J$u8r*qRW@8xN!`-3Yd zSZ0E7d%ogv+7uhs4#rW9G?!X&EK@tob!)uG{kDn>Ot1)}OZ=?W?>y8yeI+Z$EIg z)Z%!k=y-5uiGC0{m$+KDyV1h-(QHt_YhIUQzm+^YVg^^od1Ld?px_yM&-s;>fX}dL z3Ckm7k`@uo@hRWGI%&buCIP#tSZtATu%}M4YUN0ePj0J?x@fe;aG|Bzbfx;|W}Aq= z9`zryht>-=O-m=@C4CY4j;SUKBADiR@a?UPHAVY}i&>Vulf9+oCF^cHN-4dQee`Xk z;T1C_cBFGkyccoM*Ku)a4Rlbl+8W1?iG5kn+l0+D-?EOR6BOP1h~2K$?3zOxA0E_8 z{`T>W3dpGJCU>vL%YEU}uZQg0gBIFHdyAyh4V>Iv7k2a=ZeMfKcxvQZgyFh%V!(Fo zeyg}`=L)seM-n>I$$1$Wp;5#o(6#zP%KbgXIvuT!+e@j{&-(Sn?q?r+(gIRjueMF@ z-xR+2d7ARqbC2(I{h3qOczvJlL(bQ2enP$9`jQo`3k?mHiSpSFD--r)UW8YLS-5uc zCTvbf{`j%u3u~*7ND4$HUDwp5l|MBX4Hge-o!YazuJIcq!>oSq6ZMSm#@XYSOeFR> zx>cZwYNMTf1TS!$WIyYAnhGQ)Acman&Jxvgl9R|wvm$}>sSj(s>p+52Oq!o-`0}> l615n~;`F7a$#=39t1!{mRxvklV}domD_oWjvyvWiH;LN@>a1rSL@K~z{r#g|D_8&?p=`6ytkz(q{i>_srEkbe*on?}+|0`0p12_&&4 zfJrJov_{PJ3C9C zQy3r;iBPFjBER3yl1LI8 za+2HJZZ{n%$Mw9XV05+@7Z+(^VS!vO7wzYQbX1Jeu>x3GS)u9aX>vN9+{ZpAH0G1M zV*ng8=zoCM=p-70-@U!0KmYiJJRT3{z|mHO4wNH%+uYn7ot2U*4+7LsaOf*-Q&Uq6 zhdD*Vmz=y?Td=Dp5skqwySiAg;&1nobXrZR1Y9Gp*K4-H;ZaT{XhLmIS!XzDo0*xR zy{yJ_8rlFreJ}w~U<6<<14=_9{O|t$jo$wCD}RUdyqcgBmE{$c^**1^Y{T*3*H8XO#CfejfQ9p(4X(gs_^ z{%&Y!$kg&q0OaW3N-vhed8l;|{9+t}& z!_=(yG9da~|2RNDe`Ab=ef7g*YJTl#0ca^i@?k(DI@tkW+X1kWP5|g@2N0lk0QiKP z077#Y0IaGLfUH;m1gITAOC7K(;cWn{_+tRw-Q6Yt`q}}+ZUIoo5x#ISF##kAQGch= z>7u`10T_chr{xWQd##?EvZpPy~BL~a}=T;($$=z;Y+?h43Nv^*tkz= o`88`a8u$Kl+7f}!C$sbq=M#gZUqE*C{{R3007*qoM6N<$f~7Bs*#H0l diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/firebox_top_off.png b/src/main/resources/assets/resonantinduction/textures/blocks/firebox_top_off.png index 1197fd466792ced2f329f1e454b168ac3400273a..d9ccf6bb879787834e6cb36deb8bd1ecd9c07067 100644 GIT binary patch literal 2146 zcmbVNX;c&E8jhGEC?Zm;z-=X@lv0rF2}uAUWRY0IzJtJ!43I)HAsI*rt0=1!DPFtS z9&as*fGCSf#p^CDqD4?=a3N96qMV32J@!lVv{#mLK zP1d7OsEvFVjwdo=G>?uJ@?JE0T!ak9FxMaUf+AogAO}$_5flz$_!1xz^aKG>LhNqiw3 z1Tr=lC3aEEK`*tdw@@7|WQeeiJ2CbuCPE+qVF06GrPl>_!QFB6$-w((fZYZExy z0sBUjzrY>ChU6fIiX+M#B*)R2q%A14AMZNq7Qs(`<+oCY8n{*<#*aSj3xL z6v6c5@ZS1DRu0%G7?v^dc%@Q_Q<8CzJQ7c2Fc=yR63GU!uu&vPVL)XgReZY2zyTFP zxmX5^At^?~2!um%umcuR`X&U4OdxniELFTs6p}K$3XtK6I09ZG(Zu!IS^;~4|CRAx zYlU}$48(ha3Mfu4MCuXo=_(k>-QPRX7$RzzZgMeF6d;BJ3F9Q76y|dru*esjNGxKK zISeY5N9Nd)7;G+?NMt#4ICNWE3Y$fuJJU(DRgU*zxg-vYO{DSIWFD1BXfs4QFCRV-hsfB~rxT=gqP{JzC<{}#(+%RvB!+IX(26^ z<8eD|>G9QyyozCg)5P#-Y#X54m%Mbt?)q42iu26P%1mKFlWETK9=_P zmIF2qtJj8%yuik0?isFO8O$UWHliZ#EXeCK=lQ?sbiqX#jmPZUfwt<@-k2X8*&|0w zEZ6%V0S_Jpk{7P(+Eq82Y0*YL2{xW&A1tu^eB)i6oXuvH1g(eRl`Ui}w>kAJ>_a(Y z;(xl+>;Qc`N;@9->*`a}mE(?=%qwrro}Slh@NkT8TbX~6MX>6h-IqBqLKH2o2y=fq zRq&Ji&`7C40Vb`nddD!mW`y?RmYvV_jBVT7H^kftNl3bw^{Ta%G3MqLnl?8zwd-bR zNC=@h7Js7p{N|VV@2q3P?5GA7X$12*Ymt@Vtq)z+RS{x-U01RDa~~Z_e3{W_`YtnQ ze8{)0X;=Q$G+#!3)ZjRN&(ySXa45W3F>vwU3;c1N$&ry0H^@d8g9nv_?2l)Qo>sfi zO$uzSeYaY)gWlcp>q=`2@C2Fs*BsrY^bBgOVKkZtG7& z%arl)Z6^3~>s0-*-@EFRr+Te*Zsu-*PWn-(HT#_cYi|v?9yT4kQd6wmq7F9ecwj|$ zSICS%dM@g0_iw1HyQcQqZ}GCP&n??0`kB=@>)TOx{Ur4MqereyPjBB>VLJYRHE`EA z(Yvd!t1qYC*TV-L+NVqH`NPDa6&rnSH!ydhIbQ|1zM5ZN)=%h(lj(VuE#(3*}; zzi0dH^2}YqKMT{(2XroP`yi^PSy^|Yh)dtc?Ks~4!J=YsQ@6!~F#97$8%oDx+Nvu2 zzTDYb?A4ZniwuZbyE9McNjD|qf{WA~IPAW&r7U6*mzV0*y|w#=dzq&^d3r;ON}WmM zXBIGDpp*E=7YX?ud(Dr!Rh8?NcU-9z*|RE~Vn;{vD0>M3s?!SJe!N>EI_}TkVbDb% z@cbIuA_yvG(n^9HL#;iF{BF$tMenRD=-1XxO7eelu?I>D{m08!`I{PYwf^{F$F7>> zL5{*da8F2O`h-ozKOgQsnKC%b$uKT5b&U(-qHJ?By!x-FE^HJEKD zt174&vd=H9dUjyEwBLOFsGj@XUu)sovABs-B75mCCDQXyitW<;LUB&dp90=EJhqRZ6u2DA~%=c_ZuU4eNUG=F_Q*OhbDIV}A@ DH;LN@>a1;|N6K~z{r#g|!ATUQLn`%$uQlguP9-KK3w!G8w4UT@bnc*Qo}V&e@A zgfx>*zPGBME&|*U?90%&ZyC7$l>9kt((oJ z93LOc(b18u4-O7wGMPxH(~)|;F11=sTCJ9ZVQ6d4_If=#UoMwT-sMWAl5y-63WZw$ zD0f8Pi}Lxraeo5DBs#dGF0B|Whk=VCGC`=?0W(;z7@{KiwF*ver7+Dna8+T(60PH(Z_OV4+ zZU8J63;U5uB_m~t?QcR6*eLexcKa3p2?Y;=Y?L4>+>4Qc|XkoXpxeS#(QwcF_xEuG9%*Ujdj-r?&v80C=I0 zw|Es(F;g(AXKWur(OL~JdU*vCN|@4|`TKVR0)R!kAd5~(d0y7T^2RxIp_5yOVH5(- zI|D$O!GBAof`%cbXd?jZ-Me>B9zJ|%>(fC+)}xA?_N&q;#0`Az zn16{|2rv$ag@QR%rO3Q^@j{+Fc_L4rJ~iXG8N%g!L*`s_1>@)M>uOkyX{DeO}K3o(4oskeY04fa`55-0j zlBEF1tFY(5xS6%KyV72djK}@u%YT;!0ON!JZ}{ymm>K;D0LHlhI>`Y>Gcp@}px^J? z570ru-nRDqLz{$0<%CVWMLUqIVZ-Dg+>K$#6AxNw*sjKh2H@n{1EYG{bkgLi)r!e& z%mQzVJRVphj0a}d^8i|O0{J|xX-Cv1qr=7bon~ri-V3Y?ew;+^wS5J2rhly&o!pu? zBl~z7ZUFoTO@b`NUGxCCz10{T#D9I~&!24{nrbyL1!p>3R@!Rm5noQb^6#pnUZ_Y<0bDe- z|EuRN_08bt7)DbK13IZTe+zDez;nQ#WDE`lNN)eFR5R~P$$NbROmwWym3R*fYDxKc z(v&ajo|arF-Ev$lLX`42amoRXA8 R)jP9F_Ohbh*GlnrUwwMLUHYUbZGC0GOShdCp09SBG^98VVo~ zXq}TIjwl(y(no%U^7sLzzz)o~ZFhB$-L6Kq2fE5TN zOQn&>T(Zj^OdykPLXl!j_;i+p4FXx&@>!I?LjV^X00h$*){v>{dI*>nWDW5)cY(RE zus{gSQNRW~1+Jt(!J$BO5X9C7Y{kb&1n2;l0_M|085|7X8uCpSBbiILp%Cyl2=|aR z z9YnkHeuXEX=TWrYL)qDRNokms~8t0*!+su?PYZ4#y+x zkfvxn$_xpY&|zp4Y?8VK4$5Yi3Wt6R-$r+$aJH ziN@j41USkZC8;OK4{p%^lQXEq8K|^4{-;=$wL}801QdTuqCbGTbBC} z1X?xfgtH^@`^&s6lYRGY$bMhhI~DGDQO`9(m#(I=MhQ>T*Uxoyb|_h6CQsajRnlJN zNLq^FflyyZr#{urJHd%1?VttAaJ)7CqzIzBHx1`5x~kq+s#0%rgd3bK$mE(eN=rZPI7I z8*-PgkvAoZTVDihC?b=|F)9I`hG%Yi7kX_KwG@2T4k^x4DI#a2AJeHqJs^zO2Aq-? zuSmGRLos5(=LXe(NHJeoyr#0;%kGnFy_=0?dyFc>sy|*J-Y1hZU$R$2NjbYKUs>g{ z!5*1$n6oamkExA%xQSN!T-I(-5wX9SdU1%5l=xl zu4l9jp+_D}%V?O}U9dLgv~zK{#gvu%#^L4*Rl2V(=!n_d;#7Bf1nz8`E4w)_K8&9w>MfE9f%4W?4`|W1eHG-9OifB576RtPS)0T zZhG*xYBQ`-IU_};LH$UdC)98~PPTBg(Wjqv5HVViQMZ0T2pC;iaIf4IFE}=m%!}AH zjeVTf-T%A$^8=L?aXB}#eLb<|i-@PuAKzs>dfhPPoN^=6=kUNqi+W29SbP7Sxq&Ba zG&?gnx=wA4gK>?XMcW}2n>V3hdhe=cQ!+|^Q}a68-4UF?kEu4qrFFK;sX4B_WDWv{ zsE}HTLn@-_^!k|wjQZC_x6moM;#p$6O;z;*?RecjhG%-~k?L3HC)Hy#wi}EWdKLOy zk8O2)b0(|UJ^;Dok6fvFJPFC%q-JFH+JnTO3yEDnuKqG{X_bDGi-rB$23b9ARZn7Ir?J5V>7Vp1K{gKQ!g=>Ugsr zDoVr6`9Y1GO*>g0YNSwK;hLr+`0MTr$IT-F7x{3;p~!6EX=hZL(HfmcV~NG0k zp>ZfnQ7+@JOwPnaaIe?FGC@|=2cM$BiFVEU5}gA%0Ea!&E(D;6nP~)PIm=Q`|_8el7{Q`pqV_hb5)lCl$P8pb3YCb zvg8i7x17WI82%C1WK+{xwb=On(Cq5kMcJUQuH~P{PCToUB57*)Y|44 z8}({92K8FwQrW2#C!t{nG~H(k`Y}+z>DNcZhg*w}oqF-JV4Ji=sY|;D8)6XPTb3Jc zD%DXh_lgjiZnK2g?FR09%G?CVy)8SuFU`GyHOnUvE{WRfHlEMFw=|r9zULa;p6Z{K o5G)+gv;AV7{&jv#M`kr>z+bKU_3CIF>3@_H-W7M<-v8Kt0L9oJ`~Uy| delta 1847 zcmV-72gvxe6T1$O8Gi-<0047(dh`GQ00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z000SaNLh0L01m?d01m?e$8V@)0000QbVXQnQ*UN;cVTj608n9RZgehAMN}YmGcGkQ zF)>H;LN@>a2C7L!K~z{r#aG*JlVun;Vc<@TDRMBVe*;&Zk$=I~ZtG$FdTzHK*0o*R zZSA_YTgMnDg90~b%; z_j})`&+~hqb06yK>%)U21rUqHP%IYV_xqJnsT9V>#&n-fr!hG>iHV5`-H(orqFgQ` zo6RDbOd^p;V1Imk9Fa&w_xx=>pV!|S3_xXG()9dx>x!-T8u6R7Y z0e~ju>T(V1k0{XPa;Y+sF(>c1Cs7$!@*2hDrC@&3+<#O^06aH9c}`t)%Q}Est)?Fy zkJ}dJ>c1ysgSCC1$z(PFFrc_vmd_3lVa`UJC?!0YPWfc@Vj&;Kp+X3=c|R74QN%|2 zVGX{BOk@}*8{^1_-KeDesAl}A<-+>gT0Vj~p=`u)7l2BovH^e@z%>{QsJ}uUhYFZV zj_5gwf`6K#xRwtHmsiJ61XD-Z&xWrC<>!?Fg@EJa&>M_H7~S4SeY3ryT80Hzt& za5yM#@CaHP0M9<(w+B~hUAmty#?YLKVZIPYD(FxEgMH5`fQ4)vbK@4u0)V`~FLmJN zYnyf7$kDAf0F!ZMy~_p6XPRqv!Zy`KR}cQIwtwsXL^X}&$~a~-bc+Wu-vHv)0O~n; zeL5)avgCI*fYqZN_$jze_tk7bWwKtxVzzadNn8~G3k+8Vp{AHHS0_TKh(CEws^lyj ztE6yvDuHs^PNh4kkrPuVEzIXbXclZUljcjKBFnEbX@O)iq36sht_r~T!{mI>?Ld7p zs(*pVI3SQ_DU72cjC`aY=6iAN^=|z4=_c&myLbJ(S%_jmXucR%aV9B>MVVv@Wm0)G8d09PxqrD00HzR8IV)gTn5mpZOVlSLXozXabM15| z&Ukm@Yik$&dZ!J4H`{P)aWhsw=)lUUZslRhQhCHX0LM$uAQ$(jOcpE4vfVd5J-q?I z1fj#>fYa$jWDNk7Pe~nUh&g$`a=HswXS&ui(PF3s0UY;w&II}yOp<)@PA?G zz;g_5^3Se-*4S+J~cM}6Gg~*^98XD3%5b`)xIsMPq6AbTHU+u(=ciVCE z{Vlk0qyyLA>clUz9XNMjC(aD)!hh9x7cRseRo-N17yM{|VCn$t4DVa&fT@IRm8KUE0Ie{S_A7vz6ch6Nar|MNbw7^pkAL@KMS$GM zwBxIR9r*QFJASP9D$k+mm}HI&E&_m+kuER*m}%rOu4oBDMkxUVgxSQvblRt7w;{Ej zJm(i4!zbP+aW1nHmy+A?U9K0OjqSl|wi6$}@RSXJJ)>X)pmIKdG8qGG&E#pR1BF6C zKZuTG4fRXSAJa}a5p`+TtAAxIESFNsM>-$hj!TIiTz+LM&SiJ5pV!1~%hO{DV0O&{ zQ%SGNWRZ)U17p2WEid)!nX@Ayb0n`w4)69j0 z1g)%#Yc<0JCHKY!Q&UsxDQ_kt1z?H-ry&Lh1BOEg&rG@HzCO-jggxK(>#=GIOXZ~Q z3$a1W$vm)BvZMUYpfo|qlAli77N9P!3cy5UI2_Vhjg5nTAK3S_o|7t)4eWwdX)X;Z zwX6{*=W}?ukrgY%kbf5dhtg92#d1qBGnn788CAp$l*w!}vtWx0ObnQjjE#d0#6P?r z@sR^6WJYFyvb5DXAU48OUgx%i#nwh%hV(}-;@Acl3s9FW(VGBArhH< zs2RyjK~ezbgY$qHNbUvQ3BbgH0x)LbSZ?CrUXSJG(F(v6g)j&9$0V1_>Bs#fK7^|R lsMqWF{m*HO1s)vr;eTHd_0Ro8ffoP(002ovPDHLkV1lusUuOUS diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/material_steel.png b/src/main/resources/assets/resonantinduction/textures/blocks/material_steel.png index fc5bb2d53c45c597880bccbe05e3056cad7593cf..269acd62d9e4a8ae212116d150f4b7730a9b8da4 100644 GIT binary patch literal 1367 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFsEgPM3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpk{1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f0vFOH)%f zV;6HHOJ`SOLqkU=7Z(e2a}#GrBMT=BBQuy8*z_72x|%rxp|i0YFeY4$9Stm8ER38j zfFcGKMn;w}y`Fi+C5d^-sW5vpf%Zc6n&Q=K=Gku_A^g)RODY3wWfGH5fgeQF<2cCIS^ME;~2$(hc z4x4^pU|?+bba4!+xOFA$Vpo%c$kiy*OB_`bIo@(t2`)PSac$ih`PCwwhXfo=Hhw!4 z*>+QMb!|qAE&q2u@x8|BHpOnWyYFVrDzlrf$;Zar_4wnAqZcz=3N2)Ua&CwH=Dl*+ zB=!9#2iG-qGVz~(&IyueTazNe=6ZUQ)%Ci)asO{vbuEgM5OH-}nJE=^Xot?}exC*N z94Dzv(VO0Vz?rQ?l{xp9Gnb&x?c3p_HWUk$QoAaIi{KOD}+}mmC^Xh~4-L3ky d`=3|>L*d6G;ajfWxdAHbJYD@<);T3K0RU(B^YZ`z delta 2935 zcmV--3yAdB3jP+5B!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-^7j^FlWO01E9% zL_t(YOD$ISbKB+_=HJq5ua|3^#!2iriF>uriQ^^5$+dq&`+q~O*Xz}FWNk{aB-LO1Sd#>-~b73fD7DvFOi}|QPcf=3GO@G_u+u|dB^j-FBqL&FXk2(X69#S z=I7>?mU;*JMqj_0o|{=*UfO)Sx%GByjlIfZO%4t9kB$w`&d+S`Z0|!5kI&!P-DR`a zSToau!_3+F*?&pa`0xnx&E%W4jSZfFzsg>jnVW)yI}Fw=>*g0X{`Rzk^81_~%1Gcw zv))14Jbo&kO4RDL)3ej7_rG3OSC{ScR;zu|JZ>H~Yez?oqvQJ7*~#(o;pu7X@UU{& zC}lGNi$(qUXP3>aDqs!x@yi~SWXf&HAr>DP~ zfB*jS^1O9=a&Xva93B))*>WY<0$8mkKx#B9^+qM1k2vgF4Jzum|IN5RNBYKCg`=HF^~P0AO~wopd-@C>PtO zrx%x(zW|(HoF2E1%GGivmkfq|iDV?5jaRD0Mx&a|CbHRBHW#I7yG9G+I6@HGot-tS zO~+VRUi$j0FMsTKq&J%|T(3772#3W^Ig{CJrGHjCZk>Ga9e96r1+q~nRkcfA_B>Wo588Hh+BbSh(|6Z^BVMhFfre z;R^~>{r$sx+bi>6!&q2Zart}}C#eGf1`MzWC(MCJD4omK4(ey;XYI4I)=8^S$j|`~ zNjdzqCmg1e$!IuA$KsJtm=1(!ub&D>XwqZVVhXp{Nm4es0v5x9cp}7@Sy*)WXtfU0 z==EBIUZX=D6iJ7IxkA2q)I2_E9UUL%^M4tipEO&HB;}06!-ZlFtVAl7E9QdX0OfW> zVxd6TYc!!o9HoO^rwbqro5P|T=zc_;vo$!7uk4jPSe zrR?^&aI?;6!osm|{jgp?JZK&tr822hI_37dJw7U)h>{+g7E?M%dn%IzkY8N??0?6O zhosvK09L+#{BUn$O`%pvlyVF=INf9*9LnYa?JC*)2OkYatyZV9I*44c0Az7^)I6v+ zve~r9=hdJpf57K*J4}R5XGFb0x>PBFIz4@SpUYkZiD$f?m{jZaN)(kM3Rof0n{fa@ zhXUDr7AQFo3h0fPLJ8{(8ehO)u76gJTE`Vo?n*fr3YZA97Npc=HxULzEw{PsnPL$H z7m0`5KBpR$+8ii@IWiPl5}_QCf#;;pLwa2PAngqW|NivJ*5Wiy zXcz*K=!49YiBu+?FBJ-<0%!)MYPnbeEg=(2Mu3!xOl=G@OkavpxHW(ry^z>7EAdU{e#T@!Ty1vf$qMp&VTNopLaeR80;H+ zJ=VwUV-7P%UylKy%q-0P=h?r1`qw`emM8xC(@!sYd%F93`Z)z51Vfd-f$_ff(Y81dvqB7YoI58LUu<6>@M?Xw)JZ4El}PW+$9v zG!bWjLb+)#;1=*2oHIbcwMwO4w~>?-Q96CzNH+J5$6Z)vZEY{mA#>NjfIuwV=5h8V zAfb>z0z)#XOn5|= zZXgJMBudedVx1)#Oy;tgQmI-8hh@F#((YhJ&2EBDDI@hYHW6qb??q! zHs+_K2=t=2ujBr`os|VHw9gZXV3k^Lbt$xZ34*{1CFnXf(rtIs`N}~$musJ$GUDlU zG?mVmE3I}L{5@P;y${CYdqM$EC_uDY7}2b4ZO$xAj+g10b5j%3uSdsU_AtBmpq=O4-FqStPb}g>kW_=|2!~RKOVw%#qCyS0%NGE1 zE)Y!wBauq28ib)=L@kyh3KX+aUb{Eo2GfW3y8}Lln_?IU zi;eU&+h<3o7p_2XeS3XzZE=UsU1qP2Pfv}{utvv621f_Jy?twQp0%_0?nVE=)5j0F z8-Ht3jShEut)8ISMTwOvDFRZY#mqLN)uA()O*RXn)AGe)1|*RJJ^_Gusm2rU&#%s{ zZnBrxS0-ntUQbPqym>V^GT1ZF{k-e>^RE9buP+abz7j}fBBk1B_c-a8Hxg4B%nDQw z$q)oHC^3Uji2#1XN;x3$TMn0j6E@Ih!++VL62n$E*A`Y6IRf7F{OstPvGHlv%U7cV zF9$n&I-k9G_TSED%WI1O09K(Ilhx*pMluCYB!QYN5*5Z5OJy1ioGJ9Y2cK-Iazq#}EO@E=7 z-#;?;`St5RbaZ&*g?PT`jwI!%o-33{5RE`0-{S7^#Uh{y4z$0-X7BR&41<|~5!IeZ zJh!~CvbiqPsQF^a#4KxKW@>JAg|)cQ!|d%F>bZUEOZM!9!HkYfOabeXJx-?9jOL02 zMZ*ZXCz1f)x47I*4u`WZkfG?t?r_dBdyOv?F%p>^wN hO%A)2B;(1{{{fb^?X=x04Kx4%002ovPDHLkV1k;zlP&-N diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/material_steel_dark.png b/src/main/resources/assets/resonantinduction/textures/blocks/material_steel_dark.png index f84e6fa0ffe0ba188a7edccc88a336598da7ec32..c2ac4beb7a47f3c20b11b2858d6b3c051a647209 100644 GIT binary patch literal 1364 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1SJ1Ryj={WBuiW)N`mv#O3D+9QW+dm@{>{( zJaZG%Q-e|yQz{EjrrIztFsEgPM3hAM`dB6B=jtVb)aX^@765fKFxc2v6eK2Rr0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWv2L<~p`n7AnVzAE zshOFfj)IYap^?4;5Si&3npl~dSs9rtK!Fm_wxX0Ys~{IQs9ivwtx`rwNr9EVetCJh zUb(Seeo?xx^|#0uTKVr7^KE~&-IMVSR9nfZANAQKal@=Hr> zm4GgVcpk{1iHq`zbF$JDTz5Q`N^fZsd*)yF1AWQ8NHOu6f0vFOH)%f zV;6HHOJ`SOLqkU=7Z(e2a}#GrBMT=BBQuy8*z}rO7#o@y7&ti_y8(5&8atVq8@rmA zxLTMSIvN?eTEO&r<`tJD<|U`X?9Bw)3)Sn0SFe?GQEFmIeo;t%ehw@J1Z3owMb_q;MmHc_I!sc0EXsDQ|YvM*7?@!V%`XA45 z^~%f^u~k-*xMJcvP3Cx};S9g!a}Iv~`DC%9z@OsG>!qm%0iSKsS88zGYb~3#EdQp1 zO|wQI(BmXjVm|bT(jMt$60Lks;s}dHOwD*#JX9%FI@Utm#^u5dCNU63mLvW zdt>yfr{8;979^qYbDw?&P*L7?Y478YHx=>o{V1M`L;)~yRPF9(CD8X+2=9EaW zaJ?_he|I}P<$uk7BX7G<=$8BM?ZaHx?^*HMW<@cB=)I7@%l!+jcE)YFne#)IyX5cl ztFdK!*aI? aW`-p@PaavXQUxj|89ZJ6T-G@yGywn{Vd~)k delta 1538 zcmV+d2L1We3X}|xB!2;OQb$4nuFf3k00004XF*Lt006O%3;baP00009a7bBm000id z000id0mpBsWB>pF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$DE-^7j^FlWO00o0d zL_t(YOHJ16Zd+9l1>o~6s0dXFP29web8BoIJHE$BLra@pa(`))J`Dl{X;EoZD3rE8 z5J)^A-|>=;m>)Z{_nuiZvu5^jidwCFn+8^?E%@b>)0xW24b%tgo*-bZd3UvS86%YaGoc2L}g-hlh9X-kr^6M@L8Z z?%g{+K0ZA?eSiM^`Q_#1i@8v2pFMkaetv#-c4j3`vN|D;9z6oJy0Sd!cYqY_cKcv5 z`sc&D1OQF>dM;0%JmJ7I=p+FG^mHzQRq!QpiL_xpFCQvpRH;UN_e3LY>JTotgf1!}c*ZsiMsvOnzo z@%oBVR(~L1hDU%{@KG;Bw1Aeoco1b2Trm zt#md5yW(R@#IUjqT@=Y7nZisYTY6bRqfws@_sZFt_lJWE6=XsX<%Bf>St;2Oc+P=%dj{0CrV?G?SaFIA^Xh^{$W>N+}SMf$#!|?W7!29}xaFUI#^hyfQ`* zSybn?{4=I*nL$tD+?ArwDVhOeUnIAMPgQMsX|%U1{bb71b(NP7R;)>bxrouei6mPyQ} zzrFgQtU!YLt|)65P$r?ISm*QzgV?xoZk22tH732WY6C}kSWAi&VO?2SxqbWg^73+i z5^_lKP{`8K(&FMGWnp1~8Dj>q@jDU4Ie($(D+8TM1sn{b!%bR zZBfcRYPEyWAoeUX1-5*N6I+TC+!i4>r=TGs4x3gMX&u~guk+#hrQXPKf7t))_qT>5 zCI-^m*(vuQmJm#-U#sInWSm2Qla(ouu3IIs%Dc33hL}JUO8VbIWD}P{# z0o0l~(_xJg04_un?e6a8C))U;2&j{wTT_8G3NrW-j-U!378PV9=pL$%fvI51SxBaS z^}bxZIoNGsY~IM)sMkSJ0^})BQU`9OD-{!EoXP;8GiUkwi=jaN+>{x9dhPAESKsjm zKk4`0zkZnjZu2ZCZjmD)b!U_T7JqWbvOV1Vw#YipaYKFnD>07J^lwi1>2|v~fhYho z>=Wqtu;#gtvdP3g=#C^({quwOpyy>c5x`Y$AtEGs5L|&m4vL5dSj#b$f=zzYSz}yw zgaX~?R)CvdeBR#L0IJDiOb6xgNFQSLj8Xx9#E94y(EUko9Z5L>tZ>VJ%YT|pZ?fCk z`t|C2#JOz-288r6 zo;Rf+h$O+R&`@1gpsQlI<1c{pF#|e{%}2&JiYQBf(48kDKqwM5VIpcJWq|Y@x{Yx} z5mNy`V_zM5E5MB#pS3reu6xQ)SiNpA^D6nmm26@FrBie(R2TSiSCJEIxWtK&0+80$ z`t^_BG8Ps3zn?ys3l+#O?#Wt~nJ$U|&dYazO7$|$Y-u$hy6g}r3mM_mns?`InuzK@ oNeEsNV~(I~Ri;A#kB^W415QxL!ZX?c{r~^~07*qoM6N<$f?XTa3IG5A From 5a6e92ccd11ed596c469ea3e73372dd7152b91c5 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Tue, 15 Apr 2014 22:46:59 +0800 Subject: [PATCH 059/144] Some work done on crate --- .../archaic/crate/TileCrate.java | 544 ++++++++++-------- .../electrical/levitator/PartLevitator.java | 4 +- 2 files changed, 309 insertions(+), 239 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index 09bbb6eb0..20210295a 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -1,7 +1,11 @@ package resonantinduction.archaic.crate; -import java.util.HashSet; - +import calclavia.api.resonantinduction.IFilterable; +import calclavia.lib.network.IPacketReceiver; +import calclavia.lib.network.PacketHandler; +import calclavia.lib.prefab.tile.TileExternalInventory; +import calclavia.lib.utility.inventory.IExtendedStorage; +import com.google.common.io.ByteArrayDataInput; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -10,272 +14,338 @@ import net.minecraft.network.packet.Packet; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; import resonantinduction.core.ResonantInduction; -import resonantinduction.core.prefab.imprint.ItemImprint; -import calclavia.api.resonantinduction.IFilterable; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileExternalInventory; -import calclavia.lib.utility.inventory.IExtendedStorage; -import com.google.common.io.ByteArrayDataInput; - -/** Basic single stack inventory. - * +/** + * Basic single stack inventory. + *

* TODO: Add filter-locking feature. Put filter in, locks the crate to only use that item. - * - * @author DarkGuardsman */ -public class TileCrate extends TileExternalInventory implements IPacketReceiver, IExtendedStorage, IFilterable + * + * @author DarkGuardsman + */ +public class TileCrate extends TileExternalInventory + implements IPacketReceiver, IExtendedStorage, IFilterable { - /** max meta size of the crate */ - public static final int maxSize = 2; + /** + * max meta size of the crate + */ + public static final int maxSize = 2; - /** delay from last click */ - public long prevClickTime = -1000; + /** + * delay from last click + */ + public long prevClickTime = -1000; - /** Check to see if oreName items can be force stacked */ - public boolean oreFilterEnabled = false; + /** + * Check to see if oreName items can be force stacked + */ + public boolean oreFilterEnabled = false; - /** Collective total stack of all inv slots */ - private ItemStack sampleStack; - private ItemStack filterStack; + /** + * Collective total stack of all inv slots + */ + private ItemStack sampleStack; + private ItemStack filterStack; - @Override - public InventoryCrate getInventory() - { - if (this.inventory == null) - { - inventory = new InventoryCrate(this); - } - return (InventoryCrate) this.inventory; - } + /** + * Gets the slot count for the crate meta + */ + public static int getSlotCount(int metadata) + { + if (metadata >= 2) + { + return 256; + } + else if (metadata >= 1) + { + return 64; + } + return 32; + } - /** Gets the sample stack that represent the total inventory */ - public ItemStack getSampleStack() - { - if (this.sampleStack == null) - { - this.buildSampleStack(); - } - return this.sampleStack; - } + @Override + public InventoryCrate getInventory() + { + if (this.inventory == null) + { + inventory = new InventoryCrate(this); + } + return (InventoryCrate) this.inventory; + } - /** Builds the sample stack using the inventory as a point of reference. Assumes all items match - * each other, and only takes into account stack sizes */ - public void buildSampleStack() - { - ItemStack newSampleStack = null; - boolean rebuildBase = false; + /** + * Gets the sample stack that represent the total inventory + */ + public ItemStack getSampleStack() + { + if (this.sampleStack == null) + { + this.buildSampleStack(); + } + return this.sampleStack; + } + + /** + * Builds the sample stack using the inventory as a point of reference. Assumes all items match + * each other, and only takes into account stack sizes + */ + public void buildSampleStack() + { + ItemStack newSampleStack = null; + boolean rebuildBase = false; /* Creates the sample stack that is used as a collective itemstack */ - for (int slot = 0; slot < this.getSizeInventory(); slot++) - { - ItemStack slotStack = this.getInventory().getContainedItems()[slot]; - if (slotStack != null && Item.itemsList[slotStack.itemID] != null && slotStack.stackSize > 0) - { - if (newSampleStack == null) - newSampleStack = slotStack.copy(); - else - newSampleStack.stackSize += slotStack.stackSize; + for (int slot = 0; slot < this.getSizeInventory(); slot++) + { + ItemStack slotStack = this.getInventory().getContainedItems()[slot]; + if (slotStack != null && Item.itemsList[slotStack.itemID] != null && slotStack.stackSize > 0) + { + if (newSampleStack == null) + { + newSampleStack = slotStack.copy(); + } + else + { + newSampleStack.stackSize += slotStack.stackSize; + } - if (slotStack.stackSize > slotStack.getMaxStackSize()) - rebuildBase = true; - } - } - if (newSampleStack == null || newSampleStack.itemID == 0 || newSampleStack.stackSize <= 0) - this.sampleStack = this.getFilter() != null ? this.getFilter().copy() : null; - else - this.sampleStack = newSampleStack.copy(); + if (slotStack.stackSize > slotStack.getMaxStackSize()) + { + rebuildBase = true; + } + } + } + if (newSampleStack == null || newSampleStack.itemID == 0 || newSampleStack.stackSize <= 0) + { + this.sampleStack = this.getFilter() != null ? this.getFilter().copy() : null; + } + else + { + this.sampleStack = newSampleStack.copy(); + } /* Rebuild inventory if the inventory is not valid */ - if (this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) - { - this.getInventory().buildInventory(this.sampleStack); - } - } + if (this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) + { + this.getInventory().buildInventory(this.sampleStack); + } + } - @Override - public ItemStack addStackToStorage(ItemStack stack) - { - return BlockCrate.addStackToCrate(this, stack); - } + @Override + public ItemStack addStackToStorage(ItemStack stack) + { + return BlockCrate.addStackToCrate(this, stack); + } - /** Adds an item to the stack */ - public void addToStack(ItemStack stack, int amount) - { - if (stack != null) - { - ItemStack newStack = stack.copy(); - newStack.stackSize = amount; - this.addToStack(newStack); - } - } + /** + * Adds an item to the stack + */ + public void addToStack(ItemStack stack, int amount) + { + if (stack != null) + { + ItemStack newStack = stack.copy(); + newStack.stackSize = amount; + this.addToStack(newStack); + } + } - /** Adds the stack to the sample stack */ - public void addToStack(ItemStack stack) - { - if (stack != null && stack.stackSize > 0) - { - if (this.getSampleStack() == null) - { - this.sampleStack = stack; - getInventory().buildInventory(getSampleStack()); - } - else if (this.getSampleStack().isItemEqual(stack) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))) - { - getSampleStack().stackSize += stack.stackSize; - getInventory().buildInventory(getSampleStack()); - } - } - } + /** + * Adds the stack to the sample stack + */ + public void addToStack(ItemStack stack) + { + if (stack != null && stack.stackSize > 0) + { + if (this.getSampleStack() == null) + { + this.sampleStack = stack; + getInventory().buildInventory(getSampleStack()); + } + else if (this.getSampleStack().isItemEqual(stack) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))) + { + getSampleStack().stackSize += stack.stackSize; + getInventory().buildInventory(getSampleStack()); + } + } + } - @Override - public void onInventoryChanged() - { - super.onInventoryChanged(); + @Override + public ItemStack decrStackSize(int slot, int amount) + { + if (sampleStack != null) + { + ItemStack var3; - if (worldObj != null && !worldObj.isRemote) - { - PacketHandler.sendPacketToClients(getDescriptionPacket(), this.worldObj); - } - } + if (sampleStack.stackSize <= amount) + { + var3 = sampleStack; + sampleStack = null; + this.onInventoryChanged(); + getInventory().buildInventory(getSampleStack()); + return var3; + } + else + { + var3 = sampleStack.splitStack(amount); - @Override - public boolean canStore(ItemStack stack, int slot, ForgeDirection side) - { - return getSampleStack() == null || stack != null && (stack.isItemEqual(getSampleStack()) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))); - } + if (sampleStack.stackSize == 0) + { + sampleStack = null; + } - /** Gets the current slot count for the crate */ - public int getSlotCount() - { - if (this.worldObj == null) - { - return TileCrate.getSlotCount(TileCrate.maxSize); - } - return TileCrate.getSlotCount(this.getBlockMetadata()); - } + getInventory().buildInventory(getSampleStack()); + onInventoryChanged(); + return var3; + } + } + else + { + return null; + } + } - /** Gets the slot count for the crate meta */ - public static int getSlotCount(int metadata) - { - if (metadata >= 2) - { - return 256; - } - else if (metadata >= 1) - { - return 64; - } - return 32; - } + @Override + public void onInventoryChanged() + { + super.onInventoryChanged(); - @Override - public boolean canUpdate() - { - return false; - } + if (worldObj != null && !worldObj.isRemote) + { + PacketHandler.sendPacketToClients(getDescriptionPacket(), this.worldObj); + } + } - @Override - public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) - { - if (this.worldObj.isRemote) - { - try - { - if (data.readBoolean()) - { - this.sampleStack = ItemStack.loadItemStackFromNBT(PacketHandler.readNBTTagCompound(data)); - this.sampleStack.stackSize = data.readInt(); - } - else - { - this.sampleStack = null; - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - } + @Override + public boolean canStore(ItemStack stack, int slot, ForgeDirection side) + { + return getSampleStack() == null || stack != null && (stack.isItemEqual(getSampleStack()) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))); + } - @Override - public Packet getDescriptionPacket() - { - this.buildSampleStack(); - ItemStack stack = this.getSampleStack(); - if (stack != null) - { - return ResonantInduction.PACKET_TILE.getPacket(this, true, stack.writeToNBT(new NBTTagCompound()), stack.stackSize); - } - else - { - return ResonantInduction.PACKET_TILE.getPacket(this, false); - } - } + /** + * Gets the current slot count for the crate + */ + public int getSlotCount() + { + if (this.worldObj == null) + { + return TileCrate.getSlotCount(TileCrate.maxSize); + } + return TileCrate.getSlotCount(this.getBlockMetadata()); + } - /** NBT Data */ - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - /* Load current two inv methods */ - ItemStack stack = null; - int count = nbt.getInteger("Count"); - if (nbt.hasKey("itemID")) - { - stack = new ItemStack(nbt.getInteger("itemID"), count, nbt.getInteger("itemMeta")); - } - else - { - stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack")); - if (stack != null) - { - stack.stackSize = count; - } - } + @Override + public boolean canUpdate() + { + return false; + } + + @Override + public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) + { + if (this.worldObj.isRemote) + { + try + { + if (data.readBoolean()) + { + this.sampleStack = ItemStack.loadItemStackFromNBT(PacketHandler.readNBTTagCompound(data)); + this.sampleStack.stackSize = data.readInt(); + } + else + { + this.sampleStack = null; + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } + + @Override + public Packet getDescriptionPacket() + { + this.buildSampleStack(); + ItemStack stack = this.getSampleStack(); + if (stack != null) + { + return ResonantInduction.PACKET_TILE.getPacket(this, true, stack.writeToNBT(new NBTTagCompound()), stack.stackSize); + } + else + { + return ResonantInduction.PACKET_TILE.getPacket(this, false); + } + } + + /** + * NBT Data + */ + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + /* Load current two inv methods */ + ItemStack stack = null; + int count = nbt.getInteger("Count"); + if (nbt.hasKey("itemID")) + { + stack = new ItemStack(nbt.getInteger("itemID"), count, nbt.getInteger("itemMeta")); + } + else + { + stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack")); + if (stack != null) + { + stack.stackSize = count; + } + } /* Only load sample stack if the read stack is valid */ - if (stack != null && stack.itemID != 0 && stack.stackSize > 0) - { - this.sampleStack = stack; - this.getInventory().buildInventory(this.sampleStack); - } - this.oreFilterEnabled = nbt.getBoolean("oreFilter"); - if(nbt.hasKey("filter")) - filterStack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("filter")); + if (stack != null && stack.itemID != 0 && stack.stackSize > 0) + { + this.sampleStack = stack; + this.getInventory().buildInventory(this.sampleStack); + } + this.oreFilterEnabled = nbt.getBoolean("oreFilter"); + if (nbt.hasKey("filter")) + { + filterStack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("filter")); + } - } + } - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - /* Re-Build sample stack for saving */ - this.buildSampleStack(); - ItemStack stack = this.getSampleStack(); - /* Save sample stack */ - if (stack != null) - { - nbt.setInteger("Count", stack.stackSize); - nbt.setCompoundTag("stack", stack.writeToNBT(new NBTTagCompound())); - } - nbt.setBoolean("oreFilter", this.oreFilterEnabled); - if (this.filterStack != null) - nbt.setCompoundTag("filter", filterStack.writeToNBT(new NBTTagCompound())); - } + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + /* Re-Build sample stack for saving */ + this.buildSampleStack(); + ItemStack stack = this.getSampleStack(); + /* Save sample stack */ + if (stack != null) + { + nbt.setInteger("Count", stack.stackSize); + nbt.setCompoundTag("stack", stack.writeToNBT(new NBTTagCompound())); + } + nbt.setBoolean("oreFilter", this.oreFilterEnabled); + if (this.filterStack != null) + { + nbt.setCompoundTag("filter", filterStack.writeToNBT(new NBTTagCompound())); + } + } - @Override - public void setFilter(ItemStack filter) - { - this.filterStack = filter; - this.onInventoryChanged(); - } + @Override + public ItemStack getFilter() + { + return this.filterStack; + } - @Override - public ItemStack getFilter() - { - return this.filterStack; - } + @Override + public void setFilter(ItemStack filter) + { + this.filterStack = filter; + this.onInventoryChanged(); + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java index ab0af5491..d5ef4f020 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java @@ -215,11 +215,11 @@ public class PartLevitator extends PartFace if (retrieved != null) { - EntityItem item = getItemWithPosition(retrieved); + EntityItem entityItem = getItemWithPosition(retrieved); if (!world().isRemote) { - world().spawnEntityInWorld(item); + world().spawnEntityInWorld(entityItem); } pushDelay = Settings.LEVITATOR_PUSH_DELAY; From 4fd8620f2fe13f49b4ce8272f75c9ddc6e37b853 Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 16 Apr 2014 08:12:11 -0400 Subject: [PATCH 060/144] Created a Inventory version of PartFace mircoblock --- .../core/prefab/part/PartInventoryPanel.java | 200 ++++++++++++++++++ 1 file changed, 200 insertions(+) create mode 100644 src/main/scala/resonantinduction/core/prefab/part/PartInventoryPanel.java diff --git a/src/main/scala/resonantinduction/core/prefab/part/PartInventoryPanel.java b/src/main/scala/resonantinduction/core/prefab/part/PartInventoryPanel.java new file mode 100644 index 000000000..15ad09e43 --- /dev/null +++ b/src/main/scala/resonantinduction/core/prefab/part/PartInventoryPanel.java @@ -0,0 +1,200 @@ +package resonantinduction.core.prefab.part; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.common.ForgeDirection; +import calclavia.lib.utility.inventory.ExternalInventory; +import calclavia.lib.utility.inventory.IExternalInventory; +import calclavia.lib.utility.inventory.IExternalInventoryBox; +import codechicken.lib.data.MCDataInput; +import codechicken.lib.data.MCDataOutput; + +/** Panel based part that provides a prefab for other tiles to build an inventory from. Inventory + * code is wrapped to an ExternalInventory object allowing inventories to be implemented without + * repeat copying of code. As well Code is based on TileInventory and should operate in the exact + * same way. + * + * @author Darkguardsman */ +public abstract class PartInventoryPanel extends PartFace implements IExternalInventory, ISidedInventory +{ + protected IExternalInventoryBox inventory; + protected int maxSlots = 1; + protected boolean markedForUpdate = false; + + @Override + public void update() + { + super.update(); + if (ticks % 3 == 0 && !world().isRemote && markedForUpdate) + { + sendDescUpdate(); + } + } + + @Override + public void onInventoryChanged() + { + markedForUpdate = true; + } + + /** Save and load */ + @Override + public void load(NBTTagCompound nbt) + { + super.load(nbt); + this.getInventory().load(nbt); + } + + @Override + public void save(NBTTagCompound nbt) + { + super.save(nbt); + this.getInventory().save(nbt); + } + + @Override + public void readDesc(MCDataInput packet) + { + super.readDesc(packet); + getInventory().load(packet.readNBTTagCompound()); + } + + @Override + public void writeDesc(MCDataOutput packet) + { + super.writeDesc(packet); + NBTTagCompound nbt = new NBTTagCompound(); + getInventory().save(nbt); + packet.writeNBTTagCompound(nbt); + } + + @Override + public IExternalInventoryBox getInventory() + { + if (inventory == null) + { + inventory = new ExternalInventory(null, this, this.maxSlots); + } + + return inventory; + } + + @Override + public int getSizeInventory() + { + return this.getInventory().getSizeInventory(); + } + + @Override + public ItemStack getStackInSlot(int i) + { + return this.getInventory().getStackInSlot(i); + } + + @Override + public ItemStack decrStackSize(int i, int j) + { + return this.getInventory().decrStackSize(i, j); + } + + public void incrStackSize(int slot, ItemStack itemStack) + { + if (this.getStackInSlot(slot) == null) + { + setInventorySlotContents(slot, itemStack.copy()); + } + else if (this.getStackInSlot(slot).isItemEqual(itemStack)) + { + getStackInSlot(slot).stackSize += itemStack.stackSize; + } + + onInventoryChanged(); + } + + @Override + public ItemStack getStackInSlotOnClosing(int i) + { + return this.getInventory().getStackInSlotOnClosing(i); + } + + @Override + public void setInventorySlotContents(int i, ItemStack itemstack) + { + this.getInventory().setInventorySlotContents(i, itemstack); + + } + + @Override + public String getInvName() + { + return "Inventory"; + } + + @Override + public boolean isInvNameLocalized() + { + return false; + } + + @Override + public int getInventoryStackLimit() + { + return this.getInventory().getInventoryStackLimit(); + } + + @Override + public boolean isUseableByPlayer(EntityPlayer entityplayer) + { + return this.getInventory().isUseableByPlayer(entityplayer); + } + + @Override + public void openChest() + { + this.getInventory().openChest(); + } + + @Override + public void closeChest() + { + this.getInventory().closeChest(); + } + + @Override + public boolean isItemValidForSlot(int i, ItemStack itemstack) + { + return this.getInventory().isItemValidForSlot(i, itemstack); + } + + @Override + public int[] getAccessibleSlotsFromSide(int var1) + { + return this.getInventory().getAccessibleSlotsFromSide(var1); + } + + @Override + public boolean canInsertItem(int i, ItemStack itemstack, int j) + { + return this.getInventory().canInsertItem(i, itemstack, j); + } + + @Override + public boolean canExtractItem(int i, ItemStack itemstack, int j) + { + return this.getInventory().canExtractItem(i, itemstack, j); + } + + @Override + public boolean canRemove(ItemStack stack, int slot, ForgeDirection side) + { + return slot < this.getSizeInventory(); + } + + @Override + public boolean canStore(ItemStack stack, int slot, ForgeDirection side) + { + return false; + } +} From 6c03ffa571f0a285703acfba9bbaaafe65e462af Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Wed, 16 Apr 2014 08:13:42 -0400 Subject: [PATCH 061/144] Cleaned up PartCharger, changed it to Extend PartInventoryPanel, Fixed dupe bug caused by failure to check for doReceive boolean, supports automation --- .../electrical/charger/PartCharger.java | 389 +++++------------- 1 file changed, 102 insertions(+), 287 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java b/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java index 8141c63cf..787262c3b 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java +++ b/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java @@ -4,325 +4,140 @@ import java.util.ArrayList; import java.util.List; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; -import resonantinduction.core.prefab.part.PartFace; +import resonantinduction.core.prefab.part.PartInventoryPanel; import resonantinduction.electrical.Electrical; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalClass; import universalelectricity.api.energy.IEnergyInterface; import calclavia.lib.utility.WrenchUtility; -import calclavia.lib.utility.inventory.ExternalInventory; -import calclavia.lib.utility.inventory.IExternalInventory; -import calclavia.lib.utility.inventory.IExternalInventoryBox; import calclavia.lib.utility.inventory.InventoryUtility; -import codechicken.lib.data.MCDataInput; -import codechicken.lib.data.MCDataOutput; import codechicken.lib.vec.Vector3; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -/** - * TODO: This DOES NOT WORK when @UniversalClass is not annotated. Flat wires seem to only interact - * with TE multiparts. +/** Micro part machine designed to charge all items contained inside of it. Doesn't contain its own + * battery and only acts as an inventory. Items are charged each time doReceive is called by an + * energy supplier. * - * @author Calclavia - * - */ + * @author Darkguardsman, converted to Part by Calclavia */ @UniversalClass -public class PartCharger extends PartFace implements IExternalInventory, ISidedInventory, IEnergyInterface +public class PartCharger extends PartInventoryPanel implements IEnergyInterface { - private long lastPacket; + @Override + public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) + { + if (WrenchUtility.isUsableWrench(player, player.inventory.getCurrentItem(), x(), y(), z())) + { + if (!world().isRemote) + { + WrenchUtility.damageWrench(player, player.inventory.getCurrentItem(), x(), y(), z()); + facing = (byte) ((facing + 1) % 4); + sendDescUpdate(); + tile().notifyPartChange(this); + } - @Override - public void readDesc(MCDataInput packet) - { - super.readDesc(packet); - getInventory().load(packet.readNBTTagCompound()); - } + return true; + } - @Override - public void writeDesc(MCDataOutput packet) - { - super.writeDesc(packet); - NBTTagCompound nbt = new NBTTagCompound(); - getInventory().save(nbt); - packet.writeNBTTagCompound(nbt); - } + if (item != null) + { + if (getStackInSlot(0) == null && item != null && CompatibilityModule.isHandler(item.getItem())) + { + setInventorySlotContents(0, item); + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) - { - if (WrenchUtility.isUsableWrench(player, player.inventory.getCurrentItem(), x(), y(), z())) - { - if (!world().isRemote) - { - WrenchUtility.damageWrench(player, player.inventory.getCurrentItem(), x(), y(), z()); - facing = (byte) ((facing + 1) % 4); - sendDescUpdate(); - tile().notifyPartChange(this); - } + if (!world().isRemote) + sendDescUpdate(); - return true; - } + return true; + } + } - if (item != null) - { - if (getStackInSlot(0) == null && item != null && CompatibilityModule.isHandler(item.getItem())) - { - setInventorySlotContents(0, item); - player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + if (getStackInSlot(0) != null) + { + InventoryUtility.dropItemStack(world(), new universalelectricity.api.vector.Vector3(player), getStackInSlot(0), 0); + setInventorySlotContents(0, null); + if (!world().isRemote) + sendDescUpdate(); + } - if (!world().isRemote) - sendDescUpdate(); + return true; + } - return true; - } - } + @Override + public boolean canConnect(ForgeDirection direction, Object obj) + { + return obj instanceof IEnergyInterface && placementSide != direction.getOpposite(); + } - if (getStackInSlot(0) != null) - { - InventoryUtility.dropItemStack(world(), new universalelectricity.api.vector.Vector3(player), getStackInSlot(0), 0); - setInventorySlotContents(0, null); - if (!world().isRemote) - sendDescUpdate(); - } + @Override + public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) + { + if (receive > 0) + { + long energyUsed = 0; + for (int slot = 0; slot < this.getSizeInventory(); slot++) + { + energyUsed += CompatibilityModule.chargeItem(this.getStackInSlot(slot), receive - energyUsed, doReceive); + if (energyUsed >= receive) + break; + } - return true; - } + if (energyUsed > 0) + this.markedForUpdate = true; - @Override - public boolean canConnect(ForgeDirection direction, Object obj) - { - return obj instanceof IEnergyInterface; - } + return energyUsed; + } + return 0; + } - @Override - public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) - { - long energyUsed = 0; - long energyLeft = receive; - for (int i = 0; i < this.getSizeInventory(); i++) - { - long input = CompatibilityModule.chargeItem(this.getStackInSlot(i), energyLeft, true); - energyUsed += input; - energyLeft -= input; - if (energyLeft <= 0) - break; - } + @Override + public long onExtractEnergy(ForgeDirection from, long extract, boolean doExtract) + { + return 0; + } - if (!world().isRemote && energyUsed > 0 && System.currentTimeMillis() - this.lastPacket >= 50) - { - this.lastPacket = System.currentTimeMillis(); - sendDescUpdate(); - } - return energyUsed; - } + @Override + @SideOnly(Side.CLIENT) + public void renderDynamic(Vector3 pos, float frame, int pass) + { + if (pass == 0) + { + RenderCharger.INSTANCE.render(this, pos.x, pos.y, pos.z); + } + } - @Override - public long onExtractEnergy(ForgeDirection from, long extract, boolean doExtract) - { - return 0; - } + @Override + protected ItemStack getItem() + { + return new ItemStack(Electrical.itemCharger); + } - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(Vector3 pos, float frame, int pass) - { - if (pass == 0) - { - RenderCharger.INSTANCE.render(this, pos.x, pos.y, pos.z); - } - } + @Override + public String getType() + { + return "resonant_induction_charger"; + } - @Override - protected ItemStack getItem() - { - return new ItemStack(Electrical.itemCharger); - } + @Override + public Iterable getDrops() + { + List drops = new ArrayList(); + drops.add(getItem()); - @Override - public String getType() - { - return "resonant_induction_charger"; - } + for (int i = 0; i < getSizeInventory(); i++) + if (getStackInSlot(i) != null) + drops.add(getStackInSlot(i)); - @Override - public Iterable getDrops() - { - List drops = new ArrayList(); - drops.add(getItem()); - - for (int i = 0; i < getSizeInventory(); i++) - if (getStackInSlot(i) != null) - drops.add(getStackInSlot(i)); - - return drops; - } - - /** - * Save and load - */ - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - this.getInventory().load(nbt); - } - - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - this.getInventory().save(nbt); - } - - /** - * Inventory Methods - */ - protected IExternalInventoryBox inventory; - protected int maxSlots = 1; - - @Override - public IExternalInventoryBox getInventory() - { - if (inventory == null) - { - inventory = new ExternalInventory(null, this, this.maxSlots); - } - - return inventory; - } - - @Override - public int getSizeInventory() - { - return this.getInventory().getSizeInventory(); - } - - @Override - public ItemStack getStackInSlot(int i) - { - return this.getInventory().getStackInSlot(i); - } - - @Override - public ItemStack decrStackSize(int i, int j) - { - return this.getInventory().decrStackSize(i, j); - } - - public void incrStackSize(int slot, ItemStack itemStack) - { - if (this.getStackInSlot(slot) == null) - { - setInventorySlotContents(slot, itemStack.copy()); - } - else if (this.getStackInSlot(slot).isItemEqual(itemStack)) - { - getStackInSlot(slot).stackSize += itemStack.stackSize; - } - - onInventoryChanged(); - } - - @Override - public ItemStack getStackInSlotOnClosing(int i) - { - return this.getInventory().getStackInSlotOnClosing(i); - } - - @Override - public void setInventorySlotContents(int i, ItemStack itemstack) - { - this.getInventory().setInventorySlotContents(i, itemstack); - - } - - @Override - public String getInvName() - { - return ""; - } - - @Override - public boolean isInvNameLocalized() - { - return true; - } - - @Override - public int getInventoryStackLimit() - { - return this.getInventory().getInventoryStackLimit(); - } - - @Override - public boolean isUseableByPlayer(EntityPlayer entityplayer) - { - return this.getInventory().isUseableByPlayer(entityplayer); - } - - @Override - public void openChest() - { - this.getInventory().openChest(); - - } - - @Override - public void closeChest() - { - this.getInventory().closeChest(); - } - - @Override - public boolean isItemValidForSlot(int i, ItemStack itemstack) - { - return this.getInventory().isItemValidForSlot(i, itemstack); - } - - @Override - public int[] getAccessibleSlotsFromSide(int var1) - { - return this.getInventory().getAccessibleSlotsFromSide(var1); - } - - @Override - public boolean canInsertItem(int i, ItemStack itemstack, int j) - { - return this.getInventory().canInsertItem(i, itemstack, j); - } - - @Override - public boolean canExtractItem(int i, ItemStack itemstack, int j) - { - return this.getInventory().canExtractItem(i, itemstack, j); - } - - @Override - public boolean canStore(ItemStack stack, int slot, ForgeDirection side) - { - return false; - } - - @Override - public boolean canRemove(ItemStack stack, int slot, ForgeDirection side) - { - if (slot >= this.getSizeInventory()) - { - return false; - } - return true; - } - - @Override - public void onInventoryChanged() - { - - } + return drops; + } + @Override + public boolean canStore(ItemStack stack, int slot, ForgeDirection side) + { + return slot < this.getSizeInventory() && stack != null && CompatibilityModule.isHandler(stack.getItem()); + } } From 39f144412ccbfd8b3ff8812224d97b7f441440a9 Mon Sep 17 00:00:00 2001 From: DarkGuardsman Date: Wed, 16 Apr 2014 08:42:47 -0400 Subject: [PATCH 062/144] Disabled item lev due to a major dupe issue --- .../src/main/scala/resonantinduction/electrical/Electrical.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index 7f926527e..c8aee3aa3 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -109,7 +109,7 @@ public class Electrical blockBattery = contentRegistry.createBlock(BlockBattery.class, ItemBlockBattery.class, TileBattery.class); // Transport - itemLevitator = contentRegistry.createItem(ItemLevitator.class); + //itemLevitator = contentRegistry.createItem(ItemLevitator.class); // blockArmbot = contentRegistry.createTile(BlockArmbot.lass, TileEncoder.clclass, // TileArmbot.class); // blockEncoder = contentRegistry.createTile(BlockEncoder.cass); From ced9a4dcbf0d86c45389b51320b17a119a5c0431 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Wed, 16 Apr 2014 15:53:58 +0300 Subject: [PATCH 063/144] Abstracted code to use interfaces rather then implementation --- .../electrical/itemrailing/NodeRailing.java | 3 ++- .../electrical/itemrailing/PartRailing.java | 2 +- .../electrical/itemrailing/interfaces/IItemRailing.java | 3 ++- .../itemrailing/interfaces/IItemRailingTransfer.java | 6 +++--- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index 665b24def..eb8922d2d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -2,12 +2,13 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.Grid; import calclavia.lib.grid.Node; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; /** * @since 18/03/14 * @author tgame14 */ -public class NodeRailing extends Node +public class NodeRailing extends Node { public NodeRailing (PartRailing parent) { diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 513ee5725..4bf97fa5d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -25,7 +25,7 @@ import java.lang.reflect.InvocationTargetException; * @since 16/03/14 * @author tgame14 */ -public class PartRailing extends PartFramedConnection implements IConductor, TSlottedPart, JNormalOcclusion, IHollowConnect, IItemRailing, INodeProvider +public class PartRailing extends PartFramedConnection implements IConductor, TSlottedPart, JNormalOcclusion, IHollowConnect, IItemRailing { public enum EnumRailing diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java index 5a8612e6f..6a9969662 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java @@ -1,5 +1,6 @@ package resonantinduction.electrical.itemrailing.interfaces; +import calclavia.lib.grid.INodeProvider; import calclavia.lib.render.EnumColor; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; @@ -10,7 +11,7 @@ import net.minecraftforge.common.ForgeDirection; * @since 16/03/14 * @author tgame14 */ -public interface IItemRailing +public interface IItemRailing extends INodeProvider { public boolean canItemEnter (IItemRailingTransfer item); diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java index f3089a1cd..4468e75a0 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java @@ -5,7 +5,7 @@ import resonantinduction.electrical.itemrailing.PartRailing; import calclavia.lib.render.EnumColor; /** - * the object that handles the items that flow through Railings + * the object that functions as a Wrapper for items and handles the items that flow through Railings * * @since 16/03/14 * @author tgame14 @@ -18,9 +18,9 @@ public interface IItemRailingTransfer public IItemRailingTransfer setColor(EnumColor color); - public PartRailing getRailing(); + public IItemRailing getRailing(); - public IItemRailingTransfer setRailing(PartRailing railing); + public IItemRailingTransfer setRailing(IItemRailing railing); public IItemRailing getEndGoal(); From de82ff94a15dfe5592977a7aa5737d616156022b Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 16 Apr 2014 09:01:05 -0400 Subject: [PATCH 064/144] Re-enabled item lev, instead disabled recipe && part updating --- .../main/scala/resonantinduction/electrical/Electrical.java | 4 ++-- .../resonantinduction/electrical/levitator/PartLevitator.java | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index c8aee3aa3..5a8606a11 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -109,7 +109,7 @@ public class Electrical blockBattery = contentRegistry.createBlock(BlockBattery.class, ItemBlockBattery.class, TileBattery.class); // Transport - //itemLevitator = contentRegistry.createItem(ItemLevitator.class); + itemLevitator = contentRegistry.createItem(ItemLevitator.class); // blockArmbot = contentRegistry.createTile(BlockArmbot.lass, TileEncoder.clclass, // TileArmbot.class); // blockEncoder = contentRegistry.createTile(BlockEncoder.cass); @@ -189,7 +189,7 @@ public class Electrical GameRegistry.addRecipe(new ShapedOreRecipe(itemCharger, "WWW", "ICI", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get(), 'C', UniversalRecipe.CIRCUIT_T1.get())); GameRegistry.addRecipe(new ShapedOreRecipe(itemTransformer, "WWW", "WWW", "III", 'W', "wire", 'I', UniversalRecipe.PRIMARY_METAL.get())); - GameRegistry.addRecipe(new ShapedOreRecipe(itemLevitator, " G ", "SDS", "SWS", 'W', "wire", 'G', Block.glass, 'D', Block.blockDiamond, 'S', UniversalRecipe.PRIMARY_METAL.get())); + //GameRegistry.addRecipe(new ShapedOreRecipe(itemLevitator, " G ", "SDS", "SWS", 'W', "wire", 'G', Block.glass, 'D', Block.blockDiamond, 'S', UniversalRecipe.PRIMARY_METAL.get())); /** Quantum Gates */ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(itemQuantumGlyph, 1, 0), " CT", "LBL", "TCT", 'B', Block.blockDiamond, 'L', itemLevitator, 'C', itemCharger, 'T', blockTesla)); diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java index d5ef4f020..1b051873b 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java @@ -514,7 +514,8 @@ public class PartLevitator extends PartFace public boolean canFunction() { - return isLatched() && !world().isBlockIndirectlyGettingPowered(x(), y(), z()); + //TODO remove (false) when working on + return false && isLatched() && !world().isBlockIndirectlyGettingPowered(x(), y(), z()); } public boolean isLatched() From 5443704ab07bb39f81e3beff8ca5144169898530 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Wed, 16 Apr 2014 16:11:39 +0300 Subject: [PATCH 065/144] Cleanup and adding comparator for sorting most probably target for IItemTransfer --- .../electrical/itemrailing/GridRailing.java | 19 +++++++++ .../itemrailing/ItemRailingTransfer.java | 8 ++-- .../electrical/itemrailing/PartRailing.java | 16 ++++---- .../itemrailing/PathfinderRailing.java | 40 ------------------- .../itemrailing/interfaces/IItemRailing.java | 10 +---- 5 files changed, 34 insertions(+), 59 deletions(-) delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/PathfinderRailing.java diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index 653b30326..f3b4eea3e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -1,6 +1,10 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.NodeGrid; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; + +import java.util.Comparator; /** * @since 18/03/14 @@ -12,4 +16,19 @@ public class GridRailing extends NodeGrid { super(type); } + + public IItemRailing findTargetForIItemTransfer(IItemRailingTransfer itemRailingTransfer) + { + + } + + public static class ComparatorRailing implements Comparator + { + + @Override + public int compare(IItemRailing o1, IItemRailing o2) + { + return 0; + } + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java index 00fed6b44..f95876cd6 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java @@ -7,7 +7,7 @@ import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; import calclavia.lib.render.EnumColor; /** - * An object that Transfers all + * An object that is a wrapper for all items through railings * * @since 16/03/14 * @author tgame14 @@ -16,7 +16,7 @@ public class ItemRailingTransfer implements IItemRailingTransfer { private ItemStack stack; private EnumColor color; - private PartRailing railing; + private IItemRailing railing; public ItemRailingTransfer(ItemStack stack, PartRailing railing) { @@ -49,13 +49,13 @@ public class ItemRailingTransfer implements IItemRailingTransfer } @Override - public PartRailing getRailing() + public IItemRailing getRailing() { return this.railing; } @Override - public IItemRailingTransfer setRailing(PartRailing railing) + public IItemRailingTransfer setRailing(IItemRailing railing) { this.railing = railing; return this; diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 4bf97fa5d..32f711de9 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -17,6 +17,8 @@ import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; +import universalelectricity.api.vector.IVectorWorld; +import universalelectricity.api.vector.VectorWorld; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; @@ -28,7 +30,7 @@ import java.lang.reflect.InvocationTargetException; public class PartRailing extends PartFramedConnection implements IConductor, TSlottedPart, JNormalOcclusion, IHollowConnect, IItemRailing { - public enum EnumRailing + public static enum EnumRailing { DEFAULT, EXTENTION; } @@ -94,13 +96,13 @@ public class PartRailing extends PartFramedConnection getConnectedNodes (Pathfinder finder, Vector3 currentNode) - { - return null; - } - - @Override - public boolean onSearch (Pathfinder finder, Vector3 start, Vector3 currentNode) - { - return false; - } - } - - -} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java index 6a9969662..cac97191d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java @@ -4,6 +4,7 @@ import calclavia.lib.grid.INodeProvider; import calclavia.lib.render.EnumColor; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import universalelectricity.api.vector.IVectorWorld; /** * implement on Part Railings. @@ -21,14 +22,7 @@ public interface IItemRailing extends INodeProvider public IItemRailing setRailingColor (EnumColor color); - /** an easy implementation for tiles / parts that already have this method in them */ - public World getWorldObj (); - - public int x (); - - public int y (); - - public int z (); + public IVectorWorld getWorldPos(); From b536a284fb8ad7a6a3f0aeff9f6b753e4351e519 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Wed, 16 Apr 2014 16:44:06 +0300 Subject: [PATCH 066/144] Adding utility methods and properly implementing several interfaces, Railings now are able to search around them --- .../electrical/itemrailing/GridRailing.java | 26 +++++-- .../electrical/itemrailing/NodeRailing.java | 68 ++++++++++++++++++- .../electrical/itemrailing/PartRailing.java | 2 +- .../itemrailing/interfaces/IItemRailing.java | 5 +- 4 files changed, 88 insertions(+), 13 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index f3b4eea3e..674845b7e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -1,10 +1,11 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.NodeGrid; +import com.google.common.collect.Sets; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; -import java.util.Comparator; +import java.util.*; /** * @since 18/03/14 @@ -17,18 +18,29 @@ public class GridRailing extends NodeGrid super(type); } - public IItemRailing findTargetForIItemTransfer(IItemRailingTransfer itemRailingTransfer) + public IItemRailing findTargetForIItemTransfer(IItemRailingTransfer itemwrapper) { - + if (itemwrapper.getColor() == null) + { + return findNearestInventory(itemwrapper); + } + return findNearestColoredTarget(itemwrapper); } - public static class ComparatorRailing implements Comparator + public IItemRailing findNearestInventory(IItemRailingTransfer itemwrapper) { + IItemRailing endGoal = null; + IItemRailing[] arr = (IItemRailing[]) this.getNodes().toArray(); + Arrays.sort(); - @Override - public int compare(IItemRailing o1, IItemRailing o2) + for (NodeRailing node : this.getNodes()) { - return 0; + } } + + public IItemRailing findNearestColoredTarget(IItemRailingTransfer itemwrapper) + { + + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index eb8922d2d..e99e3a4e9 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -1,14 +1,21 @@ package resonantinduction.electrical.itemrailing; -import calclavia.lib.grid.Grid; import calclavia.lib.grid.Node; +import net.minecraft.inventory.IInventory; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; +import universalelectricity.api.vector.IVectorWorld; + +import java.util.ArrayList; +import java.util.List; /** * @since 18/03/14 * @author tgame14 */ -public class NodeRailing extends Node +public class NodeRailing extends Node implements IVectorWorld { public NodeRailing (PartRailing parent) { @@ -21,6 +28,63 @@ public class NodeRailing extends Node return new GridRailing(getClass()); } + /** + * + * @return possibly null, a IInventory to target + */ + public IInventory getInventoriesNearby() + { + List invList = new ArrayList(); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity te = parent.getWorldPos().translate(dir).getTileEntity(parent.getWorldPos().world()); + if (te != null && te instanceof IInventory) + { + invList.add((IInventory) te); + } + } + return invList.get(parent.getWorldPos().world().rand.nextInt(invList.size())); + } + + public boolean isLeaf() + { + int connectionsCount = 0; + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + if (parent.getWorldPos().translate(dir).getTileEntity(parent.getWorldPos().world()) instanceof IItemRailing) + { + connectionsCount++; + if (connectionsCount >= 2) + { + return false; + } + } + } + return true; + } + @Override + public double z() + { + return parent.getWorldPos().z(); + } + + @Override + public World world() + { + return parent.getWorldPos().world(); + } + + @Override + public double x() + { + return parent.getWorldPos().x(); + } + + @Override + public double y() + { + return parent.getWorldPos().y() + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 32f711de9..566a3d8db 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -97,7 +97,7 @@ public class PartRailing extends PartFramedConnection Date: Wed, 16 Apr 2014 16:47:20 +0300 Subject: [PATCH 067/144] Fixed missing ; stupid IntelliJ.... --- .../resonantinduction/electrical/itemrailing/NodeRailing.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index e99e3a4e9..066cd3ac8 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -85,6 +85,6 @@ public class NodeRailing extends Node im @Override public double y() { - return parent.getWorldPos().y() + return parent.getWorldPos().y(); } } From 0ddff4cd7b442159f025ef07a13663656c888ab9 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Wed, 16 Apr 2014 16:49:49 +0300 Subject: [PATCH 068/144] removed errored code bit --- .../resonantinduction/electrical/itemrailing/GridRailing.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index 674845b7e..bc2034110 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -27,11 +27,11 @@ public class GridRailing extends NodeGrid return findNearestColoredTarget(itemwrapper); } + //TODO: Finish public IItemRailing findNearestInventory(IItemRailingTransfer itemwrapper) { IItemRailing endGoal = null; IItemRailing[] arr = (IItemRailing[]) this.getNodes().toArray(); - Arrays.sort(); for (NodeRailing node : this.getNodes()) { From 29b5af3e5123523f6584fb83b48727d6e5d5fa49 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Wed, 16 Apr 2014 16:52:29 +0300 Subject: [PATCH 069/144] Switched to external Compiler, fixed all java syntax errors --- .../resonantinduction/electrical/itemrailing/GridRailing.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index bc2034110..66091f2a8 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -37,10 +37,11 @@ public class GridRailing extends NodeGrid { } + return null; } public IItemRailing findNearestColoredTarget(IItemRailingTransfer itemwrapper) { - + return null; } } From 27bfc697f99bac048136e8ccdf942db48599bd55 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Thu, 17 Apr 2014 11:41:48 +0300 Subject: [PATCH 070/144] Adding comparators to sort through nodes, including logic to choose target for items to fire at --- .../electrical/itemrailing/GridRailing.java | 15 ++-- .../electrical/itemrailing/NodeRailing.java | 4 +- .../electrical/itemrailing/PartRailing.java | 16 +++- .../RailingDistanceComparator.java | 74 +++++++++++++++++++ .../itemrailing/interfaces/IItemRailing.java | 7 ++ 5 files changed, 104 insertions(+), 12 deletions(-) create mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index 66091f2a8..b6c9a89d1 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -4,6 +4,7 @@ import calclavia.lib.grid.NodeGrid; import com.google.common.collect.Sets; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; +import universalelectricity.api.vector.IVector3; import java.util.*; @@ -27,21 +28,17 @@ public class GridRailing extends NodeGrid return findNearestColoredTarget(itemwrapper); } - //TODO: Finish public IItemRailing findNearestInventory(IItemRailingTransfer itemwrapper) { - IItemRailing endGoal = null; IItemRailing[] arr = (IItemRailing[]) this.getNodes().toArray(); - - for (NodeRailing node : this.getNodes()) - { - - } - return null; + Arrays.sort(arr, new RailingDistanceComparator.RailingInventoryDistanceComparator()); + return arr[0]; } public IItemRailing findNearestColoredTarget(IItemRailingTransfer itemwrapper) { - return null; + IItemRailing[] arr = (IItemRailing[]) this.getNodes().toArray(); + Arrays.sort(arr, new RailingDistanceComparator.RailingColoredDistanceComparator(itemwrapper.getColor())); + return arr[0]; } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index 066cd3ac8..a4bfe601e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -32,7 +32,7 @@ public class NodeRailing extends Node im * * @return possibly null, a IInventory to target */ - public IInventory getInventoriesNearby() + public IInventory[] getInventoriesNearby() { List invList = new ArrayList(); for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) @@ -43,7 +43,7 @@ public class NodeRailing extends Node im invList.add((IInventory) te); } } - return invList.get(parent.getWorldPos().world().rand.nextInt(invList.size())); + return (IInventory[]) invList.toArray(); } public boolean isLeaf() diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 566a3d8db..c13e41f41 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -27,7 +27,7 @@ import java.lang.reflect.InvocationTargetException; * @since 16/03/14 * @author tgame14 */ -public class PartRailing extends PartFramedConnection implements IConductor, TSlottedPart, JNormalOcclusion, IHollowConnect, IItemRailing +public class PartRailing extends PartFramedConnection implements IConductor, IItemRailing { public static enum EnumRailing @@ -102,6 +102,20 @@ public class PartRailing extends PartFramedConnection +{ + + @Override + public int compare(IItemRailing o1, IItemRailing o2) + { + return (int) o1.getWorldPos().floor().distance(o2.getWorldPos()); + } + + public static class RailingInventoryDistanceComparator extends RailingDistanceComparator + { + @Override + public int compare(IItemRailing o1, IItemRailing o2) + { + if (o1.getInventoriesNearby() != null && o2.getInventoriesNearby() != null) + { + return super.compare(o1, o2); + } + + else if (o1.getInventoriesNearby() == null && o2.getInventoriesNearby() == null) + { + return super.compare(o1, o2); + } + + if (o1.getInventoriesNearby() != null) + { + return 1; + } + return -1; + } + } + + public static class RailingColoredDistanceComparator extends RailingDistanceComparator + { + private EnumColor color; + + public RailingColoredDistanceComparator(EnumColor color) + { + this.color = color; + } + + @Override + public int compare(IItemRailing o1, IItemRailing o2) + { + if (o1.getRailingColor() == o2.getRailingColor()) + { + return super.compare(o1, o2); + } + + else if (color == o1.getRailingColor()) + { + return 1; + } + + else if (color == o2.getRailingColor()) + { + return -1; + } + + return super.compare(o1, o2); + } + } +} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java index 32bafe83b..7607ce277 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java @@ -2,7 +2,9 @@ package resonantinduction.electrical.itemrailing.interfaces; import calclavia.lib.grid.INodeProvider; import calclavia.lib.render.EnumColor; +import net.minecraft.inventory.IInventory; import net.minecraftforge.common.ForgeDirection; +import universalelectricity.api.vector.IVectorWorld; import universalelectricity.api.vector.VectorWorld; /** @@ -11,6 +13,7 @@ import universalelectricity.api.vector.VectorWorld; * @since 16/03/14 * @author tgame14 */ +// TODO: Fix up IVectorWorld implementation to somehow overturn error with ChickenBones Multiparts returning doubles public interface IItemRailing extends INodeProvider { public boolean canItemEnter (IItemRailingTransfer item); @@ -23,6 +26,10 @@ public interface IItemRailing extends INodeProvider public VectorWorld getWorldPos(); + public IInventory[] getInventoriesNearby(); + + public boolean isLeaf(); + } From f9483a2db5df9432097bf8cc0d90bb77f9383f68 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Thu, 17 Apr 2014 12:32:53 +0300 Subject: [PATCH 071/144] Clean up, made Comparator of ItemRailing to compare against distance to source ItemRailing --- .../electrical/itemrailing/GridRailing.java | 8 ++- .../electrical/itemrailing/NodeRailing.java | 52 ++++--------------- .../electrical/itemrailing/PartRailing.java | 44 +++++++++++++--- .../RailingDistanceComparator.java | 20 +++++-- 4 files changed, 67 insertions(+), 57 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index b6c9a89d1..e1c3db089 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -1,12 +1,10 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.NodeGrid; -import com.google.common.collect.Sets; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; -import universalelectricity.api.vector.IVector3; -import java.util.*; +import java.util.Arrays; /** * @since 18/03/14 @@ -31,14 +29,14 @@ public class GridRailing extends NodeGrid public IItemRailing findNearestInventory(IItemRailingTransfer itemwrapper) { IItemRailing[] arr = (IItemRailing[]) this.getNodes().toArray(); - Arrays.sort(arr, new RailingDistanceComparator.RailingInventoryDistanceComparator()); + Arrays.sort(arr, new RailingDistanceComparator.RailingInventoryDistanceComparator(itemwrapper.getRailing())); return arr[0]; } public IItemRailing findNearestColoredTarget(IItemRailingTransfer itemwrapper) { IItemRailing[] arr = (IItemRailing[]) this.getNodes().toArray(); - Arrays.sort(arr, new RailingDistanceComparator.RailingColoredDistanceComparator(itemwrapper.getColor())); + Arrays.sort(arr, new RailingDistanceComparator.RailingColoredDistanceComparator(itemwrapper.getRailing(), itemwrapper.getColor())); return arr[0]; } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index a4bfe601e..3015aa26e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -12,57 +12,25 @@ import java.util.ArrayList; import java.util.List; /** - * @since 18/03/14 * @author tgame14 + * @since 18/03/14 */ public class NodeRailing extends Node implements IVectorWorld { - public NodeRailing (PartRailing parent) - { - super(parent); - } + public NodeRailing(PartRailing parent) + { + super(parent); + } - @Override - protected GridRailing newGrid () - { - return new GridRailing(getClass()); - } + @Override + protected GridRailing newGrid() + { + return new GridRailing(getClass()); + } /** - * * @return possibly null, a IInventory to target */ - public IInventory[] getInventoriesNearby() - { - List invList = new ArrayList(); - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity te = parent.getWorldPos().translate(dir).getTileEntity(parent.getWorldPos().world()); - if (te != null && te instanceof IInventory) - { - invList.add((IInventory) te); - } - } - return (IInventory[]) invList.toArray(); - } - - public boolean isLeaf() - { - int connectionsCount = 0; - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - if (parent.getWorldPos().translate(dir).getTileEntity(parent.getWorldPos().world()) instanceof IItemRailing) - { - connectionsCount++; - if (connectionsCount >= 2) - { - return false; - } - } - } - return true; - } - @Override public double z() diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index c13e41f41..6e86a8b1d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -15,6 +15,7 @@ import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.electrical.Electrical; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; +import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; import universalelectricity.api.vector.IVectorWorld; @@ -22,6 +23,8 @@ import universalelectricity.api.vector.VectorWorld; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.List; /** * @since 16/03/14 @@ -107,13 +110,34 @@ public class PartRailing extends PartFramedConnection invList = new ArrayList(); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity te = this.getWorldPos().translate(dir).getTileEntity(this.getWorldPos().world()); + if (te != null && te instanceof IInventory) + { + invList.add((IInventory) te); + } + } + return (IInventory[]) invList.toArray(); } @Override public boolean isLeaf() { - return node.isLeaf(); + int connectionsCount = 0; + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + if (this.getWorldPos().translate(dir).getTileEntity(this.getWorldPos().world()) instanceof IItemRailing) + { + connectionsCount++; + if (connectionsCount >= 2) + { + return false; + } + } + } + return true; } @Override @@ -158,12 +182,18 @@ public class PartRailing extends PartFramedConnection +public abstract class RailingDistanceComparator implements Comparator { + private IItemRailing source; + + public RailingDistanceComparator(IItemRailing source) + { + this.source = source; + } @Override public int compare(IItemRailing o1, IItemRailing o2) { - return (int) o1.getWorldPos().floor().distance(o2.getWorldPos()); + return (int) (source.getWorldPos().floor().distance(o1.getWorldPos()) - source.getWorldPos().floor().distance(o2.getWorldPos())); } + public static class RailingInventoryDistanceComparator extends RailingDistanceComparator { + public RailingInventoryDistanceComparator(IItemRailing source) + { + super(source); + } + @Override public int compare(IItemRailing o1, IItemRailing o2) { @@ -41,12 +53,14 @@ public class RailingDistanceComparator implements Comparator } } + public static class RailingColoredDistanceComparator extends RailingDistanceComparator { private EnumColor color; - public RailingColoredDistanceComparator(EnumColor color) + public RailingColoredDistanceComparator(IItemRailing source, EnumColor color) { + super(source); this.color = color; } From 1ba7f878c480149ac9a9b0c30be005e418a55e5d Mon Sep 17 00:00:00 2001 From: tgame14 Date: Thu, 17 Apr 2014 13:09:44 +0300 Subject: [PATCH 072/144] Abstracting PartRailing from being an IItemRailing and instead making nodes implement it --- .../electrical/itemrailing/NodeRailing.java | 70 +++++++++++++++++-- .../electrical/itemrailing/PartRailing.java | 65 +---------------- .../itemrailing/interfaces/IItemRailing.java | 4 +- 3 files changed, 66 insertions(+), 73 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index 3015aa26e..ee8df22bb 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -1,25 +1,34 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.Node; +import calclavia.lib.render.EnumColor; +import com.google.common.collect.Lists; import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; import universalelectricity.api.vector.IVectorWorld; +import universalelectricity.api.vector.VectorWorld; import java.util.ArrayList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; /** * @author tgame14 * @since 18/03/14 */ -public class NodeRailing extends Node implements IVectorWorld +public class NodeRailing extends Node implements IVectorWorld, IItemRailing { + private EnumColor color; + private Set itemNodeSet; + public NodeRailing(PartRailing parent) { super(parent); + this.itemNodeSet = new HashSet(); } @Override @@ -28,14 +37,10 @@ public class NodeRailing extends Node im return new GridRailing(getClass()); } - /** - * @return possibly null, a IInventory to target - */ - @Override public double z() { - return parent.getWorldPos().z(); + return this.getWorldPos().z(); } @Override @@ -55,4 +60,55 @@ public class NodeRailing extends Node im { return parent.getWorldPos().y(); } + + @Override + public boolean canItemEnter (IItemRailingTransfer item) + { + return this.color != null ? this.color == item.getColor() : false; + } + + @Override + public boolean canConnectToRailing (IItemRailing railing, ForgeDirection from) + { + return this.color != null ? this.color == railing.getRailingColor() : true; + } + + @Override + public EnumColor getRailingColor () + { + return this.color; + } + + @Override + public IItemRailing setRailingColor (EnumColor color) + { + this.color = color; + return this; + } + + @Override + public VectorWorld getWorldPos() + { + return parent.getWorldPos(); + } + + @Override + public IInventory[] getInventoriesNearby() + { + ArrayList invList = Lists.newArrayList(); + for (TileEntity tile : parent.getConnections()) + { + if (tile instanceof IInventory) + { + invList.add((IInventory) tile); + } + } + return (IInventory[]) invList.toArray(); + } + + @Override + public boolean isLeaf() + { + return parent.getConnections().length < 2; + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 6e86a8b1d..866dfc1de 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -30,7 +30,7 @@ import java.util.List; * @since 16/03/14 * @author tgame14 */ -public class PartRailing extends PartFramedConnection implements IConductor, IItemRailing +public class PartRailing extends PartFramedConnection implements IConductor, INodeProvider { public static enum EnumRailing @@ -74,72 +74,11 @@ public class PartRailing extends PartFramedConnection invList = new ArrayList(); - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity te = this.getWorldPos().translate(dir).getTileEntity(this.getWorldPos().world()); - if (te != null && te instanceof IInventory) - { - invList.add((IInventory) te); - } - } - return (IInventory[]) invList.toArray(); - } - - @Override - public boolean isLeaf() - { - int connectionsCount = 0; - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - if (this.getWorldPos().translate(dir).getTileEntity(this.getWorldPos().world()) instanceof IItemRailing) - { - connectionsCount++; - if (connectionsCount >= 2) - { - return false; - } - } - } - return true; - } - @Override public float getResistance () { @@ -193,7 +132,7 @@ public class PartRailing extends PartFramedConnection Date: Thu, 17 Apr 2014 13:11:54 +0300 Subject: [PATCH 073/144] Pointing connected Railing to node for logic queries --- .../electrical/itemrailing/PartRailing.java | 5 +---- .../electrical/itemrailing/interfaces/IItemRailing.java | 1 - 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 866dfc1de..ddab71722 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -39,14 +39,11 @@ public class PartRailing extends PartFramedConnection Date: Thu, 17 Apr 2014 13:15:41 +0300 Subject: [PATCH 074/144] made ItemRailingTransfer accept node instead of Part --- .../electrical/itemrailing/ItemRailingTransfer.java | 2 +- .../electrical/itemrailing/NodeRailing.java | 1 + .../electrical/itemrailing/PartRailing.java | 7 ++++++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java index f95876cd6..e8ad9addb 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java @@ -22,7 +22,7 @@ public class ItemRailingTransfer implements IItemRailingTransfer { this.stack = stack.copy(); this.color = EnumColor.ORANGE; - this.railing = railing; + this.railing = railing.getNode(); } public ItemRailingTransfer(Item item, PartRailing railing) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index ee8df22bb..cf7d1005e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -29,6 +29,7 @@ public class NodeRailing extends Node imp { super(parent); this.itemNodeSet = new HashSet(); + this.color = null; } @Override diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index ddab71722..02b53de27 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -38,7 +38,12 @@ public class PartRailing extends PartFramedConnection Date: Thu, 17 Apr 2014 13:25:35 +0300 Subject: [PATCH 075/144] Added weak Ref to ItemRailingTransfer to allow caching of current target, and end goal --- .../electrical/itemrailing/ItemRailingTransfer.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java index e8ad9addb..520944cf4 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java @@ -6,6 +6,8 @@ import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; import calclavia.lib.render.EnumColor; +import java.lang.ref.WeakReference; + /** * An object that is a wrapper for all items through railings * @@ -17,6 +19,7 @@ public class ItemRailingTransfer implements IItemRailingTransfer private ItemStack stack; private EnumColor color; private IItemRailing railing; + private WeakReference endTarget = null; public ItemRailingTransfer(ItemStack stack, PartRailing railing) { @@ -64,14 +67,13 @@ public class ItemRailingTransfer implements IItemRailingTransfer @Override public IItemRailing getEndGoal() { - // TODO Auto-generated method stub - return null; + return endTarget.get(); } @Override public IItemRailingTransfer setEndGoal(IItemRailing goal) { - // TODO Auto-generated method stub - return null; + this.endTarget = new WeakReference(goal); + return this; } } From c78cd153e6087627fd817d3a16cedeae9cf87b0e Mon Sep 17 00:00:00 2001 From: tgame14 Date: Thu, 17 Apr 2014 13:41:53 +0300 Subject: [PATCH 076/144] Adding logic to choose next ItemRailing for IItemRailingTransfer to go to next --- .../electrical/itemrailing/GridRailing.java | 7 +++++++ .../electrical/itemrailing/NodeRailing.java | 11 ++++++++++- .../itemrailing/RailingDistanceComparator.java | 2 +- .../itemrailing/interfaces/IItemRailing.java | 7 ++++++- .../itemrailing/interfaces/IItemRailingTransfer.java | 3 +++ 5 files changed, 27 insertions(+), 3 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index e1c3db089..f223e2c0c 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -39,4 +39,11 @@ public class GridRailing extends NodeGrid Arrays.sort(arr, new RailingDistanceComparator.RailingColoredDistanceComparator(itemwrapper.getRailing(), itemwrapper.getColor())); return arr[0]; } + + public IItemRailing chooseNextGoal(IItemRailingTransfer itemwrapper) + { + IItemRailing[] arr = (IItemRailing[]) itemwrapper.getRailing().getConnectionMap().entrySet().toArray(); + Arrays.sort(arr, new RailingDistanceComparator(itemwrapper.getEndGoal())); + return arr[0]; + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index cf7d1005e..4e16bfbe4 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -14,13 +14,14 @@ import universalelectricity.api.vector.VectorWorld; import java.util.ArrayList; import java.util.HashSet; +import java.util.Map; import java.util.Set; /** * @author tgame14 * @since 18/03/14 */ -public class NodeRailing extends Node implements IVectorWorld, IItemRailing +public class NodeRailing extends Node implements IVectorWorld, IItemRailing { private EnumColor color; private Set itemNodeSet; @@ -93,6 +94,12 @@ public class NodeRailing extends Node imp return parent.getWorldPos(); } + @Override + public Map getConnectionMap() + { + return this.getConnections(); + } + @Override public IInventory[] getInventoriesNearby() { @@ -112,4 +119,6 @@ public class NodeRailing extends Node imp { return parent.getConnections().length < 2; } + + } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java index d7a5a7975..73f04e39a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java @@ -9,7 +9,7 @@ import java.util.Comparator; * @author tgame14 * @since 16/04/14 */ -public abstract class RailingDistanceComparator implements Comparator +public class RailingDistanceComparator implements Comparator { private IItemRailing source; diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java index cb6f31c1c..935888065 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java @@ -1,17 +1,20 @@ package resonantinduction.electrical.itemrailing.interfaces; +import calclavia.lib.grid.INode; import calclavia.lib.render.EnumColor; import net.minecraft.inventory.IInventory; import net.minecraftforge.common.ForgeDirection; import universalelectricity.api.vector.VectorWorld; +import java.util.Map; + /** * implement on Part Railings. * * @since 16/03/14 * @author tgame14 */ -public interface IItemRailing +public interface IItemRailing extends INode { public boolean canItemEnter (IItemRailingTransfer item); @@ -23,6 +26,8 @@ public interface IItemRailing public VectorWorld getWorldPos(); + public Map getConnectionMap(); + public IInventory[] getInventoriesNearby(); public boolean isLeaf(); diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java index 4468e75a0..a09597345 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java @@ -1,9 +1,12 @@ package resonantinduction.electrical.itemrailing.interfaces; import net.minecraft.item.ItemStack; +import net.minecraftforge.common.ForgeDirection; import resonantinduction.electrical.itemrailing.PartRailing; import calclavia.lib.render.EnumColor; +import java.util.Map; + /** * the object that functions as a Wrapper for items and handles the items that flow through Railings * From 35a430dc7eccc8bc4a14716f11aa8276ffaf3e4c Mon Sep 17 00:00:00 2001 From: tgame14 Date: Thu, 17 Apr 2014 13:42:33 +0300 Subject: [PATCH 077/144] Cleaned imports --- .../electrical/itemrailing/ItemRailingTransfer.java | 2 +- .../electrical/itemrailing/PartRailing.java | 10 ---------- .../itemrailing/interfaces/IItemRailingTransfer.java | 6 +----- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java index 520944cf4..bd9350e0c 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java @@ -1,10 +1,10 @@ package resonantinduction.electrical.itemrailing; +import calclavia.lib.render.EnumColor; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; -import calclavia.lib.render.EnumColor; import java.lang.ref.WeakReference; diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 02b53de27..418323b22 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -2,29 +2,19 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.INode; import calclavia.lib.grid.INodeProvider; -import calclavia.lib.render.EnumColor; -import codechicken.microblock.IHollowConnect; -import codechicken.multipart.JNormalOcclusion; -import codechicken.multipart.TSlottedPart; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.electrical.Electrical; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; -import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; -import universalelectricity.api.vector.IVectorWorld; import universalelectricity.api.vector.VectorWorld; import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.util.ArrayList; -import java.util.List; /** * @since 16/03/14 diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java index a09597345..f14d67604 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java @@ -1,11 +1,7 @@ package resonantinduction.electrical.itemrailing.interfaces; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.ForgeDirection; -import resonantinduction.electrical.itemrailing.PartRailing; import calclavia.lib.render.EnumColor; - -import java.util.Map; +import net.minecraft.item.ItemStack; /** * the object that functions as a Wrapper for items and handles the items that flow through Railings From b2f0926b648e3825a213feb86b740ac5bce64d1c Mon Sep 17 00:00:00 2001 From: Calclavia Date: Thu, 17 Apr 2014 22:07:00 +0800 Subject: [PATCH 078/144] Prevented mechanical node from creating negative energy --- .../energy/grid/MechanicalNode.java | 438 +++++++++--------- 1 file changed, 230 insertions(+), 208 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java index 633c2a45a..b28063c45 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java @@ -15,7 +15,8 @@ import universalelectricity.api.vector.Vector3; import java.util.Iterator; import java.util.Map.Entry; -/** A mechanical node for mechanical energy. +/** + * A mechanical node for mechanical energy. *

* Useful Formula: *

@@ -24,262 +25,283 @@ import java.util.Map.Entry; *

* Torque = r (Radius) * F (Force) * sin0 (Direction/Angle of the force applied. 90 degrees if * optimal.) - * - * @author Calclavia */ -public class MechanicalNode extends Node implements IMechanicalNode + * + * @author Calclavia + */ +public class MechanicalNode extends Node + implements IMechanicalNode { - public double torque = 0; - public double prevAngularVelocity, angularVelocity = 0; - public float acceleration = 2f; + public double torque = 0; + public double prevAngularVelocity, angularVelocity = 0; + public float acceleration = 2f; - /** The current rotation of the mechanical node. */ - public double angle = 0; - public double prev_angle = 0; - protected double maxDeltaAngle = Math.toRadians(180); + /** + * The current rotation of the mechanical node. + */ + public double angle = 0; + public double prev_angle = 0; + protected double maxDeltaAngle = Math.toRadians(180); - protected double load = 2; - protected byte connectionMap = Byte.parseByte("111111", 2); + protected double load = 2; + protected byte connectionMap = Byte.parseByte("111111", 2); - private double power = 0; + private double power = 0; - public MechanicalNode(INodeProvider parent) - { - super(parent); - } + public MechanicalNode(INodeProvider parent) + { + super(parent); + } - @Override - public MechanicalNode setLoad(double load) - { - this.load = load; - return this; - } + @Override + public MechanicalNode setLoad(double load) + { + this.load = load; + return this; + } - public MechanicalNode setConnection(byte connectionMap) - { - this.connectionMap = connectionMap; - return this; - } + public MechanicalNode setConnection(byte connectionMap) + { + this.connectionMap = connectionMap; + return this; + } - @Override - public void update(float deltaTime) - { - prevAngularVelocity = angularVelocity; + @Override + public void update(float deltaTime) + { + prevAngularVelocity = angularVelocity; - if (!ResonantInduction.proxy.isPaused()) - { - if (angularVelocity >= 0) - angle += Math.min(angularVelocity, this.maxDeltaAngle) * deltaTime; - else - angle += Math.max(angularVelocity, -this.maxDeltaAngle) * deltaTime; - } + if (!ResonantInduction.proxy.isPaused()) + { + if (angularVelocity >= 0) + { + angle += Math.min(angularVelocity, this.maxDeltaAngle) * deltaTime; + } + else + { + angle += Math.max(angularVelocity, -this.maxDeltaAngle) * deltaTime; + } + } - if (angle % (Math.PI * 2) != angle) - { - revolve(); - angle = angle % (Math.PI * 2); - } + if (angle % (Math.PI * 2) != angle) + { + revolve(); + angle = angle % (Math.PI * 2); + } - if (world() != null && !world().isRemote) - { - double acceleration = this.acceleration * deltaTime; + if (world() != null && !world().isRemote) + { + final double acceleration = this.acceleration * deltaTime; - /** Energy loss */ - double torqueLoss = Math.min(Math.abs(getTorque()), (Math.abs(getTorque() * getTorqueLoad()) + getTorqueLoad() / 10) * deltaTime); + /** Energy loss */ + double torqueLoss = Math.min(Math.abs(getTorque()), (Math.abs(getTorque() * getTorqueLoad()) + getTorqueLoad() / 10) * deltaTime); - if (torque > 0) - { - torque -= torqueLoss; - } - else - { - torque += torqueLoss; - } + if (torque > 0) + { + torque -= torqueLoss; + } + else + { + torque += torqueLoss; + } - double velocityLoss = Math.min(Math.abs(getAngularVelocity()), (Math.abs(getAngularVelocity() * getAngularVelocityLoad()) + getAngularVelocityLoad() / 10) * deltaTime); + double velocityLoss = Math.min(Math.abs(getAngularVelocity()), (Math.abs(getAngularVelocity() * getAngularVelocityLoad()) + getAngularVelocityLoad() / 10) * deltaTime); - if (angularVelocity > 0) - { - angularVelocity -= velocityLoss; - } - else - { - angularVelocity += velocityLoss; - } + if (angularVelocity > 0) + { + angularVelocity -= velocityLoss; + } + else + { + angularVelocity += velocityLoss; + } - power = getEnergy() / deltaTime; + if (getEnergy() <= 0) + { + angularVelocity = torque = 0; + } - synchronized (connections) - { - Iterator> it = connections.entrySet().iterator(); + power = getEnergy() / deltaTime; - while (it.hasNext()) - { - Entry entry = it.next(); + synchronized (connections) + { + Iterator> it = connections.entrySet().iterator(); - ForgeDirection dir = entry.getValue(); - MechanicalNode adjacentMech = entry.getKey(); + while (it.hasNext()) + { + Entry entry = it.next(); - /** Calculate angular velocity and torque. */ - float ratio = adjacentMech.getRatio(dir.getOpposite(), this) / getRatio(dir, adjacentMech); - boolean inverseRotation = inverseRotation(dir, adjacentMech) && adjacentMech.inverseRotation(dir.getOpposite(), this); + ForgeDirection dir = entry.getValue(); + MechanicalNode adjacentMech = entry.getKey(); - int inversion = inverseRotation ? -1 : 1; + /** Calculate angular velocity and torque. */ + float ratio = adjacentMech.getRatio(dir.getOpposite(), this) / getRatio(dir, adjacentMech); + boolean inverseRotation = inverseRotation(dir, adjacentMech) && adjacentMech.inverseRotation(dir.getOpposite(), this); - double applyTorque = inversion * adjacentMech.getTorque() / ratio * acceleration; + int inversion = inverseRotation ? -1 : 1; - if (Math.abs(torque + applyTorque) < Math.abs(adjacentMech.getTorque() / ratio)) - { - torque += applyTorque; - } - else - { - torque -= applyTorque; - } + double targetTorque = inversion * adjacentMech.getTorque() / ratio; + double applyTorque = targetTorque * acceleration; - double applyVelocity = inversion * adjacentMech.getAngularVelocity() * ratio * acceleration; + if (Math.abs(torque + applyTorque) < Math.abs(targetTorque)) + { + torque += applyTorque; + } + else if (Math.abs(torque - applyTorque) > Math.abs(targetTorque)) + { + torque -= applyTorque; + } - if (Math.abs(angularVelocity + applyVelocity) < Math.abs(adjacentMech.getAngularVelocity() * ratio)) - { - angularVelocity += applyVelocity; - } - else - { - angularVelocity -= applyVelocity; - } + double targetVelocity = inversion * adjacentMech.getAngularVelocity() * ratio; + double applyVelocity = targetVelocity * acceleration; - /** Set all current rotations */ - // adjacentMech.angle = Math.abs(angle) * (adjacentMech.angle >= 0 ? 1 : -1); - } - } - } + if (Math.abs(angularVelocity + applyVelocity) < Math.abs(targetVelocity)) + { + angularVelocity += applyVelocity; + } + else if (Math.abs(angularVelocity - applyVelocity) > Math.abs(targetVelocity)) + { + angularVelocity -= applyVelocity; + } - onUpdate(); - prev_angle = angle; - } + /** Set all current rotations */ + // adjacentMech.angle = Math.abs(angle) * (adjacentMech.angle >= 0 ? 1 : -1); + } + } + } - protected void onUpdate() - { + onUpdate(); + prev_angle = angle; + } - } + protected void onUpdate() + { - /** Called when one revolution is made. */ - protected void revolve() - { + } - } + /** + * Called when one revolution is made. + */ + protected void revolve() + { - @Override - public void apply(Object source, double torque, double angularVelocity) - { - this.torque += torque; - this.angularVelocity += angularVelocity; - } + } - @Override - public double getTorque() - { - return angularVelocity != 0 ? torque : 0; - } + @Override + public void apply(Object source, double torque, double angularVelocity) + { + this.torque += torque; + this.angularVelocity += angularVelocity; + } - @Override - public double getAngularVelocity() - { - return torque != 0 ? angularVelocity : 0; - } + @Override + public double getTorque() + { + return angularVelocity != 0 ? torque : 0; + } - @Override - public float getRatio(ForgeDirection dir, IMechanicalNode with) - { - return 0.5f; - } + @Override + public double getAngularVelocity() + { + return torque != 0 ? angularVelocity : 0; + } - @Override - public boolean inverseRotation(ForgeDirection dir, IMechanicalNode with) - { - return true; - } + @Override + public float getRatio(ForgeDirection dir, IMechanicalNode with) + { + return 0.5f; + } - /** The energy percentage loss due to resistance in seconds. */ - public double getTorqueLoad() - { - return load; - } + @Override + public boolean inverseRotation(ForgeDirection dir, IMechanicalNode with) + { + return true; + } - public double getAngularVelocityLoad() - { - return load; - } + /** + * The energy percentage loss due to resistance in seconds. + */ + public double getTorqueLoad() + { + return load; + } - /** Recache the connections. This is the default connection implementation. */ - @Override - public void doRecache() - { - connections.clear(); + public double getAngularVelocityLoad() + { + return load; + } - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tile = position().translate(dir).getTileEntity(world()); + /** + * Recache the connections. This is the default connection implementation. + */ + @Override + public void doRecache() + { + connections.clear(); - if (tile instanceof INodeProvider) - { - MechanicalNode check = ((INodeProvider) tile).getNode(MechanicalNode.class, dir.getOpposite()); + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tile = position().translate(dir).getTileEntity(world()); - if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this)) - { - connections.put(check, dir); - } - } - } - } + if (tile instanceof INodeProvider) + { + MechanicalNode check = ((INodeProvider) tile).getNode(MechanicalNode.class, dir.getOpposite()); - public World world() - { - return parent instanceof TMultiPart ? ((TMultiPart) parent).world() : parent instanceof TileEntity ? ((TileEntity) parent).getWorldObj() : null; - } + if (check != null && canConnect(dir, check) && check.canConnect(dir.getOpposite(), this)) + { + connections.put(check, dir); + } + } + } + } - public Vector3 position() - { - return parent instanceof TMultiPart ? new Vector3(((TMultiPart) parent).x(), ((TMultiPart) parent).y(), ((TMultiPart) parent).z()) : parent instanceof TileEntity ? new Vector3((TileEntity) parent) : null; - } + public World world() + { + return parent instanceof TMultiPart ? ((TMultiPart) parent).world() : parent instanceof TileEntity ? ((TileEntity) parent).getWorldObj() : null; + } - @Override - public boolean canConnect(ForgeDirection from, Object source) - { - return (source instanceof MechanicalNode) && (connectionMap & (1 << from.ordinal())) != 0; - } + public Vector3 position() + { + return parent instanceof TMultiPart ? new Vector3(((TMultiPart) parent).x(), ((TMultiPart) parent).y(), ((TMultiPart) parent).z()) : parent instanceof TileEntity ? new Vector3((TileEntity) parent) : null; + } - @Override - public double getEnergy() - { - return getTorque() * getAngularVelocity(); - } + @Override + public boolean canConnect(ForgeDirection from, Object source) + { + return (source instanceof MechanicalNode) && (connectionMap & (1 << from.ordinal())) != 0; + } - @Override - public double getPower() - { - return power; - } + @Override + public double getEnergy() + { + return getTorque() * getAngularVelocity(); + } - @Override - public TickingGrid newGrid() - { - return new TickingGrid(this, MechanicalNode.class); - } + @Override + public double getPower() + { + return power; + } - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - torque = nbt.getDouble("torque"); - angularVelocity = nbt.getDouble("angularVelocity"); - } + @Override + public TickingGrid newGrid() + { + return new TickingGrid(this, MechanicalNode.class); + } - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - nbt.setDouble("torque", torque); - nbt.setDouble("angularVelocity", angularVelocity); - } + @Override + public void load(NBTTagCompound nbt) + { + super.load(nbt); + torque = nbt.getDouble("torque"); + angularVelocity = nbt.getDouble("angularVelocity"); + } + + @Override + public void save(NBTTagCompound nbt) + { + super.save(nbt); + nbt.setDouble("torque", torque); + nbt.setDouble("angularVelocity", angularVelocity); + } } From 8485dd2e5903b5038074d9d14000e36763bb812f Mon Sep 17 00:00:00 2001 From: tgame14 Date: Thu, 17 Apr 2014 18:01:17 +0300 Subject: [PATCH 079/144] added Item for ItemRailing, and registered in Multipart factory including in load phase, EXPERIMENTAL --- .../electrical/Electrical.java | 8 +++ .../electrical/MultipartElectrical.java | 5 +- .../electrical/itemrailing/GridRailing.java | 8 ++- .../itemrailing/ItemItemRailing.java | 60 +++++++++++++++++++ .../electrical/itemrailing/PartRailing.java | 9 ++- 5 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index 5a8606a11..447c7fe53 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -21,6 +21,7 @@ import resonantinduction.electrical.generator.TileMotor; import resonantinduction.electrical.generator.solar.TileSolarPanel; import resonantinduction.electrical.generator.thermopile.BlockThermopile; import resonantinduction.electrical.generator.thermopile.TileThermopile; +import resonantinduction.electrical.itemrailing.ItemItemRailing; import resonantinduction.electrical.levitator.ItemLevitator; import resonantinduction.electrical.multimeter.ItemMultimeter; import resonantinduction.electrical.tesla.BlockTesla; @@ -79,6 +80,9 @@ public class Electrical public static Block blockBattery; public static Block blockEncoder; + // Railings + public static Item itemRailing; + // Generators public static Block blockSolarPanel; public static Block blockMotor; @@ -123,6 +127,10 @@ public class Electrical // Quantum itemQuantumGlyph = contentRegistry.createItem(ItemQuantumGlyph.class); + + //Railings + itemRailing = contentRegistry.createItem(ItemItemRailing.class); + Settings.CONFIGURATION.save(); OreDictionary.registerOre("wire", itemWire); diff --git a/electrical/src/main/scala/resonantinduction/electrical/MultipartElectrical.java b/electrical/src/main/scala/resonantinduction/electrical/MultipartElectrical.java index bf771c79e..d3385b425 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/MultipartElectrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/MultipartElectrical.java @@ -1,6 +1,7 @@ package resonantinduction.electrical; import resonantinduction.electrical.charger.PartCharger; +import resonantinduction.electrical.itemrailing.PartRailing; import resonantinduction.electrical.levitator.PartLevitator; import resonantinduction.electrical.multimeter.PartMultimeter; import resonantinduction.electrical.transformer.PartTransformer; @@ -18,7 +19,7 @@ public class MultipartElectrical implements IPartFactory { public static MultipartElectrical INSTANCE; - public static final String[] PART_TYPES = { "resonant_induction_quantum_glyph", "resonant_induction_wire", "resonant_induction_switch_wire", "resonant_induction_flat_wire", "resonant_induction_flat_switch_wire", "resonant_induction_multimeter", "resonant_induction_transformer", "resonant_induction_charger", "resonant_induction_levitator" }; + public static final String[] PART_TYPES = { "resonant_induction_quantum_glyph", "resonant_induction_wire", "resonant_induction_switch_wire", "resonant_induction_flat_wire", "resonant_induction_flat_switch_wire", "resonant_induction_multimeter", "resonant_induction_transformer", "resonant_induction_charger", "resonant_induction_levitator", "resonant_induction_itemrailing" }; public MultipartElectrical() { @@ -51,6 +52,8 @@ public class MultipartElectrical implements IPartFactory return new PartLevitator(); else if (name.equals("resonant_induction_quantum_glyph")) return new PartQuantumGlyph(); + else if (name.equals("resonant_induction_itemrailing")) + return new PartRailing(); return null; } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index f223e2c0c..6f7215a56 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -1,6 +1,7 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.NodeGrid; +import net.minecraft.item.ItemStack; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; @@ -40,10 +41,15 @@ public class GridRailing extends NodeGrid return arr[0]; } - public IItemRailing chooseNextGoal(IItemRailingTransfer itemwrapper) + public IItemRailing chooseNextInstantGoal(IItemRailingTransfer itemwrapper) { IItemRailing[] arr = (IItemRailing[]) itemwrapper.getRailing().getConnectionMap().entrySet().toArray(); Arrays.sort(arr, new RailingDistanceComparator(itemwrapper.getEndGoal())); return arr[0]; } + + public void onItemEnterGrid(IItemRailing railing, ItemStack item) + { + + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java new file mode 100644 index 000000000..55eefd34e --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java @@ -0,0 +1,60 @@ +package resonantinduction.electrical.itemrailing; + +import codechicken.lib.vec.BlockCoord; +import codechicken.lib.vec.Vector3; +import codechicken.multipart.ControlKeyModifer; +import codechicken.multipart.JItemMultiPart; +import codechicken.multipart.MultiPartRegistry; +import codechicken.multipart.TMultiPart; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; +import resonantinduction.core.MultipartUtility; + +/** + * @author tgame14 + * @since 17/04/14 + */ +public class ItemItemRailing extends JItemMultiPart +{ + public ItemItemRailing(int id) + { + super(id); + } + + @Override + public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 vhit) + { + BlockCoord onPos = pos.copy().offset(side ^ 1); + + if (player.isSneaking() && !ControlKeyModifer.isControlDown(player)) + { + PartRailing railing = (PartRailing) MultiPartRegistry.createPart("resonant_induction_itemrailing", false); + + if (railing != null) + { + railing.preparePlacement(itemStack.getItemDamage()); + } + + return railing; + } + else + { + if (!MultipartUtility.canPlaceWireOnSide(world, onPos.x, onPos.y, onPos.z, ForgeDirection.getOrientation(side), false)) + { + return null; + } + + PartRailing railing = (PartRailing) MultiPartRegistry.createPart("resonant_induction_itemrailing", false); + + if (railing != null) + { + railing.preparePlacement(side); + } + + return railing; + } + } + +} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 418323b22..defe87c35 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -2,6 +2,7 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.INode; import calclavia.lib.grid.INodeProvider; +import codechicken.multipart.TileMultipart; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; @@ -39,6 +40,7 @@ public class PartRailing extends PartFramedConnection Date: Thu, 17 Apr 2014 20:30:21 +0300 Subject: [PATCH 080/144] Adding proper constructor data to ItemRailingTransfer --- .../electrical/itemrailing/ItemRailingTransfer.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java index bd9350e0c..6fe08ec46 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java @@ -18,14 +18,15 @@ public class ItemRailingTransfer implements IItemRailingTransfer { private ItemStack stack; private EnumColor color; - private IItemRailing railing; - private WeakReference endTarget = null; + private WeakReference railing; + private WeakReference endTarget; public ItemRailingTransfer(ItemStack stack, PartRailing railing) { this.stack = stack.copy(); - this.color = EnumColor.ORANGE; - this.railing = railing.getNode(); + this.color = null; + this.railing = new WeakReference(railing.getNode()); + this.endTarget = new WeakReference(railing.getNode().getGrid().findTargetForIItemTransfer(this)); } public ItemRailingTransfer(Item item, PartRailing railing) @@ -54,13 +55,13 @@ public class ItemRailingTransfer implements IItemRailingTransfer @Override public IItemRailing getRailing() { - return this.railing; + return this.railing.get(); } @Override public IItemRailingTransfer setRailing(IItemRailing railing) { - this.railing = railing; + this.railing = new WeakReference(railing); return this; } From 696be02a8d4ce7f78afaf51b986b487c94db3c21 Mon Sep 17 00:00:00 2001 From: Robert S Date: Fri, 18 Apr 2014 00:06:02 -0400 Subject: [PATCH 081/144] Added translations for engineering table inventory mode msg --- .../engineering/TileEngineeringTable.java | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java b/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java index edbf77e58..c0c034e9f 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java +++ b/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java @@ -38,6 +38,7 @@ import calclavia.lib.prefab.tile.IRotatable; import calclavia.lib.prefab.vector.Cuboid; import calclavia.lib.render.RenderItemOverlayUtility; import calclavia.lib.type.Pair; +import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.WorldUtility; import calclavia.lib.utility.inventory.AutoCraftingManager; import calclavia.lib.utility.inventory.AutoCraftingManager.IAutoCrafter; @@ -62,7 +63,6 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv // Relative slot IDs public static final int CRAFTING_OUTPUT_SLOT = 0; - private static final int IMPRINT_SLOT = 1; private AutoCraftingManager craftManager; @@ -114,23 +114,14 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv { if (!world().isRemote && ControlKeyModifer.isControlDown(player)) { - if (this instanceof IInventory) + // Don't drop the output, so subtract by one. + for (int i = 0; i < getSizeInventory() - 1; ++i) { - IInventory inventory = this; - - // Don't drop the output, so subtract by one. - for (int i = 0; i < inventory.getSizeInventory() - 1; ++i) + if (getStackInSlot(i) != null) { - ItemStack dropStack = inventory.getStackInSlot(i); - - if (dropStack != null) - { - InventoryUtility.dropItemStack(world(), new Vector3(player), dropStack); - inventory.setInventorySlotContents(i, null); - } + InventoryUtility.dropItemStack(world(), new Vector3(player), getStackInSlot(i)); + setInventorySlotContents(i, null); } - - inventory.onInventoryChanged(); } } } @@ -218,13 +209,12 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv if (player.isSneaking()) { searchInventories = !searchInventories; - if (!world().isRemote) { if (searchInventories) - player.addChatMessage("Engineering table will now search for nearby inventories for resources."); + player.addChatMessage(LanguageUtility.getLocal("engineerTable.config.inventory.true")); else - player.addChatMessage("Engineering table will not search for nearby inventories for resources."); + player.addChatMessage(LanguageUtility.getLocal("engineerTable.config.inventory.false")); } markUpdate(); From 2be853c78c6b9f3dd4f61a996a951e6e10aabfd8 Mon Sep 17 00:00:00 2001 From: Robert S Date: Fri, 18 Apr 2014 01:01:22 -0400 Subject: [PATCH 082/144] Moved hammer code to engineering table, changed hammer change, reduce energy loss --- .../archaic/engineering/ItemHammer.java | 77 ++----------------- .../engineering/TileEngineeringTable.java | 44 ++++++++++- 2 files changed, 50 insertions(+), 71 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/engineering/ItemHammer.java b/archaic/src/main/scala/resonantinduction/archaic/engineering/ItemHammer.java index 42e76d2fa..59c59fc22 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/engineering/ItemHammer.java +++ b/archaic/src/main/scala/resonantinduction/archaic/engineering/ItemHammer.java @@ -1,77 +1,14 @@ package resonantinduction.archaic.engineering; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.oredict.OreDictionary; -import resonantinduction.core.Reference; -import resonantinduction.core.ResonantInduction; -import resonantinduction.core.ResonantInduction.RecipeType; -import universalelectricity.api.vector.Vector3; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.lib.utility.inventory.InventoryUtility; +/** Item used to interact with engineering table to crush ore */ public class ItemHammer extends Item { - public ItemHammer(int id) - { - super(id); - setMaxStackSize(1); - setMaxDamage(400); - } - - @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 tileEntity = world.getBlockTileEntity(x, y, z); - - if (tileEntity instanceof TileEngineeringTable) - { - TileEngineeringTable tile = (TileEngineeringTable) tileEntity; - - // We don't want to bash the output slots - for (int i = 0; i < TileEngineeringTable.CRAFTING_OUTPUT_END; i++) - { - ItemStack inputStack = tile.getStackInSlot(i); - - if (inputStack != null) - { - String oreName = OreDictionary.getOreName(OreDictionary.getOreID(inputStack)); - - if (oreName != null && !oreName.equals("Unknown")) - { - RecipeResource[] outputs = MachineRecipes.INSTANCE.getOutput(RecipeType.CRUSHER.name(), oreName); - - if (outputs.length > 0) - { - if (!world.isRemote && world.rand.nextFloat() < 0.04) - { - for (RecipeResource resource : outputs) - { - ItemStack outputStack = resource.getItemStack().copy(); - - if (outputStack != null) - { - InventoryUtility.dropItemStack(world, new Vector3(player), outputStack, 0); - tile.setInventorySlotContents(i, --inputStack.stackSize <= 0 ? null : inputStack); - } - } - } - - ResonantInduction.proxy.renderBlockParticle(world, new Vector3(x + 0.5, y + 0.5, z + 0.5), new Vector3((Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3), inputStack.itemID, 1); - world.playSoundEffect(x + 0.5, y + 0.5, z + 0.5, Reference.PREFIX + "hammer", 0.5f, 0.8f + (0.2f * world.rand.nextFloat())); - player.addExhaustion(0.3f); - stack.damageItem(1, player); - return true; - } - } - } - } - } - - return false; - } + public ItemHammer(int id) + { + super(id); + setMaxStackSize(1); + setMaxDamage(400); + } } diff --git a/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java b/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java index c0c034e9f..8aec881fd 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java +++ b/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java @@ -19,14 +19,19 @@ import net.minecraft.network.packet.Packet; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.oredict.OreDictionary; import org.apache.commons.lang3.ArrayUtils; import org.lwjgl.opengl.GL11; +import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; +import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.prefab.imprint.ItemImprint; import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector3; +import calclavia.api.recipe.MachineRecipes; +import calclavia.api.recipe.RecipeResource; import calclavia.lib.content.module.TileRender; import calclavia.lib.content.module.prefab.TileInventory; import calclavia.lib.gui.ContainerDummy; @@ -131,7 +136,44 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv { if (player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() instanceof ItemHammer) { - return false; + for (int slot = 0; slot < TileEngineeringTable.CRAFTING_OUTPUT_END; slot++) + { + ItemStack inputStack = getStackInSlot(slot); + + if (inputStack != null) + { + String oreName = OreDictionary.getOreName(OreDictionary.getOreID(inputStack)); + + if (oreName != null && !oreName.equals("Unknown")) + { + RecipeResource[] outputs = MachineRecipes.INSTANCE.getOutput(RecipeType.CRUSHER.name(), oreName); + + if (outputs != null && outputs.length > 0) + { + if (!world().isRemote && world().rand.nextFloat() < 0.2) + { + for (RecipeResource resource : outputs) + { + ItemStack outputStack = resource.getItemStack().copy(); + + if (outputStack != null) + { + InventoryUtility.dropItemStack(world(), new Vector3(player), outputStack, 0); + setInventorySlotContents(slot, --inputStack.stackSize <= 0 ? null : inputStack); + } + } + } + + ResonantInduction.proxy.renderBlockParticle(world(), new Vector3(x() + 0.5, y() + 0.5, z() + 0.5), new Vector3((Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3, (Math.random() - 0.5f) * 3), inputStack.itemID, 1); + world().playSoundEffect(x() + 0.5, y() + 0.5, z() + 0.5, Reference.PREFIX + "hammer", 0.5f, 0.8f + (0.2f * world().rand.nextFloat())); + player.addExhaustion(0.1f); + player.getCurrentEquippedItem().damageItem(1, player); + return true; + } + } + } + } + return true; } if (hitSide == 1) From e34ef8e294712fde12b9793f60284d11c8ca9924 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Fri, 18 Apr 2014 18:14:40 +0800 Subject: [PATCH 083/144] Finished mechanical piston render and model --- .../crusher/RenderMechanicalPiston.java | 68 ++++++++++-------- .../models/piston/mechanicalPiston.tcn | Bin 0 -> 4800 bytes .../piston/mechanicalPiston_diamond.png | Bin 0 -> 4063 bytes .../models/piston/mechanicalPiston_iron.png | Bin 0 -> 3827 bytes .../models/piston/mechanicalPiston_stone.png | Bin 0 -> 3865 bytes .../models/piston/mechanicalPiston_wood.png | Bin 0 -> 3952 bytes .../models/piston/mechanicalPiston_wool.png | Bin 0 -> 4203 bytes .../textures/blocks/quantumGate.png | Bin 1317 -> 0 bytes 8 files changed, 39 insertions(+), 29 deletions(-) create mode 100644 src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston.tcn create mode 100644 src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_diamond.png create mode 100644 src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_iron.png create mode 100644 src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_stone.png create mode 100644 src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_wood.png create mode 100644 src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_wool.png delete mode 100644 src/main/resources/assets/resonantinduction/textures/blocks/quantumGate.png diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java index 0e1cd145d..1a920d69d 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java @@ -1,23 +1,23 @@ package resonantinduction.mechanical.process.crusher; +import calclavia.lib.render.RenderUtility; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; - +import net.minecraftforge.common.ForgeDirection; +import org.apache.commons.lang3.ArrayUtils; import org.lwjgl.opengl.GL11; - import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class RenderMechanicalPiston extends TileEntitySpecialRenderer { - public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "rejector.tcn"); - public static ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "rejector.png"); + public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "piston/mechanicalPiston.tcn"); + public static ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "piston/mechanicalPiston_iron.png"); @Override public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float f) @@ -25,43 +25,53 @@ public class RenderMechanicalPiston extends TileEntitySpecialRenderer GL11.glPushMatrix(); GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); TileMechanicalPiston tile = (TileMechanicalPiston) tileEntity; + GL11.glRotated(-90, 0, 1, 0); + GL11.glRotated(180, 0, 0, 1); if (tile.worldObj != null) + { RenderUtility.rotateBlockBasedOnDirection(tile.getDirection()); + } RenderUtility.bind(TEXTURE); // Angle in radians of the rotor. - float angle = (float) tile.mechanicalNode.angle; - float radius = 0.5f; - // Length of piston arm - float length = 0.8f; - - double beta = Math.asin((radius * Math.sin(angle)) / (length / 2)); - - /** - * Render Piston Rod - */ - GL11.glPushMatrix(); - double pistonTranslateX = 2 * length * Math.cos(beta); - double pistonTranslateY = 2 * length * Math.sin(beta); - - GL11.glTranslated(0, pistonTranslateY, pistonTranslateX); - GL11.glRotated(-Math.toDegrees(beta), 1, 0, 0); - // MODEL.renderOnly("PistonShaft", "PistonFace", "PistonFace2"); - GL11.glPopMatrix(); + double angle = tile.mechanicalNode.angle; + final String[] staticParts = { "baseRing", "leg1", "leg2", "leg3", "leg4", "connector", "basePlate", "basePlateTop", "connectorBar", "centerPiston" }; + final String[] shaftParts = { "topPlate", "outerPiston" }; /** * Render Piston Rotor */ GL11.glPushMatrix(); - // TODO: Temporary, unless new models come out. - GL11.glTranslated(0, 0, (0.06 * Math.sin(angle)) - 0.01); - MODEL.renderOnly("PistonShaft", "PistonFace", "PistonFace2"); + GL11.glRotated(-Math.toDegrees(angle), 0, 0, 1); + MODEL.renderAllExcept(ArrayUtils.addAll(shaftParts, staticParts)); GL11.glPopMatrix(); - MODEL.renderAllExcept("PistonShaft", "PistonFace", "PistonFace2"); + /** + * Render Piston Shaft + */ + GL11.glPushMatrix(); + + if (tile.worldObj != null) + { + ForgeDirection dir = tile.getDirection(); + + if (tile.world().isAirBlock(tile.x() + dir.offsetX, tile.y() + dir.offsetY, tile.z() + dir.offsetZ)) + { + GL11.glTranslated(0, 0, (0.4 * Math.sin(angle)) - 0.5); + } + else + { + GL11.glTranslated(0, 0, (0.06 * Math.sin(angle)) - 0.03); + } + } + + MODEL.renderOnly(shaftParts); + GL11.glPopMatrix(); + + MODEL.renderOnly(staticParts); GL11.glPopMatrix(); } } \ No newline at end of file diff --git a/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston.tcn b/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston.tcn new file mode 100644 index 0000000000000000000000000000000000000000..f298fed292d7d4fdb80cc92544db290f9c5bdc67 GIT binary patch literal 4800 zcmb7IWlS85wp^sh;;^N-wn%}+9g0)v;`$VPysAWzla?gPGbBMkC%-!3uQro^&9nT86iIgpy197o66=h z8b)_o2azm41s_8MlaTD(%DWycrH~3vl8Efxz5zZ#-1N=Q;$w<+d+RIVe82ErHeYT` zYsK_U-QGL!)y0eM`++2T%uu6x(ekU#yCu#v!N0ql?VAl3MHDvs?hM>DyKJ8z#G z$|h_t@fOPgC->RH3O9tM9xoMow9-&&3!L<+uM0UR_YL0+MZxb34F*hPF9Ei{TdER0 zT5e8gaQ4@lrFzYQCF>AK2F<+A^eH!_Z41mHZ{$Vbuwj_i8y-C6mr!rpl>6wymxv2@ zv<8BdY2CT;uH6tbev}|alPq&FbNo7>=_i71mEnVDPs2u`^xj2f7lNy{%EQ>NXYU&3 zit{!lXNxS`O>_wCQ0>Tmw;Yfba46txv>e%Xu_YE&X$Dj0xfpcKkiDC^EqEQBt`wPf zV^F`4!bxGoWB1-gRNJuQBdm?m6ECh@+l4*@3j5KdvSGT5a{j(g>>%JPOc+6`3vgYf` z@N2&TtOk)37-v&&U>aiyt$9$y zRmj2@AZ>EpTfAh7$zb|^cY*mQ7PzWo(cefrg`$QLrINaA7jgczLf##YBdv)8MpJB= zwzF4pt*}`&!^UGoofRBzxnz@usBiLaVzd9#TSCtQ7l_VnO;M3lDWcT%`mVUBOxc`n zQ=o1&ttx6^vPu6Y%Zi2kyq2Lt+nL;98%Mn#hOm(zD#;kl(t5QFpaW|T!DO|$muicJ_GohL zh1Z@RM!PxYWl~aD9l&Is=fLNF7k7D=FRWtvp0-|dhrMLX1v4%`7Q0~4i&m1o#O=KF zSbMJ|%rfY)6TaSmBEYi+bTiOw^kkHLz|i_%il+*Yzp5qz0J@0*0OG%j*MNDt!@S%* zTw!2mN9+HO?ERqLVkst!{$b3PJS;dC$^>QuA{q5@)XC41B1S~423~~m^HXIgX862= z6qk^*6_FsKqEf1-%%eFJ=L?3?8m?kjTW-)br|owWS5lMWd!8#df6zH=Z4cgJam47S zeV~2-Afc{)K=RyLyJNSr1BiIqp5rP4=q!R^mIXm$RZ{n)`7w~0Um$o_-mOkIjo@) zKB$6kksn9gCZj36dMRDh2WK`V+{7u%^fu}rA(0ydTAYL|DXK)o_=9}vW-=c9zps?3 zFoN$x_=42T0v_*Jo#ORRBSB?f;<`of%PR?#zPP&+5o&Xo@RTv=KuJDr%WycDV8t*4 z3tOJt-2|RDP7ileu}f{78voAW9Lwv)>t`ZOOiYwWyps@WXOw>utL$Wh+_y!MEpBKt z6SC+^KBc>dU})mAPh-hbV>FQ>2Xc`Lk`sKPz5eu{Xzt?eRer5GY>E>0J`H1W_eh9% zz+7B<2;fM)Baz77P(1(hfOOs~(*k~rB-fDCU_a-bc+xFL+`o>o7mP`i)cuY^{ z4djQSXXU@NDsUhje+H5Y@CX=hv9GQ&SWu8pFoh*>hc36J(Gu`hM1cd%NLFnIG7~StOZt2SZax6tTn0)r1 z1^`435$p96V=Z}7Q$hx`p_3Vn9vDgN;wpC4C`EfRx?)ER+9iU}={Z^~2eGw~`IcbX z;<+YWJ03_g9BDXDz-7WU8h>f*la83R@+!|u(Fu+|?tEjS-`XjaL$S~{c-4nOCE-Mo z_wKP))IvOI7Dm(Tq))l%qYcjlN#aJN(h!y+-&w0U`@qJqH()S$w;O*o^32DQo|620 z&b9N{YUy)r9&RDSAh)_M(=Nx4;*OV2jT8NZN(vKWGARK|i4Ei+kdT!WTDCuC2X1w_ zmGCe{JmE<7R@tTP_UN88F0?ei;%Kp@Ng(Q=1KuRk=yY0nH>$e|gYk+7L{?R=CyZ-& zzp6IixCC}W2OqvDXLrbxzUfWp40I7pZ`2F)oUl8>yQ)Tul_V<#+o6{o>YUVmPL9Bv>e_0l z8`}AY^^)cF)Y{{MUOR4TH7deZs7h?ri3m1+p+RAUzi!-JRL2v<2+M6c)u-aIttl zz#46GYBFj9{G^2y zuxQg0YCPCfSF*Yam7dL^(FjXIVAq((1YaFYHAXewN4?gwgFr?N>}Tw20c5qTz=JJk zvF)$2>T@4+jxfE`(OI^|Q@KE7If!+o#N5MF_^ z>{4$$?3<}qhL;0bv%ho1soV@Aw)`+-qU7Z6npTkZ1hZz-SMx|I2{pm@9*6Ymwi(Jz<>h8(H!J@FeUK=RIHu=^z40PZ82-M0hy!<7+|#Xp39ps;6jy@7pH z$SW?WP|=u1m8|$q#wp?XF~1+zEZhbCi!XrXv)aS#xvYTND(NXnr?V zLxU?^VAs;K*u%?7Sr&G~+ITq1ndg+2c=)R6_`)T|VJ|Kd9zgHEIrk|f8wcz5syOH* zULRRjY)hgk>}Roc&^f*q`)b5BZpS(ZYSs3btX<*G>(fe=2S(LTRy_hkP8tEJK(1-f z$f~WWj@UQ9d3yRT=dtgF{jZytHcWozM38##-jrbrQ-3`$dO7jJA}@7nKCJ{aC$~+1 z+nv!nF0E7FKo}A7h}(^ShNWE#`R>^F?aGif)bKe?(%Zgc536u4!Ge_VnEcNayqj1A zc~#~c9dK!rdPJUWZio=6hb2#nmo$SYuC5>eu5CA7?j%h%9BtM~i~EI}vQnjTVy&iR9ZrB3?NSheMBnYgR$Di>>OJi3Ajt3iLRBqwXzBc>?sqw3?<`}NeW*2l|B zL{jb?9k-g2k{uQhnmN`q6cxx{^AB6~8?3P8 zm^+cZFX3p`CbeS**><145_4fJlux>-yE%8wtow6Y zsoL_ry!`;@BwOQav|gl)#jdi0d#>h6&({|pcte7k)Ia4OtT zERHSZNvzJBKbyjKAr}7yH0(5A@%!hS8exiJsS*1ibpF2TV-Hzc><9F)$ zMO)oEih6DGxlpxlZ=BI>1O3)FFvc_TojRP(G_|1+6O*5mzA!IfR3T`vc2*0-5p7_B z8d!Dr)X0{8FXClt*%j|8$4car)BGoED@^&ge|^x!9QWlBIJtNrExwkh>7~pI90~5? zp7yn?lS%F)_pSv*PS|Kn9~R%YngvyUDowoheJ13Iak}^UPtj*3X}s1^K&;A&!JzqY z=FJF~z{hnfkYMhWa~7lqf5LY7&qJM!W9*D=@3s0Pm% z?sPthDqGGt)PP{jaDQzcx&}F9Pn;}9%ByzEw_sz5+HSN_P9D}(i+AZ`7ahqXn!Rij z6-Vo6sGXdui8wmVTeIbXGSK`tz|0Gpw{JO*9alSB1JA1O?q8-EYTjzT_6^>h) zE8qLHdr)5G!?36~G{DCYeZ36rV8&yziukgKpc`ysplmxT0*3`(BEq+m0@pxA#NI8H{hiomjx_yhzJZ% zLSt_ZibBskSSwj-)O$)k-X}~?gp43F^}dT=hO_wmiG06zqGa33FL)e#yyB?K`=0R0RMO4^FJlef7X9h|NN8spULt+tbmKZ a4by+0GqoU(aQ@AK`FA@0;wjm`uYUnzy9|K< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_diamond.png b/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..84a9456a2281c5490acd7f221cab79092f3258d9 GIT binary patch literal 4063 zcmbVPdpwi<``=cM8KaU2cZ)~mv=L^_X*Q#f(+Z)+HaywJHjPE8rj&B19P$uSkyB2U zGpUesIix5hg`7$`WX5;u>G}QscwXP%>-D=|_kDj3_xpNZ*Y*Bf*B|!<2YUikQc)5F z0zqx8aZbW9Lim`AiwfT_`c9n^4qMrHSGF^Q%I1)m6p#g(;Y|T-Xe3{X6NN+$4SGhw zfI#c0{w}U;S36s@4}+#dTEpms&;o_lAP~kZB#`8DjKT)IDZc)66ZlM39USl{o4^kl z*dgo!Eh&Ef)?6mVnQQOj!#(C>Oop480+1pX^1S33v5lEI_^20HrMJ_sZdFf`Ob?lCYlL}~$g2&A4aLUEY$A5J6Zz@qd^~F`U?+*6o6y+ z1k)&Vwhhh%F8rcH_9vr_E%1BrSQH+Mur$Q$BatXWBfK%v5R0`k&_^2Mt$uU-o2?}l zixUE^EDbHONF-k0LJxtku)^!%j1hQ!JQn}k)`revljuH_-+ujte*d<`|5sbIC6hv8 zGng(6M!@e1aPVWW87x0WAYkci2<$xMPbV`ttX*rz^DA2%h3S8sLbhTuXuwZ>(fi$uTvk~O(!RK9)Cq& zeH)u=|2BM~rYAI~_fJ2Mx*-lv%_bF_a>q^8{YKMVwX}9;>BrE?Z(GrQDjyVUG=>UZ zPE>Gfrl;T5Tzxk<-tFter!Pq_Obhg@rdtv;cQqL)LSK%vOXNH21t{s!A6nl(pr<)i zZ)T0Y))acxpqGPI4rHEFwZX}5zu479I7lv0hlI+6Ie0Y1UP^rVB~<=LwW!i`YvRkX zZxTzkB7CJl2K@R=#=_%ZK&s3fB_Zo$og9|!e?~Fh-%P>%B;uqNo+}=|*nAO$SG=cj zMY|;Afa!smdjhV>&{Me`7dq!j>DGNi1R(pHTY2A#*Zv4+3((TpsBQ4nVb^%WeVcdQ zbP<6`pbn0V1#h3ryizZ>x$~GA%&+N7nwDIUmxMfDO`5pjpwp&0jkJA`3^XuH%w%f;r3O^D=# zpI(`onz}UbDqD15aM0t2eVCYXo=^FYTHI}(T;0iyC$s%az>0khcba7!D-~T@WD_5| zJUlnp9Oo-LyR+wA_k@aR7(%V~hswgtY89q2B(SV9u20l~cLhcyj?Go4zeWfZ>~qop zkJZw5Pfwk9kRCQTSmR1|AI}=azO4D$IH4ZoK+aNKI?NBcv``n$KmLbypz>v$3WG+Y zyln62NL;B^mui%9k$hiym$if*{PW7#sH$Mxh z$QEmpAax+hJAjdU$-K9<4^+DHAQucjQqk4Or^OM7F^V_J28m~K*uyOPo63Z8@v0fo zbNS!n3LoyS&y}7q%Ztu_Zjq;g1*-uNuG0xPSfUJdrYeaHUY&FH%2Qi9TbUt(G;&RkAmUU@>KJ! zl0P&5I-qfdn4Y&s0T1hJ-R!z6vq|>2BV=bo!QxAY;``75K?HPTY{{bKD>SWOgI~HV zX^TX?)%$>p#Lh@bY(U+c04(8lM7tTUp&@IMCtfus;yU7%?ip{rE=JTns#_cU3Uwwy z^s{<@*xAc_as6iupO{%E9S{qbiwGuBbCal@1ERW)?eW+?By&k ze!a2?x0SyV=VcN!jQcYh?pJfT)e~w!+-j(D^w>)8)c3=35=T|7BU+PmtJaB0mlKA< z1ZKt+?_&qN(A#DQWhUNz<1Y-R>zs1G<;=g$%l@n|wtAZU>_YyhgNF{m|L{@+o3B6N zI{W3rUFYn|!qO?zGMN6wZjq_B4)4^kC^YT+&YJ$Ml%oRQwYOXKTf{zQ4ODzR>6!(E4wQ&1(P_bTp7iy z`DGSEX?uqVj|1i8K&g_Cr33xPb*J-Imo6I}3SX`R;1SbPF&W*gZ^lWiIuN|hZ5v0DXL#D7Zs?CB zezC#=Exx6f%Y{Aa>!W_MaZs1Kb7M}wsy;EDkZi8za8_$8;Y60S64Z=|n%`pb5DRbH z@+jj00qFe5$xGtbZ+3BEuO$c`S`YsZ_YnLMU>J^aUlqN0W%+=WTwo0+Tl%@^tRTV?WPka!`fx=RT zvb|Ms5sD|TktWnOz@So29lg;AFr*n;x_m;nPprA#G)^M#2G>hg+H|O6GO|H4BKOM` z$cHFD`^-bWSFE>ZVAkVVcCKbxfGod`e=cbhx zuT*g2x1~}e?>wDM>DlZ&AuCG1Pi;Yg%T0|$H|lP7N5$+udS!h?NSJs|r#2W6D>{cc z&H0#kLiyq5Cx`T046cp5li_ESz^|g3S4Z_jH-3`2DVcl=8kZe%)mI7wC~7}h0wj~g zPTmL^S*@-aXE?An6pg6wOKw`+sNXGyDp0R@iS$^PydMJ8%6it@Y&7pUU14y;ZArwb zs51c2Ka&FGN%psVUgwcGK!7~^s)7gn%E^NX-6dkZjiFXWM4YN|ov!>Tdz5tj_W~-2 zlM3~~3@76;)8|?rvkL9cQgH9KW``$XdxguH!yz8fIH zM~T(MgtwKckDhCMQyr>*_2b0EM1t4k@YCq=<>l(b9v*Gt-ZWZ4*vXvLrMU@5j!Qgf zFm!n_sAxWYgBEbSQ$#`7jrt>5;crt<2SwaiKRUxgYF6*hF~i~^<$>?9-08szU+Pr9 zP3B@h?)&pB!kgJy=GJ$`n;$EbmX%$T7bKvrMx&XhMccK`E$wg-mNzd_h8>PcE4Lx< z%+3?Jmtf+qgeu(L6tzA6Qli1R%oXv?5}-=Vp1dS$hxoR{{l&Z|52j;%+8hV-Ml$0S zKF2yZiuAWA@7?;uUZT6@X!K%Nbwf}9s9!ZlJ%f9?STaUtj*!#rSJeN^F6+}`?C@;Y zzRcYXP2i|tsthS?xI#%uX$OCYi&}(*8r>l^vl*(LFMdCM&74ptx+Wv_EUkQ`;PaRMdp0Hy}#rg^r(`g zbdT1_fl#T9Du=$S^r~hKbKXw$Ox)g|W-(v4yr(&9e_zo9n1@-1;JYsMVp!w; zbnIIe1f;?0rNJT1@7c&t3qh9>x7k^C7rMI7ooo&blxMbWx9t)wTHVDf(hd(5&1kOZ znL(M0W`Eq)@?w57FKB}G?)@?AyKCLE&N;h1&-0f3?jJkd+0jN)Oi>H~ z07*MrD_4G-$p28HBK-evzb7Q{n}alK51Jd9NQ?BP5C982*^dCWBl!jpTnWDTsIaF5 z695n-2Dy9CJg^Q(e=oCA z01L&2q6vXPw$T)VTePFQe{`_FF<#Z&3~WM2@&!l)nlG46Iv+ws(oI#r>LU65-D!v_ z_$!1KY^wT~Qyy4nFq%vufDLrvI{r`?42(eN!t@Og2-q>O9u%erf%0F34on|ufI#XQ zg8zP0`PL|SBGT0g^S3Sj$W%3uMhitkAd!)gx{+{QG9>^4Gd4Ef)zH(^;UjdYQ6V&6 zx=sjH?VExXf$C2Q3Z(^+L%_R=zJBCznyD(^)4xI>g<`S)2!~MrP82_75V~(D1f~mx zkVw06eMM7gu7v+_<6qHK_oz?;#FaoLhg1Cd`$1IuM&{@4zZ=>G^1VSiQG)oJ;(OkT z>>o}dgwX7)OjY?Sy7(YG(%8aU-`dj1+7gOJSi@m3BZQ%~F$`g8i7|k~jIA->H2#fi zX=q?*V1ThgBhZ#Gm^IuOu5V}!)wjSH!!6+!80&9byAUePH^iUt&2A9i?%!PWf8`?4 z6oM~}OmQcZ&wr}`=Rh)zObsN5g3)dWu-2)d5Ii}Os=d2Ce?@CWpaew_@E8i21pb;| zWYE9ZH@5u0;{J<^|NrC+!gmI;TO9wZSiVj1D{!~_PwDdq{~R7d2>--T_(y{X8Ri0j zxSE}ng*$!h)Ae6M8cQ;E+V>Wj(>Jk<32#?PNGbxR<|aXP!Ib4v+@roG=WuAbIh#1jcU>1%9?W4`(J z+RMA|U8p%u zaNbi~T)Z1HyK@z}eg!I)YJ_%!ye@uvK!hUM?tH!9{`UfEvp3#s_WkXTbsVKm^FLN; z8J!j{Q=gh7dpphAL4V%gz0Ydd0vc5nbZhTG7R2GKmjdLM;xfMquR1uZxbF+pST8e} zV&2)&wDHBnUJi2+(io(ovB67L_%Loi+c){WaOe>sR)X}vg{eFK0b^Qj@3JVefb7yl zF?+Uh;8Jjsmb=nw1Pr<|Rjeu-J}!K6L-bNf${p?X&gyF?KrAIz?5Qd37YzS(D~;oM zo+;Iz!sYG;QlyVDqrNP7A9X;Q93 zw(|Qw{jayU2v>jVP@zgr`Q+?70J?sUE4LUYL>+i&?F3|~#IG$nm)Mdf6LzX^PO?$? z5ji8ZP4}I@xC}1V6y-9yfi~&*(l;MOpQwuV^{U1^B+F!y%THIvu~!+fP<+r z$-HVal{h@S!M?mB!628hS0{H&*O=RiBcClX67M9er6=6izIYD92HZtaR&%0>yp8@B zak2Z%l8iL36+Rib6SwIx*T(BOZYaIiy>X1t*^ZlB-gGK6VKk%+392u|g@-qo@!ma7 z7ECY~6M+f7v_z8U#!;t6MkHy(_(3n5!lB~1Fkp}G-j!S6`L4K8buG zdhpTI$DTqKZ(3Sfrq|}#;pUN`i8fYfq)M1nwWVNBp~@C9lB49&l8v<%!Cmj~7~y8= z62$E3sC1rR)?@;KKnSdOt}7x7s=yfu3?8<4S2Q*+dQtONjq%{IKn;U46O9{MS?9(` z9cm$+UKxxL)2u3W4hECp^#u1>VYN$1x+^>%TjJiabLh_`%x3>(m0*jh=0=&+j;D8` zyM8ixetKmT9xj~PwW#>N-Wu z9U@{rkNI3h#p;}rZn&5*{ByD*>)@dmotHAy5NXSTFb5N{`Rcmxj%;0@Hk&GCxkQDO zOzo5A1xG~Fx%0BJNT#sg_Tl{p4yDNIac{^=7t6;*1gHXg6AKhSxFq^19X=aMZK-O!uGP3^%sGqv6*G}78O8COQFYv(r474>n5^BZ6iA09ON=yT*W!= z_w4b>jgf#ID?Q?D2kLb=t`6AS?_@|=L4{4fyKTivu$c*?%YC4)fo;8r4@3eJg?EY%L zdvSUB9ZzUBQw=(a^$2AnP@RRTlC}(%4z>__iAv4R~y}Bb8~TW*yzX?QLYNgIPhAq7xnSS+9iS?KJRU$%0{^%$Ab{>XD&3M(K<;McWH$>f59g1IX?$90zvp=+7K zcnuSik6X5!Xw&wgvp5{X^gD;HnbG=eMfskEMF&|KzKl!i@58AB2@nUAQg|JQlos!&n{pKzPRic2 zs6KFDdP~%8Km~uTNF>l}y)}|IcX{rQ+dx{_KzrW$YQ%b9JmZ!NEH)y7=$xuteHqrR z`TU{~%b(}Uw&dN-;RpE%s1zLXad6*Joxek7T?S$dpmoQy`-Va-EqYTuTIO?;DP^^u<@V0YyEwy+X~H zG%o-qB!GFBrLo#+1{KG$?wn0V52R4Ui#5~%05&q!ed(j~0}WKEF_mb4$V&nv`_@ny%b! zkeIC@%?_v&Z#MKo!IL<`w%PW*<;NpK@CYbJm~Jj$(ftFv*XPU%u_25t8EQJS%0c~l zkquOk%gqzK;1whUbme=dW=(2acIxYio3?CyChOrOLsxWPVr%?XbV>|{Uc|~Ns)$q0 z!@cY%8hnCXj#+x|a{re%&3U)ZHii5sP^sxydPmrDCViuNOkQ5To*Q@@^eSp=J-lwE zT=;-oYXB&f!{J=}G8Ru7Vi{f3e7qTVp#Hb|iZOVDTw;kK`Q+X0^!kYD3g`Co3iksi z`7Oaf~ue&5rE_XZY z-0-L?fKUr7A$Sgrk9K9qTpPtZt@l>?oMBWQdLo!-^=IK%h+ONce9@V*i7RGD&-H$Z zKeRgeT}c+^r-+PSSi2_V0N1+P+uA*k3n5R-o-J>zw=$OFo6zo3vhjWUm0y%GDuKYt zfo6JMvYGdkY~K^1=F_$*q5Z-a{t#Xo+4A60cjM%}KJ_B&^GVOeQ~g41Pe47Dgy|E9 z*>{LcEbfAWla=0A8I#zxQ18B9CnO0k9A^}&#^Bjg!ki7pT5dZUed_sXnl#Tvg*TqOQHC2jSZSp&ulDm~=MFaDr-+FQC(91c zDEK&ULd>NW_*bun6vbt>=kShSRr&DRjN6k|T|n_^%_B**9;JrI`kd8e+*yo13eNNx zTZw)a1r;}*mDWfDO(%$HpU;HwI5SxuUB4~O@2t&p{%DM8Z>~|U0tYAJG+=2+OKa&~ zg}WD>r=a;)#MrStGKGOLrVAow3)I6;g@jNyiRX9=ce^avF+Xp`5V5eCtS9e7l*rW4S7TSoiEcw9vB?lsiT+R=(> H>67#y{l&}1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_stone.png b/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_stone.png new file mode 100644 index 0000000000000000000000000000000000000000..4599d35276e7ed8a3b7c112734cb95123cef8085 GIT binary patch literal 3865 zcmbVPc{r5q+kUJqvXdn=C?zt+SjWgRV>GfggLt#ff{8I>X6(yM3z0R6vKF$WXj7?3 zueExkNHP>PYE;%_H~dDuz2Eo8d;GrR_@3i=?)5s)^SZA4y8n1mT%7F0w<>Q106-jl z5Q*XUEdFP;S(M-QykRo=of5;=gMp<4Fe3eFM8KLr!4W}dvVR~EL-Z#^hdm|20YE5# zBWPotQKvJlM#?-^d8XywELgR>$qrM{* zK@1`tjG+;+F;1@dm|(maLBsL@2p$FF6Of4ve^3-TB$N(|ve5X+3*(PBmcbgJpC*i8 z3yoh+c{sX&5EL2_WTXe(kJpDlK*q*;5JMwlV~8%uKp$cN*5|**`yqxfBV(9>3Fz-f zgRe#-1i&yz)ZbeCnT19WgF%IX!I6=XdXZ2)3M~)}F*7sU;4m=Q&$rl5j}B${N9_-# zYyM_H66tsviOL{RLO~mh{y0iF!$O1a>8}vTR7b~uh(qarCyJjkaFjn44AIjElgS%# z{j{btFvS0H<6o`muF+H?7(=8}!fAN^c?4+w2J>_G--R{|`QE^sX(axk_=g}V_;4~Y zlz~QCXz+LR2qXf`%-Yt_*2dJV27H7e zijPFtKp?hI8z=&SGDFxHK~0Sjwnot3Sac|z;U9`8{?;Y&b$?-PQU4VSL(qu+3<}Ma zLJ9d@0WLul28A9(p@I-tW6<6sq)-ASlCHgRJinqv5^1CeA^}CCkU>B53nTrDzM0Mc z756VJ;s28}Fy9&QMsfVFV)?zqufUDrKc&x~{BwDTq5K;|<6jMPO6z+75JRJp)~-?P z@uC-@asx_9H4n(M=Bv8N3PFNB!Vsx)CHHe;R?l=BM5Gj&MN`cE+T?GHXuLdS6w-37 zH0_iDR7Pz3=F5sg?d=shJoh;)Z$7VgZ_dQs-a_YNZgbUGOYf-#W)uCv>g2{rdHJlNqnb$)SsJ zX6u!&dozXi0%2BI@W2y-7|RO*cI8DqW%rz3v7P=>mRb8e_do)(bLxv6^JJ}fC;X(Z zGp|*Vy_KqXnA>~--U~l0sm~GX%~fcBPJ4;9`nua3kWl6cn4M@dYAEp?9&EJimbobX zIhD-bL|BiP%I<1>ZL;>hlSO|5tepflH6QMfU>jmbtQxie!ts&RN50SE?rSAGw1rU= zSTicc+9#?wT{qaL&4zT5j*w-GJ}(2{GcfI)Sm|1s@kQ1;BFihWay*=HHHhY?TN^#| zu|#KpS=`p`>E#vD{gCQAh7#3PthS*+YHC{D{Wm=!DR$+C*L)CC{BWsCl%eY0CL+0ek8>%oyRlHX5lkPeC z;o`U(xOsErn2&lLyzH&@l;Koe0{3RlUbXFCej$gn3AQSxO?&Jfn9wGJ1=4bHL z3D2K1gDwi4zaB9_q4Y;utaCatgUOc@OjF{9-@dI{QH4j{NMF#zXF;j^%M<7dq7Tkw z_+L7?q#dh@fNkoV1tw25+*VLZQJBPhv*O&DDcmHXa)G)zyy>psHmbicIWIT&489|y zj~l&t?6XL-McgiUp_sUoZ$esuMGn2=898JhbnGj~fA`_YU9vBRDO_L9E-rz@2q@rDAg7_Ex~2za*y zYBtM$@7Y7sRA{dRl-02e@qTvTat>D@&abWh_`)W`$HuI7q{|Nk5MOLl8~+p-*Z=xS z&HO0a>rZ?W=sYMz2wt*PscehA_|Cw9x1W$wpjef0rwfDMO^YQuL%Y3qIN+0=)8&!- zKMX@BE{Rf`%a#{h!+wb4cvcRw&a;cyvhb#Kb-zb;6{-Z*g~U|EwFF%^DVage9*MF0 z+mktx)pw>1E!BG^Py*7A6mOd+n^H}Kw9%Q{4>kIr-UVTTDh=iVrd(=3zw?AWEas2nVsst*)31 zT!ku*b^bi_9%XLecHrFn>78qsHmNLo&wJdooSW;MOy+*4Les;(oG-nVZA-Js7 zBrJ&mtoUZ&Ug$d;?<0DbHR|o=nr_|dvA>nE{-bvo)l!YzZW|11pJ!h4RMz??UsF>D z6&k;?C2Ol%&nI;rXQ+XGRIpdzv{xg(drlfL@(Jr;EiDo*awqn%R=!^+pp??s1JD+I z9w&HTyWXf%>;3SJT2`ZI(30?Ys#D2oyihBJ}5f>fZAo2$}RBK31N-ri|)xXG2<_E{TKEmt+6d@Xf zTeH>~z;FeXt0U^cS*nb=%<@^KXLB(zkSFc!F{)@knRaZqXuYr0^KR&iWP#}+ft{CT zL~w7DP*w=4LxtdH=_J6JS7bFjl;f_LN0QdAy8a5qE1Vq`lLb|uV|TPDZ1KxGxXWh( zP&E>exZHdtOUA{-M9FfjFY&_YO8t~)YvD{mgJ_TstXX5=V0fBfDSm8zSV_~(a9^{6 zf&$xM+%!H->A=N+R-ia`&$z764X|5@{g;aI$LGdl3XdkA8D`@~>#oHMmNY<>6`wgZ zUsD7*9k*G2Sk7pZgIO9q?zWQ`xqEEUEotJMZmS{f;KiCelIS*2$F-+j^0HS;kWwR> zGhN$`(XT&Q0$wo4$J0w*rST~B0hiH=bHQ9G`sJI64p1DR0&xJGRGNU9Ca&<1(hsDR z6G%i&EPUiYUZvw(Y=XH+k z`xDyJ@`tJQ?EsPN`EZ8_@0EN~>S#q*?BcY)nd8Y-FoU-|_jUS1OWO>mBRDB)_OoN` zy6Z|~?82>yu~LDz(M#Wnx8_Skw&y$y6iDjp>r;*+TN(xWnIm^SS&iR*yXST}8yZev z)f}mF&(rf>uJbex!&LbgTb01VuSU&%bt@Q2k#B)SKs8Fupoj7Hcd;CU1!ft|PrGhl^8A9DwT?%M}E$LMO; zPpk}veRf%>ji$LaswlsOXTZ6##wf+Or3H>X`;>Bh$BD!1Q54+*R)%Uz`ofQ zMsKFRO;x;E;i;6ycr3JhksIs%$#FeLNr6JE>^`z6tauSH5v!J)j3}~d7y0pu=P^P5 zgYWFrz>&VR5AI&GM>I1)a0+MR*w|Qm^NrY$p zIkTkdd56Jd!Fe4a7Xzo!52>j3c?Z?u*-**G_xHofzVF6esg*~MxKyk;It<6-uG;O$ z?|AzuW{-1mp$CV0r!X#jVe%a~W*4bnC@3A;3K0d)tbgL7)qHOyv2D=2h*~Za0#)u_ z{CGMmvPfXp(`ygJr3CHBtcscV`2OuF?XS{waw8gx+u;`y3p=C&#)Mke{RlCCvt74WmDl0*9WW@d|JCx*)IuQPdsve;C#Z_k9JX!M%( nMKS%`l3ChNs|xV>HO*#VcBs?wWd}}a<7X9Z>x8Ve@jLM!Wq`?D literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_wood.png b/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_wood.png new file mode 100644 index 0000000000000000000000000000000000000000..405ad5fdf390268228b99a7340380ee44ef94762 GIT binary patch literal 3952 zcmbVPc{r49-@Zq-Y)z$U5h1egdwNGbJ>U1obG+YieAjW`_qCnp`CG2v^~W7$X>QEVBg_K;0KcgT%8J!9 zS+6cPC+pkZ9URQ+4pR;7sAq{TR6i#&4$#9AopBITypt==3g?9N_kNGl1b|&G?$&lx zJ2SL8hKN^i+QBH$@FW%+05o-IBqxj~jtX(cxw;dyptEIFP>4HL3u>!k1~VfW;N09z z=w#eky16xm?ukKSp*q?SO`1AO0FR?OL1=g{0!5vs1^uO~&KmD5D?%Z^AXHB+=x?X& z%q$@WL^2MdqJWUcz~FF*s;UB9Sw&S9egdKdgDWY*SdXeaTv=U3RbA;MA|q&zjaZWq*-) zz(z0~nIj}4pLoT?Ip0zFc%&Y!EjJ22^lnZ6Ua;<)7|1r@|Fw&2eYcVL(FR_WMD1JV zv4LTG=YV@CcUJpOt4v;OTK_hwEko(+p!dollasX=E%+xD-LJYG7#T~0uXA2JFuY;3 z>n;|DlahGoo+5)gpOEPEVKKLb-n*drN;4*Kz~Ivcd}3T>-Rl+ci+M_u%fk9t;@MQj z*Qmf`ox9pKeqRFb_Goy2Mb)kt7#O^7Z?~#^r$y2#s_`G-9nG!#F*-WBkhXS7+9Ewa zDD|hT%G_& zT)mwh%=sT)d5;a$*~d_y4KLlURABCs05{IqbCoNh$Q2kDHLu8^u}7?ta!vjM+bzw7`up)p;D+pMvApsaHk*V+kxzw1hixh! z`)kXY)mJ+KLEy^NK6fsx0GqpUSNa4OIm?Q(crMqUq^LX3(Ln4kjbHUmkahf2>f^bN z4&cN;#;9RJby{7L<@A}jLcvMy=r^o zv|->PGH81}XW`Iv+x@O^DqkkwLrC7E){XLX=cEuYU_2oR^!H@sF@A#k!tCmrt|K}M zW72uM%6@Kdo*K$*FhWkfN*F%W5M?yiAwKE@g~o zA006&)!8#5;1|7m59!ElYoq!hb746!QmA!!Y;268H{|an!H18FExaNZuKV)SfS3$8 z*Y_hRY4ei@XMMnQxY+C}Bql|KBONu9r)RA(uPvl-$t2FibC&a}CB448Y&WT6X!}Je zO<0t=2?vK>C zaiBP%b=br+7j$Rn>9&gXRB!bnmnQl%|9pheBz00D^NVD=Fb~ssC?L|NC48TL`R8Em z%=;Ir>%{e)h6rjB?ZR|Wv*zl@_$YP~yIWTJ4BLn|dk^P?)EX_UP89mYK&Cf>(l0RS z-*j(2DTK?rv+JzS%wAnlu@w~fq;zaIi2W-4`9^<(o9G4pkE51v!nwjaF>}vIGI~<% zf|5^Sfvq2_mq%?Y$fKt!1HUD^BK$zfvX56%C2^m1Gz+b-I3%{+kHb0#yqvr-Hb#u! zBvw$6WM4@YX2*>qCok}^TU5Kf<$|5)Ykbvo%$nSW5IRUGVt63F1doP?t!w?ssSQI0Qg!+b|f($DJx4^e493XK$>Kj%!_ipe!o7`K9ed_$`&&$;p$k`;W*1 zmapa2J2wLRC!#(m>bxS_80LBB%@KoA6}q-Y)==p-iyuE-PIxbfzUSxw`k*2kmjdCb z=1c*A%E_LBSM>Qy3$>FLQhR3lViEhVu=DmVCJN}JieIjPmrbxaYB$KTXJUxyr)%r# z;-aFa5A?K1JGTaa(MlbhxJ1Rv*Q%e13jO2Uh$b8Vdi%+%9B$CwnVQobNZ{yjaxho6 zqP(6Qwf*I|Y-WC|QPZKtFWmc?4t{t-Q7eFtFK7(Uv-Q%Y%(V|i38;djfp1E&x6$?& zzOLy>TD--Ui*E`WM(?ev^kja$ucM4SzrHs9y@B?QQxNPJBCAoLKWKX2acyqSGWqIs zN1a-Yv{eSXE@pN%?Ps3zs)4El9MoLJnE5b>?DfgGXmX&cyfL;)xsF|(lA{F^)YGkE z*S#NDAcpKMgzAcGvN?m?IB$DK`e|p6sEVc_0OZH#VY_s`i0h1u;KAJUlPMX4E7i(tgR&OM>MIQy2YOlupf!U_iKi zKx`GF`!$o?`qJ&=q^2J&bMK0Yj!y7qTiSSIkG^;TG)R(4VFvL4mdNoiiy#^Ndhik6 zq^GH_Wkq7SSpJ6`g#xx#sd7g9G=_h^Ll4{;=4xYK+P_QCpxk|-fj6e$`Iv|BHvR;2 zY3Si167d)jSlwZCfhO7|QmwzAId9O$@%fNqrtbHWYs9+czbrPNhCpTz0!;eAQ-B)v zFj{)_<&=4m_Ygl!pn5$J4(=RN10slWXu_)73N2<8F)>z=F|GWgY`p6{uKUdEDHka- zFR<-k@6;XXD_)<9;+D^W{ zDXNihf&Z$%U+PIm2#w4?iS|lEp%;yWW+CJ zph#2saU$9>zEM6*OQP_}W(5?+rsD*XO1fTfo=Klf;3k3u2G50V>oxO<4g) zaC0)`HgkI}{b}6_R%m^ecVusz+8S@Xah@!Y#PL8J_ENJ98u&DKbn%DsOw~cvWZ~U? z?-N7z`~ryFo?fw#;HjjVuC&@!J*_%&VRn@e`LU*0Tu(Y_;EAS{8L0YHawRP;RNHb_`g#dl<;&;-!S?GO-wKm$ zfm#Ig@bMVyvp{ny@`WsBeBvs(%e)!R7jHcAnzuKft@@5PU98mYL85WqdRh--e0gnt zI9XvYuMfXPC{t;P=&UwSLK!=*8M2sEXE#PK^PSGi_wIEt*Vgcv=+x4>{c=V?x%O~C zbO_(V&xH<1jKcYv&-zOn4o`D};T>Wv#bXh-dhCJLxRMFg!=P`O(de2r?VEq$Vve;g z9XLJdum>ZS8ZJ@?-iQQk>4bxe9xAo~f(!+GSu?c#=UUt7$jl18GGEk8uM?O=JA&zm zLm}MILp3KP@<>YYTJg~xVjqf8{gd9Gbs0hEqu;{-NGJM;`4`cN#*?wx+QTEb~dff QJO99@hUTcJ`i`Oh0TBcEpa1{> literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_wool.png b/src/main/resources/assets/resonantinduction/models/piston/mechanicalPiston_wool.png new file mode 100644 index 0000000000000000000000000000000000000000..075d47d4c43844eca6dec05fb8a5a002659938c8 GIT binary patch literal 4203 zcmbVPc{r5&-+l~YN|q>OFqV)kGmOD7j2UAr5fP$|2Di zkWM(VCfP!kkbSG)=$y{`{&B9~dtL8yJiwEg6$;B-sppB#p0POBw zHuiLT^OGnd#ZSd$&qgKK&!2?`0A2lHe;1+;i4Juod3cf0(hE-;rJ-JKXlXkQbC|h5 zj^ycO97-iwhg#SWLw$(aZqoXCP~Bh@i@=XWcYy}``I2d?9WBlB^sf;7{LRh(AtuxQP82I;s=+S)s&EyUs-NFp zTtBU8^wXsOapPaDX*MDLB-PU-8ihe6vg+Y3^9#(%-G3L_Gh}&#Iz{zj6~)EZkV0hm zk;rrtL$oyOi;A0<8%o;%kHBNK@K_iQiC2fiwUC;4Z8#E(HPTRrYvYZ6ar_(BP{T+| zUERO}@xAi=6|EtO>J>u6|N_8ZoTrwDAYCUIT z!^z4T_N&cZ1=yr8#>U187bh~$8d6rGD z%+1ZUQ)NxEQW546;#Il{YrgTy9kll4{wZ|D6SR?7gIv!1hiXc(y;5Ct^ep(@>dKty zeEAo39^T<^^A_2<>19!lj+vQhX^W0S?0rQ2tf>aegutPktgOfNf;qGAA6i#RPDMHF z4>keeF+!c41Y20`F=qWfJ%zy~8DcxKK8G{MZ?T0@OA>3)zdCGvHG=D0CUjYJCDfDa zdD9VQ5`R~GY@3Jo{nOC2wTmw8e6JGj=f*Q%5NrV<%&L@8gP@zh`<2POcsm=YInFaK`T!@%}ta$NjGq{0<9jY3!?@xS=VXq;dtRH&8E8ZOf5%#hO&k_=#uP z*1UOdAcV9t)5(7EO??7yX^$L}xtkb4l){HNgY$NMsu~M-uPDxj+}Jh!kgW8nEJW`F z-njh>umcU(PU*IlDmR6GE_h?Ti%BgI0?c$3B_1En-Qt{SjNF|e=*-%jYd`{os z8MND8w0mThY^Ja@t2r9veM~&}5AS}rO(|2mI8#EbxQn7A&fTrGjQgz6qeZW$Tzub) zTt0>0$jjSKA+Ef>WGndR46t7TY=w`jnp(Aq_X2}TGEiX5`fC2%a3r_5fiLmpRnBgz zBwE^ec!p#KmlLWWB-ix?4!Ep zmU;T@Q%w7m)Yp5@+Omf)*ECHrEcNC_GvmEtr_JC-*7D>Zg;v~Ml8%6pzX^ALAe~-w z-|Y5Qq&MhMu+)gR-k-X@U|whaXO)>f$<{ATNxrS>1#?4dmG1c($8mMBsN`TC=auh7 zB2h!;&MJ^5f$7C1K&JqyMaYbo044{jIojY*R1s%X_$E+1F4es7t=)CUC&HkfjCkAR z*tf<$9XMLN_Ny=}NM~H3QYOQBb4%~NFl>xKAfWRWb*rGim9-k1y+~m~-$XQ4CLb!G z4k$YJ4%@;piwq%$s7A)Of>x`SNf}S6{GToAJ6>KD78Gt@$&8j#M$66?ahLqwGT7lg z_AsdPO8iaSkfr0NIi_4n2{6j+O}2 zv=rR-o*OE&Ak?f1$3kS0P0Q${t}D5g8(N22cywa8%Lbbt#XeN3UZTf5{&ud`03Ea8 z^tg!%M&BSE)nHX51!CaFlJt@OxubOqRbf(r4d#R{e zU#!zg#d(}hs@flomP+-i04W9cy4&$TY_c*qaGh?3=}mC1jdlPdhn;tMOW!h2^#4XH zg7hwD;E56YdN1F7kX=TbWqZF^V$M-ICYvg13Bt*oohNfT;0mQ`A*MAY@1T_;j~%s= za}S*sBBslML?j|FY(BDk;>0+WqsNHaWk^@bLDflTvei$&+Aa6^v9_D;RO#KL7_`0S z_sL`Y)phbf8R_dlxySHoUEsV!RLAJ3OLf@#*GqH0R3KGMlUyUN6IjFIN-+|Lv2`x; zL6sa%F?=^k?$k=J5@( zg7_rZmUzs}=cK-lz{RnPZ)DZ|EQ5Bp^sV5&`?!Dt%Q;J=Z~w?)jceg0fkME+xZ-;c zw*`KD{iqW)G%)Z*P(cD6YSZ?L6qRu`gGea1PzG0x!)f!sx8z^uxH+&Rin*ejH!+9vMBn_DuL6vTzy<^#wk8&5lPAAR1Q3rF*A_d zcffZmM9Ewl@c!yHRr0ZvPe)?%sE|R0V>S7XJkP}NC?ry3>B)u0wOHV}L6jnsBYQIl zh;Rj+%gcCxH)CUnYAPD#{P4X5Tti)>_b*07M11|+e)}t{++RnUFFup1h*XG2qtOyD z&+l6M0!Fx?=_E7cJ44eL6uf!Ept<^fqvZAs{+dMN0~+(5>$m9Z?EEFvX|_%_;3)GY zwDv`leDOHSt#Ci&+j7EgvFs#S~M{jcJHj z?7?N@sxJ221?=BjZ?ba%ttae?S0H0=QcgHkwe<1LvhCuQw-JxHOY#UKC{!EBkUcJ$ z#!?5d0rhWnZbw%{YzOiohMvRbrv;gZnEZWq>1?8?E=>X1zj zvTwcoE`P#RiY9WnfodEO-H+YNzM`uv0CadtBxA2n8X!jMjh3B{0lpiYoxD@&Bh7~0 z-{vyjr{wpx931L`KN*v6D(HCo^4^QXxeyDyK<7yi)AmN9W(Jq79t<|3&9-&>&NYp* zI1^jbcx&)G(ybTXJNlVznXpKHJVu?tRCD>=8T8BaOMOFduwiZ|IjR<})fn4xub9oA_ z8n1FIAA$}=aJn>eyi~_Fj_l%AJ>F$qE|cNo8sUB3kT(>iQUZAJ-_ezkk&y`ZZPfJ0 zy@fT4SzfPAJDh#YM$*gzG`+BJN?@k4JaF!wWw`GT6@-)_)*Ml{L^GhV?y|qc(T?^NgM#~5#Z7>iLwZ(>OFE4!1akz3WTz_@@RQyRf0w}1g zy(xZ%*k%IowDoT1^PhP}H(9fMe4+2t!J_qTnYe+L8p#w3rqdI>)GQ8Q{mJ=ylN7!4 zqe)E|jskn`T7R)KAW`8azV&hMoK+Uh<{icvb06}6MpOXr6=5TZmvO5C1>k;epUKK} zJ7DC?EuNm&iAlh_J35;35!2qkQF|=j!C8BMG7rP-z|7<06}t2;V@FA|cMH1Rd40s! zH}2OND)nn9ffbYUq6CQ&F+KAB5>nH;eJx6I=f_Lxv%*8SR=(t*5)tG35Mw;ZR~Y78 z)aJt^!tKW{WGSNvnZEAEwBxVUBe(d!T@wV1)a*XW@dI28j)O}P5MsN4IljBtK4U%f zQi%T%>NP2Z6<5iR;~dq>ej%t_E$Z1{ARLD`^esJIRHDLY)=H6Wrn-&{r;Qa LEewmX&N2T19biAt literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/resonantinduction/textures/blocks/quantumGate.png b/src/main/resources/assets/resonantinduction/textures/blocks/quantumGate.png deleted file mode 100644 index 83b52a4044dffc21e41f972979c416b95f9e1922..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1317 zcmV+=1={+FP)N2bPDNB8 zb~7$DE-^7j^FlWO00f~)L_t(YOSM*MQ=4TJ^)KY5VTxHvAb~=HEa{^Dxu!auj#Dh1 ziX}!$jH9vzNRvPsD9|#~mQJN0N&%_UQCgOQ5L%X~GoJT7Pi_|d+VkPgz2}~L&-1)l z->Z7Z&<*T%yR#HvY&M(2;Xr~|oPcM}ggK(s0CUb_&;J-uAtI5I1Vm7*l!PQl0A(OG zrETNKbwfLz*mmu}7H0(9qA$w><>~IVz{E*lBIi$LNkYkm%76t}sN2R5eaSuN4=<}C zYp&jxr+a>73*c}uKx$n})^C6F-Oje&Is9PsO;hp!Bo_h&1E{gRHFM-o9e87}$#4aL z7C=V8mMRQ*2DjaP8)xD>7-v@*ut2*pvF91wVu=ApZf7oJG3ZUcW?<8o$a-UHi85f@ z9A3tw*C+C)1CaCWfh`};{PWShTwpBQl29^%aR%K6XFoe}+>$=zY~coIydQafCcbN| z)q9ehy?cBPGh+w-ku7(0$@SHIZFISDcr$P(dv5Xsdm*C%NAQ9-|JML;^{&^C>@XL2 z`(9W(A8Q@6crh`6s~`fEoe#ay)u!Ri3zIpN*v=M4n$vG^P(zhBU;%grH@O!;X^pI! zf^qF)93@sz14w@A(^PA6@5AZ8`3%88$>WnL+<*gwDsMeAwa;k55rb1piz5JKb$Fp= zbU%>RKLNsvOc}_Vl0XCg6~R$ca2P945^PBX*mZTy`G;PyL=+8BasxI5=F4NIizCtk zkOO5hlv*(5`g(!6bdlhc%785A*|XeuWV`W*IikFPWp||>QM>k_vV9skl>%kJg1Z>q z;RVOd$5H~ixdD~}2;i!}&8|*~7zqGz$qg8}!W~_)hUSC>!0SW#5@4x&;sza0w9g-a zlpCN0V`ac$HjpD$g?_R|)+`o_tN_55$)wc2oYy{^!gequAt)FK#WrE?d}<3XBGGpn zkkheb4rtdOYL_#rC_RKSV8Iz|;Uew&Y(>YcE;PCl+2s~8+9wI^$~Y3Bm_zr;r zD-d0g)ykU-TGzax)CFb302u93!h9v8wa+NZfQSnQtXnci#s%_^;?}Y=JZEmd&l137 zv4QE*Xid*zb@yUn#NlX49dH|B!2mcvmAi27FR*|N;1lEw&AFm0<}aSeY9y82tJ>9R zN7vKFzTc@wWY?F>HpF+yCfKilq})C_E}RWM+UpKRO% ze^`+7`3RsXgLtq+aw@bO$mGsX=J*K(Q*r}+jon^9yo-C(_HTG%Th8y-@k1s~&~TEg z0gw<>gr4EC1jdgW6Z?qL!eGe_xCjw{3w)`p?>7D&{ehNzgJLhDF|K=%fgT>-p{B<0{t*e#CiA{SB_a618(B1Y&q$)(Kspa9A+MHxy$N@eg4 bQC0OXPJCTu9-aho00000NkvXXu0mjfj~rAw From 81ee8e26cf26e92291ee91640ea40cf32b664381 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 20 Apr 2014 01:25:12 -0400 Subject: [PATCH 084/144] Changed insulation back to wool until i can implement an insulation handler --- .../resonantinduction/electrical/Electrical.java | 4 ++-- .../electrical/wire/PartAdvancedWire.java | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index 447c7fe53..28257f1d9 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -184,8 +184,8 @@ public class Electrical GameRegistry.addRecipe(new ShapedOreRecipe(tierThreeBattery, "RRR", "RIR", "RRR", 'R', tierTwoBattery, 'I', Block.blockDiamond)); /** Wires **/ - GameRegistry.addRecipe(new ShapelessOreRecipe(itemInsulation, Item.slimeBall, new ItemStack(Block.cloth, 2, OreDictionary.WILDCARD_VALUE))); - GameRegistry.addRecipe(new ShapelessOreRecipe(itemInsulation, "slimeball", new ItemStack(Block.cloth, 2, OreDictionary.WILDCARD_VALUE))); + //GameRegistry.addRecipe(new ShapelessOreRecipe(itemInsulation, Item.slimeBall, new ItemStack(Block.cloth, 2, OreDictionary.WILDCARD_VALUE))); + //GameRegistry.addRecipe(new ShapelessOreRecipe(itemInsulation, "slimeball", new ItemStack(Block.cloth, 2, OreDictionary.WILDCARD_VALUE))); GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.COPPER.getWire(3), "MMM", 'M', "ingotCopper")); GameRegistry.addRecipe(new ShapedOreRecipe(EnumWireMaterial.TIN.getWire(3), "MMM", 'M', "ingotTin")); diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java index 43b9773ef..040a5ec4f 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import net.minecraft.block.Block; import net.minecraft.block.BlockColored; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -34,7 +35,7 @@ public abstract class PartAdvancedWire extends PartConductor public EnumWireMaterial material = EnumWireMaterial.COPPER; public boolean isInsulated = false; - protected Item insulationType = Electrical.itemInsulation; + protected ItemStack insulationType = new ItemStack(Block.cloth); /** INTERNAL USE. Can this conductor connect with an external object? */ @Override @@ -205,13 +206,13 @@ public abstract class PartAdvancedWire extends PartConductor this.setColor(dyeColor); return true; } - else if (itemStack.getItem() == insulationType) + else if (itemStack.itemID == insulationType.itemID) { if (this.isInsulated()) { if (!world().isRemote && player.capabilities.isCreativeMode) { - tile().dropItems(Collections.singletonList(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color)))); + tile().dropItems(Collections.singletonList(insulationType)); } this.setInsulated(false); @@ -232,7 +233,7 @@ public abstract class PartAdvancedWire extends PartConductor { if (!world().isRemote && !player.capabilities.isCreativeMode) { - tile().dropItems(Collections.singletonList(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color)))); + tile().dropItems(Collections.singletonList(insulationType)); } this.setInsulated(false); @@ -257,7 +258,7 @@ public abstract class PartAdvancedWire extends PartConductor if (this.isInsulated) { - drops.add(new ItemStack(insulationType, 1, BlockColored.getBlockFromDye(color))); + drops.add(insulationType.copy()); } return drops; From c8d41fa55ecee28a98ece5d2b5daeb1c47fed70d Mon Sep 17 00:00:00 2001 From: tgame14 Date: Sun, 20 Apr 2014 15:02:16 +0300 Subject: [PATCH 085/144] Cleanup of Item railings --- .../electrical/itemrailing/GridRailing.java | 9 ++- .../electrical/itemrailing/NodeRailing.java | 78 +++++++++++++++---- .../electrical/itemrailing/PartRailing.java | 3 +- .../electrical/itemrailing/RenderRailing.java | 17 ++++ .../itemrailing/interfaces/IItemRailing.java | 2 - .../interfaces/IItemRailingProvider.java | 14 ++++ 6 files changed, 101 insertions(+), 22 deletions(-) create mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java create mode 100644 electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index 6f7215a56..d91d343fa 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -1,6 +1,7 @@ package resonantinduction.electrical.itemrailing; import calclavia.lib.grid.NodeGrid; +import calclavia.lib.grid.TickingGrid; import net.minecraft.item.ItemStack; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; @@ -11,11 +12,13 @@ import java.util.Arrays; * @since 18/03/14 * @author tgame14 */ -public class GridRailing extends NodeGrid +public class GridRailing extends TickingGrid { - public GridRailing (Class type) + public final static String CATEGORY_RAILING = "Item_Railings"; + + public GridRailing (NodeRailing railing, Class type) { - super(type); + super(railing, type); } public IItemRailing findTargetForIItemTransfer(IItemRailingTransfer itemwrapper) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index 4e16bfbe4..22891aa18 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -1,42 +1,94 @@ package resonantinduction.electrical.itemrailing; +import calclavia.lib.config.Config; import calclavia.lib.grid.Node; import calclavia.lib.render.EnumColor; +import calclavia.lib.type.Pair; import com.google.common.collect.Lists; import net.minecraft.inventory.IInventory; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailingProvider; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; import universalelectricity.api.vector.IVectorWorld; import universalelectricity.api.vector.VectorWorld; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; +import java.util.*; /** * @author tgame14 * @since 18/03/14 */ -public class NodeRailing extends Node implements IVectorWorld, IItemRailing +public class NodeRailing extends Node implements IVectorWorld, IItemRailing { + private int maxItemSpeed; + private byte connectionMap; private EnumColor color; - private Set itemNodeSet; + + @Config(category = GridRailing.CATEGORY_RAILING) + private static int MAX_TICKS_IN_RAILING = 5; + + /** hold a timer here per item */ + private Set> itemNodeSet; + public NodeRailing(PartRailing parent) { super(parent); - this.itemNodeSet = new HashSet(); + this.itemNodeSet = new HashSet>(); this.color = null; + this.connectionMap = Byte.parseByte("111111", 2); + this.maxItemSpeed = 20; + } + + public NodeRailing setConnection(byte connectionMap) + { + this.connectionMap = connectionMap; + return this; + } + + @Override + public void update(float deltaTime) + { + if (!world().isRemote) + { + Iterator> iterator = new HashMap(getConnections()).entrySet().iterator(); + + for (Pair pair : this.itemNodeSet) + { + if (pair.right() <= 0) + { + //TODO move to next item railing + + } + else + { + pair.setRight(pair.right() - 1); + } + + + } + + while (iterator.hasNext()) + { + Map.Entry entry = iterator.next(); + Object obj = entry.getKey(); + + if (obj instanceof NodeRailing) + { + + } + } + + } } @Override protected GridRailing newGrid() { - return new GridRailing(getClass()); + return new GridRailing(this, getClass()); } @Override @@ -91,13 +143,7 @@ public class NodeRailing extends Node im @Override public VectorWorld getWorldPos() { - return parent.getWorldPos(); - } - - @Override - public Map getConnectionMap() - { - return this.getConnections(); + return (VectorWorld) parent.getWorldPos(); } @Override @@ -117,7 +163,7 @@ public class NodeRailing extends Node im @Override public boolean isLeaf() { - return parent.getConnections().length < 2; + return connectionMap < 2; } diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index defe87c35..b9dd68493 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -10,6 +10,7 @@ import net.minecraftforge.common.ForgeDirection; import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.electrical.Electrical; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailingProvider; import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; @@ -21,7 +22,7 @@ import java.lang.reflect.Constructor; * @since 16/03/14 * @author tgame14 */ -public class PartRailing extends PartFramedConnection implements IConductor, INodeProvider +public class PartRailing extends PartFramedConnection implements IConductor, IItemRailingProvider { public static enum EnumRailing diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java new file mode 100644 index 000000000..1b14b4afe --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java @@ -0,0 +1,17 @@ +package resonantinduction.electrical.itemrailing; + +import calclavia.lib.render.item.ISimpleItemRenderer; +import net.minecraft.item.ItemStack; + +/** + * @author tgame14 + * @since 20/04/14 + */ +public class RenderRailing implements ISimpleItemRenderer +{ + @Override + public void renderInventoryItem(ItemStack itemStack) + { + + } +} diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java index 935888065..a5ef23d7d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java @@ -26,8 +26,6 @@ public interface IItemRailing extends INode public VectorWorld getWorldPos(); - public Map getConnectionMap(); - public IInventory[] getInventoriesNearby(); public boolean isLeaf(); diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java new file mode 100644 index 000000000..dbd5c50f6 --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java @@ -0,0 +1,14 @@ +package resonantinduction.electrical.itemrailing.interfaces; + +import calclavia.lib.grid.INodeProvider; +import universalelectricity.api.vector.IVectorWorld; +import universalelectricity.api.vector.VectorWorld; + +/** + * @author tgame14 + * @since 20/04/14 + */ +public interface IItemRailingProvider extends INodeProvider +{ + public IVectorWorld getWorldPos(); +} From 124192bcdf4128d5d21ec3fe83759a303bbd8d3b Mon Sep 17 00:00:00 2001 From: tgame14 Date: Sun, 20 Apr 2014 15:13:15 +0300 Subject: [PATCH 086/144] Cleaned up direction map of IItemRailing --- .../electrical/itemrailing/NodeRailing.java | 6 ++++++ .../electrical/itemrailing/interfaces/IItemRailing.java | 2 ++ 2 files changed, 8 insertions(+) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index e62867f89..dfb555960 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -146,6 +146,12 @@ public class NodeRailing extends Node return (VectorWorld) parent.getWorldPos(); } + @Override + public Map getConnectionMap() + { + return new HashMap(this.getConnections()); + } + @Override public IInventory[] getInventoriesNearby() { diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java index a5ef23d7d..08660458c 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java @@ -26,6 +26,8 @@ public interface IItemRailing extends INode public VectorWorld getWorldPos(); + public Map getConnectionMap(); + public IInventory[] getInventoriesNearby(); public boolean isLeaf(); From 7669547a75c21f7cbc8d4a6e43f5da6a1d047ab5 Mon Sep 17 00:00:00 2001 From: tgame14 Date: Mon, 21 Apr 2014 13:03:37 +0300 Subject: [PATCH 087/144] small cleanup --- .../resonantinduction/electrical/itemrailing/NodeRailing.java | 2 +- .../resonantinduction/electrical/itemrailing/PartRailing.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index dfb555960..54ce18afd 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -34,7 +34,7 @@ public class NodeRailing extends Node private Set> itemNodeSet; - public NodeRailing(PartRailing parent) + public NodeRailing(IItemRailingProvider parent) { super(parent); this.itemNodeSet = new HashSet>(); diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index b9dd68493..64d61e2b2 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -35,13 +35,13 @@ public class PartRailing extends PartFramedConnection Date: Mon, 21 Apr 2014 14:10:05 +0300 Subject: [PATCH 088/144] Reworked @Config to support any phase loading --- src/main/scala/resonantinduction/core/ResonantInduction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/resonantinduction/core/ResonantInduction.java b/src/main/scala/resonantinduction/core/ResonantInduction.java index 578c7a9be..516c5f9a9 100644 --- a/src/main/scala/resonantinduction/core/ResonantInduction.java +++ b/src/main/scala/resonantinduction/core/ResonantInduction.java @@ -141,7 +141,7 @@ public class ResonantInduction @ForgeSubscribe public void configAnnotationAdded(ConfigAnnotationEvent event) { - if (event.sourceClass.startsWith(Settings.DOMAIN)) + if (event.sourceClass.getName().startsWith(Settings.DOMAIN)) { ConfigHandler.handleClass(event.sourceClass, Settings.CONFIGURATION); } From 159e8ecc26441fb1f5aaf7b77e0e1bf8952543ef Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 24 Apr 2014 15:10:17 -0400 Subject: [PATCH 089/144] Added electrical damage to framed wires --- .../wire/framed/PartFramedWire.java | 513 +++++++++--------- 1 file changed, 261 insertions(+), 252 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java index 7ea27be15..026bf57a8 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java @@ -8,9 +8,12 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; +import calclavia.lib.prefab.damage.ElectricalDamage; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; @@ -22,6 +25,7 @@ import resonantinduction.electrical.Electrical; import resonantinduction.electrical.wire.EnumWireMaterial; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalClass; +import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; @@ -46,306 +50,311 @@ import cpw.mods.fml.relauncher.SideOnly; @UniversalClass public class PartFramedWire extends PartFramedConnection implements IConductor, TSlottedPart, JNormalOcclusion, IHollowConnect { - public PartFramedWire() - { - super(Electrical.itemInsulation); - if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) - breakIcon = RenderFramedWire.breakIcon; - } + public PartFramedWire() + { + super(Electrical.itemInsulation); + if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) + breakIcon = RenderFramedWire.breakIcon; + } - public PartFramedWire(EnumWireMaterial type) - { - this(); - material = type; - } + public PartFramedWire(EnumWireMaterial type) + { + this(); + material = type; + } - public PartFramedWire(int typeID) - { - this(EnumWireMaterial.values()[typeID]); - } + public PartFramedWire(int typeID) + { + this(EnumWireMaterial.values()[typeID]); + } - @Override - public String getType() - { - return "resonant_induction_wire"; - } + @Override + public String getType() + { + return "resonant_induction_wire"; + } - /** - * IC2 Functions - */ - @Override - public void onWorldJoin() - { - if (tile() instanceof IEnergyTile && !world().isRemote) - { - // Check if there's another part that's an IEnergyTile - boolean foundAnotherPart = false; + /** IC2 Functions */ + @Override + public void onWorldJoin() + { + if (tile() instanceof IEnergyTile && !world().isRemote) + { + // Check if there's another part that's an IEnergyTile + boolean foundAnotherPart = false; - for (int i = 0; i < tile().partList().size(); i++) - { - TMultiPart part = tile().partMap(i); + for (int i = 0; i < tile().partList().size(); i++) + { + TMultiPart part = tile().partMap(i); - if (part instanceof IEnergyTile && part != this) - { - foundAnotherPart = true; - break; - } - } + if (part instanceof IEnergyTile && part != this) + { + foundAnotherPart = true; + break; + } + } - if (!foundAnotherPart) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile) tile())); - } - } + if (!foundAnotherPart) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile) tile())); + } + } - super.onWorldJoin(); - } + super.onWorldJoin(); + } - @Override - public void preRemove() - { - if (!world().isRemote) - { - this.getNetwork().split(this); + @Override + public void preRemove() + { + if (!world().isRemote) + { + this.getNetwork().split(this); - if (tile() instanceof IEnergyTile) - { - // Check if there's another part that's an IEnergyTile - boolean foundAnotherPart = false; + if (tile() instanceof IEnergyTile) + { + // Check if there's another part that's an IEnergyTile + boolean foundAnotherPart = false; - for (int i = 0; i < tile().partList().size(); i++) - { - TMultiPart part = tile().partMap(i); + for (int i = 0; i < tile().partList().size(); i++) + { + TMultiPart part = tile().partMap(i); - if (part instanceof IEnergyTile && part != this) - { - foundAnotherPart = true; - break; - } - } + if (part instanceof IEnergyTile && part != this) + { + foundAnotherPart = true; + break; + } + } - if (!foundAnotherPart) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) tile())); - } - } - } + if (!foundAnotherPart) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) tile())); + } + } + } - super.preRemove(); - } + super.preRemove(); + } - @Override - public boolean doesTick() - { - return false; - } + @Override + public boolean doesTick() + { + return false; + } - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) - { - if (!world().isRemote) - System.out.println(getNetwork()); + @Override + public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) + { + if (!world().isRemote) + System.out.println(getNetwork()); - if (item != null) - { - if (item.getItem().itemID == Block.lever.blockID) - { - TileMultipart tile = tile(); - World w = world(); + if (item != null) + { + if (item.getItem().itemID == Block.lever.blockID) + { + TileMultipart tile = tile(); + World w = world(); - if (!w.isRemote) - { - PartFramedSwitchWire wire = (PartFramedSwitchWire) MultiPartRegistry.createPart("resonant_induction_switch_wire", false); - wire.copyFrom(this); + if (!w.isRemote) + { + PartFramedSwitchWire wire = (PartFramedSwitchWire) MultiPartRegistry.createPart("resonant_induction_switch_wire", false); + wire.copyFrom(this); - if (tile.canReplacePart(this, wire)) - { - tile.remPart(this); - TileMultipart.addPart(w, new BlockCoord(tile), wire); + if (tile.canReplacePart(this, wire)) + { + tile.remPart(this); + TileMultipart.addPart(w, new BlockCoord(tile), wire); - if (!player.capabilities.isCreativeMode) - { - player.inventory.decrStackSize(player.inventory.currentItem, 1); - } - } - } - return true; - } - } + if (!player.capabilities.isCreativeMode) + { + player.inventory.decrStackSize(player.inventory.currentItem, 1); + } + } + } + return true; + } + } - return super.activate(player, part, item); - } + return super.activate(player, part, item); + } - @Override - public void preparePlacement(int meta) - { - this.setMaterial(meta); - } + @Override + public void preparePlacement(int meta) + { + this.setMaterial(meta); + } - @Override - public Iterable getCollisionBoxes() - { - Set collisionBoxes = new HashSet(); - collisionBoxes.addAll((Collection) getSubParts()); - return collisionBoxes; - } + @Override + public Iterable getCollisionBoxes() + { + Set collisionBoxes = new HashSet(); + collisionBoxes.addAll((Collection) getSubParts()); + return collisionBoxes; + } - @Override - public float getStrength(MovingObjectPosition hit, EntityPlayer player) - { - return 10F; - } + @Override + public float getStrength(MovingObjectPosition hit, EntityPlayer player) + { + return 10F; + } - @Override - @SideOnly(Side.CLIENT) - public void renderStatic(codechicken.lib.vec.Vector3 pos, LazyLightMatrix olm, int pass) - { - if (pass == 0) - { - RenderFramedWire.INSTANCE.renderStatic(this); - } - } + @Override + @SideOnly(Side.CLIENT) + public void renderStatic(codechicken.lib.vec.Vector3 pos, LazyLightMatrix olm, int pass) + { + if (pass == 0) + { + RenderFramedWire.INSTANCE.renderStatic(this); + } + } - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(codechicken.lib.vec.Vector3 pos, float frame, int pass) - { - if (getMaterial() == EnumWireMaterial.SILVER) - { - RenderFramedWire.INSTANCE.renderShine(this, pos.x, pos.y, pos.z, frame); - } - } + @Override + @SideOnly(Side.CLIENT) + public void renderDynamic(codechicken.lib.vec.Vector3 pos, float frame, int pass) + { + if (getMaterial() == EnumWireMaterial.SILVER) + { + RenderFramedWire.INSTANCE.renderShine(this, pos.x, pos.y, pos.z, frame); + } + } - @Override - public void drawBreaking(RenderBlocks renderBlocks) - { - CCRenderState.reset(); - RenderUtils.renderBlock(sides[6], 0, new Translation(x(), y(), z()), new IconTransformation(renderBlocks.overrideBlockTexture), null); - } + @Override + public void drawBreaking(RenderBlocks renderBlocks) + { + CCRenderState.reset(); + RenderUtils.renderBlock(sides[6], 0, new Translation(x(), y(), z()), new IconTransformation(renderBlocks.overrideBlockTexture), null); + } - @Override - public Iterable getOcclusionBoxes() - { - return getCollisionBoxes(); - } + @Override + public Iterable getOcclusionBoxes() + { + return getCollisionBoxes(); + } - @Override - public int getSlotMask() - { - return PartMap.CENTER.mask; - } + @Override + public int getSlotMask() + { + return PartMap.CENTER.mask; + } - @Override - public int getHollowSize() - { - return isInsulated ? 8 : 6; - } + @Override + public int getHollowSize() + { + return isInsulated ? 8 : 6; + } - @Override - protected boolean canConnectTo(TileEntity tile, ForgeDirection side) - { - Object obj = tile instanceof TileMultipart ? ((TileMultipart) tile).partMap(ForgeDirection.UNKNOWN.ordinal()) : tile; - return canConnect(side, obj); - } + @Override + protected boolean canConnectTo(TileEntity tile, ForgeDirection side) + { + Object obj = tile instanceof TileMultipart ? ((TileMultipart) tile).partMap(ForgeDirection.UNKNOWN.ordinal()) : tile; + return canConnect(side, obj); + } - @Override - public IConductor getConnector(TileEntity tile) - { - if (tile instanceof IConductor) - return (IConductor) ((IConductor) tile).getInstance(ForgeDirection.UNKNOWN); + @Override + public IConductor getConnector(TileEntity tile) + { + if (tile instanceof IConductor) + return (IConductor) ((IConductor) tile).getInstance(ForgeDirection.UNKNOWN); - return null; - } + return null; + } - /** Shouldn't need to be overridden. Override connectionPrevented instead */ - @Override - public boolean canConnect(ForgeDirection from, Object obj) - { - if (isBlockedOnSide(from)) - return false; + /** Shouldn't need to be overridden. Override connectionPrevented instead */ + @Override + public boolean canConnect(ForgeDirection from, Object obj) + { + if (isBlockedOnSide(from)) + return false; - if (obj instanceof PartFramedWire) - { - if (world().isBlockIndirectlyGettingPowered(x(), y(), z())) - { - return false; - } + if (obj instanceof PartFramedWire) + { + if (world().isBlockIndirectlyGettingPowered(x(), y(), z())) + { + return false; + } - PartFramedWire wire = (PartFramedWire) obj; + PartFramedWire wire = (PartFramedWire) obj; - if (this.getMaterial() == wire.getMaterial()) - { - if (isInsulated() && wire.isInsulated()) - { - return getColor() == wire.getColor() || (getColor() == DEFAULT_COLOR || wire.getColor() == DEFAULT_COLOR); - } + if (this.getMaterial() == wire.getMaterial()) + { + if (isInsulated() && wire.isInsulated()) + { + return getColor() == wire.getColor() || (getColor() == DEFAULT_COLOR || wire.getColor() == DEFAULT_COLOR); + } - return true; - } + return true; + } - return false; - } + return false; + } - return CompatibilityModule.canConnect(obj, from.getOpposite(), this); - } + return CompatibilityModule.canConnect(obj, from.getOpposite(), this); + } - @Override - public float getResistance() - { - return this.getMaterial().resistance; - } + @Override + public float getResistance() + { + return this.getMaterial().resistance; + } - public void copyFrom(PartFramedWire otherCable) - { - this.isInsulated = otherCable.isInsulated; - this.color = otherCable.color; - this.connections = otherCable.connections; - this.material = otherCable.material; - this.currentWireConnections = otherCable.currentWireConnections; - this.currentAcceptorConnections = otherCable.currentAcceptorConnections; - this.setNetwork(otherCable.getNetwork()); - this.getNetwork().setBufferFor(this, otherCable.getInstance(ForgeDirection.UNKNOWN).getNetwork().getBufferOf(otherCable)); - } + public void copyFrom(PartFramedWire otherCable) + { + this.isInsulated = otherCable.isInsulated; + this.color = otherCable.color; + this.connections = otherCable.connections; + this.material = otherCable.material; + this.currentWireConnections = otherCable.currentWireConnections; + this.currentAcceptorConnections = otherCable.currentAcceptorConnections; + this.setNetwork(otherCable.getNetwork()); + this.getNetwork().setBufferFor(this, otherCable.getInstance(ForgeDirection.UNKNOWN).getNetwork().getBufferOf(otherCable)); + } - @Override - public IEnergyNetwork getNetwork() - { - if (network == null) - { - setNetwork(EnergyNetworkLoader.getNewNetwork(this)); - } + @Override + public IEnergyNetwork getNetwork() + { + if (network == null) + { + setNetwork(EnergyNetworkLoader.getNewNetwork(this)); + } - return network; - } + return network; + } - @Override - public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) - { - return this.getNetwork().produce(this, from.getOpposite(), receive, doReceive); - } + @Override + public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) + { + return this.getNetwork().produce(this, from.getOpposite(), receive, doReceive); + } - @Override - public long onExtractEnergy(ForgeDirection from, long request, boolean doExtract) - { - return 0; - } + @Override + public long onExtractEnergy(ForgeDirection from, long request, boolean doExtract) + { + return 0; + } - @Override - public long getCurrentCapacity() - { - return this.getMaterial().maxAmps; - } + @Override + public long getCurrentCapacity() + { + return this.getMaterial().maxAmps; + } - @Override - public void setMaterial(int i) - { - setMaterial(EnumWireMaterial.values()[i]); - } + @Override + public void setMaterial(int i) + { + setMaterial(EnumWireMaterial.values()[i]); + } - @Override - protected ItemStack getItem() - { - return new ItemStack(Electrical.itemWire, 1, getMaterialID()); - } + @Override + protected ItemStack getItem() + { + return new ItemStack(Electrical.itemWire, 1, getMaterialID()); + } + + @Override + public void onEntityCollision(Entity entity) + { + if (!this.isInsulated() && this.getNetwork() instanceof IElectricalNetwork) + ElectricalDamage.handleElectrocution(entity, this, (IElectricalNetwork) this.getNetwork()); + } } \ No newline at end of file From 8aab86ae3a3636d42781172a0410a38f24c1e238 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 24 Apr 2014 15:49:02 -0400 Subject: [PATCH 090/144] Changed crate to update every few ticks to fix some cases crates would not sync to client --- .../archaic/crate/TileCrate.java | 590 +++++++++--------- 1 file changed, 287 insertions(+), 303 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index 20210295a..af555d824 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -1,11 +1,5 @@ package resonantinduction.archaic.crate; -import calclavia.api.resonantinduction.IFilterable; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileExternalInventory; -import calclavia.lib.utility.inventory.IExtendedStorage; -import com.google.common.io.ByteArrayDataInput; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -14,338 +8,328 @@ import net.minecraft.network.packet.Packet; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; import resonantinduction.core.ResonantInduction; +import calclavia.api.resonantinduction.IFilterable; +import calclavia.lib.network.IPacketReceiver; +import calclavia.lib.network.PacketHandler; +import calclavia.lib.prefab.tile.TileExternalInventory; +import calclavia.lib.utility.inventory.IExtendedStorage; -/** - * Basic single stack inventory. +import com.google.common.io.ByteArrayDataInput; + +/** Basic single stack inventory. *

* TODO: Add filter-locking feature. Put filter in, locks the crate to only use that item. - * - * @author DarkGuardsman - */ -public class TileCrate extends TileExternalInventory - implements IPacketReceiver, IExtendedStorage, IFilterable + * + * @author DarkGuardsman */ +public class TileCrate extends TileExternalInventory implements IPacketReceiver, IExtendedStorage, IFilterable { - /** - * max meta size of the crate - */ - public static final int maxSize = 2; + /** max meta size of the crate */ + public static final int maxSize = 2; - /** - * delay from last click - */ - public long prevClickTime = -1000; + /** delay from last click */ + public long prevClickTime = -1000; - /** - * Check to see if oreName items can be force stacked - */ - public boolean oreFilterEnabled = false; + /** Check to see if oreName items can be force stacked */ + public boolean oreFilterEnabled = false; - /** - * Collective total stack of all inv slots - */ - private ItemStack sampleStack; - private ItemStack filterStack; + /** Collective total stack of all inv slots */ + private ItemStack sampleStack; + private ItemStack filterStack; - /** - * Gets the slot count for the crate meta - */ - public static int getSlotCount(int metadata) - { - if (metadata >= 2) - { - return 256; - } - else if (metadata >= 1) - { - return 64; - } - return 32; - } + private long updateTick = 1; - @Override - public InventoryCrate getInventory() - { - if (this.inventory == null) - { - inventory = new InventoryCrate(this); - } - return (InventoryCrate) this.inventory; - } + @Override + public void updateEntity() + { + super.updateEntity(); + if (!worldObj.isRemote && ticks % updateTick == 0) + { + //Send desc packet, done already in onInventoryChanged() + onInventoryChanged(); + updateTick = 5 + worldObj.rand.nextInt(50); + } + } - /** - * Gets the sample stack that represent the total inventory - */ - public ItemStack getSampleStack() - { - if (this.sampleStack == null) - { - this.buildSampleStack(); - } - return this.sampleStack; - } + /** Gets the slot count for the crate meta */ + public static int getSlotCount(int metadata) + { + if (metadata >= 2) + { + return 256; + } + else if (metadata >= 1) + { + return 64; + } + return 32; + } - /** - * Builds the sample stack using the inventory as a point of reference. Assumes all items match - * each other, and only takes into account stack sizes - */ - public void buildSampleStack() - { - ItemStack newSampleStack = null; - boolean rebuildBase = false; + @Override + public InventoryCrate getInventory() + { + if (this.inventory == null) + { + inventory = new InventoryCrate(this); + } + return (InventoryCrate) this.inventory; + } + + /** Gets the sample stack that represent the total inventory */ + public ItemStack getSampleStack() + { + if (this.sampleStack == null) + { + this.buildSampleStack(); + } + return this.sampleStack; + } + + /** Builds the sample stack using the inventory as a point of reference. Assumes all items match + * each other, and only takes into account stack sizes */ + public void buildSampleStack() + { + ItemStack newSampleStack = null; + boolean rebuildBase = false; /* Creates the sample stack that is used as a collective itemstack */ - for (int slot = 0; slot < this.getSizeInventory(); slot++) - { - ItemStack slotStack = this.getInventory().getContainedItems()[slot]; - if (slotStack != null && Item.itemsList[slotStack.itemID] != null && slotStack.stackSize > 0) - { - if (newSampleStack == null) - { - newSampleStack = slotStack.copy(); - } - else - { - newSampleStack.stackSize += slotStack.stackSize; - } + for (int slot = 0; slot < this.getSizeInventory(); slot++) + { + ItemStack slotStack = this.getInventory().getContainedItems()[slot]; + if (slotStack != null && Item.itemsList[slotStack.itemID] != null && slotStack.stackSize > 0) + { + if (newSampleStack == null) + { + newSampleStack = slotStack.copy(); + } + else + { + newSampleStack.stackSize += slotStack.stackSize; + } - if (slotStack.stackSize > slotStack.getMaxStackSize()) - { - rebuildBase = true; - } - } - } - if (newSampleStack == null || newSampleStack.itemID == 0 || newSampleStack.stackSize <= 0) - { - this.sampleStack = this.getFilter() != null ? this.getFilter().copy() : null; - } - else - { - this.sampleStack = newSampleStack.copy(); - } + if (slotStack.stackSize > slotStack.getMaxStackSize()) + { + rebuildBase = true; + } + } + } + if (newSampleStack == null || newSampleStack.itemID == 0 || newSampleStack.stackSize <= 0) + { + this.sampleStack = this.getFilter() != null ? this.getFilter().copy() : null; + } + else + { + this.sampleStack = newSampleStack.copy(); + } /* Rebuild inventory if the inventory is not valid */ - if (this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) - { - this.getInventory().buildInventory(this.sampleStack); - } - } + if (this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) + { + this.getInventory().buildInventory(this.sampleStack); + } + } - @Override - public ItemStack addStackToStorage(ItemStack stack) - { - return BlockCrate.addStackToCrate(this, stack); - } + @Override + public ItemStack addStackToStorage(ItemStack stack) + { + return BlockCrate.addStackToCrate(this, stack); + } - /** - * Adds an item to the stack - */ - public void addToStack(ItemStack stack, int amount) - { - if (stack != null) - { - ItemStack newStack = stack.copy(); - newStack.stackSize = amount; - this.addToStack(newStack); - } - } + /** Adds an item to the stack */ + public void addToStack(ItemStack stack, int amount) + { + if (stack != null) + { + ItemStack newStack = stack.copy(); + newStack.stackSize = amount; + this.addToStack(newStack); + } + } - /** - * Adds the stack to the sample stack - */ - public void addToStack(ItemStack stack) - { - if (stack != null && stack.stackSize > 0) - { - if (this.getSampleStack() == null) - { - this.sampleStack = stack; - getInventory().buildInventory(getSampleStack()); - } - else if (this.getSampleStack().isItemEqual(stack) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))) - { - getSampleStack().stackSize += stack.stackSize; - getInventory().buildInventory(getSampleStack()); - } - } - } + /** Adds the stack to the sample stack */ + public void addToStack(ItemStack stack) + { + if (stack != null && stack.stackSize > 0) + { + if (this.getSampleStack() == null) + { + this.sampleStack = stack; + getInventory().buildInventory(getSampleStack()); + } + else if (this.getSampleStack().isItemEqual(stack) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))) + { + getSampleStack().stackSize += stack.stackSize; + getInventory().buildInventory(getSampleStack()); + } + } + } - @Override - public ItemStack decrStackSize(int slot, int amount) - { - if (sampleStack != null) - { - ItemStack var3; + @Override + public ItemStack decrStackSize(int slot, int amount) + { + if (sampleStack != null) + { + ItemStack var3; - if (sampleStack.stackSize <= amount) - { - var3 = sampleStack; - sampleStack = null; - this.onInventoryChanged(); - getInventory().buildInventory(getSampleStack()); - return var3; - } - else - { - var3 = sampleStack.splitStack(amount); + if (sampleStack.stackSize <= amount) + { + var3 = sampleStack; + sampleStack = null; + this.onInventoryChanged(); + getInventory().buildInventory(getSampleStack()); + return var3; + } + else + { + var3 = sampleStack.splitStack(amount); - if (sampleStack.stackSize == 0) - { - sampleStack = null; - } + if (sampleStack.stackSize == 0) + { + sampleStack = null; + } - getInventory().buildInventory(getSampleStack()); - onInventoryChanged(); - return var3; - } - } - else - { - return null; - } - } + getInventory().buildInventory(getSampleStack()); + onInventoryChanged(); + return var3; + } + } + else + { + return null; + } + } - @Override - public void onInventoryChanged() - { - super.onInventoryChanged(); + @Override + public void onInventoryChanged() + { + super.onInventoryChanged(); - if (worldObj != null && !worldObj.isRemote) - { - PacketHandler.sendPacketToClients(getDescriptionPacket(), this.worldObj); - } - } + if (worldObj != null && !worldObj.isRemote) + { + PacketHandler.sendPacketToClients(getDescriptionPacket(), this.worldObj); + } + } - @Override - public boolean canStore(ItemStack stack, int slot, ForgeDirection side) - { - return getSampleStack() == null || stack != null && (stack.isItemEqual(getSampleStack()) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))); - } + @Override + public boolean canStore(ItemStack stack, int slot, ForgeDirection side) + { + return getSampleStack() == null || stack != null && (stack.isItemEqual(getSampleStack()) || (this.oreFilterEnabled && OreDictionary.getOreID(getSampleStack()) == OreDictionary.getOreID(stack))); + } - /** - * Gets the current slot count for the crate - */ - public int getSlotCount() - { - if (this.worldObj == null) - { - return TileCrate.getSlotCount(TileCrate.maxSize); - } - return TileCrate.getSlotCount(this.getBlockMetadata()); - } + /** Gets the current slot count for the crate */ + public int getSlotCount() + { + if (this.worldObj == null) + { + return TileCrate.getSlotCount(TileCrate.maxSize); + } + return TileCrate.getSlotCount(this.getBlockMetadata()); + } - @Override - public boolean canUpdate() - { - return false; - } + @Override + public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) + { + if (this.worldObj.isRemote) + { + try + { + if (data.readBoolean()) + { + this.sampleStack = ItemStack.loadItemStackFromNBT(PacketHandler.readNBTTagCompound(data)); + this.sampleStack.stackSize = data.readInt(); + } + else + { + this.sampleStack = null; + } + } + catch (Exception e) + { + e.printStackTrace(); + } + } + } - @Override - public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) - { - if (this.worldObj.isRemote) - { - try - { - if (data.readBoolean()) - { - this.sampleStack = ItemStack.loadItemStackFromNBT(PacketHandler.readNBTTagCompound(data)); - this.sampleStack.stackSize = data.readInt(); - } - else - { - this.sampleStack = null; - } - } - catch (Exception e) - { - e.printStackTrace(); - } - } - } + @Override + public Packet getDescriptionPacket() + { + this.buildSampleStack(); + ItemStack stack = this.getSampleStack(); + if (stack != null) + { + return ResonantInduction.PACKET_TILE.getPacket(this, true, stack.writeToNBT(new NBTTagCompound()), stack.stackSize); + } + else + { + return ResonantInduction.PACKET_TILE.getPacket(this, false); + } + } - @Override - public Packet getDescriptionPacket() - { - this.buildSampleStack(); - ItemStack stack = this.getSampleStack(); - if (stack != null) - { - return ResonantInduction.PACKET_TILE.getPacket(this, true, stack.writeToNBT(new NBTTagCompound()), stack.stackSize); - } - else - { - return ResonantInduction.PACKET_TILE.getPacket(this, false); - } - } - - /** - * NBT Data - */ - @Override - public void readFromNBT(NBTTagCompound nbt) - { - super.readFromNBT(nbt); - /* Load current two inv methods */ - ItemStack stack = null; - int count = nbt.getInteger("Count"); - if (nbt.hasKey("itemID")) - { - stack = new ItemStack(nbt.getInteger("itemID"), count, nbt.getInteger("itemMeta")); - } - else - { - stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack")); - if (stack != null) - { - stack.stackSize = count; - } - } + /** NBT Data */ + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + /* Load current two inv methods */ + ItemStack stack = null; + int count = nbt.getInteger("Count"); + if (nbt.hasKey("itemID")) + { + stack = new ItemStack(nbt.getInteger("itemID"), count, nbt.getInteger("itemMeta")); + } + else + { + stack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("stack")); + if (stack != null) + { + stack.stackSize = count; + } + } /* Only load sample stack if the read stack is valid */ - if (stack != null && stack.itemID != 0 && stack.stackSize > 0) - { - this.sampleStack = stack; - this.getInventory().buildInventory(this.sampleStack); - } - this.oreFilterEnabled = nbt.getBoolean("oreFilter"); - if (nbt.hasKey("filter")) - { - filterStack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("filter")); - } + if (stack != null && stack.itemID != 0 && stack.stackSize > 0) + { + this.sampleStack = stack; + this.getInventory().buildInventory(this.sampleStack); + } + this.oreFilterEnabled = nbt.getBoolean("oreFilter"); + if (nbt.hasKey("filter")) + { + filterStack = ItemStack.loadItemStackFromNBT(nbt.getCompoundTag("filter")); + } - } + } - @Override - public void writeToNBT(NBTTagCompound nbt) - { - super.writeToNBT(nbt); - /* Re-Build sample stack for saving */ - this.buildSampleStack(); - ItemStack stack = this.getSampleStack(); - /* Save sample stack */ - if (stack != null) - { - nbt.setInteger("Count", stack.stackSize); - nbt.setCompoundTag("stack", stack.writeToNBT(new NBTTagCompound())); - } - nbt.setBoolean("oreFilter", this.oreFilterEnabled); - if (this.filterStack != null) - { - nbt.setCompoundTag("filter", filterStack.writeToNBT(new NBTTagCompound())); - } - } + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + /* Re-Build sample stack for saving */ + this.buildSampleStack(); + ItemStack stack = this.getSampleStack(); + /* Save sample stack */ + if (stack != null) + { + nbt.setInteger("Count", stack.stackSize); + nbt.setCompoundTag("stack", stack.writeToNBT(new NBTTagCompound())); + } + nbt.setBoolean("oreFilter", this.oreFilterEnabled); + if (this.filterStack != null) + { + nbt.setCompoundTag("filter", filterStack.writeToNBT(new NBTTagCompound())); + } + } - @Override - public ItemStack getFilter() - { - return this.filterStack; - } + @Override + public ItemStack getFilter() + { + return this.filterStack; + } - @Override - public void setFilter(ItemStack filter) - { - this.filterStack = filter; - this.onInventoryChanged(); - } + @Override + public void setFilter(ItemStack filter) + { + this.filterStack = filter; + this.onInventoryChanged(); + } } From e73d80b98213ce24de8f42ec1c2beb94a1f7c7ce Mon Sep 17 00:00:00 2001 From: Robert S Date: Fri, 25 Apr 2014 00:10:30 -0400 Subject: [PATCH 091/144] Added tool tip on item lev to say its disabled --- .../electrical/levitator/ItemLevitator.java | 56 +++++++++++-------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java index 2f5b93b25..7b09d24f7 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java @@ -1,10 +1,14 @@ package resonantinduction.electrical.levitator; +import java.util.List; + import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import resonantinduction.core.prefab.part.IHighlight; +import calclavia.lib.render.EnumColor; +import calclavia.lib.utility.LanguageUtility; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.microblock.FacePlacementGrid$; @@ -14,30 +18,38 @@ import codechicken.multipart.TMultiPart; public class ItemLevitator extends JItemMultiPart implements IHighlight { - public ItemLevitator(int id) - { - super(id); - } + public ItemLevitator(int id) + { + super(id); + } - @Override - public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit) - { - side = FacePlacementGrid$.MODULE$.getHitSlot(hit, side); - PartLevitator part = (PartLevitator) MultiPartRegistry.createPart("resonant_induction_levitator", false); + @Override + @SuppressWarnings("unchecked") + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean par4) + { + list.add("\u00a7cFrom Dev's - Functionality Disabled"); - if (part != null) - { - int l = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; - int facing = l == 0 ? 2 : (l == 1 ? 5 : (l == 2 ? 3 : (l == 3 ? 4 : 0))); - part.preparePlacement(side, facing); - } + } - return part; - } + @Override + public TMultiPart newPart(ItemStack itemStack, EntityPlayer player, World world, BlockCoord pos, int side, Vector3 hit) + { + side = FacePlacementGrid$.MODULE$.getHitSlot(hit, side); + PartLevitator part = (PartLevitator) MultiPartRegistry.createPart("resonant_induction_levitator", false); - @Override - public int getHighlightType() - { - return 0; - } + if (part != null) + { + int l = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3; + int facing = l == 0 ? 2 : (l == 1 ? 5 : (l == 2 ? 3 : (l == 3 ? 4 : 0))); + part.preparePlacement(side, facing); + } + + return part; + } + + @Override + public int getHighlightType() + { + return 0; + } } From 6d68efe6979091415696d80a573788bfdab9b7d2 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 11:43:28 -0400 Subject: [PATCH 092/144] Minor change to crates in attempt to fix a waila issue --- .../archaic/crate/InventoryCrate.java | 1 - .../archaic/crate/TileCrate.java | 32 +++++++++++++------ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java index 6fba855d0..25daca6bb 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java @@ -33,7 +33,6 @@ public class InventoryCrate extends ExternalInventory break; } } - this.onInventoryChanged(); } } diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index af555d824..e540ce13c 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -37,17 +37,27 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, private ItemStack filterStack; private long updateTick = 1; + private boolean doUpdate = false; @Override public void updateEntity() { super.updateEntity(); - if (!worldObj.isRemote && ticks % updateTick == 0) + if (!worldObj.isRemote) { - //Send desc packet, done already in onInventoryChanged() - onInventoryChanged(); - updateTick = 5 + worldObj.rand.nextInt(50); + this.writeToNBT(new NBTTagCompound()); + if (ticks % updateTick == 0) + { + updateTick = 5 + worldObj.rand.nextInt(50); + doUpdate = true; + } + if (doUpdate) + { + doUpdate = false; + PacketHandler.sendPacketToClients(getDescriptionPacket(), this.worldObj); + } } + } /** Gets the slot count for the crate meta */ @@ -87,6 +97,11 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, /** Builds the sample stack using the inventory as a point of reference. Assumes all items match * each other, and only takes into account stack sizes */ public void buildSampleStack() + { + buildSampleStack(true); + } + + public void buildSampleStack(boolean buildInv) { ItemStack newSampleStack = null; boolean rebuildBase = false; @@ -122,7 +137,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, } /* Rebuild inventory if the inventory is not valid */ - if (this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) + if (buildInv && this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) { this.getInventory().buildInventory(this.sampleStack); } @@ -202,11 +217,8 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, public void onInventoryChanged() { super.onInventoryChanged(); - if (worldObj != null && !worldObj.isRemote) - { - PacketHandler.sendPacketToClients(getDescriptionPacket(), this.worldObj); - } + doUpdate = true; } @Override @@ -304,7 +316,7 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, { super.writeToNBT(nbt); /* Re-Build sample stack for saving */ - this.buildSampleStack(); + this.buildSampleStack(false); ItemStack stack = this.getSampleStack(); /* Save sample stack */ if (stack != null) From 679c1f88dca7f877514bc080cceb7d9b5c9c8079 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 11:45:14 -0400 Subject: [PATCH 093/144] Changed crate sample stack to only build server side --- .../archaic/crate/TileCrate.java | 65 ++++++++++--------- 1 file changed, 34 insertions(+), 31 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index e540ce13c..9859a1beb 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -103,43 +103,46 @@ public class TileCrate extends TileExternalInventory implements IPacketReceiver, public void buildSampleStack(boolean buildInv) { - ItemStack newSampleStack = null; - boolean rebuildBase = false; - - /* Creates the sample stack that is used as a collective itemstack */ - for (int slot = 0; slot < this.getSizeInventory(); slot++) + if (worldObj == null || !worldObj.isRemote) { - ItemStack slotStack = this.getInventory().getContainedItems()[slot]; - if (slotStack != null && Item.itemsList[slotStack.itemID] != null && slotStack.stackSize > 0) - { - if (newSampleStack == null) - { - newSampleStack = slotStack.copy(); - } - else - { - newSampleStack.stackSize += slotStack.stackSize; - } + ItemStack newSampleStack = null; + boolean rebuildBase = false; - if (slotStack.stackSize > slotStack.getMaxStackSize()) + /* Creates the sample stack that is used as a collective itemstack */ + for (int slot = 0; slot < this.getSizeInventory(); slot++) + { + ItemStack slotStack = this.getInventory().getContainedItems()[slot]; + if (slotStack != null && Item.itemsList[slotStack.itemID] != null && slotStack.stackSize > 0) { - rebuildBase = true; + if (newSampleStack == null) + { + newSampleStack = slotStack.copy(); + } + else + { + newSampleStack.stackSize += slotStack.stackSize; + } + + if (slotStack.stackSize > slotStack.getMaxStackSize()) + { + rebuildBase = true; + } } } - } - if (newSampleStack == null || newSampleStack.itemID == 0 || newSampleStack.stackSize <= 0) - { - this.sampleStack = this.getFilter() != null ? this.getFilter().copy() : null; - } - else - { - this.sampleStack = newSampleStack.copy(); - } + if (newSampleStack == null || newSampleStack.itemID == 0 || newSampleStack.stackSize <= 0) + { + this.sampleStack = this.getFilter() != null ? this.getFilter().copy() : null; + } + else + { + this.sampleStack = newSampleStack.copy(); + } - /* Rebuild inventory if the inventory is not valid */ - if (buildInv && this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) - { - this.getInventory().buildInventory(this.sampleStack); + /* Rebuild inventory if the inventory is not valid */ + if (buildInv && this.sampleStack != null && (rebuildBase || this.getInventory().getContainedItems().length > this.getSizeInventory())) + { + this.getInventory().buildInventory(this.sampleStack); + } } } From 3c2f73a27b05db65a8704ffdfa2610b3357f20cf Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 12:21:58 -0400 Subject: [PATCH 094/144] Added waila support for crates --- .../resonantinduction/archaic/Archaic.java | 228 +++++++++--------- .../archaic/waila/Waila.java | 36 +++ .../archaic/waila/WailaCrate.java | 57 +++++ .../archaic/waila/WailaRegistrar.java | 12 + .../electrical/Electrical.java | 7 + 5 files changed, 228 insertions(+), 112 deletions(-) create mode 100644 archaic/src/main/scala/resonantinduction/archaic/waila/Waila.java create mode 100644 archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java create mode 100644 archaic/src/main/scala/resonantinduction/archaic/waila/WailaRegistrar.java diff --git a/archaic/src/main/scala/resonantinduction/archaic/Archaic.java b/archaic/src/main/scala/resonantinduction/archaic/Archaic.java index 7752f98cd..c8567da83 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/Archaic.java +++ b/archaic/src/main/scala/resonantinduction/archaic/Archaic.java @@ -1,21 +1,5 @@ package resonantinduction.archaic; -import calclavia.lib.content.ContentRegistry; -import calclavia.lib.network.PacketAnnotation; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.item.ItemBlockMetadata; -import calclavia.lib.recipe.UniversalRecipe; -import cpw.mods.fml.common.Mod; -import cpw.mods.fml.common.Mod.EventHandler; -import cpw.mods.fml.common.Mod.Instance; -import cpw.mods.fml.common.ModMetadata; -import cpw.mods.fml.common.SidedProxy; -import cpw.mods.fml.common.event.FMLInitializationEvent; -import cpw.mods.fml.common.event.FMLPostInitializationEvent; -import cpw.mods.fml.common.event.FMLPreInitializationEvent; -import cpw.mods.fml.common.network.NetworkMod; -import cpw.mods.fml.common.network.NetworkRegistry; -import cpw.mods.fml.common.registry.GameRegistry; import net.minecraft.block.Block; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -41,128 +25,148 @@ import resonantinduction.archaic.process.BlockCastingMold; import resonantinduction.archaic.process.BlockMillstone; import resonantinduction.archaic.process.TileCastingMold; import resonantinduction.archaic.process.TileMillstone; +import resonantinduction.archaic.waila.Waila; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; import resonantinduction.core.TabRI; import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.core.resource.ItemHandCrank; +import calclavia.lib.content.ContentRegistry; +import calclavia.lib.modproxy.ProxyHandler; +import calclavia.lib.network.PacketAnnotation; +import calclavia.lib.network.PacketHandler; +import calclavia.lib.prefab.item.ItemBlockMetadata; +import calclavia.lib.recipe.UniversalRecipe; +import cpw.mods.fml.common.Mod; +import cpw.mods.fml.common.Mod.EventHandler; +import cpw.mods.fml.common.Mod.Instance; +import cpw.mods.fml.common.ModMetadata; +import cpw.mods.fml.common.SidedProxy; +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLPostInitializationEvent; +import cpw.mods.fml.common.event.FMLPreInitializationEvent; +import cpw.mods.fml.common.network.NetworkMod; +import cpw.mods.fml.common.network.NetworkRegistry; +import cpw.mods.fml.common.registry.GameRegistry; -/** - * Resonant Induction Archaic Module - * - * @author DarkCow, Calclavia - */ +/** Resonant Induction Archaic Module + * + * @author DarkCow, Calclavia */ @Mod(modid = Archaic.ID, name = Archaic.NAME, version = Reference.VERSION, dependencies = "required-after:" + ResonantInduction.ID) @NetworkMod(channels = Reference.CHANNEL, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) public class Archaic { - /** - * Mod Information - */ - public static final String ID = "ResonantInduction|Archaic"; - public static final String NAME = Reference.NAME + " Archaic"; - public static final ContentRegistry contentRegistry = new ContentRegistry(Settings.CONFIGURATION, Settings.idManager, ID).setPrefix(Reference.PREFIX).setTab(TabRI.DEFAULT); - @Instance(ID) - public static Archaic INSTANCE; - @SidedProxy(clientSide = "resonantinduction.archaic.ClientProxy", serverSide = "resonantinduction.archaic.CommonProxy") - public static CommonProxy proxy; - @Mod.Metadata(ID) - public static ModMetadata metadata; - public static Block blockEngineeringTable; - public static Block blockCrate; - public static Block blockImprinter; - public static Block blockTurntable; - public static Block blockFirebox; - public static Block blockHotPlate; - public static Block blockMillstone; - public static Block blockCast; - public static Item itemImprint; + /** Mod Information */ + public static final String ID = "ResonantInduction|Archaic"; + public static final String NAME = Reference.NAME + " Archaic"; + public static final ContentRegistry contentRegistry = new ContentRegistry(Settings.CONFIGURATION, Settings.idManager, ID).setPrefix(Reference.PREFIX).setTab(TabRI.DEFAULT); + @Instance(ID) + public static Archaic INSTANCE; + @SidedProxy(clientSide = "resonantinduction.archaic.ClientProxy", serverSide = "resonantinduction.archaic.CommonProxy") + public static CommonProxy proxy; + @Mod.Metadata(ID) + public static ModMetadata metadata; + public static Block blockEngineeringTable; + public static Block blockCrate; + public static Block blockImprinter; + public static Block blockTurntable; + public static Block blockFirebox; + public static Block blockHotPlate; + public static Block blockMillstone; + public static Block blockCast; + public static Item itemImprint; - // Machine and Processing - public static Item itemHammer; - public static Item itemHandCrank; - public static Block blockFilter; + // Machine and Processing + public static Item itemHammer; + public static Item itemHandCrank; + public static Block blockFilter; - // Fluid - public static Block blockGrate; - public static Block blockGutter; - public static Block blockTank; + // Fluid + public static Block blockGrate; + public static Block blockGutter; + public static Block blockTank; - @EventHandler - public void preInit(FMLPreInitializationEvent evt) - { - NetworkRegistry.instance().registerGuiHandler(this, proxy); - Settings.CONFIGURATION.load(); - blockEngineeringTable = contentRegistry.newBlock(TileEngineeringTable.class); - blockCrate = contentRegistry.createBlock(BlockCrate.class, ItemBlockCrate.class, TileCrate.class); - blockImprinter = contentRegistry.createTile(BlockImprinter.class, TileImprinter.class); - blockTurntable = contentRegistry.newBlock(TileTurntable.class); - blockFirebox = contentRegistry.createBlock(BlockFirebox.class, ItemBlockMetadata.class, TileFirebox.class); - blockHotPlate = contentRegistry.createTile(BlockHotPlate.class, TileHotPlate.class); - blockMillstone = contentRegistry.createTile(BlockMillstone.class, TileMillstone.class); - blockCast = contentRegistry.createTile(BlockCastingMold.class, TileCastingMold.class); - blockGutter = contentRegistry.newBlock(TileGutter.class); - blockGrate = contentRegistry.newBlock(TileGrate.class); - blockFilter = contentRegistry.newBlock(TileFilter.class); - blockTank = contentRegistry.newBlock(TileTank.class); + public ProxyHandler modproxies; - itemHandCrank = contentRegistry.createItem(ItemHandCrank.class); - itemImprint = contentRegistry.createItem(ItemImprint.class); - itemHammer = contentRegistry.createItem(ItemHammer.class); + @EventHandler + public void preInit(FMLPreInitializationEvent evt) + { + modproxies = new ProxyHandler(); + NetworkRegistry.instance().registerGuiHandler(this, proxy); + Settings.CONFIGURATION.load(); + blockEngineeringTable = contentRegistry.newBlock(TileEngineeringTable.class); + blockCrate = contentRegistry.createBlock(BlockCrate.class, ItemBlockCrate.class, TileCrate.class); + blockImprinter = contentRegistry.createTile(BlockImprinter.class, TileImprinter.class); + blockTurntable = contentRegistry.newBlock(TileTurntable.class); + blockFirebox = contentRegistry.createBlock(BlockFirebox.class, ItemBlockMetadata.class, TileFirebox.class); + blockHotPlate = contentRegistry.createTile(BlockHotPlate.class, TileHotPlate.class); + blockMillstone = contentRegistry.createTile(BlockMillstone.class, TileMillstone.class); + blockCast = contentRegistry.createTile(BlockCastingMold.class, TileCastingMold.class); + blockGutter = contentRegistry.newBlock(TileGutter.class); + blockGrate = contentRegistry.newBlock(TileGrate.class); + blockFilter = contentRegistry.newBlock(TileFilter.class); + blockTank = contentRegistry.newBlock(TileTank.class); - proxy.preInit(); - Settings.CONFIGURATION.save(); + itemHandCrank = contentRegistry.createItem(ItemHandCrank.class); + itemImprint = contentRegistry.createItem(ItemImprint.class); + itemHammer = contentRegistry.createItem(ItemHammer.class); - PacketAnnotation.register(TileFirebox.class); - PacketAnnotation.register(TileFilter.class); - proxy.preInit(); - } + modproxies.applyModule(Waila.class, true); + Settings.CONFIGURATION.save(); - @EventHandler - public void init(FMLInitializationEvent evt) - { - Settings.setModMetadata(metadata, ID, NAME, ResonantInduction.ID); - proxy.init(); - } + PacketAnnotation.register(TileFirebox.class); + PacketAnnotation.register(TileFilter.class); + proxy.preInit(); + modproxies.preInit(); + } - @EventHandler - public void postInit(FMLPostInitializationEvent evt) - { - TabRI.ITEMSTACK = new ItemStack(blockEngineeringTable); - if(OreDictionary.getOres("cobblestone") == null) - { - OreDictionary.registerOre("cobblestone", Block.cobblestone); - } - if(OreDictionary.getOres("stickWood") == null) + @EventHandler + public void init(FMLInitializationEvent evt) + { + Settings.setModMetadata(metadata, ID, NAME, ResonantInduction.ID); + proxy.init(); + modproxies.init(); + } + + @EventHandler + public void postInit(FMLPostInitializationEvent evt) + { + TabRI.ITEMSTACK = new ItemStack(blockEngineeringTable); + if (OreDictionary.getOres("cobblestone") == null) + { + OreDictionary.registerOre("cobblestone", Block.cobblestone); + } + if (OreDictionary.getOres("stickWood") == null) { OreDictionary.registerOre("stickWood", Item.stick); } - // Add recipes - GameRegistry.addRecipe(new ShapedOreRecipe(blockEngineeringTable, "P", "C", 'P', Block.pressurePlatePlanks, 'C', Block.workbench)); - GameRegistry.addRecipe(new ShapedOreRecipe(blockFilter, "B", "P", "B", 'B', Block.fenceIron, 'P', Item.paper)); + // Add recipes + GameRegistry.addRecipe(new ShapedOreRecipe(blockEngineeringTable, "P", "C", 'P', Block.pressurePlatePlanks, 'C', Block.workbench)); + GameRegistry.addRecipe(new ShapedOreRecipe(blockFilter, "B", "P", "B", 'B', Block.fenceIron, 'P', Item.paper)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 0), "WWW", "WSW", "WWW", 'S', "stickWood", 'W', "logWood")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 1), "WWW", "WSW", "WWW", 'S', new ItemStack(blockCrate, 1, 0), 'W', "ingotIron")); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 2), "WWW", "WSW", "WWW", 'S', new ItemStack(blockCrate, 1, 1), 'W', UniversalRecipe.PRIMARY_METAL.get())); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 0), "WWW", "WSW", "WWW", 'S', "stickWood", 'W', "logWood")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 1), "WWW", "WSW", "WWW", 'S', new ItemStack(blockCrate, 1, 0), 'W', "ingotIron")); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockCrate, 1, 2), "WWW", "WSW", "WWW", 'S', new ItemStack(blockCrate, 1, 1), 'W', UniversalRecipe.PRIMARY_METAL.get())); - GameRegistry.addRecipe(new ShapedOreRecipe(blockFirebox, "III", "SFS", "SSS", 'I', Item.ingotIron, 'F', Block.furnaceIdle, 'S', Block.stone)); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockFirebox, 1, 1), "III", "SFS", "SSS", 'I', UniversalRecipe.PRIMARY_METAL.get(), 'F', new ItemStack(blockFirebox, 1, 0), 'S', UniversalRecipe.WIRE.get())); + GameRegistry.addRecipe(new ShapedOreRecipe(blockFirebox, "III", "SFS", "SSS", 'I', Item.ingotIron, 'F', Block.furnaceIdle, 'S', Block.stone)); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockFirebox, 1, 1), "III", "SFS", "SSS", 'I', UniversalRecipe.PRIMARY_METAL.get(), 'F', new ItemStack(blockFirebox, 1, 0), 'S', UniversalRecipe.WIRE.get())); - GameRegistry.addRecipe(new ShapedOreRecipe(blockImprinter, "SSS", "W W", "PPP", 'S', Block.stone, 'P', Block.pistonBase, 'W', "logWood")); + GameRegistry.addRecipe(new ShapedOreRecipe(blockImprinter, "SSS", "W W", "PPP", 'S', Block.stone, 'P', Block.pistonBase, 'W', "logWood")); - GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, "SSS", "PGP", "WWW", 'S', Block.stone, 'G', Item.redstone, 'P', Block.pistonBase, 'W', "logWood")); - GameRegistry.addRecipe(new ShapedOreRecipe(blockCast, "I I", "IBI", "III", 'S', Item.ingotIron, 'B', Block.fenceIron)); - GameRegistry.addRecipe(new ShapedOreRecipe(blockGutter, "S S", "I I", "III", 'S', Item.stick, 'I', "cobblestone")); - GameRegistry.addRecipe(new ShapedOreRecipe(blockGrate, "WBW", "B B", "WBW", 'B', Block.fenceIron, 'W', "plankWood")); - GameRegistry.addRecipe(new ShapedOreRecipe(blockHotPlate, "SSS", "III", 'I', Item.ingotIron, 'S', Block.stone)); - GameRegistry.addRecipe(new ShapedOreRecipe(blockMillstone, "SPS", "SAS", "SSS", 'P', Block.pistonBase, 'A', Item.pickaxeStone, 'S', Block.stone)); - GameRegistry.addRecipe(new ShapedOreRecipe(blockTank, "GGG", "GSG", "GGG", 'G', Block.glass, 'S', Item.ingotIron)); + GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, "SSS", "PGP", "WWW", 'S', Block.stone, 'G', Item.redstone, 'P', Block.pistonBase, 'W', "logWood")); + GameRegistry.addRecipe(new ShapedOreRecipe(blockCast, "I I", "IBI", "III", 'S', Item.ingotIron, 'B', Block.fenceIron)); + GameRegistry.addRecipe(new ShapedOreRecipe(blockGutter, "S S", "I I", "III", 'S', Item.stick, 'I', "cobblestone")); + GameRegistry.addRecipe(new ShapedOreRecipe(blockGrate, "WBW", "B B", "WBW", 'B', Block.fenceIron, 'W', "plankWood")); + GameRegistry.addRecipe(new ShapedOreRecipe(blockHotPlate, "SSS", "III", 'I', Item.ingotIron, 'S', Block.stone)); + GameRegistry.addRecipe(new ShapedOreRecipe(blockMillstone, "SPS", "SAS", "SSS", 'P', Block.pistonBase, 'A', Item.pickaxeStone, 'S', Block.stone)); + GameRegistry.addRecipe(new ShapedOreRecipe(blockTank, "GGG", "GSG", "GGG", 'G', Block.glass, 'S', Item.ingotIron)); - GameRegistry.addRecipe(new ShapedOreRecipe(itemHandCrank, "S ", "SSS", " S", 'S', "stickWood")); - GameRegistry.addRecipe(new ShapedOreRecipe(itemImprint, "PPP", "PIP", "PPP", 'P', Item.paper, 'I', new ItemStack(Item.dyePowder, 0))); - GameRegistry.addRecipe(new ShapedOreRecipe(itemHammer, "CC ", "CS ", " S", 'C', "cobblestone", 'S', "stickWood")); - proxy.postInit(); - } + GameRegistry.addRecipe(new ShapedOreRecipe(itemHandCrank, "S ", "SSS", " S", 'S', "stickWood")); + GameRegistry.addRecipe(new ShapedOreRecipe(itemImprint, "PPP", "PIP", "PPP", 'P', Item.paper, 'I', new ItemStack(Item.dyePowder, 0))); + GameRegistry.addRecipe(new ShapedOreRecipe(itemHammer, "CC ", "CS ", " S", 'C', "cobblestone", 'S', "stickWood")); + proxy.postInit(); + modproxies.postInit(); + } } diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/Waila.java b/archaic/src/main/scala/resonantinduction/archaic/waila/Waila.java new file mode 100644 index 000000000..02a9eebf9 --- /dev/null +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/Waila.java @@ -0,0 +1,36 @@ +package resonantinduction.archaic.waila; + +import calclavia.lib.modproxy.ICompatProxy; +import calclavia.lib.utility.Mods; +import cpw.mods.fml.common.event.FMLInterModComms; + +/** + * @since 21/03/14 + * @author tgame14 + */ +public class Waila implements ICompatProxy +{ + @Override + public void preInit () + { + // nothing + } + + @Override + public void init () + { + FMLInterModComms.sendMessage(Mods.WAILA(), "register", "resonantinduction.archaic.waila.WailaRegistrar.wailaCallBack"); + } + + @Override + public void postInit () + { + // nothing + } + + @Override + public String modId () + { + return Mods.WAILA(); + } +} diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java new file mode 100644 index 000000000..4beb1b9d6 --- /dev/null +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java @@ -0,0 +1,57 @@ +package resonantinduction.archaic.waila; + +import java.util.List; + +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import resonantinduction.archaic.crate.TileCrate; +import calclavia.lib.utility.LanguageUtility; + +/** Waila support for crates + * + * @author Darkguardsman */ +public class WailaCrate implements IWailaDataProvider +{ + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + TileEntity tile = accessor.getTileEntity(); + if (tile instanceof TileCrate) + { + ItemStack stored = ((TileCrate) tile).getSampleStack(); + int cap = ((TileCrate) tile).getSlotCount() * 64; + if (stored != null) + { + currenttip.add(LanguageUtility.getLocal("info.waila.crate.stack") + stored.getDisplayName()); + currenttip.add(LanguageUtility.getLocal("info.waila.crate.stored") + stored.stackSize + " / " + cap); + } + else + { + currenttip.add(LanguageUtility.getLocal("info.waila.crate.empty")); + } + } + return currenttip; + } + + @Override + public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return currenttip; + } + + @Override + public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return null; + } + + @Override + public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return currenttip; + } + +} diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaRegistrar.java b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaRegistrar.java new file mode 100644 index 000000000..12e152397 --- /dev/null +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaRegistrar.java @@ -0,0 +1,12 @@ +package resonantinduction.archaic.waila; + +import mcp.mobius.waila.api.IWailaRegistrar; +import resonantinduction.archaic.crate.TileCrate; + +public class WailaRegistrar +{ + public static void wailaCallBack(IWailaRegistrar registrar) + { + registrar.registerBodyProvider(new WailaCrate(), TileCrate.class); + } +} diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index 28257f1d9..99bf01e05 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -31,6 +31,7 @@ import resonantinduction.electrical.wire.EnumWireMaterial; import resonantinduction.electrical.wire.ItemWire; import resonantinduction.quantum.gate.ItemQuantumGlyph; import calclavia.lib.content.ContentRegistry; +import calclavia.lib.modproxy.ProxyHandler; import calclavia.lib.network.PacketHandler; import calclavia.lib.recipe.UniversalRecipe; import cpw.mods.fml.common.Loader; @@ -97,10 +98,13 @@ public class Electrical // Quantum public static Block blockQuantumGate; public static Item itemQuantumGlyph; + + public ProxyHandler modproxies; @EventHandler public void preInit(FMLPreInitializationEvent evt) { + modproxies = new ProxyHandler(); NetworkRegistry.instance().registerGuiHandler(this, proxy); Settings.CONFIGURATION.load(); @@ -149,6 +153,7 @@ public class Electrical } proxy.preInit(); + modproxies.preInit(); } @EventHandler @@ -157,6 +162,7 @@ public class Electrical Settings.setModMetadata(metadata, ID, NAME, ResonantInduction.ID); MultipartElectrical.INSTANCE = new MultipartElectrical(); proxy.init(); + modproxies.init(); } @EventHandler @@ -225,5 +231,6 @@ public class Electrical } proxy.postInit(); + modproxies.postInit(); } } From 1b19d4428b2ca9323505adb5d4382d17d6cf6d8d Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 12:24:22 -0400 Subject: [PATCH 095/144] Fixed crate interaction for creative mode users --- .../scala/resonantinduction/archaic/crate/BlockCrate.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java index 283996a7e..2c3e654a0 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java @@ -176,8 +176,10 @@ public class BlockCrate extends BlockTile tryEject(tile, player, world.getWorldTime() - tile.prevClickTime < 10); } } - - tryInsert(tile, player, world.getWorldTime() - tile.prevClickTime < 10); + else + { + tryInsert(tile, player, world.getWorldTime() - tile.prevClickTime < 10); + } } tile.prevClickTime = world.getWorldTime(); From 62875487da00fdbacc8eb993f882cd32177a5782 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 12:55:49 -0400 Subject: [PATCH 096/144] Added ftank support for waila --- .../archaic/waila/WailaCrate.java | 4 +- .../archaic/waila/WailaFluidTank.java | 57 +++++++++++++++++++ .../archaic/waila/WailaRegistrar.java | 2 + 3 files changed, 61 insertions(+), 2 deletions(-) create mode 100644 archaic/src/main/scala/resonantinduction/archaic/waila/WailaFluidTank.java diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java index 4beb1b9d6..01c2dc668 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java @@ -25,8 +25,8 @@ public class WailaCrate implements IWailaDataProvider int cap = ((TileCrate) tile).getSlotCount() * 64; if (stored != null) { - currenttip.add(LanguageUtility.getLocal("info.waila.crate.stack") + stored.getDisplayName()); - currenttip.add(LanguageUtility.getLocal("info.waila.crate.stored") + stored.stackSize + " / " + cap); + currenttip.add(LanguageUtility.getLocal("info.waila.crate.stack") + " " + stored.getDisplayName()); + currenttip.add(LanguageUtility.getLocal("info.waila.crate.stored") + " " + stored.stackSize + " / " + cap); } else { diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaFluidTank.java b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaFluidTank.java new file mode 100644 index 000000000..0270325ba --- /dev/null +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaFluidTank.java @@ -0,0 +1,57 @@ +package resonantinduction.archaic.waila; + +import java.util.List; + +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fluids.FluidTank; +import resonantinduction.archaic.fluid.tank.TileTank; +import calclavia.lib.utility.LanguageUtility; + +/** Waila support for tanks + * + * @author Darkguardsman */ +public class WailaFluidTank implements IWailaDataProvider +{ + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + TileEntity tile = accessor.getTileEntity(); + if (tile instanceof TileTank) + { + FluidTank tank = ((TileTank) tile).getInternalTank(); + if (tank != null && tank.getFluid() != null) + { + currenttip.add(LanguageUtility.getLocal("info.waila.tank.fluid") + " " + tank.getFluid().getFluid().getLocalizedName()); + currenttip.add(LanguageUtility.getLocal("info.waila.tank.vol") + " " + tank.getFluidAmount() + " / " + tank.getCapacity()); + } + else + { + currenttip.add(LanguageUtility.getLocal("info.waila.tank.empty")); + } + } + return currenttip; + } + + @Override + public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return currenttip; + } + + @Override + public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return null; + } + + @Override + public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) + { + return currenttip; + } + +} diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaRegistrar.java b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaRegistrar.java index 12e152397..158925550 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaRegistrar.java +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaRegistrar.java @@ -2,11 +2,13 @@ package resonantinduction.archaic.waila; import mcp.mobius.waila.api.IWailaRegistrar; import resonantinduction.archaic.crate.TileCrate; +import resonantinduction.archaic.fluid.tank.TileTank; public class WailaRegistrar { public static void wailaCallBack(IWailaRegistrar registrar) { registrar.registerBodyProvider(new WailaCrate(), TileCrate.class); + registrar.registerBodyProvider(new WailaFluidTank(), TileTank.class); } } From 5dcbacb8a05afb11db95b5221cba4e4c788bdcd6 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 12:59:53 -0400 Subject: [PATCH 097/144] Added waila src to the api folder to fixed build issues --- .../mcp/mobius/waila/api/IWailaBlock.java | 34 +++++++++++ .../waila/api/IWailaBlockDecorator.java | 9 +++ .../mobius/waila/api/IWailaConfigHandler.java | 28 ++++++++++ .../mobius/waila/api/IWailaDataAccessor.java | 33 +++++++++++ .../mobius/waila/api/IWailaDataProvider.java | 33 +++++++++++ .../waila/api/IWailaEntityAccessor.java | 24 ++++++++ .../waila/api/IWailaEntityProvider.java | 16 ++++++ .../mobius/waila/api/IWailaFMPAccessor.java | 28 ++++++++++ .../mobius/waila/api/IWailaFMPDecorator.java | 7 +++ .../mobius/waila/api/IWailaFMPProvider.java | 12 ++++ .../mcp/mobius/waila/api/IWailaRegistrar.java | 56 +++++++++++++++++++ .../waila/api/IWailaSummaryProvider.java | 21 +++++++ .../mcp/mobius/waila/api/SpecialChars.java | 40 +++++++++++++ .../mcp/mobius/waila/api/package-info.java | 3 + 14 files changed, 344 insertions(+) create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaBlock.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java create mode 100644 src/api/java/mcp/mobius/waila/api/SpecialChars.java create mode 100644 src/api/java/mcp/mobius/waila/api/package-info.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlock.java b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java new file mode 100644 index 000000000..8b4dd131e --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java @@ -0,0 +1,34 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +@Deprecated +public interface IWailaBlock { + /* + * Use this method to return an item stack in case the default lookup system fails. + * Return null if you want to use the default lookup system. + * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities + */ + ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); + + /* Waila HUD is divided into 3 zones. The head corresponds to the item name, + * body to where you mostly want to put informations, and I reserve the tail for modname display + */ + + /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. + * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). + * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. + * currenttip represents the current list of text lines in the tooltip zone. + * For example, getWailaHead() will have the current item name as currenttip. + * You can modify the tips, add more, remove some, etc. + * When you are done, just returns the currenttip and it will display in Waila. + * + * Always return the currenttip is you don't want to modify the current zone. + */ + + List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java new file mode 100644 index 000000000..935d475fa --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java @@ -0,0 +1,9 @@ +package mcp.mobius.waila.api; + +import net.minecraft.item.ItemStack; + +public interface IWailaBlockDecorator { + + void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config); + +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java new file mode 100644 index 000000000..faede63f6 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java @@ -0,0 +1,28 @@ +package mcp.mobius.waila.api; + +import java.util.HashMap; +import java.util.Set; + +public interface IWailaConfigHandler { + /* Returns a set of all the currently loaded modules in the config handler */ + public Set getModuleNames(); + + /* Returns all the currently available options for a given module */ + public HashMap getConfigKeys(String modName); + + /* Add a new option to a given module + * + * modName is the name of the module to add the option to (ie : Buildcraft, IndustrialCraft2, etc) + * key is the config key (ie : bc.tankcontent, ic2.inputvalue) + * name is the human readable name of the option (ie : "Tank content", "Max EU Input") + * */ + //public void addConfig(String modName, String key, String name); + + /* Returns the current value of an option (true/false) with a default value defvalue if not set*/ + public boolean getConfig(String key, boolean defvalue); + + /* Returns the current value of an option (true/false) with a default value true if not set*/ + public boolean getConfig(String key); + + //public void setConfig(String key, boolean value); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java new file mode 100644 index 000000000..5eade35f3 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java @@ -0,0 +1,33 @@ +package mcp.mobius.waila.api; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaDataAccessor { + + World getWorld(); + EntityPlayer getPlayer(); + Block getBlock(); + int getBlockID(); + int getMetadata(); + TileEntity getTileEntity(); + MovingObjectPosition getPosition(); + Vec3 getRenderingPosition(); + NBTTagCompound getNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); + ForgeDirection getSide(); + ItemStack getStack(); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java new file mode 100644 index 000000000..4859d9cd3 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java @@ -0,0 +1,33 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +public interface IWailaDataProvider{ + /* + * Use this method to return an item stack in case the default lookup system fails. + * Return null if you want to use the default lookup system. + * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities + */ + ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); + + /* Waila HUD is divided into 3 zones. The head corresponds to the item name, + * body to where you mostly want to put informations, and I reserve the tail for modname display + */ + + /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. + * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). + * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. + * currenttip represents the current list of text lines in the tooltip zone. + * For example, getWailaHead() will have the current item name as currenttip. + * You can modify the tips, add more, remove some, etc. + * When you are done, just returns the currenttip and it will display in Waila. + * + * Always return the currenttip is you don't want to modify the current zone. + */ + + List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java new file mode 100644 index 000000000..788067afc --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java @@ -0,0 +1,24 @@ +package mcp.mobius.waila.api; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaEntityAccessor { + World getWorld(); + EntityPlayer getPlayer(); + Entity getEntity(); + MovingObjectPosition getPosition(); + Vec3 getRenderingPosition(); + NBTTagCompound getNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java new file mode 100644 index 000000000..9548289aa --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java @@ -0,0 +1,16 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.entity.Entity; + +public interface IWailaEntityProvider { + + /* A way to get an override on the entity returned by the raytracing */ + Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config); + + /* The classical HEAD/BODY/TAIL text getters */ + List getWailaHead(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); + List getWailaBody(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); + List getWailaTail(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java new file mode 100644 index 000000000..e30afc435 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java @@ -0,0 +1,28 @@ +package mcp.mobius.waila.api; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaFMPAccessor { + World getWorld(); + EntityPlayer getPlayer(); + TileEntity getTileEntity(); + MovingObjectPosition getPosition(); + NBTTagCompound getNBTData(); + NBTTagCompound getFullNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); + Vec3 getRenderingPosition(); + String getID(); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java new file mode 100644 index 000000000..839af31f9 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java @@ -0,0 +1,7 @@ +package mcp.mobius.waila.api; + +import net.minecraft.item.ItemStack; + +public interface IWailaFMPDecorator { + void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java new file mode 100644 index 000000000..232c83eff --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java @@ -0,0 +1,12 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +public interface IWailaFMPProvider { + /* The classical HEAD/BODY/TAIL text getters */ + List getWailaHead(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java new file mode 100644 index 000000000..833f77159 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java @@ -0,0 +1,56 @@ +package mcp.mobius.waila.api; + +public interface IWailaRegistrar { + /* Add a config option in the section modname with displayed text configtext and access key keyname */ + public void addConfig(String modname, String keyname, String configtext); + public void addConfigRemote(String modname, String keyname, String configtext); + public void addConfig(String modname, String keyname); + public void addConfigRemote(String modname, String keyname); + + /* Register a IWailaDataProvider for the given blockID, either for the Head section or the Body section */ + @Deprecated + public void registerHeadProvider (IWailaDataProvider dataProvider, int blockID); + @Deprecated + public void registerBodyProvider (IWailaDataProvider dataProvider, int blockID); + @Deprecated + public void registerTailProvider (IWailaDataProvider dataProvider, int blockID); + + /* Register a stack overrider for the given blockID */ + @Deprecated + public void registerStackProvider(IWailaDataProvider dataProvider, int blockID); + public void registerStackProvider(IWailaDataProvider dataProvider, Class block); + + /* Same thing, but works on a class hierarchy instead */ + public void registerHeadProvider (IWailaDataProvider dataProvider, Class block); + public void registerBodyProvider (IWailaDataProvider dataProvider, Class block); + public void registerTailProvider (IWailaDataProvider dataProvider, Class block); + + /* Entity text registration methods */ + public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity); + + /* FMP Providers */ + public void registerHeadProvider(IWailaFMPProvider dataProvider, String name); + public void registerBodyProvider(IWailaFMPProvider dataProvider, String name); + public void registerTailProvider(IWailaFMPProvider dataProvider, String name); + + /* The block decorators */ + @Deprecated + public void registerDecorator (IWailaBlockDecorator decorator, int blockID); + public void registerDecorator (IWailaBlockDecorator decorator, Class block); + public void registerDecorator (IWailaFMPDecorator decorator, String name); + + /* Selective NBT key syncing. Will register a key to sync over the network for the given class (block, te or ent). + * Accept * as a ending wildcard + * registerNBTKey("bob.*", MyBlock.class) + * registerNBTKey("data.life", MyEntity.class) + * registerNBTKey("*", MyTileEntity.class) will reproduce the full tag syncing from 1.4.5 + * */ + public void registerSyncedNBTKey(String key, Class target); + + /* UNUSED FOR NOW (Will be used for the ingame wiki */ + public void registerDocTextFile (String filename); + public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java new file mode 100644 index 000000000..f79064981 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java @@ -0,0 +1,21 @@ +package mcp.mobius.waila.api; + +import java.util.LinkedHashMap; + +import net.minecraft.item.ItemStack; + +public interface IWailaSummaryProvider { + /* This interface is used to control the display data in the description screen */ + + /* BASIC TOOLS & ITEMS DATA */ + //EnumToolMaterial getMaterial(ItemStack stack); + //String getMaterialName(ItemStack stack); + //String getEffectiveBlock(ItemStack stack); + //int getHarvestLevel(ItemStack stack); + //float getEfficiencyOnProperMaterial(ItemStack stack); + //int getEnchantability(ItemStack stack); + //int getDamageVsEntity(ItemStack stack); + //int getDurability(ItemStack stack); + + LinkedHashMap getSummary(ItemStack stack, LinkedHashMap currentSummary, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/SpecialChars.java b/src/api/java/mcp/mobius/waila/api/SpecialChars.java new file mode 100644 index 000000000..5bd92a820 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/SpecialChars.java @@ -0,0 +1,40 @@ +package mcp.mobius.waila.api; + +public class SpecialChars { + + public static String MCStyle = "\u00A7"; + + public static String BLACK = MCStyle + "0"; + public static String DBLUE = MCStyle + "1"; + public static String DGREEN = MCStyle + "2"; + public static String DAQUA = MCStyle + "3"; + public static String DRED = MCStyle + "4"; + public static String DPURPLE = MCStyle + "5"; + public static String GOLD = MCStyle + "6"; + public static String GRAY = MCStyle + "7"; + public static String DGRAY = MCStyle + "8"; + public static String BLUE = MCStyle + "9"; + public static String GREEN = MCStyle + "a"; + public static String AQUA = MCStyle + "b"; + public static String RED = MCStyle + "c"; + public static String LPURPLE = MCStyle + "d"; + public static String YELLOW = MCStyle + "e"; + public static String WHITE = MCStyle + "f"; + + public static String OBF = MCStyle + "k"; + public static String BOLD = MCStyle + "l"; + public static String STRIKE = MCStyle + "m"; + public static String UNDER = MCStyle + "n"; + public static String ITALIC = MCStyle + "o"; + public static String RESET = MCStyle + "r"; + + public static String WailaStyle = "\u00A4"; + public static String WailaIcon = "\u00A5"; + public static String TAB = WailaStyle + WailaStyle +"a"; + public static String ALIGNRIGHT = WailaStyle + WailaStyle +"b"; + public static String ALIGNCENTER = WailaStyle + WailaStyle +"c"; + public static String HEART = WailaStyle + WailaIcon +"a"; + public static String HHEART = WailaStyle + WailaIcon +"b"; + public static String EHEART = WailaStyle + WailaIcon +"c"; + +} diff --git a/src/api/java/mcp/mobius/waila/api/package-info.java b/src/api/java/mcp/mobius/waila/api/package-info.java new file mode 100644 index 000000000..9b5e663b4 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.0",owner="Waila",provides="WailaAPI") +package mcp.mobius.waila.api; +import cpw.mods.fml.common.API; \ No newline at end of file From b34dc134ad2addfb3a32453172b562221f39c17e Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 13:03:10 -0400 Subject: [PATCH 098/144] Changed api java -> api scala --- src/api/{java => scala}/mcp/mobius/waila/api/IWailaBlock.java | 0 .../mcp/mobius/waila/api/IWailaBlockDecorator.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaConfigHandler.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaDataAccessor.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaDataProvider.java | 0 .../mcp/mobius/waila/api/IWailaEntityAccessor.java | 0 .../mcp/mobius/waila/api/IWailaEntityProvider.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaFMPAccessor.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaFMPDecorator.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaFMPProvider.java | 0 src/api/{java => scala}/mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../mcp/mobius/waila/api/IWailaSummaryProvider.java | 0 src/api/{java => scala}/mcp/mobius/waila/api/SpecialChars.java | 0 src/api/{java => scala}/mcp/mobius/waila/api/package-info.java | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaBlock.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/SpecialChars.java (100%) rename src/api/{java => scala}/mcp/mobius/waila/api/package-info.java (100%) diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlock.java b/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaBlock.java rename to src/api/scala/mcp/mobius/waila/api/IWailaBlock.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java rename to src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java rename to src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/src/api/java/mcp/mobius/waila/api/SpecialChars.java b/src/api/scala/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/SpecialChars.java rename to src/api/scala/mcp/mobius/waila/api/SpecialChars.java diff --git a/src/api/java/mcp/mobius/waila/api/package-info.java b/src/api/scala/mcp/mobius/waila/api/package-info.java similarity index 100% rename from src/api/java/mcp/mobius/waila/api/package-info.java rename to src/api/scala/mcp/mobius/waila/api/package-info.java From 6fe19c568683c5f7f43b2f988323e34a3fc9c3d6 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 14:55:46 -0400 Subject: [PATCH 099/144] Added waila to each sub mod src folder in attempt to fix build server, need a better way to handle this --- .../mcp/mobius/waila/api/IWailaBlock.java | 0 .../waila/api/IWailaBlockDecorator.java | 0 .../mobius/waila/api/IWailaConfigHandler.java | 0 .../mobius/waila/api/IWailaDataAccessor.java | 0 .../mobius/waila/api/IWailaDataProvider.java | 0 .../waila/api/IWailaEntityAccessor.java | 0 .../waila/api/IWailaEntityProvider.java | 0 .../mobius/waila/api/IWailaFMPAccessor.java | 0 .../mobius/waila/api/IWailaFMPDecorator.java | 0 .../mobius/waila/api/IWailaFMPProvider.java | 0 .../mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../waila/api/IWailaSummaryProvider.java | 0 .../mcp/mobius/waila/api/SpecialChars.java | 0 .../mcp/mobius/waila/api/package-info.java | 0 .../mcp/mobius/waila/api/IWailaBlock.java | 34 +++++++++++ .../waila/api/IWailaBlockDecorator.java | 9 +++ .../mobius/waila/api/IWailaConfigHandler.java | 28 ++++++++++ .../mobius/waila/api/IWailaDataAccessor.java | 33 +++++++++++ .../mobius/waila/api/IWailaDataProvider.java | 33 +++++++++++ .../waila/api/IWailaEntityAccessor.java | 24 ++++++++ .../waila/api/IWailaEntityProvider.java | 16 ++++++ .../mobius/waila/api/IWailaFMPAccessor.java | 28 ++++++++++ .../mobius/waila/api/IWailaFMPDecorator.java | 7 +++ .../mobius/waila/api/IWailaFMPProvider.java | 12 ++++ .../mcp/mobius/waila/api/IWailaRegistrar.java | 56 +++++++++++++++++++ .../waila/api/IWailaSummaryProvider.java | 21 +++++++ .../mcp/mobius/waila/api/SpecialChars.java | 40 +++++++++++++ .../mcp/mobius/waila/api/package-info.java | 3 + .../mcp/mobius/waila/api/IWailaBlock.java | 34 +++++++++++ .../waila/api/IWailaBlockDecorator.java | 9 +++ .../mobius/waila/api/IWailaConfigHandler.java | 28 ++++++++++ .../mobius/waila/api/IWailaDataAccessor.java | 33 +++++++++++ .../mobius/waila/api/IWailaDataProvider.java | 33 +++++++++++ .../waila/api/IWailaEntityAccessor.java | 24 ++++++++ .../waila/api/IWailaEntityProvider.java | 16 ++++++ .../mobius/waila/api/IWailaFMPAccessor.java | 28 ++++++++++ .../mobius/waila/api/IWailaFMPDecorator.java | 7 +++ .../mobius/waila/api/IWailaFMPProvider.java | 12 ++++ .../mcp/mobius/waila/api/IWailaRegistrar.java | 56 +++++++++++++++++++ .../waila/api/IWailaSummaryProvider.java | 21 +++++++ .../mcp/mobius/waila/api/SpecialChars.java | 40 +++++++++++++ .../mcp/mobius/waila/api/package-info.java | 3 + .../mcp/mobius/waila/api/IWailaBlock.java | 34 +++++++++++ .../waila/api/IWailaBlockDecorator.java | 9 +++ .../mobius/waila/api/IWailaConfigHandler.java | 28 ++++++++++ .../mobius/waila/api/IWailaDataAccessor.java | 33 +++++++++++ .../mobius/waila/api/IWailaDataProvider.java | 33 +++++++++++ .../waila/api/IWailaEntityAccessor.java | 24 ++++++++ .../waila/api/IWailaEntityProvider.java | 16 ++++++ .../mobius/waila/api/IWailaFMPAccessor.java | 28 ++++++++++ .../mobius/waila/api/IWailaFMPDecorator.java | 7 +++ .../mobius/waila/api/IWailaFMPProvider.java | 12 ++++ .../mcp/mobius/waila/api/IWailaRegistrar.java | 56 +++++++++++++++++++ .../waila/api/IWailaSummaryProvider.java | 21 +++++++ .../mcp/mobius/waila/api/SpecialChars.java | 40 +++++++++++++ .../mcp/mobius/waila/api/package-info.java | 3 + 56 files changed, 1032 insertions(+) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaBlock.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/SpecialChars.java (100%) rename {src/api/scala => archaic/api/java}/mcp/mobius/waila/api/package-info.java (100%) create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaBlock.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/SpecialChars.java create mode 100644 electrical/api/java/mcp/mobius/waila/api/package-info.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaBlock.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/SpecialChars.java create mode 100644 mechanical/api/java/mcp/mobius/waila/api/package-info.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaBlock.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java create mode 100644 src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java create mode 100644 src/api/java/mcp/mobius/waila/api/SpecialChars.java create mode 100644 src/api/java/mcp/mobius/waila/api/package-info.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java b/archaic/api/java/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaBlock.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaBlock.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java b/archaic/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java b/archaic/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java b/archaic/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java b/archaic/api/java/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java b/archaic/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java b/archaic/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java b/archaic/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java b/archaic/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java b/archaic/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java b/archaic/api/java/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java b/archaic/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to archaic/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/SpecialChars.java b/archaic/api/java/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/SpecialChars.java rename to archaic/api/java/mcp/mobius/waila/api/SpecialChars.java diff --git a/src/api/scala/mcp/mobius/waila/api/package-info.java b/archaic/api/java/mcp/mobius/waila/api/package-info.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/package-info.java rename to archaic/api/java/mcp/mobius/waila/api/package-info.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaBlock.java b/electrical/api/java/mcp/mobius/waila/api/IWailaBlock.java new file mode 100644 index 000000000..8b4dd131e --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaBlock.java @@ -0,0 +1,34 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +@Deprecated +public interface IWailaBlock { + /* + * Use this method to return an item stack in case the default lookup system fails. + * Return null if you want to use the default lookup system. + * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities + */ + ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); + + /* Waila HUD is divided into 3 zones. The head corresponds to the item name, + * body to where you mostly want to put informations, and I reserve the tail for modname display + */ + + /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. + * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). + * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. + * currenttip represents the current list of text lines in the tooltip zone. + * For example, getWailaHead() will have the current item name as currenttip. + * You can modify the tips, add more, remove some, etc. + * When you are done, just returns the currenttip and it will display in Waila. + * + * Always return the currenttip is you don't want to modify the current zone. + */ + + List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/electrical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java new file mode 100644 index 000000000..935d475fa --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java @@ -0,0 +1,9 @@ +package mcp.mobius.waila.api; + +import net.minecraft.item.ItemStack; + +public interface IWailaBlockDecorator { + + void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config); + +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/electrical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java new file mode 100644 index 000000000..faede63f6 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java @@ -0,0 +1,28 @@ +package mcp.mobius.waila.api; + +import java.util.HashMap; +import java.util.Set; + +public interface IWailaConfigHandler { + /* Returns a set of all the currently loaded modules in the config handler */ + public Set getModuleNames(); + + /* Returns all the currently available options for a given module */ + public HashMap getConfigKeys(String modName); + + /* Add a new option to a given module + * + * modName is the name of the module to add the option to (ie : Buildcraft, IndustrialCraft2, etc) + * key is the config key (ie : bc.tankcontent, ic2.inputvalue) + * name is the human readable name of the option (ie : "Tank content", "Max EU Input") + * */ + //public void addConfig(String modName, String key, String name); + + /* Returns the current value of an option (true/false) with a default value defvalue if not set*/ + public boolean getConfig(String key, boolean defvalue); + + /* Returns the current value of an option (true/false) with a default value true if not set*/ + public boolean getConfig(String key); + + //public void setConfig(String key, boolean value); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/electrical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java new file mode 100644 index 000000000..5eade35f3 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java @@ -0,0 +1,33 @@ +package mcp.mobius.waila.api; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaDataAccessor { + + World getWorld(); + EntityPlayer getPlayer(); + Block getBlock(); + int getBlockID(); + int getMetadata(); + TileEntity getTileEntity(); + MovingObjectPosition getPosition(); + Vec3 getRenderingPosition(); + NBTTagCompound getNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); + ForgeDirection getSide(); + ItemStack getStack(); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/electrical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java new file mode 100644 index 000000000..4859d9cd3 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java @@ -0,0 +1,33 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +public interface IWailaDataProvider{ + /* + * Use this method to return an item stack in case the default lookup system fails. + * Return null if you want to use the default lookup system. + * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities + */ + ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); + + /* Waila HUD is divided into 3 zones. The head corresponds to the item name, + * body to where you mostly want to put informations, and I reserve the tail for modname display + */ + + /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. + * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). + * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. + * currenttip represents the current list of text lines in the tooltip zone. + * For example, getWailaHead() will have the current item name as currenttip. + * You can modify the tips, add more, remove some, etc. + * When you are done, just returns the currenttip and it will display in Waila. + * + * Always return the currenttip is you don't want to modify the current zone. + */ + + List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/electrical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java new file mode 100644 index 000000000..788067afc --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java @@ -0,0 +1,24 @@ +package mcp.mobius.waila.api; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaEntityAccessor { + World getWorld(); + EntityPlayer getPlayer(); + Entity getEntity(); + MovingObjectPosition getPosition(); + Vec3 getRenderingPosition(); + NBTTagCompound getNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/electrical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java new file mode 100644 index 000000000..9548289aa --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java @@ -0,0 +1,16 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.entity.Entity; + +public interface IWailaEntityProvider { + + /* A way to get an override on the entity returned by the raytracing */ + Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config); + + /* The classical HEAD/BODY/TAIL text getters */ + List getWailaHead(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); + List getWailaBody(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); + List getWailaTail(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/electrical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java new file mode 100644 index 000000000..e30afc435 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java @@ -0,0 +1,28 @@ +package mcp.mobius.waila.api; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaFMPAccessor { + World getWorld(); + EntityPlayer getPlayer(); + TileEntity getTileEntity(); + MovingObjectPosition getPosition(); + NBTTagCompound getNBTData(); + NBTTagCompound getFullNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); + Vec3 getRenderingPosition(); + String getID(); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/electrical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java new file mode 100644 index 000000000..839af31f9 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java @@ -0,0 +1,7 @@ +package mcp.mobius.waila.api; + +import net.minecraft.item.ItemStack; + +public interface IWailaFMPDecorator { + void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/electrical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java new file mode 100644 index 000000000..232c83eff --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java @@ -0,0 +1,12 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +public interface IWailaFMPProvider { + /* The classical HEAD/BODY/TAIL text getters */ + List getWailaHead(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/electrical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java new file mode 100644 index 000000000..833f77159 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java @@ -0,0 +1,56 @@ +package mcp.mobius.waila.api; + +public interface IWailaRegistrar { + /* Add a config option in the section modname with displayed text configtext and access key keyname */ + public void addConfig(String modname, String keyname, String configtext); + public void addConfigRemote(String modname, String keyname, String configtext); + public void addConfig(String modname, String keyname); + public void addConfigRemote(String modname, String keyname); + + /* Register a IWailaDataProvider for the given blockID, either for the Head section or the Body section */ + @Deprecated + public void registerHeadProvider (IWailaDataProvider dataProvider, int blockID); + @Deprecated + public void registerBodyProvider (IWailaDataProvider dataProvider, int blockID); + @Deprecated + public void registerTailProvider (IWailaDataProvider dataProvider, int blockID); + + /* Register a stack overrider for the given blockID */ + @Deprecated + public void registerStackProvider(IWailaDataProvider dataProvider, int blockID); + public void registerStackProvider(IWailaDataProvider dataProvider, Class block); + + /* Same thing, but works on a class hierarchy instead */ + public void registerHeadProvider (IWailaDataProvider dataProvider, Class block); + public void registerBodyProvider (IWailaDataProvider dataProvider, Class block); + public void registerTailProvider (IWailaDataProvider dataProvider, Class block); + + /* Entity text registration methods */ + public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity); + + /* FMP Providers */ + public void registerHeadProvider(IWailaFMPProvider dataProvider, String name); + public void registerBodyProvider(IWailaFMPProvider dataProvider, String name); + public void registerTailProvider(IWailaFMPProvider dataProvider, String name); + + /* The block decorators */ + @Deprecated + public void registerDecorator (IWailaBlockDecorator decorator, int blockID); + public void registerDecorator (IWailaBlockDecorator decorator, Class block); + public void registerDecorator (IWailaFMPDecorator decorator, String name); + + /* Selective NBT key syncing. Will register a key to sync over the network for the given class (block, te or ent). + * Accept * as a ending wildcard + * registerNBTKey("bob.*", MyBlock.class) + * registerNBTKey("data.life", MyEntity.class) + * registerNBTKey("*", MyTileEntity.class) will reproduce the full tag syncing from 1.4.5 + * */ + public void registerSyncedNBTKey(String key, Class target); + + /* UNUSED FOR NOW (Will be used for the ingame wiki */ + public void registerDocTextFile (String filename); + public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/electrical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java new file mode 100644 index 000000000..f79064981 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java @@ -0,0 +1,21 @@ +package mcp.mobius.waila.api; + +import java.util.LinkedHashMap; + +import net.minecraft.item.ItemStack; + +public interface IWailaSummaryProvider { + /* This interface is used to control the display data in the description screen */ + + /* BASIC TOOLS & ITEMS DATA */ + //EnumToolMaterial getMaterial(ItemStack stack); + //String getMaterialName(ItemStack stack); + //String getEffectiveBlock(ItemStack stack); + //int getHarvestLevel(ItemStack stack); + //float getEfficiencyOnProperMaterial(ItemStack stack); + //int getEnchantability(ItemStack stack); + //int getDamageVsEntity(ItemStack stack); + //int getDurability(ItemStack stack); + + LinkedHashMap getSummary(ItemStack stack, LinkedHashMap currentSummary, IWailaConfigHandler config); +} diff --git a/electrical/api/java/mcp/mobius/waila/api/SpecialChars.java b/electrical/api/java/mcp/mobius/waila/api/SpecialChars.java new file mode 100644 index 000000000..5bd92a820 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/SpecialChars.java @@ -0,0 +1,40 @@ +package mcp.mobius.waila.api; + +public class SpecialChars { + + public static String MCStyle = "\u00A7"; + + public static String BLACK = MCStyle + "0"; + public static String DBLUE = MCStyle + "1"; + public static String DGREEN = MCStyle + "2"; + public static String DAQUA = MCStyle + "3"; + public static String DRED = MCStyle + "4"; + public static String DPURPLE = MCStyle + "5"; + public static String GOLD = MCStyle + "6"; + public static String GRAY = MCStyle + "7"; + public static String DGRAY = MCStyle + "8"; + public static String BLUE = MCStyle + "9"; + public static String GREEN = MCStyle + "a"; + public static String AQUA = MCStyle + "b"; + public static String RED = MCStyle + "c"; + public static String LPURPLE = MCStyle + "d"; + public static String YELLOW = MCStyle + "e"; + public static String WHITE = MCStyle + "f"; + + public static String OBF = MCStyle + "k"; + public static String BOLD = MCStyle + "l"; + public static String STRIKE = MCStyle + "m"; + public static String UNDER = MCStyle + "n"; + public static String ITALIC = MCStyle + "o"; + public static String RESET = MCStyle + "r"; + + public static String WailaStyle = "\u00A4"; + public static String WailaIcon = "\u00A5"; + public static String TAB = WailaStyle + WailaStyle +"a"; + public static String ALIGNRIGHT = WailaStyle + WailaStyle +"b"; + public static String ALIGNCENTER = WailaStyle + WailaStyle +"c"; + public static String HEART = WailaStyle + WailaIcon +"a"; + public static String HHEART = WailaStyle + WailaIcon +"b"; + public static String EHEART = WailaStyle + WailaIcon +"c"; + +} diff --git a/electrical/api/java/mcp/mobius/waila/api/package-info.java b/electrical/api/java/mcp/mobius/waila/api/package-info.java new file mode 100644 index 000000000..9b5e663b4 --- /dev/null +++ b/electrical/api/java/mcp/mobius/waila/api/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.0",owner="Waila",provides="WailaAPI") +package mcp.mobius.waila.api; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaBlock.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaBlock.java new file mode 100644 index 000000000..8b4dd131e --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaBlock.java @@ -0,0 +1,34 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +@Deprecated +public interface IWailaBlock { + /* + * Use this method to return an item stack in case the default lookup system fails. + * Return null if you want to use the default lookup system. + * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities + */ + ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); + + /* Waila HUD is divided into 3 zones. The head corresponds to the item name, + * body to where you mostly want to put informations, and I reserve the tail for modname display + */ + + /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. + * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). + * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. + * currenttip represents the current list of text lines in the tooltip zone. + * For example, getWailaHead() will have the current item name as currenttip. + * You can modify the tips, add more, remove some, etc. + * When you are done, just returns the currenttip and it will display in Waila. + * + * Always return the currenttip is you don't want to modify the current zone. + */ + + List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java new file mode 100644 index 000000000..935d475fa --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java @@ -0,0 +1,9 @@ +package mcp.mobius.waila.api; + +import net.minecraft.item.ItemStack; + +public interface IWailaBlockDecorator { + + void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config); + +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java new file mode 100644 index 000000000..faede63f6 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java @@ -0,0 +1,28 @@ +package mcp.mobius.waila.api; + +import java.util.HashMap; +import java.util.Set; + +public interface IWailaConfigHandler { + /* Returns a set of all the currently loaded modules in the config handler */ + public Set getModuleNames(); + + /* Returns all the currently available options for a given module */ + public HashMap getConfigKeys(String modName); + + /* Add a new option to a given module + * + * modName is the name of the module to add the option to (ie : Buildcraft, IndustrialCraft2, etc) + * key is the config key (ie : bc.tankcontent, ic2.inputvalue) + * name is the human readable name of the option (ie : "Tank content", "Max EU Input") + * */ + //public void addConfig(String modName, String key, String name); + + /* Returns the current value of an option (true/false) with a default value defvalue if not set*/ + public boolean getConfig(String key, boolean defvalue); + + /* Returns the current value of an option (true/false) with a default value true if not set*/ + public boolean getConfig(String key); + + //public void setConfig(String key, boolean value); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java new file mode 100644 index 000000000..5eade35f3 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java @@ -0,0 +1,33 @@ +package mcp.mobius.waila.api; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaDataAccessor { + + World getWorld(); + EntityPlayer getPlayer(); + Block getBlock(); + int getBlockID(); + int getMetadata(); + TileEntity getTileEntity(); + MovingObjectPosition getPosition(); + Vec3 getRenderingPosition(); + NBTTagCompound getNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); + ForgeDirection getSide(); + ItemStack getStack(); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java new file mode 100644 index 000000000..4859d9cd3 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java @@ -0,0 +1,33 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +public interface IWailaDataProvider{ + /* + * Use this method to return an item stack in case the default lookup system fails. + * Return null if you want to use the default lookup system. + * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities + */ + ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); + + /* Waila HUD is divided into 3 zones. The head corresponds to the item name, + * body to where you mostly want to put informations, and I reserve the tail for modname display + */ + + /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. + * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). + * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. + * currenttip represents the current list of text lines in the tooltip zone. + * For example, getWailaHead() will have the current item name as currenttip. + * You can modify the tips, add more, remove some, etc. + * When you are done, just returns the currenttip and it will display in Waila. + * + * Always return the currenttip is you don't want to modify the current zone. + */ + + List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java new file mode 100644 index 000000000..788067afc --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java @@ -0,0 +1,24 @@ +package mcp.mobius.waila.api; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaEntityAccessor { + World getWorld(); + EntityPlayer getPlayer(); + Entity getEntity(); + MovingObjectPosition getPosition(); + Vec3 getRenderingPosition(); + NBTTagCompound getNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java new file mode 100644 index 000000000..9548289aa --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java @@ -0,0 +1,16 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.entity.Entity; + +public interface IWailaEntityProvider { + + /* A way to get an override on the entity returned by the raytracing */ + Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config); + + /* The classical HEAD/BODY/TAIL text getters */ + List getWailaHead(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); + List getWailaBody(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); + List getWailaTail(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java new file mode 100644 index 000000000..e30afc435 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java @@ -0,0 +1,28 @@ +package mcp.mobius.waila.api; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaFMPAccessor { + World getWorld(); + EntityPlayer getPlayer(); + TileEntity getTileEntity(); + MovingObjectPosition getPosition(); + NBTTagCompound getNBTData(); + NBTTagCompound getFullNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); + Vec3 getRenderingPosition(); + String getID(); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java new file mode 100644 index 000000000..839af31f9 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java @@ -0,0 +1,7 @@ +package mcp.mobius.waila.api; + +import net.minecraft.item.ItemStack; + +public interface IWailaFMPDecorator { + void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java new file mode 100644 index 000000000..232c83eff --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java @@ -0,0 +1,12 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +public interface IWailaFMPProvider { + /* The classical HEAD/BODY/TAIL text getters */ + List getWailaHead(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java new file mode 100644 index 000000000..833f77159 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java @@ -0,0 +1,56 @@ +package mcp.mobius.waila.api; + +public interface IWailaRegistrar { + /* Add a config option in the section modname with displayed text configtext and access key keyname */ + public void addConfig(String modname, String keyname, String configtext); + public void addConfigRemote(String modname, String keyname, String configtext); + public void addConfig(String modname, String keyname); + public void addConfigRemote(String modname, String keyname); + + /* Register a IWailaDataProvider for the given blockID, either for the Head section or the Body section */ + @Deprecated + public void registerHeadProvider (IWailaDataProvider dataProvider, int blockID); + @Deprecated + public void registerBodyProvider (IWailaDataProvider dataProvider, int blockID); + @Deprecated + public void registerTailProvider (IWailaDataProvider dataProvider, int blockID); + + /* Register a stack overrider for the given blockID */ + @Deprecated + public void registerStackProvider(IWailaDataProvider dataProvider, int blockID); + public void registerStackProvider(IWailaDataProvider dataProvider, Class block); + + /* Same thing, but works on a class hierarchy instead */ + public void registerHeadProvider (IWailaDataProvider dataProvider, Class block); + public void registerBodyProvider (IWailaDataProvider dataProvider, Class block); + public void registerTailProvider (IWailaDataProvider dataProvider, Class block); + + /* Entity text registration methods */ + public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity); + + /* FMP Providers */ + public void registerHeadProvider(IWailaFMPProvider dataProvider, String name); + public void registerBodyProvider(IWailaFMPProvider dataProvider, String name); + public void registerTailProvider(IWailaFMPProvider dataProvider, String name); + + /* The block decorators */ + @Deprecated + public void registerDecorator (IWailaBlockDecorator decorator, int blockID); + public void registerDecorator (IWailaBlockDecorator decorator, Class block); + public void registerDecorator (IWailaFMPDecorator decorator, String name); + + /* Selective NBT key syncing. Will register a key to sync over the network for the given class (block, te or ent). + * Accept * as a ending wildcard + * registerNBTKey("bob.*", MyBlock.class) + * registerNBTKey("data.life", MyEntity.class) + * registerNBTKey("*", MyTileEntity.class) will reproduce the full tag syncing from 1.4.5 + * */ + public void registerSyncedNBTKey(String key, Class target); + + /* UNUSED FOR NOW (Will be used for the ingame wiki */ + public void registerDocTextFile (String filename); + public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java new file mode 100644 index 000000000..f79064981 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java @@ -0,0 +1,21 @@ +package mcp.mobius.waila.api; + +import java.util.LinkedHashMap; + +import net.minecraft.item.ItemStack; + +public interface IWailaSummaryProvider { + /* This interface is used to control the display data in the description screen */ + + /* BASIC TOOLS & ITEMS DATA */ + //EnumToolMaterial getMaterial(ItemStack stack); + //String getMaterialName(ItemStack stack); + //String getEffectiveBlock(ItemStack stack); + //int getHarvestLevel(ItemStack stack); + //float getEfficiencyOnProperMaterial(ItemStack stack); + //int getEnchantability(ItemStack stack); + //int getDamageVsEntity(ItemStack stack); + //int getDurability(ItemStack stack); + + LinkedHashMap getSummary(ItemStack stack, LinkedHashMap currentSummary, IWailaConfigHandler config); +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/SpecialChars.java b/mechanical/api/java/mcp/mobius/waila/api/SpecialChars.java new file mode 100644 index 000000000..5bd92a820 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/SpecialChars.java @@ -0,0 +1,40 @@ +package mcp.mobius.waila.api; + +public class SpecialChars { + + public static String MCStyle = "\u00A7"; + + public static String BLACK = MCStyle + "0"; + public static String DBLUE = MCStyle + "1"; + public static String DGREEN = MCStyle + "2"; + public static String DAQUA = MCStyle + "3"; + public static String DRED = MCStyle + "4"; + public static String DPURPLE = MCStyle + "5"; + public static String GOLD = MCStyle + "6"; + public static String GRAY = MCStyle + "7"; + public static String DGRAY = MCStyle + "8"; + public static String BLUE = MCStyle + "9"; + public static String GREEN = MCStyle + "a"; + public static String AQUA = MCStyle + "b"; + public static String RED = MCStyle + "c"; + public static String LPURPLE = MCStyle + "d"; + public static String YELLOW = MCStyle + "e"; + public static String WHITE = MCStyle + "f"; + + public static String OBF = MCStyle + "k"; + public static String BOLD = MCStyle + "l"; + public static String STRIKE = MCStyle + "m"; + public static String UNDER = MCStyle + "n"; + public static String ITALIC = MCStyle + "o"; + public static String RESET = MCStyle + "r"; + + public static String WailaStyle = "\u00A4"; + public static String WailaIcon = "\u00A5"; + public static String TAB = WailaStyle + WailaStyle +"a"; + public static String ALIGNRIGHT = WailaStyle + WailaStyle +"b"; + public static String ALIGNCENTER = WailaStyle + WailaStyle +"c"; + public static String HEART = WailaStyle + WailaIcon +"a"; + public static String HHEART = WailaStyle + WailaIcon +"b"; + public static String EHEART = WailaStyle + WailaIcon +"c"; + +} diff --git a/mechanical/api/java/mcp/mobius/waila/api/package-info.java b/mechanical/api/java/mcp/mobius/waila/api/package-info.java new file mode 100644 index 000000000..9b5e663b4 --- /dev/null +++ b/mechanical/api/java/mcp/mobius/waila/api/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.0",owner="Waila",provides="WailaAPI") +package mcp.mobius.waila.api; +import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlock.java b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java new file mode 100644 index 000000000..8b4dd131e --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java @@ -0,0 +1,34 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +@Deprecated +public interface IWailaBlock { + /* + * Use this method to return an item stack in case the default lookup system fails. + * Return null if you want to use the default lookup system. + * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities + */ + ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); + + /* Waila HUD is divided into 3 zones. The head corresponds to the item name, + * body to where you mostly want to put informations, and I reserve the tail for modname display + */ + + /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. + * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). + * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. + * currenttip represents the current list of text lines in the tooltip zone. + * For example, getWailaHead() will have the current item name as currenttip. + * You can modify the tips, add more, remove some, etc. + * When you are done, just returns the currenttip and it will display in Waila. + * + * Always return the currenttip is you don't want to modify the current zone. + */ + + List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java new file mode 100644 index 000000000..935d475fa --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java @@ -0,0 +1,9 @@ +package mcp.mobius.waila.api; + +import net.minecraft.item.ItemStack; + +public interface IWailaBlockDecorator { + + void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config); + +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java new file mode 100644 index 000000000..faede63f6 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java @@ -0,0 +1,28 @@ +package mcp.mobius.waila.api; + +import java.util.HashMap; +import java.util.Set; + +public interface IWailaConfigHandler { + /* Returns a set of all the currently loaded modules in the config handler */ + public Set getModuleNames(); + + /* Returns all the currently available options for a given module */ + public HashMap getConfigKeys(String modName); + + /* Add a new option to a given module + * + * modName is the name of the module to add the option to (ie : Buildcraft, IndustrialCraft2, etc) + * key is the config key (ie : bc.tankcontent, ic2.inputvalue) + * name is the human readable name of the option (ie : "Tank content", "Max EU Input") + * */ + //public void addConfig(String modName, String key, String name); + + /* Returns the current value of an option (true/false) with a default value defvalue if not set*/ + public boolean getConfig(String key, boolean defvalue); + + /* Returns the current value of an option (true/false) with a default value true if not set*/ + public boolean getConfig(String key); + + //public void setConfig(String key, boolean value); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java new file mode 100644 index 000000000..5eade35f3 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java @@ -0,0 +1,33 @@ +package mcp.mobius.waila.api; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaDataAccessor { + + World getWorld(); + EntityPlayer getPlayer(); + Block getBlock(); + int getBlockID(); + int getMetadata(); + TileEntity getTileEntity(); + MovingObjectPosition getPosition(); + Vec3 getRenderingPosition(); + NBTTagCompound getNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); + ForgeDirection getSide(); + ItemStack getStack(); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java new file mode 100644 index 000000000..4859d9cd3 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java @@ -0,0 +1,33 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +public interface IWailaDataProvider{ + /* + * Use this method to return an item stack in case the default lookup system fails. + * Return null if you want to use the default lookup system. + * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities + */ + ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); + + /* Waila HUD is divided into 3 zones. The head corresponds to the item name, + * body to where you mostly want to put informations, and I reserve the tail for modname display + */ + + /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. + * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). + * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. + * currenttip represents the current list of text lines in the tooltip zone. + * For example, getWailaHead() will have the current item name as currenttip. + * You can modify the tips, add more, remove some, etc. + * When you are done, just returns the currenttip and it will display in Waila. + * + * Always return the currenttip is you don't want to modify the current zone. + */ + + List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java new file mode 100644 index 000000000..788067afc --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java @@ -0,0 +1,24 @@ +package mcp.mobius.waila.api; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaEntityAccessor { + World getWorld(); + EntityPlayer getPlayer(); + Entity getEntity(); + MovingObjectPosition getPosition(); + Vec3 getRenderingPosition(); + NBTTagCompound getNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java new file mode 100644 index 000000000..9548289aa --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java @@ -0,0 +1,16 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.entity.Entity; + +public interface IWailaEntityProvider { + + /* A way to get an override on the entity returned by the raytracing */ + Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config); + + /* The classical HEAD/BODY/TAIL text getters */ + List getWailaHead(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); + List getWailaBody(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); + List getWailaTail(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java new file mode 100644 index 000000000..e30afc435 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java @@ -0,0 +1,28 @@ +package mcp.mobius.waila.api; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; + +/* The Accessor is used to get some basic data out of the game without having to request + * direct access to the game engine. + * It will also return things that are unmodified by the overriding systems (like getWailaStack). + */ + +public interface IWailaFMPAccessor { + World getWorld(); + EntityPlayer getPlayer(); + TileEntity getTileEntity(); + MovingObjectPosition getPosition(); + NBTTagCompound getNBTData(); + NBTTagCompound getFullNBTData(); + int getNBTInteger(NBTTagCompound tag, String keyname); + double getPartialFrame(); + Vec3 getRenderingPosition(); + String getID(); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java new file mode 100644 index 000000000..839af31f9 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java @@ -0,0 +1,7 @@ +package mcp.mobius.waila.api; + +import net.minecraft.item.ItemStack; + +public interface IWailaFMPDecorator { + void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java new file mode 100644 index 000000000..232c83eff --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java @@ -0,0 +1,12 @@ +package mcp.mobius.waila.api; + +import java.util.List; + +import net.minecraft.item.ItemStack; + +public interface IWailaFMPProvider { + /* The classical HEAD/BODY/TAIL text getters */ + List getWailaHead(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); + List getWailaBody(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); + List getWailaTail(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java new file mode 100644 index 000000000..833f77159 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java @@ -0,0 +1,56 @@ +package mcp.mobius.waila.api; + +public interface IWailaRegistrar { + /* Add a config option in the section modname with displayed text configtext and access key keyname */ + public void addConfig(String modname, String keyname, String configtext); + public void addConfigRemote(String modname, String keyname, String configtext); + public void addConfig(String modname, String keyname); + public void addConfigRemote(String modname, String keyname); + + /* Register a IWailaDataProvider for the given blockID, either for the Head section or the Body section */ + @Deprecated + public void registerHeadProvider (IWailaDataProvider dataProvider, int blockID); + @Deprecated + public void registerBodyProvider (IWailaDataProvider dataProvider, int blockID); + @Deprecated + public void registerTailProvider (IWailaDataProvider dataProvider, int blockID); + + /* Register a stack overrider for the given blockID */ + @Deprecated + public void registerStackProvider(IWailaDataProvider dataProvider, int blockID); + public void registerStackProvider(IWailaDataProvider dataProvider, Class block); + + /* Same thing, but works on a class hierarchy instead */ + public void registerHeadProvider (IWailaDataProvider dataProvider, Class block); + public void registerBodyProvider (IWailaDataProvider dataProvider, Class block); + public void registerTailProvider (IWailaDataProvider dataProvider, Class block); + + /* Entity text registration methods */ + public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity); + public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity); + + /* FMP Providers */ + public void registerHeadProvider(IWailaFMPProvider dataProvider, String name); + public void registerBodyProvider(IWailaFMPProvider dataProvider, String name); + public void registerTailProvider(IWailaFMPProvider dataProvider, String name); + + /* The block decorators */ + @Deprecated + public void registerDecorator (IWailaBlockDecorator decorator, int blockID); + public void registerDecorator (IWailaBlockDecorator decorator, Class block); + public void registerDecorator (IWailaFMPDecorator decorator, String name); + + /* Selective NBT key syncing. Will register a key to sync over the network for the given class (block, te or ent). + * Accept * as a ending wildcard + * registerNBTKey("bob.*", MyBlock.class) + * registerNBTKey("data.life", MyEntity.class) + * registerNBTKey("*", MyTileEntity.class) will reproduce the full tag syncing from 1.4.5 + * */ + public void registerSyncedNBTKey(String key, Class target); + + /* UNUSED FOR NOW (Will be used for the ingame wiki */ + public void registerDocTextFile (String filename); + public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item); +} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java new file mode 100644 index 000000000..f79064981 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java @@ -0,0 +1,21 @@ +package mcp.mobius.waila.api; + +import java.util.LinkedHashMap; + +import net.minecraft.item.ItemStack; + +public interface IWailaSummaryProvider { + /* This interface is used to control the display data in the description screen */ + + /* BASIC TOOLS & ITEMS DATA */ + //EnumToolMaterial getMaterial(ItemStack stack); + //String getMaterialName(ItemStack stack); + //String getEffectiveBlock(ItemStack stack); + //int getHarvestLevel(ItemStack stack); + //float getEfficiencyOnProperMaterial(ItemStack stack); + //int getEnchantability(ItemStack stack); + //int getDamageVsEntity(ItemStack stack); + //int getDurability(ItemStack stack); + + LinkedHashMap getSummary(ItemStack stack, LinkedHashMap currentSummary, IWailaConfigHandler config); +} diff --git a/src/api/java/mcp/mobius/waila/api/SpecialChars.java b/src/api/java/mcp/mobius/waila/api/SpecialChars.java new file mode 100644 index 000000000..5bd92a820 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/SpecialChars.java @@ -0,0 +1,40 @@ +package mcp.mobius.waila.api; + +public class SpecialChars { + + public static String MCStyle = "\u00A7"; + + public static String BLACK = MCStyle + "0"; + public static String DBLUE = MCStyle + "1"; + public static String DGREEN = MCStyle + "2"; + public static String DAQUA = MCStyle + "3"; + public static String DRED = MCStyle + "4"; + public static String DPURPLE = MCStyle + "5"; + public static String GOLD = MCStyle + "6"; + public static String GRAY = MCStyle + "7"; + public static String DGRAY = MCStyle + "8"; + public static String BLUE = MCStyle + "9"; + public static String GREEN = MCStyle + "a"; + public static String AQUA = MCStyle + "b"; + public static String RED = MCStyle + "c"; + public static String LPURPLE = MCStyle + "d"; + public static String YELLOW = MCStyle + "e"; + public static String WHITE = MCStyle + "f"; + + public static String OBF = MCStyle + "k"; + public static String BOLD = MCStyle + "l"; + public static String STRIKE = MCStyle + "m"; + public static String UNDER = MCStyle + "n"; + public static String ITALIC = MCStyle + "o"; + public static String RESET = MCStyle + "r"; + + public static String WailaStyle = "\u00A4"; + public static String WailaIcon = "\u00A5"; + public static String TAB = WailaStyle + WailaStyle +"a"; + public static String ALIGNRIGHT = WailaStyle + WailaStyle +"b"; + public static String ALIGNCENTER = WailaStyle + WailaStyle +"c"; + public static String HEART = WailaStyle + WailaIcon +"a"; + public static String HHEART = WailaStyle + WailaIcon +"b"; + public static String EHEART = WailaStyle + WailaIcon +"c"; + +} diff --git a/src/api/java/mcp/mobius/waila/api/package-info.java b/src/api/java/mcp/mobius/waila/api/package-info.java new file mode 100644 index 000000000..9b5e663b4 --- /dev/null +++ b/src/api/java/mcp/mobius/waila/api/package-info.java @@ -0,0 +1,3 @@ +@API(apiVersion="1.0",owner="Waila",provides="WailaAPI") +package mcp.mobius.waila.api; +import cpw.mods.fml.common.API; \ No newline at end of file From e1dff9fb2b2d8868bf7b94f9af17d6476c5a3cc8 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 14:57:42 -0400 Subject: [PATCH 100/144] . --- archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaBlock.java | 0 .../mcp/mobius/waila/api/IWailaBlockDecorator.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaConfigHandler.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaDataAccessor.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaDataProvider.java | 0 .../mcp/mobius/waila/api/IWailaEntityAccessor.java | 0 .../mcp/mobius/waila/api/IWailaEntityProvider.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaFMPAccessor.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaFMPDecorator.java | 0 .../{java => scala}/mcp/mobius/waila/api/IWailaFMPProvider.java | 0 .../api/{java => scala}/mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../mcp/mobius/waila/api/IWailaSummaryProvider.java | 0 .../api/{java => scala}/mcp/mobius/waila/api/SpecialChars.java | 0 .../api/{java => scala}/mcp/mobius/waila/api/package-info.java | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaBlock.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/SpecialChars.java (100%) rename archaic/api/{java => scala}/mcp/mobius/waila/api/package-info.java (100%) diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaBlock.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaBlock.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaBlock.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaDataProvider.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaRegistrar.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/archaic/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/archaic/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to archaic/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/archaic/api/java/mcp/mobius/waila/api/SpecialChars.java b/archaic/api/scala/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/SpecialChars.java rename to archaic/api/scala/mcp/mobius/waila/api/SpecialChars.java diff --git a/archaic/api/java/mcp/mobius/waila/api/package-info.java b/archaic/api/scala/mcp/mobius/waila/api/package-info.java similarity index 100% rename from archaic/api/java/mcp/mobius/waila/api/package-info.java rename to archaic/api/scala/mcp/mobius/waila/api/package-info.java From 0ce70d2d07791dd3c966c222d83bd8992c29b214 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 15:15:59 -0400 Subject: [PATCH 101/144] Another attempt to fix build issue --- .../mcp/mobius/waila/api/IWailaBlock.java | 34 ----------- .../waila/api/IWailaBlockDecorator.java | 9 --- .../mobius/waila/api/IWailaConfigHandler.java | 28 ---------- .../mobius/waila/api/IWailaDataAccessor.java | 33 ----------- .../mobius/waila/api/IWailaDataProvider.java | 33 ----------- .../waila/api/IWailaEntityAccessor.java | 24 -------- .../waila/api/IWailaEntityProvider.java | 16 ------ .../mobius/waila/api/IWailaFMPAccessor.java | 28 ---------- .../mobius/waila/api/IWailaFMPDecorator.java | 7 --- .../mobius/waila/api/IWailaFMPProvider.java | 12 ---- .../mcp/mobius/waila/api/IWailaRegistrar.java | 56 ------------------- .../waila/api/IWailaSummaryProvider.java | 21 ------- .../mcp/mobius/waila/api/SpecialChars.java | 40 ------------- .../mcp/mobius/waila/api/package-info.java | 3 - .../mcp/mobius/waila/api/IWailaBlock.java | 34 ----------- .../waila/api/IWailaBlockDecorator.java | 9 --- .../mobius/waila/api/IWailaConfigHandler.java | 28 ---------- .../mobius/waila/api/IWailaDataAccessor.java | 33 ----------- .../mobius/waila/api/IWailaDataProvider.java | 33 ----------- .../waila/api/IWailaEntityAccessor.java | 24 -------- .../waila/api/IWailaEntityProvider.java | 16 ------ .../mobius/waila/api/IWailaFMPAccessor.java | 28 ---------- .../mobius/waila/api/IWailaFMPDecorator.java | 7 --- .../mobius/waila/api/IWailaFMPProvider.java | 12 ---- .../mcp/mobius/waila/api/IWailaRegistrar.java | 56 ------------------- .../waila/api/IWailaSummaryProvider.java | 21 ------- .../mcp/mobius/waila/api/SpecialChars.java | 40 ------------- .../mcp/mobius/waila/api/package-info.java | 3 - .../mcp/mobius/waila/api/IWailaBlock.java | 0 .../waila/api/IWailaBlockDecorator.java | 0 .../mobius/waila/api/IWailaConfigHandler.java | 0 .../mobius/waila/api/IWailaDataAccessor.java | 0 .../mobius/waila/api/IWailaDataProvider.java | 0 .../waila/api/IWailaEntityAccessor.java | 0 .../waila/api/IWailaEntityProvider.java | 0 .../mobius/waila/api/IWailaFMPAccessor.java | 0 .../mobius/waila/api/IWailaFMPDecorator.java | 0 .../mobius/waila/api/IWailaFMPProvider.java | 0 .../mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../waila/api/IWailaSummaryProvider.java | 0 .../mcp/mobius/waila/api/SpecialChars.java | 0 .../mcp/mobius/waila/api/package-info.java | 0 42 files changed, 688 deletions(-) delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaBlock.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/SpecialChars.java delete mode 100644 mechanical/api/java/mcp/mobius/waila/api/package-info.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaBlock.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java delete mode 100644 src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java delete mode 100644 src/api/java/mcp/mobius/waila/api/SpecialChars.java delete mode 100644 src/api/java/mcp/mobius/waila/api/package-info.java rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaBlock.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/SpecialChars.java (100%) rename {electrical/api/java => src/api/scala}/mcp/mobius/waila/api/package-info.java (100%) diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaBlock.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaBlock.java deleted file mode 100644 index 8b4dd131e..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaBlock.java +++ /dev/null @@ -1,34 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -@Deprecated -public interface IWailaBlock { - /* - * Use this method to return an item stack in case the default lookup system fails. - * Return null if you want to use the default lookup system. - * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities - */ - ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); - - /* Waila HUD is divided into 3 zones. The head corresponds to the item name, - * body to where you mostly want to put informations, and I reserve the tail for modname display - */ - - /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. - * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). - * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. - * currenttip represents the current list of text lines in the tooltip zone. - * For example, getWailaHead() will have the current item name as currenttip. - * You can modify the tips, add more, remove some, etc. - * When you are done, just returns the currenttip and it will display in Waila. - * - * Always return the currenttip is you don't want to modify the current zone. - */ - - List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java deleted file mode 100644 index 935d475fa..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java +++ /dev/null @@ -1,9 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.item.ItemStack; - -public interface IWailaBlockDecorator { - - void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config); - -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java deleted file mode 100644 index faede63f6..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.HashMap; -import java.util.Set; - -public interface IWailaConfigHandler { - /* Returns a set of all the currently loaded modules in the config handler */ - public Set getModuleNames(); - - /* Returns all the currently available options for a given module */ - public HashMap getConfigKeys(String modName); - - /* Add a new option to a given module - * - * modName is the name of the module to add the option to (ie : Buildcraft, IndustrialCraft2, etc) - * key is the config key (ie : bc.tankcontent, ic2.inputvalue) - * name is the human readable name of the option (ie : "Tank content", "Max EU Input") - * */ - //public void addConfig(String modName, String key, String name); - - /* Returns the current value of an option (true/false) with a default value defvalue if not set*/ - public boolean getConfig(String key, boolean defvalue); - - /* Returns the current value of an option (true/false) with a default value true if not set*/ - public boolean getConfig(String key); - - //public void setConfig(String key, boolean value); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java deleted file mode 100644 index 5eade35f3..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java +++ /dev/null @@ -1,33 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaDataAccessor { - - World getWorld(); - EntityPlayer getPlayer(); - Block getBlock(); - int getBlockID(); - int getMetadata(); - TileEntity getTileEntity(); - MovingObjectPosition getPosition(); - Vec3 getRenderingPosition(); - NBTTagCompound getNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); - ForgeDirection getSide(); - ItemStack getStack(); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java deleted file mode 100644 index 4859d9cd3..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface IWailaDataProvider{ - /* - * Use this method to return an item stack in case the default lookup system fails. - * Return null if you want to use the default lookup system. - * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities - */ - ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); - - /* Waila HUD is divided into 3 zones. The head corresponds to the item name, - * body to where you mostly want to put informations, and I reserve the tail for modname display - */ - - /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. - * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). - * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. - * currenttip represents the current list of text lines in the tooltip zone. - * For example, getWailaHead() will have the current item name as currenttip. - * You can modify the tips, add more, remove some, etc. - * When you are done, just returns the currenttip and it will display in Waila. - * - * Always return the currenttip is you don't want to modify the current zone. - */ - - List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java deleted file mode 100644 index 788067afc..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java +++ /dev/null @@ -1,24 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaEntityAccessor { - World getWorld(); - EntityPlayer getPlayer(); - Entity getEntity(); - MovingObjectPosition getPosition(); - Vec3 getRenderingPosition(); - NBTTagCompound getNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java deleted file mode 100644 index 9548289aa..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java +++ /dev/null @@ -1,16 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.entity.Entity; - -public interface IWailaEntityProvider { - - /* A way to get an override on the entity returned by the raytracing */ - Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config); - - /* The classical HEAD/BODY/TAIL text getters */ - List getWailaHead(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); - List getWailaBody(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); - List getWailaTail(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java deleted file mode 100644 index e30afc435..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java +++ /dev/null @@ -1,28 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaFMPAccessor { - World getWorld(); - EntityPlayer getPlayer(); - TileEntity getTileEntity(); - MovingObjectPosition getPosition(); - NBTTagCompound getNBTData(); - NBTTagCompound getFullNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); - Vec3 getRenderingPosition(); - String getID(); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java deleted file mode 100644 index 839af31f9..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java +++ /dev/null @@ -1,7 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.item.ItemStack; - -public interface IWailaFMPDecorator { - void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java deleted file mode 100644 index 232c83eff..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface IWailaFMPProvider { - /* The classical HEAD/BODY/TAIL text getters */ - List getWailaHead(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java deleted file mode 100644 index 833f77159..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java +++ /dev/null @@ -1,56 +0,0 @@ -package mcp.mobius.waila.api; - -public interface IWailaRegistrar { - /* Add a config option in the section modname with displayed text configtext and access key keyname */ - public void addConfig(String modname, String keyname, String configtext); - public void addConfigRemote(String modname, String keyname, String configtext); - public void addConfig(String modname, String keyname); - public void addConfigRemote(String modname, String keyname); - - /* Register a IWailaDataProvider for the given blockID, either for the Head section or the Body section */ - @Deprecated - public void registerHeadProvider (IWailaDataProvider dataProvider, int blockID); - @Deprecated - public void registerBodyProvider (IWailaDataProvider dataProvider, int blockID); - @Deprecated - public void registerTailProvider (IWailaDataProvider dataProvider, int blockID); - - /* Register a stack overrider for the given blockID */ - @Deprecated - public void registerStackProvider(IWailaDataProvider dataProvider, int blockID); - public void registerStackProvider(IWailaDataProvider dataProvider, Class block); - - /* Same thing, but works on a class hierarchy instead */ - public void registerHeadProvider (IWailaDataProvider dataProvider, Class block); - public void registerBodyProvider (IWailaDataProvider dataProvider, Class block); - public void registerTailProvider (IWailaDataProvider dataProvider, Class block); - - /* Entity text registration methods */ - public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity); - - /* FMP Providers */ - public void registerHeadProvider(IWailaFMPProvider dataProvider, String name); - public void registerBodyProvider(IWailaFMPProvider dataProvider, String name); - public void registerTailProvider(IWailaFMPProvider dataProvider, String name); - - /* The block decorators */ - @Deprecated - public void registerDecorator (IWailaBlockDecorator decorator, int blockID); - public void registerDecorator (IWailaBlockDecorator decorator, Class block); - public void registerDecorator (IWailaFMPDecorator decorator, String name); - - /* Selective NBT key syncing. Will register a key to sync over the network for the given class (block, te or ent). - * Accept * as a ending wildcard - * registerNBTKey("bob.*", MyBlock.class) - * registerNBTKey("data.life", MyEntity.class) - * registerNBTKey("*", MyTileEntity.class) will reproduce the full tag syncing from 1.4.5 - * */ - public void registerSyncedNBTKey(String key, Class target); - - /* UNUSED FOR NOW (Will be used for the ingame wiki */ - public void registerDocTextFile (String filename); - public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/mechanical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java deleted file mode 100644 index f79064981..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java +++ /dev/null @@ -1,21 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.LinkedHashMap; - -import net.minecraft.item.ItemStack; - -public interface IWailaSummaryProvider { - /* This interface is used to control the display data in the description screen */ - - /* BASIC TOOLS & ITEMS DATA */ - //EnumToolMaterial getMaterial(ItemStack stack); - //String getMaterialName(ItemStack stack); - //String getEffectiveBlock(ItemStack stack); - //int getHarvestLevel(ItemStack stack); - //float getEfficiencyOnProperMaterial(ItemStack stack); - //int getEnchantability(ItemStack stack); - //int getDamageVsEntity(ItemStack stack); - //int getDurability(ItemStack stack); - - LinkedHashMap getSummary(ItemStack stack, LinkedHashMap currentSummary, IWailaConfigHandler config); -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/SpecialChars.java b/mechanical/api/java/mcp/mobius/waila/api/SpecialChars.java deleted file mode 100644 index 5bd92a820..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/SpecialChars.java +++ /dev/null @@ -1,40 +0,0 @@ -package mcp.mobius.waila.api; - -public class SpecialChars { - - public static String MCStyle = "\u00A7"; - - public static String BLACK = MCStyle + "0"; - public static String DBLUE = MCStyle + "1"; - public static String DGREEN = MCStyle + "2"; - public static String DAQUA = MCStyle + "3"; - public static String DRED = MCStyle + "4"; - public static String DPURPLE = MCStyle + "5"; - public static String GOLD = MCStyle + "6"; - public static String GRAY = MCStyle + "7"; - public static String DGRAY = MCStyle + "8"; - public static String BLUE = MCStyle + "9"; - public static String GREEN = MCStyle + "a"; - public static String AQUA = MCStyle + "b"; - public static String RED = MCStyle + "c"; - public static String LPURPLE = MCStyle + "d"; - public static String YELLOW = MCStyle + "e"; - public static String WHITE = MCStyle + "f"; - - public static String OBF = MCStyle + "k"; - public static String BOLD = MCStyle + "l"; - public static String STRIKE = MCStyle + "m"; - public static String UNDER = MCStyle + "n"; - public static String ITALIC = MCStyle + "o"; - public static String RESET = MCStyle + "r"; - - public static String WailaStyle = "\u00A4"; - public static String WailaIcon = "\u00A5"; - public static String TAB = WailaStyle + WailaStyle +"a"; - public static String ALIGNRIGHT = WailaStyle + WailaStyle +"b"; - public static String ALIGNCENTER = WailaStyle + WailaStyle +"c"; - public static String HEART = WailaStyle + WailaIcon +"a"; - public static String HHEART = WailaStyle + WailaIcon +"b"; - public static String EHEART = WailaStyle + WailaIcon +"c"; - -} diff --git a/mechanical/api/java/mcp/mobius/waila/api/package-info.java b/mechanical/api/java/mcp/mobius/waila/api/package-info.java deleted file mode 100644 index 9b5e663b4..000000000 --- a/mechanical/api/java/mcp/mobius/waila/api/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="Waila",provides="WailaAPI") -package mcp.mobius.waila.api; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlock.java b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java deleted file mode 100644 index 8b4dd131e..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaBlock.java +++ /dev/null @@ -1,34 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -@Deprecated -public interface IWailaBlock { - /* - * Use this method to return an item stack in case the default lookup system fails. - * Return null if you want to use the default lookup system. - * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities - */ - ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); - - /* Waila HUD is divided into 3 zones. The head corresponds to the item name, - * body to where you mostly want to put informations, and I reserve the tail for modname display - */ - - /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. - * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). - * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. - * currenttip represents the current list of text lines in the tooltip zone. - * For example, getWailaHead() will have the current item name as currenttip. - * You can modify the tips, add more, remove some, etc. - * When you are done, just returns the currenttip and it will display in Waila. - * - * Always return the currenttip is you don't want to modify the current zone. - */ - - List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java deleted file mode 100644 index 935d475fa..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java +++ /dev/null @@ -1,9 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.item.ItemStack; - -public interface IWailaBlockDecorator { - - void decorateBlock(ItemStack itemStack, IWailaDataAccessor accessor, IWailaConfigHandler config); - -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java deleted file mode 100644 index faede63f6..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java +++ /dev/null @@ -1,28 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.HashMap; -import java.util.Set; - -public interface IWailaConfigHandler { - /* Returns a set of all the currently loaded modules in the config handler */ - public Set getModuleNames(); - - /* Returns all the currently available options for a given module */ - public HashMap getConfigKeys(String modName); - - /* Add a new option to a given module - * - * modName is the name of the module to add the option to (ie : Buildcraft, IndustrialCraft2, etc) - * key is the config key (ie : bc.tankcontent, ic2.inputvalue) - * name is the human readable name of the option (ie : "Tank content", "Max EU Input") - * */ - //public void addConfig(String modName, String key, String name); - - /* Returns the current value of an option (true/false) with a default value defvalue if not set*/ - public boolean getConfig(String key, boolean defvalue); - - /* Returns the current value of an option (true/false) with a default value true if not set*/ - public boolean getConfig(String key); - - //public void setConfig(String key, boolean value); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java deleted file mode 100644 index 5eade35f3..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java +++ /dev/null @@ -1,33 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaDataAccessor { - - World getWorld(); - EntityPlayer getPlayer(); - Block getBlock(); - int getBlockID(); - int getMetadata(); - TileEntity getTileEntity(); - MovingObjectPosition getPosition(); - Vec3 getRenderingPosition(); - NBTTagCompound getNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); - ForgeDirection getSide(); - ItemStack getStack(); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java deleted file mode 100644 index 4859d9cd3..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface IWailaDataProvider{ - /* - * Use this method to return an item stack in case the default lookup system fails. - * Return null if you want to use the default lookup system. - * You get the world, the player and the location of the block. With that, it is easy to gather information & tile entities - */ - ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config); - - /* Waila HUD is divided into 3 zones. The head corresponds to the item name, - * body to where you mostly want to put informations, and I reserve the tail for modname display - */ - - /* Those 2 methods works exactly the same way, except they are related to a different zone in Waila HUD. - * You get in input world, player and the block location. You also get the itemstack as returned by the default lookup system or getWailaStack(). - * ConfigHandler provides the current Waila config state so you can show/hide elements depending on the configuration. Refer the ConfigHandler class for more info. - * currenttip represents the current list of text lines in the tooltip zone. - * For example, getWailaHead() will have the current item name as currenttip. - * You can modify the tips, add more, remove some, etc. - * When you are done, just returns the currenttip and it will display in Waila. - * - * Always return the currenttip is you don't want to modify the current zone. - */ - - List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java deleted file mode 100644 index 788067afc..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java +++ /dev/null @@ -1,24 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaEntityAccessor { - World getWorld(); - EntityPlayer getPlayer(); - Entity getEntity(); - MovingObjectPosition getPosition(); - Vec3 getRenderingPosition(); - NBTTagCompound getNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java deleted file mode 100644 index 9548289aa..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java +++ /dev/null @@ -1,16 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.entity.Entity; - -public interface IWailaEntityProvider { - - /* A way to get an override on the entity returned by the raytracing */ - Entity getWailaOverride(IWailaEntityAccessor accessor, IWailaConfigHandler config); - - /* The classical HEAD/BODY/TAIL text getters */ - List getWailaHead(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); - List getWailaBody(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); - List getWailaTail(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java deleted file mode 100644 index e30afc435..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java +++ /dev/null @@ -1,28 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; - -/* The Accessor is used to get some basic data out of the game without having to request - * direct access to the game engine. - * It will also return things that are unmodified by the overriding systems (like getWailaStack). - */ - -public interface IWailaFMPAccessor { - World getWorld(); - EntityPlayer getPlayer(); - TileEntity getTileEntity(); - MovingObjectPosition getPosition(); - NBTTagCompound getNBTData(); - NBTTagCompound getFullNBTData(); - int getNBTInteger(NBTTagCompound tag, String keyname); - double getPartialFrame(); - Vec3 getRenderingPosition(); - String getID(); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java deleted file mode 100644 index 839af31f9..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java +++ /dev/null @@ -1,7 +0,0 @@ -package mcp.mobius.waila.api; - -import net.minecraft.item.ItemStack; - -public interface IWailaFMPDecorator { - void decorateBlock(ItemStack itemStack, IWailaFMPAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java deleted file mode 100644 index 232c83eff..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java +++ /dev/null @@ -1,12 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.List; - -import net.minecraft.item.ItemStack; - -public interface IWailaFMPProvider { - /* The classical HEAD/BODY/TAIL text getters */ - List getWailaHead(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); - List getWailaBody(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); - List getWailaTail(ItemStack itemStack, List currenttip, IWailaFMPAccessor accessor, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java deleted file mode 100644 index 833f77159..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java +++ /dev/null @@ -1,56 +0,0 @@ -package mcp.mobius.waila.api; - -public interface IWailaRegistrar { - /* Add a config option in the section modname with displayed text configtext and access key keyname */ - public void addConfig(String modname, String keyname, String configtext); - public void addConfigRemote(String modname, String keyname, String configtext); - public void addConfig(String modname, String keyname); - public void addConfigRemote(String modname, String keyname); - - /* Register a IWailaDataProvider for the given blockID, either for the Head section or the Body section */ - @Deprecated - public void registerHeadProvider (IWailaDataProvider dataProvider, int blockID); - @Deprecated - public void registerBodyProvider (IWailaDataProvider dataProvider, int blockID); - @Deprecated - public void registerTailProvider (IWailaDataProvider dataProvider, int blockID); - - /* Register a stack overrider for the given blockID */ - @Deprecated - public void registerStackProvider(IWailaDataProvider dataProvider, int blockID); - public void registerStackProvider(IWailaDataProvider dataProvider, Class block); - - /* Same thing, but works on a class hierarchy instead */ - public void registerHeadProvider (IWailaDataProvider dataProvider, Class block); - public void registerBodyProvider (IWailaDataProvider dataProvider, Class block); - public void registerTailProvider (IWailaDataProvider dataProvider, Class block); - - /* Entity text registration methods */ - public void registerHeadProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerBodyProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerTailProvider (IWailaEntityProvider dataProvider, Class entity); - public void registerOverrideEntityProvider (IWailaEntityProvider dataProvider, Class entity); - - /* FMP Providers */ - public void registerHeadProvider(IWailaFMPProvider dataProvider, String name); - public void registerBodyProvider(IWailaFMPProvider dataProvider, String name); - public void registerTailProvider(IWailaFMPProvider dataProvider, String name); - - /* The block decorators */ - @Deprecated - public void registerDecorator (IWailaBlockDecorator decorator, int blockID); - public void registerDecorator (IWailaBlockDecorator decorator, Class block); - public void registerDecorator (IWailaFMPDecorator decorator, String name); - - /* Selective NBT key syncing. Will register a key to sync over the network for the given class (block, te or ent). - * Accept * as a ending wildcard - * registerNBTKey("bob.*", MyBlock.class) - * registerNBTKey("data.life", MyEntity.class) - * registerNBTKey("*", MyTileEntity.class) will reproduce the full tag syncing from 1.4.5 - * */ - public void registerSyncedNBTKey(String key, Class target); - - /* UNUSED FOR NOW (Will be used for the ingame wiki */ - public void registerDocTextFile (String filename); - public void registerShortDataProvider (IWailaSummaryProvider dataProvider, Class item); -} diff --git a/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java deleted file mode 100644 index f79064981..000000000 --- a/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java +++ /dev/null @@ -1,21 +0,0 @@ -package mcp.mobius.waila.api; - -import java.util.LinkedHashMap; - -import net.minecraft.item.ItemStack; - -public interface IWailaSummaryProvider { - /* This interface is used to control the display data in the description screen */ - - /* BASIC TOOLS & ITEMS DATA */ - //EnumToolMaterial getMaterial(ItemStack stack); - //String getMaterialName(ItemStack stack); - //String getEffectiveBlock(ItemStack stack); - //int getHarvestLevel(ItemStack stack); - //float getEfficiencyOnProperMaterial(ItemStack stack); - //int getEnchantability(ItemStack stack); - //int getDamageVsEntity(ItemStack stack); - //int getDurability(ItemStack stack); - - LinkedHashMap getSummary(ItemStack stack, LinkedHashMap currentSummary, IWailaConfigHandler config); -} diff --git a/src/api/java/mcp/mobius/waila/api/SpecialChars.java b/src/api/java/mcp/mobius/waila/api/SpecialChars.java deleted file mode 100644 index 5bd92a820..000000000 --- a/src/api/java/mcp/mobius/waila/api/SpecialChars.java +++ /dev/null @@ -1,40 +0,0 @@ -package mcp.mobius.waila.api; - -public class SpecialChars { - - public static String MCStyle = "\u00A7"; - - public static String BLACK = MCStyle + "0"; - public static String DBLUE = MCStyle + "1"; - public static String DGREEN = MCStyle + "2"; - public static String DAQUA = MCStyle + "3"; - public static String DRED = MCStyle + "4"; - public static String DPURPLE = MCStyle + "5"; - public static String GOLD = MCStyle + "6"; - public static String GRAY = MCStyle + "7"; - public static String DGRAY = MCStyle + "8"; - public static String BLUE = MCStyle + "9"; - public static String GREEN = MCStyle + "a"; - public static String AQUA = MCStyle + "b"; - public static String RED = MCStyle + "c"; - public static String LPURPLE = MCStyle + "d"; - public static String YELLOW = MCStyle + "e"; - public static String WHITE = MCStyle + "f"; - - public static String OBF = MCStyle + "k"; - public static String BOLD = MCStyle + "l"; - public static String STRIKE = MCStyle + "m"; - public static String UNDER = MCStyle + "n"; - public static String ITALIC = MCStyle + "o"; - public static String RESET = MCStyle + "r"; - - public static String WailaStyle = "\u00A4"; - public static String WailaIcon = "\u00A5"; - public static String TAB = WailaStyle + WailaStyle +"a"; - public static String ALIGNRIGHT = WailaStyle + WailaStyle +"b"; - public static String ALIGNCENTER = WailaStyle + WailaStyle +"c"; - public static String HEART = WailaStyle + WailaIcon +"a"; - public static String HHEART = WailaStyle + WailaIcon +"b"; - public static String EHEART = WailaStyle + WailaIcon +"c"; - -} diff --git a/src/api/java/mcp/mobius/waila/api/package-info.java b/src/api/java/mcp/mobius/waila/api/package-info.java deleted file mode 100644 index 9b5e663b4..000000000 --- a/src/api/java/mcp/mobius/waila/api/package-info.java +++ /dev/null @@ -1,3 +0,0 @@ -@API(apiVersion="1.0",owner="Waila",provides="WailaAPI") -package mcp.mobius.waila.api; -import cpw.mods.fml.common.API; \ No newline at end of file diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaBlock.java b/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaBlock.java rename to src/api/scala/mcp/mobius/waila/api/IWailaBlock.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java rename to src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaDataProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaRegistrar.java rename to src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/electrical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/electrical/api/java/mcp/mobius/waila/api/SpecialChars.java b/src/api/scala/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/SpecialChars.java rename to src/api/scala/mcp/mobius/waila/api/SpecialChars.java diff --git a/electrical/api/java/mcp/mobius/waila/api/package-info.java b/src/api/scala/mcp/mobius/waila/api/package-info.java similarity index 100% rename from electrical/api/java/mcp/mobius/waila/api/package-info.java rename to src/api/scala/mcp/mobius/waila/api/package-info.java From d6033440282210fcc8b733d6952dd5c522acd9d5 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 15:23:11 -0400 Subject: [PATCH 102/144] Quick file change test --- src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaBlock.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaDataProvider.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java | 0 src/{ => main}/api/scala/mcp/mobius/waila/api/SpecialChars.java | 0 src/{ => main}/api/scala/mcp/mobius/waila/api/package-info.java | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaBlock.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/SpecialChars.java (100%) rename src/{ => main}/api/scala/mcp/mobius/waila/api/package-info.java (100%) diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaBlock.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaBlock.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/main/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to src/main/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/SpecialChars.java b/src/main/api/scala/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/SpecialChars.java rename to src/main/api/scala/mcp/mobius/waila/api/SpecialChars.java diff --git a/src/api/scala/mcp/mobius/waila/api/package-info.java b/src/main/api/scala/mcp/mobius/waila/api/package-info.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/package-info.java rename to src/main/api/scala/mcp/mobius/waila/api/package-info.java From 4ca228ff6503ac87fd85eecb5f9a445e70145c18 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 15:44:44 -0400 Subject: [PATCH 103/144] Lets try this and see if it works (dark starts to go crazy) --- archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaBlock.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaDataProvider.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java | 0 .../{ => src}/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java | 0 .../{ => src}/api/scala/mcp/mobius/waila/api/SpecialChars.java | 0 .../{ => src}/api/scala/mcp/mobius/waila/api/package-info.java | 0 src/{main => }/api/scala/mcp/mobius/waila/api/IWailaBlock.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaDataProvider.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java | 0 src/{main => }/api/scala/mcp/mobius/waila/api/SpecialChars.java | 0 src/{main => }/api/scala/mcp/mobius/waila/api/package-info.java | 0 28 files changed, 0 insertions(+), 0 deletions(-) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaBlock.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/SpecialChars.java (100%) rename archaic/{ => src}/api/scala/mcp/mobius/waila/api/package-info.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaBlock.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/SpecialChars.java (100%) rename src/{main => }/api/scala/mcp/mobius/waila/api/package-info.java (100%) diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaBlock.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaBlock.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java b/archaic/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to archaic/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/SpecialChars.java b/archaic/src/api/scala/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/SpecialChars.java rename to archaic/src/api/scala/mcp/mobius/waila/api/SpecialChars.java diff --git a/archaic/api/scala/mcp/mobius/waila/api/package-info.java b/archaic/src/api/scala/mcp/mobius/waila/api/package-info.java similarity index 100% rename from archaic/api/scala/mcp/mobius/waila/api/package-info.java rename to archaic/src/api/scala/mcp/mobius/waila/api/package-info.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaBlock.java b/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaBlock.java rename to src/api/scala/mcp/mobius/waila/api/IWailaBlock.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java rename to src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java rename to src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/SpecialChars.java b/src/api/scala/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/SpecialChars.java rename to src/api/scala/mcp/mobius/waila/api/SpecialChars.java diff --git a/src/main/api/scala/mcp/mobius/waila/api/package-info.java b/src/api/scala/mcp/mobius/waila/api/package-info.java similarity index 100% rename from src/main/api/scala/mcp/mobius/waila/api/package-info.java rename to src/api/scala/mcp/mobius/waila/api/package-info.java From e210232629edb706913d942ee2a445b3103391a7 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 15:57:52 -0400 Subject: [PATCH 104/144] Another attempt --- .../src/api/{scala => java}/mcp/mobius/waila/api/IWailaBlock.java | 0 .../mcp/mobius/waila/api/IWailaBlockDecorator.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaConfigHandler.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaDataAccessor.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaDataProvider.java | 0 .../mcp/mobius/waila/api/IWailaEntityAccessor.java | 0 .../mcp/mobius/waila/api/IWailaEntityProvider.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaFMPAccessor.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaFMPDecorator.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaFMPProvider.java | 0 .../api/{scala => java}/mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../mcp/mobius/waila/api/IWailaSummaryProvider.java | 0 .../api/{scala => java}/mcp/mobius/waila/api/SpecialChars.java | 0 .../api/{scala => java}/mcp/mobius/waila/api/package-info.java | 0 src/api/{scala => java}/mcp/mobius/waila/api/IWailaBlock.java | 0 .../mcp/mobius/waila/api/IWailaBlockDecorator.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaConfigHandler.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaDataAccessor.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaDataProvider.java | 0 .../mcp/mobius/waila/api/IWailaEntityAccessor.java | 0 .../mcp/mobius/waila/api/IWailaEntityProvider.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaFMPAccessor.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaFMPDecorator.java | 0 .../{scala => java}/mcp/mobius/waila/api/IWailaFMPProvider.java | 0 src/api/{scala => java}/mcp/mobius/waila/api/IWailaRegistrar.java | 0 .../mcp/mobius/waila/api/IWailaSummaryProvider.java | 0 src/api/{scala => java}/mcp/mobius/waila/api/SpecialChars.java | 0 src/api/{scala => java}/mcp/mobius/waila/api/package-info.java | 0 28 files changed, 0 insertions(+), 0 deletions(-) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaBlock.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/SpecialChars.java (100%) rename archaic/src/api/{scala => java}/mcp/mobius/waila/api/package-info.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaBlock.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaBlockDecorator.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaConfigHandler.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaDataAccessor.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaDataProvider.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaEntityAccessor.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaEntityProvider.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaFMPAccessor.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaFMPDecorator.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaFMPProvider.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaRegistrar.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/IWailaSummaryProvider.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/SpecialChars.java (100%) rename src/api/{scala => java}/mcp/mobius/waila/api/package-info.java (100%) diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaBlock.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java b/archaic/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to archaic/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/SpecialChars.java b/archaic/src/api/java/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/SpecialChars.java rename to archaic/src/api/java/mcp/mobius/waila/api/SpecialChars.java diff --git a/archaic/src/api/scala/mcp/mobius/waila/api/package-info.java b/archaic/src/api/java/mcp/mobius/waila/api/package-info.java similarity index 100% rename from archaic/src/api/scala/mcp/mobius/waila/api/package-info.java rename to archaic/src/api/java/mcp/mobius/waila/api/package-info.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaBlock.java b/src/api/java/mcp/mobius/waila/api/IWailaBlock.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaBlock.java rename to src/api/java/mcp/mobius/waila/api/IWailaBlock.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaBlockDecorator.java rename to src/api/java/mcp/mobius/waila/api/IWailaBlockDecorator.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java b/src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaConfigHandler.java rename to src/api/java/mcp/mobius/waila/api/IWailaConfigHandler.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaDataAccessor.java rename to src/api/java/mcp/mobius/waila/api/IWailaDataAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaDataProvider.java rename to src/api/java/mcp/mobius/waila/api/IWailaDataProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaEntityAccessor.java rename to src/api/java/mcp/mobius/waila/api/IWailaEntityAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaEntityProvider.java rename to src/api/java/mcp/mobius/waila/api/IWailaEntityProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPAccessor.java rename to src/api/java/mcp/mobius/waila/api/IWailaFMPAccessor.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPDecorator.java rename to src/api/java/mcp/mobius/waila/api/IWailaFMPDecorator.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaFMPProvider.java rename to src/api/java/mcp/mobius/waila/api/IWailaFMPProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java b/src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaRegistrar.java rename to src/api/java/mcp/mobius/waila/api/IWailaRegistrar.java diff --git a/src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java b/src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/IWailaSummaryProvider.java rename to src/api/java/mcp/mobius/waila/api/IWailaSummaryProvider.java diff --git a/src/api/scala/mcp/mobius/waila/api/SpecialChars.java b/src/api/java/mcp/mobius/waila/api/SpecialChars.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/SpecialChars.java rename to src/api/java/mcp/mobius/waila/api/SpecialChars.java diff --git a/src/api/scala/mcp/mobius/waila/api/package-info.java b/src/api/java/mcp/mobius/waila/api/package-info.java similarity index 100% rename from src/api/scala/mcp/mobius/waila/api/package-info.java rename to src/api/java/mcp/mobius/waila/api/package-info.java From 57bf1043f3ce9a26117dce0477e9cc6124707653 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 16:36:05 -0400 Subject: [PATCH 105/144] Fix for build script by AbrarSyed --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 187a55e46..135162849 100644 --- a/build.gradle +++ b/build.gradle @@ -99,8 +99,8 @@ allprojects { } subprojects { - archivesBaseName = "${System.getenv().JOB_NAME}" - + archivesBaseName = "${System.getenv().JOB_NAME}" + sourceSets.main.compileClassPath += rootProject.sourceSets.api.output dependencies { compile rootProject } From 4c9b66fc6aad00839948dfd249ec1b2fe60f1944 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 16:41:00 -0400 Subject: [PATCH 106/144] Another try to fix the issue --- build.gradle | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 135162849..2bea62782 100644 --- a/build.gradle +++ b/build.gradle @@ -100,7 +100,6 @@ allprojects { subprojects { archivesBaseName = "${System.getenv().JOB_NAME}" - sourceSets.main.compileClassPath += rootProject.sourceSets.api.output dependencies { compile rootProject } @@ -128,6 +127,9 @@ task apiZip(type: Zip) { destinationDir = file 'output' } + subprojects { + sourceSets.main.compileClassPath += rootProject.sourceSets.api.output + } artifacts { archives apiZip } From acef5edcd61e3fb9f5e5cf01e9c3886c27df1056 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 16:47:28 -0400 Subject: [PATCH 107/144] Format fix in build script --- build.gradle | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 2bea62782..a367c0ed8 100644 --- a/build.gradle +++ b/build.gradle @@ -127,9 +127,10 @@ task apiZip(type: Zip) { destinationDir = file 'output' } - subprojects { +subprojects { sourceSets.main.compileClassPath += rootProject.sourceSets.api.output - } +} + artifacts { archives apiZip } From ec0e0307ce015e496dd30255945e7327bb226d74 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 16:51:48 -0400 Subject: [PATCH 108/144] . --- build.gradle | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index a367c0ed8..436acd862 100644 --- a/build.gradle +++ b/build.gradle @@ -100,6 +100,7 @@ allprojects { subprojects { archivesBaseName = "${System.getenv().JOB_NAME}" + sourceSets.main.compileClassPath += rootProject.sourceSets.api.output dependencies { compile rootProject } @@ -126,10 +127,6 @@ task apiZip(type: Zip) { include 'resonantinduction/api/**' destinationDir = file 'output' } - -subprojects { - sourceSets.main.compileClassPath += rootProject.sourceSets.api.output -} artifacts { archives apiZip From 67d7114f1b65c168b5955b3329b95169d8976f90 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sat, 26 Apr 2014 17:08:06 -0400 Subject: [PATCH 109/144] Minor spelling change --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 436acd862..33ab9c005 100644 --- a/build.gradle +++ b/build.gradle @@ -100,7 +100,7 @@ allprojects { subprojects { archivesBaseName = "${System.getenv().JOB_NAME}" - sourceSets.main.compileClassPath += rootProject.sourceSets.api.output + sourceSets.main.compileClasspath += rootProject.sourceSets.api.output dependencies { compile rootProject } From 990f83d5ce94907d8c731e3a2da429a8ce3ac08e Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 27 Apr 2014 15:20:48 -0400 Subject: [PATCH 110/144] Added toString to several tiles allowing better debug --- .../electrical/battery/TileBattery.java | 160 +- .../electrical/charger/PartCharger.java | 6 + .../electrical/multimeter/PartMultimeter.java | 1081 +++++----- .../electrical/wire/PartAdvancedWire.java | 6 + .../electrical/wire/PartConductor.java | 280 ++- .../electrical/wire/flat/PartFlatWire.java | 1842 ++++++++--------- .../wire/framed/PartFramedWire.java | 11 +- .../mechanical/energy/gear/PartGear.java | 6 + .../prefab/part/PartFramedConnection.java | 658 +++--- 9 files changed, 2027 insertions(+), 2023 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java index 46af6ad37..85e8a6c1b 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java @@ -17,101 +17,101 @@ import calclavia.lib.network.IPacketSender; import com.google.common.io.ByteArrayDataInput; -/** - * A modular battery box that allows shared connections with boxes next to it. +/** A modular battery box that allows shared connections with boxes next to it. * - * @author Calclavia - */ + * @author Calclavia */ public class TileBattery extends TileEnergyDistribution implements IVoltageInput, IVoltageOutput, IPacketSender, IPacketReceiver, IEnergyInterface, IEnergyContainer { - /** - * Tiers: 0, 1, 2 - */ - public static final int MAX_TIER = 2; + /** Tiers: 0, 1, 2 */ + public static final int MAX_TIER = 2; - /** The transfer rate **/ - public static final long DEFAULT_WATTAGE = getEnergyForTier(0); + /** The transfer rate **/ + public static final long DEFAULT_WATTAGE = getEnergyForTier(0); - public TileBattery() - { - this.setEnergyHandler(new EnergyStorageHandler(0)); - this.getEnergyHandler().setCapacity(Long.MAX_VALUE); - this.ioMap = 0; - this.saveIOMap = true; - } + public TileBattery() + { + this.setEnergyHandler(new EnergyStorageHandler(0)); + this.getEnergyHandler().setCapacity(Long.MAX_VALUE); + this.ioMap = 0; + this.saveIOMap = true; + } - /** - * @param tier - 0, 1, 2 - * @return - */ - public static long getEnergyForTier(int tier) - { - return Math.round(Math.pow(500000000, (tier / (MAX_TIER + 0.7f)) + 1) / (500000000)) * (500000000); - } + /** @param tier - 0, 1, 2 + * @return */ + public static long getEnergyForTier(int tier) + { + return Math.round(Math.pow(500000000, (tier / (MAX_TIER + 0.7f)) + 1) / (500000000)) * (500000000); + } - @Override - public void initiate() - { - super.initiate(); - getEnergyHandler().setCapacity(getEnergyForTier(getBlockMetadata())); - getEnergyHandler().setMaxTransfer(getEnergyHandler().getEnergyCapacity()); - } + @Override + public void initiate() + { + super.initiate(); + getEnergyHandler().setCapacity(getEnergyForTier(getBlockMetadata())); + getEnergyHandler().setMaxTransfer(getEnergyHandler().getEnergyCapacity()); + } - @Override - public void updateEntity() - { - if (!this.worldObj.isRemote) - { - markDistributionUpdate |= produce() > 0; - } + @Override + public void updateEntity() + { + if (!this.worldObj.isRemote) + { + markDistributionUpdate |= produce() > 0; + } - super.updateEntity(); - } + super.updateEntity(); + } - @Override - public Packet getDescriptionPacket() - { - return ResonantInduction.PACKET_TILE.getPacket(this, getPacketData(0).toArray()); - } + @Override + public Packet getDescriptionPacket() + { + return ResonantInduction.PACKET_TILE.getPacket(this, getPacketData(0).toArray()); + } - @Override - public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) - { - getEnergyHandler().setEnergy(data.readLong()); - ioMap = data.readShort(); - } + @Override + public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) + { + getEnergyHandler().setEnergy(data.readLong()); + ioMap = data.readShort(); + } - @Override - public ArrayList getPacketData(int type) - { - ArrayList data = new ArrayList(); - data.add(renderEnergyAmount); - data.add(ioMap); - return data; - } + @Override + public ArrayList getPacketData(int type) + { + ArrayList data = new ArrayList(); + data.add(renderEnergyAmount); + data.add(ioMap); + return data; + } - @Override - public long getVoltageOutput(ForgeDirection side) - { - return UniversalElectricity.DEFAULT_VOLTAGE; - } + @Override + public long getVoltageOutput(ForgeDirection side) + { + return UniversalElectricity.DEFAULT_VOLTAGE; + } - @Override - public long getVoltageInput(ForgeDirection direction) - { - return UniversalElectricity.DEFAULT_VOLTAGE; - } + @Override + public long getVoltageInput(ForgeDirection direction) + { + return UniversalElectricity.DEFAULT_VOLTAGE; + } - @Override - public void onWrongVoltage(ForgeDirection direction, long voltage) - { + @Override + public void onWrongVoltage(ForgeDirection direction, long voltage) + { - } + } - @Override - public void setIO(ForgeDirection dir, int type) - { - super.setIO(dir, type); - worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - } + @Override + public void setIO(ForgeDirection dir, int type) + { + super.setIO(dir, type); + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + @Override + public String toString() + { + return "[TileBattery]" + x() + "x " + y() + "y " + z() + "z "; + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java b/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java index 787262c3b..1af7ce968 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java +++ b/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java @@ -140,4 +140,10 @@ public class PartCharger extends PartInventoryPanel implements IEnergyInterface { return slot < this.getSizeInventory() && stack != null && CompatibilityModule.isHandler(stack.getItem()); } + + @Override + public String toString() + { + return "[PartCharger]" + x() + "x " + y() + "y " + z() + "z " + getSlotMask() + "s "; + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/multimeter/PartMultimeter.java b/electrical/src/main/scala/resonantinduction/electrical/multimeter/PartMultimeter.java index 71a21c2c6..c64e94a24 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/multimeter/PartMultimeter.java +++ b/electrical/src/main/scala/resonantinduction/electrical/multimeter/PartMultimeter.java @@ -39,549 +39,548 @@ import cpw.mods.fml.common.network.PacketDispatcher; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -/** - * Block that detects power. +/** Block that detects power. * - * @author Calclavia - * - */ + * @author Calclavia */ public class PartMultimeter extends PartFace implements IConnector, IRedstonePart, IPacketReceiver { - public enum DetectMode - { - NONE("none"), LESS_THAN("lessThan"), LESS_THAN_EQUAL("lessThanOrEqual"), EQUAL("equal"), - GREATER_THAN_EQUAL("greaterThanOrEqual"), GREATER_THAN("greaterThan"); - - public String display; - - private DetectMode(String s) - { - display = s; - } - } - - public Set playersUsing = new HashSet(); - - /** - * Detection - */ - public double redstoneTriggerLimit; - public byte detectType = 0; - public byte graphType = 0; - private DetectMode detectMode = DetectMode.NONE; - public boolean redstoneOn; - private boolean doDetect = true; - - public boolean isPrimary; - private MultimeterNetwork network; - - public boolean hasMultimeter(int x, int y, int z) - { - return getMultimeter(x, y, z) != null; - } - - @Override - public void preRemove() - { - if (!world().isRemote) - getNetwork().split(this); - } - - public void refresh() - { - if (world() != null) - { - if (!world().isRemote) - { - for (Object obj : getConnections()) - { - if (obj instanceof PartMultimeter) - { - getNetwork().merge(((PartMultimeter) obj).getNetwork()); - } - } - - getNetwork().reconstruct(); - } - } - } - - public void updateDesc() - { - writeDesc(getWriteStream()); - } - - public void updateGraph() - { - writeGraph(getWriteStream()); - } - - @Override - public void onWorldJoin() - { - refresh(); - } - - @Override - public void onNeighborChanged() - { - refresh(); - } - - @Override - public void onPartChanged(TMultiPart part) - { - refresh(); - } - - /** - * Gets the multimeter on the same plane. - */ - public PartMultimeter getMultimeter(int x, int y, int z) - { - TileEntity tileEntity = world().getBlockTileEntity(x, y, z); - - if (tileEntity instanceof TileMultipart) - { - TMultiPart part = ((TileMultipart) tileEntity).partMap(placementSide.ordinal()); - - if (part instanceof PartMultimeter) - { - return (PartMultimeter) part; - } - } - - return null; - } - - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) - { - if (WrenchUtility.isUsableWrench(player, player.inventory.getCurrentItem(), x(), y(), z())) - { - if (!this.world().isRemote) - { - doDetect = !doDetect; - player.addChatMessage("Multimeter detection set to: " + doDetect); - WrenchUtility.damageWrench(player, player.inventory.getCurrentItem(), x(), y(), z()); - } - return true; - } - - player.openGui(Electrical.INSTANCE, placementSide.ordinal(), world(), x(), y(), z()); - return true; - } - - @Override - public void update() - { - super.update(); - - this.ticks++; - - if (!world().isRemote) - { - if (doDetect) - updateDetections(); - - double detectedValue = getNetwork().graphs.get(detectType).getDouble(); - - boolean outputRedstone = false; - - switch (detectMode) - { - default: - break; - case EQUAL: - outputRedstone = detectedValue == redstoneTriggerLimit; - break; - case GREATER_THAN: - outputRedstone = detectedValue > redstoneTriggerLimit; - break; - case GREATER_THAN_EQUAL: - outputRedstone = detectedValue >= redstoneTriggerLimit; - break; - case LESS_THAN: - outputRedstone = detectedValue < redstoneTriggerLimit; - break; - case LESS_THAN_EQUAL: - outputRedstone = detectedValue <= redstoneTriggerLimit; - break; - } - - getNetwork().markUpdate(); - - if (ticks % 20 == 0) - { - if (outputRedstone != redstoneOn) - { - redstoneOn = outputRedstone; - tile().notifyPartChange(this); - } - - updateGraph(); - } - } - - if (!world().isRemote) - { - for (EntityPlayer player : playersUsing) - { - updateGraph(); - } - } - } - - public void updateDetections() - { - ForgeDirection receivingSide = getDirection().getOpposite(); - TileEntity tileEntity = getDetectedTile(); - - /** - * Update Energy Graph - */ - if (tileEntity instanceof IConductor) - { - IConnector instance = ((IConductor) tileEntity).getInstance(receivingSide); - - for (ForgeDirection dir : ForgeDirection.values()) - { - if (instance != null) - { - break; - } - - instance = ((IConnector) tileEntity).getInstance(dir); - } - - if (instance != null) - { - if (instance.getNetwork() instanceof IEnergyNetwork) - { - IEnergyNetwork network = instance.getNetwork(); - getNetwork().energyGraph.queue(Math.max(network.getBuffer(), network.getLastBuffer())); - getNetwork().powerGraph.queue(getNetwork().energyGraph.getAverage() * 20); - - if (instance.getNetwork() instanceof IElectricalNetwork) - getNetwork().voltageGraph.queue(((IElectricalNetwork) network).getVoltage()); - } - } - } - - if (tileEntity instanceof INodeProvider) - { - IMechanicalNode instance = ((INodeProvider) tileEntity).getNode(IMechanicalNode.class, receivingSide); - - for (ForgeDirection dir : ForgeDirection.values()) - { - if (instance != null) - { - break; - } - - instance = ((INodeProvider) tileEntity).getNode(IMechanicalNode.class, dir); - } - - if (instance != null) - { - getNetwork().torqueGraph.queue(instance.getTorque()); - getNetwork().angularVelocityGraph.queue(instance.getAngularVelocity()); - getNetwork().powerGraph.queue((long) instance.getPower()); - } - } - - if (tileEntity instanceof IFluidHandler) - { - FluidTankInfo[] fluidInfo = ((IFluidHandler) tileEntity).getTankInfo(receivingSide); - - if (fluidInfo != null) - { - for (FluidTankInfo info : fluidInfo) - { - if (info != null) - if (info.fluid != null) - getNetwork().fluidGraph.queue(info.fluid.amount); - } - } - } - - if (tileEntity instanceof IPressureNodeProvider) - { - getNetwork().pressureGraph.queue(((IPressureNodeProvider) tileEntity).getNode(FluidPressureNode.class, receivingSide).getPressure(receivingSide)); - } - - getNetwork().energyGraph.queue(CompatibilityModule.getEnergy(tileEntity, receivingSide)); - - /** - * Update Energy Capacity Graph - */ - getNetwork().energyCapacityGraph.queue(CompatibilityModule.getMaxEnergy(tileEntity, receivingSide)); - } - - @Override - public void readDesc(MCDataInput packet) - { - packet.readByte(); - placementSide = ForgeDirection.getOrientation(packet.readByte()); - facing = packet.readByte(); - detectMode = DetectMode.values()[packet.readByte()]; - detectType = packet.readByte(); - graphType = packet.readByte(); - getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); - getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); - getNetwork().isEnabled = packet.readBoolean(); - } - - @Override - public void writeDesc(MCDataOutput packet) - { - packet.writeByte(0); - packet.writeByte(placementSide.ordinal()); - packet.writeByte(facing); - packet.writeByte(detectMode.ordinal()); - packet.writeByte(detectType); - packet.writeByte(graphType); - packet.writeNBTTagCompound(getNetwork().center.writeToNBT(new NBTTagCompound())); - packet.writeNBTTagCompound(getNetwork().size.writeToNBT(new NBTTagCompound())); - packet.writeBoolean(getNetwork().isEnabled); - } - - public void writeGraph(MCDataOutput packet) - { - packet.writeByte(2); - isPrimary = getNetwork().isPrimary(this); - packet.writeBoolean(isPrimary); - - if (isPrimary) - packet.writeNBTTagCompound(getNetwork().save()); - } - - @Override - public void read(MCDataInput packet) - { - read(packet, packet.readUByte()); - } - - public void read(MCDataInput packet, int packetID) - { - switch (packetID) - { - case 0: - { - placementSide = ForgeDirection.getOrientation(packet.readByte()); - facing = packet.readByte(); - detectMode = DetectMode.values()[packet.readByte()]; - detectType = packet.readByte(); - graphType = packet.readByte(); - getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); - getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); - getNetwork().isEnabled = packet.readBoolean(); - refresh(); - break; - } - case 1: - { - redstoneTriggerLimit = packet.readLong(); - break; - } - case 2: - { - isPrimary = packet.readBoolean(); - - if (isPrimary) - getNetwork().load(packet.readNBTTagCompound()); - break; - } - } - } - - @Override - public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) - { - detectMode = DetectMode.values()[data.readByte()]; - detectType = data.readByte(); - graphType = data.readByte(); - redstoneTriggerLimit = data.readDouble(); - } - - public TileEntity getDetectedTile() - { - ForgeDirection direction = getDirection(); - return world().getBlockTileEntity(x() + direction.offsetX, y() + direction.offsetY, z() + direction.offsetZ); - } - - public ForgeDirection getDirection() - { - return ForgeDirection.getOrientation(this.placementSide.ordinal()); - } - - public void toggleGraphType() - { - graphType = (byte) ((graphType + 1) % getNetwork().graphs.size()); - updateServer(); - } - - public void toggleMode() - { - detectMode = DetectMode.values()[(detectMode.ordinal() + 1) % DetectMode.values().length]; - updateServer(); - } - - public void toggleDetectionValue() - { - detectType = (byte) ((detectType + 1) % getNetwork().graphs.size()); - updateServer(); - } - - public void updateServer() - { - PacketDispatcher.sendPacketToServer(ResonantInduction.PACKET_MULTIPART.getPacket(new universalelectricity.api.vector.Vector3(x(), y(), z()), placementSide.ordinal(), (byte) detectMode.ordinal(), detectType, graphType, redstoneTriggerLimit)); - } - - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - placementSide = ForgeDirection.getOrientation(nbt.getByte("side")); - detectMode = DetectMode.values()[nbt.getByte("detectMode")]; - detectType = nbt.getByte("detectionType"); - graphType = nbt.getByte("graphType"); - doDetect = nbt.getBoolean("doDetect"); - redstoneTriggerLimit = nbt.getDouble("triggerLimit"); - } - - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - nbt.setByte("side", (byte) placementSide.ordinal()); - nbt.setByte("detectMode", (byte) detectMode.ordinal()); - nbt.setByte("detectionType", detectType); - nbt.setByte("graphType", graphType); - nbt.setBoolean("doDetect", doDetect); - nbt.setDouble("triggerLimit", redstoneTriggerLimit); - } - - public DetectMode getMode() - { - return detectMode; - } - - @Override - public String getType() - { - return "resonant_induction_multimeter"; - } - - @Override - public int redstoneConductionMap() - { - return 0x1F; - } - - @Override - public boolean solid(int arg0) - { - return true; - } - - @Override - protected ItemStack getItem() - { - return new ItemStack(Electrical.itemMultimeter); - } - - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(Vector3 pos, float frame, int pass) - { - if (pass == 0) - { - RenderMultimeter.render(this, pos.x, pos.y, pos.z); - } - } - - @Override - public boolean canConnectRedstone(int arg0) - { - return true; - } - - @Override - public int strongPowerLevel(int arg0) - { - return redstoneOn ? 14 : 0; - } - - @Override - public int weakPowerLevel(int arg0) - { - return redstoneOn ? 14 : 0; - } - - @Override - public MultimeterNetwork getNetwork() - { - if (network == null) - { - network = new MultimeterNetwork(); - network.addConnector(this); - } - - return network; - } - - @Override - public void setNetwork(MultimeterNetwork network) - { - this.network = network; - } - - @Override - public boolean canConnect(ForgeDirection direction, Object obj) - { - return obj instanceof PartMultimeter; - } - - @Override - public Object[] getConnections() - { - Object[] connections = new Object[6]; - - for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) - { - if (dir != getDirection() && dir != getDirection().getOpposite()) - { - universalelectricity.api.vector.Vector3 vector = getPosition().translate(dir); - - if (hasMultimeter(vector.intX(), vector.intY(), vector.intZ())) - { - connections[dir.ordinal()] = getMultimeter(vector.intX(), vector.intY(), vector.intZ()); - } - } - } - - return connections; - } - - @Override - public IConnector getInstance(ForgeDirection dir) - { - return this; - } - - public universalelectricity.api.vector.Vector3 getPosition() - { - return new universalelectricity.api.vector.Vector3(x(), y(), z()); - } - - @Override - @SideOnly(Side.CLIENT) - public Cuboid6 getRenderBounds() - { - if (isPrimary) - return Cuboid6.full.copy().expand(new Vector3(getNetwork().size.x, getNetwork().size.y, getNetwork().size.z)); - return Cuboid6.full; - } + public enum DetectMode + { + NONE("none"), + LESS_THAN("lessThan"), + LESS_THAN_EQUAL("lessThanOrEqual"), + EQUAL("equal"), + GREATER_THAN_EQUAL("greaterThanOrEqual"), + GREATER_THAN("greaterThan"); + + public String display; + + private DetectMode(String s) + { + display = s; + } + } + + public Set playersUsing = new HashSet(); + + /** Detection */ + public double redstoneTriggerLimit; + public byte detectType = 0; + public byte graphType = 0; + private DetectMode detectMode = DetectMode.NONE; + public boolean redstoneOn; + private boolean doDetect = true; + + public boolean isPrimary; + private MultimeterNetwork network; + + public boolean hasMultimeter(int x, int y, int z) + { + return getMultimeter(x, y, z) != null; + } + + @Override + public void preRemove() + { + if (!world().isRemote) + getNetwork().split(this); + } + + public void refresh() + { + if (world() != null) + { + if (!world().isRemote) + { + for (Object obj : getConnections()) + { + if (obj instanceof PartMultimeter) + { + getNetwork().merge(((PartMultimeter) obj).getNetwork()); + } + } + + getNetwork().reconstruct(); + } + } + } + + public void updateDesc() + { + writeDesc(getWriteStream()); + } + + public void updateGraph() + { + writeGraph(getWriteStream()); + } + + @Override + public void onWorldJoin() + { + refresh(); + } + + @Override + public void onNeighborChanged() + { + refresh(); + } + + @Override + public void onPartChanged(TMultiPart part) + { + refresh(); + } + + /** Gets the multimeter on the same plane. */ + public PartMultimeter getMultimeter(int x, int y, int z) + { + TileEntity tileEntity = world().getBlockTileEntity(x, y, z); + + if (tileEntity instanceof TileMultipart) + { + TMultiPart part = ((TileMultipart) tileEntity).partMap(placementSide.ordinal()); + + if (part instanceof PartMultimeter) + { + return (PartMultimeter) part; + } + } + + return null; + } + + @Override + public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) + { + if (WrenchUtility.isUsableWrench(player, player.inventory.getCurrentItem(), x(), y(), z())) + { + if (!this.world().isRemote) + { + doDetect = !doDetect; + player.addChatMessage("Multimeter detection set to: " + doDetect); + WrenchUtility.damageWrench(player, player.inventory.getCurrentItem(), x(), y(), z()); + } + return true; + } + + player.openGui(Electrical.INSTANCE, placementSide.ordinal(), world(), x(), y(), z()); + return true; + } + + @Override + public void update() + { + super.update(); + + this.ticks++; + + if (!world().isRemote) + { + if (doDetect) + updateDetections(); + + double detectedValue = getNetwork().graphs.get(detectType).getDouble(); + + boolean outputRedstone = false; + + switch (detectMode) + { + default: + break; + case EQUAL: + outputRedstone = detectedValue == redstoneTriggerLimit; + break; + case GREATER_THAN: + outputRedstone = detectedValue > redstoneTriggerLimit; + break; + case GREATER_THAN_EQUAL: + outputRedstone = detectedValue >= redstoneTriggerLimit; + break; + case LESS_THAN: + outputRedstone = detectedValue < redstoneTriggerLimit; + break; + case LESS_THAN_EQUAL: + outputRedstone = detectedValue <= redstoneTriggerLimit; + break; + } + + getNetwork().markUpdate(); + + if (ticks % 20 == 0) + { + if (outputRedstone != redstoneOn) + { + redstoneOn = outputRedstone; + tile().notifyPartChange(this); + } + + updateGraph(); + } + } + + if (!world().isRemote) + { + for (EntityPlayer player : playersUsing) + { + updateGraph(); + } + } + } + + public void updateDetections() + { + ForgeDirection receivingSide = getDirection().getOpposite(); + TileEntity tileEntity = getDetectedTile(); + + /** Update Energy Graph */ + if (tileEntity instanceof IConductor) + { + IConnector instance = ((IConductor) tileEntity).getInstance(receivingSide); + + for (ForgeDirection dir : ForgeDirection.values()) + { + if (instance != null) + { + break; + } + + instance = ((IConnector) tileEntity).getInstance(dir); + } + + if (instance != null) + { + if (instance.getNetwork() instanceof IEnergyNetwork) + { + IEnergyNetwork network = instance.getNetwork(); + getNetwork().energyGraph.queue(Math.max(network.getBuffer(), network.getLastBuffer())); + getNetwork().powerGraph.queue(getNetwork().energyGraph.getAverage() * 20); + + if (instance.getNetwork() instanceof IElectricalNetwork) + getNetwork().voltageGraph.queue(((IElectricalNetwork) network).getVoltage()); + } + } + } + + if (tileEntity instanceof INodeProvider) + { + IMechanicalNode instance = ((INodeProvider) tileEntity).getNode(IMechanicalNode.class, receivingSide); + + for (ForgeDirection dir : ForgeDirection.values()) + { + if (instance != null) + { + break; + } + + instance = ((INodeProvider) tileEntity).getNode(IMechanicalNode.class, dir); + } + + if (instance != null) + { + getNetwork().torqueGraph.queue(instance.getTorque()); + getNetwork().angularVelocityGraph.queue(instance.getAngularVelocity()); + getNetwork().powerGraph.queue((long) instance.getPower()); + } + } + + if (tileEntity instanceof IFluidHandler) + { + FluidTankInfo[] fluidInfo = ((IFluidHandler) tileEntity).getTankInfo(receivingSide); + + if (fluidInfo != null) + { + for (FluidTankInfo info : fluidInfo) + { + if (info != null) + if (info.fluid != null) + getNetwork().fluidGraph.queue(info.fluid.amount); + } + } + } + + if (tileEntity instanceof IPressureNodeProvider) + { + getNetwork().pressureGraph.queue(((IPressureNodeProvider) tileEntity).getNode(FluidPressureNode.class, receivingSide).getPressure(receivingSide)); + } + + getNetwork().energyGraph.queue(CompatibilityModule.getEnergy(tileEntity, receivingSide)); + + /** Update Energy Capacity Graph */ + getNetwork().energyCapacityGraph.queue(CompatibilityModule.getMaxEnergy(tileEntity, receivingSide)); + } + + @Override + public void readDesc(MCDataInput packet) + { + packet.readByte(); + placementSide = ForgeDirection.getOrientation(packet.readByte()); + facing = packet.readByte(); + detectMode = DetectMode.values()[packet.readByte()]; + detectType = packet.readByte(); + graphType = packet.readByte(); + getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); + getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); + getNetwork().isEnabled = packet.readBoolean(); + } + + @Override + public void writeDesc(MCDataOutput packet) + { + packet.writeByte(0); + packet.writeByte(placementSide.ordinal()); + packet.writeByte(facing); + packet.writeByte(detectMode.ordinal()); + packet.writeByte(detectType); + packet.writeByte(graphType); + packet.writeNBTTagCompound(getNetwork().center.writeToNBT(new NBTTagCompound())); + packet.writeNBTTagCompound(getNetwork().size.writeToNBT(new NBTTagCompound())); + packet.writeBoolean(getNetwork().isEnabled); + } + + public void writeGraph(MCDataOutput packet) + { + packet.writeByte(2); + isPrimary = getNetwork().isPrimary(this); + packet.writeBoolean(isPrimary); + + if (isPrimary) + packet.writeNBTTagCompound(getNetwork().save()); + } + + @Override + public void read(MCDataInput packet) + { + read(packet, packet.readUByte()); + } + + public void read(MCDataInput packet, int packetID) + { + switch (packetID) + { + case 0: + { + placementSide = ForgeDirection.getOrientation(packet.readByte()); + facing = packet.readByte(); + detectMode = DetectMode.values()[packet.readByte()]; + detectType = packet.readByte(); + graphType = packet.readByte(); + getNetwork().center = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); + getNetwork().size = new universalelectricity.api.vector.Vector3(packet.readNBTTagCompound()); + getNetwork().isEnabled = packet.readBoolean(); + refresh(); + break; + } + case 1: + { + redstoneTriggerLimit = packet.readLong(); + break; + } + case 2: + { + isPrimary = packet.readBoolean(); + + if (isPrimary) + getNetwork().load(packet.readNBTTagCompound()); + break; + } + } + } + + @Override + public void onReceivePacket(ByteArrayDataInput data, EntityPlayer player, Object... extra) + { + detectMode = DetectMode.values()[data.readByte()]; + detectType = data.readByte(); + graphType = data.readByte(); + redstoneTriggerLimit = data.readDouble(); + } + + public TileEntity getDetectedTile() + { + ForgeDirection direction = getDirection(); + return world().getBlockTileEntity(x() + direction.offsetX, y() + direction.offsetY, z() + direction.offsetZ); + } + + public ForgeDirection getDirection() + { + return ForgeDirection.getOrientation(this.placementSide.ordinal()); + } + + public void toggleGraphType() + { + graphType = (byte) ((graphType + 1) % getNetwork().graphs.size()); + updateServer(); + } + + public void toggleMode() + { + detectMode = DetectMode.values()[(detectMode.ordinal() + 1) % DetectMode.values().length]; + updateServer(); + } + + public void toggleDetectionValue() + { + detectType = (byte) ((detectType + 1) % getNetwork().graphs.size()); + updateServer(); + } + + public void updateServer() + { + PacketDispatcher.sendPacketToServer(ResonantInduction.PACKET_MULTIPART.getPacket(new universalelectricity.api.vector.Vector3(x(), y(), z()), placementSide.ordinal(), (byte) detectMode.ordinal(), detectType, graphType, redstoneTriggerLimit)); + } + + @Override + public void load(NBTTagCompound nbt) + { + super.load(nbt); + placementSide = ForgeDirection.getOrientation(nbt.getByte("side")); + detectMode = DetectMode.values()[nbt.getByte("detectMode")]; + detectType = nbt.getByte("detectionType"); + graphType = nbt.getByte("graphType"); + doDetect = nbt.getBoolean("doDetect"); + redstoneTriggerLimit = nbt.getDouble("triggerLimit"); + } + + @Override + public void save(NBTTagCompound nbt) + { + super.save(nbt); + nbt.setByte("side", (byte) placementSide.ordinal()); + nbt.setByte("detectMode", (byte) detectMode.ordinal()); + nbt.setByte("detectionType", detectType); + nbt.setByte("graphType", graphType); + nbt.setBoolean("doDetect", doDetect); + nbt.setDouble("triggerLimit", redstoneTriggerLimit); + } + + public DetectMode getMode() + { + return detectMode; + } + + @Override + public String getType() + { + return "resonant_induction_multimeter"; + } + + @Override + public int redstoneConductionMap() + { + return 0x1F; + } + + @Override + public boolean solid(int arg0) + { + return true; + } + + @Override + protected ItemStack getItem() + { + return new ItemStack(Electrical.itemMultimeter); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderDynamic(Vector3 pos, float frame, int pass) + { + if (pass == 0) + { + RenderMultimeter.render(this, pos.x, pos.y, pos.z); + } + } + + @Override + public boolean canConnectRedstone(int arg0) + { + return true; + } + + @Override + public int strongPowerLevel(int arg0) + { + return redstoneOn ? 14 : 0; + } + + @Override + public int weakPowerLevel(int arg0) + { + return redstoneOn ? 14 : 0; + } + + @Override + public MultimeterNetwork getNetwork() + { + if (network == null) + { + network = new MultimeterNetwork(); + network.addConnector(this); + } + + return network; + } + + @Override + public void setNetwork(MultimeterNetwork network) + { + this.network = network; + } + + @Override + public boolean canConnect(ForgeDirection direction, Object obj) + { + return obj instanceof PartMultimeter; + } + + @Override + public Object[] getConnections() + { + Object[] connections = new Object[6]; + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + if (dir != getDirection() && dir != getDirection().getOpposite()) + { + universalelectricity.api.vector.Vector3 vector = getPosition().translate(dir); + + if (hasMultimeter(vector.intX(), vector.intY(), vector.intZ())) + { + connections[dir.ordinal()] = getMultimeter(vector.intX(), vector.intY(), vector.intZ()); + } + } + } + + return connections; + } + + @Override + public IConnector getInstance(ForgeDirection dir) + { + return this; + } + + public universalelectricity.api.vector.Vector3 getPosition() + { + return new universalelectricity.api.vector.Vector3(x(), y(), z()); + } + + @Override + @SideOnly(Side.CLIENT) + public Cuboid6 getRenderBounds() + { + if (isPrimary) + return Cuboid6.full.copy().expand(new Vector3(getNetwork().size.x, getNetwork().size.y, getNetwork().size.z)); + return Cuboid6.full; + } + + @Override + public String toString() + { + return "[PartMultimeter]" + x() + "x " + y() + "y " + z() + "z " + getSlotMask() + "s "; + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java index 040a5ec4f..05bdfa948 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java @@ -343,4 +343,10 @@ public abstract class PartAdvancedWire extends PartConductor return false; } + + @Override + public String toString() + { + return "[PartAdvancedWire]" + x() + "x " + y() + "y " + z() + "z "; + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartConductor.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartConductor.java index 3f2beb2d0..17a38214e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartConductor.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartConductor.java @@ -22,173 +22,169 @@ import codechicken.multipart.TMultiPart; @Deprecated public abstract class PartConductor extends PartAdvanced implements IConductor { - private IEnergyNetwork network; + private IEnergyNetwork network; - protected Object[] connections = new Object[6]; + protected Object[] connections = new Object[6]; - /** - * Universal Electricity conductor functions. - */ - @Override - public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) - { - return this.getNetwork().produce(this, from.getOpposite(), receive, doReceive); - } + /** Universal Electricity conductor functions. */ + @Override + public long onReceiveEnergy(ForgeDirection from, long receive, boolean doReceive) + { + return this.getNetwork().produce(this, from.getOpposite(), receive, doReceive); + } - @Override - public long onExtractEnergy(ForgeDirection from, long request, boolean doExtract) - { - return 0; - } + @Override + public long onExtractEnergy(ForgeDirection from, long request, boolean doExtract) + { + return 0; + } - @Override - public IEnergyNetwork getNetwork() - { - if (this.network == null) - { - this.setNetwork(EnergyNetworkLoader.getNewNetwork(this)); - } + @Override + public IEnergyNetwork getNetwork() + { + if (this.network == null) + { + this.setNetwork(EnergyNetworkLoader.getNewNetwork(this)); + } - return this.network; - } + return this.network; + } - @Override - public void setNetwork(IEnergyNetwork network) - { - this.network = network; - } + @Override + public void setNetwork(IEnergyNetwork network) + { + this.network = network; + } - @Override - public boolean doesTick() - { - return false; - } + @Override + public boolean doesTick() + { + return false; + } - @Override - public Object[] getConnections() - { - return this.connections; - } + @Override + public Object[] getConnections() + { + return this.connections; + } - /** - * EXTERNAL USE Can this wire be connected by another block? - */ - @Override - public boolean canConnect(ForgeDirection direction, Object source) - { - Vector3 connectPos = new Vector3(tile()).translate(direction); - TileEntity connectTile = connectPos.getTileEntity(world()); + /** EXTERNAL USE Can this wire be connected by another block? */ + @Override + public boolean canConnect(ForgeDirection direction, Object source) + { + Vector3 connectPos = new Vector3(tile()).translate(direction); + TileEntity connectTile = connectPos.getTileEntity(world()); - if (connectTile instanceof IConductor) - { - return false; - } + if (connectTile instanceof IConductor) + { + return false; + } - return CompatibilityModule.isHandler(connectTile); - } + return CompatibilityModule.isHandler(connectTile); + } - public abstract boolean canConnectTo(Object obj); + public abstract boolean canConnectTo(Object obj); - /** - * Recalculates all the network connections - */ - protected void recalculateConnections() - { - this.connections = new Object[6]; - /** - * Calculate all external connections with this conductor. - */ - for (byte i = 0; i < 6; i++) - { - ForgeDirection side = ForgeDirection.getOrientation(i); + /** Recalculates all the network connections */ + protected void recalculateConnections() + { + this.connections = new Object[6]; + /** Calculate all external connections with this conductor. */ + for (byte i = 0; i < 6; i++) + { + ForgeDirection side = ForgeDirection.getOrientation(i); - if (this.canConnect(side, this)) - { - TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side); - connections[i] = tileEntity; - } - } - } + if (this.canConnect(side, this)) + { + TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side); + connections[i] = tileEntity; + } + } + } - /** - * IC2 Functions - */ - @Override - public void onWorldJoin() - { - if (tile() instanceof IEnergyTile && !world().isRemote) - { - // Check if there's another part that's an IEnergyTile - boolean foundAnotherPart = false; + /** IC2 Functions */ + @Override + public void onWorldJoin() + { + if (tile() instanceof IEnergyTile && !world().isRemote) + { + // Check if there's another part that's an IEnergyTile + boolean foundAnotherPart = false; - for (int i = 0; i < tile().partList().size(); i++) - { - TMultiPart part = tile().partMap(i); + for (int i = 0; i < tile().partList().size(); i++) + { + TMultiPart part = tile().partMap(i); - if (part instanceof IEnergyTile && part != this) - { - foundAnotherPart = true; - break; - } - } + if (part instanceof IEnergyTile && part != this) + { + foundAnotherPart = true; + break; + } + } - if (!foundAnotherPart) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile) tile())); - } - } - } + if (!foundAnotherPart) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent((IEnergyTile) tile())); + } + } + } - @Override - public void preRemove() - { - if (!world().isRemote) - { - this.getNetwork().split(this); + @Override + public void preRemove() + { + if (!world().isRemote) + { + this.getNetwork().split(this); - if (tile() instanceof IEnergyTile) - { - // Check if there's another part that's an IEnergyTile - boolean foundAnotherPart = false; + if (tile() instanceof IEnergyTile) + { + // Check if there's another part that's an IEnergyTile + boolean foundAnotherPart = false; - for (int i = 0; i < tile().partList().size(); i++) - { - TMultiPart part = tile().partMap(i); + for (int i = 0; i < tile().partList().size(); i++) + { + TMultiPart part = tile().partMap(i); - if (part instanceof IEnergyTile && part != this) - { - foundAnotherPart = true; - break; - } - } + if (part instanceof IEnergyTile && part != this) + { + foundAnotherPart = true; + break; + } + } - if (!foundAnotherPart) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) tile())); - } - } - } + if (!foundAnotherPart) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile) tile())); + } + } + } - super.preRemove(); - } + super.preRemove(); + } - @Override - public IConnector getInstance(ForgeDirection dir) - { - return this; - } + @Override + public IConnector getInstance(ForgeDirection dir) + { + return this; + } - @Override - public void save(NBTTagCompound nbt) - { - super.save(nbt); - nbt.setLong("savedBuffer", getNetwork().getBufferOf(this)); - } + @Override + public void save(NBTTagCompound nbt) + { + super.save(nbt); + nbt.setLong("savedBuffer", getNetwork().getBufferOf(this)); + } - @Override - public void load(NBTTagCompound nbt) - { - super.load(nbt); - getNetwork().setBufferFor(this, nbt.getLong("savedBuffer")); - } + @Override + public void load(NBTTagCompound nbt) + { + super.load(nbt); + getNetwork().setBufferFor(this, nbt.getLong("savedBuffer")); + } + + @Override + public String toString() + { + return "[PartConductor]" + x() + "x " + y() + "y " + z() + "z "; + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/flat/PartFlatWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/flat/PartFlatWire.java index c09eed39b..b11926df0 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/flat/PartFlatWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/flat/PartFlatWire.java @@ -41,935 +41,925 @@ import codechicken.multipart.TileMultipart; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -/** - * This is the base class for all wire types. It can be used for any sub type, as it contains the +/** This is the base class for all wire types. It can be used for any sub type, as it contains the * base calculations necessary to create a working wire. This calculates all possible connections to * sides, around corners, and inside corners, while checking for microblock obstructions. * - * @author Modified by Calclavia, MrTJP - */ + * @author Modified by Calclavia, MrTJP */ public class PartFlatWire extends PartAdvancedWire implements TFacePart, JNormalOcclusion { - public static Cuboid6[][] selectionBounds = new Cuboid6[3][6]; - public static Cuboid6[][] occlusionBounds = new Cuboid6[3][6]; - - static - { - for (int t = 0; t < 3; t++) - { - // Subtract the box a little because we'd like things like posts to get first hit - Cuboid6 selection = new Cuboid6(0, 0, 0, 1, (t + 2) / 16D, 1).expand(-0.005); - Cuboid6 occlusion = new Cuboid6(2 / 8D, 0, 2 / 8D, 6 / 8D, (t + 2) / 16D, 6 / 8D); - for (int s = 0; s < 6; s++) - { - selectionBounds[t][s] = selection.copy().apply(Rotation.sideRotations[s].at(Vector3.center)); - occlusionBounds[t][s] = occlusion.copy().apply(Rotation.sideRotations[s].at(Vector3.center)); - } - } - } - - public byte side; - - /** - * A map of the corners. - * - * - * Currently split into 4 nybbles (from lowest) 0 = Corner connections (this wire should connect - * around a corner to something external) 1 = Straight connections (this wire should connect to - * something external) 2 = Internal connections (this wire should connect to something internal) - * 3 = Internal open connections (this wire is not blocked by a cover/edge part and *could* - * connect through side) bit 16 = connection to the centerpart 5 = Render corner connections. - * Like corner connections but set to low if the other wire part is smaller than this (they - * render to us not us to them) - */ - public int connMap; - - public PartFlatWire() - { - - } - - public PartFlatWire(int typeID) - { - this(EnumWireMaterial.values()[typeID]); - } - - public PartFlatWire(EnumWireMaterial type) - { - material = type; - } - - public void preparePlacement(int side, int meta) - { - this.side = (byte) (side ^ 1); - this.setMaterial(meta); - } - - /** PACKET and NBT Methods */ - @Override - public void load(NBTTagCompound tag) - { - super.load(tag); - this.side = tag.getByte("side"); - this.connMap = tag.getInteger("connMap"); - } - - @Override - public void save(NBTTagCompound tag) - { - super.save(tag); - tag.setByte("side", this.side); - tag.setInteger("connMap", this.connMap); - } - - @Override - public void readDesc(MCDataInput packet) - { - super.readDesc(packet); - this.side = packet.readByte(); - this.connMap = packet.readInt(); - } - - @Override - public void writeDesc(MCDataOutput packet) - { - super.writeDesc(packet); - packet.writeByte(this.side); - packet.writeInt(this.connMap); - } - - @Override - public void read(MCDataInput packet) - { - read(packet, packet.readUByte()); - } - - @Override - public void read(MCDataInput packet, int packetID) - { - if (packetID == 0) - { - this.connMap = packet.readInt(); - tile().markRender(); - } - else - { - super.read(packet, packetID); - } - } - - public void sendConnUpdate() - { - tile().getWriteStream(this).writeByte(0).writeInt(this.connMap); - } - - /* WORLD EVENTS */ - @Override - public void onRemoved() - { - super.onRemoved(); - - if (!world().isRemote) - { - for (int r = 0; r < 4; r++) - { - if (maskConnects(r)) - { - if ((connMap & 1 << r) != 0) - { - notifyCornerChange(r); - } - else if ((connMap & 0x10 << r) != 0) - { - notifyStraightChange(r); - } - } - } - } - } - - @Override - public void onChunkLoad() - { - if ((connMap & 0x80000000) != 0) // compat with converters, recalc connections - { - if (dropIfCantStay()) - { - return; - } - - connMap = 0; - - updateInternalConnections(); - - if (updateOpenConnections()) - { - updateExternalConnections(); - } - - tile().markDirty(); - } - - this.recalculateConnections(); - - super.onChunkLoad(); - } - - @Override - public void onAdded() - { - super.onAdded(); - - if (!world().isRemote) - { - updateOpenConnections(); - boolean changed = updateInternalConnections(); - // don't use || because it's fail fast - changed |= updateExternalConnections(); - - if (changed) - { - sendConnUpdate(); - } - - this.recalculateConnections(); - } - } - - @Override - public void onPartChanged(TMultiPart part) - { - if (!world().isRemote) - { - boolean changed = updateInternalConnections(); - - if (updateOpenConnections()) - { - changed |= updateExternalConnections(); - } - - if (changed) - { - sendConnUpdate(); - } - - this.recalculateConnections(); - } - - super.onPartChanged(part); - } - - @Override - public void onNeighborChanged() - { - if (!world().isRemote) - { - if (dropIfCantStay()) - { - return; - } - - if (updateExternalConnections()) - { - sendConnUpdate(); - } - - this.recalculateConnections(); - } - super.onNeighborChanged(); - } - - @Override - public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) - { - if (item != null) - { - if (item.getItem().itemID == Block.lever.blockID) - { - TileMultipart tile = tile(); - World w = world(); - - if (!w.isRemote) - { - PartFlatSwitchWire wire = (PartFlatSwitchWire) MultiPartRegistry.createPart("resonant_induction_flat_switch_wire", false); - wire.copyFrom(this); - - if (tile.canReplacePart(this, wire)) - { - tile.remPart(this); - TileMultipart.addPart(w, new BlockCoord(tile), wire); - - if (!player.capabilities.isCreativeMode) - { - player.inventory.decrStackSize(player.inventory.currentItem, 1); - } - } - } - return true; - } - } - - return super.activate(player, part, item); - } - - @Override - public void recalculateConnections() - { - this.updateOpenConnections(); - - boolean[] calculatedSides = new boolean[6]; - - /** Check external connections. */ - for (byte r = 0; r < 4; r++) - { - if (maskOpen(r)) - { - int absDir = Rotation.rotateSide(this.side, r); - - // Check direct connection. - if (this.setExternalConnection(r, absDir)) - { - calculatedSides[absDir] = true; - } - - // Check Corner Connection - BlockCoord cornerPos = new BlockCoord(tile()); - cornerPos.offset(absDir); - - if (canConnectThroughCorner(cornerPos, absDir ^ 1, this.side)) - { - cornerPos.offset(this.side); - TileMultipart tpCorner = MultipartUtility.getMultipartTile(world(), cornerPos); - - if (tpCorner != null) - { - TMultiPart tp = tpCorner.partMap(absDir ^ 1); - - if (this.canConnectTo(tp, ForgeDirection.getOrientation(absDir))) - { - this.connections[absDir] = tp; - - if (tp instanceof PartFlatWire) - { - // We found a wire, merge networks! - this.getNetwork().merge(((PartFlatWire) tp).getNetwork()); - } - - calculatedSides[absDir] = true; - continue; - } - } - } - - if (!calculatedSides[absDir]) - { - this.disconnect(absDir); - } - } - } - - /** Check internal connections. */ - for (byte r = 0; r < 4; r++) - { - int absDir = Rotation.rotateSide(this.side, r); - - /** Look for an internal straight connection. */ - if (tile().partMap(PartMap.edgeBetween(absDir, this.side)) == null) - { - TMultiPart tp = tile().partMap(absDir); - - if (this.canConnectTo(tp)) - { - // We found a wire! Merge networks! - this.connections[absDir] = tp; - - if (tp instanceof PartFlatWire) - { - this.getNetwork().merge(((PartFlatWire) tp).getNetwork()); - } - continue; - } - } - - if (!calculatedSides[absDir]) - { - this.disconnect(absDir); - } - } - - // Connect to the face of the block the wire is placed on. - this.setExternalConnection(-1, this.side); - - this.getNetwork().reconstruct(); - } - - public boolean setExternalConnection(int r, int absSide) - { - BlockCoord pos = new BlockCoord(tile()).offset(absSide); - - /** Look for an external wire connection. */ - TileMultipart tileMultiPart = MultipartUtility.getMultipartTile(world(), pos); - - if (tileMultiPart != null && r != -1) - { - TMultiPart tp = tileMultiPart.partMap(this.side); - - if (this.canConnectTo(tp, ForgeDirection.getOrientation(absSide))) - { - // Check the wire we are connecting to and see if THAT block can accept this one. - int otherR = (r + 2) % 4; - - if (tp instanceof PartFlatWire && ((PartFlatWire) tp).canConnectTo(this, ForgeDirection.getOrientation(absSide).getOpposite()) && ((PartFlatWire) tp).maskOpen(otherR)) - { - // We found a wire! Merge connection. - connections[absSide] = tp; - getNetwork().merge(((PartFlatWire) tp).getNetwork()); - return true; - } - - /** - * Check for a micro-energy block - */ - if (canConnectTo(tp)) - { - connections[absSide] = tp; - return true; - } - } - - this.disconnect(absSide); - } - - /** Look for an external energy handler. */ - TileEntity tileEntity = world().getBlockTileEntity(pos.x, pos.y, pos.z); - - if (this.canConnectTo(tileEntity, ForgeDirection.getOrientation(absSide))) - { - this.connections[absSide] = tileEntity; - return true; - } - - this.disconnect(absSide); - - return false; - } - - private synchronized void disconnect(int i) - { - if (!this.world().isRemote) - { - if (this.connections[i] != null) - { - if (this.connections[i] instanceof PartFlatWire) - { - PartFlatWire wire = (PartFlatWire) this.connections[i]; - this.connections[i] = null; - this.getNetwork().split(this, wire); - } - else - { - this.connections[i] = null; - } - } - } - } - - @Override - public Object[] getConnections() - { - return this.connections; - } - - public boolean canStay() - { - BlockCoord pos = new BlockCoord(tile()).offset(side); - return MultipartUtility.canPlaceWireOnSide(world(), pos.x, pos.y, pos.z, ForgeDirection.getOrientation(side ^ 1), false); - } - - public boolean dropIfCantStay() - { - if (!canStay()) - { - drop(); - return true; - } - return false; - } - - public void drop() - { - TileMultipart.dropItem(getItem(), world(), Vector3.fromTileEntityCenter(tile())); - tile().remPart(this); - } - - /** - * Recalculates connections to blocks outside this space - * - * @return true if a new connection was added or one was removed - */ - protected boolean updateExternalConnections() - { - int newConn = 0; - - for (int r = 0; r < 4; r++) - { - if (!maskOpen(r)) - { - continue; - } - - if (connectStraight(r)) - { - newConn |= 0x10 << r; - } - else - { - int cnrMode = connectCorner(r); - - if (cnrMode != 0) - { - newConn |= 1 << r; - - if (cnrMode == 2) - { - newConn |= 0x100000 << r;// render flag - } - } - } - } - - if (newConn != (connMap & 0xF000FF)) - { - int diff = connMap ^ newConn; - connMap = connMap & ~0xF000FF | newConn; - - // Notify corner disconnections - for (int r = 0; r < 4; r++) - { - if ((diff & 1 << r) != 0) - { - notifyCornerChange(r); - } - } - - return true; - } - - return false; - } - - /** - * Recalculates connections to other parts within this space - * - * @return true if a new connection was added or one was removed - */ - protected boolean updateInternalConnections() - { - int newConn = 0; - for (int r = 0; r < 4; r++) - { - if (connectInternal(r)) - { - newConn |= 0x100 << r; - } - } - - if (connectCenter()) - { - newConn |= 0x10000; - } - - if (newConn != (connMap & 0x10F00)) - { - connMap = connMap & ~0x10F00 | newConn; - return true; - } - return false; - } - - /** - * Recalculates connections that can be made to other parts outside of this space - * - * @return true if external connections should be recalculated - */ - protected boolean updateOpenConnections() - { - int newConn = 0; - for (int r = 0; r < 4; r++) - if (connectionOpen(r)) - newConn |= 0x1000 << r; - - if (newConn != (connMap & 0xF000)) - { - connMap = connMap & ~0xF000 | newConn; - return true; - } - return false; - } - - public boolean connectionOpen(int r) - { - int absDir = Rotation.rotateSide(side, r); - TMultiPart facePart = tile().partMap(absDir); - if (facePart != null && (!(facePart instanceof PartFlatWire) || !canConnectTo(facePart, ForgeDirection.getOrientation(absDir)))) - return false; - - if (tile().partMap(PartMap.edgeBetween(side, absDir)) != null) - return false; - - return true; - } - - /** - * Return a corner connection state. 0 = No connection 1 = Physical connection 2 = Render - * connection - */ - public int connectCorner(int r) - { - int absDir = Rotation.rotateSide(side, r); - - BlockCoord pos = new BlockCoord(tile()); - pos.offset(absDir); - - if (!canConnectThroughCorner(pos, absDir ^ 1, side)) - return 0; - - pos.offset(side); - TileMultipart t = MultipartUtility.getMultipartTile(world(), pos); - if (t != null) - { - TMultiPart tp = t.partMap(absDir ^ 1); - - if (canConnectTo(tp, ForgeDirection.getOrientation(absDir))) - { - if (tp instanceof PartFlatWire) - { - boolean b = ((PartFlatWire) tp).connectCorner(this, Rotation.rotationTo(absDir ^ 1, side ^ 1)); - - if (b) - { - // let them connect to us - if (!renderThisCorner((PartFlatWire) tp)) - { - return 1; - } - - return 2; - } - } - - return 2; - } - } - return 0; - } - - public boolean canConnectThroughCorner(BlockCoord pos, int side1, int side2) - { - if (world().isAirBlock(pos.x, pos.y, pos.z)) - { - return true; - } - - TileMultipart t = MultipartUtility.getMultipartTile(world(), pos); - if (t != null) - { - return t.partMap(side1) == null && t.partMap(side2) == null && t.partMap(PartMap.edgeBetween(side1, side2)) == null; - } - - return false; - } - - public boolean connectStraight(int r) - { - int absDir = Rotation.rotateSide(side, r); - - BlockCoord pos = new BlockCoord(tile()).offset(absDir); - - TileMultipart t = MultipartUtility.getMultipartTile(world(), pos); - if (t != null) - { - TMultiPart tp = t.partMap(side); - - if (this.canConnectTo(tp, ForgeDirection.getOrientation(absDir))) - { - if (tp instanceof PartFlatWire) - { - return ((PartFlatWire) tp).connectStraight(this, (r + 2) % 4); - } - - return true; - } - } - else - { - TileEntity tileEntity = world().getBlockTileEntity(pos.x, pos.y, pos.z); - return this.canConnectTo(tileEntity, ForgeDirection.getOrientation(absDir)); - } - - return false; - } - - public boolean connectInternal(int r) - { - int absDir = Rotation.rotateSide(side, r); - - if (tile().partMap(PartMap.edgeBetween(absDir, side)) != null) - return false; - - TMultiPart tp = tile().partMap(absDir); - - if (this.canConnectTo(tp, ForgeDirection.getOrientation(absDir))) - { - return ((PartFlatWire) tp).connectInternal(this, Rotation.rotationTo(absDir, side)); - } - - return connectInternalOverride(tp, r); - } - - public boolean connectInternalOverride(TMultiPart p, int r) - { - return false; - } - - public boolean connectCenter() - { - TMultiPart tp = tile().partMap(6); - - if (this.canConnectTo(tp)) - { - if (tp instanceof PartFlatWire) - { - return ((PartFlatWire) tp).connectInternal(this, side); - } - - return true; - } - - return false; - } - - public boolean renderThisCorner(PartFlatWire part) - { - if (!(part instanceof PartFlatWire)) - return false; - - PartFlatWire wire = part; - if (wire.getThickness() == getThickness()) - return side < wire.side; - - return wire.getThickness() > getThickness(); - } - - public boolean connectCorner(PartFlatWire wire, int r) - { - int absDir = Rotation.rotateSide(side, r); - - if (this.canConnectTo(wire, ForgeDirection.getOrientation(absDir)) && maskOpen(r)) - { - int oldConn = connMap; - connMap |= 0x1 << r; - if (renderThisCorner(wire))// render connection - connMap |= 0x100000 << r; - - if (oldConn != connMap) - sendConnUpdate(); - return true; - } - return false; - } - - public boolean connectStraight(PartFlatWire wire, int r) - { - int absDir = Rotation.rotateSide(side, r); - - if (this.canConnectTo(wire, ForgeDirection.getOrientation(absDir)) && maskOpen(r)) - { - int oldConn = connMap; - connMap |= 0x10 << r; - if (oldConn != connMap) - sendConnUpdate(); - return true; - } - return false; - } - - public boolean connectInternal(PartFlatWire wire, int r) - { - int absDir = Rotation.rotateSide(side, r); - - if (this.canConnectTo(wire, ForgeDirection.getOrientation(absDir))) - { - int oldConn = connMap; - connMap |= 0x100 << r; - if (oldConn != connMap) - sendConnUpdate(); - return true; - } - return false; - } - - public boolean canConnectCorner(int r) - { - return true; - } - - public void notifyCornerChange(int r) - { - int absDir = Rotation.rotateSide(side, r); - - BlockCoord pos = new BlockCoord(tile()).offset(absDir).offset(side); - world().notifyBlockOfNeighborChange(pos.x, pos.y, pos.z, tile().getBlockType().blockID); - } - - public void notifyStraightChange(int r) - { - int absDir = Rotation.rotateSide(side, r); - - BlockCoord pos = new BlockCoord(tile()).offset(absDir); - world().notifyBlockOfNeighborChange(pos.x, pos.y, pos.z, tile().getBlockType().blockID); - } - - public boolean maskConnects(int r) - { - return (connMap & 0x111 << r) != 0; - } - - public boolean maskOpen(int r) - { - return (connMap & 0x1000 << r) != 0; - } - - /** START TILEMULTIPART INTERACTIONS **/ - @Override - public float getStrength(MovingObjectPosition hit, EntityPlayer player) - { - return 4; - } - - @Override - public int getSlotMask() - { - return 1 << this.side; - } - - @Override - public Iterable getSubParts() - { - return Arrays.asList(new IndexedCuboid6(0, selectionBounds[getThickness()][side])); - } - - @Override - public boolean occlusionTest(TMultiPart npart) - { - return NormalOcclusionTest.apply(this, npart); - } - - @Override - public Iterable getOcclusionBoxes() - { - return Arrays.asList(occlusionBounds[getThickness()][side]); - } - - public int getThickness() - { - return this.isInsulated ? 2 : 1; - } - - @Override - public int redstoneConductionMap() - { - return 0; - } - - @Override - public boolean solid(int arg0) - { - return false; - } - - @Override - public String getType() - { - return "resonant_induction_flat_wire"; - } - - /** RENDERING */ - @SideOnly(Side.CLIENT) - public Icon getIcon() - { - return RenderFlatWire.flatWireTexture; - } - - public Colour getColour() - { - if (isInsulated) - { - Colour color = new ColourARGB(ItemDye.dyeColors[this.color]); - color.a = (byte) 255; - return color; - } - - return getMaterial().color; - } - - public boolean useStaticRenderer() - { - return true; - } - - @Override - @SideOnly(Side.CLIENT) - public void renderStatic(Vector3 pos, LazyLightMatrix olm, int pass) - { - if (pass == 0 && useStaticRenderer()) - { - CCRenderState.setBrightness(world(), x(), y(), z()); - RenderFlatWire.render(this, pos); - CCRenderState.setColour(-1); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void renderDynamic(Vector3 pos, float frame, int pass) - { - if (pass == 0 && !useStaticRenderer()) - { - GL11.glDisable(GL11.GL_LIGHTING); - TextureUtils.bindAtlas(0); - CCRenderState.useModelColours(true); - CCRenderState.startDrawing(7); - RenderFlatWire.render(this, pos); - CCRenderState.draw(); - CCRenderState.setColour(-1); - GL11.glEnable(GL11.GL_LIGHTING); - } - } - - @Override - @SideOnly(Side.CLIENT) - public void drawBreaking(RenderBlocks renderBlocks) - { - CCRenderState.reset(); - RenderFlatWire.renderBreakingOverlay(renderBlocks.overrideBlockTexture, this); - } - - /** - * Utility method to aid in initializing this or subclasses, usually when you need to change the - * wire to another type - * - * @param otherCable the wire to copy from - */ - public void copyFrom(PartFlatWire otherCable) - { - this.isInsulated = otherCable.isInsulated; - this.color = otherCable.color; - this.connections = otherCable.connections; - this.material = otherCable.material; - this.side = otherCable.side; - this.connMap = otherCable.connMap; - this.setNetwork(otherCable.getNetwork()); - this.getNetwork().setBufferFor(this, otherCable.getNetwork().getBufferOf(otherCable)); - } + public static Cuboid6[][] selectionBounds = new Cuboid6[3][6]; + public static Cuboid6[][] occlusionBounds = new Cuboid6[3][6]; + + static + { + for (int t = 0; t < 3; t++) + { + // Subtract the box a little because we'd like things like posts to get first hit + Cuboid6 selection = new Cuboid6(0, 0, 0, 1, (t + 2) / 16D, 1).expand(-0.005); + Cuboid6 occlusion = new Cuboid6(2 / 8D, 0, 2 / 8D, 6 / 8D, (t + 2) / 16D, 6 / 8D); + for (int s = 0; s < 6; s++) + { + selectionBounds[t][s] = selection.copy().apply(Rotation.sideRotations[s].at(Vector3.center)); + occlusionBounds[t][s] = occlusion.copy().apply(Rotation.sideRotations[s].at(Vector3.center)); + } + } + } + + public byte side; + + /** A map of the corners. + * + * + * Currently split into 4 nybbles (from lowest) 0 = Corner connections (this wire should connect + * around a corner to something external) 1 = Straight connections (this wire should connect to + * something external) 2 = Internal connections (this wire should connect to something internal) + * 3 = Internal open connections (this wire is not blocked by a cover/edge part and *could* + * connect through side) bit 16 = connection to the centerpart 5 = Render corner connections. + * Like corner connections but set to low if the other wire part is smaller than this (they + * render to us not us to them) */ + public int connMap; + + public PartFlatWire() + { + + } + + public PartFlatWire(int typeID) + { + this(EnumWireMaterial.values()[typeID]); + } + + public PartFlatWire(EnumWireMaterial type) + { + material = type; + } + + public void preparePlacement(int side, int meta) + { + this.side = (byte) (side ^ 1); + this.setMaterial(meta); + } + + /** PACKET and NBT Methods */ + @Override + public void load(NBTTagCompound tag) + { + super.load(tag); + this.side = tag.getByte("side"); + this.connMap = tag.getInteger("connMap"); + } + + @Override + public void save(NBTTagCompound tag) + { + super.save(tag); + tag.setByte("side", this.side); + tag.setInteger("connMap", this.connMap); + } + + @Override + public void readDesc(MCDataInput packet) + { + super.readDesc(packet); + this.side = packet.readByte(); + this.connMap = packet.readInt(); + } + + @Override + public void writeDesc(MCDataOutput packet) + { + super.writeDesc(packet); + packet.writeByte(this.side); + packet.writeInt(this.connMap); + } + + @Override + public void read(MCDataInput packet) + { + read(packet, packet.readUByte()); + } + + @Override + public void read(MCDataInput packet, int packetID) + { + if (packetID == 0) + { + this.connMap = packet.readInt(); + tile().markRender(); + } + else + { + super.read(packet, packetID); + } + } + + public void sendConnUpdate() + { + tile().getWriteStream(this).writeByte(0).writeInt(this.connMap); + } + + /* WORLD EVENTS */ + @Override + public void onRemoved() + { + super.onRemoved(); + + if (!world().isRemote) + { + for (int r = 0; r < 4; r++) + { + if (maskConnects(r)) + { + if ((connMap & 1 << r) != 0) + { + notifyCornerChange(r); + } + else if ((connMap & 0x10 << r) != 0) + { + notifyStraightChange(r); + } + } + } + } + } + + @Override + public void onChunkLoad() + { + if ((connMap & 0x80000000) != 0) // compat with converters, recalc connections + { + if (dropIfCantStay()) + { + return; + } + + connMap = 0; + + updateInternalConnections(); + + if (updateOpenConnections()) + { + updateExternalConnections(); + } + + tile().markDirty(); + } + + this.recalculateConnections(); + + super.onChunkLoad(); + } + + @Override + public void onAdded() + { + super.onAdded(); + + if (!world().isRemote) + { + updateOpenConnections(); + boolean changed = updateInternalConnections(); + // don't use || because it's fail fast + changed |= updateExternalConnections(); + + if (changed) + { + sendConnUpdate(); + } + + this.recalculateConnections(); + } + } + + @Override + public void onPartChanged(TMultiPart part) + { + if (!world().isRemote) + { + boolean changed = updateInternalConnections(); + + if (updateOpenConnections()) + { + changed |= updateExternalConnections(); + } + + if (changed) + { + sendConnUpdate(); + } + + this.recalculateConnections(); + } + + super.onPartChanged(part); + } + + @Override + public void onNeighborChanged() + { + if (!world().isRemote) + { + if (dropIfCantStay()) + { + return; + } + + if (updateExternalConnections()) + { + sendConnUpdate(); + } + + this.recalculateConnections(); + } + super.onNeighborChanged(); + } + + @Override + public boolean activate(EntityPlayer player, MovingObjectPosition part, ItemStack item) + { + if (item != null) + { + if (item.getItem().itemID == Block.lever.blockID) + { + TileMultipart tile = tile(); + World w = world(); + + if (!w.isRemote) + { + PartFlatSwitchWire wire = (PartFlatSwitchWire) MultiPartRegistry.createPart("resonant_induction_flat_switch_wire", false); + wire.copyFrom(this); + + if (tile.canReplacePart(this, wire)) + { + tile.remPart(this); + TileMultipart.addPart(w, new BlockCoord(tile), wire); + + if (!player.capabilities.isCreativeMode) + { + player.inventory.decrStackSize(player.inventory.currentItem, 1); + } + } + } + return true; + } + } + + return super.activate(player, part, item); + } + + @Override + public void recalculateConnections() + { + this.updateOpenConnections(); + + boolean[] calculatedSides = new boolean[6]; + + /** Check external connections. */ + for (byte r = 0; r < 4; r++) + { + if (maskOpen(r)) + { + int absDir = Rotation.rotateSide(this.side, r); + + // Check direct connection. + if (this.setExternalConnection(r, absDir)) + { + calculatedSides[absDir] = true; + } + + // Check Corner Connection + BlockCoord cornerPos = new BlockCoord(tile()); + cornerPos.offset(absDir); + + if (canConnectThroughCorner(cornerPos, absDir ^ 1, this.side)) + { + cornerPos.offset(this.side); + TileMultipart tpCorner = MultipartUtility.getMultipartTile(world(), cornerPos); + + if (tpCorner != null) + { + TMultiPart tp = tpCorner.partMap(absDir ^ 1); + + if (this.canConnectTo(tp, ForgeDirection.getOrientation(absDir))) + { + this.connections[absDir] = tp; + + if (tp instanceof PartFlatWire) + { + // We found a wire, merge networks! + this.getNetwork().merge(((PartFlatWire) tp).getNetwork()); + } + + calculatedSides[absDir] = true; + continue; + } + } + } + + if (!calculatedSides[absDir]) + { + this.disconnect(absDir); + } + } + } + + /** Check internal connections. */ + for (byte r = 0; r < 4; r++) + { + int absDir = Rotation.rotateSide(this.side, r); + + /** Look for an internal straight connection. */ + if (tile().partMap(PartMap.edgeBetween(absDir, this.side)) == null) + { + TMultiPart tp = tile().partMap(absDir); + + if (this.canConnectTo(tp)) + { + // We found a wire! Merge networks! + this.connections[absDir] = tp; + + if (tp instanceof PartFlatWire) + { + this.getNetwork().merge(((PartFlatWire) tp).getNetwork()); + } + continue; + } + } + + if (!calculatedSides[absDir]) + { + this.disconnect(absDir); + } + } + + // Connect to the face of the block the wire is placed on. + this.setExternalConnection(-1, this.side); + + this.getNetwork().reconstruct(); + } + + public boolean setExternalConnection(int r, int absSide) + { + BlockCoord pos = new BlockCoord(tile()).offset(absSide); + + /** Look for an external wire connection. */ + TileMultipart tileMultiPart = MultipartUtility.getMultipartTile(world(), pos); + + if (tileMultiPart != null && r != -1) + { + TMultiPart tp = tileMultiPart.partMap(this.side); + + if (this.canConnectTo(tp, ForgeDirection.getOrientation(absSide))) + { + // Check the wire we are connecting to and see if THAT block can accept this one. + int otherR = (r + 2) % 4; + + if (tp instanceof PartFlatWire && ((PartFlatWire) tp).canConnectTo(this, ForgeDirection.getOrientation(absSide).getOpposite()) && ((PartFlatWire) tp).maskOpen(otherR)) + { + // We found a wire! Merge connection. + connections[absSide] = tp; + getNetwork().merge(((PartFlatWire) tp).getNetwork()); + return true; + } + + /** Check for a micro-energy block */ + if (canConnectTo(tp)) + { + connections[absSide] = tp; + return true; + } + } + + this.disconnect(absSide); + } + + /** Look for an external energy handler. */ + TileEntity tileEntity = world().getBlockTileEntity(pos.x, pos.y, pos.z); + + if (this.canConnectTo(tileEntity, ForgeDirection.getOrientation(absSide))) + { + this.connections[absSide] = tileEntity; + return true; + } + + this.disconnect(absSide); + + return false; + } + + private synchronized void disconnect(int i) + { + if (!this.world().isRemote) + { + if (this.connections[i] != null) + { + if (this.connections[i] instanceof PartFlatWire) + { + PartFlatWire wire = (PartFlatWire) this.connections[i]; + this.connections[i] = null; + this.getNetwork().split(this, wire); + } + else + { + this.connections[i] = null; + } + } + } + } + + @Override + public Object[] getConnections() + { + return this.connections; + } + + public boolean canStay() + { + BlockCoord pos = new BlockCoord(tile()).offset(side); + return MultipartUtility.canPlaceWireOnSide(world(), pos.x, pos.y, pos.z, ForgeDirection.getOrientation(side ^ 1), false); + } + + public boolean dropIfCantStay() + { + if (!canStay()) + { + drop(); + return true; + } + return false; + } + + public void drop() + { + TileMultipart.dropItem(getItem(), world(), Vector3.fromTileEntityCenter(tile())); + tile().remPart(this); + } + + /** Recalculates connections to blocks outside this space + * + * @return true if a new connection was added or one was removed */ + protected boolean updateExternalConnections() + { + int newConn = 0; + + for (int r = 0; r < 4; r++) + { + if (!maskOpen(r)) + { + continue; + } + + if (connectStraight(r)) + { + newConn |= 0x10 << r; + } + else + { + int cnrMode = connectCorner(r); + + if (cnrMode != 0) + { + newConn |= 1 << r; + + if (cnrMode == 2) + { + newConn |= 0x100000 << r;// render flag + } + } + } + } + + if (newConn != (connMap & 0xF000FF)) + { + int diff = connMap ^ newConn; + connMap = connMap & ~0xF000FF | newConn; + + // Notify corner disconnections + for (int r = 0; r < 4; r++) + { + if ((diff & 1 << r) != 0) + { + notifyCornerChange(r); + } + } + + return true; + } + + return false; + } + + /** Recalculates connections to other parts within this space + * + * @return true if a new connection was added or one was removed */ + protected boolean updateInternalConnections() + { + int newConn = 0; + for (int r = 0; r < 4; r++) + { + if (connectInternal(r)) + { + newConn |= 0x100 << r; + } + } + + if (connectCenter()) + { + newConn |= 0x10000; + } + + if (newConn != (connMap & 0x10F00)) + { + connMap = connMap & ~0x10F00 | newConn; + return true; + } + return false; + } + + /** Recalculates connections that can be made to other parts outside of this space + * + * @return true if external connections should be recalculated */ + protected boolean updateOpenConnections() + { + int newConn = 0; + for (int r = 0; r < 4; r++) + if (connectionOpen(r)) + newConn |= 0x1000 << r; + + if (newConn != (connMap & 0xF000)) + { + connMap = connMap & ~0xF000 | newConn; + return true; + } + return false; + } + + public boolean connectionOpen(int r) + { + int absDir = Rotation.rotateSide(side, r); + TMultiPart facePart = tile().partMap(absDir); + if (facePart != null && (!(facePart instanceof PartFlatWire) || !canConnectTo(facePart, ForgeDirection.getOrientation(absDir)))) + return false; + + if (tile().partMap(PartMap.edgeBetween(side, absDir)) != null) + return false; + + return true; + } + + /** Return a corner connection state. 0 = No connection 1 = Physical connection 2 = Render + * connection */ + public int connectCorner(int r) + { + int absDir = Rotation.rotateSide(side, r); + + BlockCoord pos = new BlockCoord(tile()); + pos.offset(absDir); + + if (!canConnectThroughCorner(pos, absDir ^ 1, side)) + return 0; + + pos.offset(side); + TileMultipart t = MultipartUtility.getMultipartTile(world(), pos); + if (t != null) + { + TMultiPart tp = t.partMap(absDir ^ 1); + + if (canConnectTo(tp, ForgeDirection.getOrientation(absDir))) + { + if (tp instanceof PartFlatWire) + { + boolean b = ((PartFlatWire) tp).connectCorner(this, Rotation.rotationTo(absDir ^ 1, side ^ 1)); + + if (b) + { + // let them connect to us + if (!renderThisCorner((PartFlatWire) tp)) + { + return 1; + } + + return 2; + } + } + + return 2; + } + } + return 0; + } + + public boolean canConnectThroughCorner(BlockCoord pos, int side1, int side2) + { + if (world().isAirBlock(pos.x, pos.y, pos.z)) + { + return true; + } + + TileMultipart t = MultipartUtility.getMultipartTile(world(), pos); + if (t != null) + { + return t.partMap(side1) == null && t.partMap(side2) == null && t.partMap(PartMap.edgeBetween(side1, side2)) == null; + } + + return false; + } + + public boolean connectStraight(int r) + { + int absDir = Rotation.rotateSide(side, r); + + BlockCoord pos = new BlockCoord(tile()).offset(absDir); + + TileMultipart t = MultipartUtility.getMultipartTile(world(), pos); + if (t != null) + { + TMultiPart tp = t.partMap(side); + + if (this.canConnectTo(tp, ForgeDirection.getOrientation(absDir))) + { + if (tp instanceof PartFlatWire) + { + return ((PartFlatWire) tp).connectStraight(this, (r + 2) % 4); + } + + return true; + } + } + else + { + TileEntity tileEntity = world().getBlockTileEntity(pos.x, pos.y, pos.z); + return this.canConnectTo(tileEntity, ForgeDirection.getOrientation(absDir)); + } + + return false; + } + + public boolean connectInternal(int r) + { + int absDir = Rotation.rotateSide(side, r); + + if (tile().partMap(PartMap.edgeBetween(absDir, side)) != null) + return false; + + TMultiPart tp = tile().partMap(absDir); + + if (this.canConnectTo(tp, ForgeDirection.getOrientation(absDir))) + { + return ((PartFlatWire) tp).connectInternal(this, Rotation.rotationTo(absDir, side)); + } + + return connectInternalOverride(tp, r); + } + + public boolean connectInternalOverride(TMultiPart p, int r) + { + return false; + } + + public boolean connectCenter() + { + TMultiPart tp = tile().partMap(6); + + if (this.canConnectTo(tp)) + { + if (tp instanceof PartFlatWire) + { + return ((PartFlatWire) tp).connectInternal(this, side); + } + + return true; + } + + return false; + } + + public boolean renderThisCorner(PartFlatWire part) + { + if (!(part instanceof PartFlatWire)) + return false; + + PartFlatWire wire = part; + if (wire.getThickness() == getThickness()) + return side < wire.side; + + return wire.getThickness() > getThickness(); + } + + public boolean connectCorner(PartFlatWire wire, int r) + { + int absDir = Rotation.rotateSide(side, r); + + if (this.canConnectTo(wire, ForgeDirection.getOrientation(absDir)) && maskOpen(r)) + { + int oldConn = connMap; + connMap |= 0x1 << r; + if (renderThisCorner(wire))// render connection + connMap |= 0x100000 << r; + + if (oldConn != connMap) + sendConnUpdate(); + return true; + } + return false; + } + + public boolean connectStraight(PartFlatWire wire, int r) + { + int absDir = Rotation.rotateSide(side, r); + + if (this.canConnectTo(wire, ForgeDirection.getOrientation(absDir)) && maskOpen(r)) + { + int oldConn = connMap; + connMap |= 0x10 << r; + if (oldConn != connMap) + sendConnUpdate(); + return true; + } + return false; + } + + public boolean connectInternal(PartFlatWire wire, int r) + { + int absDir = Rotation.rotateSide(side, r); + + if (this.canConnectTo(wire, ForgeDirection.getOrientation(absDir))) + { + int oldConn = connMap; + connMap |= 0x100 << r; + if (oldConn != connMap) + sendConnUpdate(); + return true; + } + return false; + } + + public boolean canConnectCorner(int r) + { + return true; + } + + public void notifyCornerChange(int r) + { + int absDir = Rotation.rotateSide(side, r); + + BlockCoord pos = new BlockCoord(tile()).offset(absDir).offset(side); + world().notifyBlockOfNeighborChange(pos.x, pos.y, pos.z, tile().getBlockType().blockID); + } + + public void notifyStraightChange(int r) + { + int absDir = Rotation.rotateSide(side, r); + + BlockCoord pos = new BlockCoord(tile()).offset(absDir); + world().notifyBlockOfNeighborChange(pos.x, pos.y, pos.z, tile().getBlockType().blockID); + } + + public boolean maskConnects(int r) + { + return (connMap & 0x111 << r) != 0; + } + + public boolean maskOpen(int r) + { + return (connMap & 0x1000 << r) != 0; + } + + /** START TILEMULTIPART INTERACTIONS **/ + @Override + public float getStrength(MovingObjectPosition hit, EntityPlayer player) + { + return 4; + } + + @Override + public int getSlotMask() + { + return 1 << this.side; + } + + @Override + public Iterable getSubParts() + { + return Arrays.asList(new IndexedCuboid6(0, selectionBounds[getThickness()][side])); + } + + @Override + public boolean occlusionTest(TMultiPart npart) + { + return NormalOcclusionTest.apply(this, npart); + } + + @Override + public Iterable getOcclusionBoxes() + { + return Arrays.asList(occlusionBounds[getThickness()][side]); + } + + public int getThickness() + { + return this.isInsulated ? 2 : 1; + } + + @Override + public int redstoneConductionMap() + { + return 0; + } + + @Override + public boolean solid(int arg0) + { + return false; + } + + @Override + public String getType() + { + return "resonant_induction_flat_wire"; + } + + /** RENDERING */ + @SideOnly(Side.CLIENT) + public Icon getIcon() + { + return RenderFlatWire.flatWireTexture; + } + + public Colour getColour() + { + if (isInsulated) + { + Colour color = new ColourARGB(ItemDye.dyeColors[this.color]); + color.a = (byte) 255; + return color; + } + + return getMaterial().color; + } + + public boolean useStaticRenderer() + { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public void renderStatic(Vector3 pos, LazyLightMatrix olm, int pass) + { + if (pass == 0 && useStaticRenderer()) + { + CCRenderState.setBrightness(world(), x(), y(), z()); + RenderFlatWire.render(this, pos); + CCRenderState.setColour(-1); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void renderDynamic(Vector3 pos, float frame, int pass) + { + if (pass == 0 && !useStaticRenderer()) + { + GL11.glDisable(GL11.GL_LIGHTING); + TextureUtils.bindAtlas(0); + CCRenderState.useModelColours(true); + CCRenderState.startDrawing(7); + RenderFlatWire.render(this, pos); + CCRenderState.draw(); + CCRenderState.setColour(-1); + GL11.glEnable(GL11.GL_LIGHTING); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void drawBreaking(RenderBlocks renderBlocks) + { + CCRenderState.reset(); + RenderFlatWire.renderBreakingOverlay(renderBlocks.overrideBlockTexture, this); + } + + /** Utility method to aid in initializing this or subclasses, usually when you need to change the + * wire to another type + * + * @param otherCable the wire to copy from */ + public void copyFrom(PartFlatWire otherCable) + { + this.isInsulated = otherCable.isInsulated; + this.color = otherCable.color; + this.connections = otherCable.connections; + this.material = otherCable.material; + this.side = otherCable.side; + this.connMap = otherCable.connMap; + this.setNetwork(otherCable.getNetwork()); + this.getNetwork().setBufferFor(this, otherCable.getNetwork().getBufferOf(otherCable)); + } + + @Override + public String toString() + { + return "[PartFlatWire]" + x() + "x " + y() + "y " + z() + "z " + getSlotMask() + "s "; + } } \ No newline at end of file diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java index 026bf57a8..a443faf22 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java @@ -8,12 +8,10 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; -import calclavia.lib.prefab.damage.ElectricalDamage; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; @@ -29,6 +27,7 @@ import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; +import calclavia.lib.prefab.damage.ElectricalDamage; import codechicken.lib.lighting.LazyLightMatrix; import codechicken.lib.render.CCRenderState; import codechicken.lib.render.IconTransformation; @@ -349,7 +348,7 @@ public class PartFramedWire extends PartFramedConnection, N extends INodeNetwork> extends PartColorableMaterial implements IConnector, TSlottedPart, JNormalOcclusion, IHollowConnect { - public static IndexedCuboid6[] sides = new IndexedCuboid6[7]; - public static IndexedCuboid6[] insulatedSides = new IndexedCuboid6[7]; + public static IndexedCuboid6[] sides = new IndexedCuboid6[7]; + public static IndexedCuboid6[] insulatedSides = new IndexedCuboid6[7]; - static - { - sides[0] = new IndexedCuboid6(0, new Cuboid6(0.36, 0.000, 0.36, 0.64, 0.36, 0.64)); - sides[1] = new IndexedCuboid6(1, new Cuboid6(0.36, 0.64, 0.36, 0.64, 1.000, 0.64)); - sides[2] = new IndexedCuboid6(2, new Cuboid6(0.36, 0.36, 0.000, 0.64, 0.64, 0.36)); - sides[3] = new IndexedCuboid6(3, new Cuboid6(0.36, 0.36, 0.64, 0.64, 0.64, 1.000)); - sides[4] = new IndexedCuboid6(4, new Cuboid6(0.000, 0.36, 0.36, 0.36, 0.64, 0.64)); - sides[5] = new IndexedCuboid6(5, new Cuboid6(0.64, 0.36, 0.36, 1.000, 0.64, 0.64)); - sides[6] = new IndexedCuboid6(6, new Cuboid6(0.36, 0.36, 0.36, 0.64, 0.64, 0.64)); - insulatedSides[0] = new IndexedCuboid6(0, new Cuboid6(0.3, 0.0, 0.3, 0.7, 0.3, 0.7)); - insulatedSides[1] = new IndexedCuboid6(1, new Cuboid6(0.3, 0.7, 0.3, 0.7, 1.0, 0.7)); - insulatedSides[2] = new IndexedCuboid6(2, new Cuboid6(0.3, 0.3, 0.0, 0.7, 0.7, 0.3)); - insulatedSides[3] = new IndexedCuboid6(3, new Cuboid6(0.3, 0.3, 0.7, 0.7, 0.7, 1.0)); - insulatedSides[4] = new IndexedCuboid6(4, new Cuboid6(0.0, 0.3, 0.3, 0.3, 0.7, 0.7)); - insulatedSides[5] = new IndexedCuboid6(5, new Cuboid6(0.7, 0.3, 0.3, 1.0, 0.7, 0.7)); - insulatedSides[6] = new IndexedCuboid6(6, new Cuboid6(0.3, 0.3, 0.3, 0.7, 0.7, 0.7)); - } + static + { + sides[0] = new IndexedCuboid6(0, new Cuboid6(0.36, 0.000, 0.36, 0.64, 0.36, 0.64)); + sides[1] = new IndexedCuboid6(1, new Cuboid6(0.36, 0.64, 0.36, 0.64, 1.000, 0.64)); + sides[2] = new IndexedCuboid6(2, new Cuboid6(0.36, 0.36, 0.000, 0.64, 0.64, 0.36)); + sides[3] = new IndexedCuboid6(3, new Cuboid6(0.36, 0.36, 0.64, 0.64, 0.64, 1.000)); + sides[4] = new IndexedCuboid6(4, new Cuboid6(0.000, 0.36, 0.36, 0.36, 0.64, 0.64)); + sides[5] = new IndexedCuboid6(5, new Cuboid6(0.64, 0.36, 0.36, 1.000, 0.64, 0.64)); + sides[6] = new IndexedCuboid6(6, new Cuboid6(0.36, 0.36, 0.36, 0.64, 0.64, 0.64)); + insulatedSides[0] = new IndexedCuboid6(0, new Cuboid6(0.3, 0.0, 0.3, 0.7, 0.3, 0.7)); + insulatedSides[1] = new IndexedCuboid6(1, new Cuboid6(0.3, 0.7, 0.3, 0.7, 1.0, 0.7)); + insulatedSides[2] = new IndexedCuboid6(2, new Cuboid6(0.3, 0.3, 0.0, 0.7, 0.7, 0.3)); + insulatedSides[3] = new IndexedCuboid6(3, new Cuboid6(0.3, 0.3, 0.7, 0.7, 0.7, 1.0)); + insulatedSides[4] = new IndexedCuboid6(4, new Cuboid6(0.0, 0.3, 0.3, 0.3, 0.7, 0.7)); + insulatedSides[5] = new IndexedCuboid6(5, new Cuboid6(0.7, 0.3, 0.3, 1.0, 0.7, 0.7)); + insulatedSides[6] = new IndexedCuboid6(6, new Cuboid6(0.3, 0.3, 0.3, 0.7, 0.7, 0.7)); + } - protected Object[] connections = new Object[6]; + protected Object[] connections = new Object[6]; - protected N network; + protected N network; - /** - * Bitmask connections - */ - public byte currentWireConnections = 0x00; - public byte currentAcceptorConnections = 0x00; + /** Bitmask connections */ + public byte currentWireConnections = 0x00; + public byte currentAcceptorConnections = 0x00; - /** Client Side */ - private ForgeDirection testingSide; + /** Client Side */ + private ForgeDirection testingSide; - @SideOnly(Side.CLIENT) - protected Icon breakIcon; + @SideOnly(Side.CLIENT) + protected Icon breakIcon; - public PartFramedConnection(Item insulationType) - { - super(insulationType); - } + public PartFramedConnection(Item insulationType) + { + super(insulationType); + } - public void preparePlacement(int meta) - { - this.setMaterial(meta); - } + public void preparePlacement(int meta) + { + this.setMaterial(meta); + } - @Override - public boolean occlusionTest(TMultiPart other) - { - return NormalOcclusionTest.apply(this, other); - } + @Override + public boolean occlusionTest(TMultiPart other) + { + return NormalOcclusionTest.apply(this, other); + } - @Override - public Iterable getSubParts() - { - Set subParts = new HashSet(); - IndexedCuboid6[] currentSides = isInsulated() ? insulatedSides : sides; + @Override + public Iterable getSubParts() + { + Set subParts = new HashSet(); + IndexedCuboid6[] currentSides = isInsulated() ? insulatedSides : sides; - if (tile() != null) - { - for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) - { - int ord = side.ordinal(); - if (connectionMapContainsSide(getAllCurrentConnections(), side) || side == testingSide) - subParts.add(currentSides[ord]); - } - } + if (tile() != null) + { + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + int ord = side.ordinal(); + if (connectionMapContainsSide(getAllCurrentConnections(), side) || side == testingSide) + subParts.add(currentSides[ord]); + } + } - subParts.add(currentSides[6]); - return subParts; - } + subParts.add(currentSides[6]); + return subParts; + } - /** - * Rendering and block bounds. - */ - @Override - public Iterable getCollisionBoxes() - { - Set collisionBoxes = new HashSet(); - collisionBoxes.addAll((Collection) getSubParts()); + /** Rendering and block bounds. */ + @Override + public Iterable getCollisionBoxes() + { + Set collisionBoxes = new HashSet(); + collisionBoxes.addAll((Collection) getSubParts()); - return collisionBoxes; - } + return collisionBoxes; + } - @Override - public float getStrength(MovingObjectPosition hit, EntityPlayer player) - { - return 10F; - } + @Override + public float getStrength(MovingObjectPosition hit, EntityPlayer player) + { + return 10F; + } - @Override - public void drawBreaking(RenderBlocks renderBlocks) - { - if (breakIcon != null) - { - CCRenderState.reset(); - RenderUtils.renderBlock(sides[6], 0, new Translation(x(), y(), z()), new IconTransformation(breakIcon), null); - } - } + @Override + public void drawBreaking(RenderBlocks renderBlocks) + { + if (breakIcon != null) + { + CCRenderState.reset(); + RenderUtils.renderBlock(sides[6], 0, new Translation(x(), y(), z()), new IconTransformation(breakIcon), null); + } + } - @Override - public Iterable getOcclusionBoxes() - { - return getCollisionBoxes(); - } + @Override + public Iterable getOcclusionBoxes() + { + return getCollisionBoxes(); + } - @Override - public int getSlotMask() - { - return PartMap.CENTER.mask; - } + @Override + public int getSlotMask() + { + return PartMap.CENTER.mask; + } - @Override - public int getHollowSize() - { - return isInsulated ? 8 : 6; - } + @Override + public int getHollowSize() + { + return isInsulated ? 8 : 6; + } - public boolean isBlockedOnSide(ForgeDirection side) - { - TMultiPart blocker = tile().partMap(side.ordinal()); - testingSide = side; - boolean expandable = NormalOcclusionTest.apply(this, blocker); - testingSide = null; - return !expandable; - } + public boolean isBlockedOnSide(ForgeDirection side) + { + TMultiPart blocker = tile().partMap(side.ordinal()); + testingSide = side; + boolean expandable = NormalOcclusionTest.apply(this, blocker); + testingSide = null; + return !expandable; + } - public byte getAllCurrentConnections() - { - return (byte) (currentWireConnections | currentAcceptorConnections); - } + public byte getAllCurrentConnections() + { + return (byte) (currentWireConnections | currentAcceptorConnections); + } - public static boolean connectionMapContainsSide(byte connections, ForgeDirection side) - { - byte tester = (byte) (1 << side.ordinal()); - return ((connections & tester) > 0); - } + public static boolean connectionMapContainsSide(byte connections, ForgeDirection side) + { + byte tester = (byte) (1 << side.ordinal()); + return ((connections & tester) > 0); + } - @Override - public void bind(TileMultipart t) - { - if (this.getNetwork() != null) - { - getNetwork().getConnectors().remove(this); - super.bind(t); - getNetwork().getConnectors().add(this); - } - else - { - super.bind(t); - } - } + @Override + public void bind(TileMultipart t) + { + if (this.getNetwork() != null) + { + getNetwork().getConnectors().remove(this); + super.bind(t); + getNetwork().getConnectors().add(this); + } + else + { + super.bind(t); + } + } - /** - * CONNECTION LOGIC CODE - */ - protected abstract boolean canConnectTo(TileEntity tile, ForgeDirection to); + /** CONNECTION LOGIC CODE */ + protected abstract boolean canConnectTo(TileEntity tile, ForgeDirection to); - protected abstract C getConnector(TileEntity tile); + protected abstract C getConnector(TileEntity tile); - public boolean canConnectBothSides(TileEntity tile, ForgeDirection side) - { - boolean notPrevented = !isConnectionPrevented(tile, side); + public boolean canConnectBothSides(TileEntity tile, ForgeDirection side) + { + boolean notPrevented = !isConnectionPrevented(tile, side); - if (getConnector(tile) != null) - { - notPrevented &= getConnector(tile).canConnect(side.getOpposite(), this); - } + if (getConnector(tile) != null) + { + notPrevented &= getConnector(tile).canConnect(side.getOpposite(), this); + } - return notPrevented; - } + return notPrevented; + } - /** - * Override if there are ways of preventing a connection - * - * @param tile The TileEntity on the given side - * @param side The side we're checking - * @return Whether we're preventing connections on given side or to given tileEntity - */ - public boolean isConnectionPrevented(TileEntity tile, ForgeDirection side) - { - return (!this.canConnectTo(tile, side)) || (isBlockedOnSide(side)); - } + /** Override if there are ways of preventing a connection + * + * @param tile The TileEntity on the given side + * @param side The side we're checking + * @return Whether we're preventing connections on given side or to given tileEntity */ + public boolean isConnectionPrevented(TileEntity tile, ForgeDirection side) + { + return (!this.canConnectTo(tile, side)) || (isBlockedOnSide(side)); + } - public byte getPossibleWireConnections() - { - byte connections = 0x00; + public byte getPossibleWireConnections() + { + byte connections = 0x00; - for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side); + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side); - if (getConnector(tileEntity) != null && canConnectBothSides(tileEntity, side)) - { - connections |= 1 << side.ordinal(); - } - } + if (getConnector(tileEntity) != null && canConnectBothSides(tileEntity, side)) + { + connections |= 1 << side.ordinal(); + } + } - return connections; - } + return connections; + } - public byte getPossibleAcceptorConnections() - { - byte connections = 0x00; + public byte getPossibleAcceptorConnections() + { + byte connections = 0x00; - for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) - { - TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side); + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side); - if (canConnectTo(tileEntity, side) && canConnectBothSides(tileEntity, side)) - { - connections |= 1 << side.ordinal(); - } - } + if (canConnectTo(tileEntity, side) && canConnectBothSides(tileEntity, side)) + { + connections |= 1 << side.ordinal(); + } + } - return connections; - } + return connections; + } - public void refresh() - { - if (!world().isRemote) - { - byte possibleWireConnections = getPossibleWireConnections(); - byte possibleAcceptorConnections = getPossibleAcceptorConnections(); + public void refresh() + { + if (!world().isRemote) + { + byte possibleWireConnections = getPossibleWireConnections(); + byte possibleAcceptorConnections = getPossibleAcceptorConnections(); - if (possibleWireConnections != this.currentWireConnections) - { - byte or = (byte) (possibleWireConnections | this.currentWireConnections); + if (possibleWireConnections != this.currentWireConnections) + { + byte or = (byte) (possibleWireConnections | this.currentWireConnections); - // Connections have been removed - if (or != possibleWireConnections) - { - this.getNetwork().removeConnector(this); - this.getNetwork().split(this); - setNetwork(null); - } + // Connections have been removed + if (or != possibleWireConnections) + { + this.getNetwork().removeConnector(this); + this.getNetwork().split(this); + setNetwork(null); + } - for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) - { - if (connectionMapContainsSide(possibleWireConnections, side)) - { - TileEntity tileEntity = VectorHelper.getConnectorFromSide(world(), new Vector3(tile()), side, this); + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + if (connectionMapContainsSide(possibleWireConnections, side)) + { + TileEntity tileEntity = VectorHelper.getConnectorFromSide(world(), new Vector3(tile()), side, this); - if (getConnector(tileEntity) != null) - { - getNetwork().merge(getConnector(tileEntity).getNetwork()); - } - } - } + if (getConnector(tileEntity) != null) + { + getNetwork().merge(getConnector(tileEntity).getNetwork()); + } + } + } - this.currentWireConnections = possibleWireConnections; - } + this.currentWireConnections = possibleWireConnections; + } - this.currentAcceptorConnections = possibleAcceptorConnections; - this.getNetwork().reconstruct(); - this.sendConnectionUpdate(); - } + this.currentAcceptorConnections = possibleAcceptorConnections; + this.getNetwork().reconstruct(); + this.sendConnectionUpdate(); + } - tile().markRender(); - } + tile().markRender(); + } - /** - * Should include connections that are in the current connection maps even if those connections - * aren't allowed any more. This is so that networks split correctly. - */ - @Override - public TileEntity[] getConnections() - { - TileEntity[] connections = new TileEntity[6]; + /** Should include connections that are in the current connection maps even if those connections + * aren't allowed any more. This is so that networks split correctly. */ + @Override + public TileEntity[] getConnections() + { + TileEntity[] connections = new TileEntity[6]; - if (world() != null) - { - for (byte i = 0; i < 6; i++) - { - ForgeDirection side = ForgeDirection.getOrientation(i); - TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side); + if (world() != null) + { + for (byte i = 0; i < 6; i++) + { + ForgeDirection side = ForgeDirection.getOrientation(i); + TileEntity tileEntity = VectorHelper.getTileEntityFromSide(world(), new Vector3(tile()), side); - if (isCurrentlyConnected(side)) - { - connections[i] = tileEntity; - } - } + if (isCurrentlyConnected(side)) + { + connections[i] = tileEntity; + } + } - } - return connections; - } + } + return connections; + } - public boolean isCurrentlyConnected(ForgeDirection side) - { - return connectionMapContainsSide(getAllCurrentConnections(), side); - } + public boolean isCurrentlyConnected(ForgeDirection side) + { + return connectionMapContainsSide(getAllCurrentConnections(), side); + } - /** Shouldn't need to be overridden. Override connectionPrevented instead */ - @Override - public boolean canConnect(ForgeDirection direction, Object source) - { - Vector3 connectPos = new Vector3(tile()).translate(direction); - TileEntity connectTile = connectPos.getTileEntity(world()); - return !isConnectionPrevented(connectTile, direction); - } + /** Shouldn't need to be overridden. Override connectionPrevented instead */ + @Override + public boolean canConnect(ForgeDirection direction, Object source) + { + Vector3 connectPos = new Vector3(tile()).translate(direction); + TileEntity connectTile = connectPos.getTileEntity(world()); + return !isConnectionPrevented(connectTile, direction); + } - @Override - public void onAdded() - { - super.onAdded(); - refresh(); - } + @Override + public void onAdded() + { + super.onAdded(); + refresh(); + } - @Override - public void onWorldJoin() - { - refresh(); - } + @Override + public void onWorldJoin() + { + refresh(); + } - @Override - public void onNeighborChanged() - { - super.onNeighborChanged(); - refresh(); - } + @Override + public void onNeighborChanged() + { + super.onNeighborChanged(); + refresh(); + } - @Override - public void onPartChanged(TMultiPart part) - { - refresh(); - } + @Override + public void onPartChanged(TMultiPart part) + { + refresh(); + } - public void copyFrom(PartFramedConnection other) - { - this.isInsulated = other.isInsulated; - this.color = other.color; - this.connections = other.connections; - this.material = other.material; - this.currentWireConnections = other.currentWireConnections; - this.currentAcceptorConnections = other.currentAcceptorConnections; - this.setNetwork(other.getNetwork()); - } + public void copyFrom(PartFramedConnection other) + { + this.isInsulated = other.isInsulated; + this.color = other.color; + this.connections = other.connections; + this.material = other.material; + this.currentWireConnections = other.currentWireConnections; + this.currentAcceptorConnections = other.currentAcceptorConnections; + this.setNetwork(other.getNetwork()); + } - /** Packet Methods */ - public void sendConnectionUpdate() - { - tile().getWriteStream(this).writeByte(0).writeByte(this.currentWireConnections).writeByte(this.currentAcceptorConnections); - } + /** Packet Methods */ + public void sendConnectionUpdate() + { + tile().getWriteStream(this).writeByte(0).writeByte(this.currentWireConnections).writeByte(this.currentAcceptorConnections); + } - @Override - public void readDesc(MCDataInput packet) - { - super.readDesc(packet); - this.currentWireConnections = packet.readByte(); - this.currentAcceptorConnections = packet.readByte(); - } + @Override + public void readDesc(MCDataInput packet) + { + super.readDesc(packet); + this.currentWireConnections = packet.readByte(); + this.currentAcceptorConnections = packet.readByte(); + } - @Override - public void writeDesc(MCDataOutput packet) - { - super.writeDesc(packet); - packet.writeByte(this.currentWireConnections); - packet.writeByte(this.currentAcceptorConnections); - } + @Override + public void writeDesc(MCDataOutput packet) + { + super.writeDesc(packet); + packet.writeByte(this.currentWireConnections); + packet.writeByte(this.currentAcceptorConnections); + } - @Override - public void read(MCDataInput packet) - { - read(packet, packet.readUByte()); - } + @Override + public void read(MCDataInput packet) + { + read(packet, packet.readUByte()); + } - @Override - public void read(MCDataInput packet, int packetID) - { - if (packetID == 0) - { - this.currentWireConnections = packet.readByte(); - this.currentAcceptorConnections = packet.readByte(); - tile().markRender(); - } - else - { - super.read(packet, packetID); - } - } + @Override + public void read(MCDataInput packet, int packetID) + { + if (packetID == 0) + { + this.currentWireConnections = packet.readByte(); + this.currentAcceptorConnections = packet.readByte(); + tile().markRender(); + } + else + { + super.read(packet, packetID); + } + } - /** Network Methods */ - @Override - public void setNetwork(N network) - { - this.network = network; - } + /** Network Methods */ + @Override + public void setNetwork(N network) + { + this.network = network; + } - @Override - public IConnector getInstance(ForgeDirection dir) - { - return this; - } + @Override + public IConnector getInstance(ForgeDirection dir) + { + return this; + } + + @Override + public String toString() + { + return "[PartFramedConnection]" + x() + "x " + y() + "y " + z() + "z " + getSlotMask() + "s "; + } } \ No newline at end of file From e3260ef2e1adc88c81274798bf1003f97322ba62 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 4 May 2014 03:18:13 -0400 Subject: [PATCH 111/144] Created the start of a mining laser gun, pulled from old assembly line mod --- .../electrical/ClientProxy.java | 3 + .../electrical/Electrical.java | 7 +- .../electrical/laser/gun/ItemMiningLaser.java | 234 +++++++++++++++ .../electrical/laser/gun/RayTraceHelper.java | 278 ++++++++++++++++++ .../laser/gun/RenderMiningLaserGun.java | 81 +++++ .../models/MiningLaserGun.tcn | Bin 0 -> 1924 bytes .../resonantinduction/core/ClientProxy.java | 18 +- .../resonantinduction/core/CommonProxy.java | 43 +-- 8 files changed, 645 insertions(+), 19 deletions(-) create mode 100644 electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java create mode 100644 electrical/src/main/scala/resonantinduction/electrical/laser/gun/RayTraceHelper.java create mode 100644 electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java create mode 100644 src/main/resources/assets/resonantinduction/models/MiningLaserGun.tcn diff --git a/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java b/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java index 0813c8f4a..5b16c37d8 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java +++ b/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java @@ -3,12 +3,14 @@ package resonantinduction.electrical; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import net.minecraftforge.client.MinecraftForgeClient; import resonantinduction.electrical.battery.RenderBattery; import resonantinduction.electrical.battery.TileBattery; import resonantinduction.electrical.charger.RenderCharger; import resonantinduction.electrical.encoder.TileEncoder; import resonantinduction.electrical.encoder.gui.GuiEncoderInventory; import resonantinduction.electrical.generator.solar.TileSolarPanel; +import resonantinduction.electrical.laser.gun.RenderMiningLaserGun; import resonantinduction.electrical.levitator.RenderLevitator; import resonantinduction.electrical.multimeter.GuiMultimeter; import resonantinduction.electrical.multimeter.PartMultimeter; @@ -40,6 +42,7 @@ public class ClientProxy extends CommonProxy GlobalItemRenderer.register(Electrical.itemCharger.itemID, RenderCharger.INSTANCE); GlobalItemRenderer.register(Electrical.itemLevitator.itemID, RenderLevitator.INSTANCE); GlobalItemRenderer.register(Electrical.itemQuantumGlyph.itemID, RenderQuantumGlyph.INSTANCE); + MinecraftForgeClient.registerItemRenderer(Electrical.itemLaserGun.itemID, new RenderMiningLaserGun()); ClientRegistry.bindTileEntitySpecialRenderer(TileTesla.class, new RenderTesla()); ClientRegistry.bindTileEntitySpecialRenderer(TileBattery.class, new RenderBattery()); } diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index 99bf01e05..4a1397db0 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -22,6 +22,7 @@ import resonantinduction.electrical.generator.solar.TileSolarPanel; import resonantinduction.electrical.generator.thermopile.BlockThermopile; import resonantinduction.electrical.generator.thermopile.TileThermopile; import resonantinduction.electrical.itemrailing.ItemItemRailing; +import resonantinduction.electrical.laser.gun.ItemMiningLaser; import resonantinduction.electrical.levitator.ItemLevitator; import resonantinduction.electrical.multimeter.ItemMultimeter; import resonantinduction.electrical.tesla.BlockTesla; @@ -79,7 +80,7 @@ public class Electrical public static Item itemCharger; public static Block blockTesla; public static Block blockBattery; - public static Block blockEncoder; + public static Block blockEncoder; // Railings public static Item itemRailing; @@ -99,6 +100,9 @@ public class Electrical public static Block blockQuantumGate; public static Item itemQuantumGlyph; + // Tools + public static Item itemLaserGun; + public ProxyHandler modproxies; @EventHandler @@ -123,6 +127,7 @@ public class Electrical // blockEncoder = contentRegistry.createTile(BlockEncoder.cass); // itemDisk = contentRegistry.createItem(ItemDisk.class); itemInsulation = contentRegistry.createItem("insulation", ItemResourcePart.class); + itemLaserGun = contentRegistry.createItem("laserDrill", ItemMiningLaser.class); // Generator blockSolarPanel = contentRegistry.newBlock(TileSolarPanel.class); diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java new file mode 100644 index 000000000..037c6660c --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -0,0 +1,234 @@ +package resonantinduction.electrical.laser.gun; + +import java.awt.Color; +import java.util.HashMap; +import java.util.List; + +import resonantinduction.core.ResonantInduction; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumMovingObjectType; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.common.MinecraftForge; +import universalelectricity.api.item.ItemElectric; +import universalelectricity.api.vector.IVector3; +import universalelectricity.api.vector.Vector3; +import calclavia.api.resonantinduction.electrical.LaserEvent; +import calclavia.lib.type.Pair; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +/** Stream laser mining tool, When held down it will slowly mine away at the block in front of it. + * + * + * TODO create model for this that is 3D. The front should spin around the barrel as its mines + * generating a laser. As well the player should be wearing a battery pack when the laser is out. + * Other option is to force the player to wear a battery pack as armor when using the tool + * + * TODO when the laser hits the block there should be a flaring effect that simi blinds the player. + * That way they are force to wear wielding googles. As well this will gear the player more towards + * mining and less to fighting. Though the laser should still be a very effect fighting weapon, with + * only down side being its battery, and that it slows you down when held. Eg its a heavy peace of + * mining gear and the player will be simi-stationary when using it + * + * @author DarkGuardsman */ +public class ItemMiningLaser extends ItemElectric +{ + long batterySize = 100000; + float wattPerShot = 1; + float damageToEntities = 3.3f; + int blockRange = 50; + int firingDelay = 5; + int breakTime = 15; + boolean createLava = true, setFire = true; + + HashMap> miningMap = new HashMap>(); + + public ItemMiningLaser(int id) + { + super(id); + this.setUnlocalizedName("MiningLaser"); + this.setMaxStackSize(1); + this.setCreativeTab(CreativeTabs.tabTools); + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) + { + return EnumAction.bow; + } + + @Override + public int getMaxItemUseDuration(ItemStack par1ItemStack) + { + //TODO change render of the laser too show it slowly over heat, when it over heats eg gets to max use damage the player, and tool + return 1000; + } + + @Override + public void onUpdate(ItemStack itemStack, World par2World, Entity entity, int par4, boolean par5) + { + //Slow any entity that carries this down as a side effect of using heavy mining gear + if (entity instanceof EntityLivingBase) + { + boolean flag = entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode; + + if (!flag) + { + ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 5, 0)); + } + else + { + //((EntityPlayer) entity).setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); + } + } + } + + @Override + public void onCreated(ItemStack stack, World par2World, EntityPlayer entityPlayer) + { + this.setEnergy(stack, 0); + if (stack.getTagCompound() == null) + { + stack.setTagCompound(new NBTTagCompound()); + } + if (entityPlayer != null) + { + stack.getTagCompound().setString("Creator", entityPlayer.username); + } + } + + @Override + public void onUsingItemTick(ItemStack stack, EntityPlayer player, int count) + { + if (count > 5) + { + Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight(), player.posZ); + Vec3 playerLook = RayTraceHelper.getLook(player, 1.0f); + Vec3 p = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord, playerPosition.yCoord + playerLook.yCoord, playerPosition.zCoord + playerLook.zCoord); + + Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * blockRange, playerPosition.yCoord + playerLook.yCoord * blockRange, playerPosition.zCoord + playerLook.zCoord * blockRange); + MovingObjectPosition hit = RayTraceHelper.do_rayTraceFromEntity(player, new Vector3().toVec3(), blockRange, true); + + //TODO fix sound + if (hit != null) + { + LaserEvent event = new LaserEvent.LaserFiredPlayerEvent(player, hit, stack); + MinecraftForge.EVENT_BUS.post(event); + if (!player.worldObj.isRemote && !event.isCanceled()) + { + if (hit.typeOfHit == EnumMovingObjectType.ENTITY && hit.entityHit != null) + { + //TODO re-implements laser damage source + DamageSource damageSource = DamageSource.causeMobDamage(player); + hit.entityHit.attackEntityFrom(damageSource, damageToEntities); + hit.entityHit.setFire(5); + } + else if (hit.typeOfHit == EnumMovingObjectType.TILE) + { + int time = 1; + boolean mined = false; + if (miningMap.containsKey(player)) + { + Pair lastHit = miningMap.get(player); + if (lastHit != null && lastHit.left() != null && lastHit.left().equals(new Vector3(hit))) + { + time = lastHit.right() + 1; + if (time >= breakTime) + { + + LaserEvent.onBlockMinedByLaser(player.worldObj, player, new Vector3(hit)); + mined = true; + miningMap.remove(player); + } + else + { + //TODO get the actual hit side from the angle of the ray trace + LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); + } + } + } + if (!mined) + { + miningMap.put(player, new Pair(new Vector3(hit), time)); + } + } + + } + playerViewOffset = hit.hitVec; + } + //TODO make beam brighter the longer it has been used + //TODO adjust the laser for the end of the gun + float x = (float) (MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.4) - MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); + float z = (float) (MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.4) + MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3)new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3)new Vector3(playerViewOffset), Color.ORANGE, 1); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3)new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3)new Vector3(playerViewOffset), Color.ORANGE, 1); + } + + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World par2World, EntityPlayer player) + { + if (player.capabilities.isCreativeMode || this.getEnergy(itemStack) > this.wattPerShot) + { + player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); + } + return itemStack; + } + + @Override + public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer player, int par4) + { + if (miningMap.containsKey(player)) + { + miningMap.remove(player); + } + } + + @Override + public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) + { + return par1ItemStack; + } + + @SideOnly(Side.CLIENT) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) + { + super.addInformation(stack, player, list, par4); + if (stack.getTagCompound() == null) + { + stack.setTagCompound(new NBTTagCompound()); + } + String creator = stack.getTagCompound().getString("Creator"); + if (!creator.equalsIgnoreCase("creative") && creator != "") + { + list.add("Created by: " + creator); + } + else if (creator.equalsIgnoreCase("creative")) + { + list.add("Created by Magic Dwarfs"); + } + + } + + @Override + public long getEnergyCapacity(ItemStack theItem) + { + return this.batterySize; + } + +} diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RayTraceHelper.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RayTraceHelper.java new file mode 100644 index 000000000..23a42dc62 --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RayTraceHelper.java @@ -0,0 +1,278 @@ +package resonantinduction.electrical.laser.gun; + +import java.util.List; + +import net.minecraft.entity.Entity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import universalelectricity.api.vector.Vector3; + +public class RayTraceHelper +{ + public static MovingObjectPosition raytraceEntities_fromAnEntity(World world, Entity entity, Vec3 error, double reachDistance, boolean collisionFlag) + { + + MovingObjectPosition pickedEntity = null; + Vec3 playerPosition = Vec3.createVectorHelper(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ); + Vec3 playerLook = entity.getLookVec(); + + Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * reachDistance + error.xCoord, playerPosition.yCoord + playerLook.yCoord * reachDistance + error.yCoord, playerPosition.zCoord + playerLook.zCoord * reachDistance + error.zCoord); + + double playerBorder = 1.1 * reachDistance; + AxisAlignedBB boxToScan = entity.boundingBox.expand(playerBorder, playerBorder, playerBorder); + + List entitiesHit = world.getEntitiesWithinAABBExcludingEntity(entity, boxToScan); + double closestEntity = reachDistance; + + if (entitiesHit == null || entitiesHit.isEmpty()) + { + return null; + } + for (Entity entityHit : entitiesHit) + { + if (entityHit != null && entityHit.canBeCollidedWith() && entityHit.boundingBox != null) + { + float border = entityHit.getCollisionBorderSize(); + AxisAlignedBB aabb = entityHit.boundingBox.expand(border, border, border); + MovingObjectPosition hitMOP = aabb.calculateIntercept(playerPosition, playerViewOffset); + + if (hitMOP != null) + { + if (aabb.isVecInside(playerPosition)) + { + if (0.0D < closestEntity || closestEntity == 0.0D) + { + pickedEntity = new MovingObjectPosition(entityHit); + if (pickedEntity != null) + { + pickedEntity.hitVec = hitMOP.hitVec; + closestEntity = 0.0D; + } + } + } + else + { + double distance = playerPosition.distanceTo(hitMOP.hitVec); + + if (distance < closestEntity || closestEntity == 0.0D) + { + pickedEntity = new MovingObjectPosition(entityHit); + pickedEntity.hitVec = hitMOP.hitVec; + closestEntity = distance; + } + } + } + } + } + return pickedEntity; + } + + @SuppressWarnings("unchecked") + public static MovingObjectPosition raytraceEntities(World world, Vec3 start, Vec3 end, double range, boolean collisionFlag, Entity exclude) + { + AxisAlignedBB boxToScan = AxisAlignedBB.getBoundingBox(start.xCoord, start.yCoord, start.zCoord, end.xCoord, end.yCoord, end.zCoord); + List entitiesHit = null; + if (exclude != null) + { + entitiesHit = world.getEntitiesWithinAABBExcludingEntity(exclude, boxToScan); + } + else + { + entitiesHit = world.getEntitiesWithinAABB(Entity.class, boxToScan); + } + MovingObjectPosition pickedEntity = null; + double closestEntity = range; + + if (entitiesHit == null || entitiesHit.isEmpty()) + { + return null; + } + for (Entity entityHit : entitiesHit) + { + if (entityHit != null && entityHit.canBeCollidedWith() && entityHit.boundingBox != null) + { + float border = entityHit.getCollisionBorderSize(); + AxisAlignedBB aabb = entityHit.boundingBox.expand(border, border, border); + MovingObjectPosition hitMOP = aabb.calculateIntercept(start, end); + + if (hitMOP != null) + { + if (aabb.isVecInside(start)) + { + if (0.0D < closestEntity || closestEntity == 0.0D) + { + pickedEntity = new MovingObjectPosition(entityHit); + if (pickedEntity != null) + { + pickedEntity.hitVec = hitMOP.hitVec; + closestEntity = 0.0D; + } + } + } + else + { + double distance = start.distanceTo(hitMOP.hitVec); + + if (distance < closestEntity || closestEntity == 0.0D) + { + pickedEntity = new MovingObjectPosition(entityHit); + pickedEntity.hitVec = hitMOP.hitVec; + closestEntity = distance; + } + } + } + } + } + return pickedEntity; + } + + public static MovingObjectPosition raytraceBlocks_fromAnEntity(World world, Entity entity, Vec3 error, double reachDistance, boolean collisionFlag) + { + Vec3 playerPosition = Vec3.createVectorHelper(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ); + Vec3 playerLook = entity.getLookVec(); + + Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * reachDistance + error.xCoord, playerPosition.yCoord + playerLook.yCoord * reachDistance + error.yCoord, playerPosition.zCoord + playerLook.zCoord * reachDistance + error.zCoord); + return raytraceBlocks(world, playerPosition, playerViewOffset, collisionFlag); + } + + public static MovingObjectPosition raytraceBlocks_fromAnEntity(World world, Entity entity, double reachDistance, boolean collisionFlag) + { + Vec3 playerPosition = Vec3.createVectorHelper(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ); + Vec3 playerLook = entity.getLookVec(); + + Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * reachDistance, playerPosition.yCoord + playerLook.yCoord * reachDistance, playerPosition.zCoord + playerLook.zCoord * reachDistance); + return raytraceBlocks(world, playerPosition, playerViewOffset, collisionFlag); + } + + public static MovingObjectPosition raytraceBlocks(World world, Vec3 start, Vec3 end, boolean collisionFlag) + { + return world.rayTraceBlocks_do_do(start, end, collisionFlag, !collisionFlag); + } + + public static Vector3 getPosFromRotation(final Vector3 center, float reachDistance, float yaw, float pitch) + { + return center.clone().translate(getLook(yaw, pitch, 1.0F).scale(reachDistance)); + } + + /** Does a ray trace from start to end vector + * + * @param world - world to do the ray trace in + * @param start - starting point clear of any collisions from its caster + * @param end - end point + * @param collisionFlag + * @return */ + public static MovingObjectPosition ray_trace_do(final World world, final Vec3 start, final Vec3 end, final float range, boolean collisionFlag) + { + MovingObjectPosition hitBlock = raytraceBlocks(world, new Vector3(start).toVec3(), new Vector3(end).toVec3(), collisionFlag); + MovingObjectPosition hitEntity = raytraceEntities(world, start, end, range, collisionFlag, null); + if (hitEntity == null) + { + return hitBlock; + } + else if (hitBlock == null) + { + return hitEntity; + } + else + { + if (hitEntity.hitVec.distanceTo(start) < hitBlock.hitVec.distanceTo(start)) + { + return hitEntity; + } + else + { + return hitBlock; + } + } + } + + /** Does a ray trace from an entities look angle out to a set distance from the entity + * + * @param entity - entity who's view angles will be used for finding the start and end points of + * the ray + * @param e - error(or adjustments) to add to it if this ray is being used for weapon + * calculations + * @param reachDistance - distance the ray will extend to + * @param collisionFlag + * @return */ + public static MovingObjectPosition do_rayTraceFromEntity(Entity entity, Vec3 e, double reachDistance, boolean collisionFlag) + { + + MovingObjectPosition hitBlock = raytraceBlocks_fromAnEntity(entity.worldObj, entity, e, reachDistance, collisionFlag); + MovingObjectPosition hitEntity = raytraceEntities_fromAnEntity(entity.worldObj, entity, e, reachDistance, collisionFlag); + if (hitEntity == null) + { + return hitBlock; + } + else if (hitBlock == null) + { + return hitEntity; + } + else + { + Vec3 playerPosition = Vec3.createVectorHelper(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ); + if (hitEntity.hitVec.distanceTo(playerPosition) < hitBlock.hitVec.distanceTo(playerPosition)) + { + return hitEntity; + } + else + { + return hitBlock; + } + } + } + + public static Vec3 getLook(Entity entity, float par1) + { + float f1; + float f2; + float f3; + float f4; + + if (par1 == 1.0F) + { + f1 = MathHelper.cos(-entity.rotationYaw * 0.017453292F - (float) Math.PI); + f2 = MathHelper.sin(-entity.rotationYaw * 0.017453292F - (float) Math.PI); + f3 = -MathHelper.cos(-entity.rotationPitch * 0.017453292F); + f4 = MathHelper.sin(-entity.rotationPitch * 0.017453292F); + return entity.worldObj.getWorldVec3Pool().getVecFromPool((f2 * f3), f4, (f1 * f3)); + } + else + { + f1 = entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * par1; + f2 = entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * par1; + f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); + f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); + float f5 = -MathHelper.cos(-f1 * 0.017453292F); + float f6 = MathHelper.sin(-f1 * 0.017453292F); + return entity.worldObj.getWorldVec3Pool().getVecFromPool((f4 * f5), f6, (f3 * f5)); + } + } + + public static Vector3 getLook(float yaw, float pitch, float distance) + { + float f1, f2, f3, f4; + + if (distance == 1.0F) + { + f1 = MathHelper.cos(-yaw * 0.017453292F - (float) Math.PI); + f2 = MathHelper.sin(-yaw * 0.017453292F - (float) Math.PI); + f3 = -MathHelper.cos(-pitch * 0.017453292F); + f4 = MathHelper.sin(-pitch * 0.017453292F); + return new Vector3((f2 * f3), f4, (f1 * f3)); + } + else + { + f1 = pitch * distance; + f2 = yaw * distance; + f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); + f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); + float f5 = -MathHelper.cos(-f1 * 0.017453292F); + float f6 = MathHelper.sin(-f1 * 0.017453292F); + return new Vector3((f4 * f5), f6, (f3 * f5)); + } + } +} diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java new file mode 100644 index 000000000..a77de651f --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java @@ -0,0 +1,81 @@ +package resonantinduction.electrical.laser.gun; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +import org.lwjgl.opengl.GL11; + +import resonantinduction.core.Reference; + +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +@SideOnly(Side.CLIENT) +public class RenderMiningLaserGun implements IItemRenderer +{ + public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "MiningLaserGun.tcn"); + private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "LaserGun.png"); + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) + { + return true; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) + { + return true; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) + { + GL11.glPushMatrix(); + + FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE); + + if (type == ItemRenderType.EQUIPPED_FIRST_PERSON) + { + float scale = 5f; + + if (Minecraft.getMinecraft().thePlayer.getItemInUse() != item) + { + GL11.glScalef(scale, scale, scale); + GL11.glTranslatef(0.2f, 0.2f, 0.67f); + GL11.glRotatef(-40, 0, 1, 0); + GL11.glRotatef(10, 1, 0, 0); + } + else + { + GL11.glScalef(scale, scale, scale); + GL11.glTranslatef(0.2f, 0.2f, 0.67f); + GL11.glRotatef(-40, 0, 1, 0); + GL11.glRotatef(20, 1, 0, 0); + } + } + else if (type == ItemRenderType.EQUIPPED) + { + float scale = 3f; + GL11.glScalef(scale, scale, scale); + GL11.glRotatef(-80, 1, 0, 0); + GL11.glRotatef(60, 0, 1, 0); + GL11.glRotatef(20, 0, 0, 1); + GL11.glTranslatef(0f, 0f, 0.6f); + } + else if (type == ItemRenderType.INVENTORY) + { + float scale = 1.5f; + GL11.glScalef(scale, scale, scale); + GL11.glTranslatef(0.1f, 0.06f, 0.52f); + } + MODEL.renderAll(); + + GL11.glPopMatrix(); + } +} diff --git a/src/main/resources/assets/resonantinduction/models/MiningLaserGun.tcn b/src/main/resources/assets/resonantinduction/models/MiningLaserGun.tcn new file mode 100644 index 0000000000000000000000000000000000000000..37a9c1faefa7faf9984391178fbaea4b2f2eed24 GIT binary patch literal 1924 zcmbW2c`zG@9>?Qs9bI}5vDMIeQM-xjJZ-Yx{;@N!GjHa-H^2G)zVn^=&G*00eBllfl4k$_ zz;OU1E%cjAwCe0J2>?J*69A9_XaX=eBq~&ohzXSis2@E60Ac_YK;}H{`aXL^>~r17 zzm20p&m;)6HY{!0jTEUg8$uQxu@OC1cdG_HS0JaQeL8jkHc$7pWWuG` z_y}KtW&iptv@333BXQP!5p|2B6&^q#?F#2Z?VNsJE?FFlnjx1uV&3XP-|NeSyqU3eozQx@##!BERT#N5!y#XmU0X(GH9&Vi z+|O;Uo4|5dyt?!WI%h5S@4xTdTD;6g!tLZVMVxnPZR|S{-8{F}#EtwOFI@o#(-mA^ zP>^g!8~w>Aho=azhel5z{c!Cg!fOjmpVKRi!kuu@2d;Xo#~iypkVs zb2Yd&VL4UhtmK2nf+)e4nxd#@X{=US@?1E-{X44+Q@QdO!@7hKa_f9+lkF1ml|QhbrS zS4-?Qy+CHI)JugV+tvrnSp<5ne*A2}$kem3NyTbVO}Nz<82)cWJv(MamN_D-@n}yS z5p~TUi?olx-bE4bMi5YXVc4Mm1}(n)Ryc3<$#Q_7-{Nn(VKPT5X#i4%&BSmhbxiA1 zsV}WJ9p(8WzjjIzJl?52Py?wL?S+fJMM`a($Xz-A7^JeF9s^x*#aN)Fr2~zffUh%C z+FGMdG{>JtrIW8jLU;S-sms6sUkl;~K9)=ggy$M z_GQq?;~o6;LJN8EAdZShYV5KW!v<;4^?na|C1+qFv-neC))L+zvyljiWB)UVAIBYV zViF(3Jru3yxTF`c0293aVrX1%Z%m^`Z1Pg^tVO+o=uK-Sc-9Mz=gwD5%11?onVd!W z!-#34{`|`A8O9uqkJO)$Gi+d`2f!T|-Fcp+YVX^;Zzu5AC^!R06M5G=7j9>6rIV~v zR3+?ZK)G_vYyz%mHTq`T9&FH#lxgN^)Yf?>aG#*~^F*CT_R>oe^|<(wWJ;{%Xnz<1<1W}|hG=U#;C@R&MBW?tu;poq-rE&!cTKgWq(y6GM)LBhqh&~lP zJ`Ay(s(s*lh1zV5hrHzqLQRaFoxi`K67EPUDC}uczqF8w*RX`%WkdV=KvZ&;CjIN- zbDi?@K3FtLf2R)NC-zv?yBrg@-gx^Tz-~9(zQu=&>6sT^$tKy1?EK~()$LPfS{Qln zQ^|Bmn%QVy8f&OqWA-EY!#0C}`>rzP{MT!R&wJ9xIUem<83OS4t~%2#X5Rh|RwnPp zCr42QE>}+j;0|Kqx`6*&Sbvt(U*~_Sug{}DC-<*Zfb$W{{~yP22Px@)<%k~*<49?L Gx<3Gz*qPA) literal 0 HcmV?d00001 diff --git a/src/main/scala/resonantinduction/core/ClientProxy.java b/src/main/scala/resonantinduction/core/ClientProxy.java index a9b5fe4ab..13f1dfec5 100644 --- a/src/main/scala/resonantinduction/core/ClientProxy.java +++ b/src/main/scala/resonantinduction/core/ClientProxy.java @@ -1,12 +1,16 @@ package resonantinduction.core; +import java.awt.Color; + import net.minecraft.block.Block; import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.particle.EntityDiggingFX; import net.minecraft.client.particle.EntityFX; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; +import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; +import calclavia.lib.render.fx.FxLaser; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -49,7 +53,7 @@ public class ClientProxy extends CommonProxy @Override public void renderBlockParticle(World world, Vector3 position, Vector3 velocity, int blockID, float scale) { - this.renderBlockParticle(world, position.x, position.y, position.z, velocity, blockID, scale); + this.renderBlockParticle(world, position.x, position.y, position.z, velocity, blockID, scale); } @Override @@ -61,4 +65,16 @@ public class ClientProxy extends CommonProxy FMLClientHandler.instance().getClient().effectRenderer.addEffect(fx); } + @Override + public void renderBeam(World world, IVector3 position, IVector3 hit, Color color, int age) + { + renderBeam(world, position, hit, color.getRed(), color.getGreen(), color.getBlue(), age); + } + + @Override + public void renderBeam(World world, IVector3 position, IVector3 target, float red, float green, float blue, int age) + { + FMLClientHandler.instance().getClient().effectRenderer.addEffect(new FxLaser(world, position, target, red, green, blue, age)); + } + } diff --git a/src/main/scala/resonantinduction/core/CommonProxy.java b/src/main/scala/resonantinduction/core/CommonProxy.java index 8da100814..dcffc66de 100644 --- a/src/main/scala/resonantinduction/core/CommonProxy.java +++ b/src/main/scala/resonantinduction/core/CommonProxy.java @@ -3,34 +3,43 @@ */ package resonantinduction.core; +import java.awt.Color; + import net.minecraft.world.World; +import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; import calclavia.lib.prefab.ProxyBase; -/** - * @author Calclavia - * - */ +/** @author Calclavia */ public class CommonProxy extends ProxyBase { - public boolean isPaused() - { - return false; - } + public boolean isPaused() + { + return false; + } - public boolean isGraphicsFancy() - { - return false; - } + public boolean isGraphicsFancy() + { + return false; + } - public void renderBlockParticle(World world, double x, double y, double z, Vector3 velocity, int blockID, float scale) + public void renderBlockParticle(World world, double x, double y, double z, Vector3 velocity, int blockID, float scale) { } - - public void renderBlockParticle(World world, Vector3 position, Vector3 velocity, int blockID, float scale) - { - } + public void renderBlockParticle(World world, Vector3 position, Vector3 velocity, int blockID, float scale) + { + + } + + public void renderBeam(World world, IVector3 position, IVector3 hit, Color color, int age) + { + } + + public void renderBeam(World world, IVector3 position, IVector3 target, float red, float green, float blue, int age) + { + + } } From e751c1f9b0998a46f217f2a5f564dc99c3a0874e Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 4 May 2014 05:19:58 -0400 Subject: [PATCH 112/144] Laser gun texture --- .../assets/resonantinduction/models/LaserGun.png | Bin 0 -> 945 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/assets/resonantinduction/models/LaserGun.png diff --git a/src/main/resources/assets/resonantinduction/models/LaserGun.png b/src/main/resources/assets/resonantinduction/models/LaserGun.png new file mode 100644 index 0000000000000000000000000000000000000000..6530c640e3562ab7f45379cac8451fda1c41ff56 GIT binary patch literal 945 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58aUX1(0r%1aer?9eo`c z7&i8E|4C#8@;M7UB8wRq_>O=u<5X=vX$A&nH%}MGkczmscMY?J6J?HnJa#bj!rhzV z7h+#Nc=2SlMo@_^2kXMsu1nS*I(gBtX#aWkzIzv@ zZMpFN^ZVlIDW85FzW%ydG-i&>)%0%P{r;G}EXsIz= zJ#~NEukf(HHVfu*GBk;9XWyWmYaf4k-~T-UhKvpyelUb+*I&Q7f783`j-EaY0%znH zSd4+XlQDpWFb{ z=fj{dgTcXou_1wp;h@<*t`Gmpx2GT3TWN9T-KNzHcXx0(9A#lRc#Y3t>!4BVCa2j(I_f8Ushz8I}v%lyYyM z<$6)L_BhK%d5}9+WR3$v}TV3T%Lf*$jNFWAKyR5s93ITceuiq Q0J9l`r>mdKI;Vst0Lutya{vGU literal 0 HcmV?d00001 From 23a910a0509794e2127f80c6452a012c9472ea1d Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 4 May 2014 06:46:05 -0400 Subject: [PATCH 113/144] Laser now shows breaking animation --- .../electrical/laser/gun/ItemMiningLaser.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 037c6660c..6aca5d2e8 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -87,7 +87,7 @@ public class ItemMiningLaser extends ItemElectric if (!flag) { - ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 5, 0)); + //((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 5, 0)); } else { @@ -151,12 +151,14 @@ public class ItemMiningLaser extends ItemElectric LaserEvent.onBlockMinedByLaser(player.worldObj, player, new Vector3(hit)); mined = true; + player.worldObj.destroyBlockInWorldPartially(0, hit.blockX, hit.blockY, hit.blockZ, -1); miningMap.remove(player); } else { //TODO get the actual hit side from the angle of the ray trace LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); + player.worldObj.destroyBlockInWorldPartially(0, hit.blockX, hit.blockY, hit.blockZ, time); } } } From 429cb6b8cd6cf3ec0ccc72fbb62828680ac701c1 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 4 May 2014 08:30:22 -0400 Subject: [PATCH 114/144] Clean up on laser code, and texture fix for laser gun --- .../electrical/laser/gun/ItemMiningLaser.java | 33 ++++++++++--------- .../laser/gun/RenderMiningLaserGun.java | 2 +- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 6aca5d2e8..9e9ccfe19 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; import resonantinduction.core.ResonantInduction; +import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -145,20 +146,22 @@ public class ItemMiningLaser extends ItemElectric Pair lastHit = miningMap.get(player); if (lastHit != null && lastHit.left() != null && lastHit.left().equals(new Vector3(hit))) { - time = lastHit.right() + 1; - if (time >= breakTime) + Block b = Block.blocksList[player.worldObj.getBlockId(hit.blockX, hit.blockY, hit.blockZ)]; + if (b != null && b.getBlockHardness(player.worldObj, hit.blockX, hit.blockY, hit.blockZ) > -1) { - - LaserEvent.onBlockMinedByLaser(player.worldObj, player, new Vector3(hit)); - mined = true; - player.worldObj.destroyBlockInWorldPartially(0, hit.blockX, hit.blockY, hit.blockZ, -1); - miningMap.remove(player); - } - else - { - //TODO get the actual hit side from the angle of the ray trace - LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); - player.worldObj.destroyBlockInWorldPartially(0, hit.blockX, hit.blockY, hit.blockZ, time); + time = lastHit.right() + 1; + if (time >= breakTime) + { + LaserEvent.onBlockMinedByLaser(player.worldObj, player, new Vector3(hit)); + mined = true; + miningMap.remove(player); + } + else + { + //TODO get the actual hit side from the angle of the ray trace + LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); + player.worldObj.destroyBlockInWorldPartially(0, hit.blockX, hit.blockY, hit.blockZ, time); + } } } } @@ -175,8 +178,8 @@ public class ItemMiningLaser extends ItemElectric //TODO adjust the laser for the end of the gun float x = (float) (MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.4) - MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); float z = (float) (MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.4) + MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); - ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3)new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3)new Vector3(playerViewOffset), Color.ORANGE, 1); - ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3)new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3)new Vector3(playerViewOffset), Color.ORANGE, 1); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java index a77de651f..3584b7916 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java @@ -19,7 +19,7 @@ import cpw.mods.fml.relauncher.SideOnly; public class RenderMiningLaserGun implements IItemRenderer { public static final IModelCustom MODEL = AdvancedModelLoader.loadModel(Reference.MODEL_DIRECTORY + "MiningLaserGun.tcn"); - private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_DIRECTORY + "LaserGun.png"); + private static final ResourceLocation TEXTURE = new ResourceLocation(Reference.DOMAIN, Reference.MODEL_PATH + "LaserGun.png"); @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) From 96edeae5c7bbcab90001a6826b265f3eff37f952 Mon Sep 17 00:00:00 2001 From: Robert S Date: Sun, 4 May 2014 09:12:07 -0400 Subject: [PATCH 115/144] Added recipe for laser gun --- .../main/scala/resonantinduction/electrical/Electrical.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index 4a1397db0..3e65c3e47 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -221,6 +221,9 @@ public class Electrical GameRegistry.addRecipe(new ShapedOreRecipe(blockMotor, "SRS", "SMS", "SWS", 'W', "wire", 'R', Item.redstone, 'M', Block.blockIron, 'S', UniversalRecipe.PRIMARY_METAL.get())); GameRegistry.addRecipe(new ShapedOreRecipe(blockThermopile, "ORO", "OWO", "OOO", 'W', "wire", 'O', Block.obsidian, 'R', Item.redstone)); + + GameRegistry.addRecipe(new ShapedOreRecipe(itemLaserGun, "RDR", "RDR", "ICB", 'R', Item.redstone, 'D', Item.diamond, 'I', Item.ingotGold, 'C', UniversalRecipe.CIRCUIT_T2.get(), 'B', ItemBlockBattery.setTier(new ItemStack(blockBattery, 1, 0), (byte) 0))); + /** Wire Compatiblity **/ if (Loader.isModLoaded("IC2")) { From 3ba57bf4704bda8c4afb5453f50c7a605111aa74 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 01:06:15 -0400 Subject: [PATCH 116/144] Added thermal version of laser gun as a test of thermal grid --- .../archaic/firebox/TileFirebox.java | 4 +- .../laser/gun/ItemThermalLaser.java | 136 ++++++++++++++++++ 2 files changed, 138 insertions(+), 2 deletions(-) create mode 100644 electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java diff --git a/archaic/src/main/scala/resonantinduction/archaic/firebox/TileFirebox.java b/archaic/src/main/scala/resonantinduction/archaic/firebox/TileFirebox.java index 5240dc4d7..6ee7e3329 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/firebox/TileFirebox.java +++ b/archaic/src/main/scala/resonantinduction/archaic/firebox/TileFirebox.java @@ -143,7 +143,7 @@ public class TileFirebox extends TileElectricalInventory implements IPacketRecei { if (FluidRegistry.getFluid("steam") != null) { - MinecraftForge.EVENT_BUS.post(new BoilEvent(worldObj, new Vector3(this).translate(0, 1, 0), new FluidStack(FluidRegistry.WATER, volume), new FluidStack(FluidRegistry.getFluid("steam"), volume), 2)); + MinecraftForge.EVENT_BUS.post(new BoilEvent(worldObj, new Vector3(this).translate(0, 1, 0), new FluidStack(FluidRegistry.WATER, volume), new FluidStack(FluidRegistry.getFluid("steam"), volume), 2, false)); boiledVolume += volume; } @@ -168,7 +168,7 @@ public class TileFirebox extends TileElectricalInventory implements IPacketRecei { if (FluidRegistry.getFluid("steam") != null) { - MinecraftForge.EVENT_BUS.post(new BoilEvent(worldObj, new Vector3(this).translate(0, 1, 0), new FluidStack(FluidRegistry.WATER, volume), new FluidStack(FluidRegistry.getFluid("steam"), volume), 2)); + MinecraftForge.EVENT_BUS.post(new BoilEvent(worldObj, new Vector3(this).translate(0, 1, 0), new FluidStack(FluidRegistry.WATER, volume), new FluidStack(FluidRegistry.getFluid("steam"), volume), 2, false)); ((TileGutter) tileEntity).drain(ForgeDirection.DOWN, volume, true); } diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java new file mode 100644 index 000000000..0f05bb359 --- /dev/null +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java @@ -0,0 +1,136 @@ +package resonantinduction.electrical.laser.gun; + +import java.awt.Color; +import java.util.HashMap; +import java.util.List; + +import resonantinduction.core.ResonantInduction; +import net.minecraft.block.Block; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumMovingObjectType; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.common.MinecraftForge; +import universalelectricity.api.item.ItemElectric; +import universalelectricity.api.vector.IVector3; +import universalelectricity.api.vector.Vector3; +import universalelectricity.api.vector.VectorWorld; +import calclavia.api.resonantinduction.electrical.LaserEvent; +import calclavia.lib.thermal.ThermalGrid; +import calclavia.lib.type.Pair; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +/** Version of the mining laser that uses the thermal grid to melt blocks down + * + * @author DarkGuardsman */ +public class ItemThermalLaser extends ItemElectric +{ + long batterySize = 100000; + float wattPerShot = 1; + float damageToEntities = 3.3f; + int blockRange = 50; + int firingDelay = 5; + int breakTime = 15; + boolean createLava = true, setFire = true; + + public ItemThermalLaser(int id) + { + super(id); + this.setUnlocalizedName("MiningLaser"); + this.setMaxStackSize(1); + this.setCreativeTab(CreativeTabs.tabTools); + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) + { + return EnumAction.bow; + } + + @Override + public int getMaxItemUseDuration(ItemStack par1ItemStack) + { + //TODO change render of the laser too show it slowly over heat, when it over heats eg gets to max use damage the player, and tool + return 1000; + } + + @Override + public void onUsingItemTick(ItemStack stack, EntityPlayer player, int count) + { + if (count > 5) + { + Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight(), player.posZ); + Vec3 playerLook = RayTraceHelper.getLook(player, 1.0f); + Vec3 p = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord, playerPosition.yCoord + playerLook.yCoord, playerPosition.zCoord + playerLook.zCoord); + + Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * blockRange, playerPosition.yCoord + playerLook.yCoord * blockRange, playerPosition.zCoord + playerLook.zCoord * blockRange); + MovingObjectPosition hit = RayTraceHelper.do_rayTraceFromEntity(player, new Vector3().toVec3(), blockRange, true); + + //TODO fix sound + if (hit != null) + { + LaserEvent event = new LaserEvent.LaserFiredPlayerEvent(player, hit, stack); + MinecraftForge.EVENT_BUS.post(event); + if (!player.worldObj.isRemote && !event.isCanceled()) + { + if (hit.typeOfHit == EnumMovingObjectType.ENTITY && hit.entityHit != null) + { + //TODO re-implements laser damage source + DamageSource damageSource = DamageSource.causeMobDamage(player); + hit.entityHit.attackEntityFrom(damageSource, damageToEntities); + hit.entityHit.setFire(5); + } + else if (hit.typeOfHit == EnumMovingObjectType.TILE) + { + ThermalGrid.addTemperature(new VectorWorld(player.worldObj, hit.blockX, hit.blockY, hit.blockZ), 100f); + } + + } + playerViewOffset = hit.hitVec; + } + //TODO make beam brighter the longer it has been used + //TODO adjust the laser for the end of the gun + float x = (float) (MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.4) - MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); + float z = (float) (MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.4) + MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); + } + + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World par2World, EntityPlayer player) + { + if (player.capabilities.isCreativeMode || this.getEnergy(itemStack) > this.wattPerShot) + { + player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); + } + return itemStack; + } + + @Override + public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) + { + return par1ItemStack; + } + + @Override + public long getEnergyCapacity(ItemStack theItem) + { + return this.batterySize; + } + +} From 0ef24f5f305cc38202f63aa191bf1c88b012352e Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 02:09:09 -0400 Subject: [PATCH 117/144] Made laser gun support other mods item charging --- .../resonantinduction/electrical/laser/gun/ItemMiningLaser.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 9e9ccfe19..9c09fe8eb 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -23,6 +23,7 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; +import universalelectricity.api.UniversalClass; import universalelectricity.api.item.ItemElectric; import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; @@ -45,6 +46,7 @@ import cpw.mods.fml.relauncher.SideOnly; * mining gear and the player will be simi-stationary when using it * * @author DarkGuardsman */ +@UniversalClass public class ItemMiningLaser extends ItemElectric { long batterySize = 100000; From 62bc34a1ba418aaad6135fb00b408209c0439088 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 02:55:14 -0400 Subject: [PATCH 118/144] changed default energy value of laser gun to match batter used to craft it --- .../resonantinduction/electrical/laser/gun/ItemMiningLaser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 9c09fe8eb..e0b784474 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -49,7 +49,7 @@ import cpw.mods.fml.relauncher.SideOnly; @UniversalClass public class ItemMiningLaser extends ItemElectric { - long batterySize = 100000; + long batterySize = 500000; float wattPerShot = 1; float damageToEntities = 3.3f; int blockRange = 50; From 15d96e35633b729e3f004c5863728acf78dd3ae1 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 15:21:21 -0400 Subject: [PATCH 119/144] Fixed harvesting animation staying after the laser was removed from the block --- .../electrical/laser/gun/ItemMiningLaser.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index e0b784474..9ace997de 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -162,7 +162,7 @@ public class ItemMiningLaser extends ItemElectric { //TODO get the actual hit side from the angle of the ray trace LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); - player.worldObj.destroyBlockInWorldPartially(0, hit.blockX, hit.blockY, hit.blockZ, time); + player.worldObj.destroyBlockInWorldPartially(player.entityId, hit.blockX, hit.blockY, hit.blockZ, time); } } } @@ -201,7 +201,12 @@ public class ItemMiningLaser extends ItemElectric { if (miningMap.containsKey(player)) { - miningMap.remove(player); + Pair vec = miningMap.get(player); + if(vec != null && vec.left() != null) + { + player.worldObj.destroyBlockInWorldPartially(player.entityId, vec.left().intX(), vec.left().intY(), vec.left().intZ(), -1); + } + miningMap.remove(player); } } From 8ca307073552c9c2e8f6ed6b12763ea271dd9018 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 17:14:18 -0400 Subject: [PATCH 120/144] Created some basic tool prefabs which includes support for energy & tool modes --- .../electrical/laser/gun/ItemMiningLaser.java | 102 +++------- .../core/prefab/items/ItemEnergyTool.java | 181 ++++++++++++++++++ .../core/prefab/items/ItemTool.java | 91 +++++++++ 3 files changed, 300 insertions(+), 74 deletions(-) create mode 100644 src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java create mode 100644 src/main/scala/resonantinduction/core/prefab/items/ItemTool.java diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 9ace997de..1f8566a9a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -4,17 +4,13 @@ import java.awt.Color; import java.util.HashMap; import java.util.List; -import resonantinduction.core.ResonantInduction; import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumMovingObjectType; import net.minecraft.util.MathHelper; @@ -23,8 +19,9 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; +import resonantinduction.core.ResonantInduction; +import resonantinduction.core.prefab.items.ItemEnergyTool; import universalelectricity.api.UniversalClass; -import universalelectricity.api.item.ItemElectric; import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; import calclavia.api.resonantinduction.electrical.LaserEvent; @@ -47,16 +44,18 @@ import cpw.mods.fml.relauncher.SideOnly; * * @author DarkGuardsman */ @UniversalClass -public class ItemMiningLaser extends ItemElectric +public class ItemMiningLaser extends ItemEnergyTool { - long batterySize = 500000; + /** Cost per tick of using the item */ float wattPerShot = 1; + /** Damage to entities hit by the laser */ float damageToEntities = 3.3f; + /** Range of the laser ray trace */ int blockRange = 50; - int firingDelay = 5; + /** Time to break a single block */ int breakTime = 15; - boolean createLava = true, setFire = true; + /** Map of players and how long they have focused the laser on a single block */ HashMap> miningMap = new HashMap>(); public ItemMiningLaser(int id) @@ -81,41 +80,23 @@ public class ItemMiningLaser extends ItemElectric } @Override - public void onUpdate(ItemStack itemStack, World par2World, Entity entity, int par4, boolean par5) + public void onUpdate(ItemStack itemStack, World world, Entity entity, int slot, boolean currentHeldItem) { - //Slow any entity that carries this down as a side effect of using heavy mining gear - if (entity instanceof EntityLivingBase) + //Remove player from mining map if he puts the laser gun away + if (!currentHeldItem && entity instanceof EntityPlayer && this.miningMap.containsKey(entity)) { - boolean flag = entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode; - - if (!flag) - { - //((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 5, 0)); - } - else - { - //((EntityPlayer) entity).setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); - } - } - } - - @Override - public void onCreated(ItemStack stack, World par2World, EntityPlayer entityPlayer) - { - this.setEnergy(stack, 0); - if (stack.getTagCompound() == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - if (entityPlayer != null) - { - stack.getTagCompound().setString("Creator", entityPlayer.username); + this.miningMap.remove(entity); } } @Override public void onUsingItemTick(ItemStack stack, EntityPlayer player, int count) { + //Small delay to prevent unwanted usage of the item + //TODO increase this delay to simulate warm up time + //TODO increase break time longer the laser has been running + //TODO match hardness of block for break time + //TODO add audio if (count > 5) { Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight(), player.posZ); @@ -125,7 +106,6 @@ public class ItemMiningLaser extends ItemElectric Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * blockRange, playerPosition.yCoord + playerLook.yCoord * blockRange, playerPosition.zCoord + playerLook.zCoord * blockRange); MovingObjectPosition hit = RayTraceHelper.do_rayTraceFromEntity(player, new Vector3().toVec3(), blockRange, true); - //TODO fix sound if (hit != null) { LaserEvent event = new LaserEvent.LaserFiredPlayerEvent(player, hit, stack); @@ -189,9 +169,16 @@ public class ItemMiningLaser extends ItemElectric @Override public ItemStack onItemRightClick(ItemStack itemStack, World par2World, EntityPlayer player) { - if (player.capabilities.isCreativeMode || this.getEnergy(itemStack) > this.wattPerShot) + if (!player.isSneaking()) { - player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); + if (player.capabilities.isCreativeMode || this.getEnergy(itemStack) > this.wattPerShot) + { + player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); + } + } + else + { + } return itemStack; } @@ -202,45 +189,12 @@ public class ItemMiningLaser extends ItemElectric if (miningMap.containsKey(player)) { Pair vec = miningMap.get(player); - if(vec != null && vec.left() != null) + if (vec != null && vec.left() != null) { player.worldObj.destroyBlockInWorldPartially(player.entityId, vec.left().intX(), vec.left().intY(), vec.left().intZ(), -1); } - miningMap.remove(player); + miningMap.remove(player); } } - @Override - public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) - { - return par1ItemStack; - } - - @SideOnly(Side.CLIENT) - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) - { - super.addInformation(stack, player, list, par4); - if (stack.getTagCompound() == null) - { - stack.setTagCompound(new NBTTagCompound()); - } - String creator = stack.getTagCompound().getString("Creator"); - if (!creator.equalsIgnoreCase("creative") && creator != "") - { - list.add("Created by: " + creator); - } - else if (creator.equalsIgnoreCase("creative")) - { - list.add("Created by Magic Dwarfs"); - } - - } - - @Override - public long getEnergyCapacity(ItemStack theItem) - { - return this.batterySize; - } - } diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java new file mode 100644 index 000000000..41d239579 --- /dev/null +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java @@ -0,0 +1,181 @@ +package resonantinduction.core.prefab.items; + +import java.util.List; + +import calclavia.lib.render.EnumColor; +import calclavia.lib.utility.LanguageUtility; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import resonantinduction.electrical.battery.TileBattery; +import universalelectricity.api.CompatibilityModule; +import universalelectricity.api.UniversalElectricity; +import universalelectricity.api.energy.UnitDisplay; +import universalelectricity.api.energy.UnitDisplay.Unit; +import universalelectricity.api.item.IEnergyItem; +import universalelectricity.api.item.IVoltageItem; + +/** Prefab for all eletric based tools + * + * @author DarkGurdsman */ +public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageItem +{ + protected long batterySize = 500000; + protected boolean hasTier = false; + protected boolean showEnergy = true; + + public ItemEnergyTool(int id) + { + super(id); + } + + @SuppressWarnings("unchecked") + @Override + public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) + { + if (hasTier) + list.add(LanguageUtility.getLocal("tooltip.tier") + ": " + (getTier(itemStack) + 1)); + + if (showEnergy) + { + String color = ""; + long joules = this.getEnergy(itemStack); + + if (joules <= this.getEnergyCapacity(itemStack) / 3) + { + color = "\u00a74"; + } + else if (joules > this.getEnergyCapacity(itemStack) * 2 / 3) + { + color = "\u00a72"; + } + else + { + color = "\u00a76"; + } + itemStack.getItemDamageForDisplay(); + list.add(LanguageUtility.getLocal("tooltip.battery.energy").replace("%0", color).replace("%1", EnumColor.GREY.toString()).replace("%v0", UnitDisplay.getDisplayShort(joules, Unit.JOULES)).replace("%v1", UnitDisplay.getDisplayShort(this.getEnergyCapacity(itemStack), Unit.JOULES))); + } + } + + @Override + public void onCreated(ItemStack itemStack, World world, EntityPlayer player) + { + super.onCreated(itemStack, world, player); + this.setEnergy(itemStack, 0); + } + + @Override + public long recharge(ItemStack itemStack, long energy, boolean doReceive) + { + long rejectedElectricity = Math.max((this.getEnergy(itemStack) + energy) - this.getEnergyCapacity(itemStack), 0); + long energyToReceive = Math.min(energy - rejectedElectricity, getTransferRate(itemStack)); + + if (doReceive) + { + this.setEnergy(itemStack, this.getEnergy(itemStack) + energyToReceive); + } + + return energyToReceive; + } + + @Override + public long discharge(ItemStack itemStack, long energy, boolean doTransfer) + { + long energyToExtract = Math.min(Math.min(this.getEnergy(itemStack), energy), getTransferRate(itemStack)); + + if (doTransfer) + { + this.setEnergy(itemStack, this.getEnergy(itemStack) - energyToExtract); + } + + return energyToExtract; + } + + @Override + public long getVoltage(ItemStack itemStack) + { + return UniversalElectricity.DEFAULT_VOLTAGE; + } + + @Override + public void setEnergy(ItemStack itemStack, long joules) + { + if (itemStack.getTagCompound() == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } + + long electricityStored = Math.max(Math.min(joules, this.getEnergyCapacity(itemStack)), 0); + itemStack.getTagCompound().setLong("electricity", electricityStored); + } + + public long getTransfer(ItemStack itemStack) + { + return this.getEnergyCapacity(itemStack) - this.getEnergy(itemStack); + } + + /** Gets the energy stored in the item. Energy is stored using item NBT */ + @Override + public long getEnergy(ItemStack itemStack) + { + if (itemStack.getTagCompound() == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } + + long energyStored = itemStack.getTagCompound().getLong("electricity"); + return energyStored; + } + + @Override + public int getDisplayDamage(ItemStack stack) + { + return (int) (100 - ((double) this.getEnergy(stack) / (double) getEnergyCapacity(stack)) * 100); + } + + @Override + public long getEnergyCapacity(ItemStack theItem) + { + return TileBattery.getEnergyForTier(getTier(theItem)); + } + + public long getTransferRate(ItemStack itemStack) + { + return this.getEnergyCapacity(itemStack) / 100; + } + + public static ItemStack setTier(ItemStack itemStack, byte tier) + { + if (itemStack.getTagCompound() == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } + + itemStack.getTagCompound().setByte("tier", tier); + return itemStack; + } + + public static byte getTier(ItemStack itemStack) + { + if (itemStack.getTagCompound() == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } + return itemStack.getTagCompound().getByte("tier"); + } + + @SuppressWarnings("unchecked") + @Override + public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) + { + for (byte tier = 0; tier <= TileBattery.MAX_TIER; tier++) + { + par3List.add(CompatibilityModule.getItemWithCharge(setTier(new ItemStack(this), tier), 0)); + par3List.add(CompatibilityModule.getItemWithCharge(setTier(new ItemStack(this), tier), TileBattery.getEnergyForTier(tier))); + } + } + +} diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java new file mode 100644 index 000000000..c345fb263 --- /dev/null +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java @@ -0,0 +1,91 @@ +package resonantinduction.core.prefab.items; + +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import calclavia.components.tool.ToolMode; +import calclavia.lib.utility.LanguageUtility; +import calclavia.lib.utility.nbt.NBTUtility; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +/** Prefab for all tool based items + * + * @author Darkguardsman */ +public class ItemTool extends Item +{ + protected boolean hasModes = false; + protected String[] toolModes = new String[] { "Remove" }; + + public ItemTool(int par1) + { + super(par1); + } + + @Override + public void onCreated(ItemStack stack, World par2World, EntityPlayer entityPlayer) + { + //Save who crafted the tool + if (entityPlayer != null) + { + NBTUtility.getNBTTagCompound(stack).setString("Creator", entityPlayer.username); + } + } + + @SideOnly(Side.CLIENT) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) + { + super.addInformation(stack, player, list, par4); + + //Item creator + String creator = NBTUtility.getNBTTagCompound(stack).getString("Creator"); + if (!creator.equalsIgnoreCase("creative") && creator != "") + { + list.add("Created by: " + creator); + } + else if (creator.equalsIgnoreCase("creative")) + { + list.add("Created by Magic Dwarfs"); + } + + } + + @Override + public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) + { + if (hasModes && toolModes != null && toolModes.length > 1) + { + //TODO replace with middle mouse wheel + //Changes the mod of the tool + if (player.isSneaking()) + { + setMode(itemStack, (getMode(itemStack) + 1) % toolModes.length); + + if (!world.isRemote) + player.addChatMessage("Set tool mode to: " + toolModes[getMode(itemStack)]); + + } + } + return itemStack; + } + + @Override + public boolean shouldPassSneakingClickToBlock(World world, int x, int y, int z) + { + return true; + } + + public int getMode(ItemStack itemStack) + { + return NBTUtility.getNBTTagCompound(itemStack).getInteger("mode"); + } + + public void setMode(ItemStack itemStack, int mode) + { + NBTUtility.getNBTTagCompound(itemStack).setInteger("mode", mode); + } +} From d0ead155d3c275d68e303341a755114cb79b2de3 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 17:16:54 -0400 Subject: [PATCH 121/144] Setup translation keys for mode setting & modes for tools --- .../resonantinduction/core/prefab/items/ItemTool.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java index c345fb263..329d9a2a8 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java @@ -64,9 +64,11 @@ public class ItemTool extends Item if (player.isSneaking()) { setMode(itemStack, (getMode(itemStack) + 1) % toolModes.length); - - if (!world.isRemote) - player.addChatMessage("Set tool mode to: " + toolModes[getMode(itemStack)]); + String modeKey = toolModes[getMode(itemStack)]; + if (!world.isRemote && modeKey != null && !modeKey.isEmpty()) + { + player.addChatMessage(LanguageUtility.getLocal("tool.mode.set") + LanguageUtility.getLocal(modeKey)); + } } } From 7644aadf8065720a457bd2dbcd14483437acb9a3 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 17:26:08 -0400 Subject: [PATCH 122/144] More work on tool prefabs, setup energy tiers, stack limits, and item settings --- .../electrical/laser/gun/ItemMiningLaser.java | 3 --- .../core/prefab/items/ItemEnergyTool.java | 20 +++++++++++-------- .../core/prefab/items/ItemTool.java | 3 +++ 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 1f8566a9a..4e2edfec2 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -61,9 +61,6 @@ public class ItemMiningLaser extends ItemEnergyTool public ItemMiningLaser(int id) { super(id); - this.setUnlocalizedName("MiningLaser"); - this.setMaxStackSize(1); - this.setCreativeTab(CreativeTabs.tabTools); } @Override diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java index 41d239579..4de7a6ad2 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java @@ -2,8 +2,6 @@ package resonantinduction.core.prefab.items; import java.util.List; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LanguageUtility; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -16,15 +14,22 @@ import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; import universalelectricity.api.item.IEnergyItem; import universalelectricity.api.item.IVoltageItem; +import calclavia.lib.render.EnumColor; +import calclavia.lib.utility.LanguageUtility; /** Prefab for all eletric based tools * * @author DarkGurdsman */ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageItem { + /** Default battery size */ protected long batterySize = 500000; + /** Does this item support energy tiers */ protected boolean hasTier = false; + /** Display energy in tool tips */ protected boolean showEnergy = true; + /** Number of energy tiers */ + protected int energyTiers = 0; public ItemEnergyTool(int id) { @@ -147,14 +152,14 @@ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageIte return this.getEnergyCapacity(itemStack) / 100; } - public static ItemStack setTier(ItemStack itemStack, byte tier) + public static ItemStack setTier(ItemStack itemStack, int tier) { if (itemStack.getTagCompound() == null) { itemStack.setTagCompound(new NBTTagCompound()); } - itemStack.getTagCompound().setByte("tier", tier); + itemStack.getTagCompound().setByte("tier", (byte) tier); return itemStack; } @@ -171,11 +176,10 @@ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageIte @Override public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List) { - for (byte tier = 0; tier <= TileBattery.MAX_TIER; tier++) + for (int i = 0; i >= 0 && i < this.energyTiers; i++) { - par3List.add(CompatibilityModule.getItemWithCharge(setTier(new ItemStack(this), tier), 0)); - par3List.add(CompatibilityModule.getItemWithCharge(setTier(new ItemStack(this), tier), TileBattery.getEnergyForTier(tier))); + par3List.add(CompatibilityModule.getItemWithCharge(setTier(new ItemStack(this), i), 0)); + par3List.add(CompatibilityModule.getItemWithCharge(setTier(new ItemStack(this), i), this.getEnergyCapacity(setTier(new ItemStack(this), i)))); } } - } diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java index 329d9a2a8..d77e1064f 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java @@ -2,6 +2,7 @@ package resonantinduction.core.prefab.items; import java.util.List; +import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -23,6 +24,8 @@ public class ItemTool extends Item public ItemTool(int par1) { super(par1); + this.setMaxStackSize(1); + this.setCreativeTab(CreativeTabs.tabTools); } @Override From 8b2c78ea3e0aba16ee1416d5b99b4e7c9b4973e5 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 17:31:46 -0400 Subject: [PATCH 123/144] Fixed energy tools using battery boxes capacity tiering --- .../resonantinduction/core/prefab/items/ItemEnergyTool.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java index 4de7a6ad2..de4e90610 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java @@ -7,7 +7,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -import resonantinduction.electrical.battery.TileBattery; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.energy.UnitDisplay; @@ -144,7 +143,7 @@ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageIte @Override public long getEnergyCapacity(ItemStack theItem) { - return TileBattery.getEnergyForTier(getTier(theItem)); + return this.batterySize; } public long getTransferRate(ItemStack itemStack) From bace43ead9fc9fbf7112fe5fbedc3ee07e64deaf Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 17:37:35 -0400 Subject: [PATCH 124/144] Laser gun now consumes energy per tick, also increase cost from 1j to 100j --- .../electrical/laser/gun/ItemMiningLaser.java | 10 ++++++---- .../core/prefab/items/ItemEnergyTool.java | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 4e2edfec2..48e69c9a5 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -43,11 +43,10 @@ import cpw.mods.fml.relauncher.SideOnly; * mining gear and the player will be simi-stationary when using it * * @author DarkGuardsman */ -@UniversalClass public class ItemMiningLaser extends ItemEnergyTool { /** Cost per tick of using the item */ - float wattPerShot = 1; + long joulesPerTick = 100; /** Damage to entities hit by the laser */ float damageToEntities = 3.3f; /** Range of the laser ray trace */ @@ -94,8 +93,11 @@ public class ItemMiningLaser extends ItemEnergyTool //TODO increase break time longer the laser has been running //TODO match hardness of block for break time //TODO add audio - if (count > 5) + if ((player.capabilities.isCreativeMode || discharge(stack, joulesPerTick, false) > joulesPerTick) && count > 5) { + if(!player.capabilities.isCreativeMode) + discharge(stack, joulesPerTick, true); + Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight(), player.posZ); Vec3 playerLook = RayTraceHelper.getLook(player, 1.0f); Vec3 p = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord, playerPosition.yCoord + playerLook.yCoord, playerPosition.zCoord + playerLook.zCoord); @@ -168,7 +170,7 @@ public class ItemMiningLaser extends ItemEnergyTool { if (!player.isSneaking()) { - if (player.capabilities.isCreativeMode || this.getEnergy(itemStack) > this.wattPerShot) + if (player.capabilities.isCreativeMode || this.getEnergy(itemStack) > this.joulesPerTick) { player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); } diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java index de4e90610..f19c342f0 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java @@ -8,6 +8,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; import universalelectricity.api.CompatibilityModule; +import universalelectricity.api.UniversalClass; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; @@ -19,6 +20,7 @@ import calclavia.lib.utility.LanguageUtility; /** Prefab for all eletric based tools * * @author DarkGurdsman */ +@UniversalClass public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageItem { /** Default battery size */ From ecf0ea78ace5169fecc5ad1a695f326aadef05a6 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 17:41:13 -0400 Subject: [PATCH 125/144] Increased laser charge up delay to 20ticks --- .../electrical/laser/gun/ItemMiningLaser.java | 8 +------- .../core/prefab/items/ItemEnergyTool.java | 2 +- .../resonantinduction/core/prefab/items/ItemTool.java | 3 +-- 3 files changed, 3 insertions(+), 10 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 48e69c9a5..a6efc81ac 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -2,15 +2,12 @@ package resonantinduction.electrical.laser.gun; import java.awt.Color; import java.util.HashMap; -import java.util.List; import net.minecraft.block.Block; -import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumMovingObjectType; import net.minecraft.util.MathHelper; @@ -21,13 +18,10 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; import resonantinduction.core.ResonantInduction; import resonantinduction.core.prefab.items.ItemEnergyTool; -import universalelectricity.api.UniversalClass; import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; import calclavia.api.resonantinduction.electrical.LaserEvent; import calclavia.lib.type.Pair; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; /** Stream laser mining tool, When held down it will slowly mine away at the block in front of it. * @@ -93,7 +87,7 @@ public class ItemMiningLaser extends ItemEnergyTool //TODO increase break time longer the laser has been running //TODO match hardness of block for break time //TODO add audio - if ((player.capabilities.isCreativeMode || discharge(stack, joulesPerTick, false) > joulesPerTick) && count > 5) + if ((player.capabilities.isCreativeMode || discharge(stack, joulesPerTick, false) > joulesPerTick) && count > 20) { if(!player.capabilities.isCreativeMode) discharge(stack, joulesPerTick, true); diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java index f19c342f0..1d037a89c 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java @@ -118,7 +118,7 @@ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageIte itemStack.getTagCompound().setLong("electricity", electricityStored); } - public long getTransfer(ItemStack itemStack) + public long getEnergySpace(ItemStack itemStack) { return this.getEnergyCapacity(itemStack) - this.getEnergy(itemStack); } diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java index d77e1064f..7d3cdfb58 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java @@ -7,7 +7,6 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import calclavia.components.tool.ToolMode; import calclavia.lib.utility.LanguageUtility; import calclavia.lib.utility.nbt.NBTUtility; import cpw.mods.fml.relauncher.Side; @@ -69,7 +68,7 @@ public class ItemTool extends Item setMode(itemStack, (getMode(itemStack) + 1) % toolModes.length); String modeKey = toolModes[getMode(itemStack)]; if (!world.isRemote && modeKey != null && !modeKey.isEmpty()) - { + { player.addChatMessage(LanguageUtility.getLocal("tool.mode.set") + LanguageUtility.getLocal(modeKey)); } From aa7e8fdde7c489c897ecd5c746b99a55eb7a6efd Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 5 May 2014 22:29:17 -0400 Subject: [PATCH 126/144] Fixed sync issues with laser when discharging its battery --- .../electrical/laser/gun/ItemMiningLaser.java | 88 +++++++++++-------- .../core/prefab/items/ItemEnergyTool.java | 30 ++----- .../core/prefab/items/ItemTool.java | 6 -- 3 files changed, 57 insertions(+), 67 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index a6efc81ac..964099d40 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -50,32 +50,28 @@ public class ItemMiningLaser extends ItemEnergyTool /** Map of players and how long they have focused the laser on a single block */ HashMap> miningMap = new HashMap>(); + /** Used to track energy used while the player uses the laser rather then direct editing the nbt */ + HashMap energyUsedMap = new HashMap(); public ItemMiningLaser(int id) { super(id); } - @Override - public EnumAction getItemUseAction(ItemStack par1ItemStack) - { - return EnumAction.bow; - } - - @Override - public int getMaxItemUseDuration(ItemStack par1ItemStack) - { - //TODO change render of the laser too show it slowly over heat, when it over heats eg gets to max use damage the player, and tool - return 1000; - } - @Override public void onUpdate(ItemStack itemStack, World world, Entity entity, int slot, boolean currentHeldItem) { //Remove player from mining map if he puts the laser gun away - if (!currentHeldItem && entity instanceof EntityPlayer && this.miningMap.containsKey(entity)) + if (entity instanceof EntityPlayer) { - this.miningMap.remove(entity); + EntityPlayer player = (EntityPlayer) entity; + if (!currentHeldItem) + { + if (this.miningMap.containsKey(player)) + { + this.miningMap.remove(player); + } + } } } @@ -87,11 +83,8 @@ public class ItemMiningLaser extends ItemEnergyTool //TODO increase break time longer the laser has been running //TODO match hardness of block for break time //TODO add audio - if ((player.capabilities.isCreativeMode || discharge(stack, joulesPerTick, false) > joulesPerTick) && count > 20) + if (count > 5 && (player.capabilities.isCreativeMode || discharge(stack, joulesPerTick, false) >= joulesPerTick && (!this.energyUsedMap.containsKey(player) || this.energyUsedMap.get(player) <= this.getEnergy(stack)))) { - if(!player.capabilities.isCreativeMode) - discharge(stack, joulesPerTick, true); - Vec3 playerPosition = Vec3.createVectorHelper(player.posX, player.posY + player.getEyeHeight(), player.posZ); Vec3 playerLook = RayTraceHelper.getLook(player, 1.0f); Vec3 p = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord, playerPosition.yCoord + playerLook.yCoord, playerPosition.zCoord + playerLook.zCoord); @@ -99,6 +92,13 @@ public class ItemMiningLaser extends ItemEnergyTool Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * blockRange, playerPosition.yCoord + playerLook.yCoord * blockRange, playerPosition.zCoord + playerLook.zCoord * blockRange); MovingObjectPosition hit = RayTraceHelper.do_rayTraceFromEntity(player, new Vector3().toVec3(), blockRange, true); + if (!player.capabilities.isCreativeMode) + { + long energyUsed = this.energyUsedMap.containsKey(player) ? this.energyUsedMap.get(player) : 0; + energyUsed += joulesPerTick; + this.energyUsedMap.put(player, energyUsed); + } + if (hit != null) { LaserEvent event = new LaserEvent.LaserFiredPlayerEvent(player, hit, stack); @@ -148,37 +148,33 @@ public class ItemMiningLaser extends ItemEnergyTool } playerViewOffset = hit.hitVec; + + //TODO make beam brighter the longer it has been used + //TODO adjust the laser for the end of the gun + float x = (float) (MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.4) - MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); + float z = (float) (MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.4) + MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); } - //TODO make beam brighter the longer it has been used - //TODO adjust the laser for the end of the gun - float x = (float) (MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.4) - MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); - float z = (float) (MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.4) + MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); - ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); - ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); } } @Override - public ItemStack onItemRightClick(ItemStack itemStack, World par2World, EntityPlayer player) + public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { if (!player.isSneaking()) { - if (player.capabilities.isCreativeMode || this.getEnergy(itemStack) > this.joulesPerTick) - { - player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); - } + player.addChatMessage("Laser turns on Client:" + world.isRemote); + player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); } - else - { - - } - return itemStack; + return super.onItemRightClick(itemStack, world, player); } @Override - public void onPlayerStoppedUsing(ItemStack par1ItemStack, World par2World, EntityPlayer player, int par4) + public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int par4) { + player.addChatMessage("Laser turns off Client:" + world.isRemote); if (miningMap.containsKey(player)) { Pair vec = miningMap.get(player); @@ -188,6 +184,26 @@ public class ItemMiningLaser extends ItemEnergyTool } miningMap.remove(player); } + if (this.energyUsedMap.containsKey(player)) + discharge(stack, this.energyUsedMap.get(player), true); + } + + @Override + public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) + { + return par1ItemStack; + } + + @Override + public int getMaxItemUseDuration(ItemStack par1ItemStack) + { + return 72000; + } + + @Override + public EnumAction getItemUseAction(ItemStack par1ItemStack) + { + return EnumAction.bow; } } diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java index 1d037a89c..36640286c 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java @@ -16,6 +16,7 @@ import universalelectricity.api.item.IEnergyItem; import universalelectricity.api.item.IVoltageItem; import calclavia.lib.render.EnumColor; import calclavia.lib.utility.LanguageUtility; +import calclavia.lib.utility.nbt.NBTUtility; /** Prefab for all eletric based tools * @@ -61,7 +62,6 @@ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageIte { color = "\u00a76"; } - itemStack.getItemDamageForDisplay(); list.add(LanguageUtility.getLocal("tooltip.battery.energy").replace("%0", color).replace("%1", EnumColor.GREY.toString()).replace("%v0", UnitDisplay.getDisplayShort(joules, Unit.JOULES)).replace("%v1", UnitDisplay.getDisplayShort(this.getEnergyCapacity(itemStack), Unit.JOULES))); } } @@ -109,13 +109,8 @@ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageIte @Override public void setEnergy(ItemStack itemStack, long joules) { - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - long electricityStored = Math.max(Math.min(joules, this.getEnergyCapacity(itemStack)), 0); - itemStack.getTagCompound().setLong("electricity", electricityStored); + NBTUtility.getNBTTagCompound(itemStack).setLong("electricity", electricityStored); } public long getEnergySpace(ItemStack itemStack) @@ -127,13 +122,7 @@ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageIte @Override public long getEnergy(ItemStack itemStack) { - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - long energyStored = itemStack.getTagCompound().getLong("electricity"); - return energyStored; + return NBTUtility.getNBTTagCompound(itemStack).getLong("electricity"); } @Override @@ -155,22 +144,13 @@ public class ItemEnergyTool extends ItemTool implements IEnergyItem, IVoltageIte public static ItemStack setTier(ItemStack itemStack, int tier) { - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - - itemStack.getTagCompound().setByte("tier", (byte) tier); + NBTUtility.getNBTTagCompound(itemStack).setByte("tier", (byte) tier); return itemStack; } public static byte getTier(ItemStack itemStack) { - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - return itemStack.getTagCompound().getByte("tier"); + return NBTUtility.getNBTTagCompound(itemStack).getByte("tier"); } @SuppressWarnings("unchecked") diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java index 7d3cdfb58..312b1f5eb 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java @@ -77,12 +77,6 @@ public class ItemTool extends Item return itemStack; } - @Override - public boolean shouldPassSneakingClickToBlock(World world, int x, int y, int z) - { - return true; - } - public int getMode(ItemStack itemStack) { return NBTUtility.getNBTTagCompound(itemStack).getInteger("mode"); From 19700874d60874834b8851e37c11ed747d7e3615 Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 6 May 2014 00:07:58 -0400 Subject: [PATCH 127/144] Removed debug from laser --- .../resonantinduction/electrical/laser/gun/ItemMiningLaser.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 964099d40..ea137ee0b 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -165,7 +165,6 @@ public class ItemMiningLaser extends ItemEnergyTool { if (!player.isSneaking()) { - player.addChatMessage("Laser turns on Client:" + world.isRemote); player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); } return super.onItemRightClick(itemStack, world, player); @@ -174,7 +173,6 @@ public class ItemMiningLaser extends ItemEnergyTool @Override public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int par4) { - player.addChatMessage("Laser turns off Client:" + world.isRemote); if (miningMap.containsKey(player)) { Pair vec = miningMap.get(player); From 738a673bef35bfd0afe2604ee0a928157641469e Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 6 May 2014 01:01:48 -0400 Subject: [PATCH 128/144] Minor lang key change for laser gun --- .../electrical/laser/gun/ItemMiningLaser.java | 10 +++++++--- .../resonantinduction/core/prefab/items/ItemTool.java | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index ea137ee0b..0e40e6f2a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -53,9 +53,13 @@ public class ItemMiningLaser extends ItemEnergyTool /** Used to track energy used while the player uses the laser rather then direct editing the nbt */ HashMap energyUsedMap = new HashMap(); + public static final int MODE_REMOVE = 0, MODE_SMELT = 1, MODE_DAMAGE = 2; + public ItemMiningLaser(int id) { super(id); + hasModes = true; + toolModes = new String[] { "laser.toolmode.remove", "laser.toolmode.smelt", "laser.toolmode.damage" }; } @Override @@ -125,13 +129,13 @@ public class ItemMiningLaser extends ItemEnergyTool if (b != null && b.getBlockHardness(player.worldObj, hit.blockX, hit.blockY, hit.blockZ) > -1) { time = lastHit.right() + 1; - if (time >= breakTime) + if (time >= breakTime && this.getMode(stack) == MODE_REMOVE) { LaserEvent.onBlockMinedByLaser(player.worldObj, player, new Vector3(hit)); mined = true; miningMap.remove(player); } - else + else if(this.getMode(stack) == MODE_REMOVE || this.getMode(stack) == MODE_SMELT) { //TODO get the actual hit side from the angle of the ray trace LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); @@ -165,7 +169,7 @@ public class ItemMiningLaser extends ItemEnergyTool { if (!player.isSneaking()) { - player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); + player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack)); } return super.onItemRightClick(itemStack, world, player); } diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java index 312b1f5eb..1b2a140d9 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java @@ -69,7 +69,7 @@ public class ItemTool extends Item String modeKey = toolModes[getMode(itemStack)]; if (!world.isRemote && modeKey != null && !modeKey.isEmpty()) { - player.addChatMessage(LanguageUtility.getLocal("tool.mode.set") + LanguageUtility.getLocal(modeKey)); + player.addChatMessage(LanguageUtility.getLocal("tool.mode.set") + " " + LanguageUtility.getLocal(modeKey)); } } From 4de939dcffb123a7f8646321a397a1a698475f14 Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 6 May 2014 01:28:15 -0400 Subject: [PATCH 129/144] Updated lang submodule --- src/main/resources/assets/resonantinduction/languages | 2 +- .../scala/resonantinduction/core/prefab/items/ItemTool.java | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/resources/assets/resonantinduction/languages b/src/main/resources/assets/resonantinduction/languages index d161acb99..b1a47b348 160000 --- a/src/main/resources/assets/resonantinduction/languages +++ b/src/main/resources/assets/resonantinduction/languages @@ -1 +1 @@ -Subproject commit d161acb9922c0d6f4be8927df14442a2f38cd758 +Subproject commit b1a47b348f6f7289b25dce23c17909a0d1af4c59 diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java index 1b2a140d9..5d985ca07 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java @@ -53,7 +53,6 @@ public class ItemTool extends Item { list.add("Created by Magic Dwarfs"); } - } @Override From 434ee0cbc35f3fe8fbda22f147571c60a7b21799 Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 6 May 2014 02:03:16 -0400 Subject: [PATCH 130/144] Laser gun consumes less energy per mode its in --- .../electrical/laser/gun/ItemMiningLaser.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 0e40e6f2a..45fd8e4a2 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -54,7 +54,7 @@ public class ItemMiningLaser extends ItemEnergyTool HashMap energyUsedMap = new HashMap(); public static final int MODE_REMOVE = 0, MODE_SMELT = 1, MODE_DAMAGE = 2; - + public ItemMiningLaser(int id) { super(id); @@ -99,7 +99,16 @@ public class ItemMiningLaser extends ItemEnergyTool if (!player.capabilities.isCreativeMode) { long energyUsed = this.energyUsedMap.containsKey(player) ? this.energyUsedMap.get(player) : 0; - energyUsed += joulesPerTick; + + switch (getMode(stack)) + { + case 0: + energyUsed += joulesPerTick; + case 1: + energyUsed += joulesPerTick / 2; + case 2: + energyUsed += joulesPerTick / 3; + } this.energyUsedMap.put(player, energyUsed); } @@ -135,7 +144,7 @@ public class ItemMiningLaser extends ItemEnergyTool mined = true; miningMap.remove(player); } - else if(this.getMode(stack) == MODE_REMOVE || this.getMode(stack) == MODE_SMELT) + else if (this.getMode(stack) == MODE_REMOVE || this.getMode(stack) == MODE_SMELT) { //TODO get the actual hit side from the angle of the ray trace LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); From 433fcc31e459073cc2a2af85423fc407ba83f2ee Mon Sep 17 00:00:00 2001 From: Robert S Date: Tue, 6 May 2014 02:12:25 -0400 Subject: [PATCH 131/144] Separated smelt and remove mode to prevent harvesting issues --- .../resonantinduction/electrical/laser/gun/ItemMiningLaser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 45fd8e4a2..a25298dff 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -144,7 +144,7 @@ public class ItemMiningLaser extends ItemEnergyTool mined = true; miningMap.remove(player); } - else if (this.getMode(stack) == MODE_REMOVE || this.getMode(stack) == MODE_SMELT) + else if (this.getMode(stack) == MODE_SMELT) { //TODO get the actual hit side from the angle of the ray trace LaserEvent.onLaserHitBlock(player.worldObj, player, new Vector3(hit), ForgeDirection.UP); From dc3bd53e181f585dddb13a1c4e9141d782845977 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 8 May 2014 01:23:42 -0400 Subject: [PATCH 132/144] Moved ray trace code to calc-core --- .../electrical/laser/gun/ItemMiningLaser.java | 1 + .../laser/gun/ItemThermalLaser.java | 1 + .../electrical/laser/gun/RayTraceHelper.java | 278 ------------------ 3 files changed, 2 insertions(+), 278 deletions(-) delete mode 100644 electrical/src/main/scala/resonantinduction/electrical/laser/gun/RayTraceHelper.java diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index a25298dff..a91bd0858 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -21,6 +21,7 @@ import resonantinduction.core.prefab.items.ItemEnergyTool; import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; import calclavia.api.resonantinduction.electrical.LaserEvent; +import calclavia.lib.prefab.vector.RayTraceHelper; import calclavia.lib.type.Pair; /** Stream laser mining tool, When held down it will slowly mine away at the block in front of it. diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java index 0f05bb359..fbde72e8d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java @@ -28,6 +28,7 @@ import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; import calclavia.api.resonantinduction.electrical.LaserEvent; +import calclavia.lib.prefab.vector.RayTraceHelper; import calclavia.lib.thermal.ThermalGrid; import calclavia.lib.type.Pair; import cpw.mods.fml.relauncher.Side; diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RayTraceHelper.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RayTraceHelper.java deleted file mode 100644 index 23a42dc62..000000000 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RayTraceHelper.java +++ /dev/null @@ -1,278 +0,0 @@ -package resonantinduction.electrical.laser.gun; - -import java.util.List; - -import net.minecraft.entity.Entity; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; -import net.minecraft.world.World; -import universalelectricity.api.vector.Vector3; - -public class RayTraceHelper -{ - public static MovingObjectPosition raytraceEntities_fromAnEntity(World world, Entity entity, Vec3 error, double reachDistance, boolean collisionFlag) - { - - MovingObjectPosition pickedEntity = null; - Vec3 playerPosition = Vec3.createVectorHelper(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ); - Vec3 playerLook = entity.getLookVec(); - - Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * reachDistance + error.xCoord, playerPosition.yCoord + playerLook.yCoord * reachDistance + error.yCoord, playerPosition.zCoord + playerLook.zCoord * reachDistance + error.zCoord); - - double playerBorder = 1.1 * reachDistance; - AxisAlignedBB boxToScan = entity.boundingBox.expand(playerBorder, playerBorder, playerBorder); - - List entitiesHit = world.getEntitiesWithinAABBExcludingEntity(entity, boxToScan); - double closestEntity = reachDistance; - - if (entitiesHit == null || entitiesHit.isEmpty()) - { - return null; - } - for (Entity entityHit : entitiesHit) - { - if (entityHit != null && entityHit.canBeCollidedWith() && entityHit.boundingBox != null) - { - float border = entityHit.getCollisionBorderSize(); - AxisAlignedBB aabb = entityHit.boundingBox.expand(border, border, border); - MovingObjectPosition hitMOP = aabb.calculateIntercept(playerPosition, playerViewOffset); - - if (hitMOP != null) - { - if (aabb.isVecInside(playerPosition)) - { - if (0.0D < closestEntity || closestEntity == 0.0D) - { - pickedEntity = new MovingObjectPosition(entityHit); - if (pickedEntity != null) - { - pickedEntity.hitVec = hitMOP.hitVec; - closestEntity = 0.0D; - } - } - } - else - { - double distance = playerPosition.distanceTo(hitMOP.hitVec); - - if (distance < closestEntity || closestEntity == 0.0D) - { - pickedEntity = new MovingObjectPosition(entityHit); - pickedEntity.hitVec = hitMOP.hitVec; - closestEntity = distance; - } - } - } - } - } - return pickedEntity; - } - - @SuppressWarnings("unchecked") - public static MovingObjectPosition raytraceEntities(World world, Vec3 start, Vec3 end, double range, boolean collisionFlag, Entity exclude) - { - AxisAlignedBB boxToScan = AxisAlignedBB.getBoundingBox(start.xCoord, start.yCoord, start.zCoord, end.xCoord, end.yCoord, end.zCoord); - List entitiesHit = null; - if (exclude != null) - { - entitiesHit = world.getEntitiesWithinAABBExcludingEntity(exclude, boxToScan); - } - else - { - entitiesHit = world.getEntitiesWithinAABB(Entity.class, boxToScan); - } - MovingObjectPosition pickedEntity = null; - double closestEntity = range; - - if (entitiesHit == null || entitiesHit.isEmpty()) - { - return null; - } - for (Entity entityHit : entitiesHit) - { - if (entityHit != null && entityHit.canBeCollidedWith() && entityHit.boundingBox != null) - { - float border = entityHit.getCollisionBorderSize(); - AxisAlignedBB aabb = entityHit.boundingBox.expand(border, border, border); - MovingObjectPosition hitMOP = aabb.calculateIntercept(start, end); - - if (hitMOP != null) - { - if (aabb.isVecInside(start)) - { - if (0.0D < closestEntity || closestEntity == 0.0D) - { - pickedEntity = new MovingObjectPosition(entityHit); - if (pickedEntity != null) - { - pickedEntity.hitVec = hitMOP.hitVec; - closestEntity = 0.0D; - } - } - } - else - { - double distance = start.distanceTo(hitMOP.hitVec); - - if (distance < closestEntity || closestEntity == 0.0D) - { - pickedEntity = new MovingObjectPosition(entityHit); - pickedEntity.hitVec = hitMOP.hitVec; - closestEntity = distance; - } - } - } - } - } - return pickedEntity; - } - - public static MovingObjectPosition raytraceBlocks_fromAnEntity(World world, Entity entity, Vec3 error, double reachDistance, boolean collisionFlag) - { - Vec3 playerPosition = Vec3.createVectorHelper(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ); - Vec3 playerLook = entity.getLookVec(); - - Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * reachDistance + error.xCoord, playerPosition.yCoord + playerLook.yCoord * reachDistance + error.yCoord, playerPosition.zCoord + playerLook.zCoord * reachDistance + error.zCoord); - return raytraceBlocks(world, playerPosition, playerViewOffset, collisionFlag); - } - - public static MovingObjectPosition raytraceBlocks_fromAnEntity(World world, Entity entity, double reachDistance, boolean collisionFlag) - { - Vec3 playerPosition = Vec3.createVectorHelper(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ); - Vec3 playerLook = entity.getLookVec(); - - Vec3 playerViewOffset = Vec3.createVectorHelper(playerPosition.xCoord + playerLook.xCoord * reachDistance, playerPosition.yCoord + playerLook.yCoord * reachDistance, playerPosition.zCoord + playerLook.zCoord * reachDistance); - return raytraceBlocks(world, playerPosition, playerViewOffset, collisionFlag); - } - - public static MovingObjectPosition raytraceBlocks(World world, Vec3 start, Vec3 end, boolean collisionFlag) - { - return world.rayTraceBlocks_do_do(start, end, collisionFlag, !collisionFlag); - } - - public static Vector3 getPosFromRotation(final Vector3 center, float reachDistance, float yaw, float pitch) - { - return center.clone().translate(getLook(yaw, pitch, 1.0F).scale(reachDistance)); - } - - /** Does a ray trace from start to end vector - * - * @param world - world to do the ray trace in - * @param start - starting point clear of any collisions from its caster - * @param end - end point - * @param collisionFlag - * @return */ - public static MovingObjectPosition ray_trace_do(final World world, final Vec3 start, final Vec3 end, final float range, boolean collisionFlag) - { - MovingObjectPosition hitBlock = raytraceBlocks(world, new Vector3(start).toVec3(), new Vector3(end).toVec3(), collisionFlag); - MovingObjectPosition hitEntity = raytraceEntities(world, start, end, range, collisionFlag, null); - if (hitEntity == null) - { - return hitBlock; - } - else if (hitBlock == null) - { - return hitEntity; - } - else - { - if (hitEntity.hitVec.distanceTo(start) < hitBlock.hitVec.distanceTo(start)) - { - return hitEntity; - } - else - { - return hitBlock; - } - } - } - - /** Does a ray trace from an entities look angle out to a set distance from the entity - * - * @param entity - entity who's view angles will be used for finding the start and end points of - * the ray - * @param e - error(or adjustments) to add to it if this ray is being used for weapon - * calculations - * @param reachDistance - distance the ray will extend to - * @param collisionFlag - * @return */ - public static MovingObjectPosition do_rayTraceFromEntity(Entity entity, Vec3 e, double reachDistance, boolean collisionFlag) - { - - MovingObjectPosition hitBlock = raytraceBlocks_fromAnEntity(entity.worldObj, entity, e, reachDistance, collisionFlag); - MovingObjectPosition hitEntity = raytraceEntities_fromAnEntity(entity.worldObj, entity, e, reachDistance, collisionFlag); - if (hitEntity == null) - { - return hitBlock; - } - else if (hitBlock == null) - { - return hitEntity; - } - else - { - Vec3 playerPosition = Vec3.createVectorHelper(entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ); - if (hitEntity.hitVec.distanceTo(playerPosition) < hitBlock.hitVec.distanceTo(playerPosition)) - { - return hitEntity; - } - else - { - return hitBlock; - } - } - } - - public static Vec3 getLook(Entity entity, float par1) - { - float f1; - float f2; - float f3; - float f4; - - if (par1 == 1.0F) - { - f1 = MathHelper.cos(-entity.rotationYaw * 0.017453292F - (float) Math.PI); - f2 = MathHelper.sin(-entity.rotationYaw * 0.017453292F - (float) Math.PI); - f3 = -MathHelper.cos(-entity.rotationPitch * 0.017453292F); - f4 = MathHelper.sin(-entity.rotationPitch * 0.017453292F); - return entity.worldObj.getWorldVec3Pool().getVecFromPool((f2 * f3), f4, (f1 * f3)); - } - else - { - f1 = entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * par1; - f2 = entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * par1; - f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); - f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); - float f5 = -MathHelper.cos(-f1 * 0.017453292F); - float f6 = MathHelper.sin(-f1 * 0.017453292F); - return entity.worldObj.getWorldVec3Pool().getVecFromPool((f4 * f5), f6, (f3 * f5)); - } - } - - public static Vector3 getLook(float yaw, float pitch, float distance) - { - float f1, f2, f3, f4; - - if (distance == 1.0F) - { - f1 = MathHelper.cos(-yaw * 0.017453292F - (float) Math.PI); - f2 = MathHelper.sin(-yaw * 0.017453292F - (float) Math.PI); - f3 = -MathHelper.cos(-pitch * 0.017453292F); - f4 = MathHelper.sin(-pitch * 0.017453292F); - return new Vector3((f2 * f3), f4, (f1 * f3)); - } - else - { - f1 = pitch * distance; - f2 = yaw * distance; - f3 = MathHelper.cos(-f2 * 0.017453292F - (float) Math.PI); - f4 = MathHelper.sin(-f2 * 0.017453292F - (float) Math.PI); - float f5 = -MathHelper.cos(-f1 * 0.017453292F); - float f6 = MathHelper.sin(-f1 * 0.017453292F); - return new Vector3((f4 * f5), f6, (f3 * f5)); - } - } -} From 2300100bbd8fe01c7d151ffbd1143b339fe06303 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 8 May 2014 08:21:42 -0400 Subject: [PATCH 133/144] Fixed energy drain issue with laser --- .../electrical/laser/gun/ItemMiningLaser.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index a91bd0858..db6b8d527 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -197,7 +197,10 @@ public class ItemMiningLaser extends ItemEnergyTool miningMap.remove(player); } if (this.energyUsedMap.containsKey(player)) + { discharge(stack, this.energyUsedMap.get(player), true); + this.energyUsedMap.remove(player); + } } @Override From 8f9ff1154e578c0f81f01306de453ecc86b62968 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 8 May 2014 08:52:19 -0400 Subject: [PATCH 134/144] Made laser gun dump energy cache when laser gun is not held by player --- .../electrical/laser/gun/ItemMiningLaser.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index db6b8d527..31e2fb5ff 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -76,6 +76,10 @@ public class ItemMiningLaser extends ItemEnergyTool { this.miningMap.remove(player); } + if (this.energyUsedMap.containsKey(player)) + { + this.energyUsedMap.remove(player); + } } } } From 9e8ae6ade3a21378dcdae69a180d25e55ab6bb04 Mon Sep 17 00:00:00 2001 From: Robert S Date: Thu, 8 May 2014 10:11:31 -0400 Subject: [PATCH 135/144] Fixed double laser render, and laser fade for laser gun --- .../electrical/laser/gun/ItemMiningLaser.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 31e2fb5ff..90a6a8769 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -166,14 +166,17 @@ public class ItemMiningLaser extends ItemEnergyTool } playerViewOffset = hit.hitVec; + } - //TODO make beam brighter the longer it has been used - //TODO adjust the laser for the end of the gun + //Only call client as the server can render stuff threw packets + if (player.worldObj.isRemote) + { float x = (float) (MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.4) - MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); float z = (float) (MathHelper.sin((float) (player.rotationYawHead * 0.0174532925)) * (-.4) + MathHelper.cos((float) (player.rotationYawHead * 0.0174532925)) * (-.1)); - ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); - ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3) new Vector3(playerViewOffset), Color.ORANGE, 1); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.25, z)), (IVector3) new Vector3(playerViewOffset), Color.red, 5); + ResonantInduction.proxy.renderBeam(player.worldObj, (IVector3) new Vector3(p).translate(new Vector3(x, -.45, z)), (IVector3) new Vector3(playerViewOffset), Color.red, 5); } + } } From a57b5fafe8b8039673a23c8daa49cb237adbbb4b Mon Sep 17 00:00:00 2001 From: tgame14 Date: Sun, 11 May 2014 18:03:38 +0300 Subject: [PATCH 136/144] removed unneeded event listener --- .../scala/resonantinduction/core/ResonantInduction.java | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/main/scala/resonantinduction/core/ResonantInduction.java b/src/main/scala/resonantinduction/core/ResonantInduction.java index 516c5f9a9..c62ca37ac 100644 --- a/src/main/scala/resonantinduction/core/ResonantInduction.java +++ b/src/main/scala/resonantinduction/core/ResonantInduction.java @@ -138,15 +138,6 @@ public class ResonantInduction Settings.CONFIGURATION.save(); } - @ForgeSubscribe - public void configAnnotationAdded(ConfigAnnotationEvent event) - { - if (event.sourceClass.getName().startsWith(Settings.DOMAIN)) - { - ConfigHandler.handleClass(event.sourceClass, Settings.CONFIGURATION); - } - } - /** * Recipe Types */ From 1fe288a3960351932d6a529fd7f7229b2d638c2a Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 12 May 2014 03:11:40 -0400 Subject: [PATCH 137/144] Worked on Tank's item block to support fluid containers better --- .../fluid/tank/ItemBlockFluidContainer.java | 138 ---------- .../archaic/fluid/tank/ItemBlockTank.java | 245 ++++++++++++++++++ .../archaic/fluid/tank/TileTank.java | 4 +- 3 files changed, 247 insertions(+), 140 deletions(-) delete mode 100644 archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockFluidContainer.java create mode 100644 archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockTank.java diff --git a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockFluidContainer.java b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockFluidContainer.java deleted file mode 100644 index 7f1dbc4f8..000000000 --- a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockFluidContainer.java +++ /dev/null @@ -1,138 +0,0 @@ -package resonantinduction.archaic.fluid.tank; - -import java.util.List; - -import net.minecraft.block.Block; -import net.minecraft.entity.Entity; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemBlock; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; -import net.minecraft.tileentity.TileEntity; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.fluids.FluidStack; -import resonantinduction.archaic.Archaic; -import resonantinduction.core.fluid.TileFluidDistribution; -import universalelectricity.api.energy.UnitDisplay; -import universalelectricity.api.energy.UnitDisplay.Unit; -import universalelectricity.api.energy.UnitDisplay.UnitPrefix; -import universalelectricity.api.vector.Vector3; -import calclavia.lib.utility.LanguageUtility; - -/** @author Darkguardsman */ -public class ItemBlockFluidContainer extends ItemBlock -{ - public ItemBlockFluidContainer(int id) - { - super(id); - this.setMaxDamage(0); - this.setHasSubtypes(true); - } - - @Override - public int getMetadata(int damage) - { - return damage; - } - - @Override - public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) - { - if (stack.getTagCompound() != null && stack.getTagCompound().hasKey("fluid")) - { - FluidStack fluid = FluidStack.loadFluidStackFromNBT(stack.getTagCompound().getCompoundTag("fluid")); - - if (fluid != null) - { - list.add("Fluid: " + fluid.getFluid().getLocalizedName()); - list.add("Volume: " + UnitDisplay.getDisplay(fluid.amount, Unit.LITER, UnitPrefix.MILLI)); - } - } - } - - public static ItemStack getWrenchedItem(World world, Vector3 vec) - { - TileEntity entity = vec.getTileEntity(world); - - if (entity instanceof TileTank && ((TileTank) entity).getInternalTank() != null && ((TileTank) entity).getInternalTank().getFluid() != null) - { - ItemStack itemStack = new ItemStack(Archaic.blockTank); - - FluidStack stack = ((TileTank) entity).getInternalTank().getFluid(); - - if (itemStack.getTagCompound() == null) - { - itemStack.setTagCompound(new NBTTagCompound()); - } - if (stack != null) - { - ((TileTank) entity).drain(ForgeDirection.UNKNOWN, stack.amount, true); - itemStack.getTagCompound().setCompoundTag("fluid", stack.writeToNBT(new NBTTagCompound())); - } - return itemStack; - } - - return null; - } - - @Override - public void onUpdate(ItemStack itemStack, World par2World, Entity entity, int par4, boolean par5) - { - if (entity instanceof EntityPlayer) - { - EntityPlayer player = (EntityPlayer) entity; - - if (itemStack.getTagCompound() != null && !player.capabilities.isCreativeMode && itemStack.getTagCompound().hasKey("fluid")) - { - player.addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 5, 0)); - } - } - } - - @Override - public int getItemStackLimit(ItemStack stack) - { - if (stack.getTagCompound() != null && stack.getTagCompound().hasKey("fluid")) - { - return 1; - } - return this.maxStackSize; - } - - @Override - public String getUnlocalizedName(ItemStack itemStack) - { - String translation = LanguageUtility.getLocal(Block.blocksList[this.getBlockID()].getUnlocalizedName() + "." + itemStack.getItemDamage()); - - if (translation == null || translation.isEmpty()) - { - return Block.blocksList[this.getBlockID()].getUnlocalizedName(); - } - - return Block.blocksList[this.getBlockID()].getUnlocalizedName() + "." + itemStack.getItemDamage(); - } - - @Override - public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) - { - if (super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata)) - { - TileEntity tile = world.getBlockTileEntity(x, y, z); - if (tile instanceof TileFluidDistribution) - { - ((TileFluidDistribution) tile).setSubID(stack.getItemDamage()); - - if (stack.getTagCompound() != null && stack.getTagCompound().hasKey("fluid")) - { - ((TileFluidDistribution) tile).getInternalTank().fill(FluidStack.loadFluidStackFromNBT(stack.getTagCompound().getCompoundTag("fluid")), true); - } - } - return true; - } - - return false; - } -} diff --git a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockTank.java b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockTank.java new file mode 100644 index 000000000..b73dc5c69 --- /dev/null +++ b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockTank.java @@ -0,0 +1,245 @@ +package resonantinduction.archaic.fluid.tank; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.IFluidContainerItem; +import resonantinduction.archaic.Archaic; +import resonantinduction.core.fluid.TileFluidDistribution; +import universalelectricity.api.energy.UnitDisplay; +import universalelectricity.api.energy.UnitDisplay.Unit; +import universalelectricity.api.energy.UnitDisplay.UnitPrefix; +import universalelectricity.api.vector.Vector3; +import calclavia.lib.utility.LanguageUtility; + +/** @author Darkguardsman */ +public class ItemBlockTank extends ItemBlock implements IFluidContainerItem +{ + public ItemBlockTank(int id) + { + super(id); + this.setMaxDamage(0); + this.setHasSubtypes(true); + } + + @Override + public int getMetadata(int damage) + { + return damage; + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) + { + if (stack.getTagCompound() != null && stack.getTagCompound().hasKey("fluid")) + { + FluidStack fluid = getFluid(stack); + + if (fluid != null) + { + list.add("Fluid: " + fluid.getFluid().getLocalizedName()); + list.add("Volume: " + UnitDisplay.getDisplay(fluid.amount, Unit.LITER, UnitPrefix.MILLI)); + } + } + } + + public static ItemStack getWrenchedItem(World world, Vector3 vec) + { + TileEntity entity = vec.getTileEntity(world); + + if (entity instanceof TileTank && ((TileTank) entity).getInternalTank() != null && ((TileTank) entity).getInternalTank().getFluid() != null) + { + ItemStack itemStack = new ItemStack(Archaic.blockTank); + + FluidStack stack = ((TileTank) entity).getInternalTank().getFluid(); + + if (stack != null) + { + if (itemStack.getTagCompound() == null) + { + itemStack.setTagCompound(new NBTTagCompound()); + } + ((TileTank) entity).drain(ForgeDirection.UNKNOWN, stack.amount, true); + itemStack.getTagCompound().setCompoundTag("fluid", stack.writeToNBT(new NBTTagCompound())); + } + return itemStack; + } + + return null; + } + + @Override + public int getItemStackLimit(ItemStack stack) + { + if (stack.getTagCompound() != null && stack.getTagCompound().hasKey("fluid")) + { + return 1; + } + return this.maxStackSize; + } + + @Override + public String getUnlocalizedName(ItemStack itemStack) + { + String translation = LanguageUtility.getLocal(Block.blocksList[this.getBlockID()].getUnlocalizedName() + "." + itemStack.getItemDamage()); + + if (translation == null || translation.isEmpty()) + { + return Block.blocksList[this.getBlockID()].getUnlocalizedName(); + } + + return Block.blocksList[this.getBlockID()].getUnlocalizedName() + "." + itemStack.getItemDamage(); + } + + @Override + public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) + { + if (super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata)) + { + TileEntity tile = world.getBlockTileEntity(x, y, z); + if (tile instanceof TileFluidDistribution) + { + ((TileFluidDistribution) tile).setSubID(stack.getItemDamage()); + ((TileFluidDistribution) tile).getInternalTank().fill(getFluid(stack), true); + + } + return true; + } + + return false; + } + + @Override + public FluidStack getFluid(ItemStack container) + { + if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("fluid")) + { + return null; + } + return FluidStack.loadFluidStackFromNBT(container.stackTagCompound.getCompoundTag("fluid")); + } + + @Override + public int getCapacity(ItemStack container) + { + return TileTank.VOLUME; + } + + @Override + public int fill(ItemStack container, FluidStack resource, boolean doFill) + { + if (resource == null) + { + return 0; + } + + if (!doFill) + { + if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("fluid")) + { + return Math.min(getCapacity(container), resource.amount); + } + + FluidStack stack = FluidStack.loadFluidStackFromNBT(container.stackTagCompound.getCompoundTag("fluid")); + + if (stack == null) + { + return Math.min(getCapacity(container), resource.amount); + } + + if (!stack.isFluidEqual(resource)) + { + return 0; + } + + return Math.min(getCapacity(container) - stack.amount, resource.amount); + } + + if (container.stackTagCompound == null) + { + container.stackTagCompound = new NBTTagCompound(); + } + + if (!container.stackTagCompound.hasKey("fluid")) + { + NBTTagCompound fluidTag = resource.writeToNBT(new NBTTagCompound()); + + if (getCapacity(container) < resource.amount) + { + fluidTag.setInteger("Amount", getCapacity(container)); + container.stackTagCompound.setTag("fluid", fluidTag); + return getCapacity(container); + } + + container.stackTagCompound.setTag("fluid", fluidTag); + return resource.amount; + } + + NBTTagCompound fluidTag = container.stackTagCompound.getCompoundTag("fluid"); + FluidStack stack = FluidStack.loadFluidStackFromNBT(fluidTag); + + if (!stack.isFluidEqual(resource)) + { + return 0; + } + + int filled = getCapacity(container) - stack.amount; + if (resource.amount < filled) + { + stack.amount += resource.amount; + filled = resource.amount; + } + else + { + stack.amount = getCapacity(container); + } + + container.stackTagCompound.setTag("fluid", stack.writeToNBT(fluidTag)); + return filled; + } + + @Override + public FluidStack drain(ItemStack container, int maxDrain, boolean doDrain) + { + if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("fluid") || maxDrain == 0) + { + return null; + } + + FluidStack stack = FluidStack.loadFluidStackFromNBT(container.stackTagCompound.getCompoundTag("fluid")); + if (stack == null) + { + return null; + } + + int drained = Math.min(stack.amount, maxDrain); + if (doDrain) + { + if (maxDrain >= stack.amount) + { + container.stackTagCompound.removeTag("fluid"); + + if (container.stackTagCompound.hasNoTags()) + { + container.stackTagCompound = null; + } + return stack; + } + + NBTTagCompound fluidTag = container.stackTagCompound.getCompoundTag("fluid"); + fluidTag.setInteger("Amount", fluidTag.getInteger("Amount") - maxDrain); + container.stackTagCompound.setTag("fluid", fluidTag); + } + stack.amount = drained; + return stack; + } +} diff --git a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.java b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.java index ea5e2550c..54cc8b7bb 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.java +++ b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.java @@ -40,7 +40,7 @@ public class TileTank extends TileFluidDistribution implements IComparatorInputO this.getInternalTank().setCapacity(VOLUME * FluidContainerRegistry.BUCKET_VOLUME); isOpaqueCube = false; normalRender = false; - itemBlock = ItemBlockFluidContainer.class; + itemBlock = ItemBlockTank.class; } @Override @@ -56,7 +56,7 @@ public class TileTank extends TileFluidDistribution implements IComparatorInputO { if (player.isSneaking()) { - ItemStack dropStack = ItemBlockFluidContainer.getWrenchedItem(world(), position()); + ItemStack dropStack = ItemBlockTank.getWrenchedItem(world(), position()); if (dropStack != null) { if (player.getHeldItem() == null) From cbe00a617ddfafae81916fe3b4d19eaa88409140 Mon Sep 17 00:00:00 2001 From: Robert S Date: Mon, 12 May 2014 05:08:38 -0400 Subject: [PATCH 138/144] Fixed dupe issue with mixer, no longer break but does dead --- .../mechanical/process/purifier/TileMixer.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java index eefe110a8..edf6c2f1e 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java @@ -34,6 +34,8 @@ public class TileMixer extends TileMechanical implements IInventory public static final long POWER = 500000; public static final int PROCESS_TIME = 12 * 20; public static final Timer timer = new Timer(); + + private boolean areaBlockedFromMoving = false; public TileMixer() { @@ -60,6 +62,7 @@ public class TileMixer extends TileMechanical implements IInventory { if (!world().isRemote && ticks % 20 == 0) { + this.areaBlockedFromMoving = false; for (int x = -1; x <= 1; x++) { for (int z = -1; z <= 1; z++) @@ -71,8 +74,7 @@ public class TileMixer extends TileMechanical implements IInventory if (block != null && !(block instanceof IFluidBlock) && !(block instanceof BlockFluid)) { - block.dropBlockAsItem(world(), x(), y(), z(), 0, 0); - position().setBlock(0); + this.areaBlockedFromMoving = true; return; } } @@ -95,7 +97,7 @@ public class TileMixer extends TileMechanical implements IInventory */ public boolean canWork() { - return mechanicalNode.getAngularVelocity() != 0; + return mechanicalNode.getAngularVelocity() != 0 && areaBlockedFromMoving; } public void doWork() From 7615acc605c06123e4c98737095491492b574cf8 Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 14 May 2014 01:32:00 -0400 Subject: [PATCH 139/144] Updated to use Resonant-Engine as the core mod --- .../resonantinduction/archaic/Archaic.java | 12 +- .../archaic/CommonProxy.java | 2 +- .../archaic/blocks/TileTurntable.scala | 92 +++++------- .../archaic/crate/BlockCrate.java | 7 +- .../archaic/crate/InventoryCrate.java | 2 +- .../archaic/crate/ItemBlockCrate.java | 4 +- .../archaic/crate/RenderCrate.java | 4 +- .../archaic/crate/TileCrate.java | 10 +- .../engineering/TileEngineeringTable.java | 36 ++--- .../archaic/filter/BlockImprinter.java | 4 +- .../archaic/filter/RenderImprinter.java | 2 +- .../archaic/filter/TileFilter.java | 20 +-- .../archaic/filter/TileImprinter.java | 6 +- .../archaic/firebox/BlockFirebox.java | 4 +- .../archaic/firebox/BlockHotPlate.java | 2 +- .../archaic/firebox/RenderHotPlate.java | 2 +- .../archaic/firebox/TileFirebox.java | 21 ++- .../archaic/firebox/TileHotPlate.java | 8 +- .../archaic/fluid/grate/TileGrate.java | 26 ++-- .../archaic/fluid/gutter/TileGutter.java | 37 +++-- .../archaic/fluid/tank/ItemBlockTank.java | 2 +- .../archaic/fluid/tank/TankNetwork.java | 3 +- .../archaic/fluid/tank/TileTank.java | 26 ++-- .../archaic/process/BlockCastingMold.java | 6 +- .../archaic/process/BlockMillstone.java | 4 +- .../archaic/process/RenderCastingMold.java | 4 +- .../archaic/process/RenderMillstone.java | 2 +- .../archaic/process/TileCastingMold.java | 12 +- .../archaic/process/TileMillstone.java | 12 +- .../archaic/waila/Waila.java | 4 +- .../archaic/waila/WailaCrate.java | 2 +- .../archaic/waila/WailaFluidTank.java | 2 +- .../electrical/ClientProxy.java | 3 +- .../electrical/CommonProxy.java | 2 +- .../electrical/Electrical.java | 8 +- .../electrical/armbot/BlockArmbot.java | 142 +++++++++--------- .../electrical/armbot/Program.java | 2 +- .../electrical/armbot/RenderArmbot.java | 4 +- .../electrical/armbot/TaskBase.java | 2 +- .../electrical/armbot/TaskBaseProcess.java | 6 +- .../electrical/armbot/TileArmbot.java | 14 +- .../electrical/armbot/task/TaskBreak.java | 4 +- .../electrical/armbot/task/TaskFire.java | 4 +- .../electrical/armbot/task/TaskGive.java | 6 +- .../armbot/task/TaskGrabEntity.java | 8 +- .../electrical/armbot/task/TaskGrabItem.java | 2 +- .../armbot/task/TaskGrabPrefab.java | 8 +- .../electrical/armbot/task/TaskIdle.java | 2 +- .../electrical/armbot/task/TaskRotateBy.java | 4 +- .../electrical/armbot/task/TaskRotateTo.java | 4 +- .../electrical/armbot/task/TaskTake.java | 6 +- .../electrical/armbot/task/TaskUse.java | 2 +- .../electrical/battery/BlockBattery.java | 7 +- .../battery/EnergyDistributionNetwork.java | 1 - .../electrical/battery/ItemBlockBattery.java | 4 +- .../electrical/battery/RenderBattery.java | 4 +- .../electrical/battery/TileBattery.java | 4 +- .../battery/TileEnergyDistribution.java | 2 +- .../electrical/charger/PartCharger.java | 4 +- .../electrical/charger/RenderCharger.java | 6 +- .../distributor/TileDistributor.scala | 21 ++- .../electrical/encoder/BlockEncoder.java | 2 +- .../electrical/encoder/TileEncoder.java | 6 +- .../encoder/coding/IProgrammableMachine.java | 2 +- .../electrical/encoder/coding/ITask.java | 2 +- .../encoder/gui/ContainerEncoder.java | 4 +- .../encoder/gui/GuiEncoderBase.java | 4 +- .../encoder/gui/GuiEncoderEditTask.java | 4 +- .../encoder/gui/GuiEncoderTaskList.java | 2 +- .../electrical/generator/BlockMotor.java | 4 +- .../electrical/generator/RenderMotor.java | 4 +- .../electrical/generator/TileMotor.java | 12 +- .../generator/solar/TileSolarPanel.java | 12 +- .../generator/thermopile/BlockThermopile.java | 2 +- .../generator/thermopile/TileThermopile.java | 2 +- .../electrical/itemrailing/GridRailing.java | 7 +- .../itemrailing/ItemItemRailing.java | 10 +- .../itemrailing/ItemRailingTransfer.java | 6 +- .../electrical/itemrailing/NodeRailing.java | 19 ++- .../electrical/itemrailing/PartRailing.java | 10 +- .../RailingDistanceComparator.java | 6 +- .../electrical/itemrailing/RenderRailing.java | 2 +- .../itemrailing/interfaces/IItemRailing.java | 8 +- .../interfaces/IItemRailingProvider.java | 3 +- .../interfaces/IItemRailingTransfer.java | 2 +- .../electrical/laser/gun/ItemMiningLaser.java | 6 +- .../laser/gun/ItemThermalLaser.java | 20 +-- .../laser/gun/RenderMiningLaserGun.java | 1 - .../electrical/levitator/ItemLevitator.java | 2 - .../electrical/levitator/PartLevitator.java | 30 ++-- .../levitator/PathfinderLevitator.java | 6 +- .../electrical/levitator/RenderLevitator.java | 4 +- .../electrical/multimeter/Graph.java | 2 +- .../electrical/multimeter/GuiMultimeter.java | 6 +- .../electrical/multimeter/ItemMultimeter.java | 4 +- .../multimeter/MultimeterNetwork.java | 2 +- .../electrical/multimeter/PartMultimeter.java | 8 +- .../multimeter/RenderMultimeter.java | 6 +- .../electrical/tesla/BlockTesla.java | 10 +- .../electrical/tesla/TileTesla.java | 17 +-- .../transformer/PartTransformer.java | 2 +- .../transformer/RenderTransformer.java | 4 +- .../electrical/wire/ItemWire.java | 4 +- .../electrical/wire/PartAdvancedWire.java | 5 +- .../wire/framed/PartFramedWire.java | 2 +- .../quantum/gate/IQuantumGate.java | 2 +- .../quantum/gate/PartQuantumGlyph.java | 8 +- .../quantum/gate/RenderQuantumGlyph.java | 4 +- .../quantum/gate/TraitQuantumGate.java | 2 +- .../mechanical/ClientProxy.java | 2 +- .../mechanical/CommonProxy.java | 2 +- .../mechanical/Mechanical.java | 75 +++++---- .../mechanical/belt/BeltNetwork.java | 2 +- .../mechanical/belt/BlockConveyorBelt.java | 4 +- .../mechanical/belt/RenderConveyorBelt.java | 2 +- .../mechanical/belt/TileConveyorBelt.java | 14 +- .../energy/gear/ConnectionLogic.java | 2 +- .../energy/gear/GearMultiBlockHandler.java | 2 +- .../mechanical/energy/gear/PartGear.java | 12 +- .../mechanical/energy/gear/PartGearShaft.java | 24 ++- .../mechanical/energy/gear/RenderGear.java | 4 +- .../energy/gearshaft/GearShaftNode.java | 4 +- .../energy/gearshaft/RenderGearShaft.java | 4 +- .../energy/gearshaft/ShaftGrid.java | 2 +- .../energy/gearshaft/ShaftSubNode.java | 4 +- .../energy/grid/MechanicalNode.java | 16 +- .../mechanical/energy/grid/PacketNetwork.java | 4 +- .../energy/grid/PartMechanical.java | 4 +- .../energy/grid/TileMechanical.java | 10 +- .../energy/turbine/BlockTurbineBase.java | 2 +- .../energy/turbine/BlockWaterTurbine.java | 2 +- .../energy/turbine/BlockWindTurbine.java | 2 +- .../energy/turbine/RenderWaterTurbine.java | 4 +- .../energy/turbine/RenderWindTurbine.java | 4 +- .../energy/turbine/SchematicWaterTurbine.java | 4 +- .../energy/turbine/SchematicWindTurbine.java | 4 +- .../energy/turbine/TileMechanicalTurbine.java | 13 +- .../energy/turbine/TileTurbineBase.java | 17 ++- .../energy/turbine/TileWaterTurbine.java | 2 +- .../energy/turbine/TileWindTurbine.java | 10 +- .../energy/turbine/TurbineMBlockHandler.java | 2 +- .../mechanical/fluid/pipe/ItemPipe.java | 4 +- .../mechanical/fluid/pipe/PartPipe.java | 4 +- .../mechanical/fluid/pipe/RenderPipe.java | 8 +- .../fluid/transport/RenderPump.java | 2 +- .../mechanical/fluid/transport/TilePump.java | 4 +- .../logistic/belt/BlockManipulator.java | 2 +- .../logistic/belt/BlockRejector.java | 2 +- .../logistic/belt/TileDetector.java | 4 +- .../logistic/belt/TileManipulator.java | 8 +- .../logistic/belt/TileRejector.java | 8 +- .../mechanical/logistic/belt/TileSorter.java | 14 +- .../crusher/RenderMechanicalPiston.java | 8 +- .../process/crusher/TileMechanicalPiston.java | 12 +- .../mechanical/process/edit/TileBreaker.java | 24 +-- .../mechanical/process/edit/TilePlacer.java | 32 ++-- .../process/grinder/RenderGrindingWheel.java | 2 +- .../process/grinder/TileGrindingWheel.java | 13 +- .../process/purifier/RenderMixer.java | 4 +- .../process/purifier/TileMixer.java | 14 +- .../resonantinduction/core/ArgumentData.java | 4 +- .../resonantinduction/core/ClientProxy.java | 2 +- .../resonantinduction/core/CommonProxy.java | 2 +- .../core/ResonantInduction.java | 52 ++++--- .../resonantinduction/core/Settings.java | 6 +- .../core/fluid/TileFluidDistribution.java | 2 +- .../core/fluid/TileFluidNode.java | 8 +- .../core/fluid/TilePressureNode.java | 4 +- .../core/grid/TraitNodeProvider.java | 4 +- .../core/grid/fluid/FluidPressureNode.java | 14 +- .../grid/fluid/IPressureNodeProvider.java | 2 +- .../core/handler/TextureHookHandler.java | 2 +- .../core/nei/RICrusherRecipeHandler.java | 2 +- .../core/nei/RIGrinderRecipeHandler.java | 2 +- .../core/nei/RIMixerRecipeHandler.java | 2 +- .../core/nei/RISawmillRecipeHandler.java | 2 +- .../core/nei/RISmelterRecipeHandler.java | 2 +- .../core/nei/RITemplateRecipeHandler.java | 12 +- .../core/prefab/imprint/BlockImprintable.java | 4 +- .../core/prefab/imprint/ItemImprint.java | 4 +- .../core/prefab/imprint/TileFilterable.java | 6 +- .../core/prefab/items/ItemEnergyTool.java | 7 +- .../core/prefab/items/ItemTool.java | 4 +- .../core/prefab/part/PacketMultiPart.java | 4 +- .../core/prefab/part/PartFramedNode.java | 6 +- .../core/prefab/part/PartInventoryPanel.java | 6 +- .../core/render/RenderImprintable.java | 2 +- .../core/resource/BlockDust.java | 10 +- .../core/resource/BlockMachineMaterial.java | 2 +- .../core/resource/ItemOreResource.java | 10 +- .../core/resource/ResourceGenerator.java | 45 +++--- .../core/resource/TileMaterial.java | 7 +- .../resource/fluid/BlockFluidMixture.java | 2 +- .../resource/fluid/ItemOreResourceBucket.java | 2 +- .../core/resource/fluid/TileFluidMixture.java | 2 +- 195 files changed, 813 insertions(+), 820 deletions(-) diff --git a/archaic/src/main/scala/resonantinduction/archaic/Archaic.java b/archaic/src/main/scala/resonantinduction/archaic/Archaic.java index c8567da83..7b4a7a4e5 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/Archaic.java +++ b/archaic/src/main/scala/resonantinduction/archaic/Archaic.java @@ -5,6 +5,12 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; +import resonant.lib.content.ContentRegistry; +import resonant.lib.modproxy.ProxyHandler; +import resonant.lib.network.PacketAnnotation; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.item.ItemBlockMetadata; +import resonant.lib.recipe.UniversalRecipe; import resonantinduction.archaic.blocks.TileTurntable; import resonantinduction.archaic.crate.BlockCrate; import resonantinduction.archaic.crate.ItemBlockCrate; @@ -32,12 +38,6 @@ import resonantinduction.core.Settings; import resonantinduction.core.TabRI; import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.core.resource.ItemHandCrank; -import calclavia.lib.content.ContentRegistry; -import calclavia.lib.modproxy.ProxyHandler; -import calclavia.lib.network.PacketAnnotation; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.item.ItemBlockMetadata; -import calclavia.lib.recipe.UniversalRecipe; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; diff --git a/archaic/src/main/scala/resonantinduction/archaic/CommonProxy.java b/archaic/src/main/scala/resonantinduction/archaic/CommonProxy.java index 805cbfecc..0e02ddc7b 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/CommonProxy.java +++ b/archaic/src/main/scala/resonantinduction/archaic/CommonProxy.java @@ -1,6 +1,6 @@ package resonantinduction.archaic; -import calclavia.lib.prefab.ProxyBase; +import resonant.lib.prefab.ProxyBase; public class CommonProxy extends ProxyBase { diff --git a/archaic/src/main/scala/resonantinduction/archaic/blocks/TileTurntable.scala b/archaic/src/main/scala/resonantinduction/archaic/blocks/TileTurntable.scala index 9416d7de8..b71bdbe0c 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/blocks/TileTurntable.scala +++ b/archaic/src/main/scala/resonantinduction/archaic/blocks/TileTurntable.scala @@ -1,5 +1,7 @@ package resonantinduction.archaic.blocks +import codechicken.multipart.TileMultipart +import cpw.mods.fml.relauncher.SideOnly import net.minecraft.block.Block import net.minecraft.block.material.Material import net.minecraft.client.renderer.texture.IconRegister @@ -8,110 +10,92 @@ import net.minecraft.util.Icon import net.minecraft.world.IBlockAccess import net.minecraft.world.World import net.minecraftforge.common.ForgeDirection +import resonant.api.IRotatable +import resonant.api.blocks.IRotatableBlock +import resonant.api.blocks.IRotatableBlock +import resonant.lib.content.module.TileBlock +import resonant.lib.content.module.TileRender +import resonant.lib.render.RotatedTextureRenderer import resonantinduction.core.Reference import universalelectricity.api.vector.Vector3 -import calclavia.lib.prefab.block.IRotatableBlock -import calclavia.lib.prefab.tile.IRotatable -import codechicken.multipart.TileMultipart import cpw.mods.fml.relauncher.Side -import cpw.mods.fml.relauncher.SideOnly -import calclavia.lib.content.module.{TileRender, TileBlock} -import calclavia.lib.render.RotatedTextureRenderer -class TileTurntable extends TileBlock(Material.piston) with IRotatable -{ +class TileTurntable extends TileBlock(Material.piston) with IRotatable { textureName = "turntable_side" tickRandomly = true rotationMask = Integer.parseInt("111111", 2).toByte override def tickRate(par1World: World): Int = - { - return 5 - } + { + return 5 + } - @SideOnly(Side.CLIENT) override def registerIcons(iconReg: IconRegister) - { + @SideOnly(Side.CLIENT) override def registerIcons(iconReg: IconRegister) { super.registerIcons(iconReg) TileTurntable.top = iconReg.registerIcon(Reference.PREFIX + "turntable") } - override def updateEntity() - { + override def updateEntity() { updateTurntableState(world, x, y, z) } @SideOnly(Side.CLIENT) override def getIcon(access: IBlockAccess, side: Int): Icon = - { - if (side == super.metadata()) { - return TileTurntable.top - } + if (side == super.metadata()) { + return TileTurntable.top + } - return getIcon - } + return getIcon + } @SideOnly(Side.CLIENT) override def getIcon(side: Int, meta: Int): Icon = - { - if (side == 1) { - return TileTurntable.top + if (side == 1) { + return TileTurntable.top + } + return getIcon } - return getIcon - } - override def onNeighborChanged() - { + override def onNeighborChanged() { scheduelTick(10) } - private def updateTurntableState(world: World, x: Int, y: Int, z: Int) - { - if (world.isBlockIndirectlyGettingPowered(x, y, z)) - { - try - { + private def updateTurntableState(world: World, x: Int, y: Int, z: Int) { + if (world.isBlockIndirectlyGettingPowered(x, y, z)) { + try { val facing: ForgeDirection = ForgeDirection.getOrientation(world.getBlockMetadata(x, y, z)) val position: Vector3 = new Vector3(x, y, z).translate(facing) val tileEntity: TileEntity = position.getTileEntity(world) val block: Block = Block.blocksList(position.getBlockID(world)) - if (!(tileEntity.isInstanceOf[TileMultipart])) - { - if (tileEntity.isInstanceOf[IRotatable]) - { + if (!(tileEntity.isInstanceOf[TileMultipart])) { + if (tileEntity.isInstanceOf[IRotatable]) { val blockRotation: ForgeDirection = (tileEntity.asInstanceOf[IRotatable]).getDirection (tileEntity.asInstanceOf[IRotatable]).setDirection(blockRotation.getRotation(facing.getOpposite)) - } - else if (block.isInstanceOf[IRotatableBlock]) - { + } else if (block.isInstanceOf[IRotatableBlock]) { val blockRotation: ForgeDirection = (block.asInstanceOf[IRotatableBlock]).getDirection(world, position.intX, position.intY, position.intZ) (block.asInstanceOf[IRotatableBlock]).setDirection(world, position.intX, position.intY, position.intZ, blockRotation.getRotation(facing.getOpposite)) - } - else if (block != null) - { + } else if (block != null) { Block.blocksList(blockID).rotateBlock(world, position.intX, position.intY, position.intZ, facing.getOpposite) } world.markBlockForUpdate(position.intX, position.intY, position.intZ) world.playSoundEffect(x + 0.5D, y + 0.5D, z + 0.5D, "tile.piston.in", 0.5F, world.rand.nextFloat * 0.15F + 0.6F) } - } - catch - { - case e: Exception => + } catch { + case e: Exception => { System.out.println("Error while rotating a block near " + x + "x " + y + "y " + z + "z " + (if (world != null && world.provider != null) world.provider.dimensionId + "d" else "null:world")) e.printStackTrace } - } + } } } @SideOnly(Side.CLIENT) protected override def newRenderer: TileRender = - { - return new RotatedTextureRenderer(this) - } + { + return new RotatedTextureRenderer(this) + } } -object TileTurntable -{ +object TileTurntable { var top: Icon = null } \ No newline at end of file diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java index 2c3e654a0..43104b190 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/BlockCrate.java @@ -14,12 +14,11 @@ import net.minecraft.util.ChatMessageComponent; import net.minecraft.util.Icon; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; +import resonant.lib.prefab.block.BlockTile; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.Reference; import universalelectricity.api.UniversalElectricity; -import calclavia.lib.prefab.block.BlockTile; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.WrenchUtility; -import calclavia.lib.utility.inventory.InventoryUtility; import codechicken.multipart.ControlKeyModifer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java index 25daca6bb..6975b7589 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/InventoryCrate.java @@ -3,7 +3,7 @@ package resonantinduction.archaic.crate; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; -import calclavia.lib.utility.inventory.ExternalInventory; +import resonant.lib.utility.inventory.ExternalInventory; public class InventoryCrate extends ExternalInventory { diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java index 539d74d81..5b2af7376 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/ItemBlockCrate.java @@ -9,8 +9,8 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; -import calclavia.lib.prefab.item.ItemBlockTooltip; -import calclavia.lib.utility.LanguageUtility; +import resonant.lib.prefab.item.ItemBlockTooltip; +import resonant.lib.utility.LanguageUtility; public class ItemBlockCrate extends ItemBlockTooltip { diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/RenderCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/RenderCrate.java index 7690600ef..a350282b7 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/RenderCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/RenderCrate.java @@ -5,8 +5,8 @@ import net.minecraft.tileentity.TileEntity; import org.lwjgl.opengl.GL11; -import calclavia.lib.render.RenderItemOverlayUtility; -import calclavia.lib.utility.LanguageUtility; +import resonant.lib.render.RenderItemOverlayUtility; +import resonant.lib.utility.LanguageUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java index 9859a1beb..1c7d664ea 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/crate/TileCrate.java @@ -7,12 +7,12 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.oredict.OreDictionary; +import resonant.api.IExtendedStorage; +import resonant.api.IFilterable; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.tile.TileExternalInventory; import resonantinduction.core.ResonantInduction; -import calclavia.api.resonantinduction.IFilterable; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileExternalInventory; -import calclavia.lib.utility.inventory.IExtendedStorage; import com.google.common.io.ByteArrayDataInput; diff --git a/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java b/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java index 8aec881fd..3eae0ffb5 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java +++ b/archaic/src/main/scala/resonantinduction/archaic/engineering/TileEngineeringTable.java @@ -24,30 +24,30 @@ import net.minecraftforge.oredict.OreDictionary; import org.apache.commons.lang3.ArrayUtils; import org.lwjgl.opengl.GL11; +import resonant.api.IRotatable; +import resonant.api.ISlotPickResult; +import resonant.api.recipe.MachineRecipes; +import resonant.api.recipe.RecipeResource; +import resonant.lib.content.module.TileRender; +import resonant.lib.content.module.prefab.TileInventory; +import resonant.lib.gui.ContainerDummy; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.item.ItemBlockSaved; +import resonant.lib.prefab.vector.Cuboid; +import resonant.lib.render.RenderItemOverlayUtility; +import resonant.lib.type.Pair; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.WorldUtility; +import resonant.lib.utility.inventory.AutoCraftingManager; +import resonant.lib.utility.inventory.AutoCraftingManager.IAutoCrafter; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.prefab.imprint.ItemImprint; import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector3; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.lib.content.module.TileRender; -import calclavia.lib.content.module.prefab.TileInventory; -import calclavia.lib.gui.ContainerDummy; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.item.ItemBlockSaved; -import calclavia.lib.prefab.slot.ISlotPickResult; -import calclavia.lib.prefab.tile.IRotatable; -import calclavia.lib.prefab.vector.Cuboid; -import calclavia.lib.render.RenderItemOverlayUtility; -import calclavia.lib.type.Pair; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.WorldUtility; -import calclavia.lib.utility.inventory.AutoCraftingManager; -import calclavia.lib.utility.inventory.AutoCraftingManager.IAutoCrafter; -import calclavia.lib.utility.inventory.InventoryUtility; import codechicken.multipart.ControlKeyModifer; import com.google.common.io.ByteArrayDataInput; diff --git a/archaic/src/main/scala/resonantinduction/archaic/filter/BlockImprinter.java b/archaic/src/main/scala/resonantinduction/archaic/filter/BlockImprinter.java index 9923d99cc..ca809bae2 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/filter/BlockImprinter.java +++ b/archaic/src/main/scala/resonantinduction/archaic/filter/BlockImprinter.java @@ -9,14 +9,14 @@ import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.prefab.block.BlockTile; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.Reference; import resonantinduction.core.prefab.imprint.ItemImprint; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; -import calclavia.lib.prefab.block.BlockTile; -import calclavia.lib.utility.inventory.InventoryUtility; import codechicken.multipart.ControlKeyModifer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/filter/RenderImprinter.java b/archaic/src/main/scala/resonantinduction/archaic/filter/RenderImprinter.java index ece662474..174c01632 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/filter/RenderImprinter.java +++ b/archaic/src/main/scala/resonantinduction/archaic/filter/RenderImprinter.java @@ -4,7 +4,7 @@ import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import calclavia.lib.render.RenderItemOverlayUtility; +import resonant.lib.render.RenderItemOverlayUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java b/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java index a291c7855..66353e55e 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java +++ b/archaic/src/main/scala/resonantinduction/archaic/filter/TileFilter.java @@ -12,6 +12,16 @@ import net.minecraft.network.packet.Packet; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.IFluidHandler; +import resonant.api.IFilterable; +import resonant.api.recipe.MachineRecipes; +import resonant.api.recipe.RecipeResource; +import resonant.lib.content.module.TileRender; +import resonant.lib.network.Synced.SyncedInput; +import resonant.lib.network.Synced.SyncedOutput; +import resonant.lib.prefab.vector.Cuboid; +import resonant.lib.render.RenderItemOverlayUtility; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.prefab.imprint.ItemImprint; @@ -19,16 +29,6 @@ import resonantinduction.core.prefab.imprint.TileFilterable; import resonantinduction.core.resource.ResourceGenerator; import resonantinduction.core.resource.fluid.BlockFluidMixture; import universalelectricity.api.vector.Vector3; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.api.resonantinduction.IFilterable; -import calclavia.lib.content.module.TileRender; -import calclavia.lib.network.Synced.SyncedInput; -import calclavia.lib.network.Synced.SyncedOutput; -import calclavia.lib.prefab.vector.Cuboid; -import calclavia.lib.render.RenderItemOverlayUtility; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.inventory.InventoryUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/filter/TileImprinter.java b/archaic/src/main/scala/resonantinduction/archaic/filter/TileImprinter.java index eaf23c95d..388ac2422 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/filter/TileImprinter.java +++ b/archaic/src/main/scala/resonantinduction/archaic/filter/TileImprinter.java @@ -10,11 +10,11 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.packet.Packet; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.tile.TileAdvanced; import resonantinduction.core.ResonantInduction; import resonantinduction.core.prefab.imprint.ItemImprint; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileAdvanced; import com.google.common.io.ByteArrayDataInput; diff --git a/archaic/src/main/scala/resonantinduction/archaic/firebox/BlockFirebox.java b/archaic/src/main/scala/resonantinduction/archaic/firebox/BlockFirebox.java index 2eefd8ae7..42ac7a055 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/firebox/BlockFirebox.java +++ b/archaic/src/main/scala/resonantinduction/archaic/firebox/BlockFirebox.java @@ -13,9 +13,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import resonant.lib.prefab.block.BlockTile; +import resonant.lib.utility.FluidUtility; import resonantinduction.core.Reference; -import calclavia.lib.prefab.block.BlockTile; -import calclavia.lib.utility.FluidUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/firebox/BlockHotPlate.java b/archaic/src/main/scala/resonantinduction/archaic/firebox/BlockHotPlate.java index b7f1f96ac..bd14f9267 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/firebox/BlockHotPlate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/firebox/BlockHotPlate.java @@ -10,10 +10,10 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.DamageSource; import net.minecraft.util.Icon; import net.minecraft.world.World; +import resonant.lib.prefab.block.BlockTile; import resonantinduction.core.Reference; import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector3; -import calclavia.lib.prefab.block.BlockTile; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/firebox/RenderHotPlate.java b/archaic/src/main/scala/resonantinduction/archaic/firebox/RenderHotPlate.java index 05888ad8f..d6ad0576a 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/firebox/RenderHotPlate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/firebox/RenderHotPlate.java @@ -4,7 +4,7 @@ import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import calclavia.lib.render.RenderItemOverlayUtility; +import resonant.lib.render.RenderItemOverlayUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/firebox/TileFirebox.java b/archaic/src/main/scala/resonantinduction/archaic/firebox/TileFirebox.java index 6ee7e3329..5a714dfd4 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/firebox/TileFirebox.java +++ b/archaic/src/main/scala/resonantinduction/archaic/firebox/TileFirebox.java @@ -1,11 +1,5 @@ package resonantinduction.archaic.firebox; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.Synced; -import calclavia.lib.prefab.tile.TileElectricalInventory; -import calclavia.lib.thermal.BoilEvent; -import calclavia.lib.thermal.ThermalPhysics; -import com.google.common.io.ByteArrayDataInput; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -15,7 +9,18 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityFurnace; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.fluids.*; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.Synced; +import resonant.lib.prefab.tile.TileElectricalInventory; +import resonant.lib.thermal.BoilEvent; +import resonant.lib.thermal.ThermalPhysics; import resonantinduction.archaic.Archaic; import resonantinduction.archaic.fluid.gutter.TileGutter; import resonantinduction.core.ResonantInduction; @@ -24,6 +29,8 @@ import resonantinduction.core.resource.TileMaterial; import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.vector.Vector3; +import com.google.common.io.ByteArrayDataInput; + /** * Meant to replace the furnace class. * diff --git a/archaic/src/main/scala/resonantinduction/archaic/firebox/TileHotPlate.java b/archaic/src/main/scala/resonantinduction/archaic/firebox/TileHotPlate.java index 6557e6f71..ff948b446 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/firebox/TileHotPlate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/firebox/TileHotPlate.java @@ -9,11 +9,11 @@ import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraft.tileentity.TileEntity; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.IPacketSender; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.tile.TileExternalInventory; import resonantinduction.core.ResonantInduction; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.IPacketSender; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileExternalInventory; import com.google.common.io.ByteArrayDataInput; diff --git a/archaic/src/main/scala/resonantinduction/archaic/fluid/grate/TileGrate.java b/archaic/src/main/scala/resonantinduction/archaic/fluid/grate/TileGrate.java index 7da2169f4..43212d9f3 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/fluid/grate/TileGrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/fluid/grate/TileGrate.java @@ -1,10 +1,10 @@ package resonantinduction.archaic.fluid.grate; -import calclavia.lib.config.Config; -import calclavia.lib.prefab.tile.IRotatable; -import calclavia.lib.utility.FluidUtility; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.PriorityQueue; + import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.player.EntityPlayer; @@ -12,16 +12,20 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.fluids.*; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidContainerRegistry; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTankInfo; +import resonant.api.IRotatable; +import resonant.lib.config.Config; +import resonant.lib.utility.FluidUtility; import resonantinduction.core.Reference; import resonantinduction.core.fluid.TilePressureNode; import resonantinduction.core.grid.fluid.FluidPressureNode; import universalelectricity.api.vector.Vector3; - -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.PriorityQueue; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class TileGrate extends TilePressureNode implements IRotatable { diff --git a/archaic/src/main/scala/resonantinduction/archaic/fluid/gutter/TileGutter.java b/archaic/src/main/scala/resonantinduction/archaic/fluid/gutter/TileGutter.java index 5a7e28ab7..0ec607199 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/fluid/gutter/TileGutter.java +++ b/archaic/src/main/scala/resonantinduction/archaic/fluid/gutter/TileGutter.java @@ -1,16 +1,8 @@ package resonantinduction.archaic.fluid.gutter; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.lib.content.module.TileRender; -import calclavia.lib.prefab.vector.Cuboid; -import calclavia.lib.render.FluidRenderUtility; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.utility.FluidUtility; -import calclavia.lib.utility.WorldUtility; -import calclavia.lib.utility.inventory.InventoryUtility; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.ArrayList; +import java.util.List; + import net.minecraft.block.material.Material; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.entity.Entity; @@ -22,8 +14,24 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; import net.minecraftforge.common.ForgeDirection; -import net.minecraftforge.fluids.*; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTank; +import net.minecraftforge.fluids.IFluidHandler; +import net.minecraftforge.fluids.IFluidTank; + import org.lwjgl.opengl.GL11; + +import resonant.api.recipe.MachineRecipes; +import resonant.api.recipe.RecipeResource; +import resonant.lib.content.module.TileRender; +import resonant.lib.prefab.vector.Cuboid; +import resonant.lib.render.FluidRenderUtility; +import resonant.lib.render.RenderUtility; +import resonant.lib.utility.FluidUtility; +import resonant.lib.utility.WorldUtility; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.archaic.fluid.grate.TileGrate; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction.RecipeType; @@ -31,9 +39,8 @@ import resonantinduction.core.fluid.TilePressureNode; import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.IPressureNodeProvider; import universalelectricity.api.vector.Vector3; - -import java.util.ArrayList; -import java.util.List; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; /** * The gutter, used for fluid transfer. diff --git a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockTank.java b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockTank.java index b73dc5c69..42a73936e 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockTank.java +++ b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/ItemBlockTank.java @@ -12,13 +12,13 @@ import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidContainerItem; +import resonant.lib.utility.LanguageUtility; import resonantinduction.archaic.Archaic; import resonantinduction.core.fluid.TileFluidDistribution; import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; import universalelectricity.api.energy.UnitDisplay.UnitPrefix; import universalelectricity.api.vector.Vector3; -import calclavia.lib.utility.LanguageUtility; /** @author Darkguardsman */ public class ItemBlockTank extends ItemBlock implements IFluidContainerItem diff --git a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TankNetwork.java b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TankNetwork.java index f22f5bddb..95a8a83f0 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TankNetwork.java +++ b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TankNetwork.java @@ -3,13 +3,12 @@ package resonantinduction.archaic.fluid.tank; import java.util.Comparator; import java.util.HashMap; import java.util.PriorityQueue; -import java.util.Random; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fluids.FluidStack; +import resonant.lib.utility.FluidUtility; import resonantinduction.core.fluid.FluidDistributionetwork; import resonantinduction.core.fluid.IFluidDistribution; -import calclavia.lib.utility.FluidUtility; /** * Network that handles connected tanks diff --git a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.java b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.java index 54cc8b7bb..f7491efa0 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.java +++ b/archaic/src/main/scala/resonantinduction/archaic/fluid/tank/TileTank.java @@ -1,15 +1,7 @@ package resonantinduction.archaic.fluid.tank; -import calclavia.lib.content.module.TileBlock.IComparatorInputOverride; -import calclavia.lib.content.module.TileRender; -import calclavia.lib.render.FluidRenderUtility; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.utility.FluidUtility; -import calclavia.lib.utility.WorldUtility; -import calclavia.lib.utility.inventory.InventoryUtility; -import calclavia.lib.utility.render.RenderBlockUtility; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.awt.Color; + import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; @@ -19,7 +11,17 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; + import org.lwjgl.opengl.GL11; + +import resonant.lib.content.module.TileBlock.IComparatorInputOverride; +import resonant.lib.content.module.TileRender; +import resonant.lib.render.FluidRenderUtility; +import resonant.lib.render.RenderUtility; +import resonant.lib.utility.FluidUtility; +import resonant.lib.utility.WorldUtility; +import resonant.lib.utility.inventory.InventoryUtility; +import resonant.lib.utility.render.RenderBlockUtility; import resonantinduction.archaic.Archaic; import resonantinduction.core.Reference; import resonantinduction.core.fluid.FluidDistributionetwork; @@ -27,8 +29,8 @@ import resonantinduction.core.fluid.IFluidDistribution; import resonantinduction.core.fluid.TileFluidDistribution; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.vector.Vector3; - -import java.awt.*; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class TileTank extends TileFluidDistribution implements IComparatorInputOverride { diff --git a/archaic/src/main/scala/resonantinduction/archaic/process/BlockCastingMold.java b/archaic/src/main/scala/resonantinduction/archaic/process/BlockCastingMold.java index b9a33d6e3..d4ebfa726 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/process/BlockCastingMold.java +++ b/archaic/src/main/scala/resonantinduction/archaic/process/BlockCastingMold.java @@ -5,11 +5,11 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import resonant.lib.prefab.block.BlockTile; +import resonant.lib.render.block.BlockRenderingHandler; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.Reference; import universalelectricity.api.vector.Vector3; -import calclavia.lib.prefab.block.BlockTile; -import calclavia.lib.render.block.BlockRenderingHandler; -import calclavia.lib.utility.inventory.InventoryUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/process/BlockMillstone.java b/archaic/src/main/scala/resonantinduction/archaic/process/BlockMillstone.java index 3e451c7e9..a3417c97c 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/process/BlockMillstone.java +++ b/archaic/src/main/scala/resonantinduction/archaic/process/BlockMillstone.java @@ -8,11 +8,11 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import resonant.lib.prefab.block.BlockTile; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.Reference; import resonantinduction.core.resource.ItemHandCrank; import universalelectricity.api.vector.Vector3; -import calclavia.lib.prefab.block.BlockTile; -import calclavia.lib.utility.inventory.InventoryUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/process/RenderCastingMold.java b/archaic/src/main/scala/resonantinduction/archaic/process/RenderCastingMold.java index 8a6f5e64e..1a1026287 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/process/RenderCastingMold.java +++ b/archaic/src/main/scala/resonantinduction/archaic/process/RenderCastingMold.java @@ -7,9 +7,9 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; +import resonant.lib.render.RenderItemOverlayUtility; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderItemOverlayUtility; -import calclavia.lib.render.RenderUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/process/RenderMillstone.java b/archaic/src/main/scala/resonantinduction/archaic/process/RenderMillstone.java index 06b8779f7..3a1b037b5 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/process/RenderMillstone.java +++ b/archaic/src/main/scala/resonantinduction/archaic/process/RenderMillstone.java @@ -3,7 +3,7 @@ package resonantinduction.archaic.process; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; -import calclavia.lib.render.RenderItemOverlayUtility; +import resonant.lib.render.RenderItemOverlayUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/archaic/src/main/scala/resonantinduction/archaic/process/TileCastingMold.java b/archaic/src/main/scala/resonantinduction/archaic/process/TileCastingMold.java index 3de5e4d6f..c0f3737ad 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/process/TileCastingMold.java +++ b/archaic/src/main/scala/resonantinduction/archaic/process/TileCastingMold.java @@ -10,15 +10,15 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import resonant.api.recipe.MachineRecipes; +import resonant.api.recipe.RecipeResource; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.tile.TileExternalInventory; +import resonant.lib.utility.FluidUtility; import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction.RecipeType; import universalelectricity.api.vector.Vector3; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileExternalInventory; -import calclavia.lib.utility.FluidUtility; import com.google.common.io.ByteArrayDataInput; diff --git a/archaic/src/main/scala/resonantinduction/archaic/process/TileMillstone.java b/archaic/src/main/scala/resonantinduction/archaic/process/TileMillstone.java index 88b973dba..b6aa3a311 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/process/TileMillstone.java +++ b/archaic/src/main/scala/resonantinduction/archaic/process/TileMillstone.java @@ -5,15 +5,15 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraftforge.common.ForgeDirection; +import resonant.api.recipe.MachineRecipes; +import resonant.api.recipe.RecipeResource; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.tile.TileExternalInventory; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction.RecipeType; import universalelectricity.api.vector.Vector3; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileExternalInventory; -import calclavia.lib.utility.inventory.InventoryUtility; import com.google.common.io.ByteArrayDataInput; diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/Waila.java b/archaic/src/main/scala/resonantinduction/archaic/waila/Waila.java index 02a9eebf9..8b168898a 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/waila/Waila.java +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/Waila.java @@ -1,7 +1,7 @@ package resonantinduction.archaic.waila; -import calclavia.lib.modproxy.ICompatProxy; -import calclavia.lib.utility.Mods; +import resonant.lib.modproxy.ICompatProxy; +import resonant.lib.utility.Mods; import cpw.mods.fml.common.event.FMLInterModComms; /** diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java index 01c2dc668..3d301eecc 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaCrate.java @@ -7,8 +7,8 @@ import mcp.mobius.waila.api.IWailaDataAccessor; import mcp.mobius.waila.api.IWailaDataProvider; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import resonant.lib.utility.LanguageUtility; import resonantinduction.archaic.crate.TileCrate; -import calclavia.lib.utility.LanguageUtility; /** Waila support for crates * diff --git a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaFluidTank.java b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaFluidTank.java index 0270325ba..86179a542 100644 --- a/archaic/src/main/scala/resonantinduction/archaic/waila/WailaFluidTank.java +++ b/archaic/src/main/scala/resonantinduction/archaic/waila/WailaFluidTank.java @@ -8,8 +8,8 @@ import mcp.mobius.waila.api.IWailaDataProvider; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.fluids.FluidTank; +import resonant.lib.utility.LanguageUtility; import resonantinduction.archaic.fluid.tank.TileTank; -import calclavia.lib.utility.LanguageUtility; /** Waila support for tanks * diff --git a/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java b/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java index 5b16c37d8..5a1503fb2 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java +++ b/electrical/src/main/scala/resonantinduction/electrical/ClientProxy.java @@ -4,12 +4,12 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.client.MinecraftForgeClient; +import resonant.lib.render.item.GlobalItemRenderer; import resonantinduction.electrical.battery.RenderBattery; import resonantinduction.electrical.battery.TileBattery; import resonantinduction.electrical.charger.RenderCharger; import resonantinduction.electrical.encoder.TileEncoder; import resonantinduction.electrical.encoder.gui.GuiEncoderInventory; -import resonantinduction.electrical.generator.solar.TileSolarPanel; import resonantinduction.electrical.laser.gun.RenderMiningLaserGun; import resonantinduction.electrical.levitator.RenderLevitator; import resonantinduction.electrical.multimeter.GuiMultimeter; @@ -21,7 +21,6 @@ import resonantinduction.electrical.tesla.TileTesla; import resonantinduction.electrical.transformer.RenderTransformer; import resonantinduction.quantum.gate.RenderQuantumGlyph; import universalelectricity.api.vector.Vector3; -import calclavia.lib.render.item.GlobalItemRenderer; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; import cpw.mods.fml.client.FMLClientHandler; diff --git a/electrical/src/main/scala/resonantinduction/electrical/CommonProxy.java b/electrical/src/main/scala/resonantinduction/electrical/CommonProxy.java index 18e791ba8..e985b805f 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/CommonProxy.java +++ b/electrical/src/main/scala/resonantinduction/electrical/CommonProxy.java @@ -5,12 +5,12 @@ import java.awt.Color; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import resonant.lib.prefab.ProxyBase; import resonantinduction.electrical.encoder.TileEncoder; import resonantinduction.electrical.encoder.gui.ContainerEncoder; import resonantinduction.electrical.multimeter.ContainerMultimeter; import resonantinduction.electrical.multimeter.PartMultimeter; import universalelectricity.api.vector.Vector3; -import calclavia.lib.prefab.ProxyBase; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; diff --git a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java index 3e65c3e47..ff995f052 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/Electrical.java +++ b/electrical/src/main/scala/resonantinduction/electrical/Electrical.java @@ -7,6 +7,10 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; +import resonant.lib.content.ContentRegistry; +import resonant.lib.modproxy.ProxyHandler; +import resonant.lib.network.PacketHandler; +import resonant.lib.recipe.UniversalRecipe; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; @@ -31,10 +35,6 @@ import resonantinduction.electrical.transformer.ItemTransformer; import resonantinduction.electrical.wire.EnumWireMaterial; import resonantinduction.electrical.wire.ItemWire; import resonantinduction.quantum.gate.ItemQuantumGlyph; -import calclavia.lib.content.ContentRegistry; -import calclavia.lib.modproxy.ProxyHandler; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.recipe.UniversalRecipe; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/BlockArmbot.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/BlockArmbot.java index cdb767ce6..fa958b095 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/BlockArmbot.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/BlockArmbot.java @@ -7,95 +7,95 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; +import resonant.core.ResonantEngine; +import resonant.lib.multiblock.IBlockActivate; +import resonant.lib.multiblock.IMultiBlock; +import resonant.lib.prefab.block.BlockTile; +import resonant.lib.render.block.BlockRenderingHandler; import universalelectricity.api.UniversalElectricity; -import calclavia.components.CalclaviaLoader; -import calclavia.lib.multiblock.fake.IBlockActivate; -import calclavia.lib.multiblock.fake.IMultiBlock; -import calclavia.lib.prefab.block.BlockTile; -import calclavia.lib.render.block.BlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; public class BlockArmbot extends BlockTile { - public BlockArmbot(int id) - { - super(id, UniversalElectricity.machine); - } + public BlockArmbot(int id) + { + super(id, UniversalElectricity.machine); + } - @Override - public boolean canBlockStay(World world, int x, int y, int z) - { - return world.getBlockMaterial(x, y - 1, z).isSolid(); - } + @Override + public boolean canBlockStay(World world, int x, int y, int z) + { + return world.getBlockMaterial(x, y - 1, z).isSolid(); + } - @Override - public void onBlockAdded(World world, int x, int y, int z) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + @Override + public void onBlockAdded(World world, int x, int y, int z) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if (tileEntity instanceof IMultiBlock) - { - CalclaviaLoader.blockMulti.createMultiBlockStructure((IMultiBlock) tileEntity); - } - } + if (tileEntity instanceof IMultiBlock) + { + ResonantEngine.blockMulti.createMultiBlockStructure((IMultiBlock) tileEntity); + } + } - @Override - public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + @Override + public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if (tileEntity instanceof IBlockActivate) - { - return ((IBlockActivate) tileEntity).onActivated(player); - } + if (tileEntity instanceof IBlockActivate) + { + return ((IBlockActivate) tileEntity).onActivated(player); + } - return false; - } + return false; + } - @Override - public void breakBlock(World world, int x, int y, int z, int par5, int par6) - { - TileEntity tileEntity = world.getBlockTileEntity(x, y, z); + @Override + public void breakBlock(World world, int x, int y, int z, int par5, int par6) + { + TileEntity tileEntity = world.getBlockTileEntity(x, y, z); - if (tileEntity instanceof TileArmbot) - { - ((TileArmbot) tileEntity).dropHeldObject(); - CalclaviaLoader.blockMulti.destroyMultiBlockStructure((TileArmbot) tileEntity); - } + if (tileEntity instanceof TileArmbot) + { + ((TileArmbot) tileEntity).dropHeldObject(); + ResonantEngine.blockMulti.destroyMultiBlockStructure((TileArmbot) tileEntity); + } - this.dropBlockAsItem_do(world, x, y, z, new ItemStack(this)); - super.breakBlock(world, x, y, z, par5, par6); - } + this.dropBlockAsItem_do(world, x, y, z, new ItemStack(this)); + super.breakBlock(world, x, y, z, par5, par6); + } - @Override - public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) - { - return new ItemStack(this); - } + @Override + public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) + { + return new ItemStack(this); + } - @Override - public int quantityDropped(Random par1Random) - { - return 0; - } + @Override + public int quantityDropped(Random par1Random) + { + return 0; + } - @Override - public TileEntity createNewTileEntity(World var1) - { - return new TileArmbot(); - } + @Override + public TileEntity createNewTileEntity(World var1) + { + return new TileArmbot(); + } - @SideOnly(Side.CLIENT) - @Override - public int getRenderType() - { - return BlockRenderingHandler.ID; - } + @SideOnly(Side.CLIENT) + @Override + public int getRenderType() + { + return BlockRenderingHandler.ID; + } - @Override - public boolean isOpaqueCube() - { - return false; - } + @Override + public boolean isOpaqueCube() + { + return false; + } } diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/Program.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/Program.java index 12ccdb774..44804ef3d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/Program.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/Program.java @@ -7,13 +7,13 @@ import java.util.Map.Entry; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import resonant.lib.utility.nbt.NBTUtility; import resonantinduction.electrical.encoder.coding.ILogicTask; import resonantinduction.electrical.encoder.coding.IProgram; import resonantinduction.electrical.encoder.coding.IProgrammableMachine; import resonantinduction.electrical.encoder.coding.ITask; import resonantinduction.electrical.encoder.coding.TaskRegistry; import universalelectricity.api.vector.Vector2; -import calclavia.lib.utility.nbt.NBTUtility; public class Program implements IProgram { diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/RenderArmbot.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/RenderArmbot.java index 6f1695ef1..d6e267b03 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/RenderArmbot.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/RenderArmbot.java @@ -14,10 +14,10 @@ import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; import universalelectricity.api.vector.Vector3; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/TaskBase.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/TaskBase.java index 391664bcd..299352955 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/TaskBase.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/TaskBase.java @@ -5,12 +5,12 @@ import java.util.List; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import resonant.lib.utility.nbt.NBTUtility; import resonantinduction.core.ArgumentData; import resonantinduction.electrical.encoder.coding.IProgram; import resonantinduction.electrical.encoder.coding.IProgrammableMachine; import resonantinduction.electrical.encoder.coding.ITask; import universalelectricity.api.vector.Vector2; -import calclavia.lib.utility.nbt.NBTUtility; /** @author DarkGuardsman */ public abstract class TaskBase implements ITask diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/TaskBaseProcess.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/TaskBaseProcess.java index d21e0d11a..39d0201b3 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/TaskBaseProcess.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/TaskBaseProcess.java @@ -1,10 +1,10 @@ package resonantinduction.electrical.armbot; -import calclavia.lib.science.units.UnitHelper; +import net.minecraft.item.ItemStack; +import resonant.lib.science.units.UnitHelper; +import resonantinduction.electrical.encoder.coding.IProcessTask; import dan200.computercraft.api.lua.ILuaContext; import dan200.computercraft.api.peripheral.IComputerAccess; -import net.minecraft.item.ItemStack; -import resonantinduction.electrical.encoder.coding.IProcessTask; /** * Basic command prefab used by machines like an armbot. You are not required to use this in order diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/TileArmbot.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/TileArmbot.java index afe11ea8f..90e39d197 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/TileArmbot.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/TileArmbot.java @@ -9,6 +9,13 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.multiblock.IMultiBlock; +import resonant.lib.network.IPacketReceiverWithID; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.tile.TileElectrical; +import resonant.lib.type.Pair; +import resonant.lib.utility.MathUtility; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.ResonantInduction; import resonantinduction.electrical.armbot.task.TaskDrop; import resonantinduction.electrical.armbot.task.TaskGOTO; @@ -20,13 +27,6 @@ import resonantinduction.electrical.encoder.coding.ProgramHelper; import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector3; -import calclavia.lib.type.Pair; -import calclavia.lib.multiblock.fake.IMultiBlock; -import calclavia.lib.network.IPacketReceiverWithID; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileElectrical; -import calclavia.lib.utility.MathUtility; -import calclavia.lib.utility.inventory.InventoryUtility; import com.google.common.io.ByteArrayDataInput; diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskBreak.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskBreak.java index cf6349910..219c5d412 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskBreak.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskBreak.java @@ -7,13 +7,13 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import resonant.lib.type.Pair; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.ITask; import universalelectricity.api.vector.Vector3; -import calclavia.lib.type.Pair; -import calclavia.lib.utility.inventory.InventoryUtility; /** * Used by arms to break a specific block in a position. diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskFire.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskFire.java index 448dd6bb5..b7dc860df 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskFire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskFire.java @@ -9,13 +9,13 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import resonant.lib.science.units.UnitHelper; +import resonant.lib.type.Pair; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.args.ArgumentFloatData; import universalelectricity.api.vector.Vector3; -import calclavia.lib.type.Pair; -import calclavia.lib.science.units.UnitHelper; public class TaskFire extends TaskBaseArmbot { diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGive.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGive.java index a734eba04..8a4ffb631 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGive.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGive.java @@ -8,15 +8,15 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.science.units.UnitHelper; +import resonant.lib.utility.MathUtility; +import resonant.lib.utility.inventory.InternalInventoryHandler; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.args.ArgumentIntData; import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector3; -import calclavia.lib.science.units.UnitHelper; -import calclavia.lib.utility.MathUtility; -import calclavia.lib.utility.inventory.InternalInventoryHandler; public class TaskGive extends TaskBaseArmbot { diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabEntity.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabEntity.java index 8969a244b..b88f4a19a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabEntity.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabEntity.java @@ -8,10 +8,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.projectile.EntityArrow; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; +import resonant.api.ai.EntitySettings; import resonantinduction.core.ArgumentData; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; -import calclavia.api.resonantinduction.electrical.ArmbotEntity; public class TaskGrabEntity extends TaskGrabPrefab { @@ -98,7 +98,7 @@ public class TaskGrabEntity extends TaskGrabPrefab { super.loadProgress(taskCompound); this.child = taskCompound.getBoolean("child"); - this.entityToInclude = ArmbotEntity.get(taskCompound.getString("name")); + this.entityToInclude = EntitySettings.get(taskCompound.getString("name")); } @Override @@ -106,7 +106,7 @@ public class TaskGrabEntity extends TaskGrabPrefab { super.saveProgress(taskCompound); taskCompound.setBoolean("child", child); - taskCompound.setString("name", ((this.entityToInclude != null) ? ArmbotEntity.get(this.entityToInclude) : "")); + taskCompound.setString("name", ((this.entityToInclude != null) ? EntitySettings.get(this.entityToInclude) : "")); } @Override @@ -116,7 +116,7 @@ public class TaskGrabEntity extends TaskGrabPrefab String entity = ""; if (this.entityToInclude != null) { - entity = ArmbotEntity.get(this.entityToInclude); + entity = EntitySettings.get(this.entityToInclude); if (this.child) { // TODO do check for EntityAgable diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabItem.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabItem.java index c5cc196f2..621a887b9 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabItem.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabItem.java @@ -6,10 +6,10 @@ import net.minecraft.block.Block; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; +import resonant.lib.science.units.UnitHelper; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.args.ArgumentIntData; -import calclavia.lib.science.units.UnitHelper; public class TaskGrabItem extends TaskGrabPrefab { diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabPrefab.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabPrefab.java index 1c29dfd50..9a02f3014 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabPrefab.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskGrabPrefab.java @@ -2,11 +2,11 @@ package resonantinduction.electrical.armbot.task; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IEntityConveyor; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseArmbot; import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector3; -import calclavia.api.resonantinduction.mechanical.IBelt; /** * Prefab for grab based commands @@ -17,7 +17,7 @@ public abstract class TaskGrabPrefab extends TaskBaseArmbot { public static final float radius = 0.5f; protected Vector3 armPos; - protected IBelt belt; + protected IEntityConveyor belt; public TaskGrabPrefab(String name) { @@ -37,9 +37,9 @@ public abstract class TaskGrabPrefab extends TaskBaseArmbot { entity = this.armPos.clone().translate(new Vector3(ForgeDirection.DOWN)).getTileEntity(this.program.getMachine().getLocation().left()); } - if (entity instanceof IBelt) + if (entity instanceof IEntityConveyor) { - this.belt = (IBelt) entity; + this.belt = (IEntityConveyor) entity; } return ProcessReturn.CONTINUE; } diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskIdle.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskIdle.java index 613152496..516663683 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskIdle.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskIdle.java @@ -3,10 +3,10 @@ package resonantinduction.electrical.armbot.task; import java.util.List; import net.minecraft.nbt.NBTTagCompound; +import resonant.lib.science.units.UnitHelper; import resonantinduction.core.ArgumentData; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.IProgrammableMachine; -import calclavia.lib.science.units.UnitHelper; public class TaskIdle extends TaskBaseProcess { diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskRotateBy.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskRotateBy.java index 44022f16b..8ff1583ad 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskRotateBy.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskRotateBy.java @@ -3,13 +3,13 @@ package resonantinduction.electrical.armbot.task; import java.util.List; import net.minecraft.nbt.NBTTagCompound; +import resonant.lib.science.units.UnitHelper; +import resonant.lib.utility.MathUtility; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.args.ArgumentIntData; import universalelectricity.api.vector.Vector2; -import calclavia.lib.science.units.UnitHelper; -import calclavia.lib.utility.MathUtility; /** * Rotates an armbot by a set amount diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskRotateTo.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskRotateTo.java index 7149e9c67..941d52d0e 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskRotateTo.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskRotateTo.java @@ -3,13 +3,13 @@ package resonantinduction.electrical.armbot.task; import java.util.List; import net.minecraft.nbt.NBTTagCompound; +import resonant.lib.science.units.UnitHelper; +import resonant.lib.utility.MathUtility; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.args.ArgumentIntData; import universalelectricity.api.vector.Vector2; -import calclavia.lib.science.units.UnitHelper; -import calclavia.lib.utility.MathUtility; /** * Rotates the armbot to a specific direction. diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskTake.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskTake.java index a7a943634..90201b4cf 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskTake.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskTake.java @@ -8,15 +8,15 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.science.units.UnitHelper; +import resonant.lib.utility.MathUtility; +import resonant.lib.utility.inventory.InternalInventoryHandler; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.TaskBaseArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.args.ArgumentIntData; import universalelectricity.api.vector.Vector2; import universalelectricity.api.vector.Vector3; -import calclavia.lib.science.units.UnitHelper; -import calclavia.lib.utility.MathUtility; -import calclavia.lib.utility.inventory.InternalInventoryHandler; public class TaskTake extends TaskBaseArmbot { diff --git a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskUse.java b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskUse.java index a2e84cee2..3e7825c46 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskUse.java +++ b/electrical/src/main/scala/resonantinduction/electrical/armbot/task/TaskUse.java @@ -5,13 +5,13 @@ import java.util.List; import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import resonant.lib.science.units.UnitHelper; import resonantinduction.electrical.armbot.IArmbot; import resonantinduction.electrical.armbot.IArmbotUseable; import resonantinduction.electrical.armbot.TaskBaseArmbot; import resonantinduction.electrical.armbot.TaskBaseProcess; import resonantinduction.electrical.encoder.coding.IProcessTask; import resonantinduction.electrical.encoder.coding.args.ArgumentIntData; -import calclavia.lib.science.units.UnitHelper; public class TaskUse extends TaskBaseArmbot { diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java index c8d5a974e..7e75bbe99 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/BlockBattery.java @@ -13,13 +13,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; +import resonant.lib.prefab.block.BlockSidedIO; +import resonant.lib.render.block.BlockRenderingHandler; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.Reference; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalElectricity; -import calclavia.lib.prefab.block.BlockSidedIO; -import calclavia.lib.render.block.BlockRenderingHandler; -import calclavia.lib.utility.inventory.InventoryUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java b/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java index a2bda4f58..fd64856f1 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/EnergyDistributionNetwork.java @@ -4,7 +4,6 @@ import java.util.Arrays; import java.util.LinkedHashSet; import java.util.Set; -import net.minecraftforge.common.ForgeDirection; import universalelectricity.core.net.Network; /** Energy network designed to allow several tiles to act as if they share the same energy diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/ItemBlockBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/ItemBlockBattery.java index 9b5f120d7..5c335cf6f 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/ItemBlockBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/ItemBlockBattery.java @@ -8,6 +8,8 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import resonant.lib.render.EnumColor; +import resonant.lib.utility.LanguageUtility; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalClass; import universalelectricity.api.UniversalElectricity; @@ -15,8 +17,6 @@ import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; import universalelectricity.api.item.IEnergyItem; import universalelectricity.api.item.IVoltageItem; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LanguageUtility; @UniversalClass public class ItemBlockBattery extends ItemBlock implements IEnergyItem, IVoltageItem diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/RenderBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/RenderBattery.java index c853b6373..d8709d6cb 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/RenderBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/RenderBattery.java @@ -19,10 +19,10 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; import universalelectricity.api.vector.Vector3; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java index 85e8a6c1b..66d1f653d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/TileBattery.java @@ -5,6 +5,8 @@ import java.util.ArrayList; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.packet.Packet; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.IPacketSender; import resonantinduction.core.ResonantInduction; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.electricity.IVoltageInput; @@ -12,8 +14,6 @@ import universalelectricity.api.electricity.IVoltageOutput; import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.energy.IEnergyContainer; import universalelectricity.api.energy.IEnergyInterface; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.IPacketSender; import com.google.common.io.ByteArrayDataInput; diff --git a/electrical/src/main/scala/resonantinduction/electrical/battery/TileEnergyDistribution.java b/electrical/src/main/scala/resonantinduction/electrical/battery/TileEnergyDistribution.java index eaa89863e..11e735d26 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/battery/TileEnergyDistribution.java +++ b/electrical/src/main/scala/resonantinduction/electrical/battery/TileEnergyDistribution.java @@ -1,9 +1,9 @@ package resonantinduction.electrical.battery; -import calclavia.lib.prefab.tile.TileElectrical; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.prefab.tile.TileElectrical; import universalelectricity.api.net.IConnector; import universalelectricity.api.vector.Vector3; diff --git a/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java b/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java index 1af7ce968..e3b5287ab 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java +++ b/electrical/src/main/scala/resonantinduction/electrical/charger/PartCharger.java @@ -7,13 +7,13 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.utility.WrenchUtility; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.prefab.part.PartInventoryPanel; import resonantinduction.electrical.Electrical; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalClass; import universalelectricity.api.energy.IEnergyInterface; -import calclavia.lib.utility.WrenchUtility; -import calclavia.lib.utility.inventory.InventoryUtility; import codechicken.lib.vec.Vector3; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/charger/RenderCharger.java b/electrical/src/main/scala/resonantinduction/electrical/charger/RenderCharger.java index 1ea8957b7..f3533f22c 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/charger/RenderCharger.java +++ b/electrical/src/main/scala/resonantinduction/electrical/charger/RenderCharger.java @@ -11,14 +11,14 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderItemOverlayUtility; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; import universalelectricity.api.vector.Vector3; -import calclavia.lib.render.RenderItemOverlayUtility; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; /** * Renderer for electric item charger diff --git a/electrical/src/main/scala/resonantinduction/electrical/distributor/TileDistributor.scala b/electrical/src/main/scala/resonantinduction/electrical/distributor/TileDistributor.scala index 74e3b8e05..44fcf9ea1 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/distributor/TileDistributor.scala +++ b/electrical/src/main/scala/resonantinduction/electrical/distributor/TileDistributor.scala @@ -1,19 +1,18 @@ package resonantinduction.electrical.distributor -import calclavia.lib.content.prefab.{TraitElectrical, TraitInventory} -import net.minecraft.block.material.Material -import calclavia.lib.content.module.TileBase -import universalelectricity.api.vector.Vector3 -import net.minecraft.inventory.IInventory -import net.minecraftforge.common.ForgeDirection -import calclavia.lib.utility.inventory.InventoryUtility -import net.minecraft.item.ItemStack - -import java.util.Collections import java.util +import java.util.Collections -import scala.util.control.Breaks._ +import net.minecraft.block.material.Material +import net.minecraft.inventory.IInventory +import net.minecraft.item.ItemStack import net.minecraft.tileentity.TileEntity +import net.minecraftforge.common.ForgeDirection +import resonant.lib.content.module.TileBase +import resonant.lib.content.prefab.TraitElectrical +import resonant.lib.content.prefab.TraitInventory +import resonant.lib.utility.inventory.InventoryUtility +import universalelectricity.api.vector.Vector3 /** * A Block that interacts with connected inventories diff --git a/electrical/src/main/scala/resonantinduction/electrical/encoder/BlockEncoder.java b/electrical/src/main/scala/resonantinduction/electrical/encoder/BlockEncoder.java index 6beaed2cc..00a186c7c 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/encoder/BlockEncoder.java +++ b/electrical/src/main/scala/resonantinduction/electrical/encoder/BlockEncoder.java @@ -6,10 +6,10 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import resonant.lib.prefab.block.BlockTile; import resonantinduction.core.Reference; import resonantinduction.electrical.Electrical; import universalelectricity.api.UniversalElectricity; -import calclavia.lib.prefab.block.BlockTile; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/encoder/TileEncoder.java b/electrical/src/main/scala/resonantinduction/electrical/encoder/TileEncoder.java index 6891252ca..b24aeece1 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/encoder/TileEncoder.java +++ b/electrical/src/main/scala/resonantinduction/electrical/encoder/TileEncoder.java @@ -7,6 +7,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.tile.TileExternalInventory; import resonantinduction.core.ResonantInduction; import resonantinduction.electrical.armbot.Program; import resonantinduction.electrical.armbot.task.TaskRotateTo; @@ -14,9 +17,6 @@ import resonantinduction.electrical.encoder.coding.IProgram; import resonantinduction.electrical.encoder.coding.ITask; import resonantinduction.electrical.encoder.coding.TaskRegistry; import universalelectricity.api.vector.Vector2; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.TileExternalInventory; import com.google.common.io.ByteArrayDataInput; diff --git a/electrical/src/main/scala/resonantinduction/electrical/encoder/coding/IProgrammableMachine.java b/electrical/src/main/scala/resonantinduction/electrical/encoder/coding/IProgrammableMachine.java index bf5e2b08d..0d13651dd 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/encoder/coding/IProgrammableMachine.java +++ b/electrical/src/main/scala/resonantinduction/electrical/encoder/coding/IProgrammableMachine.java @@ -1,8 +1,8 @@ package resonantinduction.electrical.encoder.coding; import net.minecraft.world.World; +import resonant.lib.type.Pair; import universalelectricity.api.vector.Vector3; -import calclavia.lib.type.Pair; /** * Simple interface too say an object is programmable diff --git a/electrical/src/main/scala/resonantinduction/electrical/encoder/coding/ITask.java b/electrical/src/main/scala/resonantinduction/electrical/encoder/coding/ITask.java index a153d4ddd..113f977b3 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/encoder/coding/ITask.java +++ b/electrical/src/main/scala/resonantinduction/electrical/encoder/coding/ITask.java @@ -4,9 +4,9 @@ import java.util.List; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; +import resonant.lib.utility.nbt.ISaveObj; import resonantinduction.core.ArgumentData; import universalelectricity.api.vector.Vector2; -import calclavia.lib.utility.nbt.ISaveObj; /** @author DarkGuardsman */ public interface ITask extends Cloneable, ISaveObj diff --git a/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/ContainerEncoder.java b/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/ContainerEncoder.java index b33b09779..014bdd400 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/ContainerEncoder.java +++ b/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/ContainerEncoder.java @@ -2,10 +2,10 @@ package resonantinduction.electrical.encoder.gui; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemStack; +import resonant.lib.gui.ContainerBase; +import resonant.lib.prefab.slot.SlotSpecific; import resonantinduction.electrical.encoder.ItemDisk; import resonantinduction.electrical.encoder.TileEncoder; -import calclavia.lib.gui.ContainerBase; -import calclavia.lib.prefab.slot.SlotSpecific; public class ContainerEncoder extends ContainerBase { diff --git a/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderBase.java b/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderBase.java index 8f7279759..b7b3ad1ab 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderBase.java +++ b/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderBase.java @@ -2,9 +2,9 @@ package resonantinduction.electrical.encoder.gui; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; +import resonant.lib.gui.ContainerDummy; +import resonant.lib.gui.GuiContainerBase; import resonantinduction.electrical.encoder.TileEncoder; -import calclavia.lib.gui.ContainerDummy; -import calclavia.lib.gui.GuiContainerBase; public class GuiEncoderBase extends GuiContainerBase { diff --git a/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderEditTask.java b/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderEditTask.java index 0685e4601..ad7061cca 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderEditTask.java +++ b/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderEditTask.java @@ -8,12 +8,12 @@ import net.minecraft.util.ResourceLocation; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; +import resonant.lib.gui.ContainerDummy; +import resonant.lib.gui.GuiContainerBase; import resonantinduction.core.ArgumentData; import resonantinduction.core.Reference; import resonantinduction.electrical.encoder.coding.ITask; import universalelectricity.api.vector.Vector2; -import calclavia.lib.gui.ContainerDummy; -import calclavia.lib.gui.GuiContainerBase; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; diff --git a/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderTaskList.java b/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderTaskList.java index 30b096fa7..5c5c6803d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderTaskList.java +++ b/electrical/src/main/scala/resonantinduction/electrical/encoder/gui/GuiEncoderTaskList.java @@ -6,6 +6,7 @@ import net.minecraft.tileentity.TileEntity; import org.lwjgl.opengl.GL11; +import resonant.api.IScroll; import resonantinduction.electrical.armbot.task.TaskEnd; import resonantinduction.electrical.armbot.task.TaskIdle; import resonantinduction.electrical.armbot.task.TaskStart; @@ -13,7 +14,6 @@ import resonantinduction.electrical.encoder.TileEncoder; import resonantinduction.electrical.encoder.coding.IProgram; import resonantinduction.electrical.encoder.coding.IRedirectTask; import resonantinduction.electrical.encoder.coding.ITask; -import calclavia.lib.prefab.terminal.IScroll; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.FMLCommonHandler; diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/BlockMotor.java b/electrical/src/main/scala/resonantinduction/electrical/generator/BlockMotor.java index 6d1a024bb..907bdcd51 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/BlockMotor.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/BlockMotor.java @@ -4,10 +4,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.prefab.block.BlockRotatable; +import resonant.lib.render.block.BlockRenderingHandler; import resonantinduction.core.Reference; import universalelectricity.api.UniversalElectricity; -import calclavia.lib.prefab.block.BlockRotatable; -import calclavia.lib.render.block.BlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/RenderMotor.java b/electrical/src/main/scala/resonantinduction/electrical/generator/RenderMotor.java index b72bc4c49..0768c64fe 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/RenderMotor.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/RenderMotor.java @@ -10,9 +10,9 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; /** * @author Calclavia diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java b/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java index 2a81b33d2..9bc102be9 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/TileMotor.java @@ -4,13 +4,13 @@ import java.util.EnumSet; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IMechanicalNode; +import resonant.api.IRotatable; +import resonant.api.grid.INode; +import resonant.api.grid.INodeProvider; +import resonant.lib.grid.NodeRegistry; +import resonant.lib.prefab.tile.TileElectrical; import universalelectricity.api.energy.EnergyStorageHandler; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.grid.NodeRegistry; -import calclavia.lib.prefab.tile.IRotatable; -import calclavia.lib.prefab.tile.TileElectrical; /** * A kinetic energy to electrical energy converter. diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java index 4dad00015..8efcc9bea 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java @@ -1,19 +1,17 @@ package resonantinduction.electrical.generator.solar; -import calclavia.lib.config.Config; -import calclavia.lib.content.module.TileRender; -import calclavia.lib.prefab.vector.Cuboid; -import calclavia.lib.render.ConnectedTextureRenderer; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.util.Icon; -import net.minecraftforge.common.Configuration; +import resonant.lib.content.module.TileRender; +import resonant.lib.prefab.vector.Cuboid; +import resonant.lib.utility.calclavia.lib.utility.render.ConnectedTextureRenderer; import resonantinduction.core.Reference; import resonantinduction.core.Settings; import resonantinduction.electrical.battery.TileEnergyDistribution; import universalelectricity.api.energy.EnergyStorageHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class TileSolarPanel extends TileEnergyDistribution { diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/thermopile/BlockThermopile.java b/electrical/src/main/scala/resonantinduction/electrical/generator/thermopile/BlockThermopile.java index fc8fc58fd..9902fd3a6 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/thermopile/BlockThermopile.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/thermopile/BlockThermopile.java @@ -4,9 +4,9 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.World; +import resonant.lib.prefab.block.BlockTile; import resonantinduction.core.Reference; import universalelectricity.api.UniversalElectricity; -import calclavia.lib.prefab.block.BlockTile; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/thermopile/TileThermopile.java b/electrical/src/main/scala/resonantinduction/electrical/generator/thermopile/TileThermopile.java index 66c766868..8dbc3766a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/thermopile/TileThermopile.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/thermopile/TileThermopile.java @@ -2,9 +2,9 @@ package resonantinduction.electrical.generator.thermopile; import net.minecraft.block.Block; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.prefab.tile.TileElectrical; import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.vector.Vector3; -import calclavia.lib.prefab.tile.TileElectrical; public class TileThermopile extends TileElectrical { diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java index d91d343fa..0cb3b2913 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/GridRailing.java @@ -1,13 +1,12 @@ package resonantinduction.electrical.itemrailing; -import calclavia.lib.grid.NodeGrid; -import calclavia.lib.grid.TickingGrid; +import java.util.Arrays; + import net.minecraft.item.ItemStack; +import resonant.lib.grid.TickingGrid; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; -import java.util.Arrays; - /** * @since 18/03/14 * @author tgame14 diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java index 55eefd34e..bbe0c7d49 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemItemRailing.java @@ -1,16 +1,16 @@ package resonantinduction.electrical.itemrailing; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import net.minecraftforge.common.ForgeDirection; +import resonantinduction.core.MultipartUtility; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.multipart.ControlKeyModifer; import codechicken.multipart.JItemMultiPart; import codechicken.multipart.MultiPartRegistry; import codechicken.multipart.TMultiPart; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; -import resonantinduction.core.MultipartUtility; /** * @author tgame14 diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java index 6fe08ec46..2d8fea720 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/ItemRailingTransfer.java @@ -1,13 +1,13 @@ package resonantinduction.electrical.itemrailing; -import calclavia.lib.render.EnumColor; +import java.lang.ref.WeakReference; + import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import resonant.lib.render.EnumColor; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; -import java.lang.ref.WeakReference; - /** * An object that is a wrapper for all items through railings * diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java index 54ce18afd..de571bbc9 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/NodeRailing.java @@ -1,21 +1,26 @@ package resonantinduction.electrical.itemrailing; -import calclavia.lib.config.Config; -import calclavia.lib.grid.Node; -import calclavia.lib.render.EnumColor; -import calclavia.lib.type.Pair; -import com.google.common.collect.Lists; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + import net.minecraft.inventory.IInventory; -import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.config.Config; +import resonant.lib.grid.Node; +import resonant.lib.render.EnumColor; +import resonant.lib.type.Pair; import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingProvider; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingTransfer; import universalelectricity.api.vector.IVectorWorld; import universalelectricity.api.vector.VectorWorld; -import java.util.*; +import com.google.common.collect.Lists; /** * @author tgame14 diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java index 64d61e2b2..5b71961dd 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/PartRailing.java @@ -1,22 +1,20 @@ package resonantinduction.electrical.itemrailing; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; -import codechicken.multipart.TileMultipart; +import java.lang.reflect.Constructor; + import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonant.api.grid.INode; import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.electrical.Electrical; -import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; import resonantinduction.electrical.itemrailing.interfaces.IItemRailingProvider; import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; import universalelectricity.api.vector.VectorWorld; - -import java.lang.reflect.Constructor; +import codechicken.multipart.TileMultipart; /** * @since 16/03/14 diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java index 73f04e39a..ebb6e692d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RailingDistanceComparator.java @@ -1,10 +1,10 @@ package resonantinduction.electrical.itemrailing; -import calclavia.lib.render.EnumColor; -import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; - import java.util.Comparator; +import resonant.lib.render.EnumColor; +import resonantinduction.electrical.itemrailing.interfaces.IItemRailing; + /** * @author tgame14 * @since 16/04/14 diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java index 1b14b4afe..83410aabb 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/RenderRailing.java @@ -1,7 +1,7 @@ package resonantinduction.electrical.itemrailing; -import calclavia.lib.render.item.ISimpleItemRenderer; import net.minecraft.item.ItemStack; +import resonant.api.items.ISimpleItemRenderer; /** * @author tgame14 diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java index 08660458c..0e73a368a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailing.java @@ -1,13 +1,13 @@ package resonantinduction.electrical.itemrailing.interfaces; -import calclavia.lib.grid.INode; -import calclavia.lib.render.EnumColor; +import java.util.Map; + import net.minecraft.inventory.IInventory; import net.minecraftforge.common.ForgeDirection; +import resonant.api.grid.INode; +import resonant.lib.render.EnumColor; import universalelectricity.api.vector.VectorWorld; -import java.util.Map; - /** * implement on Part Railings. * diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java index dbd5c50f6..7b2394656 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingProvider.java @@ -1,8 +1,7 @@ package resonantinduction.electrical.itemrailing.interfaces; -import calclavia.lib.grid.INodeProvider; +import resonant.api.grid.INodeProvider; import universalelectricity.api.vector.IVectorWorld; -import universalelectricity.api.vector.VectorWorld; /** * @author tgame14 diff --git a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java index f14d67604..95a187ae1 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/itemrailing/interfaces/IItemRailingTransfer.java @@ -1,7 +1,7 @@ package resonantinduction.electrical.itemrailing.interfaces; -import calclavia.lib.render.EnumColor; import net.minecraft.item.ItemStack; +import resonant.lib.render.EnumColor; /** * the object that functions as a Wrapper for items and handles the items that flow through Railings diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java index 90a6a8769..3cea5c9f5 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemMiningLaser.java @@ -16,13 +16,13 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; +import resonant.api.event.LaserEvent; +import resonant.lib.prefab.vector.RayTraceHelper; +import resonant.lib.type.Pair; import resonantinduction.core.ResonantInduction; import resonantinduction.core.prefab.items.ItemEnergyTool; import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; -import calclavia.api.resonantinduction.electrical.LaserEvent; -import calclavia.lib.prefab.vector.RayTraceHelper; -import calclavia.lib.type.Pair; /** Stream laser mining tool, When held down it will slowly mine away at the block in front of it. * diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java index fbde72e8d..2243fdcb7 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/ItemThermalLaser.java @@ -1,38 +1,26 @@ package resonantinduction.electrical.laser.gun; import java.awt.Color; -import java.util.HashMap; -import java.util.List; -import resonantinduction.core.ResonantInduction; -import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumAction; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.potion.Potion; -import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.EnumMovingObjectType; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; +import resonant.api.event.LaserEvent; +import resonant.lib.prefab.vector.RayTraceHelper; +import resonant.lib.thermal.ThermalGrid; +import resonantinduction.core.ResonantInduction; import universalelectricity.api.item.ItemElectric; import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; -import calclavia.api.resonantinduction.electrical.LaserEvent; -import calclavia.lib.prefab.vector.RayTraceHelper; -import calclavia.lib.thermal.ThermalGrid; -import calclavia.lib.type.Pair; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; /** Version of the mining laser that uses the thermal grid to melt blocks down * diff --git a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java index 3584b7916..3574dc320 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java +++ b/electrical/src/main/scala/resonantinduction/electrical/laser/gun/RenderMiningLaserGun.java @@ -10,7 +10,6 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; import resonantinduction.core.Reference; - import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java index 7b09d24f7..93b83a561 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/levitator/ItemLevitator.java @@ -7,8 +7,6 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import resonantinduction.core.prefab.part.IHighlight; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LanguageUtility; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.microblock.FacePlacementGrid$; diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java index 1b051873b..57fe91cf0 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/levitator/PartLevitator.java @@ -1,15 +1,13 @@ package resonantinduction.electrical.levitator; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LinkUtility; -import calclavia.lib.utility.WrenchUtility; -import calclavia.lib.utility.inventory.InventoryUtility; -import codechicken.lib.data.MCDataInput; -import codechicken.lib.data.MCDataOutput; -import codechicken.multipart.TMultiPart; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.*; +import java.lang.ref.WeakReference; +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockFluid; +import net.minecraft.block.BlockLadder; +import net.minecraft.block.BlockSnow; +import net.minecraft.block.BlockVine; import net.minecraft.entity.Entity; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; @@ -23,6 +21,10 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.IFluidBlock; +import resonant.lib.render.EnumColor; +import resonant.lib.utility.LinkUtility; +import resonant.lib.utility.WrenchUtility; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.MultipartUtility; import resonantinduction.core.Settings; import resonantinduction.core.prefab.part.PartFace; @@ -30,9 +32,11 @@ import resonantinduction.electrical.Electrical; import resonantinduction.electrical.tesla.TileTesla; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; - -import java.lang.ref.WeakReference; -import java.util.List; +import codechicken.lib.data.MCDataInput; +import codechicken.lib.data.MCDataOutput; +import codechicken.multipart.TMultiPart; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; public class PartLevitator extends PartFace { diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/PathfinderLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/PathfinderLevitator.java index de552e71f..74f463381 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/PathfinderLevitator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/levitator/PathfinderLevitator.java @@ -5,10 +5,10 @@ import java.util.Set; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.path.IPathCallBack; +import resonant.lib.path.Pathfinder; +import resonant.lib.path.PathfinderAStar; import universalelectricity.api.vector.Vector3; -import calclavia.lib.path.IPathCallBack; -import calclavia.lib.path.Pathfinder; -import calclavia.lib.path.PathfinderAStar; /** * Uses the well known A* Pathfinding algorithm. diff --git a/electrical/src/main/scala/resonantinduction/electrical/levitator/RenderLevitator.java b/electrical/src/main/scala/resonantinduction/electrical/levitator/RenderLevitator.java index 76179b2d8..97968e33d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/levitator/RenderLevitator.java +++ b/electrical/src/main/scala/resonantinduction/electrical/levitator/RenderLevitator.java @@ -7,9 +7,9 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.client.FMLClientHandler; public class RenderLevitator implements ISimpleItemRenderer diff --git a/electrical/src/main/scala/resonantinduction/electrical/multimeter/Graph.java b/electrical/src/main/scala/resonantinduction/electrical/multimeter/Graph.java index 0687748b5..df844765d 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/multimeter/Graph.java +++ b/electrical/src/main/scala/resonantinduction/electrical/multimeter/Graph.java @@ -1,7 +1,7 @@ package resonantinduction.electrical.multimeter; import net.minecraft.nbt.NBTTagCompound; -import calclavia.lib.type.EvictingList; +import resonant.lib.type.EvictingList; /** * Graph for the multimeter diff --git a/electrical/src/main/scala/resonantinduction/electrical/multimeter/GuiMultimeter.java b/electrical/src/main/scala/resonantinduction/electrical/multimeter/GuiMultimeter.java index 1728232d7..be99a0aa1 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/multimeter/GuiMultimeter.java +++ b/electrical/src/main/scala/resonantinduction/electrical/multimeter/GuiMultimeter.java @@ -6,9 +6,9 @@ package resonantinduction.electrical.multimeter; import net.minecraft.client.gui.GuiButton; import net.minecraft.client.gui.GuiTextField; import net.minecraft.entity.player.InventoryPlayer; -import calclavia.lib.gui.GuiContainerBase; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LanguageUtility; +import resonant.lib.gui.GuiContainerBase; +import resonant.lib.render.EnumColor; +import resonant.lib.utility.LanguageUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/multimeter/ItemMultimeter.java b/electrical/src/main/scala/resonantinduction/electrical/multimeter/ItemMultimeter.java index 46394662f..73a59b928 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/multimeter/ItemMultimeter.java +++ b/electrical/src/main/scala/resonantinduction/electrical/multimeter/ItemMultimeter.java @@ -12,10 +12,10 @@ import net.minecraft.world.World; import org.lwjgl.input.Keyboard; +import resonant.lib.render.EnumColor; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.prefab.part.IHighlight; import resonantinduction.electrical.wire.EnumWireMaterial; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LanguageUtility; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.microblock.FacePlacementGrid$; diff --git a/electrical/src/main/scala/resonantinduction/electrical/multimeter/MultimeterNetwork.java b/electrical/src/main/scala/resonantinduction/electrical/multimeter/MultimeterNetwork.java index 10b528c66..9d1e9583a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/multimeter/MultimeterNetwork.java +++ b/electrical/src/main/scala/resonantinduction/electrical/multimeter/MultimeterNetwork.java @@ -6,13 +6,13 @@ import java.util.List; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import resonant.lib.utility.LanguageUtility; import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; import universalelectricity.api.net.IUpdate; import universalelectricity.api.vector.Vector3; import universalelectricity.core.net.Network; import universalelectricity.core.net.NetworkTickHandler; -import calclavia.lib.utility.LanguageUtility; public class MultimeterNetwork extends Network implements IUpdate { diff --git a/electrical/src/main/scala/resonantinduction/electrical/multimeter/PartMultimeter.java b/electrical/src/main/scala/resonantinduction/electrical/multimeter/PartMultimeter.java index c64e94a24..9c96ba910 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/multimeter/PartMultimeter.java +++ b/electrical/src/main/scala/resonantinduction/electrical/multimeter/PartMultimeter.java @@ -11,6 +11,10 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import resonant.api.IMechanicalNode; +import resonant.api.grid.INodeProvider; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.utility.WrenchUtility; import resonantinduction.core.ResonantInduction; import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.IPressureNodeProvider; @@ -21,10 +25,6 @@ import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; import universalelectricity.api.net.IConnector; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.utility.WrenchUtility; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; import codechicken.lib.vec.Cuboid6; diff --git a/electrical/src/main/scala/resonantinduction/electrical/multimeter/RenderMultimeter.java b/electrical/src/main/scala/resonantinduction/electrical/multimeter/RenderMultimeter.java index 4cae90daa..0bad02726 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/multimeter/RenderMultimeter.java +++ b/electrical/src/main/scala/resonantinduction/electrical/multimeter/RenderMultimeter.java @@ -10,12 +10,12 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import universalelectricity.api.vector.Vector3; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; -import calclavia.lib.utility.LanguageUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/tesla/BlockTesla.java b/electrical/src/main/scala/resonantinduction/electrical/tesla/BlockTesla.java index df4e59fc9..fb2aff2d8 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/tesla/BlockTesla.java +++ b/electrical/src/main/scala/resonantinduction/electrical/tesla/BlockTesla.java @@ -9,15 +9,15 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; +import resonant.lib.prefab.block.BlockSidedIO; +import resonant.lib.render.block.BlockRenderingHandler; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.LinkUtility; +import resonant.lib.utility.WrenchUtility; import resonantinduction.core.MultipartUtility; import resonantinduction.core.Reference; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.vector.VectorWorld; -import calclavia.lib.prefab.block.BlockSidedIO; -import calclavia.lib.render.block.BlockRenderingHandler; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.LinkUtility; -import calclavia.lib.utility.WrenchUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java b/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java index 4bc59d014..ec6f45cbd 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java +++ b/electrical/src/main/scala/resonantinduction/electrical/tesla/TileTesla.java @@ -20,6 +20,14 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.multiblock.IMultiBlockStructure; +import resonant.lib.multiblock.MultiBlockHandler; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.IPacketSender; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.damage.ElectricalDamage; +import resonant.lib.prefab.tile.TileElectrical; +import resonant.lib.render.EnumColor; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.Settings; @@ -28,15 +36,6 @@ import universalelectricity.api.UniversalElectricity; import universalelectricity.api.energy.EnergyStorageHandler; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; -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.network.PacketHandler; -import calclavia.lib.prefab.CustomDamageSource; -import calclavia.lib.prefab.damage.ElectricalDamage; -import calclavia.lib.prefab.tile.TileElectrical; -import calclavia.lib.render.EnumColor; import com.google.common.io.ByteArrayDataInput; diff --git a/electrical/src/main/scala/resonantinduction/electrical/transformer/PartTransformer.java b/electrical/src/main/scala/resonantinduction/electrical/transformer/PartTransformer.java index c35c4b2a9..0ad906c05 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/transformer/PartTransformer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/transformer/PartTransformer.java @@ -6,6 +6,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.utility.WrenchUtility; import resonantinduction.core.prefab.part.PartFace; import resonantinduction.electrical.Electrical; import universalelectricity.api.CompatibilityModule; @@ -17,7 +18,6 @@ import universalelectricity.api.electricity.IVoltageOutput; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyInterface; import universalelectricity.api.vector.VectorHelper; -import calclavia.lib.utility.WrenchUtility; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; import codechicken.lib.vec.Vector3; diff --git a/electrical/src/main/scala/resonantinduction/electrical/transformer/RenderTransformer.java b/electrical/src/main/scala/resonantinduction/electrical/transformer/RenderTransformer.java index 44cec9803..9bcd6c0bc 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/transformer/RenderTransformer.java +++ b/electrical/src/main/scala/resonantinduction/electrical/transformer/RenderTransformer.java @@ -7,9 +7,9 @@ import net.minecraftforge.client.model.obj.WavefrontObject; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/ItemWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/ItemWire.java index 8b348ecd7..58bf5ba53 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/ItemWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/ItemWire.java @@ -12,6 +12,8 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.input.Keyboard; +import resonant.lib.render.EnumColor; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.MultipartUtility; import resonantinduction.core.Reference; import resonantinduction.core.TabRI; @@ -21,8 +23,6 @@ import resonantinduction.electrical.wire.framed.PartFramedWire; import resonantinduction.electrical.wire.framed.RenderFramedWire; import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LanguageUtility; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.multipart.ControlKeyModifer; diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java index 05bdfa948..732811094 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/PartAdvancedWire.java @@ -8,19 +8,16 @@ import net.minecraft.block.Block; import net.minecraft.block.BlockColored; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; import net.minecraft.item.ItemShears; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.prefab.damage.ElectricalDamage; import resonantinduction.core.MultipartUtility; -import resonantinduction.electrical.Electrical; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.IConductor; -import calclavia.lib.prefab.CustomDamageSource; -import calclavia.lib.prefab.damage.ElectricalDamage; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; import codechicken.multipart.IRedstonePart; diff --git a/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java b/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java index a443faf22..a2572694a 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java +++ b/electrical/src/main/scala/resonantinduction/electrical/wire/framed/PartFramedWire.java @@ -18,6 +18,7 @@ import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; +import resonant.lib.prefab.damage.ElectricalDamage; import resonantinduction.core.prefab.part.PartFramedConnection; import resonantinduction.electrical.Electrical; import resonantinduction.electrical.wire.EnumWireMaterial; @@ -27,7 +28,6 @@ import universalelectricity.api.electricity.IElectricalNetwork; import universalelectricity.api.energy.EnergyNetworkLoader; import universalelectricity.api.energy.IConductor; import universalelectricity.api.energy.IEnergyNetwork; -import calclavia.lib.prefab.damage.ElectricalDamage; import codechicken.lib.lighting.LazyLightMatrix; import codechicken.lib.render.CCRenderState; import codechicken.lib.render.IconTransformation; diff --git a/electrical/src/main/scala/resonantinduction/quantum/gate/IQuantumGate.java b/electrical/src/main/scala/resonantinduction/quantum/gate/IQuantumGate.java index dfc4e7957..22b4e407f 100644 --- a/electrical/src/main/scala/resonantinduction/quantum/gate/IQuantumGate.java +++ b/electrical/src/main/scala/resonantinduction/quantum/gate/IQuantumGate.java @@ -4,7 +4,7 @@ import net.minecraft.entity.Entity; import net.minecraft.inventory.ISidedInventory; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.IFluidHandler; -import calclavia.api.icbm.IBlockFrequency; +import resonant.api.blocks.IBlockFrequency; /** * Only TileEntities should implement this. diff --git a/electrical/src/main/scala/resonantinduction/quantum/gate/PartQuantumGlyph.java b/electrical/src/main/scala/resonantinduction/quantum/gate/PartQuantumGlyph.java index 4ed9d13cb..e8ef000c1 100644 --- a/electrical/src/main/scala/resonantinduction/quantum/gate/PartQuantumGlyph.java +++ b/electrical/src/main/scala/resonantinduction/quantum/gate/PartQuantumGlyph.java @@ -18,13 +18,13 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; +import resonant.api.IExternalInventory; +import resonant.api.IExternalInventoryBox; +import resonant.api.blocks.IBlockFrequency; +import resonant.lib.utility.inventory.ExternalInventory; import resonantinduction.electrical.Electrical; import universalelectricity.api.vector.VectorWorld; -import calclavia.api.icbm.IBlockFrequency; import calclavia.api.mffs.fortron.FrequencyGrid; -import calclavia.lib.utility.inventory.ExternalInventory; -import calclavia.lib.utility.inventory.IExternalInventory; -import calclavia.lib.utility.inventory.IExternalInventoryBox; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; import codechicken.lib.vec.Cuboid6; diff --git a/electrical/src/main/scala/resonantinduction/quantum/gate/RenderQuantumGlyph.java b/electrical/src/main/scala/resonantinduction/quantum/gate/RenderQuantumGlyph.java index acbe79145..83080afe8 100644 --- a/electrical/src/main/scala/resonantinduction/quantum/gate/RenderQuantumGlyph.java +++ b/electrical/src/main/scala/resonantinduction/quantum/gate/RenderQuantumGlyph.java @@ -6,9 +6,9 @@ import net.minecraft.item.ItemStack; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import codechicken.lib.vec.Cuboid6; public class RenderQuantumGlyph implements ISimpleItemRenderer diff --git a/electrical/src/main/scala/resonantinduction/quantum/gate/TraitQuantumGate.java b/electrical/src/main/scala/resonantinduction/quantum/gate/TraitQuantumGate.java index f978d5f38..f95c72af5 100644 --- a/electrical/src/main/scala/resonantinduction/quantum/gate/TraitQuantumGate.java +++ b/electrical/src/main/scala/resonantinduction/quantum/gate/TraitQuantumGate.java @@ -8,7 +8,7 @@ import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; -import calclavia.api.icbm.IBlockFrequency; +import resonant.api.blocks.IBlockFrequency; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java b/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java index 53d3fe0eb..75d90e2e2 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/ClientProxy.java @@ -1,9 +1,9 @@ package resonantinduction.mechanical; +import resonant.lib.render.item.GlobalItemRenderer; import resonantinduction.mechanical.energy.gear.RenderGear; import resonantinduction.mechanical.energy.gearshaft.RenderGearShaft; import resonantinduction.mechanical.fluid.pipe.RenderPipe; -import calclavia.lib.render.item.GlobalItemRenderer; public class ClientProxy extends CommonProxy { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/CommonProxy.java b/mechanical/src/main/scala/resonantinduction/mechanical/CommonProxy.java index e36d09cf1..d7e3360ef 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/CommonProxy.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/CommonProxy.java @@ -1,6 +1,6 @@ package resonantinduction.mechanical; -import calclavia.lib.prefab.ProxyBase; +import resonant.lib.prefab.ProxyBase; public class CommonProxy extends ProxyBase { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java b/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java index 082449d2f..71a944bd6 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/Mechanical.java @@ -1,13 +1,47 @@ package resonantinduction.mechanical; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.components.creative.BlockCreativeBuilder; -import calclavia.lib.content.ContentRegistry; -import calclavia.lib.grid.NodeRegistry; -import calclavia.lib.network.PacketAnnotation; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.item.ItemBlockMetadata; -import calclavia.lib.recipe.UniversalRecipe; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.oredict.OreDictionary; +import net.minecraftforge.oredict.ShapedOreRecipe; +import resonant.api.IMechanicalNode; +import resonant.core.content.debug.BlockCreativeBuilder; +import resonant.lib.content.ContentRegistry; +import resonant.lib.grid.NodeRegistry; +import resonant.lib.network.PacketAnnotation; +import resonant.lib.network.PacketHandler; +import resonant.lib.prefab.item.ItemBlockMetadata; +import resonant.lib.recipe.UniversalRecipe; +import resonantinduction.core.Reference; +import resonantinduction.core.ResonantInduction; +import resonantinduction.core.Settings; +import resonantinduction.core.TabRI; +import resonantinduction.mechanical.belt.BlockConveyorBelt; +import resonantinduction.mechanical.belt.TileConveyorBelt; +import resonantinduction.mechanical.energy.gear.ItemGear; +import resonantinduction.mechanical.energy.gearshaft.ItemGearShaft; +import resonantinduction.mechanical.energy.grid.MechanicalNode; +import resonantinduction.mechanical.energy.turbine.BlockWaterTurbine; +import resonantinduction.mechanical.energy.turbine.BlockWindTurbine; +import resonantinduction.mechanical.energy.turbine.SchematicWaterTurbine; +import resonantinduction.mechanical.energy.turbine.SchematicWindTurbine; +import resonantinduction.mechanical.energy.turbine.TileWaterTurbine; +import resonantinduction.mechanical.energy.turbine.TileWindTurbine; +import resonantinduction.mechanical.fluid.pipe.EnumPipeMaterial; +import resonantinduction.mechanical.fluid.pipe.ItemPipe; +import resonantinduction.mechanical.fluid.transport.TilePump; +import resonantinduction.mechanical.logistic.belt.BlockDetector; +import resonantinduction.mechanical.logistic.belt.BlockManipulator; +import resonantinduction.mechanical.logistic.belt.TileDetector; +import resonantinduction.mechanical.logistic.belt.TileManipulator; +import resonantinduction.mechanical.logistic.belt.TileSorter; +import resonantinduction.mechanical.process.crusher.TileMechanicalPiston; +import resonantinduction.mechanical.process.edit.TileBreaker; +import resonantinduction.mechanical.process.edit.TilePlacer; +import resonantinduction.mechanical.process.grinder.TileGrindingWheel; +import resonantinduction.mechanical.process.purifier.TileMixer; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; @@ -19,31 +53,6 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.block.Block; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.oredict.OreDictionary; -import net.minecraftforge.oredict.ShapedOreRecipe; -import resonantinduction.core.Reference; -import resonantinduction.core.ResonantInduction; -import resonantinduction.core.Settings; -import resonantinduction.core.TabRI; -import resonantinduction.mechanical.belt.BlockConveyorBelt; -import resonantinduction.mechanical.belt.TileConveyorBelt; -import resonantinduction.mechanical.energy.gear.ItemGear; -import resonantinduction.mechanical.energy.gearshaft.ItemGearShaft; -import resonantinduction.mechanical.energy.grid.MechanicalNode; -import resonantinduction.mechanical.energy.turbine.*; -import resonantinduction.mechanical.fluid.pipe.EnumPipeMaterial; -import resonantinduction.mechanical.fluid.pipe.ItemPipe; -import resonantinduction.mechanical.fluid.transport.TilePump; -import resonantinduction.mechanical.logistic.belt.*; -import resonantinduction.mechanical.process.crusher.TileMechanicalPiston; -import resonantinduction.mechanical.process.edit.TileBreaker; -import resonantinduction.mechanical.process.edit.TilePlacer; -import resonantinduction.mechanical.process.grinder.TileGrindingWheel; -import resonantinduction.mechanical.process.purifier.TileMixer; /** * Resonant Induction Mechanical Module diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/belt/BeltNetwork.java b/mechanical/src/main/scala/resonantinduction/mechanical/belt/BeltNetwork.java index 93c02db48..fb37b5cb3 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/belt/BeltNetwork.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/belt/BeltNetwork.java @@ -1,6 +1,6 @@ package resonantinduction.mechanical.belt; -import calclavia.lib.grid.TickingGrid; +import resonant.lib.grid.TickingGrid; /** @author Darkguardsman */ public class BeltNetwork extends TickingGrid diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/belt/BlockConveyorBelt.java b/mechanical/src/main/scala/resonantinduction/mechanical/belt/BlockConveyorBelt.java index 7f394b097..9a4b43845 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/belt/BlockConveyorBelt.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/belt/BlockConveyorBelt.java @@ -13,11 +13,11 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.prefab.block.BlockTile; +import resonant.lib.render.block.BlockRenderingHandler; import resonantinduction.core.Reference; import resonantinduction.mechanical.belt.TileConveyorBelt.BeltType; import universalelectricity.api.UniversalElectricity; -import calclavia.lib.prefab.block.BlockTile; -import calclavia.lib.render.block.BlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/belt/RenderConveyorBelt.java b/mechanical/src/main/scala/resonantinduction/mechanical/belt/RenderConveyorBelt.java index 6cbffdd0f..1abbbcf40 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/belt/RenderConveyorBelt.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/belt/RenderConveyorBelt.java @@ -7,9 +7,9 @@ import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; import resonantinduction.core.Reference; import resonantinduction.mechanical.belt.TileConveyorBelt.BeltType; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/belt/TileConveyorBelt.java b/mechanical/src/main/scala/resonantinduction/mechanical/belt/TileConveyorBelt.java index 90a4d3856..06a28fae1 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/belt/TileConveyorBelt.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/belt/TileConveyorBelt.java @@ -11,15 +11,15 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IEntityConveyor; +import resonant.api.IRotatable; +import resonant.api.grid.INode; +import resonant.api.grid.INodeProvider; +import resonant.lib.content.module.TileBase; +import resonant.lib.network.IPacketReceiverWithID; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.mechanical.Mechanical; -import calclavia.api.resonantinduction.mechanical.IBelt; -import calclavia.lib.content.module.TileBase; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.network.IPacketReceiverWithID; -import calclavia.lib.prefab.tile.IRotatable; import com.google.common.io.ByteArrayDataInput; @@ -28,7 +28,7 @@ import cpw.mods.fml.common.network.PacketDispatcher; /** Conveyer belt TileEntity that allows entities of all kinds to be moved * * @author DarkGuardsman */ -public class TileConveyorBelt extends TileBase implements IBelt, IRotatable, INodeProvider, IPacketReceiverWithID +public class TileConveyorBelt extends TileBase implements IEntityConveyor, IRotatable, INodeProvider, IPacketReceiverWithID { public enum BeltType { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ConnectionLogic.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ConnectionLogic.java index 3c970cbbd..bae471ed3 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ConnectionLogic.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/ConnectionLogic.java @@ -3,8 +3,8 @@ package resonantinduction.mechanical.energy.gear; import java.util.HashMap; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.utility.WorldUtility; import universalelectricity.api.vector.Vector3; -import calclavia.lib.utility.WorldUtility; /** * Used for testing. NO-OP diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearMultiBlockHandler.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearMultiBlockHandler.java index 90d698ba2..1ec1db368 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearMultiBlockHandler.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/GearMultiBlockHandler.java @@ -2,8 +2,8 @@ package resonantinduction.mechanical.energy.gear; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.multiblock.MultiBlockHandler; import universalelectricity.api.vector.Vector3; -import calclavia.lib.multiblock.reference.MultiBlockHandler; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java index fab0ebcea..5b0b0c1ad 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGear.java @@ -11,17 +11,17 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IMechanicalNode; +import resonant.api.grid.INode; +import resonant.api.grid.INodeProvider; +import resonant.lib.multiblock.IMultiBlockStructure; +import resonant.lib.multiblock.MultiBlockHandler; +import resonant.lib.utility.WrenchUtility; import resonantinduction.core.Reference; import resonantinduction.core.resource.ItemHandCrank; import resonantinduction.mechanical.Mechanical; import resonantinduction.mechanical.energy.grid.MechanicalNode; import resonantinduction.mechanical.energy.grid.PartMechanical; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.multiblock.reference.IMultiBlockStructure; -import calclavia.lib.multiblock.reference.MultiBlockHandler; -import calclavia.lib.utility.WrenchUtility; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Rotation; import codechicken.lib.vec.Transformation; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java index e8b5b055d..71f3fb270 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/PartGearShaft.java @@ -1,25 +1,21 @@ package resonantinduction.mechanical.energy.gear; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.grid.INodeProvider; +import java.util.Collection; +import java.util.HashSet; +import java.util.Set; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.ForgeDirection; +import resonantinduction.mechanical.Mechanical; +import resonantinduction.mechanical.energy.gearshaft.GearShaftNode; +import resonantinduction.mechanical.energy.gearshaft.RenderGearShaft; +import resonantinduction.mechanical.energy.grid.PartMechanical; import codechicken.lib.raytracer.IndexedCuboid6; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Vector3; import codechicken.multipart.PartMap; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.item.ItemStack; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.ForgeDirection; -import resonantinduction.mechanical.Mechanical; -import resonantinduction.mechanical.energy.gearshaft.GearShaftNode; -import resonantinduction.mechanical.energy.gearshaft.RenderGearShaft; -import resonantinduction.mechanical.energy.grid.MechanicalNode; -import resonantinduction.mechanical.energy.grid.PartMechanical; - -import java.util.Collection; -import java.util.HashSet; -import java.util.Set; /** * We assume all the force acting on the gear is 90 degrees. diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java index 669bfe570..96606180b 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gear/RenderGear.java @@ -7,9 +7,9 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java index 2be327d91..baf2c8435 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/GearShaftNode.java @@ -6,8 +6,8 @@ import java.util.List; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.grid.INodeProvider; +import resonant.api.IMechanicalNode; +import resonant.api.grid.INodeProvider; import resonantinduction.mechanical.energy.gear.PartGear; import resonantinduction.mechanical.energy.gear.PartGearShaft; import resonantinduction.mechanical.energy.grid.MechanicalNode; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java index 8f33e1fb5..8129720c0 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/RenderGearShaft.java @@ -8,10 +8,10 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; import resonantinduction.mechanical.energy.gear.PartGearShaft; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java index 775b24bdc..048cc5462 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftGrid.java @@ -1,6 +1,6 @@ package resonantinduction.mechanical.energy.gearshaft; -import calclavia.lib.grid.NodeGrid; +import resonant.lib.grid.NodeGrid; public class ShaftGrid extends NodeGrid { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java index f182e4de0..aa62d4da2 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/gearshaft/ShaftSubNode.java @@ -1,8 +1,8 @@ package resonantinduction.mechanical.energy.gearshaft; +import resonant.api.grid.INodeProvider; +import resonant.lib.grid.Node; import resonantinduction.mechanical.energy.gear.PartGearShaft; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.grid.Node; public class ShaftSubNode extends Node { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java index b28063c45..031352014 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/MechanicalNode.java @@ -1,19 +1,19 @@ package resonantinduction.mechanical.energy.grid; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.grid.Node; -import calclavia.lib.grid.TickingGrid; -import codechicken.multipart.TMultiPart; +import java.util.Iterator; +import java.util.Map.Entry; + import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IMechanicalNode; +import resonant.api.grid.INodeProvider; +import resonant.lib.grid.Node; +import resonant.lib.grid.TickingGrid; import resonantinduction.core.ResonantInduction; import universalelectricity.api.vector.Vector3; - -import java.util.Iterator; -import java.util.Map.Entry; +import codechicken.multipart.TMultiPart; /** * A mechanical node for mechanical energy. diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/PacketNetwork.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/PacketNetwork.java index e05d156ec..9ec7df182 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/PacketNetwork.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/PacketNetwork.java @@ -7,10 +7,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.packet.Packet; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketType; import universalelectricity.api.net.IConnector; import universalelectricity.api.vector.Vector3; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketType; import com.google.common.io.ByteArrayDataInput; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/PartMechanical.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/PartMechanical.java index 41546de34..c21783eaf 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/PartMechanical.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/PartMechanical.java @@ -7,8 +7,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; +import resonant.api.grid.INode; +import resonant.api.grid.INodeProvider; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; import codechicken.multipart.JCuboidPart; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/TileMechanical.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/TileMechanical.java index f263ab26c..c62c82582 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/TileMechanical.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/grid/TileMechanical.java @@ -4,14 +4,14 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.ForgeDirection; +import resonant.api.grid.INode; +import resonant.api.grid.INodeProvider; +import resonant.lib.content.module.TileBase; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; import resonantinduction.core.ResonantInduction; import resonantinduction.mechanical.Mechanical; import universalelectricity.api.vector.Vector3; -import calclavia.lib.content.module.TileBase; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; import com.google.common.io.ByteArrayDataInput; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockTurbineBase.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockTurbineBase.java index 0777f119c..c12daf1db 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockTurbineBase.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockTurbineBase.java @@ -4,7 +4,7 @@ import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import calclavia.lib.prefab.block.BlockRotatable; +import resonant.lib.prefab.block.BlockRotatable; /* * Turbine block, extend this. diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockWaterTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockWaterTurbine.java index 4da909d9b..4fabfee43 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockWaterTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockWaterTurbine.java @@ -6,7 +6,7 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import calclavia.lib.render.block.BlockRenderingHandler; +import resonant.lib.render.block.BlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockWindTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockWindTurbine.java index 97a129fe9..f1146f136 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockWindTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/BlockWindTurbine.java @@ -6,7 +6,7 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import calclavia.lib.render.block.BlockRenderingHandler; +import resonant.lib.render.block.BlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/RenderWaterTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/RenderWaterTurbine.java index c5a9bba17..210fdbcf4 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/RenderWaterTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/RenderWaterTurbine.java @@ -8,9 +8,9 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/RenderWindTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/RenderWindTurbine.java index 430188e0b..b2f332641 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/RenderWindTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/RenderWindTurbine.java @@ -8,9 +8,9 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/SchematicWaterTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/SchematicWaterTurbine.java index d99ab17f9..95731b909 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/SchematicWaterTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/SchematicWaterTurbine.java @@ -3,10 +3,10 @@ package resonantinduction.mechanical.energy.turbine; import java.util.HashMap; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.schematic.Schematic; +import resonant.lib.type.Pair; import resonantinduction.mechanical.Mechanical; import universalelectricity.api.vector.Vector3; -import calclavia.lib.type.Pair; -import calclavia.lib.schematic.Schematic; public class SchematicWaterTurbine extends Schematic { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/SchematicWindTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/SchematicWindTurbine.java index 2cc6c0421..6e9ea3d5d 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/SchematicWindTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/SchematicWindTurbine.java @@ -3,10 +3,10 @@ package resonantinduction.mechanical.energy.turbine; import java.util.HashMap; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.schematic.Schematic; +import resonant.lib.type.Pair; import resonantinduction.mechanical.Mechanical; import universalelectricity.api.vector.Vector3; -import calclavia.lib.type.Pair; -import calclavia.lib.schematic.Schematic; public class SchematicWindTurbine extends Schematic { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java index c80ee5d27..65029fde1 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileMechanicalTurbine.java @@ -3,14 +3,13 @@ package resonantinduction.mechanical.energy.turbine; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IMechanicalNode; +import resonant.api.grid.INode; +import resonant.api.grid.INodeProvider; +import resonant.lib.network.Synced; +import resonant.lib.network.Synced.SyncedInput; +import resonant.lib.network.Synced.SyncedOutput; import resonantinduction.mechanical.energy.grid.MechanicalNode; -import universalelectricity.api.energy.EnergyStorageHandler; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.network.Synced; -import calclavia.lib.network.Synced.SyncedInput; -import calclavia.lib.network.Synced.SyncedOutput; //TODO: MC 1.7, merge turbines in. public class TileMechanicalTurbine extends TileTurbineBase implements INodeProvider diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileTurbineBase.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileTurbineBase.java index 5ede2f0ac..2ad38ce3d 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileTurbineBase.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileTurbineBase.java @@ -9,13 +9,14 @@ import net.minecraft.network.packet.Packet; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.core.ResonantEngine; +import resonant.lib.References; +import resonant.lib.content.module.TileBase; +import resonant.lib.multiblock.IMultiBlockStructure; +import resonant.lib.network.Synced; +import resonant.lib.network.Synced.SyncedInput; +import resonant.lib.network.Synced.SyncedOutput; import universalelectricity.api.vector.Vector3; -import calclavia.components.CalclaviaLoader; -import calclavia.lib.content.module.TileBase; -import calclavia.lib.multiblock.reference.IMultiBlockStructure; -import calclavia.lib.network.Synced; -import calclavia.lib.network.Synced.SyncedInput; -import calclavia.lib.network.Synced.SyncedOutput; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -123,12 +124,12 @@ public abstract class TileTurbineBase extends TileBase implements IMultiBlockStr @Override public Packet getDescriptionPacket() { - return CalclaviaLoader.PACKET_ANNOTATION.getPacket(this); + return References.PACKET_ANNOTATION.getPacket(this); } public void sendPowerUpdate() { - CalclaviaLoader.PACKET_ANNOTATION.sync(this, 1); + References.PACKET_ANNOTATION.sync(this, 1); } /** Reads a tile entity from NBT. */ diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWaterTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWaterTurbine.java index a78bca264..746760aeb 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWaterTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWaterTurbine.java @@ -8,10 +8,10 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Vec3; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.ForgeDirection; +import resonant.api.grid.INodeProvider; import resonantinduction.core.Settings; import resonantinduction.mechanical.energy.grid.MechanicalNode; import universalelectricity.api.vector.Vector3; -import calclavia.lib.grid.INodeProvider; import cpw.mods.fml.relauncher.ReflectionHelper; /** diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java index 4996b739a..a53717125 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TileWindTurbine.java @@ -1,21 +1,15 @@ package resonantinduction.mechanical.energy.turbine; -import java.util.List; - -import resonantinduction.core.Settings; import net.minecraft.block.Block; -import net.minecraft.entity.Entity; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.biome.BiomeGenBase; import net.minecraft.world.biome.BiomeGenOcean; import net.minecraft.world.biome.BiomeGenPlains; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.utility.inventory.InventoryUtility; +import resonantinduction.core.Settings; import universalelectricity.api.vector.Vector3; -import calclavia.api.resonantinduction.IBoilHandler; -import calclavia.lib.config.Config; -import calclavia.lib.prefab.vector.Cuboid; -import calclavia.lib.utility.inventory.InventoryUtility; /** The vertical wind turbine collects airflow. The horizontal wind turbine collects steam from steam * power plants. diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TurbineMBlockHandler.java b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TurbineMBlockHandler.java index c2e179dc9..3280f4185 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TurbineMBlockHandler.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/energy/turbine/TurbineMBlockHandler.java @@ -1,8 +1,8 @@ package resonantinduction.mechanical.energy.turbine; import net.minecraft.tileentity.TileEntity; +import resonant.lib.multiblock.MultiBlockHandler; import universalelectricity.api.vector.Vector3; -import calclavia.lib.multiblock.reference.MultiBlockHandler; public class TurbineMBlockHandler extends MultiBlockHandler { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/ItemPipe.java b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/ItemPipe.java index 96bf2e958..38587494f 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/ItemPipe.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/ItemPipe.java @@ -9,10 +9,10 @@ import net.minecraft.world.World; import org.lwjgl.input.Keyboard; +import resonant.lib.render.EnumColor; +import resonant.lib.utility.LanguageUtility; import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LanguageUtility; import codechicken.lib.vec.BlockCoord; import codechicken.lib.vec.Vector3; import codechicken.multipart.JItemMultiPart; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/PartPipe.java b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/PartPipe.java index 1f9338505..3751885d2 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/PartPipe.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/PartPipe.java @@ -11,13 +11,13 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import resonant.lib.type.EvictingList; +import resonant.lib.utility.WorldUtility; import resonantinduction.core.ResonantInduction; import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.IPressureNodeProvider; import resonantinduction.core.prefab.part.PartFramedNode; import resonantinduction.mechanical.Mechanical; -import calclavia.lib.type.EvictingList; -import calclavia.lib.utility.WorldUtility; import codechicken.lib.data.MCDataInput; import codechicken.lib.render.CCRenderState; import codechicken.lib.render.IconTransformation; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/RenderPipe.java b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/RenderPipe.java index af2a57534..c50efccd1 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/RenderPipe.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/pipe/RenderPipe.java @@ -12,11 +12,11 @@ import net.minecraftforge.fluids.FluidStack; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.FluidRenderUtility; +import resonant.lib.render.RenderUtility; +import resonant.lib.utility.WorldUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.FluidRenderUtility; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; -import calclavia.lib.utility.WorldUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/transport/RenderPump.java b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/transport/RenderPump.java index 2ab67b5e7..4d0be3faf 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/transport/RenderPump.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/transport/RenderPump.java @@ -11,8 +11,8 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; public class RenderPump extends TileEntitySpecialRenderer { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/transport/TilePump.java b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/transport/TilePump.java index b4cbbe8ca..5726fa821 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/fluid/transport/TilePump.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/fluid/transport/TilePump.java @@ -7,13 +7,13 @@ import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; import net.minecraftforge.fluids.IFluidHandler; +import resonant.api.IRotatable; +import resonant.api.grid.INode; import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.IPressureNodeProvider; import resonantinduction.mechanical.energy.grid.TileMechanical; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.vector.Vector3; -import calclavia.lib.grid.INode; -import calclavia.lib.prefab.tile.IRotatable; public class TilePump extends TileMechanical implements IPressureNodeProvider, IRotatable { diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/BlockManipulator.java b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/BlockManipulator.java index f6887ee66..796a59397 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/BlockManipulator.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/BlockManipulator.java @@ -5,9 +5,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatMessageComponent; import net.minecraft.world.World; +import resonant.lib.render.block.BlockRenderingHandler; import resonantinduction.core.prefab.imprint.BlockImprintable; import universalelectricity.api.UniversalElectricity; -import calclavia.lib.render.block.BlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/BlockRejector.java b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/BlockRejector.java index d90313b3d..3953ba8c7 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/BlockRejector.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/BlockRejector.java @@ -4,10 +4,10 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Icon; import net.minecraft.world.World; +import resonant.lib.render.block.BlockRenderingHandler; import resonantinduction.core.Reference; import resonantinduction.core.prefab.imprint.BlockImprintable; import universalelectricity.api.UniversalElectricity; -import calclavia.lib.render.block.BlockRenderingHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileDetector.java b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileDetector.java index c982080a7..261ed3633 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileDetector.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileDetector.java @@ -10,11 +10,11 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; import resonantinduction.core.ResonantInduction; import resonantinduction.core.prefab.imprint.TileFilterable; import resonantinduction.mechanical.Mechanical; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; import com.google.common.io.ByteArrayDataInput; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileManipulator.java b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileManipulator.java index 504d26702..3e80d3781 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileManipulator.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileManipulator.java @@ -9,14 +9,14 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IManipulator; +import resonant.api.IRotatable; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.utility.inventory.InternalInventoryHandler; import resonantinduction.core.ResonantInduction; import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.core.prefab.imprint.TileFilterable; import universalelectricity.api.vector.Vector3; -import calclavia.api.resonantinduction.mechanical.IManipulator; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.prefab.tile.IRotatable; -import calclavia.lib.utility.inventory.InternalInventoryHandler; import com.google.common.io.ByteArrayDataInput; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileRejector.java b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileRejector.java index 24c5d5308..a136946e0 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileRejector.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileRejector.java @@ -10,11 +10,11 @@ import net.minecraft.network.packet.Packet; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IEntityConveyor; +import resonant.lib.network.IPacketReceiverWithID; import resonantinduction.core.ResonantInduction; import resonantinduction.core.prefab.imprint.TileFilterable; import universalelectricity.api.vector.Vector3; -import calclavia.api.resonantinduction.mechanical.IBelt; -import calclavia.lib.network.IPacketReceiverWithID; import com.google.common.io.ByteArrayDataInput; @@ -73,9 +73,9 @@ public class TileRejector extends TileFilterable implements IPacketReceiverWithI // entity.motionY += 0.10000000298023224D; entity.posZ += side.offsetZ; - if (!this.worldObj.isRemote && tileEntity instanceof IBelt) + if (!this.worldObj.isRemote && tileEntity instanceof IEntityConveyor) { - ((IBelt) tileEntity).ignoreEntity(entity); + ((IEntityConveyor) tileEntity).ignoreEntity(entity); } } diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileSorter.java b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileSorter.java index 5553fa883..1f98a495f 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileSorter.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/logistic/belt/TileSorter.java @@ -19,17 +19,17 @@ import net.minecraftforge.common.ForgeDirection; import org.lwjgl.opengl.GL11; +import resonant.lib.content.module.TileRender; +import resonant.lib.content.module.prefab.TileInventory; +import resonant.lib.network.Synced.SyncedInput; +import resonant.lib.network.Synced.SyncedOutput; +import resonant.lib.prefab.vector.Cuboid; +import resonant.lib.render.RenderUtility; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.Reference; import resonantinduction.core.prefab.imprint.ItemImprint; import universalelectricity.api.UniversalElectricity; import universalelectricity.api.vector.Vector3; -import calclavia.lib.content.module.TileRender; -import calclavia.lib.content.module.prefab.TileInventory; -import calclavia.lib.network.Synced.SyncedInput; -import calclavia.lib.network.Synced.SyncedOutput; -import calclavia.lib.prefab.vector.Cuboid; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.utility.inventory.InventoryUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java index 1a920d69d..3391869b1 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/RenderMechanicalPiston.java @@ -1,17 +1,19 @@ package resonantinduction.mechanical.process.crusher; -import calclavia.lib.render.RenderUtility; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; import net.minecraftforge.common.ForgeDirection; + import org.apache.commons.lang3.ArrayUtils; import org.lwjgl.opengl.GL11; + +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class RenderMechanicalPiston extends TileEntitySpecialRenderer diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/TileMechanicalPiston.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/TileMechanicalPiston.java index 83f3c1cbf..e602ab833 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/TileMechanicalPiston.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/crusher/TileMechanicalPiston.java @@ -9,15 +9,15 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IRotatable; +import resonant.api.recipe.MachineRecipes; +import resonant.api.recipe.RecipeResource; +import resonant.lib.config.Config; +import resonant.lib.utility.MovementUtility; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.ResonantInduction; import resonantinduction.mechanical.energy.grid.TileMechanical; import universalelectricity.api.vector.Vector3; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.lib.config.Config; -import calclavia.lib.prefab.tile.IRotatable; -import calclavia.lib.utility.MovementUtility; -import calclavia.lib.utility.inventory.InventoryUtility; import cpw.mods.fml.common.Loader; import cpw.mods.fml.relauncher.ReflectionHelper; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/edit/TileBreaker.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/edit/TileBreaker.java index 58ce7a10d..377f03ff1 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/edit/TileBreaker.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/edit/TileBreaker.java @@ -1,15 +1,7 @@ package resonantinduction.mechanical.process.edit; -import calclavia.lib.content.module.TileBase; -import calclavia.lib.content.module.TileRender; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.IRotatable; -import calclavia.lib.render.RotatedTextureRenderer; -import calclavia.lib.utility.inventory.InternalInventoryHandler; -import com.google.common.io.ByteArrayDataInput; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.ArrayList; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; @@ -20,11 +12,21 @@ import net.minecraft.network.packet.Packet; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IRotatable; +import resonant.lib.content.module.TileBase; +import resonant.lib.content.module.TileRender; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; +import resonant.lib.render.RotatedTextureRenderer; +import resonant.lib.utility.inventory.InternalInventoryHandler; import resonantinduction.core.ResonantInduction; import universalelectricity.api.vector.Vector3; import universalelectricity.api.vector.VectorWorld; -import java.util.ArrayList; +import com.google.common.io.ByteArrayDataInput; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; /** * @author tgame14 diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/edit/TilePlacer.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/edit/TilePlacer.java index 59aa32767..beb07b736 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/edit/TilePlacer.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/edit/TilePlacer.java @@ -1,18 +1,7 @@ package resonantinduction.mechanical.process.edit; -import calclavia.lib.content.module.TileRender; -import calclavia.lib.content.module.prefab.TileInventory; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.prefab.tile.IRotatable; -import calclavia.lib.render.RenderItemOverlayUtility; -import calclavia.lib.render.RotatedTextureRenderer; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.inventory.InternalInventoryHandler; -import calclavia.lib.utility.inventory.InventoryUtility; -import com.google.common.io.ByteArrayDataInput; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.EnumSet; + import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.player.EntityPlayer; @@ -23,11 +12,26 @@ import net.minecraft.util.ChatMessageComponent; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.ForgeDirection; + import org.lwjgl.opengl.GL11; + +import resonant.api.IRotatable; +import resonant.lib.content.module.TileRender; +import resonant.lib.content.module.prefab.TileInventory; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketHandler; +import resonant.lib.render.RenderItemOverlayUtility; +import resonant.lib.render.RotatedTextureRenderer; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.inventory.InternalInventoryHandler; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.ResonantInduction; import universalelectricity.api.vector.Vector3; -import java.util.EnumSet; +import com.google.common.io.ByteArrayDataInput; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; /** * @author tgame14 diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/grinder/RenderGrindingWheel.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/grinder/RenderGrindingWheel.java index ed9695148..8db681935 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/grinder/RenderGrindingWheel.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/grinder/RenderGrindingWheel.java @@ -10,8 +10,8 @@ import net.minecraft.tileentity.TileEntity; import net.minecraftforge.client.model.AdvancedModelLoader; import net.minecraftforge.client.model.IModelCustom; import net.minecraftforge.common.ForgeDirection; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/grinder/TileGrindingWheel.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/grinder/TileGrindingWheel.java index f71dbe77d..416d0ea24 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/grinder/TileGrindingWheel.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/grinder/TileGrindingWheel.java @@ -7,20 +7,17 @@ import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; import net.minecraftforge.common.ForgeDirection; - -import org.apache.commons.lang3.ArrayUtils; - +import resonant.api.IMechanicalNode; +import resonant.api.IRotatable; +import resonant.api.recipe.MachineRecipes; +import resonant.api.recipe.RecipeResource; +import resonant.lib.prefab.vector.Cuboid; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.Timer; import resonantinduction.mechanical.energy.grid.TileMechanical; import universalelectricity.api.vector.Vector3; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.prefab.tile.IRotatable; -import calclavia.lib.prefab.vector.Cuboid; /** * @author Calclavia diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/RenderMixer.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/RenderMixer.java index 517e7ed1a..87d3eaec3 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/RenderMixer.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/RenderMixer.java @@ -13,9 +13,9 @@ import net.minecraftforge.client.model.IModelCustom; import org.lwjgl.opengl.GL11; +import resonant.api.items.ISimpleItemRenderer; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; -import calclavia.lib.render.RenderUtility; -import calclavia.lib.render.item.ISimpleItemRenderer; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java index edf6c2f1e..58bace684 100644 --- a/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java +++ b/mechanical/src/main/scala/resonantinduction/mechanical/process/purifier/TileMixer.java @@ -1,8 +1,9 @@ package resonantinduction.mechanical.process.purifier; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.resonantinduction.IMechanicalNode; -import calclavia.lib.utility.inventory.InventoryUtility; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Set; + import net.minecraft.block.Block; import net.minecraft.block.BlockFluid; import net.minecraft.block.material.Material; @@ -14,6 +15,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.IFluidBlock; +import resonant.api.IMechanicalNode; +import resonant.api.recipe.MachineRecipes; +import resonant.lib.utility.inventory.InventoryUtility; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.Timer; @@ -22,10 +26,6 @@ import resonantinduction.core.resource.fluid.BlockFluidMixture; import resonantinduction.mechanical.energy.grid.TileMechanical; import universalelectricity.api.vector.Vector3; -import java.util.LinkedHashSet; -import java.util.List; -import java.util.Set; - /** * @author Calclavia */ diff --git a/src/main/scala/resonantinduction/core/ArgumentData.java b/src/main/scala/resonantinduction/core/ArgumentData.java index 945f1972b..653532e35 100644 --- a/src/main/scala/resonantinduction/core/ArgumentData.java +++ b/src/main/scala/resonantinduction/core/ArgumentData.java @@ -1,8 +1,8 @@ package resonantinduction.core; import net.minecraft.nbt.NBTTagCompound; -import calclavia.lib.utility.nbt.ISaveObj; -import calclavia.lib.utility.nbt.NBTUtility; +import resonant.lib.utility.nbt.ISaveObj; +import resonant.lib.utility.nbt.NBTUtility; /** * Used to store arguments in a way that can be easier to read, limit, and understand diff --git a/src/main/scala/resonantinduction/core/ClientProxy.java b/src/main/scala/resonantinduction/core/ClientProxy.java index 13f1dfec5..229cc89cc 100644 --- a/src/main/scala/resonantinduction/core/ClientProxy.java +++ b/src/main/scala/resonantinduction/core/ClientProxy.java @@ -8,9 +8,9 @@ import net.minecraft.client.particle.EntityDiggingFX; import net.minecraft.client.particle.EntityFX; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; +import resonant.lib.render.fx.FxLaser; import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; -import calclavia.lib.render.fx.FxLaser; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/scala/resonantinduction/core/CommonProxy.java b/src/main/scala/resonantinduction/core/CommonProxy.java index dcffc66de..9385b5a07 100644 --- a/src/main/scala/resonantinduction/core/CommonProxy.java +++ b/src/main/scala/resonantinduction/core/CommonProxy.java @@ -6,9 +6,9 @@ package resonantinduction.core; import java.awt.Color; import net.minecraft.world.World; +import resonant.lib.prefab.ProxyBase; import universalelectricity.api.vector.IVector3; import universalelectricity.api.vector.Vector3; -import calclavia.lib.prefab.ProxyBase; /** @author Calclavia */ public class CommonProxy extends ProxyBase diff --git a/src/main/scala/resonantinduction/core/ResonantInduction.java b/src/main/scala/resonantinduction/core/ResonantInduction.java index c62ca37ac..b2771564f 100644 --- a/src/main/scala/resonantinduction/core/ResonantInduction.java +++ b/src/main/scala/resonantinduction/core/ResonantInduction.java @@ -1,13 +1,32 @@ package resonantinduction.core; -import calclavia.lib.config.ConfigAnnotationEvent; -import calclavia.lib.config.ConfigHandler; -import calclavia.lib.content.ContentRegistry; -import calclavia.lib.network.PacketAnnotation; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.network.PacketTile; -import calclavia.lib.prefab.item.ItemBlockMetadata; -import calclavia.lib.utility.LanguageUtility; +import java.util.HashMap; +import java.util.logging.Logger; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fluids.BlockFluidFinite; + +import org.modstats.ModstatInfo; +import org.modstats.Modstats; + +import resonant.lib.config.ConfigHandler; +import resonant.lib.content.ContentRegistry; +import resonant.lib.network.PacketAnnotation; +import resonant.lib.network.PacketHandler; +import resonant.lib.network.PacketTile; +import resonant.lib.prefab.item.ItemBlockMetadata; +import resonant.lib.utility.LanguageUtility; +import resonantinduction.core.handler.TextureHookHandler; +import resonantinduction.core.prefab.part.PacketMultiPart; +import resonantinduction.core.resource.BlockDust; +import resonantinduction.core.resource.BlockMachineMaterial; +import resonantinduction.core.resource.ItemOreResource; +import resonantinduction.core.resource.ResourceGenerator; +import resonantinduction.core.resource.TileDust; +import resonantinduction.core.resource.fluid.ItemOreResourceBucket; +import resonantinduction.core.resource.fluid.TileFluidMixture; import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; @@ -20,28 +39,13 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; -import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.ForgeSubscribe; -import net.minecraftforge.fluids.BlockFluidFinite; -import org.modstats.ModstatInfo; -import org.modstats.Modstats; -import resonantinduction.core.handler.TextureHookHandler; -import resonantinduction.core.prefab.part.PacketMultiPart; -import resonantinduction.core.resource.*; -import resonantinduction.core.resource.fluid.ItemOreResourceBucket; -import resonantinduction.core.resource.fluid.TileFluidMixture; - -import java.util.HashMap; -import java.util.logging.Logger; /** * The core module of Resonant Induction * * @author Calclavia */ -@Mod(modid = ResonantInduction.ID, name = ResonantInduction.NAME, version = Reference.VERSION, dependencies = "required-after:ForgeMultipart@[1.0.0.244,);required-after:CalclaviaCore;before:ThermalExpansion;before:Mekanism") +@Mod(modid = ResonantInduction.ID, name = ResonantInduction.NAME, version = Reference.VERSION, dependencies = "required-after:ForgeMultipart@[1.0.0.244,);required-after:ResonantEngine;before:ThermalExpansion;before:Mekanism") @NetworkMod(channels = Reference.CHANNEL, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class) @ModstatInfo(prefix = "resonantin") public class ResonantInduction diff --git a/src/main/scala/resonantinduction/core/Settings.java b/src/main/scala/resonantinduction/core/Settings.java index 49592ebaa..f4b72f837 100644 --- a/src/main/scala/resonantinduction/core/Settings.java +++ b/src/main/scala/resonantinduction/core/Settings.java @@ -5,9 +5,9 @@ import java.util.Arrays; import net.minecraft.server.MinecraftServer; import net.minecraftforge.common.Configuration; -import calclavia.lib.config.Config; -import calclavia.lib.content.IDManager; -import calclavia.lib.utility.LanguageUtility; +import resonant.lib.config.Config; +import resonant.lib.content.IDManager; +import resonant.lib.utility.LanguageUtility; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.ModMetadata; diff --git a/src/main/scala/resonantinduction/core/fluid/TileFluidDistribution.java b/src/main/scala/resonantinduction/core/fluid/TileFluidDistribution.java index 5d3a92238..13596eb0d 100644 --- a/src/main/scala/resonantinduction/core/fluid/TileFluidDistribution.java +++ b/src/main/scala/resonantinduction/core/fluid/TileFluidDistribution.java @@ -6,8 +6,8 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTankInfo; +import resonant.lib.utility.WorldUtility; import universalelectricity.api.vector.Vector3; -import calclavia.lib.utility.WorldUtility; /** * A prefab class for tiles that use the fluid network. diff --git a/src/main/scala/resonantinduction/core/fluid/TileFluidNode.java b/src/main/scala/resonantinduction/core/fluid/TileFluidNode.java index 07d5add28..ecc52fd16 100644 --- a/src/main/scala/resonantinduction/core/fluid/TileFluidNode.java +++ b/src/main/scala/resonantinduction/core/fluid/TileFluidNode.java @@ -7,12 +7,12 @@ import net.minecraft.network.packet.Packet; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; +import resonant.lib.content.module.TileBase; +import resonant.lib.network.IPacketReceiverWithID; +import resonant.lib.network.PacketHandler; +import resonant.lib.utility.FluidUtility; import resonantinduction.core.ResonantInduction; import universalelectricity.api.vector.Vector3; -import calclavia.lib.content.module.TileBase; -import calclavia.lib.network.IPacketReceiverWithID; -import calclavia.lib.network.PacketHandler; -import calclavia.lib.utility.FluidUtility; import com.google.common.io.ByteArrayDataInput; diff --git a/src/main/scala/resonantinduction/core/fluid/TilePressureNode.java b/src/main/scala/resonantinduction/core/fluid/TilePressureNode.java index 7f6c96b62..b9e07798e 100644 --- a/src/main/scala/resonantinduction/core/fluid/TilePressureNode.java +++ b/src/main/scala/resonantinduction/core/fluid/TilePressureNode.java @@ -6,10 +6,10 @@ import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.FluidTankInfo; +import resonant.api.grid.INode; +import resonant.lib.network.IPacketReceiverWithID; import resonantinduction.core.grid.fluid.FluidPressureNode; import resonantinduction.core.grid.fluid.IPressureNodeProvider; -import calclavia.lib.grid.INode; -import calclavia.lib.network.IPacketReceiverWithID; /** * A prefab class for tiles that use the fluid network. diff --git a/src/main/scala/resonantinduction/core/grid/TraitNodeProvider.java b/src/main/scala/resonantinduction/core/grid/TraitNodeProvider.java index 2438e5a02..2b436477e 100644 --- a/src/main/scala/resonantinduction/core/grid/TraitNodeProvider.java +++ b/src/main/scala/resonantinduction/core/grid/TraitNodeProvider.java @@ -1,8 +1,8 @@ package resonantinduction.core.grid; import net.minecraftforge.common.ForgeDirection; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; +import resonant.api.grid.INode; +import resonant.api.grid.INodeProvider; import codechicken.multipart.PartMap; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; diff --git a/src/main/scala/resonantinduction/core/grid/fluid/FluidPressureNode.java b/src/main/scala/resonantinduction/core/grid/fluid/FluidPressureNode.java index c230c9d89..6ae369704 100644 --- a/src/main/scala/resonantinduction/core/grid/fluid/FluidPressureNode.java +++ b/src/main/scala/resonantinduction/core/grid/fluid/FluidPressureNode.java @@ -1,8 +1,9 @@ package resonantinduction.core.grid.fluid; -import calclavia.lib.grid.Node; -import calclavia.lib.grid.TickingGrid; -import codechicken.multipart.TMultiPart; +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map.Entry; + import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; @@ -10,11 +11,10 @@ import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.IFluidHandler; +import resonant.lib.grid.Node; +import resonant.lib.grid.TickingGrid; import universalelectricity.api.vector.Vector3; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map.Entry; +import codechicken.multipart.TMultiPart; public class FluidPressureNode extends Node { diff --git a/src/main/scala/resonantinduction/core/grid/fluid/IPressureNodeProvider.java b/src/main/scala/resonantinduction/core/grid/fluid/IPressureNodeProvider.java index e0cbc78e5..5e22db378 100644 --- a/src/main/scala/resonantinduction/core/grid/fluid/IPressureNodeProvider.java +++ b/src/main/scala/resonantinduction/core/grid/fluid/IPressureNodeProvider.java @@ -2,7 +2,7 @@ package resonantinduction.core.grid.fluid; import net.minecraftforge.fluids.FluidTank; import net.minecraftforge.fluids.IFluidHandler; -import calclavia.lib.grid.INodeProvider; +import resonant.api.grid.INodeProvider; public interface IPressureNodeProvider extends INodeProvider, IFluidHandler { diff --git a/src/main/scala/resonantinduction/core/handler/TextureHookHandler.java b/src/main/scala/resonantinduction/core/handler/TextureHookHandler.java index 7b66156e6..d79a168b1 100644 --- a/src/main/scala/resonantinduction/core/handler/TextureHookHandler.java +++ b/src/main/scala/resonantinduction/core/handler/TextureHookHandler.java @@ -3,11 +3,11 @@ package resonantinduction.core.handler; import net.minecraftforge.client.event.TextureStitchEvent; import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.fluids.BlockFluidFinite; +import resonant.lib.render.RenderUtility; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.fluid.FluidColored; import resonantinduction.core.resource.ResourceGenerator; -import calclavia.lib.render.RenderUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/scala/resonantinduction/core/nei/RICrusherRecipeHandler.java b/src/main/scala/resonantinduction/core/nei/RICrusherRecipeHandler.java index 5bea29e58..1342b2e97 100644 --- a/src/main/scala/resonantinduction/core/nei/RICrusherRecipeHandler.java +++ b/src/main/scala/resonantinduction/core/nei/RICrusherRecipeHandler.java @@ -1,7 +1,7 @@ package resonantinduction.core.nei; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.ResonantInduction.RecipeType; -import calclavia.lib.utility.LanguageUtility; public class RICrusherRecipeHandler extends RITemplateRecipeHandler { diff --git a/src/main/scala/resonantinduction/core/nei/RIGrinderRecipeHandler.java b/src/main/scala/resonantinduction/core/nei/RIGrinderRecipeHandler.java index 8e1330610..3cd3db6dc 100644 --- a/src/main/scala/resonantinduction/core/nei/RIGrinderRecipeHandler.java +++ b/src/main/scala/resonantinduction/core/nei/RIGrinderRecipeHandler.java @@ -1,7 +1,7 @@ package resonantinduction.core.nei; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.ResonantInduction.RecipeType; -import calclavia.lib.utility.LanguageUtility; public class RIGrinderRecipeHandler extends RITemplateRecipeHandler { diff --git a/src/main/scala/resonantinduction/core/nei/RIMixerRecipeHandler.java b/src/main/scala/resonantinduction/core/nei/RIMixerRecipeHandler.java index d08cef0ba..314dbc9ee 100644 --- a/src/main/scala/resonantinduction/core/nei/RIMixerRecipeHandler.java +++ b/src/main/scala/resonantinduction/core/nei/RIMixerRecipeHandler.java @@ -1,7 +1,7 @@ package resonantinduction.core.nei; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.ResonantInduction.RecipeType; -import calclavia.lib.utility.LanguageUtility; public class RIMixerRecipeHandler extends RITemplateRecipeHandler { diff --git a/src/main/scala/resonantinduction/core/nei/RISawmillRecipeHandler.java b/src/main/scala/resonantinduction/core/nei/RISawmillRecipeHandler.java index 40b80f713..2fdbd0faf 100644 --- a/src/main/scala/resonantinduction/core/nei/RISawmillRecipeHandler.java +++ b/src/main/scala/resonantinduction/core/nei/RISawmillRecipeHandler.java @@ -1,7 +1,7 @@ package resonantinduction.core.nei; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.ResonantInduction.RecipeType; -import calclavia.lib.utility.LanguageUtility; public class RISawmillRecipeHandler extends RITemplateRecipeHandler { diff --git a/src/main/scala/resonantinduction/core/nei/RISmelterRecipeHandler.java b/src/main/scala/resonantinduction/core/nei/RISmelterRecipeHandler.java index a46e18631..ef708e9e3 100644 --- a/src/main/scala/resonantinduction/core/nei/RISmelterRecipeHandler.java +++ b/src/main/scala/resonantinduction/core/nei/RISmelterRecipeHandler.java @@ -1,7 +1,7 @@ package resonantinduction.core.nei; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.ResonantInduction.RecipeType; -import calclavia.lib.utility.LanguageUtility; public class RISmelterRecipeHandler extends RITemplateRecipeHandler { diff --git a/src/main/scala/resonantinduction/core/nei/RITemplateRecipeHandler.java b/src/main/scala/resonantinduction/core/nei/RITemplateRecipeHandler.java index 327017550..486e5f60e 100644 --- a/src/main/scala/resonantinduction/core/nei/RITemplateRecipeHandler.java +++ b/src/main/scala/resonantinduction/core/nei/RITemplateRecipeHandler.java @@ -12,14 +12,14 @@ import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; +import resonant.api.recipe.MachineRecipes; +import resonant.api.recipe.RecipeResource; +import resonant.api.recipe.RecipeResource.FluidStackResource; +import resonant.api.recipe.RecipeResource.ItemStackResource; +import resonant.api.recipe.RecipeResource.OreDictResource; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction.RecipeType; -import calclavia.api.recipe.MachineRecipes; -import calclavia.api.recipe.RecipeResource; -import calclavia.api.recipe.RecipeResource.FluidStackResource; -import calclavia.api.recipe.RecipeResource.ItemStackResource; -import calclavia.api.recipe.RecipeResource.OreDictResource; -import calclavia.lib.utility.LanguageUtility; import codechicken.core.gui.GuiDraw; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.GuiRecipe; diff --git a/src/main/scala/resonantinduction/core/prefab/imprint/BlockImprintable.java b/src/main/scala/resonantinduction/core/prefab/imprint/BlockImprintable.java index 29a0ce19f..01f3177e2 100644 --- a/src/main/scala/resonantinduction/core/prefab/imprint/BlockImprintable.java +++ b/src/main/scala/resonantinduction/core/prefab/imprint/BlockImprintable.java @@ -6,8 +6,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; -import calclavia.api.resonantinduction.IFilterable; -import calclavia.lib.prefab.block.BlockRotatable; +import resonant.api.IFilterable; +import resonant.lib.prefab.block.BlockRotatable; /** * Extend this block class if a filter is allowed to be placed inside of this block. diff --git a/src/main/scala/resonantinduction/core/prefab/imprint/ItemImprint.java b/src/main/scala/resonantinduction/core/prefab/imprint/ItemImprint.java index 66c7ea410..b31f55f18 100644 --- a/src/main/scala/resonantinduction/core/prefab/imprint/ItemImprint.java +++ b/src/main/scala/resonantinduction/core/prefab/imprint/ItemImprint.java @@ -14,11 +14,11 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.nbt.NBTUtility; import resonantinduction.core.Reference; import resonantinduction.core.Settings; import resonantinduction.core.TabRI; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.nbt.NBTUtility; public class ItemImprint extends Item { diff --git a/src/main/scala/resonantinduction/core/prefab/imprint/TileFilterable.java b/src/main/scala/resonantinduction/core/prefab/imprint/TileFilterable.java index 1ba18a150..cef599511 100644 --- a/src/main/scala/resonantinduction/core/prefab/imprint/TileFilterable.java +++ b/src/main/scala/resonantinduction/core/prefab/imprint/TileFilterable.java @@ -8,10 +8,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.ForgeDirection; +import resonant.api.IFilterable; +import resonant.api.IRotatable; +import resonant.lib.content.module.prefab.TileInventory; import universalelectricity.api.vector.Vector3; -import calclavia.api.resonantinduction.IFilterable; -import calclavia.lib.content.module.prefab.TileInventory; -import calclavia.lib.prefab.tile.IRotatable; public abstract class TileFilterable extends TileInventory implements IRotatable, IFilterable { diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java index 36640286c..7c2d1dcc2 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemEnergyTool.java @@ -5,8 +5,10 @@ import java.util.List; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; +import resonant.lib.render.EnumColor; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.nbt.NBTUtility; import universalelectricity.api.CompatibilityModule; import universalelectricity.api.UniversalClass; import universalelectricity.api.UniversalElectricity; @@ -14,9 +16,6 @@ import universalelectricity.api.energy.UnitDisplay; import universalelectricity.api.energy.UnitDisplay.Unit; import universalelectricity.api.item.IEnergyItem; import universalelectricity.api.item.IVoltageItem; -import calclavia.lib.render.EnumColor; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.nbt.NBTUtility; /** Prefab for all eletric based tools * diff --git a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java index 5d985ca07..47530089e 100644 --- a/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java +++ b/src/main/scala/resonantinduction/core/prefab/items/ItemTool.java @@ -7,8 +7,8 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.nbt.NBTUtility; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.nbt.NBTUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/scala/resonantinduction/core/prefab/part/PacketMultiPart.java b/src/main/scala/resonantinduction/core/prefab/part/PacketMultiPart.java index 3f4d8ecc1..276628ad9 100644 --- a/src/main/scala/resonantinduction/core/prefab/part/PacketMultiPart.java +++ b/src/main/scala/resonantinduction/core/prefab/part/PacketMultiPart.java @@ -6,9 +6,9 @@ import java.util.List; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.network.packet.Packet; import net.minecraft.tileentity.TileEntity; +import resonant.lib.network.IPacketReceiver; +import resonant.lib.network.PacketType; import universalelectricity.api.vector.Vector3; -import calclavia.lib.network.IPacketReceiver; -import calclavia.lib.network.PacketType; import codechicken.multipart.TMultiPart; import codechicken.multipart.TileMultipart; diff --git a/src/main/scala/resonantinduction/core/prefab/part/PartFramedNode.java b/src/main/scala/resonantinduction/core/prefab/part/PartFramedNode.java index a75c25f6e..d625b681c 100644 --- a/src/main/scala/resonantinduction/core/prefab/part/PartFramedNode.java +++ b/src/main/scala/resonantinduction/core/prefab/part/PartFramedNode.java @@ -12,9 +12,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.Icon; import net.minecraft.util.MovingObjectPosition; import net.minecraftforge.common.ForgeDirection; -import calclavia.lib.grid.INode; -import calclavia.lib.grid.INodeProvider; -import calclavia.lib.grid.Node; +import resonant.api.grid.INode; +import resonant.api.grid.INodeProvider; +import resonant.lib.grid.Node; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; import codechicken.lib.raytracer.IndexedCuboid6; diff --git a/src/main/scala/resonantinduction/core/prefab/part/PartInventoryPanel.java b/src/main/scala/resonantinduction/core/prefab/part/PartInventoryPanel.java index 15ad09e43..47f6d6554 100644 --- a/src/main/scala/resonantinduction/core/prefab/part/PartInventoryPanel.java +++ b/src/main/scala/resonantinduction/core/prefab/part/PartInventoryPanel.java @@ -5,9 +5,9 @@ import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.ForgeDirection; -import calclavia.lib.utility.inventory.ExternalInventory; -import calclavia.lib.utility.inventory.IExternalInventory; -import calclavia.lib.utility.inventory.IExternalInventoryBox; +import resonant.api.IExternalInventory; +import resonant.api.IExternalInventoryBox; +import resonant.lib.utility.inventory.ExternalInventory; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; diff --git a/src/main/scala/resonantinduction/core/render/RenderImprintable.java b/src/main/scala/resonantinduction/core/render/RenderImprintable.java index e5db234c5..e39b58101 100644 --- a/src/main/scala/resonantinduction/core/render/RenderImprintable.java +++ b/src/main/scala/resonantinduction/core/render/RenderImprintable.java @@ -8,10 +8,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.MovingObjectPosition; +import resonant.lib.render.RenderUtility; import resonantinduction.core.prefab.imprint.ItemImprint; import resonantinduction.core.prefab.imprint.TileFilterable; import universalelectricity.api.vector.Vector3; -import calclavia.lib.render.RenderUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/scala/resonantinduction/core/resource/BlockDust.java b/src/main/scala/resonantinduction/core/resource/BlockDust.java index cc280c7b2..d224c201b 100644 --- a/src/main/scala/resonantinduction/core/resource/BlockDust.java +++ b/src/main/scala/resonantinduction/core/resource/BlockDust.java @@ -1,8 +1,7 @@ package resonantinduction.core.resource; -import calclavia.lib.prefab.block.BlockTile; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.Random; + import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.entity.EntityLivingBase; @@ -11,10 +10,11 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import resonant.lib.prefab.block.BlockTile; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; - -import java.util.Random; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; /** * The block form of the item dust. diff --git a/src/main/scala/resonantinduction/core/resource/BlockMachineMaterial.java b/src/main/scala/resonantinduction/core/resource/BlockMachineMaterial.java index d39f6564e..a470b5c89 100644 --- a/src/main/scala/resonantinduction/core/resource/BlockMachineMaterial.java +++ b/src/main/scala/resonantinduction/core/resource/BlockMachineMaterial.java @@ -7,8 +7,8 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.ItemStack; import net.minecraft.util.Icon; +import resonant.lib.prefab.block.BlockTile; import resonantinduction.core.Reference; -import calclavia.lib.prefab.block.BlockTile; /** * A block used to build machines or decoration. diff --git a/src/main/scala/resonantinduction/core/resource/ItemOreResource.java b/src/main/scala/resonantinduction/core/resource/ItemOreResource.java index 0e13fb2e2..48e0f24dc 100644 --- a/src/main/scala/resonantinduction/core/resource/ItemOreResource.java +++ b/src/main/scala/resonantinduction/core/resource/ItemOreResource.java @@ -1,8 +1,7 @@ package resonantinduction.core.resource; -import calclavia.lib.utility.LanguageUtility; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.util.List; + import net.minecraft.block.Block; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; @@ -11,11 +10,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import net.minecraftforge.oredict.OreDictionary; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.TabRI; - -import java.util.List; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; /** * An item used for auto-generated dusts based on registered ingots in the OreDict. diff --git a/src/main/scala/resonantinduction/core/resource/ResourceGenerator.java b/src/main/scala/resonantinduction/core/resource/ResourceGenerator.java index a5a72d74e..1e4d69b80 100644 --- a/src/main/scala/resonantinduction/core/resource/ResourceGenerator.java +++ b/src/main/scala/resonantinduction/core/resource/ResourceGenerator.java @@ -1,16 +1,17 @@ package resonantinduction.core.resource; -import calclavia.api.recipe.MachineRecipes; -import calclavia.lib.config.Config; -import calclavia.lib.utility.LanguageUtility; -import calclavia.lib.utility.nbt.IVirtualObject; -import calclavia.lib.utility.nbt.NBTUtility; -import calclavia.lib.utility.nbt.SaveManager; -import com.google.common.collect.HashBiMap; -import cpw.mods.fml.common.registry.GameRegistry; -import cpw.mods.fml.common.registry.LanguageRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import java.awt.Color; +import java.awt.image.BufferedImage; +import java.io.File; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; + +import javax.imageio.ImageIO; + import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.item.Item; @@ -28,6 +29,12 @@ import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary.OreRegisterEvent; +import resonant.api.recipe.MachineRecipes; +import resonant.lib.config.Config; +import resonant.lib.utility.LanguageUtility; +import resonant.lib.utility.nbt.IVirtualObject; +import resonant.lib.utility.nbt.NBTUtility; +import resonant.lib.utility.nbt.SaveManager; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction; import resonantinduction.core.ResonantInduction.RecipeType; @@ -36,16 +43,12 @@ import resonantinduction.core.fluid.FluidColored; import resonantinduction.core.resource.fluid.BlockFluidMaterial; import resonantinduction.core.resource.fluid.BlockFluidMixture; -import javax.imageio.ImageIO; -import java.awt.*; -import java.awt.image.BufferedImage; -import java.io.File; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map.Entry; +import com.google.common.collect.HashBiMap; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.common.registry.LanguageRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; /** * @author Calclavia diff --git a/src/main/scala/resonantinduction/core/resource/TileMaterial.java b/src/main/scala/resonantinduction/core/resource/TileMaterial.java index 8ce32564c..509234bcb 100644 --- a/src/main/scala/resonantinduction/core/resource/TileMaterial.java +++ b/src/main/scala/resonantinduction/core/resource/TileMaterial.java @@ -1,14 +1,15 @@ package resonantinduction.core.resource; -import calclavia.lib.content.module.TileBase; -import calclavia.lib.network.IPacketReceiver; -import com.google.common.io.ByteArrayDataInput; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; +import resonant.lib.content.module.TileBase; +import resonant.lib.network.IPacketReceiver; import resonantinduction.core.ResonantInduction; +import com.google.common.io.ByteArrayDataInput; + /** * A tile that stores the material name. * diff --git a/src/main/scala/resonantinduction/core/resource/fluid/BlockFluidMixture.java b/src/main/scala/resonantinduction/core/resource/fluid/BlockFluidMixture.java index 302af785e..a1bcdf075 100644 --- a/src/main/scala/resonantinduction/core/resource/fluid/BlockFluidMixture.java +++ b/src/main/scala/resonantinduction/core/resource/fluid/BlockFluidMixture.java @@ -8,11 +8,11 @@ import net.minecraftforge.fluids.BlockFluidFinite; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; +import resonant.api.recipe.MachineRecipes; import resonantinduction.core.Reference; import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.Settings; import resonantinduction.core.resource.ResourceGenerator; -import calclavia.api.recipe.MachineRecipes; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/scala/resonantinduction/core/resource/fluid/ItemOreResourceBucket.java b/src/main/scala/resonantinduction/core/resource/fluid/ItemOreResourceBucket.java index 198e98cd7..8eb3e8ec6 100644 --- a/src/main/scala/resonantinduction/core/resource/fluid/ItemOreResourceBucket.java +++ b/src/main/scala/resonantinduction/core/resource/fluid/ItemOreResourceBucket.java @@ -15,11 +15,11 @@ import net.minecraftforge.event.Event; import net.minecraftforge.event.entity.player.FillBucketEvent; import net.minecraftforge.fluids.BlockFluidFinite; import net.minecraftforge.fluids.FluidRegistry; +import resonant.lib.utility.LanguageUtility; import resonantinduction.core.Reference; import resonantinduction.core.TabRI; import resonantinduction.core.resource.ItemOreResource; import resonantinduction.core.resource.ResourceGenerator; -import calclavia.lib.utility.LanguageUtility; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/scala/resonantinduction/core/resource/fluid/TileFluidMixture.java b/src/main/scala/resonantinduction/core/resource/fluid/TileFluidMixture.java index 593510081..e07314886 100644 --- a/src/main/scala/resonantinduction/core/resource/fluid/TileFluidMixture.java +++ b/src/main/scala/resonantinduction/core/resource/fluid/TileFluidMixture.java @@ -7,10 +7,10 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraftforge.fluids.FluidStack; +import resonant.api.recipe.MachineRecipes; import resonantinduction.core.ResonantInduction.RecipeType; import resonantinduction.core.resource.ResourceGenerator; import resonantinduction.core.resource.TileMaterial; -import calclavia.api.recipe.MachineRecipes; /** * NO-OP. Not yet properly implemented. We're not using TEs for now. From b0c59913f63fbdb12e709dd24aa6bdd8b363b41d Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 14 May 2014 01:58:36 -0400 Subject: [PATCH 140/144] Fixed missing import --- .../electrical/generator/solar/TileSolarPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java index 8efcc9bea..a8ef5e3ac 100644 --- a/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java +++ b/electrical/src/main/scala/resonantinduction/electrical/generator/solar/TileSolarPanel.java @@ -5,7 +5,7 @@ import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.util.Icon; import resonant.lib.content.module.TileRender; import resonant.lib.prefab.vector.Cuboid; -import resonant.lib.utility.calclavia.lib.utility.render.ConnectedTextureRenderer; +import resonant.lib.utility.ConnectedTextureRenderer; import resonantinduction.core.Reference; import resonantinduction.core.Settings; import resonantinduction.electrical.battery.TileEnergyDistribution; From dcabef5621392f6beda671638bafb06694e97ec8 Mon Sep 17 00:00:00 2001 From: Robert S Date: Wed, 14 May 2014 02:28:48 -0400 Subject: [PATCH 141/144] Changed dep from calc-core to resonant-engine --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 33ab9c005..dbb7cc94e 100644 --- a/build.gradle +++ b/build.gradle @@ -68,9 +68,9 @@ allprojects { dependencies { compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${rootProject.config.version.universalelectricity}", classifier: "dev" if (System.getenv().JOB_NAME == "Resonant-Induction-Development") - compile group: 'calclavia-core-development', name: 'calclavia-core', version: "${rootProject.config.version.calclaviacore}", classifier: "dev" + compile group: 'Resonant-Engine-development', name: 'Resonant-Engine', version: "${rootProject.config.version.calclaviacore}", classifier: "dev" else - compile group: 'calclavia-core', name: 'calclavia-core', version: "${config.version.calclaviacore}", classifier: "dev" + compile group: 'Resonant-Engine', name: 'Resonant-Engine', version: "${config.version.calclaviacore}", classifier: "dev" compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar' compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar' From 6fbdf67a47d47093b34f2f35fab3d1315d617757 Mon Sep 17 00:00:00 2001 From: Maxwolf Goodliffe Date: Wed, 14 May 2014 00:32:15 -0700 Subject: [PATCH 142/144] Updated gradle guild script to reference new resonant engine dependency. --- .gitignore | 9 +++- build-old.gradle | 137 ----------------------------------------------- build.gradle | 5 +- build.properties | 2 +- 4 files changed, 10 insertions(+), 143 deletions(-) delete mode 100644 build-old.gradle diff --git a/.gitignore b/.gitignore index f185b2593..98f584375 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,11 @@ .Spotlight-V100 .Trashes ehthumbs.db -Thumbs.db \ No newline at end of file +Thumbs.db +/bin +.classpath +.gradle/ +.settings/ +build/ +eclipse/ +.project diff --git a/build-old.gradle b/build-old.gradle deleted file mode 100644 index a2e5db9a2..000000000 --- a/build-old.gradle +++ /dev/null @@ -1,137 +0,0 @@ -buildscript { - repositories { - mavenCentral() - maven { - name = "forge" - url = "http://files.minecraftforge.net/maven" - } - } - dependencies { - classpath 'net.minecraftforge.gradle:ForgeGradle:1.0-SNAPSHOT' - } -} - -apply plugin: 'forge' -apply plugin: 'maven-publish' - -sourceSets { - main { - java { - srcDirs 'src/main/java', 'archaic/src/main/java', 'electrical/src/main/java', 'mechanical/src/main/java' - //exclude 'resonantinduction/core/nei/**' - } - } -} - -ext.buildProps = file "build.properties" - -buildProps.withReader { - def prop = new Properties() - prop.load(it) - ext.config = new ConfigSlurper().parse prop -} - -version = "${config.version.mod.major}.${config.version.mod.minor}.${config.version.mod.revis}" -group = "resonantinduction" -archivesBaseName = "${System.getenv().JOB_NAME}" - -minecraft { - version = "${config.version.minecraft}-${config.version.forge}" - - replaceIn "Reference.java" - replace "@MAJOR@", config.version.mod.major - replace "@MINOR@", config.version.mod.minor - replace "@REVIS@", config.version.mod.revis - replace "@BUILD@", System.getenv("BUILD_NUMBER") -} - -if (System.getenv("BUILD_NUMBER") != null) - version += ".${System.getenv("BUILD_NUMBER")}" - - -processResources { - from 'build.properties' -} - -task copyBuildXml(type: Copy) { - from 'build.properties' - into 'output' -} - -task apiZip(type: Zip) { - classifier = 'api' - from sourceSets*.allSource - include 'resonantinduction/api/**' - destinationDir = file 'output' -} - -artifacts { - archives apiZip -} - -jar { - dependsOn copyBuildXml - classifier = '' - destinationDir = file 'output' -} - -repositories { - maven { - name 'Calclavia Maven' - url 'http://calclavia.com/maven' - } - - ivy { - name 'FMP' - artifactPattern "http://files.minecraftforge.net/[module]/[module]-dev-[revision].[ext]" - } - - ivy { - artifactPattern "http://www.chickenbones.craftsaddle.org/Files/New_Versions/1.6.4/[module]-dev%20[revision].[ext]" - } -} - -dependencies { - compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${config.version.universalelectricity}", classifier: "dev" - compile group: 'calclaviacore', name: 'calclavia-core', version: "${config.version.calclaviacore}", classifier: "dev" - compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar' - compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar' - compile name: 'NotEnoughItems', version: "${config.version.nei}", ext: 'jar' - compile name: 'CodeChickenCore', version: "${config.version.cccore}", ext: 'jar' -} - -publishing { - publications { - mavenJava(MavenPublication) { - artifact jar - /*artifact apiZip*/ - - artifact { - file 'output/build.properties' - } - } - } - repositories { - maven { - url "file://var/www/maven" - } - } -} - -import net.minecraftforge.gradle.tasks.dev.ChangelogTask -import net.minecraftforge.gradle.common.Constants -import net.minecraftforge.gradle.delayed.* - -task createChangelog(type: ChangelogTask) { - def jobName = "${System.getenv().JOB_NAME}" - def buildNumber = "${System.getenv().BUILD_NUMBER}" - jobName.replaceAll(' ','%20') - setServerRoot(new DelayedString(project, 'http://ci.calclavia.com/')) - setJobName(new DelayedString(project, jobName.toString())); - setAuthName(new DelayedString(project, 'console_script')); - setAuthPassword(new DelayedString(project, '625d2ac53190be3422faa0c474fb299b')); - setTargetBuild({buildNumber.toString()}); - setOutput(new DelayedFile(project, 'output/' + jobName + "-${project.version}" + '-changelog' + '.txt')); -} - -build.dependsOn "createChangelog" \ No newline at end of file diff --git a/build.gradle b/build.gradle index dbb7cc94e..5440e6dde 100644 --- a/build.gradle +++ b/build.gradle @@ -67,10 +67,7 @@ allprojects { dependencies { compile group: 'universalelectricity', name: 'Universal-Electricity', version: "${rootProject.config.version.universalelectricity}", classifier: "dev" - if (System.getenv().JOB_NAME == "Resonant-Induction-Development") - compile group: 'Resonant-Engine-development', name: 'Resonant-Engine', version: "${rootProject.config.version.calclaviacore}", classifier: "dev" - else - compile group: 'Resonant-Engine', name: 'Resonant-Engine', version: "${config.version.calclaviacore}", classifier: "dev" + compile group: 'resonant-engine-development', name: 'resonant-engine', version: "${config.version.resonantengine}", classifier: "dev" compile name: 'CodeChickenLib', version: "${config.version.minecraft}-${config.version.cclib}", ext: 'jar' compile name: 'ForgeMultipart', version: "${config.version.minecraft}-${config.version.fmp}", ext: 'jar' diff --git a/build.properties b/build.properties index 80098a3ff..3afcc5640 100644 --- a/build.properties +++ b/build.properties @@ -3,7 +3,7 @@ dir.mcp=${dir.development}forge/mcp version.minecraft=1.6.4 version.forge=9.11.1.964 version.universalelectricity=3.1.+ -version.calclaviacore=1.2.+ +version.resonantengine=1.2.+ version.cclib=1.0.0.61 version.cccore=0.9.0.9 version.fmp=1.0.0.244 From d02e11b7293560b08dbdc02871bec38e8a90eb00 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Wed, 14 May 2014 16:33:56 -0700 Subject: [PATCH 143/144] Updated languages --- src/main/resources/assets/resonantinduction/languages | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/assets/resonantinduction/languages b/src/main/resources/assets/resonantinduction/languages index b1a47b348..18461c3de 160000 --- a/src/main/resources/assets/resonantinduction/languages +++ b/src/main/resources/assets/resonantinduction/languages @@ -1 +1 @@ -Subproject commit b1a47b348f6f7289b25dce23c17909a0d1af4c59 +Subproject commit 18461c3de4fb7af76b6b3954d4e93eab4127e129 From a8d5820fdf7149df84e6ddeb95ab0f8cc3631103 Mon Sep 17 00:00:00 2001 From: Calclavia Date: Wed, 14 May 2014 16:34:22 -0700 Subject: [PATCH 144/144] Removed language submodule --- .gitmodules | 3 --- src/main/resources/assets/resonantinduction/languages | 1 - 2 files changed, 4 deletions(-) delete mode 160000 src/main/resources/assets/resonantinduction/languages diff --git a/.gitmodules b/.gitmodules index 198d713f1..e69de29bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "src/main/resources/assets/resonantinduction/languages"] - path = src/main/resources/assets/resonantinduction/languages - url = https://github.com/calclavia/Resonant-Induction-Localization diff --git a/src/main/resources/assets/resonantinduction/languages b/src/main/resources/assets/resonantinduction/languages deleted file mode 160000 index 18461c3de..000000000 --- a/src/main/resources/assets/resonantinduction/languages +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 18461c3de4fb7af76b6b3954d4e93eab4127e129