Initial work on shift clicking support

This commit is contained in:
Raoul Van den Berge
2016-06-17 19:55:55 +02:00
parent eb59b7093e
commit f64cb60f5f
11 changed files with 182 additions and 28 deletions

View File

@@ -1,5 +1,14 @@
# Refined Storage Changelog # Refined Storage Changelog
### 0.7.14
**Bugfixes**
- Fixed item overflow bug with storage drawers and external storage
**Features**
- Added shift clicking support to every inventory (for upgrades etc)
- Tweaked some recipes
- Tweaked some energy usage in machines
### 0.7.13 ### 0.7.13
**Features** **Features**
- Added ability to triple click in grid - Added ability to triple click in grid

View File

@@ -1,6 +1,8 @@
package refinedstorage.container; package refinedstorage.container;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler; import net.minecraftforge.items.SlotItemHandler;
import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.container.slot.SlotSpecimen;
import refinedstorage.tile.TileConstructor; import refinedstorage.tile.TileConstructor;
@@ -9,12 +11,39 @@ public class ContainerConstructor extends ContainerBase {
public ContainerConstructor(EntityPlayer player, TileConstructor constructor) { public ContainerConstructor(EntityPlayer player, TileConstructor constructor) {
super(player); super(player);
addSlotToContainer(new SlotSpecimen(constructor.getFilter(), 0, 80, 20, SlotSpecimen.SPECIMEN_BLOCK));
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(constructor.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotItemHandler(constructor.getUpgrades(), i, 187, 6 + (i * 18)));
} }
addSlotToContainer(new SlotSpecimen(constructor.getFilter(), 0, 80, 20, SlotSpecimen.SPECIMEN_BLOCK));
addPlayerInventory(8, 55); addPlayerInventory(8, 55);
} }
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
ItemStack stack = null;
Slot slot = getSlot(index);
if (slot != null && slot.getHasStack()) {
stack = slot.getStack().copy();
if (index < 4) {
if (!mergeItemStack(stack, 4 + 1, inventorySlots.size(), false)) {
return null;
}
} else if (!mergeItemStack(stack, 0, 4, false)) {
return null;
}
if (stack.stackSize == 0) {
slot.putStack(null);
} else {
slot.onSlotChanged();
}
}
return stack;
}
} }

View File

@@ -30,11 +30,11 @@ public class ContainerCrafter extends ContainerStorage {
if (slot != null && slot.getHasStack()) { if (slot != null && slot.getHasStack()) {
stack = slot.getStack().copy(); stack = slot.getStack().copy();
if (index < 8) { if (index < 9 + 4) {
if (!mergeItemStack(stack, 9, inventorySlots.size(), true)) { if (!mergeItemStack(stack, 9 + 4 + 1, inventorySlots.size(), false)) {
return null; return null;
} }
} else if (!mergeItemStack(stack, 0, 9, false)) { } else if (!mergeItemStack(stack, 0, 9 + 4, false)) {
return null; return null;
} }

View File

@@ -1,6 +1,8 @@
package refinedstorage.container; package refinedstorage.container;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler; import net.minecraftforge.items.SlotItemHandler;
import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.container.slot.SlotSpecimen;
import refinedstorage.tile.TileDestructor; import refinedstorage.tile.TileDestructor;
@@ -9,14 +11,41 @@ public class ContainerDestructor extends ContainerBase {
public ContainerDestructor(EntityPlayer player, TileDestructor destructor) { public ContainerDestructor(EntityPlayer player, TileDestructor destructor) {
super(player); super(player);
for (int i = 0; i < 9; ++i) {
addSlotToContainer(new SlotSpecimen(destructor.getInventory(), i, 8 + (18 * i), 20, SlotSpecimen.SPECIMEN_BLOCK));
}
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(destructor.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotItemHandler(destructor.getUpgrades(), i, 187, 6 + (i * 18)));
} }
for (int i = 0; i < 9; ++i) {
addSlotToContainer(new SlotSpecimen(destructor.getInventory(), i, 8 + (18 * i), 20, SlotSpecimen.SPECIMEN_BLOCK));
}
addPlayerInventory(8, 55); addPlayerInventory(8, 55);
} }
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
ItemStack stack = null;
Slot slot = getSlot(index);
if (slot != null && slot.getHasStack()) {
stack = slot.getStack().copy();
if (index < 4) {
if (!mergeItemStack(stack, 4 + 9, inventorySlots.size(), false)) {
return null;
}
} else if (!mergeItemStack(stack, 0, 4, false)) {
return null;
}
if (stack.stackSize == 0) {
slot.putStack(null);
} else {
slot.onSlotChanged();
}
}
return stack;
}
} }

View File

@@ -31,7 +31,7 @@ public class ContainerDiskDrive extends ContainerStorage {
stack = slot.getStack().copy(); stack = slot.getStack().copy();
if (index < 8) { if (index < 8) {
if (!mergeItemStack(stack, 8, inventorySlots.size(), true)) { if (!mergeItemStack(stack, 8 + 9 + 1, inventorySlots.size(), false)) {
return null; return null;
} }
} else if (!mergeItemStack(stack, 0, 8, false)) { } else if (!mergeItemStack(stack, 0, 8, false)) {

View File

@@ -1,6 +1,8 @@
package refinedstorage.container; package refinedstorage.container;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler; import net.minecraftforge.items.SlotItemHandler;
import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.container.slot.SlotSpecimen;
import refinedstorage.tile.TileExporter; import refinedstorage.tile.TileExporter;
@@ -9,14 +11,41 @@ public class ContainerExporter extends ContainerBase {
public ContainerExporter(EntityPlayer player, TileExporter exporter) { public ContainerExporter(EntityPlayer player, TileExporter exporter) {
super(player); super(player);
for (int i = 0; i < 9; ++i) {
addSlotToContainer(new SlotSpecimen(exporter.getFilters(), i, 8 + (18 * i), 20));
}
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(exporter.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotItemHandler(exporter.getUpgrades(), i, 187, 6 + (i * 18)));
} }
for (int i = 0; i < 9; ++i) {
addSlotToContainer(new SlotSpecimen(exporter.getFilters(), i, 8 + (18 * i), 20));
}
addPlayerInventory(8, 55); addPlayerInventory(8, 55);
} }
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
ItemStack stack = null;
Slot slot = getSlot(index);
if (slot != null && slot.getHasStack()) {
stack = slot.getStack().copy();
if (index < 4) {
if (!mergeItemStack(stack, 4 + 9, inventorySlots.size(), false)) {
return null;
}
} else if (!mergeItemStack(stack, 0, 4, false)) {
return null;
}
if (stack.stackSize == 0) {
slot.putStack(null);
} else {
slot.onSlotChanged();
}
}
return stack;
}
} }

View File

@@ -1,6 +1,8 @@
package refinedstorage.container; package refinedstorage.container;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler; import net.minecraftforge.items.SlotItemHandler;
import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.container.slot.SlotSpecimen;
import refinedstorage.tile.TileImporter; import refinedstorage.tile.TileImporter;
@@ -9,14 +11,41 @@ public class ContainerImporter extends ContainerBase {
public ContainerImporter(EntityPlayer player, TileImporter importer) { public ContainerImporter(EntityPlayer player, TileImporter importer) {
super(player); super(player);
for (int i = 0; i < 9; ++i) {
addSlotToContainer(new SlotSpecimen(importer.getFilters(), i, 8 + (18 * i), 20));
}
for (int i = 0; i < 4; ++i) { for (int i = 0; i < 4; ++i) {
addSlotToContainer(new SlotItemHandler(importer.getUpgrades(), i, 187, 6 + (i * 18))); addSlotToContainer(new SlotItemHandler(importer.getUpgrades(), i, 187, 6 + (i * 18)));
} }
for (int i = 0; i < 9; ++i) {
addSlotToContainer(new SlotSpecimen(importer.getFilters(), i, 8 + (18 * i), 20));
}
addPlayerInventory(8, 55); addPlayerInventory(8, 55);
} }
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
ItemStack stack = null;
Slot slot = getSlot(index);
if (slot != null && slot.getHasStack()) {
stack = slot.getStack().copy();
if (index < 4) {
if (!mergeItemStack(stack, 4 + 9, inventorySlots.size(), false)) {
return null;
}
} else if (!mergeItemStack(stack, 0, 4, false)) {
return null;
}
if (stack.stackSize == 0) {
slot.putStack(null);
} else {
slot.onSlotChanged();
}
}
return stack;
}
} }

View File

@@ -41,7 +41,7 @@ public class ContainerInterface extends ContainerBase {
stack = slot.getStack().copy(); stack = slot.getStack().copy();
if (index < 9) { if (index < 9) {
if (!mergeItemStack(stack, 9, inventorySlots.size(), true)) { if (!mergeItemStack(stack, 9 + 9 + 9 + 4 + 1, inventorySlots.size(), true)) {
return null; return null;
} }
} else if (!mergeItemStack(stack, 0, 9, false)) { } else if (!mergeItemStack(stack, 0, 9, false)) {

View File

@@ -1,6 +1,8 @@
package refinedstorage.container; package refinedstorage.container;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler; import net.minecraftforge.items.SlotItemHandler;
import refinedstorage.container.slot.SlotOutput; import refinedstorage.container.slot.SlotOutput;
import refinedstorage.container.slot.SlotSpecimen; import refinedstorage.container.slot.SlotSpecimen;
@@ -10,6 +12,9 @@ public class ContainerProcessingPatternEncoder extends ContainerBase {
public ContainerProcessingPatternEncoder(EntityPlayer player, TileProcessingPatternEncoder processingPatternEncoder) { public ContainerProcessingPatternEncoder(EntityPlayer player, TileProcessingPatternEncoder processingPatternEncoder) {
super(player); super(player);
addSlotToContainer(new SlotItemHandler(processingPatternEncoder.getPatterns(), 0, 152, 18));
addSlotToContainer(new SlotOutput(processingPatternEncoder.getPatterns(), 1, 152, 58));
int ox = 8; int ox = 8;
int x = ox; int x = ox;
int y = 20; int y = 20;
@@ -31,9 +36,33 @@ public class ContainerProcessingPatternEncoder extends ContainerBase {
} }
} }
addSlotToContainer(new SlotItemHandler(processingPatternEncoder.getPatterns(), 0, 152, 18));
addSlotToContainer(new SlotOutput(processingPatternEncoder.getPatterns(), 1, 152, 58));
addPlayerInventory(8, 90); addPlayerInventory(8, 90);
} }
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int index) {
ItemStack stack = null;
Slot slot = getSlot(index);
if (slot != null && !(slot instanceof SlotSpecimen) && slot.getHasStack()) {
stack = slot.getStack().copy();
if (index < 2) {
if (!mergeItemStack(stack, 2 + 18 + 1, inventorySlots.size(), false)) {
return null;
}
} else if (!mergeItemStack(stack, 0, 1, false)) {
return null;
}
if (stack.stackSize == 0) {
slot.putStack(null);
} else {
slot.onSlotChanged();
}
}
return stack;
}
} }

View File

@@ -38,11 +38,11 @@ public class ContainerSolderer extends ContainerBase {
if (slot != null && slot.getHasStack()) { if (slot != null && slot.getHasStack()) {
stack = slot.getStack().copy(); stack = slot.getStack().copy();
if (index < 3) { if (index < 4) {
if (!mergeItemStack(stack, 3, inventorySlots.size(), true)) { if (!mergeItemStack(stack, 4 + 1, inventorySlots.size(), true)) {
return null; return null;
} }
} else if (!mergeItemStack(stack, 0, 3, false)) { } else if (!mergeItemStack(stack, 0, 3, false)) { // 0 - 3 because we can't shift click to output slot
return null; return null;
} }

View File

@@ -26,11 +26,11 @@ public class ContainerWirelessTransmitter extends ContainerBase {
if (slot != null && slot.getHasStack()) { if (slot != null && slot.getHasStack()) {
stack = slot.getStack().copy(); stack = slot.getStack().copy();
if (index < 8) { if (index < 4) {
if (!mergeItemStack(stack, 9, inventorySlots.size(), true)) { if (!mergeItemStack(stack, 4 + 1, inventorySlots.size(), false)) {
return null; return null;
} }
} else if (!mergeItemStack(stack, 0, 9, false)) { } else if (!mergeItemStack(stack, 0, 4, false)) {
return null; return null;
} }