Compare commits
10 Commits
f26165533a
...
eb81b15f16
Author | SHA1 | Date | |
---|---|---|---|
eb81b15f16 | |||
5aa9627328 | |||
![]() |
2ed9fc1f7b | ||
![]() |
7fd7eac594 | ||
![]() |
3248514a65 | ||
![]() |
98ed5b89c2 | ||
![]() |
e72f1b64bc | ||
![]() |
738ccca994 | ||
![]() |
46a3dcba23 | ||
![]() |
0f53a18b1a |
@@ -1,5 +1,12 @@
|
||||
# Refined Storage Changelog
|
||||
|
||||
### 1.6.16
|
||||
- Updated Russian translation (Bytegm)
|
||||
- Fixed erroring controller tile entity (ian-rampage)
|
||||
- Fixed Inventory Tweaks sorting not respecting locked slots (Landmaster)
|
||||
- Fixed OpenComputers driver voiding excess fluids (BlueAgent)
|
||||
- Fixed being able to move wireless items in inventory (raoulvdberge, Dabombber)
|
||||
|
||||
### 1.6.15
|
||||
- Fixed recipes with more than 1 bucket of fluid not transferring from JEI (Darkere)
|
||||
- Fixed oredict crafting patterns redefining recipes (Darkere)
|
||||
|
@@ -16,7 +16,7 @@ apply plugin: 'maven'
|
||||
apply plugin: 'maven-publish'
|
||||
apply plugin: 'net.minecraftforge.gradle.forge'
|
||||
|
||||
version = "1.6.15"
|
||||
version = "1.6.16"
|
||||
def env = System.getenv()
|
||||
if (env.BUILD_NUMBER) {
|
||||
version = version + "-" + "${env.BUILD_NUMBER}"
|
||||
|
@@ -231,6 +231,11 @@ public interface IGrid {
|
||||
*/
|
||||
boolean isActive();
|
||||
|
||||
/**
|
||||
* @return the slot id where this grid is located, if applicable, otherwise -1
|
||||
*/
|
||||
int getSlotId();
|
||||
|
||||
static boolean isValidViewType(int type) {
|
||||
return type == VIEW_TYPE_NORMAL ||
|
||||
type == VIEW_TYPE_CRAFTABLES ||
|
||||
|
@@ -17,10 +17,11 @@ public interface IGridFactory {
|
||||
*
|
||||
* @param player the player
|
||||
* @param stack the stack
|
||||
* @param slotId the slot id, if applicable, otherwise -1
|
||||
* @return the grid, or null if a problem occurred
|
||||
*/
|
||||
@Nullable
|
||||
IGrid createFromStack(EntityPlayer player, ItemStack stack);
|
||||
IGrid createFromStack(EntityPlayer player, ItemStack stack, int slotId);
|
||||
|
||||
/**
|
||||
* Creates a grid from a block. Used when {@link #getType()} is BLOCK.
|
||||
|
@@ -41,8 +41,9 @@ public interface IGridManager {
|
||||
* @param id the grid factory id as returned from {@link #add(IGridFactory)}
|
||||
* @param player the player
|
||||
* @param stack the stack
|
||||
* @param slotId the slot id, if applicable, otherwise -1
|
||||
*/
|
||||
void openGrid(int id, EntityPlayerMP player, ItemStack stack);
|
||||
void openGrid(int id, EntityPlayerMP player, ItemStack stack, int slotId);
|
||||
|
||||
/**
|
||||
* Creates a grid.
|
||||
@@ -51,8 +52,9 @@ public interface IGridManager {
|
||||
* @param player the player
|
||||
* @param stack the stack, if there is one
|
||||
* @param pos the block position, if there is one
|
||||
* @param slotId the slot id, if applicable, otherwise -1
|
||||
* @return a grid, or null if an error has occurred
|
||||
*/
|
||||
@Nullable
|
||||
Pair<IGrid, TileEntity> createGrid(int id, EntityPlayer player, @Nullable ItemStack stack, @Nullable BlockPos pos);
|
||||
Pair<IGrid, TileEntity> createGrid(int id, EntityPlayer player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId);
|
||||
}
|
||||
|
@@ -15,8 +15,9 @@ public interface INetworkItemHandler {
|
||||
*
|
||||
* @param player the player that opened the network item
|
||||
* @param stack the stack that has been opened
|
||||
* @param slotId the slot id, if applicable, otherwise -1
|
||||
*/
|
||||
void open(EntityPlayer player, ItemStack stack);
|
||||
void open(EntityPlayer player, ItemStack stack, int slotId);
|
||||
|
||||
/**
|
||||
* Called when the player closes a network item.
|
||||
|
@@ -15,8 +15,9 @@ public interface INetworkItemProvider {
|
||||
* @param handler the network item handler
|
||||
* @param player the player
|
||||
* @param stack the stack
|
||||
* @param slotId the slot id, if applicable, otherwise -1
|
||||
* @return the network item
|
||||
*/
|
||||
@Nonnull
|
||||
INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack);
|
||||
INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int slotId);
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@ import javax.annotation.Nullable;
|
||||
public class GridFactoryGridBlock implements IGridFactory {
|
||||
@Override
|
||||
@Nullable
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack, int slotId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@@ -15,8 +15,8 @@ import javax.annotation.Nullable;
|
||||
public class GridFactoryPortableGrid implements IGridFactory {
|
||||
@Nullable
|
||||
@Override
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
|
||||
return new PortableGrid(player, stack);
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack, int slotId) {
|
||||
return new PortableGrid(player, stack, slotId);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
@@ -15,7 +15,7 @@ import javax.annotation.Nullable;
|
||||
public class GridFactoryPortableGridBlock implements IGridFactory {
|
||||
@Override
|
||||
@Nullable
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack, int slotId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@@ -15,8 +15,8 @@ import javax.annotation.Nullable;
|
||||
public class GridFactoryWirelessFluidGrid implements IGridFactory {
|
||||
@Nullable
|
||||
@Override
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
|
||||
return new WirelessFluidGrid(stack);
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack, int slotId) {
|
||||
return new WirelessFluidGrid(stack, slotId);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
@@ -15,8 +15,8 @@ import javax.annotation.Nullable;
|
||||
public class GridFactoryWirelessGrid implements IGridFactory {
|
||||
@Nullable
|
||||
@Override
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack) {
|
||||
return new WirelessGrid(stack);
|
||||
public IGrid createFromStack(EntityPlayer player, ItemStack stack, int slotId) {
|
||||
return new WirelessGrid(stack, slotId);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
@@ -43,16 +43,16 @@ public class GridManager implements IGridManager {
|
||||
|
||||
@Override
|
||||
public void openGrid(int id, EntityPlayerMP player, BlockPos pos) {
|
||||
openGrid(id, player, null, pos);
|
||||
openGrid(id, player, null, pos, -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void openGrid(int id, EntityPlayerMP player, ItemStack stack) {
|
||||
openGrid(id, player, stack, null);
|
||||
public void openGrid(int id, EntityPlayerMP player, ItemStack stack, int slotId) {
|
||||
openGrid(id, player, stack, null, slotId);
|
||||
}
|
||||
|
||||
private void openGrid(int id, EntityPlayerMP player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
|
||||
Pair<IGrid, TileEntity> grid = createGrid(id, player, stack, pos);
|
||||
private void openGrid(int id, EntityPlayerMP player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId) {
|
||||
Pair<IGrid, TileEntity> grid = createGrid(id, player, stack, pos, slotId);
|
||||
if (grid == null) {
|
||||
return;
|
||||
}
|
||||
@@ -73,7 +73,7 @@ public class GridManager implements IGridManager {
|
||||
// So we first send the window id in MessageGridOpen.
|
||||
|
||||
// The order is preserved by TCP.
|
||||
RS.INSTANCE.network.sendTo(new MessageGridOpen(player.currentWindowId, pos, id, stack), player);
|
||||
RS.INSTANCE.network.sendTo(new MessageGridOpen(player.currentWindowId, pos, id, stack, slotId), player);
|
||||
|
||||
player.openContainer = new ContainerGrid(grid.getLeft(), new ResizableDisplayDummy(), grid.getRight() instanceof TileBase ? (TileBase) grid.getRight() : null, player);
|
||||
player.openContainer.windowId = player.currentWindowId;
|
||||
@@ -84,7 +84,7 @@ public class GridManager implements IGridManager {
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public Pair<IGrid, TileEntity> createGrid(int id, EntityPlayer player, @Nullable ItemStack stack, @Nullable BlockPos pos) {
|
||||
public Pair<IGrid, TileEntity> createGrid(int id, EntityPlayer player, @Nullable ItemStack stack, @Nullable BlockPos pos, int slotId) {
|
||||
IGridFactory factory = get(id);
|
||||
|
||||
if (factory == null) {
|
||||
@@ -96,7 +96,7 @@ public class GridManager implements IGridManager {
|
||||
|
||||
switch (factory.getType()) {
|
||||
case STACK:
|
||||
grid = factory.createFromStack(player, stack);
|
||||
grid = factory.createFromStack(player, stack, slotId);
|
||||
break;
|
||||
case BLOCK:
|
||||
grid = factory.createFromBlock(player, pos);
|
||||
|
@@ -23,7 +23,7 @@ public class GridOpenHandler implements Runnable {
|
||||
public void run() {
|
||||
EntityPlayer player = Minecraft.getMinecraft().player;
|
||||
|
||||
Pair<IGrid, TileEntity> grid = API.instance().getGridManager().createGrid(message.getGridId(), player, message.getStack(), message.getPos());
|
||||
Pair<IGrid, TileEntity> grid = API.instance().getGridManager().createGrid(message.getGridId(), player, message.getStack(), message.getPos(), message.getSlotId());
|
||||
|
||||
if (grid == null) {
|
||||
return;
|
||||
|
@@ -23,7 +23,7 @@ public class NetworkItemHandler implements INetworkItemHandler {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void open(EntityPlayer player, ItemStack stack) {
|
||||
public void open(EntityPlayer player, ItemStack stack, int slotId) {
|
||||
boolean inRange = false;
|
||||
|
||||
for (INetworkNode node : network.getNodeGraph().all()) {
|
||||
@@ -46,7 +46,7 @@ public class NetworkItemHandler implements INetworkItemHandler {
|
||||
return;
|
||||
}
|
||||
|
||||
INetworkItem item = ((INetworkItemProvider) stack.getItem()).provide(this, player, stack);
|
||||
INetworkItem item = ((INetworkItemProvider) stack.getItem()).provide(this, player, stack, slotId);
|
||||
|
||||
if (item.onOpen(network)) {
|
||||
items.put(player, item);
|
||||
|
@@ -17,13 +17,13 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
|
||||
private INetworkItemHandler handler;
|
||||
private EntityPlayer player;
|
||||
private ItemStack stack;
|
||||
private int invIndex;
|
||||
private int slotId;
|
||||
|
||||
public NetworkItemWirelessCraftingMonitor(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int invIndex) {
|
||||
public NetworkItemWirelessCraftingMonitor(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int slotId) {
|
||||
this.handler = handler;
|
||||
this.player = player;
|
||||
this.stack = stack;
|
||||
this.invIndex = invIndex;
|
||||
this.slotId = slotId;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,7 +43,7 @@ public class NetworkItemWirelessCraftingMonitor implements INetworkItem {
|
||||
return false;
|
||||
}
|
||||
|
||||
player.openGui(RS.INSTANCE, RSGui.WIRELESS_CRAFTING_MONITOR, player.getEntityWorld(), invIndex, 0, 0);
|
||||
player.openGui(RS.INSTANCE, RSGui.WIRELESS_CRAFTING_MONITOR, player.getEntityWorld(), slotId, 0, 0);
|
||||
|
||||
drainEnergy(RS.INSTANCE.config.wirelessCraftingMonitorOpenUsage);
|
||||
|
||||
|
@@ -19,11 +19,13 @@ public class NetworkItemWirelessFluidGrid implements INetworkItem {
|
||||
private INetworkItemHandler handler;
|
||||
private EntityPlayer player;
|
||||
private ItemStack stack;
|
||||
private int slotId;
|
||||
|
||||
public NetworkItemWirelessFluidGrid(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
||||
public NetworkItemWirelessFluidGrid(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int slotId) {
|
||||
this.handler = handler;
|
||||
this.player = player;
|
||||
this.stack = stack;
|
||||
this.slotId = slotId;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,7 +45,7 @@ public class NetworkItemWirelessFluidGrid implements INetworkItem {
|
||||
return false;
|
||||
}
|
||||
|
||||
API.instance().getGridManager().openGrid(WirelessFluidGrid.ID, (EntityPlayerMP) player, stack);
|
||||
API.instance().getGridManager().openGrid(WirelessFluidGrid.ID, (EntityPlayerMP) player, stack, slotId);
|
||||
|
||||
drainEnergy(RS.INSTANCE.config.wirelessFluidGridOpenUsage);
|
||||
|
||||
|
@@ -19,11 +19,13 @@ public class NetworkItemWirelessGrid implements INetworkItem {
|
||||
private INetworkItemHandler handler;
|
||||
private EntityPlayer player;
|
||||
private ItemStack stack;
|
||||
private int slotId;
|
||||
|
||||
public NetworkItemWirelessGrid(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
||||
public NetworkItemWirelessGrid(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int slotId) {
|
||||
this.handler = handler;
|
||||
this.player = player;
|
||||
this.stack = stack;
|
||||
this.slotId = slotId;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -43,7 +45,7 @@ public class NetworkItemWirelessGrid implements INetworkItem {
|
||||
return false;
|
||||
}
|
||||
|
||||
API.instance().getGridManager().openGrid(WirelessGrid.ID, (EntityPlayerMP) player, stack);
|
||||
API.instance().getGridManager().openGrid(WirelessGrid.ID, (EntityPlayerMP) player, stack, slotId);
|
||||
|
||||
drainEnergy(RS.INSTANCE.config.wirelessGridOpenUsage);
|
||||
|
||||
|
@@ -262,13 +262,13 @@ public class NetworkNodeCrafter extends NetworkNode implements ICraftingPatternC
|
||||
case 0:
|
||||
return 1;
|
||||
case 1:
|
||||
return 2;
|
||||
case 2:
|
||||
return 3;
|
||||
case 3:
|
||||
return 4;
|
||||
case 2:
|
||||
return 8;
|
||||
case 3:
|
||||
return 16;
|
||||
case 4:
|
||||
return 5;
|
||||
return 32;
|
||||
default:
|
||||
return 1;
|
||||
}
|
||||
|
@@ -135,4 +135,9 @@ public class NetworkNodeCraftingMonitor extends NetworkNode implements ICrafting
|
||||
TileDataManager.setParameter(TileCraftingMonitor.TAB_PAGE, page);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotId() {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.network.node;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.RSItems;
|
||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||
import com.raoulvdberge.refinedstorage.api.util.IComparer;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.node.cover.CoverManager;
|
||||
@@ -8,6 +9,7 @@ import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerBase;
|
||||
import com.raoulvdberge.refinedstorage.inventory.item.ItemHandlerUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.inventory.listener.ListenerNetworkNode;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemFilter;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemUpgrade;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileExporter;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IComparable;
|
||||
@@ -83,20 +85,14 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
ItemStack slot = itemFilters.getStackInSlot(filterSlot);
|
||||
|
||||
if (!slot.isEmpty()) {
|
||||
int stackSize = upgrades.getItemInteractCount();
|
||||
|
||||
ItemStack took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, Action.SIMULATE);
|
||||
|
||||
if (took == null) {
|
||||
if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
network.getCraftingManager().request(new SlottedCraftingRequest(this, filterSlot), slot, stackSize);
|
||||
if (slot.getItem() == RSItems.FILTER) {
|
||||
for (ItemStack slotFilter : ItemFilter.getFilterItemsFromCache(slot)) {
|
||||
if (!slotFilter.isEmpty()) {
|
||||
doExport(handler, slotFilter);
|
||||
}
|
||||
} else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) {
|
||||
took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, Action.PERFORM);
|
||||
|
||||
if (took != null) {
|
||||
ItemHandlerHelper.insertItem(handler, took, false);
|
||||
}
|
||||
} else {
|
||||
doExport(handler, slot);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,6 +148,24 @@ public class NetworkNodeExporter extends NetworkNode implements IComparable, ITy
|
||||
}
|
||||
}
|
||||
|
||||
private void doExport(IItemHandler handler, ItemStack slot) {
|
||||
int stackSize = upgrades.getItemInteractCount();
|
||||
|
||||
ItemStack took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, Action.SIMULATE);
|
||||
|
||||
if (took == null) {
|
||||
if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
|
||||
network.getCraftingManager().request(new SlottedCraftingRequest(this, filterSlot), slot, stackSize);
|
||||
}
|
||||
} else if (ItemHandlerHelper.insertItem(handler, took, true).isEmpty()) {
|
||||
took = network.extractItem(slot, Math.min(slot.getMaxStackSize(), stackSize), compare, Action.PERFORM);
|
||||
|
||||
if (took != null) {
|
||||
ItemHandlerHelper.insertItem(handler, took, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCompare() {
|
||||
return compare;
|
||||
|
@@ -449,6 +449,11 @@ public class NetworkNodeGrid extends NetworkNode implements IGridNetworkAware, I
|
||||
// NO OP
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotId() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCrafted(EntityPlayer player) {
|
||||
onCrafted(this, world, player);
|
||||
|
@@ -57,13 +57,29 @@ public abstract class ContainerBase extends Container {
|
||||
}
|
||||
|
||||
protected void addPlayerInventory(int xInventory, int yInventory) {
|
||||
int id = 0;
|
||||
int disabledSlotNumber = getDisabledSlotNumber();
|
||||
|
||||
int id = 9;
|
||||
|
||||
for (int y = 0; y < 3; y++) {
|
||||
for (int x = 0; x < 9; x++) {
|
||||
if (id == disabledSlotNumber) {
|
||||
addSlotToContainer(new SlotLegacyDisabled(player.inventory, id, xInventory + x * 18, yInventory + y * 18));
|
||||
} else {
|
||||
addSlotToContainer(new Slot(player.inventory, id, xInventory + x * 18, yInventory + y * 18));
|
||||
}
|
||||
|
||||
id++;
|
||||
}
|
||||
}
|
||||
|
||||
id = 0;
|
||||
|
||||
for (int i = 0; i < 9; i++) {
|
||||
int x = xInventory + i * 18;
|
||||
int y = yInventory + 4 + (3 * 18);
|
||||
|
||||
if (isHeldItemDisabled() && i == player.inventory.currentItem) {
|
||||
if (id == disabledSlotNumber) {
|
||||
addSlotToContainer(new SlotLegacyDisabled(player.inventory, id, x, y));
|
||||
} else {
|
||||
addSlotToContainer(new Slot(player.inventory, id, x, y));
|
||||
@@ -71,14 +87,6 @@ public abstract class ContainerBase extends Container {
|
||||
|
||||
id++;
|
||||
}
|
||||
|
||||
for (int y = 0; y < 3; y++) {
|
||||
for (int x = 0; x < 9; x++) {
|
||||
addSlotToContainer(new Slot(player.inventory, id, xInventory + x * 18, yInventory + y * 18));
|
||||
|
||||
id++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<SlotFilterFluid> getFluidSlots() {
|
||||
@@ -89,8 +97,12 @@ public abstract class ContainerBase extends Container {
|
||||
public ItemStack slotClick(int id, int dragType, ClickType clickType, EntityPlayer player) {
|
||||
Slot slot = id >= 0 ? getSlot(id) : null;
|
||||
|
||||
int disabledSlotNumber = getDisabledSlotNumber();
|
||||
|
||||
// Prevent swapping disabled held item with the number keys (dragType is the slot we're swapping with)
|
||||
if (isHeldItemDisabled() && clickType == ClickType.SWAP && dragType == player.inventory.currentItem) {
|
||||
if (disabledSlotNumber != -1 &&
|
||||
clickType == ClickType.SWAP &&
|
||||
dragType == disabledSlotNumber) {
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
|
||||
@@ -156,8 +168,8 @@ public abstract class ContainerBase extends Container {
|
||||
return super.canMergeSlot(stack, slot);
|
||||
}
|
||||
|
||||
protected boolean isHeldItemDisabled() {
|
||||
return false;
|
||||
protected int getDisabledSlotNumber() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -82,8 +82,8 @@ public class ContainerCraftingMonitor extends ContainerBase implements ICrafting
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isHeldItemDisabled() {
|
||||
return craftingMonitor instanceof WirelessCraftingMonitor;
|
||||
protected int getDisabledSlotNumber() {
|
||||
return craftingMonitor.getSlotId();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -53,7 +53,7 @@ public class ContainerFilter extends ContainerBase {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isHeldItemDisabled() {
|
||||
return true;
|
||||
protected int getDisabledSlotNumber() {
|
||||
return getPlayer().inventory.currentItem;
|
||||
}
|
||||
}
|
||||
|
@@ -18,9 +18,7 @@ import com.raoulvdberge.refinedstorage.container.slot.legacy.SlotLegacyFilter;
|
||||
import com.raoulvdberge.refinedstorage.gui.IResizableDisplay;
|
||||
import com.raoulvdberge.refinedstorage.tile.TileBase;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IType;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.WirelessGrid;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.portable.IPortableGrid;
|
||||
import com.raoulvdberge.refinedstorage.tile.grid.portable.PortableGrid;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.inventory.IContainerListener;
|
||||
@@ -271,8 +269,7 @@ public class ContainerGrid extends ContainerBase implements IGridCraftingListene
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean isHeldItemDisabled() {
|
||||
// Here we check for the concrete portable grid type, not IPortableGrid, because we *CAN* move the held item in the portable grid tile
|
||||
return grid instanceof WirelessGrid || grid instanceof PortableGrid;
|
||||
protected int getDisabledSlotNumber() {
|
||||
return grid.getSlotId();
|
||||
}
|
||||
}
|
||||
|
@@ -143,7 +143,7 @@ public class GuiHandler implements IGuiHandler {
|
||||
}
|
||||
|
||||
private WirelessCraftingMonitor getWirelessCraftingMonitor(EntityPlayer player, int invIndex) {
|
||||
return new WirelessCraftingMonitor(player.inventory.getStackInSlot(invIndex));
|
||||
return new WirelessCraftingMonitor(player.inventory.getStackInSlot(invIndex), invIndex);
|
||||
}
|
||||
|
||||
private GuiCraftingMonitor getWirelessCraftingMonitorGui(EntityPlayer player, int invIndex) {
|
||||
|
@@ -258,10 +258,16 @@ public class EnvironmentNetwork extends AbstractManagedEnvironment {
|
||||
}
|
||||
|
||||
// Actually do it and return how much fluid we've inserted
|
||||
FluidStack extracted = node.getNetwork().extractFluid(stack, stack.amount, Action.PERFORM);
|
||||
handler.fill(extracted, true);
|
||||
FluidStack extractedActual = node.getNetwork().extractFluid(stack, filledAmountSim, Action.PERFORM);
|
||||
int filledAmountActual = handler.fill(extractedActual, true);
|
||||
|
||||
return new Object[]{filledAmountSim};
|
||||
// Attempt to insert excess fluid back into the network
|
||||
// This shouldn't need to happen for most tanks, unless input cap decreases based on insert amount
|
||||
if (extractedActual != null && extractedActual.amount > filledAmountActual) {
|
||||
node.getNetwork().insertFluid(stack, extractedActual.amount - filledAmountActual, Action.PERFORM);
|
||||
}
|
||||
|
||||
return new Object[]{filledAmountActual};
|
||||
}
|
||||
|
||||
@Callback(doc = "function(stack:table):table -- Gets a fluid from the network.")
|
||||
|
@@ -15,11 +15,13 @@ import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.client.util.ITooltipFlag;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.ActionResult;
|
||||
import net.minecraft.util.EnumActionResult;
|
||||
import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.NonNullList;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
@@ -28,7 +30,9 @@ import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class ItemFilter extends ItemBase {
|
||||
private static final String NBT_COMPARE = "Compare";
|
||||
@@ -40,6 +44,13 @@ public class ItemFilter extends ItemBase {
|
||||
private static final String NBT_TYPE = "Type";
|
||||
public static final String NBT_FLUID_FILTERS = "FluidFilters";
|
||||
|
||||
private static Map<ItemStack, NonNullList<ItemStack>> FILTER_CACHE = new HashMap<>();
|
||||
|
||||
public static NonNullList<ItemStack> getFilterItemsFromCache(ItemStack stack) {
|
||||
FILTER_CACHE.putIfAbsent(stack, new ItemHandlerFilterItems(stack).getFilteredItems());
|
||||
return FILTER_CACHE.get(stack);
|
||||
}
|
||||
|
||||
public ItemFilter() {
|
||||
super(new ItemInfo(RS.ID, "filter"));
|
||||
|
||||
|
@@ -47,7 +47,7 @@ public abstract class ItemNetworkItem extends ItemEnergyItem implements INetwork
|
||||
ItemStack stack = player.getHeldItem(hand);
|
||||
|
||||
if (!world.isRemote) {
|
||||
applyNetwork(stack, n -> n.getNetworkItemHandler().open(player, player.getHeldItem(hand)), player::sendMessage);
|
||||
applyNetwork(stack, n -> n.getNetworkItemHandler().open(player, player.getHeldItem(hand), player.inventory.currentItem), player::sendMessage);
|
||||
}
|
||||
|
||||
return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
|
||||
|
@@ -33,16 +33,8 @@ public class ItemWirelessCraftingMonitor extends ItemNetworkItem {
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
||||
int invIndex = 0;
|
||||
for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
|
||||
if (player.inventory.getStackInSlot(i) == stack) {
|
||||
invIndex = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return new NetworkItemWirelessCraftingMonitor(handler, player, stack, invIndex);
|
||||
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int slotId) {
|
||||
return new NetworkItemWirelessCraftingMonitor(handler, player, stack, slotId);
|
||||
}
|
||||
|
||||
public static Optional<UUID> getTabSelected(ItemStack stack) {
|
||||
|
@@ -29,8 +29,8 @@ public class ItemWirelessFluidGrid extends ItemNetworkItem {
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
||||
return new NetworkItemWirelessFluidGrid(handler, player, stack);
|
||||
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int slotId) {
|
||||
return new NetworkItemWirelessFluidGrid(handler, player, stack, slotId);
|
||||
}
|
||||
|
||||
public static int getSortingType(ItemStack stack) {
|
||||
|
@@ -34,8 +34,8 @@ public class ItemWirelessGrid extends ItemNetworkItem {
|
||||
|
||||
@Override
|
||||
@Nonnull
|
||||
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack) {
|
||||
return new NetworkItemWirelessGrid(handler, player, stack);
|
||||
public INetworkItem provide(INetworkItemHandler handler, EntityPlayer player, ItemStack stack, int slotId) {
|
||||
return new NetworkItemWirelessGrid(handler, player, stack, slotId);
|
||||
}
|
||||
|
||||
public static int getViewType(ItemStack stack) {
|
||||
|
@@ -30,7 +30,7 @@ public class ItemBlockPortableGrid extends ItemBlockEnergyItem {
|
||||
ItemStack stack = player.getHeldItem(hand);
|
||||
|
||||
if (!world.isRemote) {
|
||||
API.instance().getGridManager().openGrid(PortableGrid.ID, (EntityPlayerMP) player, stack);
|
||||
API.instance().getGridManager().openGrid(PortableGrid.ID, (EntityPlayerMP) player, stack, player.inventory.currentItem);
|
||||
}
|
||||
|
||||
return ActionResult.newResult(EnumActionResult.SUCCESS, stack);
|
||||
|
@@ -18,12 +18,13 @@ public class MessageGridOpen implements IMessage, IMessageHandler<MessageGridOpe
|
||||
private BlockPos pos;
|
||||
@Nullable
|
||||
private ItemStack stack;
|
||||
private int slotId;
|
||||
private int gridId;
|
||||
|
||||
public MessageGridOpen() {
|
||||
}
|
||||
|
||||
public MessageGridOpen(int windowId, @Nullable BlockPos pos, int gridId, @Nullable ItemStack stack) {
|
||||
public MessageGridOpen(int windowId, @Nullable BlockPos pos, int gridId, @Nullable ItemStack stack, int slotId) {
|
||||
if (pos == null && stack == null) {
|
||||
throw new IllegalArgumentException("Can't be both null");
|
||||
}
|
||||
@@ -32,12 +33,14 @@ public class MessageGridOpen implements IMessage, IMessageHandler<MessageGridOpe
|
||||
this.pos = pos;
|
||||
this.stack = stack;
|
||||
this.gridId = gridId;
|
||||
this.slotId = slotId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
windowId = buf.readInt();
|
||||
gridId = buf.readInt();
|
||||
slotId = buf.readInt();
|
||||
|
||||
if (buf.readBoolean()) {
|
||||
pos = new BlockPos(buf.readInt(), buf.readInt(), buf.readInt());
|
||||
@@ -52,6 +55,7 @@ public class MessageGridOpen implements IMessage, IMessageHandler<MessageGridOpe
|
||||
public void toBytes(ByteBuf buf) {
|
||||
buf.writeInt(windowId);
|
||||
buf.writeInt(gridId);
|
||||
buf.writeInt(slotId);
|
||||
|
||||
buf.writeBoolean(pos != null);
|
||||
if (pos != null) {
|
||||
@@ -84,6 +88,10 @@ public class MessageGridOpen implements IMessage, IMessageHandler<MessageGridOpe
|
||||
return gridId;
|
||||
}
|
||||
|
||||
public int getSlotId() {
|
||||
return slotId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public IMessage onMessage(MessageGridOpen message, MessageContext ctx) {
|
||||
Minecraft.getMinecraft().addScheduledTask(new GridOpenHandler(message));
|
||||
|
@@ -10,7 +10,6 @@ import com.raoulvdberge.refinedstorage.util.StackUtils;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
|
||||
|
@@ -25,9 +25,9 @@ public class MessageNetworkItemOpen extends MessageHandlerPlayerToServer<Message
|
||||
ItemStack stack = player.inventory.getStackInSlot(message.slotId);
|
||||
|
||||
if (stack.getItem() instanceof ItemNetworkItem) {
|
||||
((ItemNetworkItem) stack.getItem()).applyNetwork(stack, n -> n.getNetworkItemHandler().open(player, player.inventory.getStackInSlot(message.slotId)), player::sendMessage);
|
||||
((ItemNetworkItem) stack.getItem()).applyNetwork(stack, n -> n.getNetworkItemHandler().open(player, stack, message.slotId), player::sendMessage);
|
||||
} else if (stack.getItem() == Item.getItemFromBlock(RSBlocks.PORTABLE_GRID)) { // @Hack
|
||||
API.instance().getGridManager().openGrid(PortableGrid.ID, player, stack);
|
||||
API.instance().getGridManager().openGrid(PortableGrid.ID, player, stack, message.slotId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -510,6 +510,14 @@ public class TileController extends TileBase implements ITickable, INetwork, IRe
|
||||
return world;
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getWorld()
|
||||
{
|
||||
// This is provided by net.minecraft.TileEntity - and needed as a part of INetworkNode
|
||||
// After obfuscation - these two methods will not be the same - so we have to redefine this here
|
||||
return this.world;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NBTTagCompound tag) {
|
||||
super.read(tag);
|
||||
|
@@ -1,8 +1,10 @@
|
||||
package com.raoulvdberge.refinedstorage.tile.config;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.RSItems;
|
||||
import com.raoulvdberge.refinedstorage.api.network.node.INetworkNodeProxy;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.API;
|
||||
import com.raoulvdberge.refinedstorage.inventory.fluid.FluidInventory;
|
||||
import com.raoulvdberge.refinedstorage.item.ItemFilter;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.network.datasync.DataSerializers;
|
||||
@@ -24,23 +26,46 @@ public interface IFilterable {
|
||||
|
||||
static boolean acceptsItem(IItemHandler filters, int mode, int compare, ItemStack stack) {
|
||||
if (mode == WHITELIST) {
|
||||
int slots = 0;
|
||||
|
||||
for (int i = 0; i < filters.getSlots(); ++i) {
|
||||
ItemStack slot = filters.getStackInSlot(i);
|
||||
|
||||
if (API.instance().getComparer().isEqual(slot, stack, compare)) {
|
||||
if (!slot.isEmpty()) {
|
||||
slots++;
|
||||
|
||||
if (slot.getItem() == RSItems.FILTER) {
|
||||
for (ItemStack slotInFilter : ItemFilter.getFilterItemsFromCache(slot)) {
|
||||
if (!slotInFilter.isEmpty() && API.instance().getComparer().isEqual(
|
||||
slotInFilter,
|
||||
stack,
|
||||
compare
|
||||
)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
} else if (API.instance().getComparer().isEqual(slot, stack, compare)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return slots == 0;
|
||||
} else if (mode == BLACKLIST) {
|
||||
for (int i = 0; i < filters.getSlots(); ++i) {
|
||||
ItemStack slot = filters.getStackInSlot(i);
|
||||
|
||||
if (API.instance().getComparer().isEqual(slot, stack, compare)) {
|
||||
if (!slot.isEmpty()) {
|
||||
if (slot.getItem() == RSItems.FILTER) {
|
||||
for (ItemStack slotInFilter : ItemFilter.getFilterItemsFromCache(slot)) {
|
||||
if (!slotInFilter.isEmpty() && API.instance().getComparer().isEqual(slotInFilter, stack, compare)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
} else if (API.instance().getComparer().isEqual(slot, stack, compare)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@@ -36,4 +36,6 @@ public interface ICraftingMonitor {
|
||||
void onTabSelectionChanged(Optional<UUID> taskId);
|
||||
|
||||
void onTabPageChanged(int page);
|
||||
|
||||
int getSlotId();
|
||||
}
|
||||
|
@@ -28,9 +28,11 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
||||
private BlockPos network;
|
||||
private int tabPage;
|
||||
private Optional<UUID> tabSelected;
|
||||
private int slotId;
|
||||
|
||||
public WirelessCraftingMonitor(ItemStack stack) {
|
||||
public WirelessCraftingMonitor(ItemStack stack, int slotId) {
|
||||
this.stack = stack;
|
||||
this.slotId = slotId;
|
||||
this.networkDimension = ItemWirelessCraftingMonitor.getDimensionId(stack);
|
||||
this.network = new BlockPos(ItemWirelessCraftingMonitor.getX(stack), ItemWirelessCraftingMonitor.getY(stack), ItemWirelessCraftingMonitor.getZ(stack));
|
||||
this.tabPage = ItemWirelessCraftingMonitor.getTabPage(stack);
|
||||
@@ -138,4 +140,9 @@ public class WirelessCraftingMonitor implements ICraftingMonitor {
|
||||
RS.INSTANCE.network.sendToServer(new MessageWirelessCraftingMonitorSettings(tabSelected, tabPage));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotId() {
|
||||
return slotId;
|
||||
}
|
||||
}
|
||||
|
@@ -39,6 +39,7 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
|
||||
private int networkDimension;
|
||||
private BlockPos network;
|
||||
private int slotId;
|
||||
|
||||
private int sortingType;
|
||||
private int sortingDirection;
|
||||
@@ -62,11 +63,12 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
}
|
||||
};
|
||||
|
||||
public WirelessFluidGrid(ItemStack stack) {
|
||||
public WirelessFluidGrid(ItemStack stack, int slotId) {
|
||||
this.networkDimension = ItemWirelessFluidGrid.getDimensionId(stack);
|
||||
this.network = new BlockPos(ItemWirelessFluidGrid.getX(stack), ItemWirelessFluidGrid.getY(stack), ItemWirelessFluidGrid.getZ(stack));
|
||||
|
||||
this.stack = stack;
|
||||
this.slotId = slotId;
|
||||
|
||||
this.sortingType = ItemWirelessFluidGrid.getSortingType(stack);
|
||||
this.sortingDirection = ItemWirelessFluidGrid.getSortingDirection(stack);
|
||||
@@ -294,6 +296,11 @@ public class WirelessFluidGrid implements IGridNetworkAware {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotId() {
|
||||
return slotId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClosed(EntityPlayer player) {
|
||||
INetwork network = getNetwork();
|
||||
|
@@ -39,6 +39,7 @@ public class WirelessGrid implements IGridNetworkAware {
|
||||
|
||||
private int networkDimension;
|
||||
private BlockPos network;
|
||||
private int slotId;
|
||||
|
||||
private int viewType;
|
||||
private int sortingType;
|
||||
@@ -63,11 +64,12 @@ public class WirelessGrid implements IGridNetworkAware {
|
||||
}
|
||||
};
|
||||
|
||||
public WirelessGrid(ItemStack stack) {
|
||||
public WirelessGrid(ItemStack stack, int slotId) {
|
||||
this.networkDimension = ItemWirelessGrid.getDimensionId(stack);
|
||||
this.network = new BlockPos(ItemWirelessGrid.getX(stack), ItemWirelessGrid.getY(stack), ItemWirelessGrid.getZ(stack));
|
||||
|
||||
this.stack = stack;
|
||||
this.slotId = slotId;
|
||||
|
||||
this.viewType = ItemWirelessGrid.getViewType(stack);
|
||||
this.sortingType = ItemWirelessGrid.getSortingType(stack);
|
||||
@@ -300,6 +302,12 @@ public class WirelessGrid implements IGridNetworkAware {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotId() {
|
||||
return slotId;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onClosed(EntityPlayer player) {
|
||||
INetwork network = getNetwork();
|
||||
|
@@ -63,6 +63,7 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
|
||||
|
||||
private EntityPlayer player;
|
||||
private ItemStack stack;
|
||||
private int slotId;
|
||||
|
||||
private int sortingType;
|
||||
private int sortingDirection;
|
||||
@@ -132,9 +133,10 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
|
||||
}
|
||||
};
|
||||
|
||||
public PortableGrid(EntityPlayer player, ItemStack stack) {
|
||||
public PortableGrid(EntityPlayer player, ItemStack stack, int slotId) {
|
||||
this.player = player;
|
||||
this.stack = stack;
|
||||
this.slotId = slotId;
|
||||
|
||||
if (player != null) {
|
||||
this.sortingType = ItemWirelessGrid.getSortingType(stack);
|
||||
@@ -426,6 +428,11 @@ public class PortableGrid implements IGrid, IPortableGrid, IStorageDiskContainer
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotId() {
|
||||
return slotId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AccessType getAccessType() {
|
||||
return AccessType.INSERT_EXTRACT;
|
||||
|
@@ -519,6 +519,11 @@ public class TilePortableGrid extends TileBase implements IGrid, IPortableGrid,
|
||||
return redstoneMode.isEnabled(world, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlotId() {
|
||||
return -1;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public IStorageCache getCache() {
|
||||
|
@@ -1,8 +1,12 @@
|
||||
itemGroup.refinedstorage=Refined Storage
|
||||
itemGroup.refinedstorage.covers=Refined Storage: Крышки
|
||||
itemGroup.refinedstorage.covers=Refined Storage: Фасады
|
||||
|
||||
key.refinedstorage.focusSearchBar=Фокусировка на панели поиска
|
||||
key.refinedstorage.clearGridCraftingMatrix=Очистить сетку создания
|
||||
key.refinedstorage.openWirelessGrid=Открыть беспроводной терминал
|
||||
key.refinedstorage.openWirelessFluidGrid=Открыть жидкостный беспроводной терминал
|
||||
key.refinedstorage.openPortableGrid=Открыть переносной терминал
|
||||
key.refinedstorage.openWirelessCraftingMonitor=Открыть беспроводной монитор создания
|
||||
|
||||
gui.refinedstorage:controller.0=Контроллер
|
||||
gui.refinedstorage:controller.1=Творческий контроллер
|
||||
@@ -16,34 +20,34 @@ gui.refinedstorage:item_amount=Количество предмета
|
||||
gui.refinedstorage:fluid_amount=Количество жидкости в mB
|
||||
gui.refinedstorage:disk_drive=Привод
|
||||
gui.refinedstorage:disk_drive.disks=Диски
|
||||
gui.refinedstorage:external_storage=Внешнее хранилище
|
||||
gui.refinedstorage:importer=Импортер
|
||||
gui.refinedstorage:exporter=Экспортер
|
||||
gui.refinedstorage:external_storage=Внешняя шина хранения
|
||||
gui.refinedstorage:importer=Шина импорта
|
||||
gui.refinedstorage:exporter=Шина экспорта
|
||||
gui.refinedstorage:detector=Датчик
|
||||
gui.refinedstorage:destructor=Разрушитель
|
||||
gui.refinedstorage:constructor=Строитель
|
||||
gui.refinedstorage:constructor=Формировщик
|
||||
gui.refinedstorage:relay=Реле
|
||||
gui.refinedstorage:interface.import=Интерфейс импорта
|
||||
gui.refinedstorage:interface.export=Интерфейс экспорта
|
||||
gui.refinedstorage:crafting_monitor=Монитор создания
|
||||
gui.refinedstorage:wireless_crafting_monitor=Беспроводной монитор создания
|
||||
gui.refinedstorage:crafting_monitor.tooltip.requested=Требует %d
|
||||
gui.refinedstorage:crafting_monitor.stored=Запасено: %d
|
||||
gui.refinedstorage:crafting_monitor.tooltip.requested=Запросили %d
|
||||
gui.refinedstorage:crafting_monitor.stored=В наличии: %d
|
||||
gui.refinedstorage:crafting_monitor.missing=Отсутствует: %d
|
||||
gui.refinedstorage:crafting_monitor.processing=Обработка: %d
|
||||
gui.refinedstorage:crafting_monitor.scheduled=Запланировано: %d
|
||||
gui.refinedstorage:crafting_monitor.crafting=Создание: %d
|
||||
gui.refinedstorage:crafting_monitor.machine_does_not_accept_item=Машина не принимает предмет
|
||||
gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid=Машина не принимает жидкость
|
||||
gui.refinedstorage:crafting_monitor.machine_none=Машина не найдена
|
||||
gui.refinedstorage:crafting_monitor.crafter_is_locked=Крафтер заблокирован
|
||||
gui.refinedstorage:crafting_monitor.machine_does_not_accept_item=Механизм не принимает предмет
|
||||
gui.refinedstorage:crafting_monitor.machine_does_not_accept_fluid=Механизм не принимает жидкость
|
||||
gui.refinedstorage:crafting_monitor.machine_none=Механизм не найден
|
||||
gui.refinedstorage:crafting_monitor.crafter_is_locked=Сборщик заблокирован
|
||||
gui.refinedstorage:wireless_transmitter=Беспроводной передатчик
|
||||
gui.refinedstorage:wireless_transmitter.distance=%d блок(ов)
|
||||
gui.refinedstorage:crafter=Крафтер
|
||||
gui.refinedstorage:crafter=Сборщик
|
||||
gui.refinedstorage:filter=Фильтр
|
||||
gui.refinedstorage:filter.compare_damage=Урон
|
||||
gui.refinedstorage:filter.compare_nbt=NBT
|
||||
gui.refinedstorage:filter.mod_filter=Фильтр по моду
|
||||
gui.refinedstorage:filter.compare_damage=Учитывать урон
|
||||
gui.refinedstorage:filter.compare_nbt=Учитывать NBT
|
||||
gui.refinedstorage:filter.mod_filter=Фильтровать по моду
|
||||
gui.refinedstorage:network_transmitter=Сетевой передатчик
|
||||
gui.refinedstorage:network_transmitter.distance=%d блоков
|
||||
gui.refinedstorage:network_transmitter.dimension=Измерение %d
|
||||
@@ -56,19 +60,19 @@ gui.refinedstorage:crafting_preview.to_craft=Создать: %d
|
||||
gui.refinedstorage:crafting_preview.available=Доступно: %d
|
||||
gui.refinedstorage:crafting_preview.missing=Отсутствует: %d
|
||||
gui.refinedstorage:crafting_preview.error=Не удается создать
|
||||
gui.refinedstorage:crafting_preview.error.recursive.0=Один из ингредиентов для крафта оказался нуждающимся
|
||||
gui.refinedstorage:crafting_preview.error.recursive.1=в себе.
|
||||
gui.refinedstorage:crafting_preview.error.recursive.0=Не хватает ингридиентов, чтобы завершить
|
||||
gui.refinedstorage:crafting_preview.error.recursive.1=создание.
|
||||
gui.refinedstorage:crafting_preview.error.recursive.2=Вам нужно удалить шаблон или убедиться, что
|
||||
gui.refinedstorage:crafting_preview.error.recursive.3=шаблон не используется во время обработки.
|
||||
gui.refinedstorage:crafting_preview.error.recursive.4=Нарушение шаблона:
|
||||
gui.refinedstorage:crafting_preview.error.recursive.4=Шаблон повреждён:
|
||||
gui.refinedstorage:crafting_preview.error.too_complex.0=Расчет крафтовой задачи был слишком сложным
|
||||
gui.refinedstorage:crafting_preview.error.too_complex.1=и был остановлен, чтобы избежать нагрузки на сервер.
|
||||
gui.refinedstorage:reader=Устройство чтения
|
||||
gui.refinedstorage:writer=Устройство записи
|
||||
gui.refinedstorage:security_manager=Менеджер безопасности
|
||||
gui.refinedstorage:security_manager.configure=Конфигурировать
|
||||
gui.refinedstorage:security_manager.permission.0=Вставить
|
||||
gui.refinedstorage:security_manager.permission.0.tooltip=Вставка предметов в сеть
|
||||
gui.refinedstorage:security_manager.configure=Настроить
|
||||
gui.refinedstorage:security_manager.permission.0=Поместить
|
||||
gui.refinedstorage:security_manager.permission.0.tooltip=Помещение предметов в сеть
|
||||
gui.refinedstorage:security_manager.permission.1=Извлечь
|
||||
gui.refinedstorage:security_manager.permission.1.tooltip=Извлечение предметов из сети
|
||||
gui.refinedstorage:security_manager.permission.2=Автосоздание
|
||||
@@ -80,7 +84,7 @@ gui.refinedstorage:security_manager.permission.4.tooltip=Добавление и
|
||||
gui.refinedstorage:security_manager.permission.5=Безопасность
|
||||
gui.refinedstorage:security_manager.permission.5.tooltip=Возможность изменения параметров безопасности
|
||||
gui.refinedstorage:storage_monitor=Монитор хранения
|
||||
gui.refinedstorage:portable_grid=Портативный терминал
|
||||
gui.refinedstorage:portable_grid=Переносной терминал
|
||||
gui.refinedstorage:crafter_manager=Менеджер создания
|
||||
|
||||
misc.refinedstorage:energy_stored=%d / %d FE
|
||||
@@ -111,10 +115,10 @@ misc.refinedstorage:clear=Очистить
|
||||
misc.refinedstorage:set=Установить
|
||||
misc.refinedstorage:cancel_all=Отменить все
|
||||
misc.refinedstorage:priority=Приоритет
|
||||
misc.refinedstorage:oredict=Словарь руды
|
||||
misc.refinedstorage:oredict=Словарь руд
|
||||
misc.refinedstorage:processing=Обработка
|
||||
|
||||
misc.refinedstorage:reader_writer.redstone=Сила красного камня: %d
|
||||
misc.refinedstorage:reader_writer.redstone=Сила сигнала редстоуна: %d
|
||||
|
||||
misc.refinedstorage:total=%s всего
|
||||
|
||||
@@ -132,24 +136,24 @@ misc.refinedstorage:last_modified.weeks=Последнее изменение %d
|
||||
misc.refinedstorage:last_modified.year=Последнее изменение %d год назад %s
|
||||
misc.refinedstorage:last_modified.years=Последнее изменение %d лет назад %s
|
||||
|
||||
sidebutton.refinedstorage:compare.1=Использовать урон
|
||||
sidebutton.refinedstorage:compare.2=Использовать NBT
|
||||
sidebutton.refinedstorage:compare.1=Учитывать урон
|
||||
sidebutton.refinedstorage:compare.2=Учитывать NBT
|
||||
|
||||
sidebutton.refinedstorage:redstone_mode=Режим редстоуна
|
||||
sidebutton.refinedstorage:redstone_mode.0=Игнорировать редстоун сигнал
|
||||
sidebutton.refinedstorage:redstone_mode.1=Работать только с редстоун сигналом
|
||||
sidebutton.refinedstorage:redstone_mode.2=Работать только без редстоун сигнала
|
||||
sidebutton.refinedstorage:redstone_mode.0=Игнорировать редстоун-сигнал
|
||||
sidebutton.refinedstorage:redstone_mode.1=Работать только с редстоун-сигналом
|
||||
sidebutton.refinedstorage:redstone_mode.2=Работать только без редстоун-сигнала
|
||||
|
||||
sidebutton.refinedstorage:crafter_mode=Режим создания
|
||||
sidebutton.refinedstorage:crafter_mode.0=Игнорировать сигнал редстоун
|
||||
sidebutton.refinedstorage:crafter_mode.1=Сигнал редстоун разблокирует автосоздание
|
||||
sidebutton.refinedstorage:crafter_mode.2=Сигнал редстоун блокирует автосоздание
|
||||
sidebutton.refinedstorage:crafter_mode.3=Импульс редстоун вставляет следующий набор
|
||||
sidebutton.refinedstorage:crafter_mode.0=Игнорировать редстоун-сигнал
|
||||
sidebutton.refinedstorage:crafter_mode.1=Подача Редстоун-сигнала начинает автосоздание
|
||||
sidebutton.refinedstorage:crafter_mode.2=Подача Редстоун-сигнала останавливает автосоздание
|
||||
sidebutton.refinedstorage:crafter_mode.3=Подача Редстоун-импульса вставляет следующий рецепт
|
||||
|
||||
sidebutton.refinedstorage:grid.view_type=Отображение
|
||||
sidebutton.refinedstorage:grid.view_type.0=Обычное
|
||||
sidebutton.refinedstorage:grid.view_type.1=Нельзя скрафтить
|
||||
sidebutton.refinedstorage:grid.view_type.2=Можно скрафтить
|
||||
sidebutton.refinedstorage:grid.view_type.1=Нет шаблонов
|
||||
sidebutton.refinedstorage:grid.view_type.2=Только шаблоны
|
||||
sidebutton.refinedstorage:grid.sorting.direction=Направление сортировки
|
||||
sidebutton.refinedstorage:grid.sorting.direction.0=По возрастанию
|
||||
sidebutton.refinedstorage:grid.sorting.direction.1=По убыванию
|
||||
@@ -159,7 +163,7 @@ sidebutton.refinedstorage:grid.sorting.type.1=Название
|
||||
sidebutton.refinedstorage:grid.sorting.type.2=ID
|
||||
sidebutton.refinedstorage:grid.sorting.type.3=Inventory Tweaks
|
||||
sidebutton.refinedstorage:grid.sorting.type.4=Последнее изменение
|
||||
sidebutton.refinedstorage:grid.search_box_mode=Режим строки поиска
|
||||
sidebutton.refinedstorage:grid.search_box_mode=Режим панели поиска
|
||||
sidebutton.refinedstorage:grid.search_box_mode.0=Обычный
|
||||
sidebutton.refinedstorage:grid.search_box_mode.1=Обычный (автовыбор)
|
||||
sidebutton.refinedstorage:grid.search_box_mode.2=Синхронизированный с JEI
|
||||
@@ -174,9 +178,9 @@ sidebutton.refinedstorage:mode=Режим
|
||||
sidebutton.refinedstorage:mode.whitelist=Белый список
|
||||
sidebutton.refinedstorage:mode.blacklist=Черный список
|
||||
|
||||
sidebutton.refinedstorage:iomode=IO режим
|
||||
sidebutton.refinedstorage:iomode.insert=Вставить в сеть
|
||||
sidebutton.refinedstorage:iomode.extract=Извлечь из сети
|
||||
sidebutton.refinedstorage:iomode=Режим входа/выхода
|
||||
sidebutton.refinedstorage:iomode.insert=Импортировать в сеть
|
||||
sidebutton.refinedstorage:iomode.extract=Экспортировать из сети
|
||||
|
||||
sidebutton.refinedstorage:type=Тип
|
||||
sidebutton.refinedstorage:type.0=Предметы
|
||||
@@ -187,70 +191,70 @@ sidebutton.refinedstorage:detector.mode.0=Выдача сигнала, если
|
||||
sidebutton.refinedstorage:detector.mode.1=Выдача сигнала, если количество равно
|
||||
sidebutton.refinedstorage:detector.mode.2=Выдача сигнала, если количество больше
|
||||
|
||||
sidebutton.refinedstorage:constructor.drop=Выкидывать блоки вместо размещения
|
||||
sidebutton.refinedstorage:constructor.drop=Выбрасывать блоки вместо размещения
|
||||
|
||||
sidebutton.refinedstorage:destructor.pickup=Подбирать предметы, а не ломать
|
||||
|
||||
sidebutton.refinedstorage:access_type=Тип доступа
|
||||
sidebutton.refinedstorage:access_type.0=Вставить и извлечь
|
||||
sidebutton.refinedstorage:access_type.1=Только вставить
|
||||
sidebutton.refinedstorage:access_type.0=Поместить и извлечь
|
||||
sidebutton.refinedstorage:access_type.1=Только поместить
|
||||
sidebutton.refinedstorage:access_type.2=Только извлечь
|
||||
|
||||
block.refinedstorage:controller.0.name=Контроллер
|
||||
block.refinedstorage:controller.1.name=Творческий контроллер
|
||||
block.refinedstorage:cable.name=Кабель
|
||||
block.refinedstorage:grid.0.name=Терминал
|
||||
block.refinedstorage:grid.1.name=Терминал с верстаком
|
||||
block.refinedstorage:grid.1.name=Терминал создания
|
||||
block.refinedstorage:grid.2.name=Терминал с кодировщиком шаблонов
|
||||
block.refinedstorage:grid.3.name=Жидкостный терминал
|
||||
block.refinedstorage:disk_drive.name=Привод
|
||||
block.refinedstorage:disk_manipulator.name=Дисковый манипулятор
|
||||
block.refinedstorage:external_storage.name=Внешнее хранилище
|
||||
block.refinedstorage:importer.name=Импортер
|
||||
block.refinedstorage:exporter.name=Экспортер
|
||||
block.refinedstorage:external_storage.name=Внешняя шина хранения
|
||||
block.refinedstorage:importer.name=Шина импорта
|
||||
block.refinedstorage:exporter.name=Шина экспорта
|
||||
block.refinedstorage:detector.name=Датчик
|
||||
block.refinedstorage:machine_casing.name=Корпус машины
|
||||
block.refinedstorage:machine_casing.name=Корпус механизма
|
||||
block.refinedstorage:destructor.name=Разрушитель
|
||||
block.refinedstorage:constructor.name=Строитель
|
||||
block.refinedstorage:storage.0.name=Блок хранения 1Кб
|
||||
block.refinedstorage:storage.1.name=Блок хранения 4Кб
|
||||
block.refinedstorage:storage.2.name=Блок хранения 16Кб
|
||||
block.refinedstorage:storage.3.name=Блок хранения 64Кб
|
||||
block.refinedstorage:constructor.name=Формировщик
|
||||
block.refinedstorage:storage.0.name=Блок хранения 1k
|
||||
block.refinedstorage:storage.1.name=Блок хранения 4k
|
||||
block.refinedstorage:storage.2.name=Блок хранения 16k
|
||||
block.refinedstorage:storage.3.name=Блок хранения 64k
|
||||
block.refinedstorage:storage.4.name=Творческий блок хранения
|
||||
block.refinedstorage:relay.name=Реле
|
||||
block.refinedstorage:interface.name=Интерфейс
|
||||
block.refinedstorage:crafting_monitor.name=Монитор создания
|
||||
block.refinedstorage:wireless_transmitter.name=Беспроводной передатчик
|
||||
block.refinedstorage:wireless_transmitter.tooltip=Необходимо разместить на %s.
|
||||
block.refinedstorage:crafter.name=Крафтер
|
||||
block.refinedstorage:wireless_transmitter.tooltip=Необходимо поставить на %s.
|
||||
block.refinedstorage:crafter.name=Сборщик
|
||||
block.refinedstorage:network_receiver.name=Сетевой приемник
|
||||
block.refinedstorage:network_transmitter.name=Сетевой передатчик
|
||||
block.refinedstorage:fluid_interface.name=Жидкостный интерфейс
|
||||
block.refinedstorage:fluid_storage.0.name=Жидкостный блок хранения 64Кб
|
||||
block.refinedstorage:fluid_storage.1.name=Жидкостный блок хранения 256Кб
|
||||
block.refinedstorage:fluid_storage.2.name=Жидкостный блок хранения 1024Кб
|
||||
block.refinedstorage:fluid_storage.3.name=Жидкостный блок хранения 4096Кб
|
||||
block.refinedstorage:fluid_storage.4.name=Творческий жидкостный блок хранения
|
||||
block.refinedstorage:fluid_storage.0.name=Блок хранения жидкости 64k
|
||||
block.refinedstorage:fluid_storage.1.name=Блок хранения жидкости 256k
|
||||
block.refinedstorage:fluid_storage.2.name=Блок хранения жидкости 1024k
|
||||
block.refinedstorage:fluid_storage.3.name=Блок хранения жидкости 4096k
|
||||
block.refinedstorage:fluid_storage.4.name=Творческий блок хранения жидкости
|
||||
block.refinedstorage:reader.name=Устройство чтения
|
||||
block.refinedstorage:writer.name=Устройство записи
|
||||
block.refinedstorage:security_manager.name=Менеджер безопасности
|
||||
block.refinedstorage:quartz_enriched_iron_block.name=Блок из обогащенного кварцем железа
|
||||
block.refinedstorage:quartz_enriched_iron_block.name=Блок обогащенного кварцем железа
|
||||
block.refinedstorage:storage_monitor.name=Монитор хранения
|
||||
block.refinedstorage:portable_grid.0.name=Портативный терминал
|
||||
block.refinedstorage:portable_grid.1.name=Творческий портативный терминал
|
||||
block.refinedstorage:portable_grid.tooltip=Присесть для размещения в мире.
|
||||
block.refinedstorage:portable_grid.0.name=Переносной терминал
|
||||
block.refinedstorage:portable_grid.1.name=Творческий переносной терминал
|
||||
block.refinedstorage:portable_grid.tooltip=Присядьте, чтобы поставить в мире.
|
||||
block.refinedstorage:crafter_manager.name=Менеджер создания
|
||||
|
||||
item.refinedstorage:storage_disk.0.name=Диск хранения 1Кб
|
||||
item.refinedstorage:storage_disk.1.name=Диск хранения 4Кб
|
||||
item.refinedstorage:storage_disk.2.name=Диск хранения 16Кб
|
||||
item.refinedstorage:storage_disk.3.name=Диск хранения 64Кб
|
||||
item.refinedstorage:storage_disk.0.name=Диск хранения 1k
|
||||
item.refinedstorage:storage_disk.1.name=Диск хранения 4k
|
||||
item.refinedstorage:storage_disk.2.name=Диск хранения 16k
|
||||
item.refinedstorage:storage_disk.3.name=Диск хранения 64k
|
||||
item.refinedstorage:storage_disk.4.name=Творческий диск хранения
|
||||
item.refinedstorage:storage_disk.5.name=Диск хранения отладки
|
||||
item.refinedstorage:fluid_storage_disk.0.name=Диск хранения жидкости 64Кб
|
||||
item.refinedstorage:fluid_storage_disk.1.name=Диск хранения жидкости 256Кб
|
||||
item.refinedstorage:fluid_storage_disk.2.name=Диск хранения жидкости 1024Кб
|
||||
item.refinedstorage:fluid_storage_disk.3.name=Диск хранения жидкости 4096Кб
|
||||
item.refinedstorage:fluid_storage_disk.0.name=Диск хранения жидкости 64k
|
||||
item.refinedstorage:fluid_storage_disk.1.name=Диск хранения жидкости 256k
|
||||
item.refinedstorage:fluid_storage_disk.2.name=Диск хранения жидкости 1024k
|
||||
item.refinedstorage:fluid_storage_disk.3.name=Диск хранения жидкости 4096k
|
||||
item.refinedstorage:fluid_storage_disk.4.name=Творческий диск хранения жидкости
|
||||
item.refinedstorage:fluid_storage_disk.5.name=Жидкостный диск хранения отладки
|
||||
item.refinedstorage:wireless_grid.0.name=Беспроводной терминал
|
||||
@@ -259,8 +263,8 @@ item.refinedstorage:wireless_fluid_grid.0.name=Беспроводной жидк
|
||||
item.refinedstorage:wireless_fluid_grid.1.name=Творческий беспроводной жидкостный терминал
|
||||
item.refinedstorage:wireless_crafting_monitor.0.name=Беспроводной монитор создания
|
||||
item.refinedstorage:wireless_crafting_monitor.1.name=Творческий беспроводной монитор создания
|
||||
item.refinedstorage:quartz_enriched_iron.name=Кварцевое обогащенное железо
|
||||
item.refinedstorage:core.0.name=Ядро созидания
|
||||
item.refinedstorage:quartz_enriched_iron.name=Обогащённое кварцем железо
|
||||
item.refinedstorage:core.0.name=Ядро формирования
|
||||
item.refinedstorage:core.1.name=Ядро разрушения
|
||||
item.refinedstorage:silicon.name=Кремний
|
||||
item.refinedstorage:processor.0.name=Необработанный базовый процессор
|
||||
@@ -269,106 +273,107 @@ item.refinedstorage:processor.2.name=Необработанный продвин
|
||||
item.refinedstorage:processor.3.name=Базовый процессор
|
||||
item.refinedstorage:processor.4.name=Улучшенный процессор
|
||||
item.refinedstorage:processor.5.name=Продвинутый процессор
|
||||
item.refinedstorage:storage_part.0.name=Часть хранения 1Кб
|
||||
item.refinedstorage:storage_part.1.name=Часть хранения 4Кб
|
||||
item.refinedstorage:storage_part.2.name=Часть хранения 16Кб
|
||||
item.refinedstorage:storage_part.3.name=Часть хранения 64Кб
|
||||
item.refinedstorage:fluid_storage_part.0.name=Жидкостная часть хранения 64Кб
|
||||
item.refinedstorage:fluid_storage_part.1.name=Жидкостная часть хранения 256Кб
|
||||
item.refinedstorage:fluid_storage_part.2.name=Жидкостная часть хранения 1024Кб
|
||||
item.refinedstorage:fluid_storage_part.3.name=Жидкостная часть хранения 4096Кб
|
||||
item.refinedstorage:storage_part.0.name=Компонент хранения 1k
|
||||
item.refinedstorage:storage_part.1.name=Компонент хранения 4k
|
||||
item.refinedstorage:storage_part.2.name=Компонент хранения 16k
|
||||
item.refinedstorage:storage_part.3.name=Компонент хранения 64k
|
||||
item.refinedstorage:fluid_storage_part.0.name=Жидкостный компонент хранения 64k
|
||||
item.refinedstorage:fluid_storage_part.1.name=Жидкостный компонент хранения 256k
|
||||
item.refinedstorage:fluid_storage_part.2.name=Жидкостный компонент хранения 1024k
|
||||
item.refinedstorage:fluid_storage_part.3.name=Жидкостный компонент хранения 4096k
|
||||
item.refinedstorage:pattern.name=Шаблон
|
||||
item.refinedstorage:upgrade.0.name=Улучшение
|
||||
item.refinedstorage:upgrade.1.name=Улучшение: "Радиус"
|
||||
item.refinedstorage:upgrade.2.name=Улучшение: "Скорость"
|
||||
item.refinedstorage:upgrade.3.name=Улучшение: "Крафт"
|
||||
item.refinedstorage:upgrade.3.name=Улучшение: "Создание"
|
||||
item.refinedstorage:upgrade.4.name=Улучшение: "Стак"
|
||||
item.refinedstorage:upgrade.6.name=Улучшение: "Шёлковое касание"
|
||||
item.refinedstorage:upgrade.7.name=Улучшение: "Удача"
|
||||
item.refinedstorage:upgrade.8.name=Улучшение: "Удача"
|
||||
item.refinedstorage:upgrade.9.name=Улучшение: "Удача"
|
||||
item.refinedstorage:storage_housing.name=Хранилище корпуса
|
||||
item.refinedstorage:storage_housing.name=Корпус диска
|
||||
item.refinedstorage:filter.name=Фильтр
|
||||
item.refinedstorage:network_card.name=Сетевая карта
|
||||
item.refinedstorage:wrench.name=Гаечный ключ
|
||||
item.refinedstorage:security_card.name=Карточка безопасности
|
||||
item.refinedstorage:security_card.owner=Связано с: %s
|
||||
item.refinedstorage:cutting_tool.name=Режущий инструмент
|
||||
item.refinedstorage:cover.name=Крышка
|
||||
item.refinedstorage:hollow_cover.name=Полая крышка
|
||||
item.refinedstorage:processor_binding.name=Связанный процессор
|
||||
item.refinedstorage:cover.name=Фасад
|
||||
item.refinedstorage:hollow_cover.name=Полый фасад
|
||||
item.refinedstorage:processor_binding.name=Связующий процессорный компонент
|
||||
|
||||
commands.refinedstorage.createdisk.usage=/createdisk <player> <item> <metadata> <id>
|
||||
commands.refinedstorage.createdisk.error.notADisk=Данный предмет диска не является диском.
|
||||
commands.refinedstorage.createdisk.error.notADisk=Данный предмет не является диском.
|
||||
commands.refinedstorage.createdisk.error.diskNotFound=Диск %s не был найден.
|
||||
commands.refinedstorage.createdisk.success=Успешно дал диск %s к %s.
|
||||
|
||||
advancements.refinedstorage:controlling.description=Создать контроллер
|
||||
advancements.refinedstorage:controlling.description=Создайте контроллер
|
||||
advancements.refinedstorage:connecting=Соединение
|
||||
advancements.refinedstorage:connecting.description=Вы можете разместить все устройства рядом друг с другом, чтобы подключить их, или, используя кабель
|
||||
advancements.refinedstorage:conditional_connecting=Условное подключение
|
||||
advancements.refinedstorage:conditional_connecting.description=Изготовить реле для управления, если сигнал сети может пройти с редстоун
|
||||
advancements.refinedstorage:connecting.description=Вы можете разместить все устройства рядом друг с другом, чтобы соединить их, или с помощью кабеля
|
||||
advancements.refinedstorage:conditional_connecting=Условное соединение
|
||||
advancements.refinedstorage:conditional_connecting.description=Установите реле для управления сетью с помощью редстон-сигнала
|
||||
advancements.refinedstorage:drives=Приводы
|
||||
advancements.refinedstorage:drives.description=Создайте дисковый привод, чтобы иметь возможность хранить ваши диски
|
||||
advancements.refinedstorage:manipulating_disks=Манипулирование дисками
|
||||
advancements.refinedstorage:manipulating_disks=Управление дисками
|
||||
advancements.refinedstorage:manipulating_disks.description=Используйте Манипулятор для простого изменения содержимого дисков
|
||||
advancements.refinedstorage:storing_items=Хранение предметов
|
||||
advancements.refinedstorage:storing_items.description=Создайте диск для хранения и поместите его на свой дисковый привод.
|
||||
advancements.refinedstorage:viewing_items=Просмотр предметов
|
||||
advancements.refinedstorage:viewing_items.description=Создайте терминал для взаимодействия с хранилищем предметов
|
||||
advancements.refinedstorage:viewing_items.description=Создайте терминал для взаимодействия с вашим хранилищем
|
||||
advancements.refinedstorage:portable_storage=Портативное хранение
|
||||
advancements.refinedstorage:portable_storage.description=Создайте переносимый терминал для доступа к предметам на дисках без подключения к сети
|
||||
advancements.refinedstorage:upgrading_your_grid=Обновление терминала
|
||||
advancements.refinedstorage:upgrading_your_grid.description=Обновите терминал до терминала создания, чтобы получить способности создания в терминале
|
||||
advancements.refinedstorage:upgrading_your_grid=Обновите свою сеть
|
||||
advancements.refinedstorage:upgrading_your_grid.description=Улучшите терминал до терминала создания, чтобы получить возможность создания в терминале
|
||||
advancements.refinedstorage:storing_fluids=Хранение жидкостей
|
||||
advancements.refinedstorage:storing_fluids.description=Создайте диск с жидкостью и поместите его на свой диск
|
||||
advancements.refinedstorage:storing_fluids.description=Создайте диск для хранения жидкости и поместите его в дисковод
|
||||
advancements.refinedstorage:viewing_fluids=Просмотр жидкостей
|
||||
advancements.refinedstorage:viewing_fluids.description=Создайте идкостный терминал для взаимодействия с жидкостью
|
||||
advancements.refinedstorage:viewing_fluids.description=Создайте жидкостный терминал для взаимодействия с жидкостями
|
||||
advancements.refinedstorage:better_than_a_barrel=Лучше, чем бочка
|
||||
advancements.refinedstorage:better_than_a_barrel.description=Создайте монитор хранилища для просмотра, вставки или извлечения предметов в сети
|
||||
advancements.refinedstorage:better_than_a_barrel.description=Создайте монитор хранения для просмотра, импорта или экспорта предметов в сеть
|
||||
advancements.refinedstorage:autocrafting=Автосоздание
|
||||
advancements.refinedstorage:autocrafting.description=Создайте крафтер
|
||||
advancements.refinedstorage:autocrafting.description=Создайте сборшик
|
||||
advancements.refinedstorage:pattern_creation=Создание шаблонов
|
||||
advancements.refinedstorage:pattern_creation.description=Создайте шаблоны с помощью терминала шаблонов и шаблона
|
||||
advancements.refinedstorage:pattern_creation.description=Создайте шаблоны с помощью терминала шаблонов
|
||||
advancements.refinedstorage:monitoring=Мониторинг
|
||||
advancements.refinedstorage:monitoring.description=Проверьте состояние вашей задачи крафта, с помощью монитора создания
|
||||
advancements.refinedstorage:monitoring.description=Проверьте прогресс автосоздания, с помощью монитора создания
|
||||
advancements.refinedstorage:managing_patterns=Управление шаблонами
|
||||
advancements.refinedstorage:managing_patterns.description=Создайте крафтер менеджер, чтобы лучше управлять своими шаблонами
|
||||
advancements.refinedstorage:managing_patterns.description=Создайте менеджер создания, чтобы лучше управлять своими шаблонами
|
||||
advancements.refinedstorage:importing=Импорт
|
||||
advancements.refinedstorage:importing.description=Получите предметы или жидкости в сеть хранения с помощью импортера
|
||||
advancements.refinedstorage:importing.description=Используйте шину импорта для ввода предметов в сеть
|
||||
advancements.refinedstorage:destruction=Уничтожение
|
||||
advancements.refinedstorage:destruction.description=Получите блоки или жидкости в сеть хранения с уничтожителя
|
||||
advancements.refinedstorage:destruction.description=Используйте разрушитель для импорта блоков или жидкостей в сеть
|
||||
advancements.refinedstorage:exporting=Экспорт
|
||||
advancements.refinedstorage:exporting.description=Получите предметы или жидкости из сети хранения с помощью экспортера
|
||||
advancements.refinedstorage:exporting.description=Используйте шину экспорта для извлечения предметов из сети
|
||||
advancements.refinedstorage:construction=Строительство
|
||||
advancements.refinedstorage:construction.description=Получите блоки или жидкости из сети хранения с помощью строителя
|
||||
advancements.refinedstorage:construction.description=Используйте формировщик для размещения предметов или жидкостей из сети
|
||||
advancements.refinedstorage:security=Безопасность
|
||||
advancements.refinedstorage:security.description=Защитите сеть с помощью менеджера безопасности и карты безопасности
|
||||
advancements.refinedstorage:wireless=Беспроводной
|
||||
advancements.refinedstorage:wireless.description=Передайте сетевой сигнал с помощью беспроводного передатчика
|
||||
advancements.refinedstorage:wireless_items=Беспроводные предметы
|
||||
advancements.refinedstorage:wireless_items.description=Взаимодействуйте с Вашим устройством хранения данных беспроводным способом с помощью беспроводного терминала
|
||||
advancements.refinedstorage:wireless_fluids=Беспроводные жидкости
|
||||
advancements.refinedstorage:wireless_fluids.description=Взаимодействуйте с Вашим жидкостным устройством хранения данных беспроводным способом с помощью жидкостного беспроводного терминала
|
||||
advancements.refinedstorage:wireless_items=Беспроводная передача предметов
|
||||
advancements.refinedstorage:wireless_items.description=Используйте беспроводной терминал для удалённого взаимодействия с вашими предметами в сети
|
||||
advancements.refinedstorage:wireless_fluids=Беспроводная передача жидкостей
|
||||
advancements.refinedstorage:wireless_fluids.description=Используйте жидкостный беспроводной терминал для удалённого взаимодействия с вашими жидкостями в сети
|
||||
advancements.refinedstorage:wireless_monitoring=Беспроводной мониторинг
|
||||
advancements.refinedstorage:wireless_monitoring.description=Проверьте состояние ваших задач по управлению беспроводным способом с помощью беспроводного монитора создания
|
||||
advancements.refinedstorage:wireless_monitoring.description=Проверьте статус создания с помощью Беспроводного Монитора Создания
|
||||
advancements.refinedstorage:no_cables_required=Не требуется никаких кабелей
|
||||
advancements.refinedstorage:no_cables_required.description=Добавьте дополнительные компоненты в свою сеть без использования кабелей с помощью сетевого передатчика, сетевого приемника и сетевой карты
|
||||
advancements.refinedstorage:upgrading=Модернизация
|
||||
advancements.refinedstorage:upgrading.description=Создайте обновление
|
||||
advancements.refinedstorage:crafting_on_demand=Создание по требованию
|
||||
advancements.refinedstorage:crafting_on_demand.description=Используйте обновление создания в интерфейсе, экспортере или строителе для создания предметов и блоков по требованию
|
||||
advancements.refinedstorage:no_cables_required.description=Используйте Сетевой Передатчик, Сетевой приемник и Сетевую карту, чтобы добавить дополнительные компоненты в сеть без использования кабеля
|
||||
advancements.refinedstorage:upgrading=Обновление компонентов!
|
||||
advancements.refinedstorage:upgrading.description=Создайте компоненты для улучшения различных устройств
|
||||
advancements.refinedstorage:crafting_on_demand=Создание по команде!
|
||||
advancements.refinedstorage:crafting_on_demand.description=Используйте Улучшение: "создание" в интерфейсе, шине экспорта или формировщике для создания предметов по команде
|
||||
advancements.refinedstorage:more_than_just_storage=Больше, чем просто хранение
|
||||
advancements.refinedstorage:more_than_just_storage.description=Перенесите предметы, жидкости, энергию и редстоун из чтения в запись
|
||||
advancements.refinedstorage:more_than_just_storage.description=Перенесите предметы, жидкости, энергию и редстоун из устройства чтения в устройство записи
|
||||
advancements.refinedstorage:detecting=Обнаружение
|
||||
advancements.refinedstorage:detecting.description=Обнаружьте предметы или жидкости в сети с помощью детектора
|
||||
advancements.refinedstorage:detecting.description=Используйте Детектор, чтобы обнаружить предметы или жидкости в сети
|
||||
advancements.refinedstorage:interface_to_the_world=Интерфейс к миру
|
||||
advancements.refinedstorage:interface_to_the_world.description=Сделайте свою систему хранения доступной в качестве обычного инвентаря для всего мира, используя интерфейс
|
||||
advancements.refinedstorage:interface_to_the_world.description=Экспортируйте и импортируйте предметы одновременно, используя 1 интерфейс
|
||||
advancements.refinedstorage:storing_externally=Внешнее хранение
|
||||
advancements.refinedstorage:storing_externally.description=Используя внешнее хранение, обеспечьте сети хранения из внешнего блока, например, сундука
|
||||
advancements.refinedstorage:storing_externally.description=Используйте внешнюю шину хранения для подлючения к сети внешних источников, например сундуки
|
||||
advancements.refinedstorage:covering=Покрытие
|
||||
advancements.refinedstorage:covering.description=Создайте крышку, чтобы скрыть кабели
|
||||
advancements.refinedstorage:hollow_covering=Полое покрытие
|
||||
advancements.refinedstorage:hollow_covering.description=Создайте полый корпус, чтобы скрыть кабели, но все же пропустите кабель
|
||||
advancements.refinedstorage:binding=Связка
|
||||
advancements.refinedstorage:binding.description=Создайте связанный процессор, чтобы обрабатывать различные процессоры
|
||||
advancements.refinedstorage:covering.description=Создайте фасад, чтобы скрыть кабели
|
||||
advancements.refinedstorage:hollow_covering=Полые фасады
|
||||
advancements.refinedstorage:hollow_covering.description=Создайте полый фасад, который скрывает кабели, обеспечивая в то же время их проходимость через себя
|
||||
advancements.refinedstorage:binding=Сборка
|
||||
advancements.refinedstorage:binding.description=Создайте связующий процессорный компонент для создания процессоров
|
||||
|
||||
|
Reference in New Issue
Block a user