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 storagecraft.SCItems;
import storagecraft.inventory.slot.SlotItemFilter;
import storagecraft.container.slot.SlotItemFilter;
import storagecraft.tile.TileDrive;
public class ContainerDrive extends ContainerSC {

View File

@@ -1,7 +1,7 @@
package storagecraft.container;
import net.minecraft.entity.player.EntityPlayer;
import storagecraft.inventory.slot.SlotSpecimen;
import storagecraft.container.slot.SlotSpecimen;
import storagecraft.tile.TileImporter;
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.Slot;
import net.minecraft.item.ItemStack;
import storagecraft.container.slot.SlotSpecimen;
public class ContainerSC extends Container {
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
public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) {
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.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();
compareNBT.displayString = StatCollector.translateToLocal("misc.storagecraft:compareNBT") + ": ";
compareNBT.displayString += ((compareFlags & InventoryUtils.COMPARE_NBT) == InventoryUtils.COMPARE_NBT) ? StatCollector.translateToLocal("misc.storagecraft:on") : StatCollector.translateToLocal("misc.storagecraft:off");
compareNBT.displayString = getTextForCompareToggle("NBT", InventoryUtils.COMPARE_NBT);
compareDamage.displayString = getTextForCompareToggle("Damage", InventoryUtils.COMPARE_DAMAGE);
}
compareDamage.displayString = StatCollector.translateToLocal("misc.storagecraft:compareDamage") + ": ";
compareDamage.displayString += ((compareFlags & InventoryUtils.COMPARE_DAMAGE) == InventoryUtils.COMPARE_DAMAGE) ? StatCollector.translateToLocal("misc.storagecraft:on") : StatCollector.translateToLocal("misc.storagecraft:off");
private String getTextForCompareToggle(String which, int flag) {
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
@@ -66,20 +78,17 @@ public class GuiImporter extends GuiContainer {
@Override
protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) {
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
protected void actionPerformed(GuiButton button) {
int flags = compareFlags;
switch (button.id) {
case 0:
if (button.id == compareNBT.id) {
flags ^= InventoryUtils.COMPARE_NBT;
break;
case 1:
} else if (button.id == compareDamage.id) {
flags ^= InventoryUtils.COMPARE_DAMAGE;
break;
}
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 (getController().push(slot.copy())) {
connectedInventory.setInventorySlotContents(currentSlot, null);
connectedInventory.markDirty();
}
}