Abstractions, cleaner code, better GUI oh my!
parent
36f93b073e
commit
bab40824b7
@ -0,0 +1,47 @@
|
||||
package net.brokenmoon.afloydwiremod.api;
|
||||
|
||||
import net.brokenmoon.afloydwiremod.WireMod;
|
||||
import net.brokenmoon.afloydwiremod.item.ToolWiring;
|
||||
import net.brokenmoon.afloydwiremod.mixinInterfaces.IEntityPlayer;
|
||||
import net.brokenmoon.afloydwiremod.tileentity.ChipTileEntity;
|
||||
import net.minecraft.src.*;
|
||||
|
||||
public abstract class AbstractWireTile extends BlockContainer {
|
||||
public AbstractWireTile(int i, Material material) {
|
||||
super(i, material);
|
||||
}
|
||||
@Override
|
||||
public boolean blockActivated(World world, int x, int y, int z, EntityPlayer player){
|
||||
AbstractWireTileEntity wireEntity = (AbstractWireTileEntity)world.getBlockTileEntity(x, y, z);
|
||||
if (!world.isMultiplayerAndNotHost) {
|
||||
if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().itemID == WireMod.ToolProgrammer.itemID && !wireEntity.initialized) {
|
||||
this.displayProgrammingGui(player, wireEntity);
|
||||
return true;
|
||||
} else if(player.inventory.getCurrentItem() != null && player.inventory.getCurrentItem().itemID == WireMod.ToolWiring.itemID && wireEntity.initialized) {
|
||||
ToolWiring tool = ((ToolWiring)player.inventory.getCurrentItem().getItem());
|
||||
this.displayWiringGui(player, wireEntity, tool, x, y, z);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public void displayWiringGui(EntityPlayer player, AbstractWireTileEntity chip, ToolWiring tool, int x, int y, int z) {
|
||||
if(player instanceof EntityPlayerMP) {
|
||||
//Multiplayer
|
||||
((IEntityPlayer)player).displayGuiWiring(tool, chip, x, y, z);
|
||||
return;
|
||||
}
|
||||
//Singleplayer
|
||||
((IEntityPlayer)player).displayGuiWiring(tool, chip, x, y, z);
|
||||
}
|
||||
public void displayProgrammingGui(EntityPlayer player, AbstractWireTileEntity chip){
|
||||
if(player instanceof EntityPlayerMP) {
|
||||
//Multiplayer
|
||||
((IEntityPlayer)player).displayGuiProgrammer(chip);
|
||||
return;
|
||||
}
|
||||
//Singleplayer
|
||||
((IEntityPlayer)player).displayGuiProgrammer(chip);
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
package net.brokenmoon.afloydwiremod.api;
|
||||
|
||||
import net.brokenmoon.afloydwiremod.gui.WiringButton;
|
||||
import net.minecraft.src.NBTTagCompound;
|
||||
import net.minecraft.src.NBTTagList;
|
||||
import net.minecraft.src.TileEntity;
|
||||
|
||||
public abstract class AbstractWireTileEntity extends TileEntity {
|
||||
public WiringButton[] inputs = null;
|
||||
public WiringButton[] outputs = null;
|
||||
public boolean initialized = false;
|
||||
|
||||
@Override
|
||||
public void updateEntity() {
|
||||
updateIO();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readFromNBT(NBTTagCompound nbttagcompound) {
|
||||
super.readFromNBT(nbttagcompound);
|
||||
this.initialized = nbttagcompound.getBoolean("init");
|
||||
if(nbttagcompound.getBoolean("inputExists")){
|
||||
this.inputs = new WiringButton[nbttagcompound.getInteger("inputLength")];
|
||||
NBTTagList nbttaglistInputs = nbttagcompound.getTagList("Inputs");
|
||||
for (int i = 0; i < nbttaglistInputs.tagCount(); ++i) {
|
||||
NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglistInputs.tagAt(i);
|
||||
this.inputs[i] = new WiringButton();
|
||||
this.inputs[i].readFromNBT(nbttagcompound1);
|
||||
}
|
||||
}
|
||||
if(nbttagcompound.getBoolean("outputExists")){
|
||||
this.outputs = new WiringButton[nbttagcompound.getInteger("outputLength")];
|
||||
NBTTagList nbttaglistOutputs = nbttagcompound.getTagList("Outputs");
|
||||
for (int i = 0; i < nbttaglistOutputs.tagCount(); ++i) {
|
||||
NBTTagCompound nbttagcompound1 = (NBTTagCompound)nbttaglistOutputs.tagAt(i);
|
||||
this.outputs[i] = new WiringButton();
|
||||
this.outputs[i].readFromNBT(nbttagcompound1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToNBT(NBTTagCompound nbttagcompound) {
|
||||
super.writeToNBT(nbttagcompound);
|
||||
nbttagcompound.setBoolean("init", this.initialized);
|
||||
if(inputs != null){
|
||||
nbttagcompound.setBoolean("inputExists", true);
|
||||
nbttagcompound.setInteger("inputLength", inputs.length);
|
||||
NBTTagList nbttaglistInputs = new NBTTagList();
|
||||
for(int i = 0; i < this.inputs.length; ++i){
|
||||
NBTTagCompound nbttagInput = new NBTTagCompound();
|
||||
this.inputs[i].writeToNBT(nbttagInput);
|
||||
nbttaglistInputs.setTag(nbttagInput);
|
||||
}
|
||||
nbttagcompound.setTag("Inputs", nbttaglistInputs);
|
||||
} else {
|
||||
nbttagcompound.setBoolean("inputExists", false);
|
||||
}
|
||||
if(outputs != null){
|
||||
nbttagcompound.setBoolean("outputExists", true);
|
||||
nbttagcompound.setInteger("outputLength", outputs.length);
|
||||
NBTTagList nbttaglistOutputs = new NBTTagList();
|
||||
for(int i = 0; i < this.outputs.length; ++i){
|
||||
NBTTagCompound nbttagOutput = new NBTTagCompound();
|
||||
this.outputs[i].writeToNBT(nbttagOutput);
|
||||
nbttaglistOutputs.setTag(nbttagOutput);
|
||||
}
|
||||
nbttagcompound.setTag("Outputs", nbttaglistOutputs);
|
||||
} else {
|
||||
nbttagcompound.setBoolean("outputExists", false);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateIO(){
|
||||
if(inputs != null) {
|
||||
for (int i = 0; i < inputs.length; ++i) {
|
||||
if (inputs[i].wire != null && inputs[i].wire.thisslot > -1) {
|
||||
WireConnection wire = inputs[i].wire;
|
||||
AbstractWireTileEntity otherChip = (AbstractWireTileEntity)this.worldObj.getBlockTileEntity(wire.x, wire.y, wire.z);
|
||||
if(otherChip == null) break;
|
||||
if(otherChip.outputs == null) break;
|
||||
if(inputs[i].floatvalue != otherChip.outputs[wire.thatslot].floatvalue) {
|
||||
inputs[i].floatvalue = otherChip.outputs[wire.thatslot].floatvalue;
|
||||
}
|
||||
if(!inputs[i].stringvalue.equals(otherChip.outputs[wire.thatslot].stringvalue)) {
|
||||
inputs[i].stringvalue = otherChip.outputs[wire.thatslot].stringvalue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package net.brokenmoon.afloydwiremod.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface IWireConnectable {
|
||||
}
|
@ -1,18 +0,0 @@
|
||||
package net.brokenmoon.afloydwiremod.mixin;
|
||||
|
||||
import net.brokenmoon.afloydwiremod.tileentity.ChipTileEntity;
|
||||
import net.brokenmoon.afloydwiremod.tileentity.RedstoneLinkTileEntity;
|
||||
import net.minecraft.src.TileEntity;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.Shadow;
|
||||
|
||||
@Mixin(value = TileEntity.class, remap = false)
|
||||
public class MixinTileEntity {
|
||||
@Shadow
|
||||
private static void addMapping(Class class1, String s) {}
|
||||
|
||||
static {
|
||||
addMapping(ChipTileEntity.class, "Chip");
|
||||
addMapping(RedstoneLinkTileEntity.class, "Link");
|
||||
}
|
||||
}
|
@ -1,10 +1,11 @@
|
||||
package net.brokenmoon.afloydwiremod.mixinInterfaces;
|
||||
|
||||
import net.brokenmoon.afloydwiremod.api.AbstractWireTileEntity;
|
||||
import net.brokenmoon.afloydwiremod.item.ToolWiring;
|
||||
import net.brokenmoon.afloydwiremod.tileentity.ChipTileEntity;
|
||||
|
||||
public interface IEntityPlayer {
|
||||
public void displayGuiProgrammer(ChipTileEntity chip);
|
||||
public void displayGuiProgrammer(AbstractWireTileEntity chip);
|
||||
|
||||
public void displayGuiWiring(ToolWiring tool, ChipTileEntity chip, int x, int y, int z);
|
||||
public void displayGuiWiring(ToolWiring tool, AbstractWireTileEntity chip, int x, int y, int z);
|
||||
}
|
||||
|
Loading…
Reference in New Issue