Satellite linker will no more give duplicate frequency. Some satellite code improvements, rearrangements

This commit is contained in:
Toshayo 2023-07-24 12:44:32 +02:00
parent 33bd961e0c
commit a22a68744c
No known key found for this signature in database
GPG Key ID: 7DC46644B561B1B4
6 changed files with 128 additions and 162 deletions

View File

@ -1,7 +1,8 @@
package com.hbm.inventory.container; package com.hbm.inventory.container;
import com.hbm.inventory.SlotTakeOnly;
import com.hbm.items.machine.ItemSatChip;
import com.hbm.tileentity.machine.TileEntityMachineSatDock; import com.hbm.tileentity.machine.TileEntityMachineSatDock;
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.Container; import net.minecraft.inventory.Container;
@ -11,41 +12,42 @@ import net.minecraft.item.ItemStack;
public class ContainerSatDock extends Container { public class ContainerSatDock extends Container {
private TileEntityMachineSatDock diFurnace; private final TileEntityMachineSatDock tileSatelliteDock;
public ContainerSatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tedf) { public ContainerSatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) {
tileSatelliteDock = tesd;
diFurnace = tedf;
//Storage //Storage
this.addSlotToContainer(new Slot(tedf, 0, 62, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 0, 62, 17));
this.addSlotToContainer(new Slot(tedf, 1, 80, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 1, 80, 17));
this.addSlotToContainer(new Slot(tedf, 2, 98, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 2, 98, 17));
this.addSlotToContainer(new Slot(tedf, 3, 116, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 3, 116, 17));
this.addSlotToContainer(new Slot(tedf, 4, 134, 17)); this.addSlotToContainer(new SlotTakeOnly(tesd, 4, 134, 17));
this.addSlotToContainer(new Slot(tedf, 5, 62, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 5, 62, 35));
this.addSlotToContainer(new Slot(tedf, 6, 80, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 6, 80, 35));
this.addSlotToContainer(new Slot(tedf, 7, 98, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 7, 98, 35));
this.addSlotToContainer(new Slot(tedf, 8, 116, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 8, 116, 35));
this.addSlotToContainer(new Slot(tedf, 9, 134, 35)); this.addSlotToContainer(new SlotTakeOnly(tesd, 9, 134, 35));
this.addSlotToContainer(new Slot(tedf, 10, 62, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 10, 62, 53));
this.addSlotToContainer(new Slot(tedf, 11, 80, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 11, 80, 53));
this.addSlotToContainer(new Slot(tedf, 12, 98, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 12, 98, 53));
this.addSlotToContainer(new Slot(tedf, 13, 116, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 13, 116, 53));
this.addSlotToContainer(new Slot(tedf, 14, 134, 53)); this.addSlotToContainer(new SlotTakeOnly(tesd, 14, 134, 53));
//Chip //Chip
this.addSlotToContainer(new Slot(tedf, 15, 26, 35)); this.addSlotToContainer(new Slot(tesd, 15, 26, 35) {
@Override
public boolean isItemValid(ItemStack stack) {
return stack.getItem() instanceof ItemSatChip;
}
});
for(int i = 0; i < 3; i++) for(int i = 0; i < 3; i++) {
{ for(int j = 0; j < 9; j++) {
for(int j = 0; j < 9; j++)
{
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
} }
} }
for(int i = 0; i < 9; i++) for(int i = 0; i < 9; i++) {
{
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142)); this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 142));
} }
} }
@ -56,33 +58,25 @@ public class ContainerSatDock extends Container {
} }
@Override @Override
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) public ItemStack transferStackInSlot(EntityPlayer player, int par2) {
{
ItemStack var3 = null; ItemStack var3 = null;
Slot var4 = (Slot) this.inventorySlots.get(par2); Slot var4 = (Slot) this.inventorySlots.get(par2);
if (var4 != null && var4.getHasStack()) if (var4 != null && var4.getHasStack()) {
{
ItemStack var5 = var4.getStack(); ItemStack var5 = var4.getStack();
var3 = var5.copy(); var3 = var5.copy();
if (par2 <= 15) { if (par2 <= 15) {
if (!this.mergeItemStack(var5, 16, this.inventorySlots.size(), true)) if (!this.mergeItemStack(var5, 16, this.inventorySlots.size(), true)) {
{
return null; return null;
} }
} } else if (!this.mergeItemStack(var5, 0, 15, false)) {
else if (!this.mergeItemStack(var5, 0, 15, false)) return null;
{
return null;
} }
if (var5.stackSize == 0) if (var5.stackSize == 0) {
{ var4.putStack(null);
var4.putStack((ItemStack) null); } else {
}
else
{
var4.onSlotChanged(); var4.onSlotChanged();
} }
} }
@ -92,6 +86,6 @@ public class ContainerSatDock extends Container {
@Override @Override
public boolean canInteractWith(EntityPlayer player) { public boolean canInteractWith(EntityPlayer player) {
return diFurnace.isUseableByPlayer(player); return tileSatelliteDock.isUseableByPlayer(player);
} }
} }

View File

@ -1,24 +1,22 @@
package com.hbm.inventory.gui; package com.hbm.inventory.gui;
import org.lwjgl.opengl.GL11;
import com.hbm.inventory.container.ContainerSatDock; import com.hbm.inventory.container.ContainerSatDock;
import com.hbm.lib.RefStrings; import com.hbm.lib.RefStrings;
import com.hbm.tileentity.machine.TileEntityMachineSatDock; import com.hbm.tileentity.machine.TileEntityMachineSatDock;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n; import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
public class GUISatDock extends GuiInfoContainer { public class GUISatDock extends GuiInfoContainer {
public static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_dock.png"); public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/gui_dock.png");
private TileEntityMachineSatDock diFurnace; private final TileEntityMachineSatDock tileSatelliteDock;
public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tedf) { public GUISatDock(InventoryPlayer invPlayer, TileEntityMachineSatDock tesd) {
super(new ContainerSatDock(invPlayer, tedf)); super(new ContainerSatDock(invPlayer, tesd));
diFurnace = tedf; tileSatelliteDock = tesd;
this.xSize = 176; this.xSize = 176;
this.ySize = 168; this.ySize = 168;
@ -36,10 +34,10 @@ public class GUISatDock extends GuiInfoContainer {
@Override @Override
protected void drawGuiContainerForegroundLayer(int i, int j) { protected void drawGuiContainerForegroundLayer(int i, int j) {
String name = this.diFurnace.hasCustomInventoryName() ? this.diFurnace.getInventoryName() : I18n.format(this.diFurnace.getInventoryName()); String name = this.tileSatelliteDock.hasCustomInventoryName() ? this.tileSatelliteDock.getInventoryName() : I18n.format(this.tileSatelliteDock.getInventoryName());
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752); this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 0x404040);
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752); this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 0x404040);
} }
@Override @Override

View File

@ -1,35 +1,27 @@
package com.hbm.saveddata; package com.hbm.saveddata;
import java.util.HashMap;
import java.util.Map.Entry;
import com.hbm.saveddata.satellites.Satellite; import com.hbm.saveddata.satellites.Satellite;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraft.world.WorldSavedData; import net.minecraft.world.WorldSavedData;
import java.util.HashMap;
import java.util.Map.Entry;
public class SatelliteSavedData extends WorldSavedData { public class SatelliteSavedData extends WorldSavedData {
public HashMap<Integer, Satellite> sats = new HashMap(); public final HashMap<Integer, Satellite> sats = new HashMap<>();
public SatelliteSavedData(String p_i2141_1_) { public SatelliteSavedData() {
super(p_i2141_1_);
}
public SatelliteSavedData()
{
super("satellites"); super("satellites");
this.markDirty(); this.markDirty();
} }
public boolean isFreqTaken(int freq) { public boolean isFreqTaken(int freq) {
return getSatFromFreq(freq) != null; return getSatFromFreq(freq) != null;
} }
public Satellite getSatFromFreq(int freq) { public Satellite getSatFromFreq(int freq) {
return sats.get(freq); return sats.get(freq);
} }
@ -38,7 +30,6 @@ public class SatelliteSavedData extends WorldSavedData {
int satCount = nbt.getInteger("satCount"); int satCount = nbt.getInteger("satCount");
for(int i = 0; i < satCount; i++) { for(int i = 0; i < satCount; i++) {
Satellite sat = Satellite.create(nbt.getInteger("sat_id_" + i)); Satellite sat = Satellite.create(nbt.getInteger("sat_id_" + i));
sat.readFromNBT((NBTTagCompound) nbt.getTag("sat_data_" + i)); sat.readFromNBT((NBTTagCompound) nbt.getTag("sat_data_" + i));
@ -55,7 +46,6 @@ public class SatelliteSavedData extends WorldSavedData {
int i = 0; int i = 0;
for(Entry<Integer, Satellite> struct : sats.entrySet()) { for(Entry<Integer, Satellite> struct : sats.entrySet()) {
NBTTagCompound data = new NBTTagCompound(); NBTTagCompound data = new NBTTagCompound();
struct.getValue().writeToNBT(data); struct.getValue().writeToNBT(data);
@ -67,15 +57,14 @@ public class SatelliteSavedData extends WorldSavedData {
} }
public static SatelliteSavedData getData(World worldObj) { public static SatelliteSavedData getData(World worldObj) {
SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); SatelliteSavedData data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites");
if(data == null) { if(data == null) {
worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData()); worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData());
data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); data = (SatelliteSavedData)worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites");
data.markDirty();
} }
return data; return data;
} }
} }

View File

@ -1,23 +1,22 @@
package com.hbm.saveddata.satellites; package com.hbm.saveddata.satellites;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import com.hbm.items.ModItems; import com.hbm.items.ModItems;
import com.hbm.saveddata.SatelliteSavedData; import com.hbm.saveddata.SatelliteSavedData;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public abstract class Satellite { public abstract class Satellite {
public static List<Class> satellites = new ArrayList(); public static final List<Class<? extends Satellite>> satellites = new ArrayList<>();
public static HashMap<Item, Class> itemToClass = new HashMap(); public static final HashMap<Item, Class<? extends Satellite>> itemToClass = new HashMap<>();
public static enum InterfaceActions { public enum InterfaceActions {
HAS_MAP, //lets the interface display loaded chunks HAS_MAP, //lets the interface display loaded chunks
CAN_CLICK, //enables onClick events CAN_CLICK, //enables onClick events
SHOW_COORDS, //enables coordinates as a mouse tooltip SHOW_COORDS, //enables coordinates as a mouse tooltip
@ -25,18 +24,18 @@ public abstract class Satellite {
HAS_ORES //like HAS_MAP but only shows ores HAS_ORES //like HAS_MAP but only shows ores
} }
public static enum CoordActions { public enum CoordActions {
HAS_Y //enables the Y-coord field which is disabled by default HAS_Y //enables the Y-coord field which is disabled by default
} }
public static enum Interfaces { public enum Interfaces {
NONE, //does not interact with any sat interface (i.e. asteroid miners) NONE, //does not interact with any sat interface (i.e. asteroid miners)
SAT_PANEL, //allows to interact with the sat interface panel (for graphical applications) SAT_PANEL, //allows to interact with the sat interface panel (for graphical applications)
SAT_COORD //allows to interact with the sat coord remote (for teleportation or other coord related actions) SAT_COORD //allows to interact with the sat coord remote (for teleportation or other coord related actions)
} }
public List<InterfaceActions> ifaceAcs = new ArrayList(); public List<InterfaceActions> ifaceAcs = new ArrayList<>();
public List<CoordActions> coordAcs = new ArrayList(); public List<CoordActions> coordAcs = new ArrayList<>();
public Interfaces satIface = Interfaces.NONE; public Interfaces satIface = Interfaces.NONE;
public static void register() { public static void register() {
@ -64,10 +63,13 @@ public abstract class Satellite {
} }
public static void orbit(World world, int id, int freq, double x, double y, double z) { public static void orbit(World world, int id, int freq, double x, double y, double z) {
if(world.isRemote) {
return;
}
Satellite sat = create(id); Satellite sat = create(id);
if(sat != null && !world.isRemote) { if(sat != null) {
SatelliteSavedData data = SatelliteSavedData.getData(world); SatelliteSavedData data = SatelliteSavedData.getData(world);
data.sats.put(freq, sat); data.sats.put(freq, sat);
sat.onOrbit(world, x, y, z); sat.onOrbit(world, x, y, z);
@ -76,25 +78,22 @@ public abstract class Satellite {
} }
public static Satellite create(int id) { public static Satellite create(int id) {
Satellite sat = null; Satellite sat = null;
try { try {
Class c = satellites.get(id); Class<? extends Satellite> c = satellites.get(id);
sat = (Satellite) c.newInstance(); sat = c.newInstance();
} catch(Exception ex) { } catch(Exception e) {
e.printStackTrace();
} }
return sat; return sat;
} }
public static int getIDFromItem(Item item) { public static int getIDFromItem(Item item) {
Class<? extends Satellite> sat = itemToClass.get(item); Class<? extends Satellite> sat = itemToClass.get(item);
int i = satellites.indexOf(sat);
return satellites.indexOf(sat);
return i;
} }
public int getID() { public int getID() {

View File

@ -13,7 +13,6 @@ import com.hbm.util.WeightedRandomObject;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.gui.GuiScreen;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
@ -27,15 +26,18 @@ import net.minecraft.util.WeightedRandom;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.util.List; import java.util.List;
import java.util.Random;
public class TileEntityMachineSatDock extends TileEntity implements ISidedInventory, IGUIProvider { public class TileEntityMachineSatDock extends TileEntity implements ISidedInventory, IGUIProvider {
private SatelliteSavedData data;
private ItemStack[] slots; private ItemStack[] slots;
private static final int[] access = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}; private static final int[] access = new int[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
private String customName; private String customName;
private AxisAlignedBB renderBoundingBox;
public TileEntityMachineSatDock() { public TileEntityMachineSatDock() {
slots = new ItemStack[16]; slots = new ItemStack[16];
} }
@ -177,21 +179,13 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent
return true; return true;
} }
SatelliteSavedData data = null;
@Override @Override
public void updateEntity() { public void updateEntity() {
if (!worldObj.isRemote) { if (!worldObj.isRemote) {
if (data == null) if (data == null)
data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites"); data = SatelliteSavedData.getData(worldObj);
if (data == null) { if (slots[15] != null) {
worldObj.perWorldStorage.setData("satellites", new SatelliteSavedData());
data = (SatelliteSavedData) worldObj.perWorldStorage.loadData(SatelliteSavedData.class, "satellites");
}
data.markDirty();
if (data != null && slots[15] != null) {
int freq = ISatChip.getFreqS(slots[15]); int freq = ISatChip.getFreqS(slots[15]);
Satellite sat = data.getSatFromFreq(freq); Satellite sat = data.getSatFromFreq(freq);
@ -215,22 +209,23 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent
} }
} }
List<Entity> list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord - 0.25 + 0.5, yCoord + 0.75, zCoord - 0.25 + 0.5, xCoord + 0.25 + 0.5, yCoord + 2, zCoord + 0.25 + 0.5)); @SuppressWarnings("unchecked")
List<EntityMinerRocket> list = worldObj.getEntitiesWithinAABBExcludingEntity(
null,
AxisAlignedBB.getBoundingBox(xCoord - 0.25 + 0.5, yCoord + 0.75, zCoord - 0.25 + 0.5, xCoord + 0.25 + 0.5, yCoord + 2, zCoord + 0.25 + 0.5),
entity -> entity instanceof EntityMinerRocket
);
for (Entity e : list) { for (EntityMinerRocket rocket : list) {
if (e instanceof EntityMinerRocket) { if (slots[15] != null && ISatChip.getFreqS(slots[15]) != rocket.getDataWatcher().getWatchableObjectInt(17)) {
EntityMinerRocket rocket = (EntityMinerRocket) e; rocket.setDead();
ExplosionNukeSmall.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, ExplosionNukeSmall.PARAMS_TOTS);
break;
}
if (slots[15] != null && ISatChip.getFreqS(slots[15]) != rocket.getDataWatcher().getWatchableObjectInt(17)) { if (rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) {
rocket.setDead(); Satellite sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15]));
ExplosionNukeSmall.explode(worldObj, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, ExplosionNukeSmall.PARAMS_TOTS); unloadCargo((SatelliteMiner) sat);
break;
}
if (rocket.getDataWatcher().getWatchableObjectInt(16) == 1 && rocket.timer == 50) {
Satellite sat = data.getSatFromFreq(ISatChip.getFreqS(slots[15]));
unloadCargo((SatelliteMiner) sat);
}
} }
} }
@ -241,15 +236,13 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent
} }
} }
static final Random rand = new Random();
private void unloadCargo(SatelliteMiner satellite) { private void unloadCargo(SatelliteMiner satellite) {
int items = rand.nextInt(6) + 10; int itemAmount = worldObj.rand.nextInt(6) + 10;
WeightedRandomObject[] cargo = satellite.getCargo(); WeightedRandomObject[] cargo = satellite.getCargo();
for (int i = 0; i < items; i++) { for (int i = 0; i < itemAmount; i++) {
ItemStack stack = ((WeightedRandomObject) WeightedRandom.getRandomItem(rand, cargo)).asStack(); ItemStack stack = ((WeightedRandomObject) WeightedRandom.getRandomItem(worldObj.rand, cargo)).asStack();
addToInv(stack.copy()); addToInv(stack.copy());
} }
} }
@ -322,12 +315,10 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent
} }
} }
AxisAlignedBB bb = null;
@Override @Override
public AxisAlignedBB getRenderBoundingBox() { public AxisAlignedBB getRenderBoundingBox() {
if (bb == null) { if (renderBoundingBox == null) {
bb = AxisAlignedBB.getBoundingBox( renderBoundingBox = AxisAlignedBB.getBoundingBox(
xCoord - 1, xCoord - 1,
yCoord, yCoord,
zCoord - 1, zCoord - 1,
@ -337,7 +328,7 @@ public class TileEntityMachineSatDock extends TileEntity implements ISidedInvent
); );
} }
return bb; return renderBoundingBox;
} }
@Override @Override

View File

@ -3,6 +3,7 @@ package com.hbm.tileentity.machine;
import com.hbm.inventory.container.ContainerMachineSatLinker; import com.hbm.inventory.container.ContainerMachineSatLinker;
import com.hbm.inventory.gui.GUIMachineSatLinker; import com.hbm.inventory.gui.GUIMachineSatLinker;
import com.hbm.items.ISatChip; import com.hbm.items.ISatChip;
import com.hbm.saveddata.SatelliteSavedData;
import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IGUIProvider;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
@ -18,8 +19,9 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World; import net.minecraft.world.World;
public class TileEntityMachineSatLinker extends TileEntity implements ISidedInventory, IGUIProvider { public class TileEntityMachineSatLinker extends TileEntity implements ISidedInventory, IGUIProvider {
private SatelliteSavedData satelliteData;
private ItemStack slots[]; private ItemStack[] slots;
//public static final int maxFill = 64 * 3; //public static final int maxFill = 64 * 3;
@ -45,21 +47,19 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve
@Override @Override
public ItemStack getStackInSlotOnClosing(int i) { public ItemStack getStackInSlotOnClosing(int i) {
if(slots[i] != null) if(slots[i] != null) {
{
ItemStack itemStack = slots[i]; ItemStack itemStack = slots[i];
slots[i] = null; slots[i] = null;
return itemStack; return itemStack;
} else { } else {
return null; return null;
} }
} }
@Override @Override
public void setInventorySlotContents(int i, ItemStack itemStack) { public void setInventorySlotContents(int i, ItemStack itemStack) {
slots[i] = itemStack; slots[i] = itemStack;
if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) if(itemStack != null && itemStack.stackSize > getInventoryStackLimit()) {
{
itemStack.stackSize = getInventoryStackLimit(); itemStack.stackSize = getInventoryStackLimit();
} }
} }
@ -85,11 +85,10 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve
@Override @Override
public boolean isUseableByPlayer(EntityPlayer player) { public boolean isUseableByPlayer(EntityPlayer player) {
if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) {
{
return false; return false;
}else{ } else {
return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <=64; return player.getDistanceSq(xCoord + 0.5D, yCoord + 0.5D, zCoord + 0.5D) <= 64;
} }
} }
@ -105,17 +104,14 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve
@Override @Override
public ItemStack decrStackSize(int i, int j) { public ItemStack decrStackSize(int i, int j) {
if(slots[i] != null) if(slots[i] != null) {
{ if(slots[i].stackSize <= j) {
if(slots[i].stackSize <= j)
{
ItemStack itemStack = slots[i]; ItemStack itemStack = slots[i];
slots[i] = null; slots[i] = null;
return itemStack; return itemStack;
} }
ItemStack itemStack1 = slots[i].splitStack(j); ItemStack itemStack1 = slots[i].splitStack(j);
if (slots[i].stackSize == 0) if (slots[i].stackSize == 0) {
{
slots[i] = null; slots[i] = null;
} }
@ -132,12 +128,10 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve
slots = new ItemStack[getSizeInventory()]; slots = new ItemStack[getSizeInventory()];
for(int i = 0; i < list.tagCount(); i++) for(int i = 0; i < list.tagCount(); i++) {
{
NBTTagCompound nbt1 = list.getCompoundTagAt(i); NBTTagCompound nbt1 = list.getCompoundTagAt(i);
byte b0 = nbt1.getByte("slot"); byte b0 = nbt1.getByte("slot");
if(b0 >= 0 && b0 < slots.length) if(b0 >= 0 && b0 < slots.length) {
{
slots[b0] = ItemStack.loadItemStackFromNBT(nbt1); slots[b0] = ItemStack.loadItemStackFromNBT(nbt1);
} }
} }
@ -148,10 +142,8 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve
super.writeToNBT(nbt); super.writeToNBT(nbt);
NBTTagList list = new NBTTagList(); NBTTagList list = new NBTTagList();
for(int i = 0; i < slots.length; i++) for(int i = 0; i < slots.length; i++) {
{ if(slots[i] != null) {
if(slots[i] != null)
{
NBTTagCompound nbt1 = new NBTTagCompound(); NBTTagCompound nbt1 = new NBTTagCompound();
nbt1.setByte("slot", (byte)i); nbt1.setByte("slot", (byte)i);
slots[i].writeToNBT(nbt1); slots[i].writeToNBT(nbt1);
@ -162,8 +154,7 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve
} }
@Override @Override
public int[] getAccessibleSlotsFromSide(int p_94128_1_) public int[] getAccessibleSlotsFromSide(int p_94128_1_) {
{
return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side); return p_94128_1_ == 0 ? slots_bottom : (p_94128_1_ == 1 ? slots_top : slots_side);
} }
@ -179,15 +170,19 @@ public class TileEntityMachineSatLinker extends TileEntity implements ISidedInve
@Override @Override
public void updateEntity() { public void updateEntity() {
if(!worldObj.isRemote) {
if(!worldObj.isRemote)
{
if(slots[0] != null && slots[1] != null && slots[0].getItem() instanceof ISatChip && slots[1].getItem() instanceof ISatChip) { if(slots[0] != null && slots[1] != null && slots[0].getItem() instanceof ISatChip && slots[1].getItem() instanceof ISatChip) {
ISatChip.setFreqS(slots[1], ISatChip.getFreqS(slots[0])); ISatChip.setFreqS(slots[1], ISatChip.getFreqS(slots[0]));
} }
if(slots[2] != null && slots[2].getItem() instanceof ISatChip) { if(slots[2] != null && slots[2].getItem() instanceof ISatChip) {
ISatChip.setFreqS(slots[2], worldObj.rand.nextInt(100000)); if(satelliteData == null) {
satelliteData = SatelliteSavedData.getData(worldObj);
}
int newId = worldObj.rand.nextInt(100000);
if(!satelliteData.isFreqTaken(newId)) {
ISatChip.setFreqS(slots[2], newId);
}
} }
} }
} }