mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
the power of friendship isn't working anymore
I need to kill this motherfucker
This commit is contained in:
parent
492d6520ae
commit
90d552c03a
@ -3,18 +3,26 @@ package com.hbm.tileentity;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
|
||||
import com.hbm.interfaces.ICopiable;
|
||||
import com.hbm.module.ModulePatternMatcher;
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
public interface IControlReceiverFilter extends IControlReceiver, ICopiable {
|
||||
|
||||
void nextMode(int i);
|
||||
|
||||
/*
|
||||
default ModulePatternMatcher getMatcher(){
|
||||
|
||||
}*/
|
||||
|
||||
@Override
|
||||
public default void receiveControl(NBTTagCompound data) {
|
||||
default void receiveControl(NBTTagCompound data) {
|
||||
if(data.hasKey("slot")) {
|
||||
setFilterContents(data);
|
||||
}
|
||||
@ -24,7 +32,7 @@ public interface IControlReceiverFilter extends IControlReceiver, ICopiable {
|
||||
* Expects the implementor to be a tile entity and an IInventory
|
||||
* @param nbt
|
||||
*/
|
||||
public default void setFilterContents(NBTTagCompound nbt) {
|
||||
default void setFilterContents(NBTTagCompound nbt) {
|
||||
TileEntity tile = (TileEntity) this;
|
||||
IInventory inv = (IInventory) this;
|
||||
int slot = nbt.getInteger("slot");
|
||||
@ -32,4 +40,54 @@ public interface IControlReceiverFilter extends IControlReceiver, ICopiable {
|
||||
nextMode(slot);
|
||||
tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile);
|
||||
}
|
||||
/**
|
||||
* Used for the copy tool
|
||||
* @return The start and end (start inclusive, end exclusive) of the filter slots of the TE
|
||||
*/
|
||||
int[] getFilterSlots();
|
||||
|
||||
@Override
|
||||
default NBTTagCompound getSettings() {
|
||||
IInventory inv = (IInventory) this;
|
||||
NBTTagCompound nbt = new NBTTagCompound();
|
||||
NBTTagList tags = new NBTTagList();
|
||||
int count = 0;
|
||||
for (int i = getFilterSlots()[0]; i < getFilterSlots()[1]; i++) {
|
||||
NBTTagCompound slotNBT = new NBTTagCompound();
|
||||
if(inv.getStackInSlot(i) != null) {
|
||||
slotNBT.setByte("slot", (byte) count);
|
||||
inv.getStackInSlot(i).writeToNBT(slotNBT);
|
||||
tags.appendTag(slotNBT);
|
||||
}
|
||||
count++;
|
||||
}
|
||||
nbt.setTag("items", tags);
|
||||
|
||||
return nbt;
|
||||
}
|
||||
|
||||
@Override
|
||||
default void pasteSettings(NBTTagCompound nbt) {
|
||||
TileEntity tile = (TileEntity) this;
|
||||
IInventory inv = (IInventory) this;
|
||||
NBTTagList items = nbt.getTagList("items", 10);
|
||||
int listSize = items.tagCount();
|
||||
if(listSize > 0) {
|
||||
int count = 0;
|
||||
for (int i = getFilterSlots()[0]; i < getFilterSlots()[1]; i++) {
|
||||
if (i < listSize) {
|
||||
NBTTagCompound slotNBT = items.getCompoundTagAt(count);
|
||||
byte slot = slotNBT.getByte("slot");
|
||||
ItemStack loadedStack = ItemStack.loadItemStackFromNBT(slotNBT);
|
||||
if (loadedStack != null) {
|
||||
inv.setInventorySlotContents(slot + getFilterSlots()[0], ItemStack.loadItemStackFromNBT(slotNBT));
|
||||
nextMode(slot);
|
||||
tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile);
|
||||
}
|
||||
}
|
||||
count++;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -187,7 +187,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen
|
||||
|
||||
if(i > 9 && i < 19) {
|
||||
ItemStack filter = slots[i - 10];
|
||||
if(filter == null) return true;
|
||||
if(filter == null || matcher.modes[i - 10] == null || matcher.modes[i - 10].isEmpty()) return true;
|
||||
return !matcher.isValidForFilter(filter, i - 10, stack);
|
||||
}
|
||||
|
||||
@ -213,7 +213,7 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen
|
||||
List<Integer> validSlots = new ArrayList();
|
||||
for(int i = 0; i < 9; i++) {
|
||||
ItemStack filter = slots[i];
|
||||
if(filter == null) continue;
|
||||
if(filter == null || matcher.modes[i] == null || matcher.modes[i].isEmpty()) continue;
|
||||
|
||||
if(matcher.isValidForFilter(filter, i, stack)) {
|
||||
validSlots.add(i + 10);
|
||||
@ -347,12 +347,19 @@ public class TileEntityMachineAutocrafter extends TileEntityMachineBase implemen
|
||||
|
||||
@Override
|
||||
public void setFilterContents(NBTTagCompound nbt) {
|
||||
TileEntity tile = (TileEntity) this;
|
||||
IInventory inv = (IInventory) this;
|
||||
TileEntity tile = this;
|
||||
IInventory inv = this;
|
||||
int slot = nbt.getInteger("slot");
|
||||
if(slot > 8) return;
|
||||
inv.setInventorySlotContents(slot, new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta")));
|
||||
ItemStack item = new ItemStack(Item.getItemById(nbt.getInteger("id")), 1, nbt.getInteger("meta"));
|
||||
inv.setInventorySlotContents(slot, item);
|
||||
matcher.initPatternSmart(getWorldObj(), item, slot);
|
||||
updateTemplateGrid();
|
||||
nextMode(slot);
|
||||
tile.getWorldObj().markTileEntityChunkModified(tile.xCoord, tile.yCoord, tile.zCoord, tile);
|
||||
}
|
||||
@Override
|
||||
public int[] getFilterSlots() {
|
||||
return new int[]{0,9};
|
||||
}
|
||||
}
|
||||
|
||||
@ -221,4 +221,9 @@ public class TileEntityMassStorage extends TileEntityCrateBase implements INBTPa
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUIMassStorage(player.inventory, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getFilterSlots() {
|
||||
return new int[]{1,2};
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import com.hbm.items.ModItems;
|
||||
import com.hbm.module.ModulePatternMatcher;
|
||||
import com.hbm.tileentity.IControlReceiverFilter;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.util.ItemStackUtil;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
@ -26,7 +27,7 @@ import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiver, IControlReceiverFilter {
|
||||
public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGUIProvider, IControlReceiverFilter {
|
||||
|
||||
public boolean isWhitelist = false;
|
||||
public ModulePatternMatcher matcher;
|
||||
@ -256,4 +257,10 @@ public class TileEntityCraneExtractor extends TileEntityCraneBase implements IGU
|
||||
setFilterContents(data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getFilterSlots() {
|
||||
return new int[]{0,9};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -190,6 +190,11 @@ public class TileEntityCraneGrabber extends TileEntityCraneBase implements IGUIP
|
||||
return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getFilterSlots() {
|
||||
return new int[]{0,9};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void receiveControl(NBTTagCompound data) {
|
||||
if(data.hasKey("whitelist")) {
|
||||
|
||||
@ -120,7 +120,10 @@ public class TileEntityCraneRouter extends TileEntityMachineBase implements IGUI
|
||||
public boolean hasPermission(EntityPlayer player) {
|
||||
return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getFilterSlots() {
|
||||
return new int[]{0, slots.length};
|
||||
}
|
||||
@Override
|
||||
public void receiveControl(NBTTagCompound data) {
|
||||
if(data.hasKey("toggle")) {
|
||||
|
||||
@ -130,4 +130,9 @@ public class TileEntityDroneRequester extends TileEntityRequestNetworkContainer
|
||||
public boolean hasPermission(EntityPlayer player) {
|
||||
return Vec3.createVectorHelper(xCoord - player.posX, yCoord - player.posY, zCoord - player.posZ).lengthVector() < 20;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getFilterSlots() {
|
||||
return new int[]{0,9};
|
||||
}
|
||||
}
|
||||
|
||||
@ -131,4 +131,9 @@ public class TileEntityRadioTorchCounter extends TileEntityMachineBase implement
|
||||
setFilterContents(data);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int[] getFilterSlots() {
|
||||
return new int[]{0, slots.length};
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user