a mess of stuff
This commit is contained in:
parent
e8fbf3131f
commit
aecf41bfbc
14 changed files with 342 additions and 63 deletions
|
@ -4,9 +4,9 @@ import java.util.List;
|
|||
|
||||
/**
|
||||
* A simple way to store electrical data.
|
||||
*
|
||||
*
|
||||
* @author Calclavia
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class ElectricityPack implements Cloneable
|
||||
{
|
||||
|
@ -193,4 +193,6 @@ public class ElectricityPack implements Cloneable
|
|||
{
|
||||
return this.amperes == electricityPack.amperes && this.voltage == electricityPack.voltage;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 5.5 KiB |
76
src/dark/api/DataPack.java
Normal file
76
src/dark/api/DataPack.java
Normal file
|
@ -0,0 +1,76 @@
|
|||
package dark.api;
|
||||
|
||||
import universalelectricity.core.electricity.ElectricityPack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import dark.api.energy.EnergyPack;
|
||||
import dark.api.save.ISaveObj;
|
||||
import dark.api.save.NBTFileHelper;
|
||||
|
||||
/** Wrapper for data to be sent threw a network to a device
|
||||
*
|
||||
* @author DarkGuardsman */
|
||||
public class DataPack implements ISaveObj, Cloneable
|
||||
{
|
||||
private Object[] data;
|
||||
|
||||
public DataPack(Object... data)
|
||||
{
|
||||
this.data = data;
|
||||
}
|
||||
|
||||
public Object[] getData()
|
||||
{
|
||||
return this.data;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(NBTTagCompound nbt)
|
||||
{
|
||||
if (data != null)
|
||||
{
|
||||
nbt.setInteger("dataCnt", data.length);
|
||||
for (int i = 0; i < data.length; i++)
|
||||
{
|
||||
if (data[i] != null)
|
||||
{
|
||||
NBTFileHelper.saveObject(nbt, "data" + i, data[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(NBTTagCompound nbt)
|
||||
{
|
||||
if (nbt.hasKey("dataCnt"))
|
||||
{
|
||||
int dataLength = nbt.getInteger("dataCnt");
|
||||
data = new Object[dataLength];
|
||||
for (int i = 0; i < dataLength; i++)
|
||||
{
|
||||
if (nbt.hasKey("data" + i))
|
||||
{
|
||||
data[i] = NBTFileHelper.loadObject(nbt, "data" + i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public DataPack clone()
|
||||
{
|
||||
return new DataPack(this.data);
|
||||
}
|
||||
|
||||
public boolean isEqual(DataPack pack)
|
||||
{
|
||||
return this.data != null && pack.data != null && this.data.equals(pack.data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "DataPack [Obj:" + (this.data != null ? data.length : "none") + "]";
|
||||
}
|
||||
}
|
109
src/dark/api/energy/ElecPack.java
Normal file
109
src/dark/api/energy/ElecPack.java
Normal file
|
@ -0,0 +1,109 @@
|
|||
package dark.api.energy;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import universalelectricity.core.electricity.ElectricityPack;
|
||||
|
||||
/** Wrapper for storing information about electricity packets
|
||||
*
|
||||
* @author DarkGuardsman */
|
||||
public class ElecPack extends EnergyPack
|
||||
{
|
||||
protected float volts, amps;
|
||||
|
||||
public ElecPack(Object... data)
|
||||
{
|
||||
super("Electric", 0, data);
|
||||
}
|
||||
|
||||
public ElecPack(float amps, float volts, Object... data)
|
||||
{
|
||||
super("Electric", amps * volts, data);
|
||||
this.volts = volts;
|
||||
this.amps = amps;
|
||||
}
|
||||
|
||||
public ElecPack setVoltAmp(float volt, float amp)
|
||||
{
|
||||
this.volts = volt;
|
||||
this.amps = amp;
|
||||
this.energyStored = volts * amps;
|
||||
return this;
|
||||
}
|
||||
|
||||
public ElecPack setVoltWatt(float volt, float watt)
|
||||
{
|
||||
this.volts = volt;
|
||||
this.amps = watt / volt;
|
||||
this.energyStored = watt;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(NBTTagCompound nbt)
|
||||
{
|
||||
super.save(nbt);
|
||||
nbt.setFloat("volts", this.volts);
|
||||
nbt.setFloat("amps", this.amps);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(NBTTagCompound nbt)
|
||||
{
|
||||
super.load(nbt);
|
||||
this.volts = nbt.getFloat("volts");
|
||||
this.amps = nbt.getFloat("amps");
|
||||
}
|
||||
|
||||
public float getVolt()
|
||||
{
|
||||
return volts;
|
||||
}
|
||||
|
||||
public float solveVolt()
|
||||
{
|
||||
return energyStored / amps;
|
||||
}
|
||||
|
||||
public float getAmps()
|
||||
{
|
||||
return amps;
|
||||
}
|
||||
|
||||
public float solveAmps()
|
||||
{
|
||||
return energyStored / volts;
|
||||
}
|
||||
|
||||
public float getWatts()
|
||||
{
|
||||
return this.energyStored;
|
||||
}
|
||||
|
||||
public float solveWatts()
|
||||
{
|
||||
return amps * volts;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ElecPack clone()
|
||||
{
|
||||
return new ElecPack(0, 0, this.getData()).setVoltAmp(this.volts, this.amps);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "ElecPack [Amps:" + this.amps + " Volts:" + this.volts + "]";
|
||||
}
|
||||
|
||||
public boolean isEqual(ElecPack electricityPack)
|
||||
{
|
||||
return this.amps == electricityPack.amps && this.volts == electricityPack.volts;
|
||||
}
|
||||
|
||||
public boolean isEqual(ElectricityPack electricityPack)
|
||||
{
|
||||
return this.amps == electricityPack.amperes && this.volts == electricityPack.voltage;
|
||||
}
|
||||
|
||||
}
|
58
src/dark/api/energy/EnergyPack.java
Normal file
58
src/dark/api/energy/EnergyPack.java
Normal file
|
@ -0,0 +1,58 @@
|
|||
package dark.api.energy;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import dark.api.DataPack;
|
||||
|
||||
/** Container for energy data
|
||||
*
|
||||
* @author DarkGuardsman */
|
||||
public class EnergyPack extends DataPack
|
||||
{
|
||||
protected String energyType;
|
||||
protected float energyStored;
|
||||
|
||||
public EnergyPack(String type, float energySum, Object... data)
|
||||
{
|
||||
super(data);
|
||||
this.energyType = type;
|
||||
this.energyStored = energySum;
|
||||
}
|
||||
|
||||
public float getJoules()
|
||||
{
|
||||
return energyStored;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save(NBTTagCompound nbt)
|
||||
{
|
||||
super.save(nbt);
|
||||
nbt.setFloat("energy", this.energyStored);
|
||||
nbt.setString("energyType", this.energyType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void load(NBTTagCompound nbt)
|
||||
{
|
||||
super.load(nbt);
|
||||
this.energyStored = nbt.getFloat("energy");
|
||||
this.energyType = nbt.getString("energyType");
|
||||
}
|
||||
|
||||
@Override
|
||||
public EnergyPack clone()
|
||||
{
|
||||
return new EnergyPack(this.energyType, this.energyStored, this.getData());
|
||||
}
|
||||
|
||||
public boolean isEqual(EnergyPack pack)
|
||||
{
|
||||
return this.energyType.equalsIgnoreCase(pack.energyType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
return "EnergyPack [Joules:" + this.energyStored + "]";
|
||||
}
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
package dark.api.energy;
|
||||
|
||||
|
||||
/** Container for energy data
|
||||
*
|
||||
* @author DarkGuardsman */
|
||||
public class EnergyPacket
|
||||
{
|
||||
protected String energyType;
|
||||
protected float energyStored;
|
||||
protected Object[] data;
|
||||
|
||||
public EnergyPacket(String type, float energySum, Object... data)
|
||||
{
|
||||
this.energyType = type;
|
||||
this.energyStored = energySum;
|
||||
this.data = data;
|
||||
}
|
||||
}
|
|
@ -4,7 +4,7 @@ import net.minecraftforge.common.ForgeDirection;
|
|||
|
||||
public interface IEnergyConsumer extends IEnergyDevice
|
||||
{
|
||||
public float receiveEnergy(ForgeDirection from, EnergyPacket receive, boolean doReceive);
|
||||
public float receiveEnergy(ForgeDirection from, EnergyPack receive, boolean doReceive);
|
||||
|
||||
public EnergyPacket getRequest(ForgeDirection direction);
|
||||
public EnergyPack getRequest(ForgeDirection direction);
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import net.minecraftforge.common.ForgeDirection;
|
|||
|
||||
public interface IEnergyProvider extends IEnergyDevice
|
||||
{
|
||||
public EnergyPacket provideEnergy(ForgeDirection from, EnergyPacket request, boolean doProvide);
|
||||
public EnergyPack provideEnergy(ForgeDirection from, EnergyPack request, boolean doProvide);
|
||||
|
||||
public EnergyPacket getEnergyProduce(ForgeDirection direction);
|
||||
public EnergyPack getEnergyProduce(ForgeDirection direction);
|
||||
}
|
||||
|
|
12
src/dark/api/save/ISaveObj.java
Normal file
12
src/dark/api/save/ISaveObj.java
Normal file
|
@ -0,0 +1,12 @@
|
|||
package dark.api.save;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
public interface ISaveObj
|
||||
{
|
||||
/** Saves the object to NBT */
|
||||
public void save(NBTTagCompound nbt);
|
||||
|
||||
/** Load the object from NBT */
|
||||
public void load(NBTTagCompound nbt);
|
||||
}
|
|
@ -6,9 +6,9 @@ import net.minecraft.nbt.NBTTagCompound;
|
|||
|
||||
/** Used in combination with the save manager and other managers to say this object needs to be save
|
||||
* since its not connected with the world
|
||||
*
|
||||
*
|
||||
* @author DarkGuardsman */
|
||||
public interface IVirtualObject
|
||||
public interface IVirtualObject extends ISaveObj
|
||||
{
|
||||
/** File this is saved as, don't create anything here as the manager will do that for you */
|
||||
public File getSaveFile();
|
||||
|
@ -17,9 +17,5 @@ public interface IVirtualObject
|
|||
* loaded from and decide if it wants to use the location as its getSaveFile return */
|
||||
public void setSaveFile(File file);
|
||||
|
||||
/** Saves the object to NBT */
|
||||
public void save(NBTTagCompound nbt);
|
||||
|
||||
/** Load the object from NBT */
|
||||
public void load(NBTTagCompound nbt);
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ import cpw.mods.fml.client.FMLClientHandler;
|
|||
import dark.core.common.DarkMain;
|
||||
import dark.core.prefab.invgui.GuiBase;
|
||||
import dark.core.prefab.invgui.GuiButtonImage;
|
||||
import dark.core.prefab.invgui.GuiButtonImage.ButtonIcon;
|
||||
import dark.core.prefab.machine.TileEntityMachine;
|
||||
|
||||
/** To be used with all machine that have a gui to allow generic settings and feature all all devices
|
||||
|
@ -27,6 +28,7 @@ public class GuiMachineBase extends GuiBase
|
|||
protected EntityPlayer entityPlayer;
|
||||
protected Object mod;
|
||||
protected int guiID = -1, guiID2 = -1, guiID3 = -1;
|
||||
protected ButtonIcon guiIcon = ButtonIcon.CHEST, guiIcon2 = ButtonIcon.PERSON, guiIcon3 = ButtonIcon.BLANK;
|
||||
protected String invName = "Home", invName2 = "2", invName3 = "3";
|
||||
|
||||
public GuiMachineBase(Object mod, EntityPlayer player, TileEntityMachine tileEntity)
|
||||
|
@ -37,6 +39,7 @@ public class GuiMachineBase extends GuiBase
|
|||
this.mod = mod;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void initGui()
|
||||
{
|
||||
|
@ -45,14 +48,14 @@ public class GuiMachineBase extends GuiBase
|
|||
|
||||
// Inventory, Should be the Gui the machine opens to unless it has no inventory
|
||||
if (guiID != -1)
|
||||
this.buttonList.add(new GuiButtonImage(0, (this.width - this.guiSize.intX()) / 2 - 22, (this.height - this.guiSize.intY()) / 2 + 0, 3));
|
||||
this.buttonList.add(new GuiButtonImage(0, (this.width - this.guiSize.intX()) / 2 - 22, (this.height - this.guiSize.intY()) / 2 + 0, guiIcon));
|
||||
|
||||
// Machine settings
|
||||
if (guiID2 != -1)
|
||||
this.buttonList.add(new GuiButtonImage(1, (this.width - this.guiSize.intX()) / 2 - 22, (this.height - this.guiSize.intY()) / 2 + 22, 0));
|
||||
this.buttonList.add(new GuiButtonImage(1, (this.width - this.guiSize.intX()) / 2 - 22, (this.height - this.guiSize.intY()) / 2 + 22, guiIcon2));
|
||||
|
||||
if (guiID3 != -1)
|
||||
this.buttonList.add(new GuiButtonImage(2, (this.width - this.guiSize.intX()) / 2 - 22, (this.height - this.guiSize.intY()) / 2 + 44, 2));
|
||||
this.buttonList.add(new GuiButtonImage(2, (this.width - this.guiSize.intX()) / 2 - 22, (this.height - this.guiSize.intY()) / 2 + 44, guiIcon3));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ import cpw.mods.fml.client.FMLClientHandler;
|
|||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import dark.core.prefab.invgui.GuiButtonImage;
|
||||
import dark.core.prefab.invgui.GuiButtonImage.ButtonIcon;
|
||||
import dark.core.prefab.machine.TileEntityMachine;
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
|
@ -24,6 +25,7 @@ public abstract class GuiMachineContainer extends GuiContainer
|
|||
protected EntityPlayer entityPlayer;
|
||||
protected Object mod;
|
||||
protected int guiID = -1, guiID2 = -1, guiID3 = -1;
|
||||
protected ButtonIcon guiIcon = ButtonIcon.CHEST, guiIcon2 = ButtonIcon.PERSON, guiIcon3 = ButtonIcon.BLANK;
|
||||
protected String invName = "Home", invName2 = "2", invName3 = "3";
|
||||
|
||||
public GuiMachineContainer(Object mod, Container container, InventoryPlayer inventoryPlayer, TileEntityMachine tileEntity)
|
||||
|
@ -42,11 +44,11 @@ public abstract class GuiMachineContainer extends GuiContainer
|
|||
this.buttonList.clear();
|
||||
|
||||
if (guiID != -1)
|
||||
this.buttonList.add(new GuiButtonImage(0, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 0, 3));
|
||||
this.buttonList.add(new GuiButtonImage(0, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 0, guiIcon));
|
||||
if (guiID2 != -1)
|
||||
this.buttonList.add(new GuiButtonImage(1, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 22, 0));
|
||||
this.buttonList.add(new GuiButtonImage(1, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 22, guiIcon2));
|
||||
if (guiID3 != -1)
|
||||
this.buttonList.add(new GuiButtonImage(2, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 44, 2));
|
||||
this.buttonList.add(new GuiButtonImage(2, (this.width - this.xSize) / 2 - 22, (this.height - this.ySize) / 2 + 44, guiIcon3));
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -5,9 +5,29 @@ import dark.api.ColorCode;
|
|||
|
||||
public class TileEntityWire extends TileEntityUniversalConductor
|
||||
{
|
||||
protected int updateTick = 0;
|
||||
protected int updateTick = 1;
|
||||
protected ColorCode color = ColorCode.BLACK;
|
||||
|
||||
@Override
|
||||
public void updateEntity()
|
||||
{
|
||||
super.updateEntity();
|
||||
if (!worldObj.isRemote)
|
||||
{
|
||||
if (ticks % this.updateTick == 0)
|
||||
{
|
||||
this.updateTick = this.worldObj.rand.nextInt(5) * 40 + 20;
|
||||
this.refresh();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canUpdate()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getResistance()
|
||||
{
|
||||
|
|
|
@ -16,45 +16,33 @@ public class GuiButtonImage extends GuiButton
|
|||
{
|
||||
public static final ResourceLocation TEXTURE = new ResourceLocation(DarkMain.getInstance().DOMAIN, DarkMain.GUI_DIRECTORY + "gui_button.png");
|
||||
|
||||
private int type = 0;
|
||||
private ButtonIcon buttonIcon = ButtonIcon.BLANK;
|
||||
|
||||
public GuiButtonImage(int par1, int par2, int par3, int type)
|
||||
public GuiButtonImage(int buttonID, int xx, int yy, ButtonIcon icon)
|
||||
{
|
||||
super(par1, par2, par3, 20, 20, "");
|
||||
this.type = type;
|
||||
super(buttonID, xx, yy, 20, 20, "");
|
||||
this.buttonIcon = icon;
|
||||
this.width = icon.sizeX;
|
||||
this.height = icon.sizeY;
|
||||
}
|
||||
|
||||
/** Draws this button to the screen. */
|
||||
@Override
|
||||
public void drawButton(Minecraft par1Minecraft, int width, int hight)
|
||||
public void drawButton(Minecraft mc, int width, int hight)
|
||||
{
|
||||
if (this.drawButton)
|
||||
{
|
||||
FMLClientHandler.instance().getClient().renderEngine.bindTexture(TEXTURE);
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
boolean var4 = width >= this.xPosition && hight >= this.yPosition && width < this.xPosition + this.width && hight < this.yPosition + this.height;
|
||||
int var5 = 106;
|
||||
int var6 = 0;
|
||||
if (var4)
|
||||
boolean hovering = width >= this.xPosition && hight >= this.yPosition && width < this.xPosition + this.width && hight < this.yPosition + this.height;
|
||||
int vv = buttonIcon.vv;
|
||||
int uu = buttonIcon.uu;
|
||||
if (hovering)
|
||||
{
|
||||
var5 += this.height;
|
||||
}
|
||||
switch (type)
|
||||
{
|
||||
case 0:
|
||||
var5 += 40;
|
||||
break;
|
||||
case 1:
|
||||
var5 += 40;
|
||||
var6 += 20;
|
||||
break;
|
||||
case 2:
|
||||
var5 += 40;
|
||||
var6 += 40;
|
||||
break;
|
||||
vv += this.height;
|
||||
}
|
||||
|
||||
this.drawTexturedModalRect(this.xPosition, this.yPosition, var6, var5, this.width, this.height);
|
||||
this.drawTexturedModalRect(this.xPosition, this.yPosition, uu, vv, this.width, this.height);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -62,6 +50,38 @@ public class GuiButtonImage extends GuiButton
|
|||
public boolean isIntersect(int x, int y)
|
||||
{
|
||||
return x >= this.xPosition && y >= this.yPosition && x < this.xPosition + this.width && y < this.yPosition + this.height;
|
||||
}
|
||||
|
||||
public static enum ButtonIcon
|
||||
{
|
||||
PERSON(0, 0),
|
||||
ARROW_LEFT(30, 0),
|
||||
ARROW_RIGHT(20, 0),
|
||||
ARROW_DOWN(30, 20),
|
||||
ARROW_UP(20, 20),
|
||||
CHEST(60, 0),
|
||||
LOCKED(80, 0),
|
||||
UNLOCKED(100, 0),
|
||||
BLANK(120, 0),
|
||||
RED_ON(140, 0),
|
||||
RED_OFF(160, 0),
|
||||
FURNACE_OFF(180, 0),
|
||||
FURNACE_ON(200, 0);
|
||||
|
||||
int vv, uu;
|
||||
int sizeX = 20, sizeY = 20;
|
||||
|
||||
private ButtonIcon(int xx, int yy)
|
||||
{
|
||||
this.vv = xx;
|
||||
this.uu = yy;
|
||||
}
|
||||
|
||||
private ButtonIcon(int xx, int yy, int cx, int cy)
|
||||
{
|
||||
this(xx, yy);
|
||||
this.sizeX = cx;
|
||||
this.sizeY = cy;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue