the power of friendship isn't working anymore

I need to kill this motherfucker
This commit is contained in:
70000hp 2024-08-03 19:26:15 -04:00
parent 492d6520ae
commit 90d552c03a
8 changed files with 104 additions and 9 deletions

View File

@ -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++;
}
}
}
}

View File

@ -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};
}
}

View File

@ -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};
}
}

View File

@ -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};
}
}

View File

@ -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")) {

View File

@ -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")) {

View File

@ -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};
}
}

View File

@ -131,4 +131,9 @@ public class TileEntityRadioTorchCounter extends TileEntityMachineBase implement
setFilterContents(data);
}
}
@Override
public int[] getFilterSlots() {
return new int[]{0, slots.length};
}
}