ModernLifePatch/src-source/main/java/com/dairymoose/inventory/container/TrashCanContainer.java
2024-10-26 09:40:21 +08:00

166 lines
7.2 KiB
Java

package com.dairymoose.inventory.container;
import com.dairymoose.modernlife.core.ModernLifeCommon;
import com.dairymoose.modernlife.network.play.client.ServerboundTrashCanPacket;
import net.minecraft.world.Container;
import net.minecraft.world.SimpleContainer;
import net.minecraft.world.entity.player.Inventory;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraft.world.inventory.ContainerListener;
import net.minecraft.world.inventory.MenuType;
import net.minecraft.world.inventory.Slot;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/* loaded from: outputsrg.jar:com/dairymoose/inventory/container/TrashCanContainer.class */
public class TrashCanContainer extends AbstractContainerMenu {
public static final MenuType<TrashCanContainer> TRASH_CAN_CONTAINER_TYPE = new MenuType<>(TrashCanContainer::new);
private static final Logger LOGGER = LogManager.getLogger();
private final Container container;
private final int containerRows;
private Slot trashSlot;
Inventory playerInventory;
public TrashCanContainer(int containerId, Inventory playerInventory, Container trashCanInventory) {
this(TRASH_CAN_CONTAINER_TYPE, containerId, playerInventory, trashCanInventory, 1);
}
public TrashCanContainer(int containerId, Inventory playerInventory) {
this(TRASH_CAN_CONTAINER_TYPE, containerId, playerInventory, new SimpleContainer(8), 1);
}
public TrashCanContainer(MenuType<?> p_i50092_1_, int p_i50092_2_, Inventory playerInventory, Container trashCanInventory, int containerRows) {
super(p_i50092_1_, p_i50092_2_);
this.trashSlot = null;
AbstractContainerMenu.checkContainerSize(trashCanInventory, 8);
this.container = trashCanInventory;
this.containerRows = containerRows;
trashCanInventory.startOpen(playerInventory.player);
this.playerInventory = playerInventory;
int trashInventoryIndex = 0 + 1;
this.trashSlot = addSlot(new Slot(trashCanInventory, 0, 8, 18));
for (int i = 0; i < 7; i++) {
int i2 = trashInventoryIndex;
trashInventoryIndex++;
addSlot(new Slot(trashCanInventory, i2, 44 + (i * 18), 18));
}
for (int row = 0; row < 3; row++) {
for (int col = 0; col < 9; col++) {
addSlot(new Slot(playerInventory, col + (row * 9) + 9, 8 + (col * 18), 50 + (row * 18)));
}
}
for (int col2 = 0; col2 < 9; col2++) {
addSlot(new Slot(playerInventory, col2, 8 + (col2 * 18), 108));
}
addDataSlot(new IncrementingDataHolder());
if (!this.playerInventory.player.level.isClientSide) {
addSlotListener(new ContainerListener() { // from class: com.dairymoose.inventory.container.TrashCanContainer.1
final /* synthetic */ TrashCanContainer val$thisContainer;
C00041(TrashCanContainer this) {
this = this;
}
public void dataChanged(AbstractContainerMenu paramContainer, int index, int data) {
if (paramContainer == this) {
ItemStack paramItemStack = paramContainer.getSlot(index).getItem();
if (TrashCanContainer.this.trashSlot != null && index == TrashCanContainer.this.trashSlot.index && paramItemStack != ItemStack.EMPTY) {
ModernLifeCommon.LOGGER.debug("server trash can");
if (paramContainer instanceof TrashCanContainer) {
TrashCanContainer trashCanContainer = (TrashCanContainer) paramContainer;
if (ServerboundTrashCanPacket.playerHasItem(((TrashCanContainer) paramContainer).playerInventory.player, paramItemStack)) {
trashCanContainer.trashItem(paramItemStack);
}
}
}
}
}
public void slotChanged(AbstractContainerMenu var1, int var2, ItemStack var3) {
}
});
}
}
/* JADX INFO: Access modifiers changed from: package-private */
/* renamed from: com.dairymoose.inventory.container.TrashCanContainer$1 */
/* loaded from: outputsrg.jar:com/dairymoose/inventory/container/TrashCanContainer$1.class */
public class C00041 implements ContainerListener {
final /* synthetic */ TrashCanContainer val$thisContainer;
C00041(TrashCanContainer this) {
this = this;
}
public void dataChanged(AbstractContainerMenu paramContainer, int index, int data) {
if (paramContainer == this) {
ItemStack paramItemStack = paramContainer.getSlot(index).getItem();
if (TrashCanContainer.this.trashSlot != null && index == TrashCanContainer.this.trashSlot.index && paramItemStack != ItemStack.EMPTY) {
ModernLifeCommon.LOGGER.debug("server trash can");
if (paramContainer instanceof TrashCanContainer) {
TrashCanContainer trashCanContainer = (TrashCanContainer) paramContainer;
if (ServerboundTrashCanPacket.playerHasItem(((TrashCanContainer) paramContainer).playerInventory.player, paramItemStack)) {
trashCanContainer.trashItem(paramItemStack);
}
}
}
}
}
public void slotChanged(AbstractContainerMenu var1, int var2, ItemStack var3) {
}
}
public void trashItem(ItemStack toTrash) {
for (int i = 7; i > 1; i--) {
getSlot(i).set(this.container.getItem(i - 1));
}
getSlot(1).set(toTrash);
getSlot(0).set(ItemStack.EMPTY);
}
public boolean stillValid(Player p_75145_1_) {
return this.container.stillValid(p_75145_1_);
}
public ItemStack quickMoveStack(Player p_82846_1_, int p_82846_2_) {
ItemStack lvt_3_1_ = ItemStack.EMPTY;
Slot lvt_4_1_ = (Slot) this.slots.get(p_82846_2_);
if (lvt_4_1_ != null && lvt_4_1_.hasItem()) {
ItemStack lvt_5_1_ = lvt_4_1_.getItem();
lvt_3_1_ = lvt_5_1_.copy();
if (p_82846_2_ < 8) {
if (!moveItemStackTo(lvt_5_1_, 8, this.slots.size(), true)) {
return ItemStack.EMPTY;
}
} else if (!moveItemStackTo(lvt_5_1_, 0, 8, false)) {
return ItemStack.EMPTY;
}
if (lvt_5_1_.isEmpty()) {
lvt_4_1_.set(ItemStack.EMPTY);
} else {
lvt_4_1_.setChanged();
}
}
return lvt_3_1_;
}
public void removed(Player p_75134_1_) {
super.removed(p_75134_1_);
this.container.stopOpen(p_75134_1_);
}
public Container getContainer() {
return this.container;
}
@OnlyIn(Dist.CLIENT)
public int getRowCount() {
return this.containerRows;
}
}