Make wireless grid usage configurable, fixes #263

This commit is contained in:
Raoul Van den Berge
2016-08-16 23:37:23 +02:00
parent 55847c3c3f
commit 529d5682b9
7 changed files with 43 additions and 19 deletions

View File

@@ -1,5 +1,10 @@
# Refined Storage Changelog
### 0.9
**Features**
- Added fluid storage
- Usage of Wireless Grid is now configurable
### 0.8.19
**Bugfixes**
- Fixed item duplication bug with External Storage

View File

@@ -81,6 +81,11 @@ public final class RefinedStorage {
public int wirelessTransmitterBaseRange;
public int wirelessTransmitterRangePerUpgrade;
public boolean wirelessGridUsesEnergy;
public int wirelessGridOpenUsage;
public int wirelessGridExtractUsage;
public int wirelessGridInsertUsage;
public int rangeUpgradeUsage;
public int speedUpgradeUsage;
public int craftingUpgradeUsage;
@@ -128,6 +133,11 @@ public final class RefinedStorage {
wirelessTransmitterBaseRange = config.getInt("range", "wirelessTransmitter", 16, 0, Integer.MAX_VALUE, "The base range of the Wireless Transmitter");
wirelessTransmitterRangePerUpgrade = config.getInt("rangePerUpgrade", "wirelessTransmitter", 8, 0, Integer.MAX_VALUE, "The additional range per Range Upgrade in the Wireless Transmitter");
wirelessGridUsesEnergy = config.getBoolean("usesEnergy", "wirelessGrid", true, "Whether the Wireless Grid uses energy");
wirelessGridOpenUsage = config.getInt("open", "wirelessGrid", 30, 0, Integer.MAX_VALUE, "The energy used by the Wireless Grid to open");
wirelessGridInsertUsage = config.getInt("insert", "wirelessGrid", 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Grid to insert items");
wirelessGridExtractUsage = config.getInt("extract", "wirelessGrid", 3, 0, Integer.MAX_VALUE, "The energy used by the Wireless Grid to extract items");
rangeUpgradeUsage = config.getInt("range", "upgrades", 8, 0, Integer.MAX_VALUE, "The additional energy used per Range Upgrade");
speedUpgradeUsage = config.getInt("speed", "upgrades", 2, 0, Integer.MAX_VALUE, "The additional energy used per Speed Upgrade");
craftingUpgradeUsage = config.getInt("crafting", "upgrades", 5, 0, Integer.MAX_VALUE, "The additional energy used per Crafting Upgrade");

View File

@@ -25,19 +25,20 @@ public interface IItemGridHandler {
/**
* Called when a player tries to insert an item to the grid.
*
* @param player The player that is attempting the insert
* @param stack The item we're trying to insert
* @return The remainder, or null if there is no remainder
*/
@Nullable
ItemStack onInsert(ItemStack stack);
ItemStack onInsert(EntityPlayerMP player, ItemStack stack);
/**
* Called when a player is trying to insert an item that it is holding in their hand in the GUI.
*
* @param single If we are only inserting 1 item
* @param player The player that is attempting the insert
* @param single If we are only inserting 1 item
*/
void onInsertHeldItem(boolean single, EntityPlayerMP player);
void onInsertHeldItem(EntityPlayerMP player, boolean single);
/**
* Called when a player requested crafting for an item.

View File

@@ -2,6 +2,7 @@ package refinedstorage.apiimpl.network;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumHand;
import refinedstorage.RefinedStorage;
import refinedstorage.RefinedStorageGui;
@@ -14,10 +15,6 @@ import java.util.Iterator;
import java.util.List;
public class WirelessGridHandler implements IWirelessGridHandler {
public static final int USAGE_OPEN = 30;
public static final int USAGE_EXTRACT = 3;
public static final int USAGE_INSERT = 3;
private INetworkMaster network;
private List<IWirelessGridConsumer> consumers = new ArrayList<>();
@@ -55,13 +52,19 @@ public class WirelessGridHandler implements IWirelessGridHandler {
return false;
}
consumers.add(new WirelessGridConsumer(player, player.getHeldItem(hand)));
ItemStack stack = player.getHeldItem(hand);
if (RefinedStorage.INSTANCE.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE && RefinedStorageItems.WIRELESS_GRID.getEnergyStored(stack) <= RefinedStorage.INSTANCE.wirelessGridOpenUsage) {
return true;
}
consumers.add(new WirelessGridConsumer(player, stack));
player.openGui(RefinedStorage.INSTANCE, RefinedStorageGui.WIRELESS_GRID, player.worldObj, hand.ordinal(), 0, 0);
network.sendItemStorageToClient((EntityPlayerMP) player);
drainEnergy(player, USAGE_OPEN);
drainEnergy(player, RefinedStorage.INSTANCE.wirelessGridOpenUsage);
return true;
}
@@ -79,7 +82,7 @@ public class WirelessGridHandler implements IWirelessGridHandler {
public void drainEnergy(EntityPlayer player, int energy) {
IWirelessGridConsumer consumer = getConsumer(player);
if (consumer != null) {
if (consumer != null && RefinedStorage.INSTANCE.wirelessGridUsesEnergy) {
ItemWirelessGrid item = RefinedStorageItems.WIRELESS_GRID;
if (consumer.getStack().getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) {

View File

@@ -3,13 +3,13 @@ package refinedstorage.apiimpl.network.grid;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.InventoryHelper;
import net.minecraft.item.ItemStack;
import refinedstorage.RefinedStorage;
import refinedstorage.api.autocrafting.ICraftingPattern;
import refinedstorage.api.autocrafting.ICraftingTask;
import refinedstorage.api.network.INetworkMaster;
import refinedstorage.api.network.NetworkUtils;
import refinedstorage.api.network.grid.IItemGridHandler;
import refinedstorage.api.storage.CompareUtils;
import refinedstorage.apiimpl.network.WirelessGridHandler;
public class ItemGridHandler implements IItemGridHandler {
public static final int MAX_CRAFTING_PER_REQUEST = 500;
@@ -75,17 +75,21 @@ public class ItemGridHandler implements IItemGridHandler {
player.updateHeldItem();
}
network.getWirelessGridHandler().drainEnergy(player, WirelessGridHandler.USAGE_EXTRACT);
network.getWirelessGridHandler().drainEnergy(player, RefinedStorage.INSTANCE.wirelessGridExtractUsage);
}
}
@Override
public ItemStack onInsert(ItemStack stack) {
return network.insertItem(stack, stack.stackSize, false);
public ItemStack onInsert(EntityPlayerMP player, ItemStack stack) {
ItemStack remainder = network.insertItem(stack, stack.stackSize, false);
network.getWirelessGridHandler().drainEnergy(player, RefinedStorage.INSTANCE.wirelessGridInsertUsage);
return remainder;
}
@Override
public void onInsertHeldItem(boolean single, EntityPlayerMP player) {
public void onInsertHeldItem(EntityPlayerMP player, boolean single) {
if (player.inventory.getItemStack() == null) {
return;
}
@@ -109,7 +113,7 @@ public class ItemGridHandler implements IItemGridHandler {
player.updateHeldItem();
network.getWirelessGridHandler().drainEnergy(player, WirelessGridHandler.USAGE_INSERT);
network.getWirelessGridHandler().drainEnergy(player, RefinedStorage.INSTANCE.wirelessGridInsertUsage);
}
@Override

View File

@@ -1,6 +1,7 @@
package refinedstorage.container;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraftforge.items.SlotItemHandler;
@@ -108,7 +109,7 @@ public class ContainerGrid extends ContainerBase {
((TileGrid) grid).onCraftedShift(this, player);
} else if (slot != patternResultSlot && !(slot instanceof SlotSpecimenLegacy)) {
if (grid.getType() != EnumGridType.FLUID && grid.getItemHandler() != null) {
slot.putStack(grid.getItemHandler().onInsert(slot.getStack()));
slot.putStack(grid.getItemHandler().onInsert((EntityPlayerMP) player, slot.getStack()));
} else if (grid.getType() == EnumGridType.FLUID && grid.getFluidHandler() != null) {
slot.putStack(grid.getFluidHandler().onInsert(slot.getStack()));
}

View File

@@ -35,7 +35,7 @@ public class MessageGridItemInsertHeld extends MessageHandlerPlayerToServer<Mess
IItemGridHandler handler = ((ContainerGrid) container).getGrid().getItemHandler();
if (handler != null) {
handler.onInsertHeldItem(message.single, player);
handler.onInsertHeldItem(player, message.single);
}
}
}