CreateMod/src/main/java/com/simibubi/create/content/schematics/block/SchematicTableContainer.java
JozsefA aeff644cc3 Merge remote-tracking branch 'origin/mc1.16/dev' into mc1.16/chromatic-projector
# Conflicts:
#	src/generated/resources/assets/create/lang/en_us.json
#	src/generated/resources/assets/create/lang/unfinished/de_de.json
#	src/generated/resources/assets/create/lang/unfinished/es_es.json
#	src/generated/resources/assets/create/lang/unfinished/es_mx.json
#	src/generated/resources/assets/create/lang/unfinished/fr_fr.json
#	src/generated/resources/assets/create/lang/unfinished/it_it.json
#	src/generated/resources/assets/create/lang/unfinished/ja_jp.json
#	src/generated/resources/assets/create/lang/unfinished/ko_kr.json
#	src/generated/resources/assets/create/lang/unfinished/nl_nl.json
#	src/generated/resources/assets/create/lang/unfinished/pl_pl.json
#	src/generated/resources/assets/create/lang/unfinished/pt_br.json
#	src/generated/resources/assets/create/lang/unfinished/ru_ru.json
#	src/generated/resources/assets/create/lang/unfinished/zh_cn.json
#	src/generated/resources/assets/create/lang/unfinished/zh_tw.json
#	src/main/java/com/simibubi/create/AllContainerTypes.java
#	src/main/java/com/simibubi/create/content/contraptions/base/KineticTileEntity.java
#	src/main/java/com/simibubi/create/content/contraptions/components/deployer/DeployerHandler.java
#	src/main/java/com/simibubi/create/content/contraptions/components/structureMovement/mounted/CartAssemblerTileEntity.java
#	src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintEntity.java
#	src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintOverlayRenderer.java
#	src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintRenderer.java
#	src/main/java/com/simibubi/create/content/curiosities/tools/BlueprintScreen.java
#	src/main/java/com/simibubi/create/content/logistics/block/mechanicalArm/ArmRenderer.java
#	src/main/java/com/simibubi/create/content/logistics/item/LinkedControllerScreen.java
#	src/main/java/com/simibubi/create/content/logistics/item/filter/AttributeFilterScreen.java
#	src/main/java/com/simibubi/create/content/logistics/item/filter/FilterContainer.java
#	src/main/java/com/simibubi/create/content/schematics/block/SchematicTableScreen.java
#	src/main/java/com/simibubi/create/content/schematics/block/SchematicannonTileEntity.java
#	src/main/java/com/simibubi/create/foundation/gui/AllGuiTextures.java
#	src/main/java/com/simibubi/create/foundation/gui/mainMenu/CreateMainMenuScreen.java
#	src/main/java/com/simibubi/create/foundation/ponder/content/ChainDriveScenes.java
#	src/main/java/com/simibubi/create/foundation/render/SuperByteBuffer.java
#	src/main/resources/META-INF/mods.toml
#	src/main/resources/assets/create/lang/default/messages.json
#	src/main/resources/assets/create/lang/default/tooltips.json
2021-06-19 16:11:18 -07:00

110 lines
3.1 KiB
Java

package com.simibubi.create.content.schematics.block;
import com.simibubi.create.AllContainerTypes;
import com.simibubi.create.AllItems;
import net.minecraft.client.Minecraft;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.inventory.container.Container;
import net.minecraft.inventory.container.ContainerType;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketBuffer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.items.SlotItemHandler;
public class SchematicTableContainer extends Container {
private SchematicTableTileEntity te;
private Slot inputSlot;
private Slot outputSlot;
private PlayerEntity player;
public SchematicTableContainer(ContainerType<?> type, int id, PlayerInventory inv, PacketBuffer extraData) {
super(type, id);
player = inv.player;
ClientWorld world = Minecraft.getInstance().world;
TileEntity tileEntity = world.getTileEntity(extraData.readBlockPos());
if (tileEntity instanceof SchematicTableTileEntity) {
this.te = (SchematicTableTileEntity) tileEntity;
this.te.handleUpdateTag(te.getBlockState(), extraData.readCompoundTag());
init();
}
}
public SchematicTableContainer(ContainerType<?> type, int id, PlayerInventory inv, SchematicTableTileEntity te) {
super(type, id);
this.player = inv.player;
this.te = te;
init();
}
public static SchematicTableContainer create(int id, PlayerInventory inv, SchematicTableTileEntity te) {
return new SchematicTableContainer(AllContainerTypes.SCHEMATIC_TABLE.get(), id, inv, te);
}
protected void init() {
inputSlot = new SlotItemHandler(te.inventory, 0, 21, 57) {
@Override
public boolean isItemValid(ItemStack stack) {
return AllItems.EMPTY_SCHEMATIC.isIn(stack) || AllItems.SCHEMATIC_AND_QUILL.isIn(stack)
|| AllItems.SCHEMATIC.isIn(stack);
}
};
outputSlot = new SlotItemHandler(te.inventory, 1, 166, 57) {
@Override
public boolean isItemValid(ItemStack stack) {
return false;
}
};
addSlot(inputSlot);
addSlot(outputSlot);
// player Slots
for (int row = 0; row < 3; ++row) {
for (int col = 0; col < 9; ++col) {
this.addSlot(new Slot(player.inventory, col + row * 9 + 9, 38 + col * 18, 105 + row * 18));
}
}
for (int hotbarSlot = 0; hotbarSlot < 9; ++hotbarSlot) {
this.addSlot(new Slot(player.inventory, hotbarSlot, 38 + hotbarSlot * 18, 163));
}
detectAndSendChanges();
}
public boolean canWrite() {
return inputSlot.getHasStack() && !outputSlot.getHasStack();
}
@Override
public boolean canInteractWith(PlayerEntity playerIn) {
return true;
}
@Override
public ItemStack transferStackInSlot(PlayerEntity playerIn, int index) {
Slot clickedSlot = getSlot(index);
if (!clickedSlot.getHasStack())
return ItemStack.EMPTY;
ItemStack stack = clickedSlot.getStack();
if (index < 2)
mergeItemStack(stack, 2, inventorySlots.size(), false);
else
mergeItemStack(stack, 0, 1, false);
return ItemStack.EMPTY;
}
public SchematicTableTileEntity getTileEntity() {
return te;
}
}