parent
e7731f3fd7
commit
cfcb935305
|
@ -4,15 +4,46 @@ import java.util.EnumSet;
|
||||||
|
|
||||||
import appeng.block.AEBaseTileBlock;
|
import appeng.block.AEBaseTileBlock;
|
||||||
import appeng.core.features.AEFeature;
|
import appeng.core.features.AEFeature;
|
||||||
|
import appeng.core.sync.GuiBridge;
|
||||||
import appeng.tile.legacy.TilePowerRelay;
|
import appeng.tile.legacy.TilePowerRelay;
|
||||||
|
import appeng.util.Platform;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class BlockPowerRelay extends AEBaseTileBlock {
|
public class BlockPowerRelay extends AEBaseTileBlock {
|
||||||
|
|
||||||
public BlockPowerRelay() {
|
public BlockPowerRelay() {
|
||||||
super(Material.iron);
|
super(Material.iron);
|
||||||
this.setTileEntity(TilePowerRelay.class);
|
this.setTileEntity(TilePowerRelay.class);
|
||||||
this.setFeature(EnumSet.of(AEFeature.Legacy));
|
this.setFeature(EnumSet.of(AEFeature.Legacy));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onBlockActivated(
|
||||||
|
World w,
|
||||||
|
int x,
|
||||||
|
int y,
|
||||||
|
int z,
|
||||||
|
EntityPlayer p,
|
||||||
|
int side,
|
||||||
|
// useless parameters
|
||||||
|
float alec1,
|
||||||
|
float alec2,
|
||||||
|
float alec3
|
||||||
|
) {
|
||||||
|
TileEntity tileEntity = w.getTileEntity(x, y, z);
|
||||||
|
if (tileEntity != null) {
|
||||||
|
Platform.openGUI(
|
||||||
|
p,
|
||||||
|
tileEntity,
|
||||||
|
ForgeDirection.getOrientation(side),
|
||||||
|
GuiBridge.GUI_POWER_RELAY
|
||||||
|
);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,40 @@
|
||||||
|
package appeng.client.gui.implementations;
|
||||||
|
|
||||||
|
import appeng.client.gui.AEBaseGui;
|
||||||
|
import appeng.container.implementations.ContainerPowerRelay;
|
||||||
|
import appeng.tile.legacy.TilePowerRelay;
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.util.StatCollector;
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
public class GuiPowerRelay extends AEBaseGui {
|
||||||
|
public GuiPowerRelay(InventoryPlayer inventoryPlayer, TilePowerRelay tileEntity) {
|
||||||
|
super(new ContainerPowerRelay(inventoryPlayer, tileEntity));
|
||||||
|
this.ySize = 197;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawFG(int offsetX, int offsetY, int mouseX, int mouseY) {
|
||||||
|
this.fontRendererObj.drawString(
|
||||||
|
StatCollector.translateToLocal("gui.appliedenergistics2.PowerRelay"),
|
||||||
|
8,
|
||||||
|
6,
|
||||||
|
4210752
|
||||||
|
);
|
||||||
|
this.fontRendererObj.drawString(
|
||||||
|
StatCollector.translateToLocal("container.inventory"),
|
||||||
|
8,
|
||||||
|
this.ySize - 96 + 3,
|
||||||
|
4210752
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void drawBG(int offsetX, int offsetY, int mouseX, int mouseY) {
|
||||||
|
this.bindTexture("guis/me_powerrelay.png");
|
||||||
|
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||||
|
int x = (this.width - this.xSize) / 2;
|
||||||
|
int y = (this.height - this.ySize) / 2;
|
||||||
|
this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,51 @@
|
||||||
|
package appeng.container.implementations;
|
||||||
|
|
||||||
|
import appeng.container.AEBaseContainer;
|
||||||
|
import appeng.container.slot.SlotOutput;
|
||||||
|
import appeng.container.slot.SlotPlayerHotBar;
|
||||||
|
import appeng.container.slot.SlotPlayerInv;
|
||||||
|
import appeng.container.slot.SlotRestrictedInput;
|
||||||
|
import appeng.container.slot.SlotRestrictedInput.PlacableItemType;
|
||||||
|
import appeng.tile.legacy.TilePowerRelay;
|
||||||
|
import appeng.util.Platform;
|
||||||
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
|
|
||||||
|
public class ContainerPowerRelay extends AEBaseContainer {
|
||||||
|
TilePowerRelay myte;
|
||||||
|
|
||||||
|
public ContainerPowerRelay(InventoryPlayer ip, TilePowerRelay te) {
|
||||||
|
super(ip, te);
|
||||||
|
this.myte = te;
|
||||||
|
this.addSlotToContainer(
|
||||||
|
new SlotRestrictedInput(PlacableItemType.POWERED_TOOL, te, 0, 52, 53, ip)
|
||||||
|
);
|
||||||
|
this.addSlotToContainer(new SlotOutput(te, 1, 113, 53, -1));
|
||||||
|
this.bindPlayerInventory(ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCraftMatrixChanged(IInventory par1iInventory) {
|
||||||
|
super.onCraftMatrixChanged(par1iInventory);
|
||||||
|
if (Platform.isServer()) {
|
||||||
|
this.myte.markDirty();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void bindPlayerInventory(InventoryPlayer inventoryPlayer) {
|
||||||
|
int i;
|
||||||
|
for (i = 0; i < 3; ++i) {
|
||||||
|
for (int j = 0; j < 9; ++j) {
|
||||||
|
this.addSlotToContainer(new SlotPlayerInv(
|
||||||
|
inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 115 + i * 18
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < 9; ++i) {
|
||||||
|
this.addSlotToContainer(
|
||||||
|
new SlotPlayerHotBar(inventoryPlayer, i, 8 + i * 18, 173)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -62,6 +62,7 @@ import appeng.tile.grindstone.TileGrinder;
|
||||||
import appeng.tile.legacy.TileAssembler;
|
import appeng.tile.legacy.TileAssembler;
|
||||||
import appeng.tile.legacy.TileLegacyController;
|
import appeng.tile.legacy.TileLegacyController;
|
||||||
import appeng.tile.legacy.TilePatternEncoder;
|
import appeng.tile.legacy.TilePatternEncoder;
|
||||||
|
import appeng.tile.legacy.TilePowerRelay;
|
||||||
import appeng.tile.misc.*;
|
import appeng.tile.misc.*;
|
||||||
import appeng.tile.networking.TileWireless;
|
import appeng.tile.networking.TileWireless;
|
||||||
import appeng.tile.qnb.TileQuantumBridge;
|
import appeng.tile.qnb.TileQuantumBridge;
|
||||||
|
@ -76,7 +77,6 @@ import cpw.mods.fml.common.network.IGuiHandler;
|
||||||
import cpw.mods.fml.relauncher.ReflectionHelper;
|
import cpw.mods.fml.relauncher.ReflectionHelper;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
@ -296,6 +296,13 @@ public enum GuiBridge implements IGuiHandler {
|
||||||
TileAssembler.class,
|
TileAssembler.class,
|
||||||
GuiHostType.WORLD,
|
GuiHostType.WORLD,
|
||||||
SecurityPermissions.BUILD
|
SecurityPermissions.BUILD
|
||||||
|
),
|
||||||
|
|
||||||
|
GUI_POWER_RELAY(
|
||||||
|
ContainerPowerRelay.class,
|
||||||
|
TilePowerRelay.class,
|
||||||
|
GuiHostType.WORLD,
|
||||||
|
SecurityPermissions.EXTRACT
|
||||||
);
|
);
|
||||||
|
|
||||||
private final Class tileClass;
|
private final Class tileClass;
|
||||||
|
|
|
@ -8,6 +8,8 @@ import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import appeng.api.config.Actionable;
|
import appeng.api.config.Actionable;
|
||||||
|
import appeng.api.config.PowerMultiplier;
|
||||||
|
import appeng.api.implementations.items.IAEItemPowerStorage;
|
||||||
import appeng.api.networking.GridFlags;
|
import appeng.api.networking.GridFlags;
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
import appeng.api.networking.energy.IEnergyGrid;
|
import appeng.api.networking.energy.IEnergyGrid;
|
||||||
|
@ -27,14 +29,18 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.common.util.ForgeDirection;
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable, IEnergyGridProvider {
|
public class TilePowerRelay
|
||||||
public static final IInventory NULL_INVENTORY = new AppEngInternalInventory(null, 0);
|
extends AEBasePoweredTile implements IGridProxyable, IEnergyGridProvider {
|
||||||
public static final int[] ACCESSIBLE_SLOTS_BY_SIDE = {};
|
public static final int[] ACCESSIBLE_SLOTS_BY_SIDE = {};
|
||||||
|
|
||||||
private Map<ForgeDirection, AENetworkProxy> proxies = new HashMap<>();
|
private Map<ForgeDirection, AENetworkProxy> proxies = new HashMap<>();
|
||||||
|
private AppEngInternalInventory inv = new AppEngInternalInventory(this, 2);
|
||||||
|
|
||||||
public TilePowerRelay() {
|
public TilePowerRelay() {
|
||||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||||
AENetworkProxy proxy = new AENetworkProxy(this, "proxy" + dir.name().toLowerCase(), this.getItemFromTile(this), true);
|
AENetworkProxy proxy = new AENetworkProxy(
|
||||||
|
this, "proxy" + dir.name().toLowerCase(), this.getItemFromTile(this), true
|
||||||
|
);
|
||||||
proxy.setFlags(GridFlags.CANNOT_CARRY);
|
proxy.setFlags(GridFlags.CANNOT_CARRY);
|
||||||
if (dir == ForgeDirection.UNKNOWN) {
|
if (dir == ForgeDirection.UNKNOWN) {
|
||||||
proxy.setValidSides(EnumSet.noneOf(ForgeDirection.class));
|
proxy.setValidSides(EnumSet.noneOf(ForgeDirection.class));
|
||||||
|
@ -49,6 +55,39 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
|
|
||||||
@TileEvent(TileEventType.TICK)
|
@TileEvent(TileEventType.TICK)
|
||||||
public void onTick() {
|
public void onTick() {
|
||||||
|
ItemStack stack = this.inv.getStackInSlot(0);
|
||||||
|
if (stack != null && stack.getItem() instanceof IAEItemPowerStorage) {
|
||||||
|
if (this.getAECurrentPower() < 5.0) {
|
||||||
|
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||||
|
try {
|
||||||
|
this.setInternalCurrentPower(
|
||||||
|
this.getAECurrentPower()
|
||||||
|
+ this.getProxyForSide(dir).getEnergy().extractAEPower(
|
||||||
|
this.getAEMaxPower() - this.getAECurrentPower(),
|
||||||
|
Actionable.MODULATE,
|
||||||
|
PowerMultiplier.ONE
|
||||||
|
)
|
||||||
|
);
|
||||||
|
} catch (GridAccessException e) {
|
||||||
|
// :P
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
IAEItemPowerStorage iaeips = (IAEItemPowerStorage) stack.getItem();
|
||||||
|
|
||||||
|
if (this.inv.getStackInSlot(1) == null
|
||||||
|
&& iaeips.getAEMaxPower(stack) - iaeips.getAECurrentPower(stack)
|
||||||
|
< 0.001) {
|
||||||
|
this.inv.setInventorySlotContents(1, stack);
|
||||||
|
this.inv.setInventorySlotContents(0, null);
|
||||||
|
} else {
|
||||||
|
this.setInternalCurrentPower(
|
||||||
|
iaeips.injectAEPower(stack, this.getAECurrentPower())
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (this.getAECurrentPower() > 0.01) {
|
if (this.getAECurrentPower() > 0.01) {
|
||||||
this.onUpdatePower();
|
this.onUpdatePower();
|
||||||
}
|
}
|
||||||
|
@ -66,7 +105,8 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
// :P
|
// :P
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (demanding.isEmpty()) return;
|
if (demanding.isEmpty())
|
||||||
|
return;
|
||||||
final double split = this.getAECurrentPower() / demanding.size();
|
final double split = this.getAECurrentPower() / demanding.size();
|
||||||
double current = 0.0;
|
double current = 0.0;
|
||||||
for (ForgeDirection dir : demanding) {
|
for (ForgeDirection dir : demanding) {
|
||||||
|
@ -74,7 +114,8 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
try {
|
try {
|
||||||
IEnergyGrid eg = this.getProxyForSide(dir).getEnergy();
|
IEnergyGrid eg = this.getProxyForSide(dir).getEnergy();
|
||||||
double demand = eg.getEnergyDemand(leftover);
|
double demand = eg.getEnergyDemand(leftover);
|
||||||
leftover = eg.injectPower(Math.min(leftover, demand), Actionable.MODULATE);
|
leftover
|
||||||
|
= eg.injectPower(Math.min(leftover, demand), Actionable.MODULATE);
|
||||||
current += leftover;
|
current += leftover;
|
||||||
} catch (GridAccessException e) {
|
} catch (GridAccessException e) {
|
||||||
// :P
|
// :P
|
||||||
|
@ -85,27 +126,27 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
|
|
||||||
@TileEvent(TileEventType.WORLD_NBT_READ)
|
@TileEvent(TileEventType.WORLD_NBT_READ)
|
||||||
public void readFromNBT_PowerRelay(final NBTTagCompound data) {
|
public void readFromNBT_PowerRelay(final NBTTagCompound data) {
|
||||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||||
proxies.get(dir).readFromNBT(data);
|
proxies.get(dir).readFromNBT(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TileEvent(TileEventType.WORLD_NBT_WRITE)
|
@TileEvent(TileEventType.WORLD_NBT_WRITE)
|
||||||
public void writeToNBT_PowerRelay(final NBTTagCompound data) {
|
public void writeToNBT_PowerRelay(final NBTTagCompound data) {
|
||||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||||
proxies.get(dir).writeToNBT(data);
|
proxies.get(dir).writeToNBT(data);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IInventory getInternalInventory() {
|
public IInventory getInternalInventory() {
|
||||||
return NULL_INVENTORY;
|
return this.inv;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChangeInventory(IInventory inv, int slot, InvOperation mc, ItemStack removed, ItemStack added) {
|
public void onChangeInventory(
|
||||||
|
IInventory inv, int slot, InvOperation mc, ItemStack removed, ItemStack added
|
||||||
}
|
) {}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int[] getAccessibleSlotsBySide(ForgeDirection whichSide) {
|
public int[] getAccessibleSlotsBySide(ForgeDirection whichSide) {
|
||||||
|
@ -137,14 +178,12 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void gridChanged() {
|
public void gridChanged() {}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChunkUnload() {
|
public void onChunkUnload() {
|
||||||
super.onChunkUnload();
|
super.onChunkUnload();
|
||||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||||
proxies.get(dir).onChunkUnload();
|
proxies.get(dir).onChunkUnload();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,7 +191,7 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
@Override
|
@Override
|
||||||
public void onReady() {
|
public void onReady() {
|
||||||
super.onReady();
|
super.onReady();
|
||||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||||
proxies.get(dir).onReady();
|
proxies.get(dir).onReady();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -160,7 +199,7 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
@Override
|
@Override
|
||||||
public void invalidate() {
|
public void invalidate() {
|
||||||
super.invalidate();
|
super.invalidate();
|
||||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||||
proxies.get(dir).invalidate();
|
proxies.get(dir).invalidate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -168,7 +207,7 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
@Override
|
@Override
|
||||||
public void validate() {
|
public void validate() {
|
||||||
super.validate();
|
super.validate();
|
||||||
for(ForgeDirection dir : ForgeDirection.values()) {
|
for (ForgeDirection dir : ForgeDirection.values()) {
|
||||||
proxies.get(dir).validate();
|
proxies.get(dir).validate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -176,7 +215,7 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
@Override
|
@Override
|
||||||
public double extractAEPower(double amt, Actionable mode, Set<IEnergyGrid> seen) {
|
public double extractAEPower(double amt, Actionable mode, Set<IEnergyGrid> seen) {
|
||||||
double acquiredPower = 0;
|
double acquiredPower = 0;
|
||||||
for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
|
||||||
try {
|
try {
|
||||||
final IEnergyGrid eg = this.getProxyForSide(dir).getEnergy();
|
final IEnergyGrid eg = this.getProxyForSide(dir).getEnergy();
|
||||||
acquiredPower += eg.extractAEPower(amt - acquiredPower, mode, seen);
|
acquiredPower += eg.extractAEPower(amt - acquiredPower, mode, seen);
|
||||||
|
@ -196,5 +235,4 @@ public class TilePowerRelay extends AEBasePoweredTile implements IGridProxyable,
|
||||||
public double getEnergyDemand(double amt, Set<IEnergyGrid> seen) {
|
public double getEnergyDemand(double amt, Set<IEnergyGrid> seen) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,7 @@ gui.appliedenergistics2.PatternEncoder.encode=Encode
|
||||||
gui.appliedenergistics2.PatternEncoder=Pattern Encoder
|
gui.appliedenergistics2.PatternEncoder=Pattern Encoder
|
||||||
gui.appliedenergistics2.Assembler=ME Pattern Provider
|
gui.appliedenergistics2.Assembler=ME Pattern Provider
|
||||||
gui.appliedenergistics2.MAC=ME Molecular Assembler Chamber
|
gui.appliedenergistics2.MAC=ME Molecular Assembler Chamber
|
||||||
|
gui.appliedenergistics2.PowerRelay=ME Power Relay
|
||||||
|
|
||||||
# Stairs
|
# Stairs
|
||||||
tile.appliedenergistics2.ChiseledQuartzStairBlock.name=Chiseled Certus Quartz Stairs
|
tile.appliedenergistics2.ChiseledQuartzStairBlock.name=Chiseled Certus Quartz Stairs
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 2.9 KiB |
Loading…
Reference in New Issue