AS 0.1.2 Release
This commit is contained in:
parent
ee30aad996
commit
ce66426131
121 changed files with 850 additions and 2597 deletions
5
.gitignore
vendored
5
.gitignore
vendored
|
@ -22,13 +22,12 @@ LICENSE.txt
|
|||
/builds/
|
||||
|
||||
!/src/*/assemblyline/
|
||||
!/src/*/dan200/
|
||||
!/src/*/buildcraft/
|
||||
!/src/*/universalelectricity/
|
||||
!/Include Resources.bat
|
||||
!/mcmod.info
|
||||
|
||||
!/resources/*
|
||||
!/resources/
|
||||
!/models/
|
||||
!/modversion.txt
|
||||
!/publish.bat
|
||||
!/README
|
|
@ -1 +1 @@
|
|||
These 3D creations are created and copy righted by DarkGuardsman. They are to be used only for the AssemblyLine mod.
|
||||
These 3D creations are created and copy righted by DarkGuardsman. They are to be used only for the Assembly Line mod.
|
|
@ -1 +1 @@
|
|||
9
|
||||
10
|
||||
|
|
1
info.txt
1
info.txt
|
@ -6,3 +6,4 @@
|
|||
@ AssemblyLine_v0.0.6.7.jar
|
||||
@ AssemblyLine_v0.0.6.8.jar AssemblyLine_v0.0.6.8_api.zip
|
||||
stable AssemblyLine_v0.0.6.10.jar AssemblyLine_v0.0.6.10_api.zip
|
||||
* AssemblyLine_v0.1.2.10.jar AssemblyLine_v0.1.2.10_api.zip
|
||||
|
|
|
@ -2,9 +2,9 @@
|
|||
{
|
||||
"modid": "AssemblyLine",
|
||||
"name": "Assembly Line",
|
||||
"description": "A mod bringing a realistic conveyor belt transporting system to Minecraft.",
|
||||
"version": "0.1.0",
|
||||
"mcversion": "1.4.2",
|
||||
"description": "A mod that brings conveyor belt transporting systems to Minecraft.",
|
||||
"version": "0.1.2",
|
||||
"mcversion": "1.4.4",
|
||||
"url": "http://calclavia.com/universalelectricity/?m=18",
|
||||
"updateUrl": "http://calclavia.com/universalelectricity/?m=18",
|
||||
"authors": [
|
||||
|
|
|
@ -1 +1 @@
|
|||
0.0.6
|
||||
0.1.2
|
|
@ -3,9 +3,8 @@ package assemblyline;
|
|||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import assemblyline.gui.GuiSorter;
|
||||
import assemblyline.machines.ContainerSorter;
|
||||
import assemblyline.machines.TileEntityRejector;
|
||||
import assemblyline.machine.ContainerSorter;
|
||||
import assemblyline.machine.TileEntityRejector;
|
||||
import cpw.mods.fml.common.network.IGuiHandler;
|
||||
|
||||
public class ALCommonProxy implements IGuiHandler
|
||||
|
|
|
@ -3,21 +3,23 @@ package assemblyline;
|
|||
import java.io.File;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.BlockArchitectTable;
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
import net.minecraftforge.oredict.ShapedOreRecipe;
|
||||
import net.minecraftforge.oredict.ShapelessOreRecipe;
|
||||
import universalelectricity.core.UEConfig;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
import universalelectricity.prefab.UETab;
|
||||
import universalelectricity.prefab.network.PacketManager;
|
||||
import assemblyline.belts.BlockConveyorBelt;
|
||||
import assemblyline.belts.TileEntityConveyorBelt;
|
||||
import assemblyline.machines.BlockMulti;
|
||||
import assemblyline.machines.BlockMulti.MachineType;
|
||||
import assemblyline.machines.ItemBlockMulti;
|
||||
import assemblyline.machines.TileEntityManipulator;
|
||||
import assemblyline.machines.TileEntityRejector;
|
||||
import assemblyline.machine.BlockArchitectTable;
|
||||
import assemblyline.machine.BlockMulti;
|
||||
import assemblyline.machine.BlockMulti.MachineType;
|
||||
import assemblyline.machine.ItemBlockMulti;
|
||||
import assemblyline.machine.TileEntityManipulator;
|
||||
import assemblyline.machine.TileEntityRejector;
|
||||
import assemblyline.machine.belt.BlockConveyorBelt;
|
||||
import assemblyline.machine.belt.TileEntityConveyorBelt;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.Mod;
|
||||
import cpw.mods.fml.common.Mod.Init;
|
||||
|
@ -42,7 +44,7 @@ public class AssemblyLine
|
|||
@Instance("AssemblyLine")
|
||||
public static AssemblyLine instance;
|
||||
|
||||
public static final String VERSION = "0.1.1";
|
||||
public static final String VERSION = "0.1.2";
|
||||
|
||||
public static final String CHANNEL = "AssemblyLine";
|
||||
|
||||
|
@ -58,6 +60,7 @@ public class AssemblyLine
|
|||
@PreInit
|
||||
public void preInit(FMLPreInitializationEvent event)
|
||||
{
|
||||
UniversalElectricity.register(this, 1, 1, 1, false);
|
||||
instance = this;
|
||||
NetworkRegistry.instance().registerGuiHandler(this, this.proxy);
|
||||
GameRegistry.registerBlock(blockConveyorBelt);
|
||||
|
@ -76,7 +79,7 @@ public class AssemblyLine
|
|||
GameRegistry.registerTileEntity(TileEntityManipulator.class, "Manipulator");
|
||||
|
||||
// Add Names
|
||||
LanguageRegistry.addName(new ItemStack(blockConveyorBelt, 1), "Conveyor Belt");
|
||||
LanguageRegistry.addName(blockConveyorBelt, "Conveyor Belt");
|
||||
LanguageRegistry.addName(blockArchitectTable, "Architect's Table");
|
||||
|
||||
for (MachineType type : MachineType.values())
|
||||
|
@ -95,5 +98,7 @@ public class AssemblyLine
|
|||
// Retriever
|
||||
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(blockInteraction, 1, MachineType.MANIPULATOR.metadata), new Object[]
|
||||
{ Block.dispenser, "basicCircuit" }));
|
||||
|
||||
UETab.setItemStack(new ItemStack(blockConveyorBelt));
|
||||
}
|
||||
}
|
|
@ -6,7 +6,7 @@ import net.minecraft.src.AxisAlignedBB;
|
|||
import net.minecraft.src.EntityItem;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class ArmHelper
|
||||
{
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package assemblyline.api;
|
||||
|
||||
import net.minecraft.src.ItemStack;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public interface IManipulator
|
||||
{
|
||||
|
|
45
src/common/assemblyline/machine/BlockArchitectTable.java
Normal file
45
src/common/assemblyline/machine/BlockArchitectTable.java
Normal file
|
@ -0,0 +1,45 @@
|
|||
package assemblyline.machine;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.Material;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.prefab.UETab;
|
||||
|
||||
public class BlockArchitectTable extends Block
|
||||
{
|
||||
public BlockArchitectTable(int par1)
|
||||
{
|
||||
super(par1, Material.wood);
|
||||
this.blockIndexInTexture = 59;
|
||||
this.setBlockName("ArchitectTable");
|
||||
this.setCreativeTab(UETab.INSTANCE);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the block texture based on the side
|
||||
* being looked at. Args: side
|
||||
*/
|
||||
public int getBlockTextureFromSide(int par1)
|
||||
{
|
||||
return par1 == 1 ? this.blockIndexInTexture - 16 : (par1 == 0 ? Block.planks.getBlockTextureFromSide(0) : (par1 != 2 && par1 != 4 ? this.blockIndexInTexture : this.blockIndexInTexture + 1));
|
||||
}
|
||||
|
||||
/**
|
||||
* Called upon block activation (right click
|
||||
* on the block.)
|
||||
*/
|
||||
public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
|
||||
{
|
||||
if (par1World.isRemote)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
par5EntityPlayer.displayGUIWorkbench(par2, par3, par4);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package assemblyline.machines;
|
||||
package assemblyline.machine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -7,12 +7,13 @@ import net.minecraft.src.CreativeTabs;
|
|||
import net.minecraft.src.EntityLiving;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.Material;
|
||||
import net.minecraft.src.MathHelper;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.implement.IRedstoneReceptor;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
import universalelectricity.prefab.BlockMachine;
|
||||
import universalelectricity.prefab.UETab;
|
||||
import universalelectricity.prefab.implement.IRedstoneReceptor;
|
||||
import assemblyline.AssemblyLine;
|
||||
import assemblyline.render.RenderHelper;
|
||||
import cpw.mods.fml.common.network.PacketDispatcher;
|
||||
|
@ -101,8 +102,8 @@ public class BlockMulti extends BlockMachine
|
|||
|
||||
public BlockMulti(int id)
|
||||
{
|
||||
super("Interaction Machine", id, Material.iron);
|
||||
this.setCreativeTab(CreativeTabs.tabTransport);
|
||||
super("AssemblyLineMachine", id, UniversalElectricity.machine);
|
||||
this.setCreativeTab(UETab.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package assemblyline.machines;
|
||||
package assemblyline.machine;
|
||||
|
||||
import net.minecraft.src.Container;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
|
@ -46,7 +46,7 @@ public class ContainerSorter extends Container
|
|||
* clicking.
|
||||
*/
|
||||
@Override
|
||||
public ItemStack func_82846_b(EntityPlayer par1EntityPlayer, int par1)
|
||||
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par1)
|
||||
{
|
||||
ItemStack itemStack3 = null;
|
||||
Slot itemStack = (Slot) this.inventorySlots.get(par1);
|
||||
|
@ -77,7 +77,7 @@ public class ContainerSorter extends Container
|
|||
|
||||
if (itemStack2.stackSize == itemStack3.stackSize) { return null; }
|
||||
|
||||
itemStack.func_82870_a(par1EntityPlayer, itemStack2);
|
||||
itemStack.onPickupFromSlot(par1EntityPlayer, itemStack2);
|
||||
}
|
||||
|
||||
return itemStack3;
|
|
@ -1,8 +1,8 @@
|
|||
package assemblyline.machines;
|
||||
package assemblyline.machine;
|
||||
|
||||
import net.minecraft.src.ItemBlock;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import assemblyline.machines.BlockMulti.MachineType;
|
||||
import assemblyline.machine.BlockMulti.MachineType;
|
||||
|
||||
public class ItemBlockMulti extends ItemBlock
|
||||
{
|
|
@ -1,4 +1,4 @@
|
|||
package assemblyline.machines;
|
||||
package assemblyline.machine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -15,15 +15,15 @@ import net.minecraft.src.TileEntity;
|
|||
import net.minecraft.src.TileEntityChest;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import net.minecraftforge.common.ISidedInventory;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.electricity.ElectricInfo;
|
||||
import universalelectricity.implement.IRedstoneReceptor;
|
||||
import universalelectricity.prefab.TileEntityElectricityReceiver;
|
||||
import universalelectricity.core.electricity.ElectricInfo;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
import universalelectricity.prefab.implement.IRedstoneReceptor;
|
||||
import universalelectricity.prefab.network.IPacketReceiver;
|
||||
import universalelectricity.prefab.network.PacketManager;
|
||||
import universalelectricity.prefab.tile.TileEntityElectricityReceiver;
|
||||
import assemblyline.AssemblyLine;
|
||||
import assemblyline.api.IManipulator;
|
||||
import assemblyline.machines.BlockMulti.MachineType;
|
||||
import assemblyline.machine.BlockMulti.MachineType;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package assemblyline.machines;
|
||||
package assemblyline.machine;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -15,12 +15,12 @@ import net.minecraft.src.Packet;
|
|||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.prefab.TileEntityElectricityReceiver;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
import universalelectricity.prefab.network.IPacketReceiver;
|
||||
import universalelectricity.prefab.network.PacketManager;
|
||||
import universalelectricity.prefab.tile.TileEntityElectricityReceiver;
|
||||
import assemblyline.AssemblyLine;
|
||||
import assemblyline.belts.TileEntityConveyorBelt;
|
||||
import assemblyline.machine.belt.TileEntityConveyorBelt;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package assemblyline.machines;
|
||||
package assemblyline.machine;
|
||||
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.IInventory;
|
||||
|
@ -9,9 +9,9 @@ import net.minecraft.src.NBTTagList;
|
|||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.prefab.TileEntityElectricityReceiver;
|
||||
import universalelectricity.prefab.network.IPacketReceiver;
|
||||
import assemblyline.belts.TileEntityConveyorBelt;
|
||||
import universalelectricity.prefab.tile.TileEntityElectricityReceiver;
|
||||
import assemblyline.machine.belt.TileEntityConveyorBelt;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
|
@ -1,6 +1,5 @@
|
|||
package assemblyline.belts;
|
||||
package assemblyline.machine.belt;
|
||||
|
||||
import net.minecraft.src.CreativeTabs;
|
||||
import net.minecraft.src.EntityLiving;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.MathHelper;
|
||||
|
@ -8,6 +7,7 @@ import net.minecraft.src.TileEntity;
|
|||
import net.minecraft.src.World;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
import universalelectricity.prefab.BlockMachine;
|
||||
import universalelectricity.prefab.UETab;
|
||||
import assemblyline.render.RenderHelper;
|
||||
|
||||
/**
|
||||
|
@ -21,7 +21,7 @@ public class BlockConveyorBelt extends BlockMachine
|
|||
{
|
||||
super("Conveyor Belt", id, UniversalElectricity.machine);
|
||||
this.setBlockBounds(0, 0, 0, 1, 0.3f, 1);
|
||||
this.setCreativeTab(CreativeTabs.tabTransport);
|
||||
this.setCreativeTab(UETab.INSTANCE);
|
||||
}
|
||||
|
||||
@Override
|
|
@ -1,4 +1,4 @@
|
|||
package assemblyline.belts;
|
||||
package assemblyline.machine.belt;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
@ -12,12 +12,12 @@ import net.minecraft.src.Packet;
|
|||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.electricity.ElectricInfo;
|
||||
import universalelectricity.implement.IConductor;
|
||||
import universalelectricity.prefab.TileEntityElectricityReceiver;
|
||||
import universalelectricity.core.electricity.ElectricInfo;
|
||||
import universalelectricity.core.implement.IConductor;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
import universalelectricity.prefab.network.IPacketReceiver;
|
||||
import universalelectricity.prefab.network.PacketManager;
|
||||
import universalelectricity.prefab.tile.TileEntityElectricityReceiver;
|
||||
import assemblyline.AssemblyLine;
|
||||
import assemblyline.api.IBelt;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package assemblyline.belts;
|
||||
package assemblyline.machine.belt;
|
||||
|
||||
/**
|
||||
* For the moment this is just a render place
|
|
@ -1,4 +1,4 @@
|
|||
package assemblyline.belts;
|
||||
package assemblyline.machine.belt;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
|
@ -1,21 +1,21 @@
|
|||
package assemblyline.machines.crafter;
|
||||
|
||||
import net.minecraft.src.CreativeTabs;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.Material;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
import universalelectricity.prefab.BlockMachine;
|
||||
import universalelectricity.prefab.UETab;
|
||||
import assemblyline.AssemblyLine;
|
||||
|
||||
public class BlockCrafter extends BlockMachine
|
||||
{
|
||||
protected BlockCrafter(int par1)
|
||||
protected BlockCrafter(int id)
|
||||
{
|
||||
super("AutoCrafters", par1, Material.iron);
|
||||
super("AutoCrafter", id, UniversalElectricity.machine);
|
||||
this.setResistance(5.0f);
|
||||
this.setHardness(5.0f);
|
||||
this.setCreativeTab(CreativeTabs.tabTools);
|
||||
this.setCreativeTab(UETab.INSTANCE);
|
||||
}
|
||||
|
||||
public static enum CrafterType
|
||||
|
|
|
@ -59,7 +59,7 @@ public class ContainerCrafter extends Container
|
|||
* clicking.
|
||||
*/
|
||||
@Override
|
||||
public ItemStack func_82846_b(EntityPlayer par1EntityPlayer, int par1)
|
||||
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par1)
|
||||
{
|
||||
ItemStack itemStack3 = null;
|
||||
Slot itemStack = (Slot) this.inventorySlots.get(par1);
|
||||
|
@ -90,7 +90,7 @@ public class ContainerCrafter extends Container
|
|||
|
||||
if (itemStack2.stackSize == itemStack3.stackSize) { return null; }
|
||||
|
||||
itemStack.func_82870_a(par1EntityPlayer, itemStack2);
|
||||
itemStack.onPickupFromSlot(par1EntityPlayer, itemStack2);
|
||||
}
|
||||
|
||||
return itemStack3;
|
||||
|
|
|
@ -5,7 +5,7 @@ import net.minecraft.src.EntityItem;
|
|||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class EntityCraftingArm extends Entity
|
||||
{
|
||||
|
|
|
@ -3,7 +3,7 @@ package assemblyline.machines.crafter;
|
|||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.INetworkManager;
|
||||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import universalelectricity.prefab.TileEntityAdvanced;
|
||||
import universalelectricity.prefab.tile.TileEntityAdvanced;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
||||
|
|
|
@ -9,8 +9,8 @@ import net.minecraft.src.NBTTagList;
|
|||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.prefab.TileEntityElectricityReceiver;
|
||||
import universalelectricity.prefab.network.IPacketReceiver;
|
||||
import universalelectricity.prefab.tile.TileEntityElectricityReceiver;
|
||||
import assemblyline.ai.TaskManager;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
|
|
@ -1,80 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) SpaceToad, 2011
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
public enum Orientations {
|
||||
YNeg, // 0
|
||||
YPos, // 1
|
||||
ZNeg, // 2
|
||||
ZPos, // 3
|
||||
XNeg, // 4
|
||||
XPos, // 5
|
||||
Unknown;
|
||||
|
||||
public Orientations reverse() {
|
||||
switch (this) {
|
||||
case YPos:
|
||||
return Orientations.YNeg;
|
||||
case YNeg:
|
||||
return Orientations.YPos;
|
||||
case ZPos:
|
||||
return Orientations.ZNeg;
|
||||
case ZNeg:
|
||||
return Orientations.ZPos;
|
||||
case XPos:
|
||||
return Orientations.XNeg;
|
||||
case XNeg:
|
||||
return Orientations.XPos;
|
||||
default:
|
||||
return Orientations.Unknown;
|
||||
}
|
||||
}
|
||||
|
||||
public ForgeDirection toDirection(){
|
||||
switch(this){
|
||||
case YNeg:
|
||||
return ForgeDirection.DOWN;
|
||||
case YPos:
|
||||
return ForgeDirection.UP;
|
||||
case ZNeg:
|
||||
return ForgeDirection.NORTH;
|
||||
case ZPos:
|
||||
return ForgeDirection.SOUTH;
|
||||
case XNeg:
|
||||
return ForgeDirection.WEST;
|
||||
case XPos:
|
||||
return ForgeDirection.EAST;
|
||||
default:
|
||||
return ForgeDirection.UNKNOWN;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public Orientations rotateLeft() {
|
||||
switch (this) {
|
||||
case XPos:
|
||||
return ZPos;
|
||||
case ZNeg:
|
||||
return XPos;
|
||||
case XNeg:
|
||||
return ZNeg;
|
||||
case ZPos:
|
||||
return XNeg;
|
||||
default:
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public static Orientations[] dirs() {
|
||||
return new Orientations[] { YNeg, YPos, ZNeg, ZPos, XNeg, XPos };
|
||||
}
|
||||
}
|
|
@ -1,141 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) SpaceToad, 2011
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
import net.minecraft.src.TileEntity;
|
||||
|
||||
public class Position {
|
||||
|
||||
public double x, y, z;
|
||||
public Orientations orientation;
|
||||
|
||||
public Position(double ci, double cj, double ck) {
|
||||
x = ci;
|
||||
y = cj;
|
||||
z = ck;
|
||||
orientation = Orientations.Unknown;
|
||||
}
|
||||
|
||||
public Position(double ci, double cj, double ck, Orientations corientation) {
|
||||
x = ci;
|
||||
y = cj;
|
||||
z = ck;
|
||||
orientation = corientation;
|
||||
}
|
||||
|
||||
public Position(Position p) {
|
||||
x = p.x;
|
||||
y = p.y;
|
||||
z = p.z;
|
||||
orientation = p.orientation;
|
||||
}
|
||||
|
||||
public Position(NBTTagCompound nbttagcompound) {
|
||||
x = nbttagcompound.getDouble("i");
|
||||
y = nbttagcompound.getDouble("j");
|
||||
z = nbttagcompound.getDouble("k");
|
||||
|
||||
orientation = Orientations.Unknown;
|
||||
}
|
||||
|
||||
public Position(TileEntity tile) {
|
||||
x = tile.xCoord;
|
||||
y = tile.yCoord;
|
||||
z = tile.zCoord;
|
||||
}
|
||||
|
||||
public void moveRight(double step) {
|
||||
switch (orientation) {
|
||||
case ZPos:
|
||||
x = x - step;
|
||||
break;
|
||||
case ZNeg:
|
||||
x = x + step;
|
||||
break;
|
||||
case XPos:
|
||||
z = z + step;
|
||||
break;
|
||||
case XNeg:
|
||||
z = z - step;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
public void moveLeft(double step) {
|
||||
moveRight(-step);
|
||||
}
|
||||
|
||||
public void moveForwards(double step) {
|
||||
switch (orientation) {
|
||||
case YPos:
|
||||
y = y + step;
|
||||
break;
|
||||
case YNeg:
|
||||
y = y - step;
|
||||
break;
|
||||
case ZPos:
|
||||
z = z + step;
|
||||
break;
|
||||
case ZNeg:
|
||||
z = z - step;
|
||||
break;
|
||||
case XPos:
|
||||
x = x + step;
|
||||
break;
|
||||
case XNeg:
|
||||
x = x - step;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
||||
public void moveBackwards(double step) {
|
||||
moveForwards(-step);
|
||||
}
|
||||
|
||||
public void moveUp(double step) {
|
||||
switch (orientation) {
|
||||
case ZPos:
|
||||
case ZNeg:
|
||||
case XPos:
|
||||
case XNeg:
|
||||
y = y + step;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void moveDown(double step) {
|
||||
moveUp(-step);
|
||||
}
|
||||
|
||||
public void writeToNBT(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.setDouble("i", x);
|
||||
nbttagcompound.setDouble("j", y);
|
||||
nbttagcompound.setDouble("k", z);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "{" + x + ", " + y + ", " + z + "}";
|
||||
}
|
||||
|
||||
public Position min(Position p) {
|
||||
return new Position(p.x > x ? x : p.x, p.y > y ? y : p.y, p.z > z ? z : p.z);
|
||||
}
|
||||
|
||||
public Position max(Position p) {
|
||||
return new Position(p.x < x ? x : p.x, p.y < y ? y : p.y, p.z < z ? z : p.z);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) SpaceToad, 2011
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
|
||||
package buildcraft.api.core;
|
||||
|
||||
import net.minecraft.src.World;
|
||||
|
||||
public class SafeTimeTracker {
|
||||
|
||||
private long lastMark = 0;
|
||||
|
||||
/**
|
||||
* Return true if a given delay has passed since last time marked was called
|
||||
* successfully.
|
||||
*/
|
||||
public boolean markTimeIfDelay(World world, long delay) {
|
||||
if (world == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
long currentTime = world.getWorldTime();
|
||||
|
||||
if (currentTime < lastMark) {
|
||||
lastMark = currentTime;
|
||||
return false;
|
||||
} else if (lastMark + delay <= currentTime) {
|
||||
lastMark = world.getWorldTime();
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void markTime(World world) {
|
||||
lastMark = world.getWorldTime();
|
||||
}
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) SpaceToad, 2011
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
|
||||
package buildcraft.api.liquids;
|
||||
|
||||
public interface ILiquid {
|
||||
|
||||
public int stillLiquidId();
|
||||
|
||||
public boolean isMetaSensitive();
|
||||
|
||||
public int stillLiquidMeta();
|
||||
|
||||
}
|
|
@ -1,27 +0,0 @@
|
|||
package buildcraft.api.liquids;
|
||||
|
||||
public interface ILiquidTank {
|
||||
|
||||
/**
|
||||
* @return LiquidStack representing the liquid contained in the tank, null if empty.
|
||||
*/
|
||||
LiquidStack getLiquid();
|
||||
void setLiquid(LiquidStack liquid);
|
||||
void setCapacity(int capacity);
|
||||
int getCapacity();
|
||||
|
||||
/**
|
||||
*
|
||||
* @param resource
|
||||
* @param doFill
|
||||
* @return Amount of liquid used for filling.
|
||||
*/
|
||||
int fill(LiquidStack resource, boolean doFill);
|
||||
/**
|
||||
*
|
||||
* @param maxDrain
|
||||
* @param doDrain
|
||||
* @return Null if nothing was drained, otherwise a LiquidStack containing the drained.
|
||||
*/
|
||||
LiquidStack drain(int maxDrain, boolean doDrain);
|
||||
}
|
|
@ -1,46 +0,0 @@
|
|||
package buildcraft.api.liquids;
|
||||
|
||||
import buildcraft.api.core.Orientations;
|
||||
|
||||
public interface ITankContainer {
|
||||
|
||||
/**
|
||||
* Fills liquid into internal tanks, distribution is left to the ITankContainer.
|
||||
* @param from Orientation the liquid is pumped in from.
|
||||
* @param resource LiquidStack representing the maximum amount of liquid filled into the ITankContainer
|
||||
* @param doFill If false filling will only be simulated.
|
||||
* @return Amount of resource that was filled into internal tanks.
|
||||
*/
|
||||
int fill(Orientations from, LiquidStack resource, boolean doFill);
|
||||
/**
|
||||
* Fills liquid into the specified internal tank.
|
||||
* @param from Orientation the liquid is pumped in from.
|
||||
* @param resource LiquidStack representing the maximum amount of liquid filled into the ITankContainer
|
||||
* @param doFill If false filling will only be simulated.
|
||||
* @return Amount of resource that was filled into internal tanks.
|
||||
*/
|
||||
int fill(int tankIndex, LiquidStack resource, boolean doFill);
|
||||
|
||||
/**
|
||||
* Drains liquid out of internal tanks, distribution is left to the ITankContainer.
|
||||
* @param from Orientation the liquid is drained to.
|
||||
* @param maxDrain Maximum amount of liquid to drain.
|
||||
* @param doDrain If false draining will only be simulated.
|
||||
* @return LiquidStack representing the liquid and amount actually drained from the ITankContainer
|
||||
*/
|
||||
LiquidStack drain(Orientations from, int maxDrain, boolean doDrain);
|
||||
/**
|
||||
* Drains liquid out of the specified internal tank.
|
||||
* @param from Orientation the liquid is drained to.
|
||||
* @param maxDrain Maximum amount of liquid to drain.
|
||||
* @param doDrain If false draining will only be simulated.
|
||||
* @return LiquidStack representing the liquid and amount actually drained from the ITankContainer
|
||||
*/
|
||||
LiquidStack drain(int tankIndex, int maxDrain, boolean doDrain);
|
||||
|
||||
/**
|
||||
* @return Array of {@link LiquidTank}s contained in this ITankContainer
|
||||
*/
|
||||
ILiquidTank[] getTanks();
|
||||
|
||||
}
|
|
@ -1,45 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) SpaceToad, 2011
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
|
||||
package buildcraft.api.liquids;
|
||||
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.ItemStack;
|
||||
|
||||
public class LiquidData {
|
||||
|
||||
public final LiquidStack stillLiquid;
|
||||
public final LiquidStack movingLiquid;
|
||||
|
||||
public final ItemStack filled;
|
||||
public final ItemStack container;
|
||||
|
||||
public LiquidData(int stillLiquidId, int movingLiquidId, Item filled) {
|
||||
this(new LiquidStack(stillLiquidId, LiquidManager.BUCKET_VOLUME), new LiquidStack(movingLiquidId, LiquidManager.BUCKET_VOLUME), new ItemStack(filled, 1), new ItemStack(Item.bucketEmpty));
|
||||
}
|
||||
|
||||
public LiquidData(int stillLiquidId, int movingLiquidId, ItemStack filled) {
|
||||
this(new LiquidStack(stillLiquidId, LiquidManager.BUCKET_VOLUME), new LiquidStack(movingLiquidId, LiquidManager.BUCKET_VOLUME), filled, new ItemStack(Item.bucketEmpty));
|
||||
}
|
||||
|
||||
public LiquidData(LiquidStack stillLiquid, ItemStack filled, ItemStack container) {
|
||||
this(stillLiquid, stillLiquid, filled, container);
|
||||
}
|
||||
|
||||
public LiquidData(LiquidStack stillLiquid, LiquidStack movingLiquid, ItemStack filled, ItemStack container) {
|
||||
this.stillLiquid = stillLiquid;
|
||||
this.movingLiquid = movingLiquid;
|
||||
this.filled = filled;
|
||||
this.container = container;
|
||||
|
||||
if(stillLiquid == null || filled == null || container == null)
|
||||
throw new RuntimeException("stillLiquid, filled, or container is null, this is an error");
|
||||
}
|
||||
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
package buildcraft.api.liquids;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* When creating liquids you should register them with this class.
|
||||
*
|
||||
* @author CovertJaguar <railcraft.wikispaces.com>
|
||||
*/
|
||||
public abstract class LiquidDictionary
|
||||
{
|
||||
|
||||
private static Map<String, LiquidStack> liquids = new HashMap<String, LiquidStack>();
|
||||
|
||||
/**
|
||||
* When creating liquids you should call this function.
|
||||
*
|
||||
* Upon passing it a name and liquid item it will return either
|
||||
* a preexisting implementation of that liquid or the liquid passed in.
|
||||
*
|
||||
*
|
||||
* @param name the name of the liquid
|
||||
* @param liquid the liquid to use if one doesn't exist
|
||||
* @return
|
||||
*/
|
||||
public static LiquidStack getOrCreateLiquid(String name, LiquidStack liquid)
|
||||
{
|
||||
LiquidStack existing = liquids.get(name);
|
||||
if(existing != null) {
|
||||
return existing.copy();
|
||||
}
|
||||
liquids.put(name, liquid.copy());
|
||||
return liquid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the liquid matching the name,
|
||||
* if such a liquid exists.
|
||||
*
|
||||
* Can return null.
|
||||
*
|
||||
* @param name the name of the liquid
|
||||
* @param amount the amout of liquid
|
||||
* @return
|
||||
*/
|
||||
public static LiquidStack getLiquid(String name, int amount)
|
||||
{
|
||||
LiquidStack liquid = liquids.get(name);
|
||||
if(liquid == null)
|
||||
return null;
|
||||
|
||||
liquid = liquid.copy();
|
||||
liquid.amount = amount;
|
||||
return liquid;
|
||||
}
|
||||
}
|
|
@ -1,64 +0,0 @@
|
|||
package buildcraft.api.liquids;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
import net.minecraft.src.ItemStack;
|
||||
|
||||
public class LiquidManager {
|
||||
|
||||
public static final int BUCKET_VOLUME = 1000;
|
||||
public static LinkedList<LiquidData> liquids = new LinkedList<LiquidData>();
|
||||
|
||||
public static LiquidStack getLiquidForFilledItem(ItemStack filledItem) {
|
||||
if (filledItem == null)
|
||||
return null;
|
||||
|
||||
for (LiquidData liquid : liquids)
|
||||
if (liquid.filled.isItemEqual(filledItem))
|
||||
return liquid.stillLiquid;
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static int getLiquidIDForFilledItem(ItemStack filledItem) {
|
||||
LiquidStack liquidForFilledItem = getLiquidForFilledItem(filledItem);
|
||||
|
||||
if (liquidForFilledItem == null)
|
||||
return 0;
|
||||
|
||||
return liquidForFilledItem.itemID;
|
||||
}
|
||||
|
||||
public static ItemStack getFilledItemForLiquid(LiquidStack liquid) {
|
||||
for (LiquidData data : liquids)
|
||||
if(data.stillLiquid.isLiquidEqual(liquid))
|
||||
return data.filled.copy();
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static ItemStack fillLiquidContainer(int liquidId, int quantity, ItemStack emptyContainer) {
|
||||
return fillLiquidContainer(new LiquidStack(liquidId, quantity, 0), emptyContainer);
|
||||
}
|
||||
|
||||
public static ItemStack fillLiquidContainer(LiquidStack liquid, ItemStack emptyContainer) {
|
||||
for(LiquidData data : liquids)
|
||||
if(liquid.containsLiquid(data.stillLiquid)
|
||||
&& data.container.isItemEqual(emptyContainer))
|
||||
return data.filled.copy();
|
||||
return null;
|
||||
}
|
||||
|
||||
public static boolean isLiquid(ItemStack block) {
|
||||
if (block.itemID == 0)
|
||||
return false;
|
||||
|
||||
for (LiquidData liquid : liquids)
|
||||
if (liquid.stillLiquid.isLiquidEqual(block) || liquid.movingLiquid.isLiquidEqual(block))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,109 +0,0 @@
|
|||
package buildcraft.api.liquids;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
|
||||
/**
|
||||
* ItemStack substitute for liquids
|
||||
* @author SirSengir
|
||||
*/
|
||||
public class LiquidStack {
|
||||
public int itemID;
|
||||
public int amount;
|
||||
public int itemMeta;
|
||||
|
||||
private LiquidStack() {
|
||||
}
|
||||
|
||||
public LiquidStack(int itemID, int amount) {
|
||||
this(itemID, amount, 0);
|
||||
}
|
||||
|
||||
public LiquidStack(Item item, int amount) {
|
||||
this(item.shiftedIndex, amount, 0);
|
||||
}
|
||||
|
||||
public LiquidStack(Block block, int amount) {
|
||||
this(block.blockID, amount, 0);
|
||||
}
|
||||
|
||||
public LiquidStack(int itemID, int amount, int itemDamage) {
|
||||
this.itemID = itemID;
|
||||
this.amount = amount;
|
||||
this.itemMeta = itemDamage;
|
||||
}
|
||||
|
||||
public NBTTagCompound writeToNBT(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.setShort("Id", (short) itemID);
|
||||
nbttagcompound.setInteger("Amount", amount);
|
||||
nbttagcompound.setShort("Meta", (short) itemMeta);
|
||||
return nbttagcompound;
|
||||
}
|
||||
|
||||
public void readFromNBT(NBTTagCompound nbttagcompound) {
|
||||
itemID = nbttagcompound.getShort("Id");
|
||||
amount = nbttagcompound.getInteger("Amount");
|
||||
itemMeta = nbttagcompound.getShort("Meta");
|
||||
}
|
||||
|
||||
/**
|
||||
* @return A copy of this LiquidStack
|
||||
*/
|
||||
public LiquidStack copy() {
|
||||
return new LiquidStack(itemID, amount, itemMeta);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param other
|
||||
* @return true if this LiquidStack contains the same liquid as the one passed in.
|
||||
*/
|
||||
public boolean isLiquidEqual(LiquidStack other) {
|
||||
if(other == null)
|
||||
return false;
|
||||
|
||||
return itemID == other.itemID && itemMeta == other.itemMeta;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param other
|
||||
* @return true if this LiquidStack contains the other liquid (liquids are equal and amount >= other.amount).
|
||||
*/
|
||||
public boolean containsLiquid(LiquidStack other) {
|
||||
if(!isLiquidEqual(other))
|
||||
return false;
|
||||
|
||||
return amount >= other.amount;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param other ItemStack containing liquids.
|
||||
* @return true if this LiquidStack contains the same liquid as the one passed in.
|
||||
*/
|
||||
public boolean isLiquidEqual(ItemStack other) {
|
||||
if(other == null)
|
||||
return false;
|
||||
|
||||
return itemID == other.itemID && itemMeta == other.getItemDamage();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return ItemStack representation of this LiquidStack
|
||||
*/
|
||||
public ItemStack asItemStack() {
|
||||
return new ItemStack(itemID, 1, itemMeta);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reads a liquid stack from the passed nbttagcompound and returns it.
|
||||
*
|
||||
* @param nbttagcompound
|
||||
* @return
|
||||
*/
|
||||
public static LiquidStack loadLiquidStackFromNBT(NBTTagCompound nbttagcompound) {
|
||||
LiquidStack liquidstack = new LiquidStack();
|
||||
liquidstack.readFromNBT(nbttagcompound);
|
||||
return liquidstack.itemID == 0 ? null : liquidstack;
|
||||
}
|
||||
}
|
|
@ -1,100 +0,0 @@
|
|||
package buildcraft.api.liquids;
|
||||
|
||||
/**
|
||||
* Reference implementation of ILiquidTank. Use this or implement your own.
|
||||
*/
|
||||
public class LiquidTank implements ILiquidTank {
|
||||
private LiquidStack liquid;
|
||||
private int capacity;
|
||||
|
||||
public LiquidTank(int capacity) {
|
||||
this(null, capacity);
|
||||
}
|
||||
|
||||
public LiquidTank(int liquidId, int quantity, int capacity) {
|
||||
this(new LiquidStack(liquidId, quantity), capacity);
|
||||
}
|
||||
public LiquidTank(LiquidStack liquid, int capacity) {
|
||||
this.liquid = liquid;
|
||||
this.capacity = capacity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LiquidStack getLiquid() {
|
||||
return this.liquid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLiquid(LiquidStack liquid) {
|
||||
this.liquid = liquid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCapacity(int capacity) {
|
||||
this.capacity = capacity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
return this.capacity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int fill(LiquidStack resource, boolean doFill) {
|
||||
if(resource == null || resource.itemID <= 0)
|
||||
return 0;
|
||||
|
||||
if(liquid == null || liquid.itemID <= 0) {
|
||||
if(resource.amount <= capacity) {
|
||||
if(doFill)
|
||||
this.liquid = resource.copy();
|
||||
return resource.amount;
|
||||
} else {
|
||||
if(doFill) {
|
||||
this.liquid = resource.copy();
|
||||
this.liquid.amount = capacity;
|
||||
}
|
||||
return capacity;
|
||||
}
|
||||
}
|
||||
|
||||
if(!liquid.isLiquidEqual(resource))
|
||||
return 0;
|
||||
|
||||
int space = capacity - liquid.amount;
|
||||
if(resource.amount <= space) {
|
||||
if(doFill)
|
||||
this.liquid.amount += resource.amount;
|
||||
return resource.amount;
|
||||
} else {
|
||||
|
||||
if(doFill)
|
||||
this.liquid.amount = capacity;
|
||||
return space;
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public LiquidStack drain(int maxDrain, boolean doDrain) {
|
||||
if(liquid == null || liquid.itemID <= 0)
|
||||
return null;
|
||||
if(liquid.amount <= 0)
|
||||
return null;
|
||||
|
||||
int used = maxDrain;
|
||||
if(liquid.amount < used)
|
||||
used = liquid.amount;
|
||||
|
||||
if(doDrain) {
|
||||
liquid.amount -= used;
|
||||
}
|
||||
|
||||
LiquidStack drained = new LiquidStack(liquid.itemID, used, liquid.itemMeta);
|
||||
|
||||
// Reset liquid if emptied
|
||||
if(liquid.amount <= 0)
|
||||
liquid = null;
|
||||
|
||||
return drained;
|
||||
}
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
package buildcraft.api.power;
|
||||
|
||||
import buildcraft.api.core.Orientations;
|
||||
import buildcraft.api.core.SafeTimeTracker;
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
|
||||
public interface IPowerProvider {
|
||||
|
||||
int getLatency();
|
||||
|
||||
int getMinEnergyReceived();
|
||||
|
||||
int getMaxEnergyReceived();
|
||||
|
||||
int getMaxEnergyStored();
|
||||
|
||||
int getActivationEnergy();
|
||||
|
||||
float getEnergyStored();
|
||||
|
||||
void configure(int latency, int minEnergyReceived, int maxEnergyReceived, int minActivationEnergy, int maxStoredEnergy);
|
||||
|
||||
void configurePowerPerdition(int powerLoss, int powerLossRegularity);
|
||||
|
||||
boolean update(IPowerReceptor receptor);
|
||||
|
||||
boolean preConditions(IPowerReceptor receptor);
|
||||
|
||||
float useEnergy(float min, float max, boolean doUse);
|
||||
|
||||
void readFromNBT(NBTTagCompound nbttagcompound);
|
||||
|
||||
void writeToNBT(NBTTagCompound nbttagcompound);
|
||||
|
||||
void receiveEnergy(float quantity, Orientations from);
|
||||
|
||||
boolean isPowerSource(Orientations from);
|
||||
|
||||
SafeTimeTracker getTimeTracker();
|
||||
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) SpaceToad, 2011
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
|
||||
package buildcraft.api.power;
|
||||
|
||||
|
||||
public interface IPowerReceptor {
|
||||
|
||||
public void setPowerProvider(IPowerProvider provider);
|
||||
|
||||
public IPowerProvider getPowerProvider();
|
||||
|
||||
public void doWork();
|
||||
|
||||
public int powerRequest();
|
||||
|
||||
}
|
|
@ -1,56 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) SpaceToad, 2011
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
|
||||
package buildcraft.api.power;
|
||||
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
|
||||
public abstract class PowerFramework {
|
||||
|
||||
static private String baseNBTName = "net.minecraft.src.buildcarft.Power";
|
||||
|
||||
public static PowerFramework currentFramework;
|
||||
|
||||
public abstract IPowerProvider createPowerProvider();
|
||||
|
||||
public void loadPowerProvider(IPowerReceptor receptor, NBTTagCompound compound) {
|
||||
|
||||
IPowerProvider provider = createPowerProvider();
|
||||
|
||||
if (compound.hasKey(baseNBTName)) {
|
||||
NBTTagCompound cpt = compound.getCompoundTag(baseNBTName);
|
||||
if (cpt.getString("class").equals(this.getClass().getName())) {
|
||||
provider.readFromNBT(cpt.getCompoundTag("contents"));
|
||||
}
|
||||
}
|
||||
|
||||
receptor.setPowerProvider(provider);
|
||||
}
|
||||
|
||||
public void savePowerProvider(IPowerReceptor receptor, NBTTagCompound compound) {
|
||||
|
||||
IPowerProvider provider = receptor.getPowerProvider();
|
||||
|
||||
if (provider == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
NBTTagCompound cpt = new NBTTagCompound();
|
||||
|
||||
cpt.setString("class", this.getClass().getName());
|
||||
|
||||
NBTTagCompound contents = new NBTTagCompound();
|
||||
|
||||
provider.writeToNBT(contents);
|
||||
|
||||
cpt.setTag("contents", contents);
|
||||
compound.setTag(baseNBTName, cpt);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,162 +0,0 @@
|
|||
/**
|
||||
* Copyright (c) SpaceToad, 2011
|
||||
* http://www.mod-buildcraft.com
|
||||
*
|
||||
* BuildCraft is distributed under the terms of the Minecraft Mod Public
|
||||
* License 1.0, or MMPL. Please check the contents of the license located in
|
||||
* http://www.mod-buildcraft.com/MMPL-1.0.txt
|
||||
*/
|
||||
|
||||
package buildcraft.api.power;
|
||||
|
||||
import buildcraft.api.core.Orientations;
|
||||
import buildcraft.api.core.SafeTimeTracker;
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
import net.minecraft.src.TileEntity;
|
||||
|
||||
public abstract class PowerProvider implements IPowerProvider {
|
||||
|
||||
protected int latency;
|
||||
protected int minEnergyReceived;
|
||||
protected int maxEnergyReceived;
|
||||
protected int maxEnergyStored;
|
||||
protected int minActivationEnergy;
|
||||
protected float energyStored = 0;
|
||||
|
||||
protected int powerLoss = 1;
|
||||
protected int powerLossRegularity = 100;
|
||||
|
||||
public SafeTimeTracker timeTracker = new SafeTimeTracker();
|
||||
public SafeTimeTracker energyLossTracker = new SafeTimeTracker();
|
||||
|
||||
public int[] powerSources = { 0, 0, 0, 0, 0, 0 };
|
||||
|
||||
@Override public SafeTimeTracker getTimeTracker() { return this.timeTracker; }
|
||||
|
||||
@Override public int getLatency() { return this.latency; }
|
||||
@Override public int getMinEnergyReceived() { return this.minEnergyReceived; }
|
||||
@Override public int getMaxEnergyReceived() { return this.maxEnergyReceived; }
|
||||
@Override public int getMaxEnergyStored() { return this.maxEnergyStored; }
|
||||
@Override public int getActivationEnergy() { return this.minActivationEnergy; }
|
||||
@Override public float getEnergyStored() { return this.energyStored; }
|
||||
|
||||
@Override
|
||||
public void configure(int latency, int minEnergyReceived, int maxEnergyReceived, int minActivationEnergy, int maxStoredEnergy) {
|
||||
this.latency = latency;
|
||||
this.minEnergyReceived = minEnergyReceived;
|
||||
this.maxEnergyReceived = maxEnergyReceived;
|
||||
this.maxEnergyStored = maxStoredEnergy;
|
||||
this.minActivationEnergy = minActivationEnergy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void configurePowerPerdition(int powerLoss, int powerLossRegularity) {
|
||||
this.powerLoss = powerLoss;
|
||||
this.powerLossRegularity = powerLossRegularity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean update(IPowerReceptor receptor) {
|
||||
if (!preConditions(receptor)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
TileEntity tile = (TileEntity) receptor;
|
||||
boolean result = false;
|
||||
|
||||
if (energyStored >= minActivationEnergy) {
|
||||
if (latency == 0) {
|
||||
receptor.doWork();
|
||||
result = true;
|
||||
} else {
|
||||
if (timeTracker.markTimeIfDelay(tile.worldObj, latency)) {
|
||||
receptor.doWork();
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (powerLoss > 0 && energyLossTracker.markTimeIfDelay(tile.worldObj, powerLossRegularity)) {
|
||||
|
||||
energyStored -= powerLoss;
|
||||
if (energyStored < 0) {
|
||||
energyStored = 0;
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = 0; i < 6; ++i) {
|
||||
if (powerSources[i] > 0) {
|
||||
powerSources[i]--;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean preConditions(IPowerReceptor receptor) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float useEnergy(float min, float max, boolean doUse) {
|
||||
float result = 0;
|
||||
|
||||
if (energyStored >= min) {
|
||||
if (energyStored <= max) {
|
||||
result = energyStored;
|
||||
if (doUse) {
|
||||
energyStored = 0;
|
||||
}
|
||||
} else {
|
||||
result = max;
|
||||
if (doUse) {
|
||||
energyStored -= max;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbttagcompound) {
|
||||
latency = nbttagcompound.getInteger("latency");
|
||||
minEnergyReceived = nbttagcompound.getInteger("minEnergyReceived");
|
||||
maxEnergyReceived = nbttagcompound.getInteger("maxEnergyReceived");
|
||||
maxEnergyStored = nbttagcompound.getInteger("maxStoreEnergy");
|
||||
minActivationEnergy = nbttagcompound.getInteger("minActivationEnergy");
|
||||
|
||||
try {
|
||||
energyStored = nbttagcompound.getFloat("storedEnergy");
|
||||
} catch (Throwable c) {
|
||||
energyStored = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbttagcompound) {
|
||||
nbttagcompound.setInteger("latency", latency);
|
||||
nbttagcompound.setInteger("minEnergyReceived", minEnergyReceived);
|
||||
nbttagcompound.setInteger("maxEnergyReceived", maxEnergyReceived);
|
||||
nbttagcompound.setInteger("maxStoreEnergy", maxEnergyStored);
|
||||
nbttagcompound.setInteger("minActivationEnergy", minActivationEnergy);
|
||||
nbttagcompound.setFloat("storedEnergy", energyStored);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveEnergy(float quantity, Orientations from) {
|
||||
powerSources[from.ordinal()] = 2;
|
||||
|
||||
energyStored += quantity;
|
||||
|
||||
if (energyStored > maxEnergyStored) {
|
||||
energyStored = maxEnergyStored;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPowerSource(Orientations from) {
|
||||
return powerSources[from.ordinal()] != 0;
|
||||
}
|
||||
}
|
|
@ -1,131 +0,0 @@
|
|||
|
||||
package dan200.computer.api;
|
||||
|
||||
/**
|
||||
* The interface passed to peripherals by computers or turtles, providing methods
|
||||
* that they can call. This should not be implemented by your classes. Do not interact
|
||||
* with computers except via this interface.
|
||||
*/
|
||||
public interface IComputerAccess
|
||||
{
|
||||
/**
|
||||
* Creates a new numbered directory in a subPath of the users game save, and return that number. To be used with mountSaveDir.<br>
|
||||
* For example: n = createNewSaveDir( "computer/cdrom" ), will create a new
|
||||
* numbered folder in the "computer/cdrom" subdirectory of the users save file, and return that number.
|
||||
* mountSaveDir( "computer/rom", n ) could then be used to mount that folder onto the computers directory
|
||||
* structure, and the value n could be saved out and used again in future to give the peripheral
|
||||
* persistant storage.
|
||||
* @param subPath A relative file path from the users world save, where the directory should be located.
|
||||
* @return The numeric represenation of the name of the folder created. Will be positive.
|
||||
* @see #mountSaveDir(String, String, int, boolean, long)
|
||||
*/
|
||||
public int createNewSaveDir( String subPath );
|
||||
|
||||
/**
|
||||
* Equivalent to mountSaveDir( String desiredLocation, String subPath, int id, boolean readOnly, long spaceLimit ) with no space limit.
|
||||
* Mounts created with this method will have unlimited capacity.
|
||||
* @see #mountSaveDir(String, String, int, boolean, long)
|
||||
*/
|
||||
public String mountSaveDir( String desiredLocation, String subPath, int id, boolean readOnly );
|
||||
|
||||
/**
|
||||
* Mounts a directory into the computers file system, from a real directory a subPath of the users game save,
|
||||
* with a numerical name. To be used with createNewSaveDir.<br>
|
||||
* For example: n = createNewSaveDir( "computer/cdrom" ), will create a new
|
||||
* numbered folder in the "computer/cdrom" subdirectory of the users save file, and return that number.
|
||||
* mountSaveDir( "computer/rom", n ) could then be used to mount that folder onto the computers directory
|
||||
* structure, and the value n can be saved out by the peripheral and used again, to give the peripheral
|
||||
* persistant storage.<br>
|
||||
* When a directory is mounted, it will appear in the computers file system, and the user will be
|
||||
* able to use file operation to read from and write to the directory (unless readOnly, then only writes will be allowed).
|
||||
* @param desiredLocation The desired location in the computers file system where you would like the directory to appear.
|
||||
* If this location already exists, a number will be appended until a free name is found, and the
|
||||
* actual location will be returned. eg: "cdrom" can become "cdrom2" if two peripherals attempt to
|
||||
* mount "cdrom", or a "cdrom" folder already exists.
|
||||
* @param subPath The real relative file path from the users world save, where the directory to mount can be located.
|
||||
* @param id The numerical name of the folder to mount from the subPath: ex: mountSaveDir( "cdrom", "computer/cdrom", 7 )
|
||||
* will mount the directory "computer/cdrom/7". Use createNewSaveDir to obtain a unique directory id.
|
||||
* @param readOnly Whether the computer will be disallowed from making changes to the mounted directory and modifing or creating files therin.
|
||||
* @param spaceLimit The size limit of the mount, in bytes.
|
||||
* @return The location in the computers file system where the directory was mounted. This may differ from "desiredLocation", so the
|
||||
* return value should be kept track of so the folder can be unmounted later.
|
||||
* @see #createNewSaveDir(String)
|
||||
* @see #mountFixedDir(String, String, boolean, long)
|
||||
* @see #unmount(String)
|
||||
*/
|
||||
public String mountSaveDir( String desiredLocation, String subPath, int id, boolean readOnly, long spaceLimit );
|
||||
|
||||
/**
|
||||
* Equivalent to mountFixedDir( String desiredLocation, String path, boolean readOnly, long spaceLimit ) with no space limit.
|
||||
* Mounts created with this method will have unlimited capacity.
|
||||
* @see #mountFixedDir(String, String, boolean, long)
|
||||
*/
|
||||
public String mountFixedDir( String desiredLocation, String path, boolean readOnly );
|
||||
|
||||
/**
|
||||
* Mounts a directory into the computers file system, from a real directory in the Minecraft install folder.<br>
|
||||
* For example: mountFixedDir( "stuff", "mods/mymod/lua/stuff", true ), will mount the "lua/stuff" folder from
|
||||
* your mod's directory into the computers filesystem at the location "stuff", with readonly permission, giving the
|
||||
* computer access to those files.<br>
|
||||
* When a directory is mounted, it will appear in the computers file system, and the user will be
|
||||
* able to use file operation to read from and write to the directory (unless readOnly, then only writes will be allowed).<br>
|
||||
* mountFixedDir can also be used to mount files, for example: mountFixedDir( "rom/apis/myapi", "mods/mymod/lua/myapi.lua", true ) can
|
||||
* be used to have the peripheral install an API onto the computer it attaches to.
|
||||
* @param desiredLocation The desired location in the computers file system where you would like the directory to appear.
|
||||
* If this location already exists, a number will be appended until a free name is found, and the
|
||||
* actual location will be returned. eg: "cdrom" can become "cdrom2" if two peripherals attempt to
|
||||
* mount "cdrom", or a "cdrom" folder already exists.
|
||||
* @param subPath The real relative file path from the minecraft install root, where the directory to mount can be located.
|
||||
* @param readOnly Whether the computer will be disallowed from making changes to the mounted directory and modifing or creating files therin.
|
||||
* @param spaceLimit The size limit of the mount, in bytes.
|
||||
* @return The location in the computers file system where the directory was mounted. This may differ from "desiredLocation", so the
|
||||
* return value should be kept track of so the folder can be unmounted later.
|
||||
* @see #mountSaveDir(String, String, int, boolean, long)
|
||||
* @see #unmount(String)
|
||||
*/
|
||||
public String mountFixedDir( String desiredLocation, String path, boolean readOnly, long spaceLimit );
|
||||
|
||||
/**
|
||||
* Unmounts a directory previously mounted onto the computers file system by mountSaveDir or mountFixedDir.<br>
|
||||
* When a directory is unmounted, it will disappear from the computers file system, and the user will no longer be able to
|
||||
* access it. All directories mounted by a mountFixedDir or mountSaveDir are automatically unmounted when the peripheral
|
||||
* is attached if they have not been explicitly unmounted.
|
||||
* @param location The desired location in the computers file system of the directory to unmount.
|
||||
* This must be the location of a directory previously mounted by mountFixedDir() or mountSaveDir(), as
|
||||
* indicated by their return value.
|
||||
* @see #mountSaveDir(String, String, int, boolean, long)
|
||||
* @see #mountFixedDir(String, String, boolean, long)
|
||||
*/
|
||||
public void unmount( String location );
|
||||
|
||||
/**
|
||||
* Returns the numerical ID of this computer.<br>
|
||||
* This is the same number obtained by calling os.getComputerID() or running the "id" program from lua,
|
||||
* and is guarunteed unique. This number will be positive.
|
||||
* @return The identifier.
|
||||
*/
|
||||
public int getID();
|
||||
|
||||
/**
|
||||
* Equivalent to queueEvent( String event, Object[] arguments ) with an empty arguments array.
|
||||
* @see #queueEvent(String, Object[])
|
||||
*/
|
||||
public void queueEvent( String event );
|
||||
|
||||
/**
|
||||
* Causes an event to be raised on this computer, which the computer can respond to by calling
|
||||
* os.pullEvent(). This can be used to notify the computer when things happen in the world or to
|
||||
* this peripheral.
|
||||
* @param event A string identifying the type of event that has occurred, this will be
|
||||
* returned as the first value from os.pullEvent(). It is recommended that you
|
||||
* you choose a name that is unique, and recognisable as originating from your
|
||||
* peripheral. eg: If your peripheral type is "button", a suitable event would be
|
||||
* "button_pressed".
|
||||
* @param arguments In addition to a name, you may pass an array of extra arguments to the event, that will
|
||||
* be supplied as extra return values to os.pullEvent(). Objects in the array will be converted
|
||||
* to lua data types in the same fashion as the return values of IPeripheral.callMethod().<br>
|
||||
* You may supply null to indicate that no arguments are to be supplied.
|
||||
* @see IPeripheral#callMethod
|
||||
*/
|
||||
public void queueEvent( String event, Object[] arguments );
|
||||
}
|
|
@ -1,103 +0,0 @@
|
|||
|
||||
package dan200.computer.api;
|
||||
|
||||
/**
|
||||
* The interface that defines a peripheral. This should be implemented by the
|
||||
* TileEntity of any block that you wish to be interacted with by
|
||||
* computer or turtle.
|
||||
*/
|
||||
public interface IPeripheral
|
||||
{
|
||||
/**
|
||||
* Should return a string that uniquely identifies this type of peripheral.
|
||||
* This can be queried from lua by calling peripheral.getType()
|
||||
* @return A string identifying the type of peripheral.
|
||||
*/
|
||||
public String getType();
|
||||
|
||||
/**
|
||||
* Should return an array of strings that identify the methods that this
|
||||
* peripheral exposes to Lua. This will be called once before each attachment,
|
||||
* and should not change when called multiple times.
|
||||
* @return An array of strings representing method names.
|
||||
* @see #callMethod
|
||||
*/
|
||||
public String[] getMethodNames();
|
||||
|
||||
/**
|
||||
* This is called when a lua program on an attached computer calls peripheral.call() with
|
||||
* one of the methods exposed by getMethodNames().<br>
|
||||
* <br>
|
||||
* Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe
|
||||
* when interacting with minecraft objects.
|
||||
* @param computer The interface to the computer that is making the call. Remember that multiple
|
||||
* computers can be attached to a peripheral at once.
|
||||
* @param method An integer identifying which of the methods from getMethodNames() the computer
|
||||
* wishes to call. The integer indicates the index into the getMethodNames() table
|
||||
* that corresponds to the string passed into peripheral.call()
|
||||
* @param arguments An array of objects, representing the arguments passed into peripheral.call().<br>
|
||||
* Lua values of type "string" will be represented by Object type String.<br>
|
||||
* Lua values of type "number" will be represented by Object type Double.<br>
|
||||
* Lua values of type "boolean" will be represented by Object type Boolean.<br>
|
||||
* Lua values of any other type will be represented by a null object.<br>
|
||||
* This array will be empty if no arguments are passed.
|
||||
* @return An array of objects, representing values you wish to return to the lua program.<br>
|
||||
* Integers, Doubles, Floats, Strings, Booleans and null be converted to their corresponding lua type.<br>
|
||||
* All other types will be converted to nil.<br>
|
||||
* You may return null to indicate no values should be returned.
|
||||
* @throws Exception If you throw any exception from this function, a lua error will be raised with the
|
||||
* same message as your exception. Use this to throw appropriate errors if the wrong
|
||||
* arguments are supplied to your method.
|
||||
* @see #getMethodNames
|
||||
*/
|
||||
public Object[] callMethod( IComputerAccess computer, int method, Object[] arguments ) throws Exception;
|
||||
|
||||
/**
|
||||
* Is called before the computer attempts to attach to the peripheral, and should return whether to allow
|
||||
* the attachment. Use this to restrict the number of computers that can attach, or to limit attachments to
|
||||
* certain world directions.<br>
|
||||
* If true is returned, attach() will be called shortly afterwards, and the computer will be able to make method calls.
|
||||
* If false is returned, attach() will not be called, and the peripheral will be invisible to the computer.
|
||||
* @param side The world direction (0=bottom, 1=top, etc) that the computer lies relative to the peripheral.
|
||||
* @return Whether to allow the attachment, as a boolean.
|
||||
* @see #attach
|
||||
*/
|
||||
public boolean canAttachToSide( int side );
|
||||
|
||||
/**
|
||||
* Is called when canAttachToSide has returned true, and a computer is attaching to the peripheral.
|
||||
* This will occur when a peripheral is placed next to an active computer, when a computer is turned on next to a peripheral,
|
||||
* or when a turtle travels into a square next to a peripheral.
|
||||
* Between calls to attach() and detach(), the attached computer can make method calls on the peripheral using peripheral.call().
|
||||
* This method can be used to keep track of which computers are attached to the peripheral, or to take action when attachment
|
||||
* occurs.<br>
|
||||
* <br>
|
||||
* Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe
|
||||
* when interacting with minecraft objects.
|
||||
* @param computer The interface to the computer that is being attached. Remember that multiple
|
||||
* computers can be attached to a peripheral at once.
|
||||
* @param computerSide A string indicating which "side" of the computer the peripheral is attaching,
|
||||
* relative to the computers orientation. This value will be one of "top", "bottom",
|
||||
* "left", "right", "front" or "back". This can be used to uniquely identify the
|
||||
* peripheral when raising events or returning values to the computer.
|
||||
* @see #canAttachToSide
|
||||
* @see #detach
|
||||
*/
|
||||
public void attach( IComputerAccess computer, String computerSide );
|
||||
|
||||
/**
|
||||
* Is called when a computer is detaching from the peripheral.
|
||||
* This will occur when a computer shuts down, when the peripheral is removed while attached to computers,
|
||||
* or when a turtle moves away from a square attached to a peripheral.
|
||||
* This method can be used to keep track of which computers are attached to the peripheral, or to take action when detachment
|
||||
* occurs.<br>
|
||||
* <br>
|
||||
* Be aware that this will be called from the ComputerCraft Lua thread, and must be thread-safe
|
||||
* when interacting with minecraft objects.
|
||||
* @param computer The interface to the computer that is being detached. Remember that multiple
|
||||
* computers can be attached to a peripheral at once.
|
||||
* @see #canAttachToSide
|
||||
* @see #detach
|
||||
*/
|
||||
public void detach( IComputerAccess computer );
|
||||
}
|
|
@ -4,15 +4,17 @@ import net.minecraftforge.common.MinecraftForge;
|
|||
import net.minecraftforge.event.ForgeSubscribe;
|
||||
import net.minecraftforge.event.world.WorldEvent.Load;
|
||||
import net.minecraftforge.event.world.WorldEvent.Unload;
|
||||
import universalelectricity.electricity.ElectricityManager;
|
||||
import universalelectricity.electricity.ElectricityManagerTicker;
|
||||
import universalelectricity.core.electricity.ElectricityManager;
|
||||
import universalelectricity.core.electricity.ElectricityManagerTicker;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.Loader;
|
||||
import cpw.mods.fml.common.Side;
|
||||
import cpw.mods.fml.common.registry.TickRegistry;
|
||||
|
||||
/**
|
||||
* A class used to load Universal Electricity and make it work.
|
||||
* A class used to load Universal Electricity and
|
||||
* make it work.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
|
|
|
@ -12,17 +12,20 @@ import cpw.mods.fml.common.FMLLog;
|
|||
import cpw.mods.fml.common.Loader;
|
||||
|
||||
/**
|
||||
* Instructions for using the Universal Electricity API.
|
||||
* Instructions for using the Universal
|
||||
* Electricity API.
|
||||
*
|
||||
* The less you include of the API, the more compatible your
|
||||
* mod will be for future releases of Universal Electricity.
|
||||
* The less you include of the API, the more
|
||||
* compatible your mod will be for future releases
|
||||
* of Universal Electricity.
|
||||
*
|
||||
* REQUIRED PACKAGES:
|
||||
* "universalelectricity"
|
||||
* REQUIRED PACKAGES: "universalelectricity"
|
||||
* "universalelectricity.electricity"
|
||||
* "universalelectricity.implements" - Some interfaces can be removed if not needed.
|
||||
* "universalelectricity.implements" - Some
|
||||
* interfaces can be removed if not needed.
|
||||
*
|
||||
* The rest of the classes should be removed if you are not going to use them.
|
||||
* The rest of the classes should be removed if
|
||||
* you are not going to use them.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
|
@ -30,20 +33,23 @@ import cpw.mods.fml.common.Loader;
|
|||
public class UniversalElectricity
|
||||
{
|
||||
/**
|
||||
* The version of the Universal Electricity API.
|
||||
* The version of the Universal Electricity
|
||||
* API.
|
||||
*/
|
||||
public static final int MAJOR_VERSION = 1;
|
||||
public static final int MINOR_VERSION = 0;
|
||||
public static final int REVISION_VERSION = 0;
|
||||
public static final int MINOR_VERSION = 1;
|
||||
public static final int REVISION_VERSION = 1;
|
||||
public static final String VERSION = MAJOR_VERSION + "." + MINOR_VERSION + "." + REVISION_VERSION;
|
||||
|
||||
/**
|
||||
* The Universal Electricity configuration file.
|
||||
* The Universal Electricity configuration
|
||||
* file.
|
||||
*/
|
||||
public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), "UniversalElectricity/UniversalElectricity.cfg"));
|
||||
|
||||
/**
|
||||
* Conversion ratios between Buildcraft and Industrialcraft energy.
|
||||
* Conversion ratios between Buildcraft and
|
||||
* Industrialcraft energy.
|
||||
*/
|
||||
// EU to Watts ratio
|
||||
public static final float IC2_RATIO = (float) UEConfig.getConfigData(CONFIGURATION, "IndustrialCraft Conversion Ratio", 7);
|
||||
|
@ -53,16 +59,17 @@ public class UniversalElectricity
|
|||
public static final float TO_BC_RATIO = 1 / BC3_RATIO;
|
||||
|
||||
/**
|
||||
* Use this material for all your machine blocks. It can be breakable by
|
||||
* hand.
|
||||
* Use this material for all your machine
|
||||
* blocks. It can be breakable by hand.
|
||||
*/
|
||||
public static final Material machine = new Material(MapColor.ironColor);
|
||||
|
||||
public static final List<Object> mods = new ArrayList<Object>();
|
||||
|
||||
/**
|
||||
* You must register your mod with Universal Electricity. Call this in your
|
||||
* mod's pre-initialization stage.
|
||||
* You must register your mod with Universal
|
||||
* Electricity. Call this in your mod's
|
||||
* pre-initialization stage.
|
||||
*/
|
||||
public static void register(Object mod, int major, int minor, int revision, boolean strict)
|
||||
{
|
||||
|
@ -84,14 +91,14 @@ public class UniversalElectricity
|
|||
|
||||
mods.add(mod);
|
||||
|
||||
FMLLog.fine(mod.getClass().getSimpleName()+" has been registered to Universal Electricity.");
|
||||
FMLLog.fine(mod.getClass().getSimpleName() + " has been registered to Universal Electricity.");
|
||||
|
||||
UELoader.INSTANCE.initiate();
|
||||
}
|
||||
|
||||
/**
|
||||
* A function that allows you to lock your mod to a specific version of
|
||||
* Forge.
|
||||
* A function that allows you to lock your mod
|
||||
* to a specific version of Forge.
|
||||
*/
|
||||
public static void forgeLock(int major, int minor, int revision, boolean strict)
|
||||
{
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
package universalelectricity.electricity;
|
||||
package universalelectricity.core.electricity;
|
||||
|
||||
/**
|
||||
* An easy way to display information on electricity.
|
||||
* An easy way to display information on
|
||||
* electricity.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
|
@ -131,7 +132,8 @@ public class ElectricInfo
|
|||
}
|
||||
|
||||
/**
|
||||
* Displays the unit as text. Works only for positive numbers.
|
||||
* Displays the unit as text. Works only for
|
||||
* positive numbers.
|
||||
*/
|
||||
public static String getDisplay(double value, ElectricUnit unit, int significantFigures, boolean isShort)
|
||||
{
|
||||
|
@ -184,7 +186,8 @@ public class ElectricInfo
|
|||
}
|
||||
|
||||
/**
|
||||
* Rounds a number to a specific number place places
|
||||
* Rounds a number to a specific number place
|
||||
* places
|
||||
*
|
||||
* @param The
|
||||
* number
|
|
@ -1,4 +1,4 @@
|
|||
package universalelectricity.electricity;
|
||||
package universalelectricity.core.electricity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.EnumSet;
|
||||
|
@ -9,9 +9,9 @@ import java.util.Map;
|
|||
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.implement.IConductor;
|
||||
import universalelectricity.implement.IElectricityReceiver;
|
||||
import universalelectricity.core.implement.IConductor;
|
||||
import universalelectricity.core.implement.IElectricityReceiver;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
import cpw.mods.fml.common.FMLLog;
|
||||
import cpw.mods.fml.common.TickType;
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
package universalelectricity.electricity;
|
||||
package universalelectricity.core.electricity;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
|
@ -1,12 +1,12 @@
|
|||
package universalelectricity.electricity;
|
||||
package universalelectricity.core.electricity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.implement.IConductor;
|
||||
import universalelectricity.implement.IElectricityReceiver;
|
||||
import universalelectricity.core.implement.IConductor;
|
||||
import universalelectricity.core.implement.IElectricityReceiver;
|
||||
|
||||
public class ElectricityNetwork
|
||||
{
|
||||
|
@ -29,8 +29,8 @@ public class ElectricityNetwork
|
|||
}
|
||||
|
||||
/**
|
||||
* Get only the electric units that can receive electricity from the given
|
||||
* side.
|
||||
* Get only the electric units that can
|
||||
* receive electricity from the given side.
|
||||
*/
|
||||
public List<IElectricityReceiver> getConnectedReceivers()
|
||||
{
|
||||
|
@ -110,7 +110,8 @@ public class ElectricityNetwork
|
|||
}
|
||||
|
||||
/**
|
||||
* This function is called to refresh all conductors in this network
|
||||
* This function is called to refresh all
|
||||
* conductors in this network
|
||||
*/
|
||||
public void refreshConductors()
|
||||
{
|
|
@ -1,8 +1,8 @@
|
|||
package universalelectricity.electricity;
|
||||
package universalelectricity.core.electricity;
|
||||
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.implement.IElectricityReceiver;
|
||||
import universalelectricity.core.implement.IElectricityReceiver;
|
||||
|
||||
public class ElectricityTransferData
|
||||
{
|
||||
|
@ -15,11 +15,14 @@ public class ElectricityTransferData
|
|||
|
||||
/**
|
||||
* @param sender
|
||||
* - Tile that's sending electricity.
|
||||
* - Tile that's sending
|
||||
* electricity.
|
||||
* @param receiver
|
||||
* - Receiver that's receiving electricity
|
||||
* - Receiver that's receiving
|
||||
* electricity
|
||||
* @param conductor
|
||||
* - Conductor that is conducting the electricity
|
||||
* - Conductor that is conducting
|
||||
* the electricity
|
||||
* @param side
|
||||
* -
|
||||
* @param amps
|
|
@ -1,12 +1,13 @@
|
|||
package universalelectricity.implement;
|
||||
package universalelectricity.core.implement;
|
||||
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.electricity.ElectricityNetwork;
|
||||
import universalelectricity.core.electricity.ElectricityNetwork;
|
||||
|
||||
/**
|
||||
* Must be applied to all tile entities that are conductors.
|
||||
* Must be applied to all tile entities that are
|
||||
* conductors.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
|
@ -14,54 +15,63 @@ import universalelectricity.electricity.ElectricityNetwork;
|
|||
public interface IConductor extends IConnector
|
||||
{
|
||||
/**
|
||||
* The electrical network this conductor is on.
|
||||
* The electrical network this conductor is
|
||||
* on.
|
||||
*/
|
||||
public ElectricityNetwork getNetwork();
|
||||
|
||||
public void setNetwork(ElectricityNetwork network);
|
||||
|
||||
/**
|
||||
* The UE tile entities that this conductor is connected to.
|
||||
* The UE tile entities that this conductor is
|
||||
* connected to.
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public TileEntity[] getConnectedBlocks();
|
||||
|
||||
/**
|
||||
* Gets the resistance of the conductor. Used to calculate energy loss. A
|
||||
* higher resistance means a higher energy loss.
|
||||
* Gets the resistance of the conductor. Used
|
||||
* to calculate energy loss. A higher
|
||||
* resistance means a higher energy loss.
|
||||
*
|
||||
* @return The amount of Ohm's of resistance.
|
||||
*/
|
||||
public double getResistance();
|
||||
|
||||
/**
|
||||
* The maximum amount of amps this conductor can handle before melting down.
|
||||
* This is calculating PER TICK!
|
||||
* The maximum amount of amps this conductor
|
||||
* can handle before melting down. This is
|
||||
* calculating PER TICK!
|
||||
*
|
||||
* @return The amount of amps in volts
|
||||
*/
|
||||
public double getMaxAmps();
|
||||
|
||||
/**
|
||||
* Called when the electricity passing through exceeds the maximum voltage.
|
||||
* Called when the electricity passing through
|
||||
* exceeds the maximum voltage.
|
||||
*/
|
||||
public void onOverCharge();
|
||||
|
||||
/**
|
||||
* Resets the conductor and recalculate connection IDs again
|
||||
* Resets the conductor and recalculate
|
||||
* connection IDs again
|
||||
*/
|
||||
public void reset();
|
||||
|
||||
public World getWorld();
|
||||
|
||||
/**
|
||||
* Adds a connection between this conductor and a UE unit
|
||||
* Adds a connection between this conductor
|
||||
* and a UE unit
|
||||
*
|
||||
* @param tileEntity
|
||||
* - Must be either a producer, consumer or a conductor
|
||||
* - Must be either a producer,
|
||||
* consumer or a conductor
|
||||
* @param side
|
||||
* - side in which the connection is coming from
|
||||
* - side in which the connection
|
||||
* is coming from
|
||||
*/
|
||||
public void updateConnection(TileEntity tileEntity, ForgeDirection side);
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
package universalelectricity.core.implement;
|
||||
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
/**
|
||||
* Applied to a TileEntity that can connect to UE
|
||||
* wires.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IConnector
|
||||
{
|
||||
/**
|
||||
* Can this TileEntity visually connect to a
|
||||
* wire on this specific side?
|
||||
*
|
||||
* @param side
|
||||
* - The side in which the
|
||||
* connection is coming from.
|
||||
* @return - True if so.
|
||||
*/
|
||||
public boolean canConnect(ForgeDirection side);
|
||||
}
|
|
@ -0,0 +1,31 @@
|
|||
package universalelectricity.core.implement;
|
||||
|
||||
/**
|
||||
* This class should be applied to all tile
|
||||
* entities (mainly machines) that can be disabled
|
||||
* (by things like EMP, short circuit etc.).
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IDisableable
|
||||
{
|
||||
/**
|
||||
* This is called when the tile entity is to
|
||||
* be disabled.
|
||||
*
|
||||
* @param duration
|
||||
* - The duration of the disable in
|
||||
* ticks.
|
||||
*/
|
||||
public void onDisable(int duration);
|
||||
|
||||
/**
|
||||
* Called to see if this tile entity is
|
||||
* disabled.
|
||||
*
|
||||
* @return True if the tile entity is
|
||||
* disabled.
|
||||
*/
|
||||
public boolean isDisabled();
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
package universalelectricity.core.implement;
|
||||
|
||||
/**
|
||||
* Applied to TileEntities that can produces
|
||||
* electricity. Of course, you will still need to
|
||||
* call ElectricityManager.instance.produce() to
|
||||
* actually output the electricity.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public interface IElectricityProducer extends IConnector, IDisableable, IVoltage
|
||||
{
|
||||
|
||||
}
|
|
@ -0,0 +1,47 @@
|
|||
package universalelectricity.core.implement;
|
||||
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
/**
|
||||
* The IElectricityReceiver interface is an
|
||||
* interface that must be applied to all tile
|
||||
* entities that can receive electricity.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IElectricityReceiver extends IDisableable, IConnector, IVoltage
|
||||
{
|
||||
/**
|
||||
* Called every tick on this machine.
|
||||
*
|
||||
* @param amps
|
||||
* - Amount of amps this electric
|
||||
* unit is receiving.
|
||||
* @param voltage
|
||||
* - The voltage of the electricity
|
||||
* sent. If more than one packet is
|
||||
* being sent to you in this
|
||||
* update, the highest voltage will
|
||||
* override.
|
||||
* @param side
|
||||
* - The side of the block in which
|
||||
* the electricity is coming from.
|
||||
*/
|
||||
public void onReceive(TileEntity sender, double amps, double voltage, ForgeDirection side);
|
||||
|
||||
/**
|
||||
* How many watts does this electrical unit
|
||||
* need this tick? Recommended for you to
|
||||
* return the max electricity storage of this
|
||||
* machine (if there is one).
|
||||
*/
|
||||
public double wattRequest();
|
||||
|
||||
/**
|
||||
* Can this unit receive electricity from this
|
||||
* specific side?
|
||||
*/
|
||||
public boolean canReceiveFromSide(ForgeDirection side);
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package universalelectricity.implement;
|
||||
package universalelectricity.core.implement;
|
||||
|
||||
import net.minecraft.src.ItemStack;
|
||||
|
||||
|
@ -10,22 +10,25 @@ public interface IItemElectric extends IJouleStorage, IVoltage
|
|||
public double onReceive(double amps, double voltage, ItemStack itemStack);
|
||||
|
||||
/**
|
||||
* Called when something requests electricity from this item.
|
||||
* Called when something requests electricity
|
||||
* from this item.
|
||||
*
|
||||
* @return - The amount of given joules
|
||||
*/
|
||||
public double onUse(double joulesNeeded, ItemStack itemStack);
|
||||
|
||||
/**
|
||||
* @return Returns true or false if this consumer can receive electricity at
|
||||
* @return Returns true or false if this
|
||||
* consumer can receive electricity at
|
||||
* this given tick or moment.
|
||||
*/
|
||||
public boolean canReceiveElectricity();
|
||||
|
||||
/**
|
||||
* Can this item give out electricity when placed in an tile entity?
|
||||
* Electric items like batteries should be able to produce electricity (if
|
||||
* they are rechargeable).
|
||||
* Can this item give out electricity when
|
||||
* placed in an tile entity? Electric items
|
||||
* like batteries should be able to produce
|
||||
* electricity (if they are rechargeable).
|
||||
*
|
||||
* @return - True or False.
|
||||
*/
|
|
@ -0,0 +1,28 @@
|
|||
package universalelectricity.core.implement;
|
||||
|
||||
/**
|
||||
* This interface is to be applied to all tile
|
||||
* entities which stores energy within them.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public interface IJouleStorage
|
||||
{
|
||||
/**
|
||||
* Returns the amount of joules this unit has
|
||||
* stored.
|
||||
*/
|
||||
public double getJoules(Object... data);
|
||||
|
||||
/**
|
||||
* Sets the amount of joules this unit has
|
||||
* stored.
|
||||
*/
|
||||
public void setJoules(double wattHours, Object... data);
|
||||
|
||||
/**
|
||||
* Gets the maximum amount of joules this unit
|
||||
* can store.
|
||||
*/
|
||||
public double getMaxJoules(Object... data);
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
package universalelectricity.implement;
|
||||
package universalelectricity.core.implement;
|
||||
|
||||
/**
|
||||
* Applies to all objects that has a voltage.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
|
@ -9,7 +10,9 @@ public interface IVoltage
|
|||
{
|
||||
/**
|
||||
* Gets the voltage of this object.
|
||||
* @return The amount of volts. E.g 120v or 240v
|
||||
*
|
||||
* @return The amount of volts. E.g 120v or
|
||||
* 240v
|
||||
*/
|
||||
public double getVoltage();
|
||||
}
|
36
src/common/universalelectricity/core/vector/Region2.java
Normal file
36
src/common/universalelectricity/core/vector/Region2.java
Normal file
|
@ -0,0 +1,36 @@
|
|||
package universalelectricity.core.vector;
|
||||
|
||||
public class Region2
|
||||
{
|
||||
public Vector2 min;
|
||||
public Vector2 max;
|
||||
|
||||
public Region2()
|
||||
{
|
||||
this(new Vector2(), new Vector2());
|
||||
}
|
||||
|
||||
public Region2(Vector2 min, Vector2 max)
|
||||
{
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a point is located inside a
|
||||
* region
|
||||
*/
|
||||
public boolean isIn(Vector2 point)
|
||||
{
|
||||
return (point.x > this.min.x && point.x < this.max.x) && (point.y > this.min.y && point.y < this.max.y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the given region intersects
|
||||
* with this one.
|
||||
*/
|
||||
public boolean isIn(Region2 region)
|
||||
{
|
||||
return region.max.x > this.min.x && region.min.x < this.max.x ? (region.max.y > this.min.y && region.min.y < this.max.y ? true : false) : false;
|
||||
}
|
||||
}
|
131
src/common/universalelectricity/core/vector/Region3.java
Normal file
131
src/common/universalelectricity/core/vector/Region3.java
Normal file
|
@ -0,0 +1,131 @@
|
|||
package universalelectricity.core.vector;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.src.AxisAlignedBB;
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.World;
|
||||
|
||||
/**
|
||||
* A cubical region class.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public class Region3
|
||||
{
|
||||
public Vector3 min;
|
||||
public Vector3 max;
|
||||
|
||||
public Region3()
|
||||
{
|
||||
this(new Vector3(), new Vector3());
|
||||
}
|
||||
|
||||
public Region3(Vector3 min, Vector3 max)
|
||||
{
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
public Region3 get(AxisAlignedBB aabb)
|
||||
{
|
||||
return new Region3(new Vector3(aabb.minX, aabb.minY, aabb.minZ), new Vector3(aabb.maxX, aabb.maxY, aabb.maxZ));
|
||||
}
|
||||
|
||||
public AxisAlignedBB toAABB()
|
||||
{
|
||||
return AxisAlignedBB.getBoundingBox(this.min.x, this.min.y, this.min.z, this.max.x, this.max.y, this.max.z);
|
||||
}
|
||||
|
||||
public Region2 toRegion2()
|
||||
{
|
||||
return new Region2(this.min.toVector2(), this.max.toVector2());
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if a point is located inside a
|
||||
* region
|
||||
*/
|
||||
public boolean isIn(Vector3 point)
|
||||
{
|
||||
return (point.x > this.min.x && point.x < this.max.x) && (point.y > this.min.y && point.y < this.max.y) && (point.z > this.min.z && point.z < this.max.z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns whether the given region intersects
|
||||
* with this one.
|
||||
*/
|
||||
public boolean isIn(Region3 region)
|
||||
{
|
||||
return region.max.x > this.min.x && region.min.x < this.max.x ? (region.max.y > this.min.y && region.min.y < this.max.y ? region.max.z > this.min.z && region.min.z < this.max.z : false) : false;
|
||||
}
|
||||
|
||||
public void expand(Vector3 difference)
|
||||
{
|
||||
this.min.subtract(difference);
|
||||
this.max.add(difference);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return List of vectors within this region.
|
||||
*/
|
||||
public List<Vector3> getVectors()
|
||||
{
|
||||
List<Vector3> vectors = new ArrayList<Vector3>();
|
||||
|
||||
for (int x = this.min.intX(); x < this.max.intX(); x++)
|
||||
{
|
||||
for (int y = this.min.intY(); x < this.max.intY(); y++)
|
||||
{
|
||||
for (int z = this.min.intZ(); x < this.max.intZ(); z++)
|
||||
{
|
||||
vectors.add(new Vector3(x, y, z));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return vectors;
|
||||
}
|
||||
|
||||
public List<Vector3> getVectors(Vector3 center, int radius)
|
||||
{
|
||||
List<Vector3> vectors = new ArrayList<Vector3>();
|
||||
|
||||
for (int x = this.min.intX(); x < this.max.intX(); x++)
|
||||
{
|
||||
for (int y = this.min.intY(); x < this.max.intY(); y++)
|
||||
{
|
||||
for (int z = this.min.intZ(); x < this.max.intZ(); z++)
|
||||
{
|
||||
Vector3 vector3 = new Vector3(x, y, z);
|
||||
|
||||
if (center.distanceTo(vector3) <= radius)
|
||||
{
|
||||
vectors.add(vector3);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return vectors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all entities in this region.
|
||||
*/
|
||||
public List<Entity> getEntities(World world, Class<? extends Entity> entityClass)
|
||||
{
|
||||
return world.getEntitiesWithinAABB(entityClass, this.toAABB());
|
||||
}
|
||||
|
||||
public List<Entity> getEntitiesExlude(World world, Entity entity)
|
||||
{
|
||||
return world.getEntitiesWithinAABBExcludingEntity(entity, this.toAABB());
|
||||
}
|
||||
|
||||
public List<Entity> getEntities(World world)
|
||||
{
|
||||
return this.getEntities(world, Entity.class);
|
||||
}
|
||||
}
|
|
@ -1,12 +1,13 @@
|
|||
package universalelectricity.core;
|
||||
package universalelectricity.core.vector;
|
||||
|
||||
import net.minecraft.src.MathHelper;
|
||||
|
||||
/**
|
||||
* Vector2 Class is used for defining objects in a 2D space. Vector2 makes it
|
||||
* easier to handle the coordinates of objects. Instead of fumbling with x and y
|
||||
* variables, all x and y variables are stored in one class. Vector3.x,
|
||||
* Vector3.y.
|
||||
* Vector2 Class is used for defining objects in a
|
||||
* 2D space. Vector2 makes it easier to handle the
|
||||
* coordinates of objects. Instead of fumbling
|
||||
* with x and y variables, all x and y variables
|
||||
* are stored in one class. Vector3.x, Vector3.y.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
|
@ -45,7 +46,8 @@ public class Vector2 implements Cloneable
|
|||
}
|
||||
|
||||
/**
|
||||
* Makes a new copy of this Vector. Prevents variable referencing problems.
|
||||
* Makes a new copy of this Vector. Prevents
|
||||
* variable referencing problems.
|
||||
*/
|
||||
@Override
|
||||
public Vector2 clone()
|
||||
|
@ -53,11 +55,6 @@ public class Vector2 implements Cloneable
|
|||
return new Vector2(this.x, this.y);
|
||||
}
|
||||
|
||||
public static boolean isPointInRegion(Vector2 point, Vector2 minPoint, Vector2 maxPoint)
|
||||
{
|
||||
return (point.x > minPoint.x && point.x < maxPoint.x) && (point.y > minPoint.y && point.y < maxPoint.y);
|
||||
}
|
||||
|
||||
public static double distance(Vector2 par1, Vector2 par2)
|
||||
{
|
||||
double var2 = par1.x - par2.x;
|
||||
|
@ -84,6 +81,18 @@ public class Vector2 implements Cloneable
|
|||
this.y += par1;
|
||||
}
|
||||
|
||||
public void substract(Vector2 par1)
|
||||
{
|
||||
this.x -= par1.x;
|
||||
this.y -= par1.y;
|
||||
}
|
||||
|
||||
public void substract(double par1)
|
||||
{
|
||||
this.x -= par1;
|
||||
this.y -= par1;
|
||||
}
|
||||
|
||||
public Vector2 round()
|
||||
{
|
||||
return new Vector2(Math.round(this.x), Math.round(this.y));
|
||||
|
@ -94,13 +103,9 @@ public class Vector2 implements Cloneable
|
|||
return new Vector2(Math.floor(this.x), Math.floor(this.y));
|
||||
}
|
||||
|
||||
public String output()
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "Vector2: " + this.x + "," + this.y;
|
||||
}
|
||||
|
||||
public void printVector()
|
||||
{
|
||||
System.out.println(output());
|
||||
}
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
package universalelectricity.core;
|
||||
package universalelectricity.core.vector;
|
||||
|
||||
import net.minecraft.src.ChunkCoordinates;
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.IBlockAccess;
|
||||
import net.minecraft.src.MathHelper;
|
||||
import net.minecraft.src.MovingObjectPosition;
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
|
@ -9,12 +10,14 @@ import net.minecraft.src.TileEntity;
|
|||
import net.minecraft.src.Vec3;
|
||||
import net.minecraft.src.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.implement.IConnector;
|
||||
import universalelectricity.core.implement.IConnector;
|
||||
|
||||
/**
|
||||
* Vector3 Class is used for defining objects in a 3D space. Vector3 makes it
|
||||
* easier to handle the coordinates of objects. Instead of fumbling with x, y
|
||||
* and z variables, all x, y and z variables are stored in one class. Vector3.x,
|
||||
* Vector3 Class is used for defining objects in a
|
||||
* 3D space. Vector3 makes it easier to handle the
|
||||
* coordinates of objects. Instead of fumbling
|
||||
* with x, y and z variables, all x, y and z
|
||||
* variables are stored in one class. Vector3.x,
|
||||
* Vector3.y, Vector3.z.
|
||||
*
|
||||
* @author Calclavia
|
||||
|
@ -62,7 +65,8 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
}
|
||||
|
||||
/**
|
||||
* Makes a new copy of this Vector. Prevents variable referencing problems.
|
||||
* Makes a new copy of this Vector. Prevents
|
||||
* variable referencing problems.
|
||||
*/
|
||||
@Override
|
||||
public Vector3 clone()
|
||||
|
@ -71,56 +75,45 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
}
|
||||
|
||||
/**
|
||||
* Converts a TileEntity's position into Vector3
|
||||
* Vector3 Shortcut Functions
|
||||
*/
|
||||
|
||||
public static Vector3 get(Entity par1)
|
||||
{
|
||||
return new Vector3(par1.posX, par1.posY, par1.posZ);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts an entity's position into Vector3
|
||||
*/
|
||||
public static Vector3 get(TileEntity par1)
|
||||
{
|
||||
return new Vector3(par1.xCoord, par1.yCoord, par1.zCoord);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts from Vec3 into a Vector3
|
||||
*/
|
||||
public static Vector3 get(Vec3 par1)
|
||||
{
|
||||
return new Vector3(par1.xCoord, par1.yCoord, par1.zCoord);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a MovingObjectPosition to Vector3
|
||||
*/
|
||||
public static Vector3 get(MovingObjectPosition par1)
|
||||
{
|
||||
return new Vector3(par1.blockX, par1.blockY, par1.blockZ);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts a MovingObjectPosition to Vector3
|
||||
*/
|
||||
public static Vector3 get(ChunkCoordinates par1)
|
||||
{
|
||||
return new Vector3(par1.posX, par1.posY, par1.posZ);
|
||||
}
|
||||
|
||||
public int getBlockID(World world)
|
||||
public int getBlockID(IBlockAccess world)
|
||||
{
|
||||
return world.getBlockId(this.intX(), this.intY(), this.intZ());
|
||||
}
|
||||
|
||||
public int getBlockMetadata(World world)
|
||||
public int getBlockMetadata(IBlockAccess world)
|
||||
{
|
||||
return world.getBlockMetadata(this.intX(), this.intY(), this.intZ());
|
||||
}
|
||||
|
||||
public TileEntity getTileEntity(World world)
|
||||
public TileEntity getTileEntity(IBlockAccess world)
|
||||
{
|
||||
return world.getBlockTileEntity(this.intX(), this.intY(), this.intZ());
|
||||
}
|
||||
|
@ -146,7 +139,8 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
}
|
||||
|
||||
/**
|
||||
* Converts this Vector3 into a Vector2 by dropping the Y axis.
|
||||
* Converts this Vector3 into a Vector2 by
|
||||
* dropping the Y axis.
|
||||
*/
|
||||
public Vector2 toVector2()
|
||||
{
|
||||
|
@ -154,7 +148,8 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
}
|
||||
|
||||
/**
|
||||
* Converts this vector three into a Minecraft Vec3 object
|
||||
* Converts this vector three into a Minecraft
|
||||
* Vec3 object
|
||||
*/
|
||||
public Vec3 toVec3()
|
||||
{
|
||||
|
@ -162,15 +157,8 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
}
|
||||
|
||||
/**
|
||||
* Checks if a Vector3 point is located inside a region
|
||||
*/
|
||||
public static boolean isPointInRegion(Vector3 point, Vector3 minPoint, Vector3 maxPoint)
|
||||
{
|
||||
return (point.x > minPoint.x && point.x < maxPoint.x) && (point.y > minPoint.y && point.y < maxPoint.y) && (point.z > minPoint.z && point.z < maxPoint.z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares two vectors and see if they are equal. True if so.
|
||||
* Compares two vectors and see if they are
|
||||
* equal. True if so.
|
||||
*/
|
||||
public boolean isEqual(Vector3 vector3)
|
||||
{
|
||||
|
@ -228,6 +216,13 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
this.z += par1;
|
||||
}
|
||||
|
||||
public void subtract(Vector3 amount)
|
||||
{
|
||||
this.x -= amount.x;
|
||||
this.y -= amount.y;
|
||||
this.z -= amount.z;
|
||||
}
|
||||
|
||||
public static Vector3 multiply(Vector3 par1, Vector3 par2)
|
||||
{
|
||||
return new Vector3(par1.x * par2.x, par1.y * par2.y, par1.z * par2.z);
|
||||
|
@ -251,9 +246,11 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
* Saves this Vector3 to disk
|
||||
*
|
||||
* @param prefix
|
||||
* - The prefix of this save. Use some unique string.
|
||||
* - The prefix of this save. Use
|
||||
* some unique string.
|
||||
* @param par1NBTTagCompound
|
||||
* - The NBT compound object to save the data in
|
||||
* - The NBT compound object to
|
||||
* save the data in
|
||||
*/
|
||||
public void writeToNBT(String prefix, NBTTagCompound par1NBTTagCompound)
|
||||
{
|
||||
|
@ -274,20 +271,17 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
return new Vector3(Math.floor(this.x), Math.floor(this.y), Math.floor(this.z));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String output()
|
||||
{
|
||||
return "Vector3: " + this.x + "," + this.y + "," + this.z;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a position relative to another position's side
|
||||
* Gets a position relative to another
|
||||
* position's side
|
||||
*
|
||||
* @param position
|
||||
* - The position
|
||||
* @param side
|
||||
* - The side. 0-5
|
||||
* @return The position relative to the original position's side
|
||||
* @return The position relative to the
|
||||
* original position's side
|
||||
*/
|
||||
public void modifyPositionFromSide(ForgeDirection side)
|
||||
{
|
||||
|
@ -321,7 +315,8 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets a connector unit based on the given side.
|
||||
* Gets a connector unit based on the given
|
||||
* side.
|
||||
*/
|
||||
public static TileEntity getConnectorFromSide(World world, Vector3 position, ForgeDirection side)
|
||||
{
|
||||
|
@ -336,18 +331,25 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
}
|
||||
|
||||
/**
|
||||
* Finds the side of a block depending on it's facing direction from the
|
||||
* given side. The side numbers are compatible with the
|
||||
* function"getBlockTextureFromSideAndMetadata".
|
||||
* Finds the side of a block depending on it's
|
||||
* facing direction from the given side. The
|
||||
* side numbers are compatible with the
|
||||
* function
|
||||
* "getBlockTextureFromSideAndMetadata".
|
||||
*
|
||||
* Bottom: 0; Top: 1; Back: 2; Front: 3; Left: 4; Right: 5;
|
||||
* Bottom: 0; Top: 1; Back: 2; Front: 3; Left:
|
||||
* 4; Right: 5;
|
||||
*
|
||||
* @param front
|
||||
* - The direction in which this block is facing/front. Use a
|
||||
* number between 0 and 5. Default is 3.
|
||||
* - The direction in which this
|
||||
* block is facing/front. Use a
|
||||
* number between 0 and 5. Default
|
||||
* is 3.
|
||||
* @param side
|
||||
* - The side you are trying to find. A number between 0 and 5.
|
||||
* @return The side relative to the facing direction.
|
||||
* - The side you are trying to
|
||||
* find. A number between 0 and 5.
|
||||
* @return The side relative to the facing
|
||||
* direction.
|
||||
*/
|
||||
|
||||
public static ForgeDirection getOrientationFromSide(ForgeDirection front, ForgeDirection side)
|
||||
|
@ -445,4 +447,10 @@ public class Vector3 extends Vector2 implements Cloneable
|
|||
|
||||
return ForgeDirection.UNKNOWN;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "Vector3: " + this.x + "," + this.y + "," + this.z;
|
||||
}
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
/**
|
||||
* Applied to TileEntities that can connect to UE wires.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IConnector
|
||||
{
|
||||
/**
|
||||
* Can this tile entity visually connect to a wire on this specific side?
|
||||
*
|
||||
* @param side
|
||||
* - The side in which the connection is coming from.
|
||||
* @return - True if so.
|
||||
*/
|
||||
public boolean canConnect(ForgeDirection side);
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
/**
|
||||
* This class should be applied to all tile entities (mainly machines) that can
|
||||
* be disabled (by things like EMP, short circuit etc.).
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IDisableable
|
||||
{
|
||||
/**
|
||||
* This is called when the tile entity is to be disabled.
|
||||
*
|
||||
* @param duration
|
||||
* - The duration of the disable in ticks.
|
||||
*/
|
||||
public void onDisable(int duration);
|
||||
|
||||
/**
|
||||
* Called to see if this tile entity is disabled.
|
||||
*
|
||||
* @return True if the tile entity is disabled.
|
||||
*/
|
||||
public boolean isDisabled();
|
||||
}
|
|
@ -1,20 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
/**
|
||||
* Applied to tile entities that can produce electricity
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public interface IElectricityProducer extends IConnector, IDisableable, IVoltage
|
||||
{
|
||||
/**
|
||||
* Can this machine visually connect to a wire on this specific side?
|
||||
*
|
||||
* @param side
|
||||
* . 0-5 byte
|
||||
* @return - True if so.
|
||||
*/
|
||||
public boolean canConnect(ForgeDirection side);
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
/**
|
||||
* The IElectricityReceiver interface is an interface that must be applied to
|
||||
* all tile entities that can input or output electricity.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IElectricityReceiver extends IDisableable, IConnector, IVoltage
|
||||
{
|
||||
/**
|
||||
* Called every tick on this machine.
|
||||
*
|
||||
* @param amps
|
||||
* - Amount of amps this electric unit is receiving.
|
||||
* @param voltage
|
||||
* - The voltage of the electricity sent. If more than one packet
|
||||
* is being sent to you in this update, the highest voltage will
|
||||
* override.
|
||||
* @param side
|
||||
* - The side of the block in which the electricity is coming
|
||||
* from.
|
||||
*/
|
||||
public void onReceive(TileEntity sender, double amps, double voltage, ForgeDirection side);
|
||||
|
||||
/**
|
||||
* How many watts does this electrical unit need this tick? Recommended for
|
||||
* you to return the max electricity storage of this machine (if there is
|
||||
* one).
|
||||
*/
|
||||
public double wattRequest();
|
||||
|
||||
/**
|
||||
* Can this unit receive electricity from this specific side?
|
||||
*/
|
||||
public boolean canReceiveFromSide(ForgeDirection side);
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
/**
|
||||
* This interface is to be applied to all tile entities which stores energy
|
||||
* within them.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
public interface IJouleStorage
|
||||
{
|
||||
/**
|
||||
* Returns the amount of joules this unit has stored.
|
||||
*/
|
||||
public double getJoules(Object... data);
|
||||
|
||||
/**
|
||||
* Sets the amount of joules this unit has stored.
|
||||
*/
|
||||
public void setJoules(double wattHours, Object... data);
|
||||
|
||||
/**
|
||||
* Gets the maximum amount of joules this unit can store.
|
||||
*/
|
||||
public double getMaxJoules();
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
/**
|
||||
* This should be applied on tile entities that can provide redstone power
|
||||
*
|
||||
* @author Henry
|
||||
*
|
||||
*/
|
||||
public interface IRedstoneProvider
|
||||
{
|
||||
public boolean isPoweringTo(byte side);
|
||||
|
||||
public boolean isIndirectlyPoweringTo(byte side);
|
||||
}
|
|
@ -1,21 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
/**
|
||||
* OPTIONAL This interface should be applied onto all tile entities that needs
|
||||
* to receive redstone power. Look at TileEntityBatteryBox for reference.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IRedstoneReceptor
|
||||
{
|
||||
/**
|
||||
* Called when the block is powered on by redstone
|
||||
*/
|
||||
public void onPowerOn();
|
||||
|
||||
/**
|
||||
* Called when the block is powered off by redstone
|
||||
*/
|
||||
public void onPowerOff();
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
/**
|
||||
* This interface should be applied onto all tile entities that are
|
||||
* rotatable. This interface however is optional and you do not need it for your
|
||||
* add-on to function. It just makes things easier for you to code.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IRotatable
|
||||
{
|
||||
/**
|
||||
* Gets the facing direction of the tile entity. Always returns the front
|
||||
* side of the tile entity.
|
||||
*
|
||||
* @return The facing side from 0-5 The full list of which side the number
|
||||
* represents is in the UniversalElectricity class.
|
||||
*/
|
||||
public ForgeDirection getDirection();
|
||||
|
||||
/**
|
||||
* Sets the facing direction of the tile entity.
|
||||
*
|
||||
* @param facingDirection
|
||||
* - A direction from 0-5. The full list of which side the number
|
||||
* represents is in the UniversalElectricity class.
|
||||
*/
|
||||
public void setDirection(ForgeDirection facingDirection);
|
||||
}
|
|
@ -1,57 +0,0 @@
|
|||
package universalelectricity.implement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.src.DamageSource;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
|
||||
public class UEDamageSource extends DamageSource
|
||||
{
|
||||
public static final List<UEDamageSource> damageSources = new ArrayList<UEDamageSource>();
|
||||
|
||||
/**
|
||||
* Use this damage source for all types of electrical attacks.
|
||||
*/
|
||||
public static final UEDamageSource electrocution = (UEDamageSource) new UEDamageSource("electrocution", "%1$s got electrocuted!").setDamageBypassesArmor();
|
||||
|
||||
public String deathMessage;
|
||||
|
||||
public UEDamageSource(String damageType)
|
||||
{
|
||||
super(damageType);
|
||||
damageSources.add(this);
|
||||
}
|
||||
|
||||
public UEDamageSource(String damageType, String deathMessage)
|
||||
{
|
||||
this(damageType);
|
||||
this.setDeathMessage(deathMessage);
|
||||
}
|
||||
|
||||
public UEDamageSource setDeathMessage(String deathMessage)
|
||||
{
|
||||
this.deathMessage = deathMessage;
|
||||
return this;
|
||||
}
|
||||
|
||||
public DamageSource setDamageBypassesArmor()
|
||||
{
|
||||
return super.setDamageBypassesArmor();
|
||||
}
|
||||
|
||||
public DamageSource setDamageAllowedInCreativeMode()
|
||||
{
|
||||
return super.setDamageAllowedInCreativeMode();
|
||||
}
|
||||
|
||||
public DamageSource setFireDamage()
|
||||
{
|
||||
return super.setFireDamage();
|
||||
}
|
||||
|
||||
public void registerDeathMessage()
|
||||
{
|
||||
LanguageRegistry.instance().addStringLocalization("death." + this.damageType, this.deathMessage);
|
||||
}
|
||||
}
|
|
@ -1,55 +0,0 @@
|
|||
package universalelectricity.prefab;
|
||||
|
||||
import net.minecraft.src.BlockContainer;
|
||||
import net.minecraft.src.Material;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.implement.IConductor;
|
||||
|
||||
public abstract class BlockConductor extends BlockContainer
|
||||
{
|
||||
public BlockConductor(int id, Material material)
|
||||
{
|
||||
super(id, material);
|
||||
}
|
||||
|
||||
/**
|
||||
* Called whenever the block is added into the world. Args: world, x, y, z
|
||||
*/
|
||||
@Override
|
||||
public void onBlockAdded(World world, int x, int y, int z)
|
||||
{
|
||||
super.onBlockAdded(world, x, y, z);
|
||||
|
||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if(tileEntity != null)
|
||||
{
|
||||
if(tileEntity instanceof IConductor)
|
||||
{
|
||||
((IConductor)tileEntity).refreshConnectedBlocks();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Lets the block know when one of its neighbor changes. Doesn't know which
|
||||
* neighbor changed (coordinates passed are their own) Args: x, y, z,
|
||||
* neighbor blockID
|
||||
*/
|
||||
@Override
|
||||
public void onNeighborBlockChange(World world, int x, int y, int z, int blockID)
|
||||
{
|
||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||
|
||||
if(tileEntity != null)
|
||||
{
|
||||
if(tileEntity instanceof IConductor)
|
||||
{
|
||||
((IConductor)tileEntity).refreshConnectedBlocks();
|
||||
}
|
||||
}
|
||||
|
||||
world.markBlockNeedsUpdate(x, y, z);
|
||||
}
|
||||
}
|
|
@ -12,13 +12,15 @@ import net.minecraft.src.Material;
|
|||
import net.minecraft.src.NBTTagCompound;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.implement.IItemElectric;
|
||||
import universalelectricity.core.implement.IItemElectric;
|
||||
import buildcraft.api.tools.IToolWrench;
|
||||
|
||||
/**
|
||||
* A block you may extend from to create your machine blocks! You do not have to
|
||||
* extend from this block if you do not want to. It's optional but it comes with
|
||||
* some useful functions that will make coding easier for you.
|
||||
* A block you may extend from to create your
|
||||
* machine blocks! You do not have to extend from
|
||||
* this block if you do not want to. It's optional
|
||||
* but it comes with some useful functions that
|
||||
* will make coding easier for you.
|
||||
*/
|
||||
public abstract class BlockMachine extends BlockContainer
|
||||
{
|
||||
|
@ -42,7 +44,8 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the quantity of items to drop on block destruction.
|
||||
* Returns the quantity of items to drop on
|
||||
* block destruction.
|
||||
*/
|
||||
@Override
|
||||
public int quantityDropped(Random par1Random)
|
||||
|
@ -51,7 +54,8 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the ID of the items to drop on destruction.
|
||||
* Returns the ID of the items to drop on
|
||||
* destruction.
|
||||
*/
|
||||
@Override
|
||||
public int idDropped(int par1, Random par2Random, int par3)
|
||||
|
@ -60,10 +64,13 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* DO NOT OVERRIDE THIS FUNCTION! Called when the block is right clicked by
|
||||
* the player. This modified version detects electric items and wrench
|
||||
* actions on your machine block. Do not override this function. Use
|
||||
* machineActivated instead! (It does the same thing)
|
||||
* DO NOT OVERRIDE THIS FUNCTION! Called when
|
||||
* the block is right clicked by the player.
|
||||
* This modified version detects electric
|
||||
* items and wrench actions on your machine
|
||||
* block. Do not override this function. Use
|
||||
* machineActivated instead! (It does the same
|
||||
* thing)
|
||||
*/
|
||||
@Override
|
||||
public boolean onBlockActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
|
||||
|
@ -71,8 +78,9 @@ public abstract class BlockMachine extends BlockContainer
|
|||
int metadata = par1World.getBlockMetadata(x, y, z);
|
||||
|
||||
/**
|
||||
* Check if the player is holding a wrench or an electric item. If so,
|
||||
* do not open the GUI.
|
||||
* Check if the player is holding a wrench
|
||||
* or an electric item. If so, do not open
|
||||
* the GUI.
|
||||
*/
|
||||
if (par5EntityPlayer.inventory.getCurrentItem() != null)
|
||||
{
|
||||
|
@ -107,7 +115,8 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Called when the machine is right clicked by the player
|
||||
* Called when the machine is right clicked by
|
||||
* the player
|
||||
*
|
||||
* @return True if something happens
|
||||
*/
|
||||
|
@ -117,8 +126,8 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Called when the machine is right clicked by the player while sneaking
|
||||
* (shift clicking)
|
||||
* Called when the machine is right clicked by
|
||||
* the player while sneaking (shift clicking)
|
||||
*
|
||||
* @return True if something happens
|
||||
*/
|
||||
|
@ -128,7 +137,8 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Called when a player uses an electric item on the machine
|
||||
* Called when a player uses an electric item
|
||||
* on the machine
|
||||
*
|
||||
* @return True if some happens
|
||||
*/
|
||||
|
@ -138,7 +148,8 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Called when a player uses a wrench on the machine
|
||||
* Called when a player uses a wrench on the
|
||||
* machine
|
||||
*
|
||||
* @return True if some happens
|
||||
*/
|
||||
|
@ -148,7 +159,8 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Called when a player uses a wrench on the machine while sneaking
|
||||
* Called when a player uses a wrench on the
|
||||
* machine while sneaking
|
||||
*
|
||||
* @return True if some happens
|
||||
*/
|
||||
|
@ -158,8 +170,10 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the TileEntity used by this block. You should use the metadata
|
||||
* sensitive version of this to get the maximum optimization!
|
||||
* Returns the TileEntity used by this block.
|
||||
* You should use the metadata sensitive
|
||||
* version of this to get the maximum
|
||||
* optimization!
|
||||
*/
|
||||
@Override
|
||||
public TileEntity createNewTileEntity(World var1)
|
||||
|
@ -168,8 +182,9 @@ public abstract class BlockMachine extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Override this if you don't need it. This will eject all items out of this
|
||||
* machine if it has an inventory
|
||||
* Override this if you don't need it. This
|
||||
* will eject all items out of this machine if
|
||||
* it has an inventory
|
||||
*/
|
||||
@Override
|
||||
public void breakBlock(World par1World, int x, int y, int z, int par5, int par6)
|
||||
|
|
|
@ -1,207 +0,0 @@
|
|||
package universalelectricity.prefab;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.src.CreativeTabs;
|
||||
import net.minecraft.src.Entity;
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.Item;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
import net.minecraft.src.NBTTagFloat;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.electricity.ElectricInfo;
|
||||
import universalelectricity.electricity.ElectricInfo.ElectricUnit;
|
||||
import universalelectricity.implement.IItemElectric;
|
||||
|
||||
/**
|
||||
* Extend from this class if your item requires electricity or to be charged.
|
||||
* Optionally, you can implement IItemElectric instead.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public abstract class ItemElectric extends Item implements IItemElectric
|
||||
{
|
||||
public ItemElectric(int id, CreativeTabs tabs)
|
||||
{
|
||||
super(id);
|
||||
this.setMaxStackSize(1);
|
||||
this.setMaxDamage((int) this.getMaxJoules());
|
||||
this.setNoRepair();
|
||||
this.setCreativeTab(tabs);
|
||||
}
|
||||
|
||||
public ItemElectric(int id)
|
||||
{
|
||||
this(id, CreativeTabs.tabTools);
|
||||
}
|
||||
|
||||
/**
|
||||
* Allows items to add custom lines of information to the mouseover
|
||||
* description. If you want to add more information to your item, you can
|
||||
* super.addInformation() to keep the electiricty info in the item info bar.
|
||||
*/
|
||||
@Override
|
||||
public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4)
|
||||
{
|
||||
String color = "";
|
||||
double joules = this.getJoules(par1ItemStack);
|
||||
|
||||
if (joules <= this.getMaxJoules() / 3)
|
||||
{
|
||||
color = "\u00a74";
|
||||
}
|
||||
else if (joules > this.getMaxJoules() * 2 / 3)
|
||||
{
|
||||
color = "\u00a72";
|
||||
}
|
||||
else
|
||||
{
|
||||
color = "\u00a76";
|
||||
}
|
||||
|
||||
par3List.add(color + ElectricInfo.getDisplay(joules, ElectricUnit.JOULES) + " - " + Math.round((joules / this.getMaxJoules()) * 100) + "%");
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure you super this method!
|
||||
*/
|
||||
@Override
|
||||
public void onUpdate(ItemStack par1ItemStack, World par2World, Entity par3Entity, int par4, boolean par5)
|
||||
{
|
||||
// Makes sure the damage is set correctly for this electric item!
|
||||
ItemElectric item = ((ItemElectric) par1ItemStack.getItem());
|
||||
item.setJoules(item.getJoules(par1ItemStack), par1ItemStack);
|
||||
}
|
||||
|
||||
/**
|
||||
* Makes sure the item is uncharged when it is crafted and not charged.
|
||||
* Change this if you do not want this to happen!
|
||||
*/
|
||||
@Override
|
||||
public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
|
||||
{
|
||||
par1ItemStack = this.getUncharged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public double onReceive(double amps, double voltage, ItemStack itemStack)
|
||||
{
|
||||
double rejectedElectricity = Math.max((this.getJoules(itemStack) + ElectricInfo.getJoules(amps, voltage, 1)) - this.getMaxJoules(), 0);
|
||||
this.setJoules(this.getJoules(itemStack) + ElectricInfo.getJoules(amps, voltage, 1) - rejectedElectricity, itemStack);
|
||||
return rejectedElectricity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public double onUse(double joulesNeeded, ItemStack itemStack)
|
||||
{
|
||||
double electricityToUse = Math.min(this.getJoules(itemStack), joulesNeeded);
|
||||
this.setJoules(this.getJoules(itemStack) - electricityToUse, itemStack);
|
||||
return electricityToUse;
|
||||
}
|
||||
|
||||
public boolean canReceiveElectricity()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public boolean canProduceElectricity()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function sets the electriicty. Do not directly call this function.
|
||||
* Try to use onReceiveElectricity or onUseElectricity instead.
|
||||
*
|
||||
* @param wattHours
|
||||
* - The amount of electricity in joules
|
||||
*/
|
||||
@Override
|
||||
public void setJoules(double wattHours, Object... data)
|
||||
{
|
||||
if (data[0] instanceof ItemStack)
|
||||
{
|
||||
ItemStack itemStack = (ItemStack) data[0];
|
||||
|
||||
// Saves the frequency in the itemstack
|
||||
if (itemStack.stackTagCompound == null)
|
||||
{
|
||||
itemStack.setTagCompound(new NBTTagCompound());
|
||||
}
|
||||
|
||||
double electricityStored = Math.max(Math.min(wattHours, this.getMaxJoules()), 0);
|
||||
itemStack.stackTagCompound.setDouble("electricity", electricityStored);
|
||||
itemStack.setItemDamage((int) (getMaxJoules() - electricityStored));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is called to get the electricity stored in this item
|
||||
*
|
||||
* @return - The amount of electricity stored in watts
|
||||
*/
|
||||
@Override
|
||||
public double getJoules(Object... data)
|
||||
{
|
||||
if (data[0] instanceof ItemStack)
|
||||
{
|
||||
ItemStack itemStack = (ItemStack) data[0];
|
||||
|
||||
if (itemStack.stackTagCompound == null) { return 0; }
|
||||
double electricityStored = 0;
|
||||
if (itemStack.stackTagCompound.getTag("electricity") instanceof NBTTagFloat)
|
||||
{
|
||||
electricityStored = itemStack.stackTagCompound.getFloat("electricity");
|
||||
}
|
||||
else
|
||||
{
|
||||
electricityStored = itemStack.stackTagCompound.getDouble("electricity");
|
||||
}
|
||||
itemStack.setItemDamage((int) (getMaxJoules() - electricityStored));
|
||||
return electricityStored;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns an uncharged version of the electric item. Use this if you want
|
||||
* the crafting recipe to use a charged version of the electric item instead
|
||||
* of an empty version of the electric item
|
||||
*
|
||||
* @return The ItemStack of a fully charged electric item
|
||||
*/
|
||||
public ItemStack getUncharged()
|
||||
{
|
||||
ItemStack chargedItem = new ItemStack(this);
|
||||
chargedItem.setItemDamage((int) this.getMaxJoules());
|
||||
return chargedItem;
|
||||
}
|
||||
|
||||
public static ItemStack getUncharged(ItemStack itemStack)
|
||||
{
|
||||
if(itemStack.getItem() instanceof IItemElectric)
|
||||
{
|
||||
ItemStack chargedItem = itemStack.copy();
|
||||
chargedItem.setItemDamage((int)((IItemElectric)itemStack.getItem()).getMaxJoules());
|
||||
return chargedItem;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
|
||||
{
|
||||
// Add an uncharged version of the electric item
|
||||
ItemStack unchargedItem = new ItemStack(this, 1);
|
||||
unchargedItem.setItemDamage((int) this.getMaxJoules());
|
||||
par3List.add(unchargedItem);
|
||||
// Add an electric item to the creative list that is fully charged
|
||||
ItemStack chargedItem = new ItemStack(this, 1);
|
||||
this.setJoules(((IItemElectric) chargedItem.getItem()).getMaxJoules(), chargedItem);
|
||||
par3List.add(chargedItem);
|
||||
}
|
||||
}
|
|
@ -1,96 +0,0 @@
|
|||
package universalelectricity.prefab;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.src.CraftingManager;
|
||||
import net.minecraft.src.IRecipe;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraftforge.common.Configuration;
|
||||
import universalelectricity.core.UEConfig;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
/**
|
||||
* This class is used to replace recipes that are already added in the existing
|
||||
* recipe pool for crafting and smelting. All recipe functions take account of
|
||||
* the Forge Ore Dictionary. It also includes some recipe helper functions to
|
||||
* shorten some of your function calls.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public class RecipeHelper
|
||||
{
|
||||
public static List<IRecipe> getRecipesByOutput(ItemStack output)
|
||||
{
|
||||
List<IRecipe> list = new ArrayList<IRecipe>();
|
||||
|
||||
for (Object obj : CraftingManager.getInstance().getRecipeList())
|
||||
{
|
||||
if (obj instanceof IRecipe)
|
||||
{
|
||||
if (((IRecipe) obj).getRecipeOutput() == output)
|
||||
{
|
||||
list.add((IRecipe)obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public static boolean replaceRecipe(IRecipe recipe, IRecipe newRecipe)
|
||||
{
|
||||
for (Object obj : CraftingManager.getInstance().getRecipeList())
|
||||
{
|
||||
if (obj instanceof IRecipe)
|
||||
{
|
||||
if (((IRecipe) obj).equals(recipe) || obj == recipe)
|
||||
{
|
||||
CraftingManager.getInstance().getRecipeList().remove(obj);
|
||||
CraftingManager.getInstance().getRecipeList().add(newRecipe);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean removeRecipe(IRecipe recipe)
|
||||
{
|
||||
for (Object obj : CraftingManager.getInstance().getRecipeList())
|
||||
{
|
||||
if (obj instanceof IRecipe)
|
||||
{
|
||||
if (((IRecipe) obj).equals(recipe) || obj == recipe)
|
||||
{
|
||||
CraftingManager.getInstance().getRecipeList().remove(obj);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use this function if you want to check if the recipe is allowed in the
|
||||
* configuration file.
|
||||
*/
|
||||
public static void addRecipe(IRecipe recipe, String name, Configuration config, boolean defaultBoolean)
|
||||
{
|
||||
if (config != null)
|
||||
{
|
||||
if (UEConfig.getConfigData(config, "Allow " + name + " Crafting", defaultBoolean))
|
||||
{
|
||||
GameRegistry.addRecipe(recipe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void addRecipe(IRecipe recipe, Configuration config, boolean defaultBoolean)
|
||||
{
|
||||
addRecipe(recipe, recipe.getRecipeOutput().getItemName(), config, defaultBoolean);
|
||||
}
|
||||
}
|
|
@ -1,31 +0,0 @@
|
|||
package universalelectricity.prefab;
|
||||
|
||||
import net.minecraft.src.IInventory;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.Slot;
|
||||
import universalelectricity.implement.IItemElectric;
|
||||
|
||||
/**
|
||||
* This slot should be used by any container that needs the slot for an electric
|
||||
* items only.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public class SlotElectricItem extends Slot
|
||||
{
|
||||
public SlotElectricItem(IInventory par2IInventory, int par3, int par4, int par5)
|
||||
{
|
||||
super(par2IInventory, par3, par4, par5);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the stack is a valid item for this slot. Always true beside for
|
||||
* the armor slots.
|
||||
*/
|
||||
@Override
|
||||
public boolean isItemValid(ItemStack par1ItemStack)
|
||||
{
|
||||
return par1ItemStack.getItem() instanceof IItemElectric;
|
||||
}
|
||||
}
|
34
src/common/universalelectricity/prefab/UETab.java
Normal file
34
src/common/universalelectricity/prefab/UETab.java
Normal file
|
@ -0,0 +1,34 @@
|
|||
package universalelectricity.prefab;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.CreativeTabs;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
|
||||
public class UETab extends CreativeTabs
|
||||
{
|
||||
public static final UETab INSTANCE = new UETab("UniversalElectricity");
|
||||
private static ItemStack itemStack;
|
||||
|
||||
public UETab(String par2Str)
|
||||
{
|
||||
super(CreativeTabs.getNextID(), par2Str);
|
||||
LanguageRegistry.instance().addStringLocalization("itemGroup.UniversalElectricity", "en_US", "Universal Electricity");
|
||||
}
|
||||
|
||||
public static void setItemStack(ItemStack newItemStack)
|
||||
{
|
||||
if (itemStack == null)
|
||||
{
|
||||
itemStack = newItemStack;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getIconItemStack()
|
||||
{
|
||||
if (itemStack == null) { return new ItemStack(Block.blocksList[this.getTabIconItemIndex()]); }
|
||||
|
||||
return itemStack;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,17 @@
|
|||
package universalelectricity.prefab.implement;
|
||||
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
/**
|
||||
* This should be applied on tile entities that
|
||||
* can provide redstone power
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IRedstoneProvider
|
||||
{
|
||||
public boolean isPoweringTo(ForgeDirection side);
|
||||
|
||||
public boolean isIndirectlyPoweringTo(ForgeDirection side);
|
||||
}
|
|
@ -0,0 +1,24 @@
|
|||
package universalelectricity.prefab.implement;
|
||||
|
||||
/**
|
||||
* This interface should be applied onto all tile
|
||||
* entities that needs to receive redstone power.
|
||||
* Look at TileEntityBatteryBox for reference.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public interface IRedstoneReceptor
|
||||
{
|
||||
/**
|
||||
* Called when the block is powered on by
|
||||
* redstone
|
||||
*/
|
||||
public void onPowerOn();
|
||||
|
||||
/**
|
||||
* Called when the block is powered off by
|
||||
* redstone
|
||||
*/
|
||||
public void onPowerOff();
|
||||
}
|
|
@ -0,0 +1,41 @@
|
|||
package universalelectricity.prefab.implement;
|
||||
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
|
||||
/**
|
||||
* This interface should be applied onto all tile
|
||||
* entities that are rotatable. This interface
|
||||
* however is optional and you do not need it for
|
||||
* your add-on to function. It just makes things
|
||||
* easier for you to code.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
|
||||
public interface IRotatable
|
||||
{
|
||||
/**
|
||||
* Gets the facing direction of the tile
|
||||
* entity. Always returns the front side of
|
||||
* the tile entity.
|
||||
*
|
||||
* @return The facing side from 0-5 The full
|
||||
* list of which side the number
|
||||
* represents is in the
|
||||
* UniversalElectricity class.
|
||||
*/
|
||||
public ForgeDirection getDirection();
|
||||
|
||||
/**
|
||||
* Sets the facing direction of the tile
|
||||
* entity.
|
||||
*
|
||||
* @param facingDirection
|
||||
* - A direction from 0-5. The full
|
||||
* list of which side the number
|
||||
* represents is in the
|
||||
* UniversalElectricity class.
|
||||
*/
|
||||
public void setDirection(ForgeDirection facingDirection);
|
||||
}
|
|
@ -1,7 +1,8 @@
|
|||
package universalelectricity.implement;
|
||||
package universalelectricity.prefab.implement;
|
||||
|
||||
/**
|
||||
* This interface should be applied to all things that has a tier/level.
|
||||
* This interface should be applied to all things
|
||||
* that has a tier/level.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
|
@ -10,7 +10,7 @@ import net.minecraft.src.MovingObjectPosition;
|
|||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
public class BlockMulti extends BlockContainer
|
||||
{
|
||||
|
@ -36,10 +36,12 @@ public class BlockMulti extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Called when the block is right clicked by the player. This modified
|
||||
* version detects electric items and wrench actions on your machine block.
|
||||
* Do not override this function. Use machineActivated instead! (It does the
|
||||
* same thing)
|
||||
* Called when the block is right clicked by
|
||||
* the player. This modified version detects
|
||||
* electric items and wrench actions on your
|
||||
* machine block. Do not override this
|
||||
* function. Use machineActivated instead! (It
|
||||
* does the same thing)
|
||||
*/
|
||||
@Override
|
||||
public boolean onBlockActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9)
|
||||
|
@ -49,7 +51,8 @@ public class BlockMulti extends BlockContainer
|
|||
}
|
||||
|
||||
/**
|
||||
* Returns the quantity of items to drop on block destruction.
|
||||
* Returns the quantity of items to drop on
|
||||
* block destruction.
|
||||
*/
|
||||
@Override
|
||||
public int quantityDropped(Random par1Random)
|
||||
|
|
|
@ -3,7 +3,8 @@ package universalelectricity.prefab.multiblock;
|
|||
import net.minecraft.src.EntityPlayer;
|
||||
|
||||
/**
|
||||
* A general interface to be implemented by anything that needs it.
|
||||
* A general interface to be implemented by
|
||||
* anything that needs it.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
package universalelectricity.prefab.multiblock;
|
||||
|
||||
import net.minecraft.src.TileEntity;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
/**
|
||||
* Interface to be applied to tile entity blocks that occupies more than one
|
||||
* block space. Useful for large machines.
|
||||
* Interface to be applied to tile entity blocks
|
||||
* that occupies more than one block space. Useful
|
||||
* for large machines.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
|
@ -16,15 +17,18 @@ public interface IMultiBlock extends IBlockActivate
|
|||
* Called when this multiblock is created
|
||||
*
|
||||
* @param placedPosition
|
||||
* - The position the block was placed at
|
||||
* - The position the block was
|
||||
* placed at
|
||||
*/
|
||||
public void onCreate(Vector3 placedPosition);
|
||||
|
||||
/**
|
||||
* Called when one of the multiblocks of this block is destroyed
|
||||
* Called when one of the multiblocks of this
|
||||
* block is destroyed
|
||||
*
|
||||
* @param callingBlock
|
||||
* - The tile entity who called the onDestroy function
|
||||
* - The tile entity who called the
|
||||
* onDestroy function
|
||||
*/
|
||||
public void onDestroy(TileEntity callingBlock);
|
||||
}
|
||||
|
|
|
@ -7,14 +7,15 @@ import net.minecraft.src.Packet;
|
|||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
import universalelectricity.prefab.network.IPacketReceiver;
|
||||
import universalelectricity.prefab.network.PacketManager;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
|
||||
/**
|
||||
* This is a multiblock to be used for blocks that are bigger than one block.
|
||||
* This is a multiblock to be used for blocks that
|
||||
* are bigger than one block.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
|
@ -96,9 +97,11 @@ public class TileEntityMulti extends TileEntity implements IPacketReceiver
|
|||
}
|
||||
|
||||
/**
|
||||
* Determines if this TileEntity requires update calls.
|
||||
* Determines if this TileEntity requires
|
||||
* update calls.
|
||||
*
|
||||
* @return True if you want updateEntity() to be called, false if not
|
||||
* @return True if you want updateEntity() to
|
||||
* be called, false if not
|
||||
*/
|
||||
public boolean canUpdate()
|
||||
{
|
||||
|
|
|
@ -5,8 +5,9 @@ import universalelectricity.prefab.network.ConnectionHandler.ConnectionType;
|
|||
public interface ISimpleConnectionHandler
|
||||
{
|
||||
/**
|
||||
* Called when a player logs in. Use this to reset some tile entities
|
||||
* variables if you need to.
|
||||
* Called when a player logs in. Use this to
|
||||
* reset some tile entities variables if you
|
||||
* need to.
|
||||
*
|
||||
* @param player
|
||||
*/
|
||||
|
|
|
@ -10,7 +10,7 @@ import net.minecraft.src.Packet;
|
|||
import net.minecraft.src.Packet250CustomPayload;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
||||
import com.google.common.io.ByteStreams;
|
||||
|
@ -21,15 +21,20 @@ import cpw.mods.fml.common.network.PacketDispatcher;
|
|||
import cpw.mods.fml.common.network.Player;
|
||||
|
||||
/**
|
||||
* This class is used for sending and receiving packets between the server and
|
||||
* the client. You can directly use this by registering this packet manager with
|
||||
* NetworkMod. Example:
|
||||
* This class is used for sending and receiving
|
||||
* packets between the server and the client. You
|
||||
* can directly use this by registering this
|
||||
* packet manager with NetworkMod. Example:
|
||||
*
|
||||
* @NetworkMod(channels = { "BasicComponents" }, clientSideRequired = true,
|
||||
* serverSideRequired = false, packetHandler =
|
||||
* @NetworkMod(channels = { "BasicComponents" },
|
||||
* clientSideRequired = true,
|
||||
* serverSideRequired =
|
||||
* false, packetHandler =
|
||||
* PacketManager.class)
|
||||
*
|
||||
* Check out {@link #BasicComponents} for better reference.
|
||||
* Check out
|
||||
* {@link #BasicComponents}
|
||||
* for better reference.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
|
@ -46,6 +51,7 @@ public class PacketManager implements IPacketHandler, IPacketReceiver
|
|||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("resource")
|
||||
public static Packet getPacketWithID(String channelName, int id, Object... sendData)
|
||||
{
|
||||
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||
|
@ -83,6 +89,7 @@ public class PacketManager implements IPacketHandler, IPacketReceiver
|
|||
*
|
||||
* @return
|
||||
*/
|
||||
@SuppressWarnings("resource")
|
||||
public static Packet getPacket(String channelName, TileEntity sender, Object... sendData)
|
||||
{
|
||||
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
|
||||
|
@ -114,9 +121,10 @@ public class PacketManager implements IPacketHandler, IPacketReceiver
|
|||
}
|
||||
|
||||
/**
|
||||
* Sends packets to clients around a specific coordinate. A wrapper using
|
||||
* Vector3. See {@PacketDispatcher} for detailed
|
||||
* information.
|
||||
* Sends packets to clients around a specific
|
||||
* coordinate. A wrapper using Vector3. See
|
||||
* {@PacketDispatcher} for
|
||||
* detailed information.
|
||||
*/
|
||||
public static void sendPacketToClients(Packet packet, World worldObj, Vector3 position, double range)
|
||||
{
|
||||
|
@ -132,7 +140,8 @@ public class PacketManager implements IPacketHandler, IPacketReceiver
|
|||
}
|
||||
|
||||
/**
|
||||
* Sends a packet to all the clients on this server.
|
||||
* Sends a packet to all the clients on this
|
||||
* server.
|
||||
*/
|
||||
public static void sendPacketToClients(Packet packet, World worldObj)
|
||||
{
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
package universalelectricity.prefab.ore;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.IChunkProvider;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.World;
|
||||
import net.minecraftforge.common.MinecraftForge;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
import universalelectricity.core.UEConfig;
|
||||
import universalelectricity.core.UniversalElectricity;
|
||||
|
||||
/**
|
||||
* This class is used for storing ore generation data. If you are too lazy to
|
||||
* generate your own ores, you can do
|
||||
* {@link #OreGenerator.ORES_TO_GENERATE.add()} to add your ore to the list of
|
||||
* ores to generate.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public abstract class OreGenBase
|
||||
{
|
||||
public String name;
|
||||
|
||||
public String oreDictionaryName;
|
||||
|
||||
public boolean shouldGenerate;
|
||||
|
||||
public int blockIndexTexture;
|
||||
|
||||
public ItemStack oreStack;
|
||||
|
||||
public int oreID;
|
||||
|
||||
public int oreMeta;
|
||||
|
||||
/**
|
||||
* What harvest level does this machine need to be acquired?
|
||||
*/
|
||||
public int harvestLevel;
|
||||
|
||||
/**
|
||||
* The predefined tool classes are "pickaxe", "shovel", "axe". You can add
|
||||
* others for custom tools.
|
||||
*/
|
||||
public String harvestTool;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* - The name of the ore for display
|
||||
* @param textureFile
|
||||
* - The 16x16 png texture of your ore to override
|
||||
* @param minGenerateLevel
|
||||
* - The highest generation level of your ore
|
||||
* @param maxGenerateLevel
|
||||
* - The lowest generation level of your ore
|
||||
* @param amountPerChunk
|
||||
* - The amount of ores to generate per chunk
|
||||
* @param amountPerBranch
|
||||
* - The amount of ores to generate in a clutter. E.g coal
|
||||
* generates with a lot of other coal next to it. How much do you
|
||||
* want?
|
||||
*/
|
||||
public OreGenBase(String name, String oreDiectionaryName, ItemStack stack, String harvestTool, int harvestLevel)
|
||||
{
|
||||
this.name = name;
|
||||
this.shouldGenerate = false;
|
||||
this.harvestTool = harvestTool;
|
||||
this.harvestLevel = harvestLevel;
|
||||
this.oreDictionaryName = oreDiectionaryName;
|
||||
this.oreStack = stack;
|
||||
this.oreID = stack.itemID;
|
||||
this.oreMeta = stack.getItemDamage();
|
||||
|
||||
OreDictionary.registerOre(oreDictionaryName, stack);
|
||||
MinecraftForge.setBlockHarvestLevel(Block.blocksList[stack.itemID], stack.getItemDamage(), harvestTool, harvestLevel);
|
||||
}
|
||||
|
||||
public OreGenBase enable()
|
||||
{
|
||||
this.shouldGenerate = shouldGenerateOre(name);
|
||||
return this;
|
||||
}
|
||||
|
||||
// You may inherit from this class and change this function if you want a
|
||||
// custom texture render for your ore.
|
||||
public int getBlockTextureFromSide(int side)
|
||||
{
|
||||
return this.blockIndexTexture;
|
||||
}
|
||||
|
||||
// Checks the config file and see if Universal Electricity should generate
|
||||
// this ore
|
||||
private static boolean shouldGenerateOre(String oreName)
|
||||
{
|
||||
return UEConfig.getConfigData(UniversalElectricity.CONFIGURATION, "Generate " + oreName, true);
|
||||
}
|
||||
|
||||
public abstract void generate(World world, Random random, int varX, int varZ);
|
||||
|
||||
public abstract boolean isOreGeneratedInWorld(World world, IChunkProvider chunkGenerator);
|
||||
}
|
|
@ -1,134 +0,0 @@
|
|||
package universalelectricity.prefab.ore;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.src.ChunkProviderEnd;
|
||||
import net.minecraft.src.ChunkProviderGenerate;
|
||||
import net.minecraft.src.ChunkProviderHell;
|
||||
import net.minecraft.src.IChunkProvider;
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.MathHelper;
|
||||
import net.minecraft.src.World;
|
||||
|
||||
/**
|
||||
* This class is used for storing ore generation data. If you are too lazy to
|
||||
* generate your own ores, you can do
|
||||
* {@link #OreGenerator.ORES_TO_GENERATE.add()} to add your ore to the list of
|
||||
* ores to generate.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*/
|
||||
public class OreGenReplace extends OreGenBase
|
||||
{
|
||||
|
||||
public int minGenerateLevel;
|
||||
public int maxGenerateLevel;
|
||||
public int amountPerChunk;
|
||||
public int amountPerBranch;
|
||||
public int replaceID;
|
||||
|
||||
public boolean generateSurface;
|
||||
public boolean generateNether;
|
||||
public boolean generateEnd;
|
||||
|
||||
/**
|
||||
* @param name
|
||||
* - The name of the ore for display
|
||||
* @param textureFile
|
||||
* - The 16x16 png texture of your ore to override
|
||||
* @param minGenerateLevel
|
||||
* - The highest generation level of your ore
|
||||
* @param maxGenerateLevel
|
||||
* - The lowest generation level of your ore
|
||||
* @param amountPerChunk
|
||||
* - The amount of ores to generate per chunk
|
||||
* @param amountPerBranch
|
||||
* - The amount of ores to generate in a clutter. E.g coal
|
||||
* generates with a lot of other coal next to it. How much do you
|
||||
* want?
|
||||
*/
|
||||
public OreGenReplace(String name, String oreDiectionaryName, ItemStack stack, int replaceID, int minGenerateLevel, int maxGenerateLevel, int amountPerChunk, int amountPerBranch, String harvestTool, int harvestLevel)
|
||||
{
|
||||
super(name, oreDiectionaryName, stack, harvestTool, harvestLevel);
|
||||
this.minGenerateLevel = minGenerateLevel;
|
||||
this.maxGenerateLevel = maxGenerateLevel;
|
||||
this.amountPerChunk = amountPerChunk;
|
||||
this.amountPerBranch = amountPerBranch;
|
||||
this.replaceID = replaceID;
|
||||
}
|
||||
|
||||
public void generate(World world, Random random, int varX, int varZ)
|
||||
{
|
||||
|
||||
for (int i = 0; i < this.amountPerChunk; i++)
|
||||
{
|
||||
int x = varX + random.nextInt(16);
|
||||
int z = varZ + random.nextInt(16);
|
||||
int y = random.nextInt(this.maxGenerateLevel - this.minGenerateLevel) + this.minGenerateLevel;
|
||||
generateReplace(world, random, x, y, z);
|
||||
}
|
||||
}
|
||||
|
||||
public boolean generateReplace(World par1World, Random par2Random, int par3, int par4, int par5)
|
||||
{
|
||||
float var6 = par2Random.nextFloat() * (float) Math.PI;
|
||||
double var7 = (double) ((float) (par3 + 8) + MathHelper.sin(var6) * (float) this.amountPerBranch / 8.0F);
|
||||
double var9 = (double) ((float) (par3 + 8) - MathHelper.sin(var6) * (float) this.amountPerBranch / 8.0F);
|
||||
double var11 = (double) ((float) (par5 + 8) + MathHelper.cos(var6) * (float) this.amountPerBranch / 8.0F);
|
||||
double var13 = (double) ((float) (par5 + 8) - MathHelper.cos(var6) * (float) this.amountPerBranch / 8.0F);
|
||||
double var15 = (double) (par4 + par2Random.nextInt(3) - 2);
|
||||
double var17 = (double) (par4 + par2Random.nextInt(3) - 2);
|
||||
|
||||
for (int var19 = 0; var19 <= this.amountPerBranch; ++var19)
|
||||
{
|
||||
double var20 = var7 + (var9 - var7) * (double) var19 / (double) this.amountPerBranch;
|
||||
double var22 = var15 + (var17 - var15) * (double) var19 / (double) this.amountPerBranch;
|
||||
double var24 = var11 + (var13 - var11) * (double) var19 / (double) this.amountPerBranch;
|
||||
double var26 = par2Random.nextDouble() * (double) this.amountPerBranch / 16.0D;
|
||||
double var28 = (double) (MathHelper.sin((float) var19 * (float) Math.PI / (float) this.amountPerBranch) + 1.0F) * var26 + 1.0D;
|
||||
double var30 = (double) (MathHelper.sin((float) var19 * (float) Math.PI / (float) this.amountPerBranch) + 1.0F) * var26 + 1.0D;
|
||||
int var32 = MathHelper.floor_double(var20 - var28 / 2.0D);
|
||||
int var33 = MathHelper.floor_double(var22 - var30 / 2.0D);
|
||||
int var34 = MathHelper.floor_double(var24 - var28 / 2.0D);
|
||||
int var35 = MathHelper.floor_double(var20 + var28 / 2.0D);
|
||||
int var36 = MathHelper.floor_double(var22 + var30 / 2.0D);
|
||||
int var37 = MathHelper.floor_double(var24 + var28 / 2.0D);
|
||||
|
||||
for (int var38 = var32; var38 <= var35; ++var38)
|
||||
{
|
||||
double var39 = ((double) var38 + 0.5D - var20) / (var28 / 2.0D);
|
||||
|
||||
if (var39 * var39 < 1.0D)
|
||||
{
|
||||
for (int var41 = var33; var41 <= var36; ++var41)
|
||||
{
|
||||
double var42 = ((double) var41 + 0.5D - var22) / (var30 / 2.0D);
|
||||
|
||||
if (var39 * var39 + var42 * var42 < 1.0D)
|
||||
{
|
||||
for (int var44 = var34; var44 <= var37; ++var44)
|
||||
{
|
||||
double var45 = ((double) var44 + 0.5D - var24) / (var28 / 2.0D);
|
||||
|
||||
int block = par1World.getBlockId(var38, var41, var44);
|
||||
if (var39 * var39 + var42 * var42 + var45 * var45 < 1.0D && (this.replaceID == 0 || block == this.replaceID))
|
||||
{
|
||||
par1World.setBlockAndMetadata(var38, var41, var44, this.oreID, this.oreMeta);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOreGeneratedInWorld(World world, IChunkProvider chunkGenerator)
|
||||
{
|
||||
return ((this.generateSurface && chunkGenerator instanceof ChunkProviderGenerate) || (this.generateNether && chunkGenerator instanceof ChunkProviderHell) || (this.generateEnd && chunkGenerator instanceof ChunkProviderEnd));
|
||||
}
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
package universalelectricity.prefab.ore;
|
||||
|
||||
import net.minecraft.src.ItemStack;
|
||||
|
||||
public class OreGenReplaceStone extends OreGenReplace
|
||||
{
|
||||
public OreGenReplaceStone(String name, String oreDiectionaryName, ItemStack stack, int replaceID, int minGenerateLevel, int maxGenerateLevel, int amountPerChunk, int amountPerBranch, String harvestTool, int harvestLevel)
|
||||
{
|
||||
super(name, oreDiectionaryName, stack, 1, minGenerateLevel, maxGenerateLevel, amountPerChunk, amountPerBranch, harvestTool, harvestLevel);
|
||||
this.generateSurface = true;
|
||||
}
|
||||
|
||||
// A simplified version of the constructor
|
||||
public OreGenReplaceStone(String name, String oreDiectionaryName, ItemStack stack, int replaceID, int maxGenerateLevel, int amountPerChunk, int amountPerBranch)
|
||||
{
|
||||
this(name, oreDiectionaryName, stack, 0, replaceID, maxGenerateLevel, amountPerChunk, amountPerBranch, "pickaxe", 1);
|
||||
}
|
||||
}
|
|
@ -1,75 +0,0 @@
|
|||
package universalelectricity.prefab.ore;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import net.minecraft.src.IChunkProvider;
|
||||
import net.minecraft.src.World;
|
||||
import cpw.mods.fml.common.IWorldGenerator;
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
public class OreGenerator implements IWorldGenerator
|
||||
{
|
||||
public static boolean isInitiated = false;
|
||||
|
||||
/**
|
||||
* Add your ore data to this list of ores for it to automatically generate!
|
||||
* No hassle indeed!
|
||||
*/
|
||||
private static final List<OreGenBase> ORES_TO_GENERATE = new ArrayList<OreGenBase>();
|
||||
|
||||
/**
|
||||
* Adds an ore to the ore generate list. Do this in pre-init.
|
||||
*/
|
||||
public static void addOre(OreGenBase data)
|
||||
{
|
||||
if (!isInitiated)
|
||||
{
|
||||
GameRegistry.registerWorldGenerator(new OreGenerator());
|
||||
}
|
||||
|
||||
ORES_TO_GENERATE.add(data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks to see if this ore
|
||||
*
|
||||
* @param oreName
|
||||
* @return
|
||||
*/
|
||||
public static boolean oreExists(String oreName)
|
||||
{
|
||||
for (OreGenBase ore : ORES_TO_GENERATE)
|
||||
{
|
||||
if (ore.oreDictionaryName == oreName) { return true; }
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Removes an ore to the ore generate list. Do this in init.
|
||||
*/
|
||||
public static void removeOre(OreGenBase data)
|
||||
{
|
||||
ORES_TO_GENERATE.remove(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generate(Random rand, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
|
||||
{
|
||||
chunkX = chunkX << 4;
|
||||
chunkZ = chunkZ << 4;
|
||||
|
||||
// Checks to make sure this is the normal world
|
||||
for (OreGenBase oreData : ORES_TO_GENERATE)
|
||||
{
|
||||
if (oreData.shouldGenerate && oreData.isOreGeneratedInWorld(world, chunkGenerator))
|
||||
{
|
||||
oreData.generate(world, rand, chunkX, chunkZ);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
package universalelectricity.prefab.potion;
|
||||
|
||||
import net.minecraft.src.Potion;
|
||||
import cpw.mods.fml.common.registry.LanguageRegistry;
|
||||
|
||||
public abstract class CustomPotion extends Potion
|
||||
{
|
||||
/**
|
||||
* Creates a new type of potion
|
||||
*
|
||||
* @param id
|
||||
* - The ID of this potion. Make it greater than 20.
|
||||
* @param isBadEffect
|
||||
* - Is this potion a good potion or a bad one?
|
||||
* @param color
|
||||
* - The color of this potion.
|
||||
* @param name
|
||||
* - The name of this potion.
|
||||
*/
|
||||
public CustomPotion(int id, boolean isBadEffect, int color, String name)
|
||||
{
|
||||
super(id, isBadEffect, color);
|
||||
this.setPotionName("potion." + name);
|
||||
LanguageRegistry.instance().addStringLocalization(this.getName(), name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Potion setIconIndex(int par1, int par2)
|
||||
{
|
||||
super.setIconIndex(par1, par2);
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* You must register all your potion effects during mod initialization!
|
||||
*/
|
||||
public void register()
|
||||
{
|
||||
Potion.potionTypes[this.getId()] = this;
|
||||
}
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
package universalelectricity.prefab.potion;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.src.ItemStack;
|
||||
import net.minecraft.src.Potion;
|
||||
import net.minecraft.src.PotionEffect;
|
||||
|
||||
public class CustomPotionEffect extends PotionEffect
|
||||
{
|
||||
public CustomPotionEffect(int potionID, int duration, int amplifier)
|
||||
{
|
||||
super(potionID, duration, amplifier);
|
||||
}
|
||||
|
||||
public CustomPotionEffect(Potion potion, int duration, int amplifier)
|
||||
{
|
||||
this(potion.getId(), duration, amplifier);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates a potion effect with custom curable items.
|
||||
*
|
||||
* @param curativeItems
|
||||
* - ItemStacks that can cure this potion effect
|
||||
*/
|
||||
public CustomPotionEffect(int potionID, int duration, int amplifier, List<ItemStack> curativeItems)
|
||||
{
|
||||
super(potionID, duration, amplifier);
|
||||
|
||||
if (curativeItems == null)
|
||||
{
|
||||
this.setCurativeItems(new ArrayList<ItemStack>());
|
||||
}
|
||||
else
|
||||
{
|
||||
this.setCurativeItems(curativeItems);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,10 +1,11 @@
|
|||
package universalelectricity.prefab;
|
||||
package universalelectricity.prefab.tile;
|
||||
|
||||
import net.minecraft.src.Block;
|
||||
import net.minecraft.src.TileEntity;
|
||||
|
||||
/**
|
||||
* A TileEntity with some pre-added functionalities.
|
||||
* A TileEntity with some pre-added
|
||||
* functionalities.
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
|
@ -1,4 +1,4 @@
|
|||
package universalelectricity.prefab;
|
||||
package universalelectricity.prefab.tile;
|
||||
|
||||
import net.minecraft.src.EntityPlayer;
|
||||
import net.minecraft.src.INetworkManager;
|
||||
|
@ -6,11 +6,11 @@ import net.minecraft.src.Packet250CustomPayload;
|
|||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.core.Vector3;
|
||||
import universalelectricity.electricity.ElectricityManager;
|
||||
import universalelectricity.electricity.ElectricityNetwork;
|
||||
import universalelectricity.implement.IConductor;
|
||||
import universalelectricity.implement.IConnector;
|
||||
import universalelectricity.core.electricity.ElectricityManager;
|
||||
import universalelectricity.core.electricity.ElectricityNetwork;
|
||||
import universalelectricity.core.implement.IConductor;
|
||||
import universalelectricity.core.implement.IConnector;
|
||||
import universalelectricity.core.vector.Vector3;
|
||||
import universalelectricity.prefab.network.IPacketReceiver;
|
||||
|
||||
import com.google.common.io.ByteArrayDataInput;
|
|
@ -1,10 +1,11 @@
|
|||
package universalelectricity.prefab;
|
||||
package universalelectricity.prefab.tile;
|
||||
|
||||
import universalelectricity.implement.IDisableable;
|
||||
import universalelectricity.core.implement.IDisableable;
|
||||
|
||||
/**
|
||||
* An easier way to implement the methods from IElectricityDisableable with
|
||||
* default values set.
|
||||
* An easier way to implement the methods from
|
||||
* IElectricityDisableable with default values
|
||||
* set.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
|
@ -26,7 +27,8 @@ public abstract class TileEntityDisableable extends TileEntityAdvanced implement
|
|||
}
|
||||
|
||||
/**
|
||||
* Called every tick while this tile entity is disabled.
|
||||
* Called every tick while this tile entity is
|
||||
* disabled.
|
||||
*/
|
||||
protected void whileDisable()
|
||||
{
|
|
@ -1,11 +1,11 @@
|
|||
package universalelectricity.prefab;
|
||||
package universalelectricity.prefab.tile;
|
||||
|
||||
import net.minecraftforge.common.ForgeDirection;
|
||||
import universalelectricity.implement.IElectricityReceiver;
|
||||
import universalelectricity.core.implement.IElectricityReceiver;
|
||||
|
||||
/**
|
||||
* An easier way to implement the methods from IElectricityReceiver with default
|
||||
* values set.
|
||||
* An easier way to implement the methods from
|
||||
* IElectricityReceiver with default values set.
|
||||
*
|
||||
* @author Calclavia
|
||||
*/
|
|
@ -4,10 +4,10 @@ import net.minecraft.src.EntityPlayer;
|
|||
import net.minecraft.src.TileEntity;
|
||||
import net.minecraft.src.World;
|
||||
import net.minecraftforge.client.MinecraftForgeClient;
|
||||
import assemblyline.belts.TileEntityConveyorBelt;
|
||||
import assemblyline.gui.GuiSorter;
|
||||
import assemblyline.machines.TileEntityManipulator;
|
||||
import assemblyline.machines.TileEntityRejector;
|
||||
import assemblyline.machine.TileEntityManipulator;
|
||||
import assemblyline.machine.TileEntityRejector;
|
||||
import assemblyline.machine.belt.TileEntityConveyorBelt;
|
||||
import assemblyline.render.RenderConveyorBelt;
|
||||
import assemblyline.render.RenderHelper;
|
||||
import assemblyline.render.RenderManipulator;
|
||||
|
|
|
@ -9,8 +9,8 @@ import org.lwjgl.input.Keyboard;
|
|||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import assemblyline.AssemblyLine;
|
||||
import assemblyline.machines.ContainerSorter;
|
||||
import assemblyline.machines.TileEntityRejector;
|
||||
import assemblyline.machine.ContainerSorter;
|
||||
import assemblyline.machine.TileEntityRejector;
|
||||
|
||||
public class GuiSorter extends GuiContainer
|
||||
{
|
||||
|
|
|
@ -6,7 +6,7 @@ import net.minecraft.src.TileEntitySpecialRenderer;
|
|||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import assemblyline.AssemblyLine;
|
||||
import assemblyline.belts.TileEntityConveyorBelt;
|
||||
import assemblyline.machine.belt.TileEntityConveyorBelt;
|
||||
import assemblyline.model.ModelConveyorBelt;
|
||||
|
||||
public class RenderConveyorBelt extends TileEntitySpecialRenderer
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue