Cleanup some ContainerBuilder code

This commit is contained in:
Ourten 2017-01-07 15:59:59 +01:00
parent 0f172ddf52
commit 89d3e8538b
6 changed files with 22 additions and 86 deletions

View file

@ -1,10 +1,13 @@
package techreborn.client.container.builder;
import org.apache.commons.lang3.Range;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.EntityEquipmentSlot;
import org.apache.commons.lang3.Range;
import reborncore.client.gui.slots.BaseSlot;
import techreborn.client.container.builder.slot.ArmorSlot;
import techreborn.client.container.builder.slot.FilteredSlot;
public final class ContainerPlayerInventoryBuilder {
@ -44,47 +47,8 @@ public final class ContainerPlayerInventoryBuilder {
return this.hotbar(8, 152);
}
public ContainerPlayerInventoryBuilder inventory(boolean old) {
if (old) {
return this.inventory(8, 84);
} else {
return inventory();
}
}
public ContainerPlayerInventoryBuilder hotbar(boolean old) {
if (old) {
return this.hotbar(8, 142);
} else {
return hotbar();
}
}
private ContainerPlayerInventoryBuilder armor(final int index, final int xStart, final int yStart,
final EntityEquipmentSlot slotType) {
this.parent.slots.add(new ArmorSlot(slotType, this.player, index, xStart, yStart));
return this;
}
public ContainerPlayerInventoryBuilder helmet(final int xStart, final int yStart) {
return this.armor(this.player.getSizeInventory() - 2, xStart, yStart, EntityEquipmentSlot.HEAD);
}
public ContainerPlayerInventoryBuilder chestplate(final int xStart, final int yStart) {
return this.armor(this.player.getSizeInventory() - 3, xStart, yStart, EntityEquipmentSlot.CHEST);
}
public ContainerPlayerInventoryBuilder leggings(final int xStart, final int yStart) {
return this.armor(this.player.getSizeInventory() - 4, xStart, yStart, EntityEquipmentSlot.LEGS);
}
public ContainerPlayerInventoryBuilder boots(final int xStart, final int yStart) {
return this.armor(this.player.getSizeInventory() - 5, xStart, yStart, EntityEquipmentSlot.FEET);
}
public ContainerPlayerInventoryBuilder armor(final int xStart, final int yStart) {
return this.helmet(xStart, yStart).chestplate(xStart, yStart + 19).leggings(xStart, yStart + 38).boots(xStart,
yStart + 57);
public ContainerPlayerArmorInventoryBuilder armor() {
return new ContainerPlayerArmorInventoryBuilder(this);
}
public ContainerBuilder addInventory() {
@ -108,8 +72,10 @@ public final class ContainerPlayerInventoryBuilder {
}
private ContainerPlayerArmorInventoryBuilder armor(final int index, final int xStart, final int yStart,
final EntityEquipmentSlot slotType) {
this.parent.parent.slots.add(new ArmorSlot(slotType, this.parent.player, index, xStart, yStart));
final EntityEquipmentSlot slotType) {
this.parent.parent.slots.add(new FilteredSlot(this.parent.player, index, xStart, yStart)
.setFilter(stack -> stack.getItem().isValidArmor(stack, slotType, this.parent.player.player)));
return this;
}
@ -131,7 +97,7 @@ public final class ContainerPlayerInventoryBuilder {
public ContainerPlayerArmorInventoryBuilder complete(final int xStart, final int yStart) {
return this.helmet(xStart, yStart).chestplate(xStart, yStart + 19).leggings(xStart, yStart + 38)
.boots(xStart, yStart + 57);
.boots(xStart, yStart + 57);
}
public ContainerPlayerInventoryBuilder addArmor() {

View file

@ -4,12 +4,15 @@ import org.apache.commons.lang3.Range;
import org.apache.commons.lang3.tuple.Pair;
import net.minecraft.inventory.IInventory;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.energy.CapabilityEnergy;
import reborncore.api.power.IEnergyInterfaceItem;
import reborncore.client.gui.slots.BaseSlot;
import reborncore.client.gui.slots.SlotFake;
import reborncore.client.gui.slots.SlotOutput;
import techreborn.client.container.builder.slot.EnergyChargeSlot;
import techreborn.client.container.builder.slot.FilteredSlot;
import java.util.function.IntConsumer;
import java.util.function.IntSupplier;
@ -41,8 +44,11 @@ public class ContainerTileInventoryBuilder {
return this;
}
@SuppressWarnings("null")
public ContainerTileInventoryBuilder energySlot(final int index, final int x, final int y) {
this.parent.slots.add(new EnergyChargeSlot(this.tile, index, x, y));
this.parent.slots.add(new FilteredSlot(this.tile, index, x, y)
.setFilter(stack -> stack.hasCapability(CapabilityEnergy.ENERGY, EnumFacing.UP)
|| stack.getItem() instanceof IEnergyInterfaceItem));
return this;
}

View file

@ -1,20 +0,0 @@
package techreborn.client.container.builder.slot;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.util.ResourceLocation;
import techreborn.lib.ModInfo;
public class ArmorSlot extends FilteredSlot {
public ArmorSlot(final EntityEquipmentSlot armorType, final InventoryPlayer inventory, final int index, final int xPosition, final int yPosition) {
super(inventory, index, xPosition, yPosition);
this.setFilter(stack -> stack != null && stack.getItem().isValidArmor(stack, armorType, inventory.player));
}
@Override
public int getSlotStackLimit() {
return 1;
}
}

View file

@ -1,16 +0,0 @@
package techreborn.client.container.builder.slot;
import net.minecraft.inventory.IInventory;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.energy.CapabilityEnergy;
import reborncore.api.power.IEnergyInterfaceItem;
public class EnergyChargeSlot extends FilteredSlot {
@SuppressWarnings("null")
public EnergyChargeSlot(final IInventory inventory, final int index, final int xPosition, final int yPosition) {
super(inventory, index, xPosition, yPosition);
this.setFilter(stack -> stack.hasCapability(CapabilityEnergy.ENERGY, EnumFacing.UP) || stack.getItem() instanceof IEnergyInterfaceItem);
}
}

View file

@ -15,7 +15,7 @@ public class GuiChargeBench extends GuiContainer {
TileChargeBench chargebench;
public GuiChargeBench(final EntityPlayer player, final TileChargeBench tile) {
super(new ContainerBuilder().player(player.inventory).inventory(true).hotbar(true).addInventory().tile(tile)
super(new ContainerBuilder().player(player.inventory).inventory(8, 84).hotbar(8, 152).addInventory().tile(tile)
.energySlot(0, 62, 21).energySlot(1, 80, 21).energySlot(2, 98, 21).energySlot(3, 62, 39).energySlot(4, 80, 39)
.energySlot(5, 98, 39).syncIntegerValue(() -> (int) tile.getEnergy(), tile::setEnergy).addInventory()
.create());

View file

@ -19,7 +19,7 @@ public class GuiQuantumChest extends GuiContainer {
TileQuantumChest tile;
public GuiQuantumChest(final EntityPlayer player, final TileQuantumChest tile) {
super(new ContainerBuilder().player(player.inventory).inventory(true).hotbar(true).addInventory().tile(tile)
super(new ContainerBuilder().player(player.inventory).inventory(8, 64).hotbar(8, 152).addInventory().tile(tile)
.slot(0, 80, 17).outputSlot(1, 80, 53).fakeSlot(2, 59, 42).addInventory().create());
this.xSize = 176;
this.ySize = 167;