Refactor wireless grid API to allow for easy implementation of wireless crafting monitors
This commit is contained in:
@@ -5,6 +5,7 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingPattern;
|
|||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.fluid.IFluidStorageCache;
|
import com.raoulvdberge.refinedstorage.api.storage.fluid.IFluidStorageCache;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.item.IItemStorageCache;
|
import com.raoulvdberge.refinedstorage.api.storage.item.IItemStorageCache;
|
||||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||||
@@ -59,9 +60,9 @@ public interface INetworkMaster {
|
|||||||
IFluidGridHandler getFluidGridHandler();
|
IFluidGridHandler getFluidGridHandler();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the {@link IWirelessGridHandler} of this network
|
* @return the {@link INetworkItemHandler} of this network
|
||||||
*/
|
*/
|
||||||
IWirelessGridHandler getWirelessGridHandler();
|
INetworkItemHandler getNetworkItemHandler();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the {@link IItemStorageCache} of this network
|
* @return the {@link IItemStorageCache} of this network
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.api.network;
|
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Represents a player using a wireless grid.
|
|
||||||
*/
|
|
||||||
public interface IWirelessGridConsumer {
|
|
||||||
/**
|
|
||||||
* @return the player using the wireless grid
|
|
||||||
*/
|
|
||||||
EntityPlayer getPlayer();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the wireless grid stack
|
|
||||||
*/
|
|
||||||
ItemStack getStack();
|
|
||||||
}
|
|
||||||
@@ -1,51 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.api.network;
|
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.util.EnumHand;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Defines behavior of wireless grids.
|
|
||||||
*/
|
|
||||||
public interface IWirelessGridHandler {
|
|
||||||
/**
|
|
||||||
* Called every network tick.
|
|
||||||
*/
|
|
||||||
void update();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when a player opens a wireless grid.
|
|
||||||
*
|
|
||||||
* @param player the player that opened the wireless grid
|
|
||||||
* @param controllerWorld the world of the controller
|
|
||||||
* @param hand the hand the player opened it with
|
|
||||||
* @return true if the opening was successful, false otherwise
|
|
||||||
*/
|
|
||||||
boolean onOpen(EntityPlayer player, World controllerWorld, EnumHand hand);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Called when the player closes a wireless grid.
|
|
||||||
*
|
|
||||||
* @param player the player that closed the grid
|
|
||||||
*/
|
|
||||||
void onClose(EntityPlayer player);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Drains energy from the wireless grid of a player.
|
|
||||||
*
|
|
||||||
* @param player the player that is using the wireless grid to drain energy from
|
|
||||||
* @param energy the amount of energy that has to be drained
|
|
||||||
*/
|
|
||||||
void drainEnergy(EntityPlayer player, int energy);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns a {@link IWirelessGridConsumer} for a player.
|
|
||||||
*
|
|
||||||
* @param player the player to get the wireless grid consumer for
|
|
||||||
* @return the {@link IWirelessGridConsumer} that corresponds to a player, or null if the player isn't using a wireless grid
|
|
||||||
*/
|
|
||||||
@Nullable
|
|
||||||
IWirelessGridConsumer getConsumer(EntityPlayer player);
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.api.network.item;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a network item.
|
||||||
|
*/
|
||||||
|
public interface INetworkItem {
|
||||||
|
/**
|
||||||
|
* @return the player using the network item
|
||||||
|
*/
|
||||||
|
EntityPlayer getPlayer();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the network item is opened.
|
||||||
|
*
|
||||||
|
* @param network the network
|
||||||
|
* @param player the player
|
||||||
|
* @param controllerWorld the world where the controller is in
|
||||||
|
* @param hand the hand
|
||||||
|
* @return whether the network item can be opened
|
||||||
|
*/
|
||||||
|
boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand);
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.api.network.item;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles network items.
|
||||||
|
*/
|
||||||
|
public interface INetworkItemHandler {
|
||||||
|
/**
|
||||||
|
* Called every network tick.
|
||||||
|
*/
|
||||||
|
void update();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a player opens a network item.
|
||||||
|
*
|
||||||
|
* @param player the player that opened the network item
|
||||||
|
* @param controllerWorld the world of the controller
|
||||||
|
* @param hand the hand the player opened it with
|
||||||
|
* @return true if the opening was successful, false otherwise
|
||||||
|
*/
|
||||||
|
boolean onOpen(EntityPlayer player, World controllerWorld, EnumHand hand);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the player closes a network item.
|
||||||
|
*
|
||||||
|
* @param player the player that closed the network item
|
||||||
|
*/
|
||||||
|
void onClose(EntityPlayer player);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a {@link INetworkItem} for a player.
|
||||||
|
*
|
||||||
|
* @param player the player to get the network item for
|
||||||
|
* @return the {@link INetworkItem} that corresponds to a player, or null if the player isn't using a network item
|
||||||
|
*/
|
||||||
|
@Nullable
|
||||||
|
INetworkItem getItem(EntityPlayer player);
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.api.network.item;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provider for network items. Implement this on the item.
|
||||||
|
*/
|
||||||
|
public interface INetworkItemProvider {
|
||||||
|
/**
|
||||||
|
* Creates a network item for the given item stack.
|
||||||
|
*
|
||||||
|
* @param handler the network item handlelr
|
||||||
|
* @param player the player
|
||||||
|
* @param stack the stack
|
||||||
|
* @return the network item
|
||||||
|
*/
|
||||||
|
INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack);
|
||||||
|
}
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.network;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.IWirelessGridConsumer;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
|
|
||||||
public class WirelessGridConsumer implements IWirelessGridConsumer {
|
|
||||||
private EntityPlayer player;
|
|
||||||
private ItemStack stack;
|
|
||||||
|
|
||||||
public WirelessGridConsumer(EntityPlayer player, ItemStack stack) {
|
|
||||||
this.player = player;
|
|
||||||
this.stack = stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EntityPlayer getPlayer() {
|
|
||||||
return player;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStack() {
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,115 +0,0 @@
|
|||||||
package com.raoulvdberge.refinedstorage.apiimpl.network;
|
|
||||||
|
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSGui;
|
|
||||||
import com.raoulvdberge.refinedstorage.RSItems;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.*;
|
|
||||||
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
import net.minecraft.util.EnumHand;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class WirelessGridHandler implements IWirelessGridHandler {
|
|
||||||
private INetworkMaster network;
|
|
||||||
|
|
||||||
private List<IWirelessGridConsumer> consumers = new ArrayList<>();
|
|
||||||
private List<IWirelessGridConsumer> consumersToRemove = new ArrayList<>();
|
|
||||||
|
|
||||||
public WirelessGridHandler(INetworkMaster network) {
|
|
||||||
this.network = network;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void update() {
|
|
||||||
consumers.removeAll(consumersToRemove);
|
|
||||||
consumersToRemove.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onOpen(EntityPlayer player, World controllerWorld, EnumHand hand) {
|
|
||||||
boolean inRange = false;
|
|
||||||
|
|
||||||
for (INetworkNode node : network.getNodeGraph().all()) {
|
|
||||||
if (node instanceof IWirelessTransmitter && node.getNodeWorld().provider.getDimension() == player.dimension) {
|
|
||||||
IWirelessTransmitter transmitter = (IWirelessTransmitter) node;
|
|
||||||
|
|
||||||
double distance = Math.sqrt(Math.pow(transmitter.getOrigin().getX() - player.posX, 2) + Math.pow(transmitter.getOrigin().getY() - player.posY, 2) + Math.pow(transmitter.getOrigin().getZ() - player.posZ, 2));
|
|
||||||
|
|
||||||
if (distance < transmitter.getRange()) {
|
|
||||||
inRange = true;
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!inRange) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
ItemStack stack = player.getHeldItem(hand);
|
|
||||||
|
|
||||||
if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE && RSItems.WIRELESS_GRID.getEnergyStored(stack) <= RS.INSTANCE.config.wirelessGridOpenUsage) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
consumers.add(new WirelessGridConsumer(player, stack));
|
|
||||||
|
|
||||||
player.openGui(RS.INSTANCE, RSGui.WIRELESS_GRID, player.worldObj, hand.ordinal(), controllerWorld.provider.getDimension(), 0);
|
|
||||||
|
|
||||||
network.sendItemStorageToClient((EntityPlayerMP) player);
|
|
||||||
|
|
||||||
drainEnergy(player, RS.INSTANCE.config.wirelessGridOpenUsage);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClose(EntityPlayer player) {
|
|
||||||
IWirelessGridConsumer consumer = getConsumer(player);
|
|
||||||
|
|
||||||
if (consumer != null) {
|
|
||||||
consumersToRemove.add(consumer);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void drainEnergy(EntityPlayer player, int energy) {
|
|
||||||
IWirelessGridConsumer consumer = getConsumer(player);
|
|
||||||
|
|
||||||
if (consumer != null && RS.INSTANCE.config.wirelessGridUsesEnergy) {
|
|
||||||
ItemWirelessGrid item = RSItems.WIRELESS_GRID;
|
|
||||||
|
|
||||||
if (consumer.getStack().getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) {
|
|
||||||
item.extractEnergy(consumer.getStack(), energy, false);
|
|
||||||
|
|
||||||
if (item.getEnergyStored(consumer.getStack()) <= 0) {
|
|
||||||
onClose(player);
|
|
||||||
|
|
||||||
consumer.getPlayer().closeScreen();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public IWirelessGridConsumer getConsumer(EntityPlayer player) {
|
|
||||||
Iterator<IWirelessGridConsumer> it = consumers.iterator();
|
|
||||||
|
|
||||||
while (it.hasNext()) {
|
|
||||||
IWirelessGridConsumer consumer = it.next();
|
|
||||||
|
|
||||||
if (consumer.getPlayer() == player) {
|
|
||||||
return consumer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -4,8 +4,10 @@ import com.raoulvdberge.refinedstorage.RS;
|
|||||||
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.CraftingTask;
|
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.task.CraftingTask;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessGrid;
|
||||||
import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewResponse;
|
import com.raoulvdberge.refinedstorage.network.MessageGridCraftingPreviewResponse;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
@@ -78,7 +80,11 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
player.updateHeldItem();
|
player.updateHeldItem();
|
||||||
}
|
}
|
||||||
|
|
||||||
network.getWirelessGridHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridExtractUsage);
|
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
|
||||||
|
|
||||||
|
if (networkItem != null && networkItem instanceof NetworkItemWirelessGrid) {
|
||||||
|
((NetworkItemWirelessGrid) networkItem).drainEnergy(RS.INSTANCE.config.wirelessGridExtractUsage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,7 +92,11 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
public ItemStack onInsert(EntityPlayerMP player, ItemStack stack) {
|
public ItemStack onInsert(EntityPlayerMP player, ItemStack stack) {
|
||||||
ItemStack remainder = network.insertItem(stack, stack.stackSize, false);
|
ItemStack remainder = network.insertItem(stack, stack.stackSize, false);
|
||||||
|
|
||||||
network.getWirelessGridHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridInsertUsage);
|
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
|
||||||
|
|
||||||
|
if (networkItem != null && networkItem instanceof NetworkItemWirelessGrid) {
|
||||||
|
((NetworkItemWirelessGrid) networkItem).drainEnergy(RS.INSTANCE.config.wirelessGridInsertUsage);
|
||||||
|
}
|
||||||
|
|
||||||
return remainder;
|
return remainder;
|
||||||
}
|
}
|
||||||
@@ -116,7 +126,11 @@ public class ItemGridHandler implements IItemGridHandler {
|
|||||||
|
|
||||||
player.updateHeldItem();
|
player.updateHeldItem();
|
||||||
|
|
||||||
network.getWirelessGridHandler().drainEnergy(player, RS.INSTANCE.config.wirelessGridInsertUsage);
|
INetworkItem networkItem = network.getNetworkItemHandler().getItem(player);
|
||||||
|
|
||||||
|
if (networkItem != null && networkItem instanceof NetworkItemWirelessGrid) {
|
||||||
|
((NetworkItemWirelessGrid) networkItem).drainEnergy(RS.INSTANCE.config.wirelessGridInsertUsage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,92 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.apiimpl.network.item;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.IWirelessTransmitter;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class NetworkItemHandler implements INetworkItemHandler {
|
||||||
|
private INetworkMaster network;
|
||||||
|
|
||||||
|
private List<INetworkItem> items = new ArrayList<>();
|
||||||
|
private List<INetworkItem> itemsToRemove = new ArrayList<>();
|
||||||
|
|
||||||
|
public NetworkItemHandler(INetworkMaster network) {
|
||||||
|
this.network = network;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void update() {
|
||||||
|
items.removeAll(itemsToRemove);
|
||||||
|
itemsToRemove.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOpen(EntityPlayer player, World controllerWorld, EnumHand hand) {
|
||||||
|
boolean inRange = false;
|
||||||
|
|
||||||
|
for (INetworkNode node : network.getNodeGraph().all()) {
|
||||||
|
if (node instanceof IWirelessTransmitter && node.getNodeWorld().provider.getDimension() == player.dimension) {
|
||||||
|
IWirelessTransmitter transmitter = (IWirelessTransmitter) node;
|
||||||
|
|
||||||
|
double distance = Math.sqrt(Math.pow(transmitter.getOrigin().getX() - player.posX, 2) + Math.pow(transmitter.getOrigin().getY() - player.posY, 2) + Math.pow(transmitter.getOrigin().getZ() - player.posZ, 2));
|
||||||
|
|
||||||
|
if (distance < transmitter.getRange()) {
|
||||||
|
inRange = true;
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!inRange) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemStack stack = player.getHeldItem(hand);
|
||||||
|
|
||||||
|
INetworkItem item = ((INetworkItemProvider) stack.getItem()).provide(this, player, stack);
|
||||||
|
|
||||||
|
if (item.onOpen(network, player, controllerWorld, hand)) {
|
||||||
|
items.add(item);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClose(EntityPlayer player) {
|
||||||
|
INetworkItem item = getItem(player);
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
itemsToRemove.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public INetworkItem getItem(EntityPlayer player) {
|
||||||
|
Iterator<INetworkItem> it = items.iterator();
|
||||||
|
|
||||||
|
while (it.hasNext()) {
|
||||||
|
INetworkItem item = it.next();
|
||||||
|
|
||||||
|
if (item.getPlayer() == player) {
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.apiimpl.network.item;
|
||||||
|
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.RSGui;
|
||||||
|
import com.raoulvdberge.refinedstorage.RSItems;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
|
import com.raoulvdberge.refinedstorage.item.ItemWirelessGrid;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.EnumHand;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public class NetworkItemWirelessGrid implements INetworkItem {
|
||||||
|
private INetworkItemHandler handler;
|
||||||
|
private EntityPlayer player;
|
||||||
|
private ItemStack stack;
|
||||||
|
|
||||||
|
public NetworkItemWirelessGrid(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
||||||
|
this.handler = handler;
|
||||||
|
this.player = player;
|
||||||
|
this.stack = stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EntityPlayer getPlayer() {
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOpen(INetworkMaster network, EntityPlayer player, World controllerWorld, EnumHand hand) {
|
||||||
|
if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE && RSItems.WIRELESS_GRID.getEnergyStored(stack) <= RS.INSTANCE.config.wirelessGridOpenUsage) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
player.openGui(RS.INSTANCE, RSGui.WIRELESS_GRID, player.worldObj, hand.ordinal(), controllerWorld.provider.getDimension(), 0);
|
||||||
|
|
||||||
|
network.sendItemStorageToClient((EntityPlayerMP) player);
|
||||||
|
|
||||||
|
drainEnergy(RS.INSTANCE.config.wirelessGridOpenUsage);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drainEnergy(int energy) {
|
||||||
|
if (RS.INSTANCE.config.wirelessGridUsesEnergy && stack.getItemDamage() != ItemWirelessGrid.TYPE_CREATIVE) {
|
||||||
|
ItemWirelessGrid item = RSItems.WIRELESS_GRID;
|
||||||
|
|
||||||
|
item.extractEnergy(stack, energy, false);
|
||||||
|
|
||||||
|
if (item.getEnergyStored(stack) <= 0) {
|
||||||
|
handler.onClose(player);
|
||||||
|
|
||||||
|
player.closeScreen();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,10 +4,10 @@ import com.raoulvdberge.refinedstorage.RSItems;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.energy.IEnergyStorage;
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
|
||||||
public class WirelessGridEnergyForge implements IEnergyStorage {
|
public class NetworkItemEnergyForge implements IEnergyStorage {
|
||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
|
|
||||||
public WirelessGridEnergyForge(ItemStack stack) {
|
public NetworkItemEnergyForge(ItemStack stack) {
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5,10 +5,10 @@ import net.darkhax.tesla.api.ITeslaConsumer;
|
|||||||
import net.darkhax.tesla.api.ITeslaHolder;
|
import net.darkhax.tesla.api.ITeslaHolder;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class WirelessGridEnergyTesla implements ITeslaHolder, ITeslaConsumer {
|
public class NetworkItemEnergyTesla implements ITeslaHolder, ITeslaConsumer {
|
||||||
private ItemStack stack;
|
private ItemStack stack;
|
||||||
|
|
||||||
public WirelessGridEnergyTesla(ItemStack stack) {
|
public NetworkItemEnergyTesla(ItemStack stack) {
|
||||||
this.stack = stack;
|
this.stack = stack;
|
||||||
}
|
}
|
||||||
|
|
||||||
298
src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java
Executable file
298
src/main/java/com/raoulvdberge/refinedstorage/item/ItemNetworkItem.java
Executable file
@@ -0,0 +1,298 @@
|
|||||||
|
package com.raoulvdberge.refinedstorage.item;
|
||||||
|
|
||||||
|
import cofh.api.energy.ItemEnergyContainer;
|
||||||
|
import com.raoulvdberge.refinedstorage.RS;
|
||||||
|
import com.raoulvdberge.refinedstorage.RSBlocks;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemProvider;
|
||||||
|
import com.raoulvdberge.refinedstorage.integration.forgeenergy.NetworkItemEnergyForge;
|
||||||
|
import com.raoulvdberge.refinedstorage.integration.ic2.IntegrationIC2;
|
||||||
|
import com.raoulvdberge.refinedstorage.integration.tesla.IntegrationTesla;
|
||||||
|
import com.raoulvdberge.refinedstorage.integration.tesla.NetworkItemEnergyTesla;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.TileController;
|
||||||
|
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
||||||
|
import ic2.api.item.IElectricItemManager;
|
||||||
|
import ic2.api.item.ISpecialElectricItem;
|
||||||
|
import net.darkhax.tesla.capability.TeslaCapabilities;
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
import net.minecraft.client.resources.I18n;
|
||||||
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
import net.minecraft.util.*;
|
||||||
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.common.DimensionManager;
|
||||||
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
||||||
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
|
import net.minecraftforge.fml.common.Optional;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Optional.InterfaceList({
|
||||||
|
@Optional.Interface(iface = "ic2.api.item.ISpecialElectricItem", modid = "IC2"),
|
||||||
|
@Optional.Interface(iface = "ic2.api.item.IElectricItemManager", modid = "IC2")
|
||||||
|
})
|
||||||
|
public abstract class ItemNetworkItem extends ItemEnergyContainer implements INetworkItemProvider, ISpecialElectricItem, IElectricItemManager {
|
||||||
|
public static final int TYPE_NORMAL = 0;
|
||||||
|
public static final int TYPE_CREATIVE = 1;
|
||||||
|
|
||||||
|
private static final String NBT_CONTROLLER_X = "ControllerX";
|
||||||
|
private static final String NBT_CONTROLLER_Y = "ControllerY";
|
||||||
|
private static final String NBT_CONTROLLER_Z = "ControllerZ";
|
||||||
|
private static final String NBT_DIMENSION_ID = "DimensionID";
|
||||||
|
|
||||||
|
public ItemNetworkItem(String name) {
|
||||||
|
super(3200);
|
||||||
|
|
||||||
|
setRegistryName(RS.ID, name);
|
||||||
|
setMaxDamage(3200);
|
||||||
|
setMaxStackSize(1);
|
||||||
|
setHasSubtypes(true);
|
||||||
|
setCreativeTab(RS.INSTANCE.tab);
|
||||||
|
addPropertyOverride(new ResourceLocation("connected"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) {
|
||||||
|
if (!world.isRemote && isValid(stack)) {
|
||||||
|
World controllerWorld = DimensionManager.getWorld(getDimensionId(stack));
|
||||||
|
|
||||||
|
TileEntity controller;
|
||||||
|
|
||||||
|
if (controllerWorld != null && ((controller = controllerWorld.getTileEntity(new BlockPos(getX(stack), getY(stack), getZ(stack)))) instanceof TileController)) {
|
||||||
|
if (((TileController) controller).getNetworkItemHandler().onOpen(player, controllerWorld, hand)) {
|
||||||
|
return new ActionResult<>(EnumActionResult.SUCCESS, stack);
|
||||||
|
} else {
|
||||||
|
player.addChatComponentMessage(new TextComponentTranslation("misc.refinedstorage:network_item.out_of_range"));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
player.addChatComponentMessage(new TextComponentTranslation("misc.refinedstorage:network_item.not_found"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.onItemRightClick(stack, world, player, hand);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt) {
|
||||||
|
return new NetworkItemCapabilityProvider(stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDamageable() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isRepairable() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getDurabilityForDisplay(ItemStack stack) {
|
||||||
|
return 1D - ((double) getEnergyStored(stack) / (double) getMaxEnergyStored(stack));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isDamaged(ItemStack stack) {
|
||||||
|
return stack.getItemDamage() != TYPE_CREATIVE;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDamage(ItemStack stack, int damage) {
|
||||||
|
// NO OP
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void getSubItems(Item item, CreativeTabs tab, List<ItemStack> list) {
|
||||||
|
list.add(new ItemStack(item, 1, TYPE_NORMAL));
|
||||||
|
|
||||||
|
ItemStack fullyCharged = new ItemStack(item, 1, TYPE_NORMAL);
|
||||||
|
receiveEnergy(fullyCharged, getMaxEnergyStored(fullyCharged), false);
|
||||||
|
list.add(fullyCharged);
|
||||||
|
|
||||||
|
list.add(new ItemStack(item, 1, TYPE_CREATIVE));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
|
||||||
|
super.addInformation(stack, player, tooltip, advanced);
|
||||||
|
|
||||||
|
if (stack.getItemDamage() != TYPE_CREATIVE) {
|
||||||
|
tooltip.add(I18n.format("misc.refinedstorage:energy_stored", getEnergyStored(stack), getMaxEnergyStored(stack)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isValid(stack)) {
|
||||||
|
tooltip.add(I18n.format("misc.refinedstorage:network_item.tooltip", getX(stack), getY(stack), getZ(stack)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
|
||||||
|
Block block = world.getBlockState(pos).getBlock();
|
||||||
|
|
||||||
|
if (block == RSBlocks.CONTROLLER) {
|
||||||
|
NBTTagCompound tag = stack.getTagCompound();
|
||||||
|
|
||||||
|
if (tag == null) {
|
||||||
|
tag = new NBTTagCompound();
|
||||||
|
}
|
||||||
|
|
||||||
|
tag.setInteger(NBT_CONTROLLER_X, pos.getX());
|
||||||
|
tag.setInteger(NBT_CONTROLLER_Y, pos.getY());
|
||||||
|
tag.setInteger(NBT_CONTROLLER_Z, pos.getZ());
|
||||||
|
tag.setInteger(NBT_DIMENSION_ID, player.dimension);
|
||||||
|
tag.setInteger(TileGrid.NBT_VIEW_TYPE, TileGrid.VIEW_TYPE_NORMAL);
|
||||||
|
tag.setInteger(TileGrid.NBT_SORTING_DIRECTION, TileGrid.SORTING_DIRECTION_DESCENDING);
|
||||||
|
tag.setInteger(TileGrid.NBT_SORTING_TYPE, TileGrid.SORTING_TYPE_NAME);
|
||||||
|
tag.setInteger(TileGrid.NBT_SEARCH_BOX_MODE, TileGrid.SEARCH_BOX_MODE_NORMAL);
|
||||||
|
|
||||||
|
stack.setTagCompound(tag);
|
||||||
|
|
||||||
|
return EnumActionResult.SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
return EnumActionResult.PASS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getDimensionId(ItemStack stack) {
|
||||||
|
return stack.getTagCompound().getInteger(NBT_DIMENSION_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getX(ItemStack stack) {
|
||||||
|
return stack.getTagCompound().getInteger(NBT_CONTROLLER_X);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getY(ItemStack stack) {
|
||||||
|
return stack.getTagCompound().getInteger(NBT_CONTROLLER_Y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int getZ(ItemStack stack) {
|
||||||
|
return stack.getTagCompound().getInteger(NBT_CONTROLLER_Z);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) {
|
||||||
|
if (oldStack.getItem() == newStack.getItem()) {
|
||||||
|
if (isValid(oldStack) && isValid(newStack)) {
|
||||||
|
if (getX(oldStack) == getX(newStack) && getY(oldStack) == getY(newStack) && getZ(oldStack) == getZ(newStack) && getDimensionId(oldStack) == getDimensionId(newStack)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.shouldCauseReequipAnimation(oldStack, newStack, slotChanged);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUnlocalizedName() {
|
||||||
|
return "item." + RS.ID + ":" + getRegistryName().getResourcePath();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getUnlocalizedName(ItemStack stack) {
|
||||||
|
return getUnlocalizedName() + "." + stack.getItemDamage();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public IElectricItemManager getManager(ItemStack stack) {
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public double charge(ItemStack stack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate) {
|
||||||
|
return IntegrationIC2.toEU(receiveEnergy(stack, IntegrationIC2.toRS(amount), simulate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public double discharge(ItemStack stack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate) {
|
||||||
|
return IntegrationIC2.toEU(extractEnergy(stack, IntegrationIC2.toRS(amount), simulate));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public double getCharge(ItemStack stack) {
|
||||||
|
return IntegrationIC2.toEU(getEnergyStored(stack));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public double getMaxCharge(ItemStack stack) {
|
||||||
|
return IntegrationIC2.toEU(getMaxEnergyStored(stack));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public boolean canUse(ItemStack stack, double amount) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public boolean use(ItemStack stack, double amount, EntityLivingBase entity) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public void chargeFromArmor(ItemStack stack, EntityLivingBase entity) {
|
||||||
|
// NO OP
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public String getToolTip(ItemStack stack) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Optional.Method(modid = "IC2")
|
||||||
|
@Override
|
||||||
|
public int getTier(ItemStack stack) {
|
||||||
|
return Integer.MAX_VALUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isValid(ItemStack stack) {
|
||||||
|
return stack.hasTagCompound()
|
||||||
|
&& stack.getTagCompound().hasKey(NBT_CONTROLLER_X)
|
||||||
|
&& stack.getTagCompound().hasKey(NBT_CONTROLLER_Y)
|
||||||
|
&& stack.getTagCompound().hasKey(NBT_CONTROLLER_Z)
|
||||||
|
&& stack.getTagCompound().hasKey(NBT_DIMENSION_ID);
|
||||||
|
}
|
||||||
|
|
||||||
|
private class NetworkItemCapabilityProvider implements ICapabilityProvider {
|
||||||
|
private ItemStack stack;
|
||||||
|
|
||||||
|
public NetworkItemCapabilityProvider(ItemStack stack) {
|
||||||
|
this.stack = stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
|
||||||
|
return capability == CapabilityEnergy.ENERGY ||
|
||||||
|
(IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) {
|
||||||
|
if (capability == CapabilityEnergy.ENERGY) {
|
||||||
|
return (T) new NetworkItemEnergyForge(stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) {
|
||||||
|
return (T) new NetworkItemEnergyTesla(stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,180 +1,15 @@
|
|||||||
package com.raoulvdberge.refinedstorage.item;
|
package com.raoulvdberge.refinedstorage.item;
|
||||||
|
|
||||||
import cofh.api.energy.ItemEnergyContainer;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItem;
|
||||||
import com.raoulvdberge.refinedstorage.RS;
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
import com.raoulvdberge.refinedstorage.RSBlocks;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemWirelessGrid;
|
||||||
import com.raoulvdberge.refinedstorage.integration.forgeenergy.WirelessGridEnergyForge;
|
|
||||||
import com.raoulvdberge.refinedstorage.integration.ic2.IntegrationIC2;
|
|
||||||
import com.raoulvdberge.refinedstorage.integration.tesla.IntegrationTesla;
|
|
||||||
import com.raoulvdberge.refinedstorage.integration.tesla.WirelessGridEnergyTesla;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.TileController;
|
|
||||||
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
import com.raoulvdberge.refinedstorage.tile.grid.TileGrid;
|
||||||
import ic2.api.item.IElectricItemManager;
|
|
||||||
import ic2.api.item.ISpecialElectricItem;
|
|
||||||
import net.darkhax.tesla.capability.TeslaCapabilities;
|
|
||||||
import net.minecraft.block.Block;
|
|
||||||
import net.minecraft.client.resources.I18n;
|
|
||||||
import net.minecraft.creativetab.CreativeTabs;
|
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.Item;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
|
||||||
import net.minecraft.util.*;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
|
||||||
import net.minecraft.util.text.TextComponentTranslation;
|
|
||||||
import net.minecraft.world.World;
|
|
||||||
import net.minecraftforge.common.DimensionManager;
|
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
|
||||||
import net.minecraftforge.common.capabilities.ICapabilityProvider;
|
|
||||||
import net.minecraftforge.energy.CapabilityEnergy;
|
|
||||||
import net.minecraftforge.fml.common.Optional;
|
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
@Optional.InterfaceList({
|
|
||||||
@Optional.Interface(iface = "ic2.api.item.ISpecialElectricItem", modid = "IC2"),
|
|
||||||
@Optional.Interface(iface = "ic2.api.item.IElectricItemManager", modid = "IC2")
|
|
||||||
})
|
|
||||||
public class ItemWirelessGrid extends ItemEnergyContainer implements ISpecialElectricItem, IElectricItemManager {
|
|
||||||
public static final int TYPE_NORMAL = 0;
|
|
||||||
public static final int TYPE_CREATIVE = 1;
|
|
||||||
|
|
||||||
private static final String NBT_CONTROLLER_X = "ControllerX";
|
|
||||||
private static final String NBT_CONTROLLER_Y = "ControllerY";
|
|
||||||
private static final String NBT_CONTROLLER_Z = "ControllerZ";
|
|
||||||
private static final String NBT_DIMENSION_ID = "DimensionID";
|
|
||||||
|
|
||||||
|
public class ItemWirelessGrid extends ItemNetworkItem {
|
||||||
public ItemWirelessGrid() {
|
public ItemWirelessGrid() {
|
||||||
super(3200);
|
super("wireless_grid");
|
||||||
|
|
||||||
setRegistryName(RS.ID, "wireless_grid");
|
|
||||||
setMaxDamage(3200);
|
|
||||||
setMaxStackSize(1);
|
|
||||||
setHasSubtypes(true);
|
|
||||||
setCreativeTab(RS.INSTANCE.tab);
|
|
||||||
addPropertyOverride(new ResourceLocation("connected"), (stack, world, entity) -> (entity != null && isValid(stack)) ? 1.0f : 0.0f);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ICapabilityProvider initCapabilities(ItemStack stack, NBTTagCompound nbt) {
|
|
||||||
return new WirelessGridCapabilityProvider(stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isDamageable() {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isRepairable() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getDurabilityForDisplay(ItemStack stack) {
|
|
||||||
return 1D - ((double) getEnergyStored(stack) / (double) getMaxEnergyStored(stack));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isDamaged(ItemStack stack) {
|
|
||||||
return stack.getItemDamage() != TYPE_CREATIVE;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setDamage(ItemStack stack, int damage) {
|
|
||||||
// NO OP
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void getSubItems(Item item, CreativeTabs tab, List<ItemStack> list) {
|
|
||||||
list.add(new ItemStack(item, 1, TYPE_NORMAL));
|
|
||||||
|
|
||||||
ItemStack fullyCharged = new ItemStack(item, 1, TYPE_NORMAL);
|
|
||||||
receiveEnergy(fullyCharged, getMaxEnergyStored(fullyCharged), false);
|
|
||||||
list.add(fullyCharged);
|
|
||||||
|
|
||||||
list.add(new ItemStack(item, 1, TYPE_CREATIVE));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void addInformation(ItemStack stack, EntityPlayer player, List<String> tooltip, boolean advanced) {
|
|
||||||
super.addInformation(stack, player, tooltip, advanced);
|
|
||||||
|
|
||||||
if (stack.getItemDamage() != TYPE_CREATIVE) {
|
|
||||||
tooltip.add(I18n.format("misc.refinedstorage:energy_stored", getEnergyStored(stack), getMaxEnergyStored(stack)));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isValid(stack)) {
|
|
||||||
tooltip.add(I18n.format("misc.refinedstorage:wireless_grid.tooltip", getX(stack), getY(stack), getZ(stack)));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public EnumActionResult onItemUse(ItemStack stack, EntityPlayer player, World world, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) {
|
|
||||||
Block block = world.getBlockState(pos).getBlock();
|
|
||||||
|
|
||||||
if (block == RSBlocks.CONTROLLER) {
|
|
||||||
NBTTagCompound tag = stack.getTagCompound();
|
|
||||||
|
|
||||||
if (tag == null) {
|
|
||||||
tag = new NBTTagCompound();
|
|
||||||
}
|
|
||||||
|
|
||||||
tag.setInteger(NBT_CONTROLLER_X, pos.getX());
|
|
||||||
tag.setInteger(NBT_CONTROLLER_Y, pos.getY());
|
|
||||||
tag.setInteger(NBT_CONTROLLER_Z, pos.getZ());
|
|
||||||
tag.setInteger(NBT_DIMENSION_ID, player.dimension);
|
|
||||||
tag.setInteger(TileGrid.NBT_VIEW_TYPE, TileGrid.VIEW_TYPE_NORMAL);
|
|
||||||
tag.setInteger(TileGrid.NBT_SORTING_DIRECTION, TileGrid.SORTING_DIRECTION_DESCENDING);
|
|
||||||
tag.setInteger(TileGrid.NBT_SORTING_TYPE, TileGrid.SORTING_TYPE_NAME);
|
|
||||||
tag.setInteger(TileGrid.NBT_SEARCH_BOX_MODE, TileGrid.SEARCH_BOX_MODE_NORMAL);
|
|
||||||
|
|
||||||
stack.setTagCompound(tag);
|
|
||||||
|
|
||||||
return EnumActionResult.SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
return EnumActionResult.PASS;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ActionResult<ItemStack> onItemRightClick(ItemStack stack, World world, EntityPlayer player, EnumHand hand) {
|
|
||||||
if (!world.isRemote && isValid(stack)) {
|
|
||||||
World controllerWorld = DimensionManager.getWorld(getDimensionId(stack));
|
|
||||||
|
|
||||||
TileEntity controller;
|
|
||||||
|
|
||||||
if (controllerWorld != null && ((controller = controllerWorld.getTileEntity(new BlockPos(getX(stack), getY(stack), getZ(stack)))) instanceof TileController)) {
|
|
||||||
if (((TileController) controller).getWirelessGridHandler().onOpen(player, controllerWorld, hand)) {
|
|
||||||
return new ActionResult<>(EnumActionResult.SUCCESS, stack);
|
|
||||||
} else {
|
|
||||||
player.addChatComponentMessage(new TextComponentTranslation("misc.refinedstorage:wireless_grid.out_of_range"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
player.addChatComponentMessage(new TextComponentTranslation("misc.refinedstorage:wireless_grid.not_found"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.onItemRightClick(stack, world, player, hand);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getDimensionId(ItemStack stack) {
|
|
||||||
return stack.getTagCompound().getInteger(NBT_DIMENSION_ID);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getX(ItemStack stack) {
|
|
||||||
return stack.getTagCompound().getInteger(NBT_CONTROLLER_X);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getY(ItemStack stack) {
|
|
||||||
return stack.getTagCompound().getInteger(NBT_CONTROLLER_Y);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int getZ(ItemStack stack) {
|
|
||||||
return stack.getTagCompound().getInteger(NBT_CONTROLLER_Z);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int getViewType(ItemStack stack) {
|
public static int getViewType(ItemStack stack) {
|
||||||
@@ -193,12 +28,8 @@ public class ItemWirelessGrid extends ItemEnergyContainer implements ISpecialEle
|
|||||||
return stack.getTagCompound().getInteger(TileGrid.NBT_SEARCH_BOX_MODE);
|
return stack.getTagCompound().getInteger(TileGrid.NBT_SEARCH_BOX_MODE);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isValid(ItemStack stack) {
|
public boolean isValid(ItemStack stack) {
|
||||||
return stack.hasTagCompound()
|
return super.isValid(stack)
|
||||||
&& stack.getTagCompound().hasKey(NBT_CONTROLLER_X)
|
|
||||||
&& stack.getTagCompound().hasKey(NBT_CONTROLLER_Y)
|
|
||||||
&& stack.getTagCompound().hasKey(NBT_CONTROLLER_Z)
|
|
||||||
&& stack.getTagCompound().hasKey(NBT_DIMENSION_ID)
|
|
||||||
&& stack.getTagCompound().hasKey(TileGrid.NBT_VIEW_TYPE)
|
&& stack.getTagCompound().hasKey(TileGrid.NBT_VIEW_TYPE)
|
||||||
&& stack.getTagCompound().hasKey(TileGrid.NBT_SORTING_DIRECTION)
|
&& stack.getTagCompound().hasKey(TileGrid.NBT_SORTING_DIRECTION)
|
||||||
&& stack.getTagCompound().hasKey(TileGrid.NBT_SORTING_TYPE)
|
&& stack.getTagCompound().hasKey(TileGrid.NBT_SORTING_TYPE)
|
||||||
@@ -206,112 +37,7 @@ public class ItemWirelessGrid extends ItemEnergyContainer implements ISpecialEle
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStack, boolean slotChanged) {
|
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
||||||
if (oldStack.getItem() == newStack.getItem()) {
|
return new NetworkItemWirelessGrid(handler, player, stack);
|
||||||
if (isValid(oldStack) && isValid(newStack)) {
|
|
||||||
if (getX(oldStack) == getX(newStack) && getY(oldStack) == getY(newStack) && getZ(oldStack) == getZ(newStack) && getDimensionId(oldStack) == getDimensionId(newStack)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return super.shouldCauseReequipAnimation(oldStack, newStack, slotChanged);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUnlocalizedName() {
|
|
||||||
return "item." + RS.ID + ":wireless_grid";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getUnlocalizedName(ItemStack stack) {
|
|
||||||
return getUnlocalizedName() + "." + stack.getItemDamage();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public IElectricItemManager getManager(ItemStack stack) {
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public double charge(ItemStack stack, double amount, int tier, boolean ignoreTransferLimit, boolean simulate) {
|
|
||||||
return IntegrationIC2.toEU(receiveEnergy(stack, IntegrationIC2.toRS(amount), simulate));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public double discharge(ItemStack stack, double amount, int tier, boolean ignoreTransferLimit, boolean externally, boolean simulate) {
|
|
||||||
return IntegrationIC2.toEU(extractEnergy(stack, IntegrationIC2.toRS(amount), simulate));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public double getCharge(ItemStack stack) {
|
|
||||||
return IntegrationIC2.toEU(getEnergyStored(stack));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public double getMaxCharge(ItemStack stack) {
|
|
||||||
return IntegrationIC2.toEU(getMaxEnergyStored(stack));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public boolean canUse(ItemStack stack, double amount) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public boolean use(ItemStack stack, double amount, EntityLivingBase entity) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public void chargeFromArmor(ItemStack stack, EntityLivingBase entity) {
|
|
||||||
// NO OP
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public String getToolTip(ItemStack stack) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Optional.Method(modid = "IC2")
|
|
||||||
@Override
|
|
||||||
public int getTier(ItemStack stack) {
|
|
||||||
return Integer.MAX_VALUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
class WirelessGridCapabilityProvider implements ICapabilityProvider {
|
|
||||||
private ItemStack stack;
|
|
||||||
|
|
||||||
public WirelessGridCapabilityProvider(ItemStack stack) {
|
|
||||||
this.stack = stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCapability(Capability<?> capability, @Nullable EnumFacing facing) {
|
|
||||||
return capability == CapabilityEnergy.ENERGY ||
|
|
||||||
(IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> T getCapability(Capability<T> capability, @Nullable EnumFacing facing) {
|
|
||||||
if (capability == CapabilityEnergy.ENERGY) {
|
|
||||||
return (T) new WirelessGridEnergyForge(stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (IntegrationTesla.isLoaded() && (capability == TeslaCapabilities.CAPABILITY_HOLDER || capability == TeslaCapabilities.CAPABILITY_CONSUMER)) {
|
|
||||||
return (T) new WirelessGridEnergyTesla(stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,9 +14,9 @@ import com.raoulvdberge.refinedstorage.api.autocrafting.task.ICraftingTask;
|
|||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkMaster;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNode;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
|
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.IWirelessGridHandler;
|
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IFluidGridHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
import com.raoulvdberge.refinedstorage.api.network.grid.IItemGridHandler;
|
||||||
|
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
import com.raoulvdberge.refinedstorage.api.storage.AccessType;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.IStorage;
|
import com.raoulvdberge.refinedstorage.api.storage.IStorage;
|
||||||
import com.raoulvdberge.refinedstorage.api.storage.fluid.IFluidStorage;
|
import com.raoulvdberge.refinedstorage.api.storage.fluid.IFluidStorage;
|
||||||
@@ -27,9 +27,9 @@ import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
|||||||
import com.raoulvdberge.refinedstorage.api.util.IItemStackList;
|
import com.raoulvdberge.refinedstorage.api.util.IItemStackList;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeGraph;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeGraph;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.WirelessGridHandler;
|
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.FluidGridHandler;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.FluidGridHandler;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.ItemGridHandler;
|
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.ItemGridHandler;
|
||||||
|
import com.raoulvdberge.refinedstorage.apiimpl.network.item.NetworkItemHandler;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.fluid.FluidStorageCache;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.fluid.FluidStorageCache;
|
||||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.item.ItemStorageCache;
|
import com.raoulvdberge.refinedstorage.apiimpl.storage.item.ItemStorageCache;
|
||||||
import com.raoulvdberge.refinedstorage.block.BlockController;
|
import com.raoulvdberge.refinedstorage.block.BlockController;
|
||||||
@@ -158,7 +158,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
private IItemGridHandler itemGridHandler = new ItemGridHandler(this);
|
private IItemGridHandler itemGridHandler = new ItemGridHandler(this);
|
||||||
private IFluidGridHandler fluidGridHandler = new FluidGridHandler(this);
|
private IFluidGridHandler fluidGridHandler = new FluidGridHandler(this);
|
||||||
|
|
||||||
private IWirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this);
|
private INetworkItemHandler networkItemHandler = new NetworkItemHandler(this);
|
||||||
|
|
||||||
private INetworkNodeGraph nodeGraph = new NetworkNodeGraph(this);
|
private INetworkNodeGraph nodeGraph = new NetworkNodeGraph(this);
|
||||||
|
|
||||||
@@ -296,7 +296,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
wirelessGridHandler.update();
|
networkItemHandler.update();
|
||||||
|
|
||||||
if (getType() == EnumControllerType.NORMAL) {
|
if (getType() == EnumControllerType.NORMAL) {
|
||||||
if (!RS.INSTANCE.config.controllerUsesEnergy) {
|
if (!RS.INSTANCE.config.controllerUsesEnergy) {
|
||||||
@@ -349,8 +349,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IWirelessGridHandler getWirelessGridHandler() {
|
public INetworkItemHandler getNetworkItemHandler() {
|
||||||
return wirelessGridHandler;
|
return networkItemHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -180,7 +180,7 @@ public class WirelessGrid implements IGrid {
|
|||||||
TileController controller = getController();
|
TileController controller = getController();
|
||||||
|
|
||||||
if (controller != null) {
|
if (controller != null) {
|
||||||
controller.getWirelessGridHandler().onClose(player);
|
controller.getNetworkItemHandler().onClose(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,9 +50,9 @@ misc.refinedstorage:storage.stored_minimal=%s
|
|||||||
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
||||||
misc.refinedstorage:storage.full=%d%% voll
|
misc.refinedstorage:storage.full=%d%% voll
|
||||||
|
|
||||||
misc.refinedstorage:wireless_grid.tooltip=Verbunden mit %d, %d, %d.
|
misc.refinedstorage:network_item.tooltip=Verbunden mit %d, %d, %d.
|
||||||
misc.refinedstorage:wireless_grid.out_of_range=Es gibt keine Verbindung zu einem kabellosen Übermittler.
|
misc.refinedstorage:network_item.out_of_range=Es gibt keine Verbindung zu einem kabellosen Übermittler.
|
||||||
misc.refinedstorage:wireless_grid.not_found=Controller konnte nicht gefunden werden.
|
misc.refinedstorage:network_item.not_found=Controller konnte nicht gefunden werden.
|
||||||
|
|
||||||
misc.refinedstorage:network_card.tooltip=Verbunden mit %d, %d, %d.
|
misc.refinedstorage:network_card.tooltip=Verbunden mit %d, %d, %d.
|
||||||
|
|
||||||
|
|||||||
@@ -63,9 +63,9 @@ misc.refinedstorage:storage.stored_minimal=%s
|
|||||||
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
||||||
misc.refinedstorage:storage.full=%d%% full
|
misc.refinedstorage:storage.full=%d%% full
|
||||||
|
|
||||||
misc.refinedstorage:wireless_grid.tooltip=Linked to %d, %d, %d.
|
misc.refinedstorage:network_item.tooltip=Linked to %d, %d, %d.
|
||||||
misc.refinedstorage:wireless_grid.out_of_range=There is no Wireless Transmitter in range.
|
misc.refinedstorage:network_item.out_of_range=There is no Wireless Transmitter in range.
|
||||||
misc.refinedstorage:wireless_grid.not_found=Controller not found.
|
misc.refinedstorage:network_item.not_found=Controller not found.
|
||||||
|
|
||||||
misc.refinedstorage:network_card.tooltip=Linked to %d, %d, %d.
|
misc.refinedstorage:network_card.tooltip=Linked to %d, %d, %d.
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ misc.refinedstorage:storage.stored_minimal=%s
|
|||||||
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
||||||
misc.refinedstorage:storage.full=%d%% plein
|
misc.refinedstorage:storage.full=%d%% plein
|
||||||
|
|
||||||
misc.refinedstorage:wireless_grid.out_of_range=Il n'y a pas un Émetteur sans Fil dans la gamme.
|
misc.refinedstorage:network_item.out_of_range=Il n'y a pas un Émetteur sans Fil dans la gamme.
|
||||||
misc.refinedstorage:wireless_grid.not_found=Contrôleur non trouvé.
|
misc.refinedstorage:network_item.not_found=Contrôleur non trouvé.
|
||||||
|
|
||||||
misc.refinedstorage:pattern.inputs=Inputs
|
misc.refinedstorage:pattern.inputs=Inputs
|
||||||
misc.refinedstorage:pattern.outputs=Outputs
|
misc.refinedstorage:pattern.outputs=Outputs
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ misc.refinedstorage:storage.stored_minimal=%s
|
|||||||
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
||||||
misc.refinedstorage:storage.full=%d%% vol
|
misc.refinedstorage:storage.full=%d%% vol
|
||||||
|
|
||||||
misc.refinedstorage:wireless_grid.tooltip=Gelinkt aan %d, %d, %d.
|
misc.refinedstorage:network_item.tooltip=Gelinkt aan %d, %d, %d.
|
||||||
misc.refinedstorage:wireless_grid.out_of_range=Er is geen Draadloze Zender binnen bereik.
|
misc.refinedstorage:network_item.out_of_range=Er is geen Draadloze Zender binnen bereik.
|
||||||
misc.refinedstorage:wireless_grid.not_found=Controller niet gevonden.
|
misc.refinedstorage:network_item.not_found=Controller niet gevonden.
|
||||||
|
|
||||||
misc.refinedstorage:network_card.tooltip=Gelinkt aan %d, %d, %d.
|
misc.refinedstorage:network_card.tooltip=Gelinkt aan %d, %d, %d.
|
||||||
|
|
||||||
|
|||||||
@@ -38,8 +38,8 @@ misc.refinedstorage:storage.stored_minimal=%s
|
|||||||
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
||||||
misc.refinedstorage:storage.full=%d%% full
|
misc.refinedstorage:storage.full=%d%% full
|
||||||
|
|
||||||
misc.refinedstorage:wireless_grid.out_of_range=Não há Transmissor Sem Fio na gama.
|
misc.refinedstorage:network_item.out_of_range=Não há Transmissor Sem Fio na gama.
|
||||||
misc.refinedstorage:wireless_grid.not_found=Controlador não encontrado.
|
misc.refinedstorage:network_item.not_found=Controlador não encontrado.
|
||||||
|
|
||||||
misc.refinedstorage:pattern.inputs=Entrada
|
misc.refinedstorage:pattern.inputs=Entrada
|
||||||
misc.refinedstorage:pattern.outputs=Saída
|
misc.refinedstorage:pattern.outputs=Saída
|
||||||
|
|||||||
@@ -50,9 +50,9 @@ misc.refinedstorage:storage.stored_minimal=%s
|
|||||||
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
||||||
misc.refinedstorage:storage.full=%d%% полный
|
misc.refinedstorage:storage.full=%d%% полный
|
||||||
|
|
||||||
misc.refinedstorage:wireless_grid.tooltip=Привязано к %d, %d, %d.
|
misc.refinedstorage:network_item.tooltip=Привязано к %d, %d, %d.
|
||||||
misc.refinedstorage:wireless_grid.out_of_range=Не найден Передатчик
|
misc.refinedstorage:network_item.out_of_range=Не найден Передатчик
|
||||||
misc.refinedstorage:wireless_grid.not_found=Не найден Контроллер
|
misc.refinedstorage:network_item.not_found=Не найден Контроллер
|
||||||
|
|
||||||
misc.refinedstorage:network_card.tooltip=Привязано к %d, %d, %d.
|
misc.refinedstorage:network_card.tooltip=Привязано к %d, %d, %d.
|
||||||
|
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ misc.refinedstorage:storage.stored_minimal=%s
|
|||||||
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
misc.refinedstorage:storage.stored_capacity_minimal=%s / %s
|
||||||
misc.refinedstorage:storage.full=%d%% 已使用
|
misc.refinedstorage:storage.full=%d%% 已使用
|
||||||
|
|
||||||
misc.refinedstorage:wireless_grid.tooltip=连接到 %d, %d, %d.
|
misc.refinedstorage:network_item.tooltip=连接到 %d, %d, %d.
|
||||||
misc.refinedstorage:wireless_grid.out_of_range=在范围内没有可以接入的无线访问点.
|
misc.refinedstorage:network_item.out_of_range=在范围内没有可以接入的无线访问点.
|
||||||
misc.refinedstorage:wireless_grid.not_found=没寻找到控制器.
|
misc.refinedstorage:network_item.not_found=没寻找到控制器.
|
||||||
|
|
||||||
misc.refinedstorage:network_card.tooltip=连接到 %d, %d, %d.
|
misc.refinedstorage:network_card.tooltip=连接到 %d, %d, %d.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user