Sack things, moved filter to WSD.

This commit is contained in:
Flanks255 2024-07-24 16:38:54 -05:00
parent 856e07a521
commit adce5984e4
5 changed files with 43 additions and 34 deletions

View file

@ -31,7 +31,7 @@ import java.util.UUID;
public class SackContainer extends AbstractContainerMenu implements IButtonReactor {
public final FilterSettings filter = new FilterSettings(4, false,false, false, false);
private final FilterSettings filter;
private final ItemStackHandlerAA bagInventory;
private final Inventory inventory;
public boolean autoInsert;
@ -40,20 +40,22 @@ public class SackContainer extends AbstractContainerMenu implements IButtonReact
public static final int SIZE = 28;
public static SackContainer fromNetwork(int windowId, Inventory inv, FriendlyByteBuf data) {
return new SackContainer(windowId, inv, data.readUUID(), new ItemStackHandlerAA(28));
return new SackContainer(windowId, inv, new ItemStackHandlerAA(28), new FilterSettings(4, false, false, false, false));
}
public SackContainer(int windowId, Inventory playerInventory, UUID uuid, ItemStackHandlerAA handler) {
public SackContainer(int windowId, Inventory playerInventory, ItemStackHandlerAA handler, FilterSettings filterIn) {
super(ActuallyContainers.SACK_CONTAINER.get(), windowId);
this.inventory = playerInventory;
this.bagInventory = handler;
this.filter = filterIn;
// Filter slots.
for (int row = 0; row < 4; row++) {
this.addSlot(new SlotFilter(this.filter, row, 155, 10 + row * 18));
}
// Sack inventory
// Sack inventory.
for (int row = 0; row < 4; row++) {
for (int col = 0; col < 7; col++) {
this.addSlot(new SlotItemHandlerUnconditioned(this.bagInventory, col + row * 7, 10 + col * 18, 10 + row * 18) {
@ -65,14 +67,14 @@ public class SackContainer extends AbstractContainerMenu implements IButtonReact
}
}
// Player Inventory
// Player Inventory.
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 9; col++) {
this.addSlot(new Slot(playerInventory, col + row * 9 + 9, 8 + col * 18, 94 + row * 18));
}
}
// Player Hotbar
// Player Hotbar.
for (int i = 0; i < 9; i++) {
if (i == playerInventory.selected) {
this.addSlot(new SlotImmovable(playerInventory, i, 8 + i * 18, 152));
@ -80,17 +82,9 @@ public class SackContainer extends AbstractContainerMenu implements IButtonReact
this.addSlot(new Slot(playerInventory, i, 8 + i * 18, 152));
}
}
ItemStack stack = playerInventory.getSelected();
if (!stack.isEmpty() && stack.getItem() instanceof Sack) {
// if (stack.hasTag()) { TODO: IMPORTANT! RE_ENABLE FILTER READ
// CompoundTag compound = stack.getOrCreateTag();
// this.filter.readFromNBT(playerInventory.player.registryAccess(), compound, "Filter");
// this.autoInsert = compound.getBoolean("AutoInsert");
// }
}
}
@Nonnull
@Override
public ItemStack quickMoveStack(@Nonnull Player player, int slot) {
int inventoryStart = this.bagInventory.getSlots() + 4;

View file

@ -44,6 +44,7 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Tier;
import net.minecraft.world.item.Tiers;
import net.minecraft.world.item.component.ItemAttributeModifiers;
import net.minecraft.world.item.context.UseOnContext;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.Level;
@ -190,15 +191,11 @@ public class DrillItem extends ItemEnergy {
@Nonnull
@Override
public Multimap<Attribute, AttributeModifier> getAttributeModifiers(@Nonnull EquipmentSlot slot, @Nonnull ItemStack stack) {
if (slot == EquipmentSlot.MAINHAND) {
public ItemAttributeModifiers getDefaultAttributeModifiers(@Nonnull ItemStack stack) {
return this.getEnergyStored(stack) >= ENERGY_USE
? this.attributes_powered
: this.attributes_unpowered;
}
else
return super.getDefaultAttributeModifiers(slot);
}
@Override

View file

@ -109,7 +109,7 @@ public class Sack extends ItemBase {
player.openMenu(new SimpleMenuProvider((id, inv, entity) ->
new SackContainer(id, inv, uuid, data.getSpecialHandler()), sackStack.getHoverName()), (buffer -> buffer.writeUUID(uuid)));
new SackContainer(id, inv, data.getSpecialHandler(), data.getFilter()), sackStack.getHoverName()), (buffer -> buffer.writeUUID(uuid)));
} else
player.openMenu(new SimpleMenuProvider((id, inv, entity) -> new VoidSackContainer(id, inv), sackStack.getHoverName()));
}

View file

@ -1,5 +1,6 @@
package de.ellpeck.actuallyadditions.mod.sack;
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerAA;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
@ -31,6 +32,18 @@ public class SackData {
return inventory;
}
private final FilterSettings filter = new FilterSettings(4, false, false, false, false){
@Override
public void onContentsChanged() {
super.onContentsChanged();
SackManager.get().setDirty();
}
};
public FilterSettings getFilter() {
return filter;
}
public void updateAccessRecords(String player, long time) {
if (meta.firstAccessedTime == 0) {
meta.firstAccessedTime = time;
@ -71,6 +84,9 @@ public class SackData {
optional = Optional.ofNullable(inventory);
if (incoming.contains("Filter"))
filter.readFromNBT(provider, incoming, "Filter");
if (incoming.contains("Metadata"))
meta.deserializeNBT(provider, incoming.getCompound("Metadata"));
}
@ -94,6 +110,8 @@ public class SackData {
nbt.put("Inventory", inventory.serializeNBT(provider));
filter.writeToNBT(provider, nbt, "Filter");
nbt.put("Metadata", meta.serializeNBT(provider));
return nbt;

View file

@ -113,22 +113,22 @@ public class FilterSettings {
}
public void writeToNBT(HolderLookup.Provider provider, CompoundTag tag, String name) {
// CompoundTag compound = new CompoundTag(); TODO: IMPORTANT! FIX THE FILTER SETTINGS!!!
// compound.putBoolean("Whitelist", this.isWhitelist);
// compound.putBoolean("Mod", this.respectMod);
// compound.putBoolean("Damage", this.matchDamage);
// compound.putBoolean("NBT", this.matchNBT);
// compound.put("Items", filterInventory.serializeNBT());
// tag.put(name, compound);
CompoundTag compound = new CompoundTag();
compound.putBoolean("Whitelist", this.isWhitelist);
compound.putBoolean("Mod", this.respectMod);
compound.putBoolean("Damage", this.matchDamage);
compound.putBoolean("NBT", this.matchNBT);
compound.put("Items", filterInventory.serializeNBT(provider));
tag.put(name, compound);
}
public void readFromNBT(HolderLookup.Provider provider, CompoundTag tag, String name) {
// CompoundTag compound = tag.getCompound(name);
// this.isWhitelist = compound.getBoolean("Whitelist");
// this.respectMod = compound.getBoolean("Mod");
// this.matchDamage = compound.getBoolean("Damage");
// this.matchNBT = compound.getBoolean("NBT");
// this.filterInventory.deserializeNBT(compound.getCompound("Items"));
CompoundTag compound = tag.getCompound(name);
this.isWhitelist = compound.getBoolean("Whitelist");
this.respectMod = compound.getBoolean("Mod");
this.matchDamage = compound.getBoolean("Damage");
this.matchNBT = compound.getBoolean("NBT");
this.filterInventory.deserializeNBT(provider, compound.getCompound("Items"));
}
public boolean needsUpdateSend() {