make the specimen slot work and some small improvements

This commit is contained in:
Raoul Van den Berge
2015-12-18 12:31:37 +01:00
parent 9cd5f2487c
commit 4d5af85215
8 changed files with 74 additions and 26 deletions

View File

@@ -2,7 +2,7 @@ package storagecraft.container;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import storagecraft.SCItems; import storagecraft.SCItems;
import storagecraft.inventory.slot.SlotItemFilter; import storagecraft.container.slot.SlotItemFilter;
import storagecraft.tile.TileDrive; import storagecraft.tile.TileDrive;
public class ContainerDrive extends ContainerSC { public class ContainerDrive extends ContainerSC {

View File

@@ -1,7 +1,7 @@
package storagecraft.container; package storagecraft.container;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import storagecraft.inventory.slot.SlotSpecimen; import storagecraft.container.slot.SlotSpecimen;
import storagecraft.tile.TileImporter; import storagecraft.tile.TileImporter;
public class ContainerImporter extends ContainerSC { public class ContainerImporter extends ContainerSC {

View File

@@ -4,6 +4,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container; import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import storagecraft.container.slot.SlotSpecimen;
public class ContainerSC extends Container { public class ContainerSC extends Container {
private EntityPlayer player; private EntityPlayer player;
@@ -34,6 +35,23 @@ public class ContainerSC extends Container {
} }
} }
@Override
public ItemStack slotClick(int id, int clickedButton, int mode, EntityPlayer player) {
Slot slot = id >= 0 ? getSlot(id) : null;
if (slot instanceof SlotSpecimen) {
if (clickedButton == 2) {
slot.putStack(null);
} else {
slot.putStack(player.inventory.getItemStack() == null ? null : player.inventory.getItemStack().copy());
}
return player.inventory.getItemStack();
}
return super.slotClick(id, clickedButton, mode, player);
}
@Override @Override
public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) {
return null; return null;

View File

@@ -1,4 +1,4 @@
package storagecraft.inventory.slot; package storagecraft.container.slot;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot; import net.minecraft.inventory.Slot;

View File

@@ -0,0 +1,31 @@
package storagecraft.container.slot;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class SlotSpecimen extends Slot {
public SlotSpecimen(IInventory inventory, int id, int x, int y) {
super(inventory, id, x, y);
}
@Override
public boolean canTakeStack(EntityPlayer player) {
return false;
}
@Override
public boolean isItemValid(ItemStack stack) {
return true;
}
@Override
public void putStack(ItemStack stack) {
if (stack != null) {
stack.stackSize = 1;
}
super.putStack(stack);
}
}

View File

@@ -47,11 +47,23 @@ public class GuiImporter extends GuiContainer {
compareFlags = importer.getCompareFlags(); compareFlags = importer.getCompareFlags();
compareNBT.displayString = StatCollector.translateToLocal("misc.storagecraft:compareNBT") + ": "; compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT);
compareNBT.displayString += ((compareFlags & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT) ? StatCollector.translateToLocal("misc.storagecraft:on") : StatCollector.translateToLocal("misc.storagecraft:off"); compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE);
}
compareDamage.displayString = StatCollector.translateToLocal("misc.storagecraft:compareDamage") + ": "; private String getTextForCompareToggle(String which, int flag) {
compareDamage.displayString += ((compareFlags & InventoryUtils.COMPARE_DAMAGE) == InventoryUtils.COMPARE_DAMAGE) ? StatCollector.translateToLocal("misc.storagecraft:on") : StatCollector.translateToLocal("misc.storagecraft:off"); StringBuilder builder = new StringBuilder();
builder.append(StatCollector.translateToLocal("misc.storagecraft:compare" + which));
builder.append(": ");
if ((compareFlags & flag) == flag) {
builder.append(StatCollector.translateToLocal("misc.storagecraft:on"));
} else {
builder.append(StatCollector.translateToLocal("misc.storagecraft:off"));
}
return builder.toString();
} }
@Override @Override
@@ -66,20 +78,17 @@ public class GuiImporter extends GuiContainer {
@Override @Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:importer"), 7, 7, 4210752); fontRendererObj.drawString(StatCollector.translateToLocal("gui.storagecraft:importer"), 7, 7, 4210752);
fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 87, 4210752); fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory"), 7, 89, 4210752);
} }
@Override @Override
protected void actionPerformed(GuiButton button) { protected void actionPerformed(GuiButton button) {
int flags = compareFlags; int flags = compareFlags;
switch (button.id) { if (button.id == compareNBT.id) {
case 0:
flags ^= InventoryUtils.COMPARE_NBT; flags ^= InventoryUtils.COMPARE_NBT;
break; } else if (button.id == compareDamage.id) {
case 1:
flags ^= InventoryUtils.COMPARE_DAMAGE; flags ^= InventoryUtils.COMPARE_DAMAGE;
break;
} }
SC.NETWORK.sendToServer(new MessageImporterUpdate(importer.xCoord, importer.yCoord, importer.zCoord, flags)); SC.NETWORK.sendToServer(new MessageImporterUpdate(importer.xCoord, importer.yCoord, importer.zCoord, flags));

View File

@@ -1,11 +0,0 @@
package storagecraft.inventory.slot;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
// @TODO: Correct behaviour
public class SlotSpecimen extends Slot {
public SlotSpecimen(IInventory inventory, int id, int x, int y) {
super(inventory, id, x, y);
}
}

View File

@@ -40,6 +40,7 @@ public class TileImporter extends TileMachine implements IInventory {
if (slot != null && canImport(slot)) { if (slot != null && canImport(slot)) {
if (getController().push(slot.copy())) { if (getController().push(slot.copy())) {
connectedInventory.setInventorySlotContents(currentSlot, null); connectedInventory.setInventorySlotContents(currentSlot, null);
connectedInventory.markDirty();
} }
} }