diff --git a/src/main/java/crazypants/enderio/conduit/item/ItemConduitNetwork.java b/src/main/java/crazypants/enderio/conduit/item/ItemConduitNetwork.java index bdb5dcda..ad9aee41 100644 --- a/src/main/java/crazypants/enderio/conduit/item/ItemConduitNetwork.java +++ b/src/main/java/crazypants/enderio/conduit/item/ItemConduitNetwork.java @@ -8,10 +8,13 @@ import java.util.Map; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.IChatComponent; import net.minecraftforge.common.util.ForgeDirection; import com.enderio.core.common.util.BlockCoord; +import crazypants.enderio.EnderIO; import crazypants.enderio.conduit.AbstractConduitNetwork; import crazypants.enderio.conduit.item.NetworkedInventory.Target; import crazypants.enderio.conduit.item.filter.IItemFilter; @@ -176,8 +179,8 @@ public class ItemConduitNetwork extends AbstractConduitNetwork getTargetsForExtraction(BlockCoord extractFrom, IItemConduit con, ItemStack input) { - List result = new ArrayList<>(); + public List getTargetsForExtraction(BlockCoord extractFrom, IItemConduit con, ItemStack input) { + List result = new ArrayList<>(); List invs = getOrCreate(extractFrom); for (NetworkedInventory source : invs) { @@ -187,12 +190,12 @@ public class ItemConduitNetwork extends AbstractConduitNetwork getInputSourcesFor(IItemConduit con, ForgeDirection dir, ItemStack input) { - List result = new ArrayList<>(); + public List getInputSourcesFor(IItemConduit con, ForgeDirection dir, ItemStack input) { + List result = new ArrayList<>(); for (NetworkedInventory inv : inventories) { if (inv.hasTarget(con, dir)) { IItemFilter f = inv.con.getInputFilter(inv.conDir); if (input == null || f == null || f.doesItemPassFilter(inv, input)) { - result.add(inv.getLocalizedInventoryName() + " " + inv.location.chatString()); + result.add(inv.getInventoryNameComponent().appendText(" " + inv.location.chatString())); } } } diff --git a/src/main/java/crazypants/enderio/conduit/item/NetworkedInventory.java b/src/main/java/crazypants/enderio/conduit/item/NetworkedInventory.java index f34d5326..b05adc28 100644 --- a/src/main/java/crazypants/enderio/conduit/item/NetworkedInventory.java +++ b/src/main/java/crazypants/enderio/conduit/item/NetworkedInventory.java @@ -12,6 +12,9 @@ import net.minecraft.inventory.IInventory; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.IChatComponent; import net.minecraft.util.StatCollector; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -442,6 +445,10 @@ public class NetworkedInventory { this.inventorySide = inventorySide; } + /** + * @deprecated Translates on the server. Use {@link #getInventoryNameComponent()} for chat. + */ + @Deprecated public String getLocalizedInventoryName() { String inventoryName = getInventory().getInventoryName(); if (inventoryName == null) { @@ -453,6 +460,22 @@ public class NetworkedInventory { } } + public IChatComponent getInventoryNameComponent() { + String inventoryName = getInventory().getInventoryName(); + if (inventoryName == null) { + return new ChatComponentText("null"); + } + // Ask the tile entity: InventoryWrapper always reports no custom name. + // The client parses the translation as a format string and falls back to en_US if it fails, so a '%' in the + // en_US text (or in the key when untranslated) could crash it. A dedicated server translates to en_US. + boolean customName = connectedTileEntity instanceof IInventory + && ((IInventory) connectedTileEntity).hasCustomInventoryName(); + if (customName || StatCollector.translateToLocal(inventoryName).contains("%")) { + return new ChatComponentText(inventoryName); + } + return new ChatComponentTranslation(inventoryName); + } + static class Target implements Comparable { NetworkedInventory inv; diff --git a/src/main/java/crazypants/enderio/conduit/item/filter/ItemExistingItemFilter.java b/src/main/java/crazypants/enderio/conduit/item/filter/ItemExistingItemFilter.java index 7e5cc92e..0b7f0043 100644 --- a/src/main/java/crazypants/enderio/conduit/item/filter/ItemExistingItemFilter.java +++ b/src/main/java/crazypants/enderio/conduit/item/filter/ItemExistingItemFilter.java @@ -8,6 +8,7 @@ import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; @@ -67,7 +68,7 @@ public class ItemExistingItemFilter extends Item implements IItemFilterUpgrade, ExistingItemFilter filter = (ExistingItemFilter) createFilterFromStack(item); String unloc = "item.itemExistingItemFilter." + (filter.mergeSnapshot(inv) ? "filterUpdated" : "filterNotUpdated"); - ChatUtil.sendNoSpamUnloc(player, EnderIO.lang, unloc); + ChatUtil.sendNoSpam(player, new ChatComponentTranslation(EnderIO.lang.addPrefix(unloc))); FilterRegister.writeFilterToStack(filter, item); return true; } diff --git a/src/main/java/crazypants/enderio/conduit/liquid/AbstractTankConduit.java b/src/main/java/crazypants/enderio/conduit/liquid/AbstractTankConduit.java index fd1c0466..30f5c9c1 100644 --- a/src/main/java/crazypants/enderio/conduit/liquid/AbstractTankConduit.java +++ b/src/main/java/crazypants/enderio/conduit/liquid/AbstractTankConduit.java @@ -7,15 +7,16 @@ import java.util.Set; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Items; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidContainerRegistry; -import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import com.enderio.core.common.util.BlockCoord; import com.enderio.core.common.util.ChatUtil; +import com.gtnewhorizon.gtnhlib.chat.customcomponents.ChatComponentFluidName; import crazypants.enderio.EnderIO; import crazypants.enderio.conduit.AbstractConduitNetwork; @@ -110,7 +111,9 @@ public abstract class AbstractTankConduit extends AbstractLiquidConduit { if (network.fluidTypeLocked) { network.setFluidTypeLocked(false); numEmptyEvents = 0; - ChatUtil.sendNoSpamUnloc(player, EnderIO.lang, "itemLiquidConduit.unlockedType"); + ChatUtil.sendNoSpam( + player, + new ChatComponentTranslation(EnderIO.lang.addPrefix("itemLiquidConduit.unlockedType"))); } } else if (network != null) { network.setFluidType(null); @@ -128,11 +131,10 @@ public abstract class AbstractTankConduit extends AbstractLiquidConduit { || LiquidConduitNetwork.areFluidsCompatable(getFluidType(), fluid))) { network.setFluidType(fluid); network.setFluidTypeLocked(true); - ChatUtil.sendNoSpamUnloc( + ChatUtil.sendNoSpam( player, - EnderIO.lang, - "itemLiquidConduit.lockedType", - " " + FluidRegistry.getFluidName(fluid)); + new ChatComponentTranslation(EnderIO.lang.addPrefix("itemLiquidConduit.lockedType")) + .appendText(" ").appendSibling(new ChatComponentFluidName(fluid))); } } return true; diff --git a/src/main/java/crazypants/enderio/conduit/oc/OCConduit.java b/src/main/java/crazypants/enderio/conduit/oc/OCConduit.java index 8e40d876..7e49af1e 100644 --- a/src/main/java/crazypants/enderio/conduit/oc/OCConduit.java +++ b/src/main/java/crazypants/enderio/conduit/oc/OCConduit.java @@ -15,7 +15,9 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; import net.minecraft.util.IIcon; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @@ -213,14 +215,20 @@ public class OCConduit extends AbstractConduit implements IOCConduit { return null; } - private static String prettyNode(Node o) { - String at = ""; + private static IChatComponent prettyNode(Node o) { Environment host = o.host(); + String name = host.getClass().getName().replaceFirst("^.*\\.", ""); if (host instanceof TileEntity) { - BlockCoord bc = new BlockCoord((TileEntity) host); - at = " at " + bc.x + "/" + bc.y + "/" + bc.z; + return new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemOCConduit.chat.nodeAt"), + name, + coords(new BlockCoord((TileEntity) host))); } - return host.getClass().getName().replaceFirst("^.*\\.", "") + at; + return new ChatComponentText(name); + } + + private static String coords(BlockCoord bc) { + return bc.x + "/" + bc.y + "/" + bc.z; } private static EnumChatFormatting dye2chat(DyeColor dyeColor) { @@ -277,23 +285,34 @@ public class OCConduit extends AbstractConduit implements IOCConduit { for (DyeColor color : DyeColor.VALUES) { if (node(color).neighbors().iterator().hasNext()) { noconnections = false; - ChatComponentText coltxt = new ChatComponentText(color.getLocalisedName()); + ChatComponentTranslation coltxt = new ChatComponentTranslation( + DyeColor.DYE_ORE_UNLOCAL_NAMES[color.ordinal()]); coltxt.getChatStyle().setColor(dye2chat(color)); - ChatComponentText chantxt = new ChatComponentText("Channel "); - chantxt.appendSibling(coltxt); - chantxt.appendText(" at " + bc.x + "/" + bc.y + "/" + bc.z); - player.addChatMessage(chantxt); + player.addChatMessage( + new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemOCConduit.chat.channel"), + coltxt, + coords(bc))); for (Node other : node(color).neighbors()) { - player.addChatMessage(new ChatComponentText(" Connected to: " + prettyNode(other))); + player.addChatMessage( + new ChatComponentText(" ").appendSibling( + new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemOCConduit.chat.connectedTo"), + prettyNode(other)))); } } } if (noconnections) { player.addChatMessage( - new ChatComponentText("No connections at " + bc.x + "/" + bc.y + "/" + bc.z)); + new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemOCConduit.chat.noConnections"), + coords(bc))); } } else { - player.addChatMessage(new ChatComponentText("No network at " + bc.x + "/" + bc.y + "/" + bc.z)); + player.addChatMessage( + new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemOCConduit.chat.noNetwork"), + coords(bc))); } } return true; diff --git a/src/main/java/crazypants/enderio/item/ItemConduitProbe.java b/src/main/java/crazypants/enderio/item/ItemConduitProbe.java index ba202c91..47b3ace1 100644 --- a/src/main/java/crazypants/enderio/item/ItemConduitProbe.java +++ b/src/main/java/crazypants/enderio/item/ItemConduitProbe.java @@ -18,6 +18,7 @@ import com.enderio.core.common.util.ChatUtil; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import crazypants.enderio.EnderIO; import crazypants.enderio.EnderIOTab; import crazypants.enderio.ModObject; import crazypants.enderio.api.tool.IHideFacades; @@ -76,7 +77,7 @@ public class ItemConduitProbe extends Item implements IResourceTooltipProvider, } if (isCopy && performedAction && player.worldObj.isRemote) { - ChatUtil.sendNoSpamClient("Copied conduit settings"); + ChatUtil.sendNoSpamClientUnloc(EnderIO.lang, "itemConduitProbe.chat.copied"); } return performedAction; diff --git a/src/main/java/crazypants/enderio/item/PacketConduitProbe.java b/src/main/java/crazypants/enderio/item/PacketConduitProbe.java index a6f6f8da..b93c640d 100644 --- a/src/main/java/crazypants/enderio/item/PacketConduitProbe.java +++ b/src/main/java/crazypants/enderio/item/PacketConduitProbe.java @@ -1,15 +1,21 @@ package crazypants.enderio.item; +import java.util.ArrayList; import java.util.List; import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import com.enderio.core.common.util.ChatUtil; +import com.gtnewhorizon.gtnhlib.chat.customcomponents.ChatComponentItemName; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; @@ -32,22 +38,23 @@ import io.netty.buffer.ByteBuf; public class PacketConduitProbe implements IMessage, IMessageHandler { - private static final String OF = " " + EnderIO.lang.localize("gui.powerMonitor.of") + " "; - private static final String CON_STORAGE = " " + EnderIO.lang.localize("gui.powerMonitor.monHeading1") + ": "; - private static final String CAP_BANK_STOR = " " + EnderIO.lang.localize("gui.powerMonitor.monHeading2") + ": "; - private static final String MACH_BUF_STOR = " " + EnderIO.lang.localize("gui.powerMonitor.monHeading3") + ": "; - private static final String AVE_OUT = " " + EnderIO.lang.localize("gui.powerMonitor.monHeading4") + ": "; - private static final String AVE_IN = " " + EnderIO.lang.localize("gui.powerMonitor.monHeading5") + ": "; + private static final String OF = "gui.powerMonitor.of"; + private static final String CON_STORAGE = "gui.powerMonitor.monHeading1"; + private static final String CAP_BANK_STOR = "gui.powerMonitor.monHeading2"; + private static final String MACH_BUF_STOR = "gui.powerMonitor.monHeading3"; + private static final String AVE_OUT = "gui.powerMonitor.monHeading4"; + private static final String AVE_IN = "gui.powerMonitor.monHeading5"; - private static final String NET_HEADING = EnderIO.lang.localize("gui.mjReader.networkHeading"); - private static final String CON_BUF = " " + EnderIO.lang.localize("gui.mjReader.conduitBuffer") + ": "; + private static final String NET_HEADING = "gui.mjReader.networkHeading"; + private static final String CON_BUF = "gui.mjReader.conduitBuffer"; - private static final String ITEM_HEADING = EnderIO.lang.localize("gui.mjReader.itemHeading"); - private static final String ITEM_NO_CONNECTIONS = EnderIO.lang.localize("gui.mjReader.itemNoConnections"); + private static final String ITEM_HEADING = "gui.mjReader.itemHeading"; + private static final String ITEM_NO_CONNECTIONS = "gui.mjReader.itemNoConnections"; - private static final String ENERGY_CONDUIT = EnderIO.lang.localize("itemPowerConduit"); - private static final String REQUEST_RANGE = " " + EnderIO.lang.localize("gui.mjReader.requestRange") + ": ";; - private static final String CUR_REQUEST = " " + EnderIO.lang.localize("gui.mjReader.currentRequest") + ": ";; + private static final String ENERGY_CONDUIT = "itemPowerConduit.name"; + private static final String REQUEST_RANGE = "gui.mjReader.requestRange"; + private static final String CUR_REQUEST = "gui.mjReader.currentRequest"; + private static final String RF = "power.rf"; public static boolean canCreatePacket(World world, int x, int y, int z) { Block block = world.getBlock(x, y, z); @@ -154,191 +161,127 @@ public class PacketConduitProbe implements IMessage, IMessageHandler lines = new ArrayList<>(); if (conduit.getExternalConnections().isEmpty()) { - sb.append(ITEM_HEADING); - sb.append(" "); - sb.append(ITEM_NO_CONNECTIONS); - sb.append("\n"); + lines.add( + line(EnumChatFormatting.GREEN).appendSibling(tr(ITEM_HEADING)).appendText(" ") + .appendSibling(tr(ITEM_NO_CONNECTIONS))); } else { for (ForgeDirection dir : conduit.getExternalConnections()) { ConnectionMode mode = conduit.getConnectionMode(dir); - sb.append(ITEM_HEADING); - sb.append(" "); - sb.append(EnderIO.lang.localize("gui.mjReader.connectionDir")); - sb.append(" "); - sb.append(dir); - sb.append("\n"); + lines.add( + line(EnumChatFormatting.GREEN).appendSibling(tr(ITEM_HEADING)).appendText(" ") + .appendSibling(tr("gui.mjReader.connectionDir")).appendText(" " + dir)); ItemConduitNetwork icn = (ItemConduitNetwork) conduit.getNetwork(); if (icn != null && mode.acceptsInput()) { - color = "\u00A79 "; - sb.append(color); - + IChatComponent line = line(EnumChatFormatting.BLUE); if (input == null) { - sb.append(EnderIO.lang.localize("gui.mjReader.extractedItems")); + line.appendSibling(tr("gui.mjReader.extractedItems")); } else { - sb.append(EnderIO.lang.localize("gui.mjReader.extractedItem")); - sb.append(" "); - sb.append(input.getDisplayName()); + line.appendSibling(tr("gui.mjReader.extractedItem")).appendText(" ") + .appendSibling(new ChatComponentItemName(input)); } - sb.append(" "); - List targets = icn + line.appendText(" "); + List targets = icn .getTargetsForExtraction(conduit.getLocation().getLocation(dir), conduit, input); if (targets.isEmpty()) { - sb.append(" "); - sb.append(EnderIO.lang.localize("gui.mjReader.noOutputs")); - sb.append(".\n"); + lines.add(line.appendSibling(tr("gui.mjReader.noOutputs")).appendText(".")); } else { - sb.append(" "); - sb.append(EnderIO.lang.localize("gui.mjReader.insertedInto")); - sb.append("\n"); - for (String str : targets) { - sb.append(" - "); - sb.append(str); - sb.append(" "); - sb.append("\n"); + lines.add(line.appendSibling(tr("gui.mjReader.insertedInto"))); + for (IChatComponent target : targets) { + lines.add(new ChatComponentText(" - ").appendSibling(target)); } } } if (icn != null && mode.acceptsOutput()) { - color = "\u00A79 "; - sb.append(color); - - List targets = icn.getInputSourcesFor(conduit, dir, input); + IChatComponent line = line(EnumChatFormatting.BLUE); + List targets = icn.getInputSourcesFor(conduit, dir, input); if (targets.isEmpty()) { if (input == null) { - sb.append(EnderIO.lang.localize("gui.mjReader.noItems")); + line.appendSibling(tr("gui.mjReader.noItems")); } else { - sb.append(EnderIO.lang.localize("gui.mjReader.noItem")); - sb.append(" "); - sb.append(input.getDisplayName()); + line.appendSibling(tr("gui.mjReader.noItem")).appendText(" ") + .appendSibling(new ChatComponentItemName(input)); } + lines.add(line); } else { if (input == null) { - sb.append(EnderIO.lang.localize("gui.mjReader.receiveItems")); + line.appendSibling(tr("gui.mjReader.receiveItems")); } else { - sb.append(EnderIO.lang.localize("gui.mjReader.receiveItem1")); - sb.append(" "); - sb.append(input.getDisplayName()); - sb.append(" "); - sb.append(EnderIO.lang.localize("gui.mjReader.receiveItem2")); + line.appendSibling( + new ChatComponentTranslation( + EnderIO.lang.addPrefix("gui.mjReader.receiveItem"), + new ChatComponentItemName(input))); } - sb.append("\n"); - for (String str : targets) { - sb.append(" - "); - sb.append(str); - sb.append("\n"); + lines.add(line); + for (IChatComponent target : targets) { + lines.add(new ChatComponentText(" - ").appendSibling(target)); } } } } } - String[] lines = sb.toString().split("\n"); - ChatUtil.sendNoSpam(player, lines); + ChatUtil.sendNoSpam(player, lines.toArray(new IChatComponent[0])); + } + + private static IChatComponent tr(String key) { + return new ChatComponentTranslation(EnderIO.lang.addPrefix(key)); + } + + private static IChatComponent line(EnumChatFormatting color) { + IChatComponent line = new ChatComponentText(" "); + line.getChatStyle().setColor(color); + return line; + } + + private static IChatComponent power(long amount, long max) { + return new ChatComponentText(PowerDisplayUtil.formatPower(amount) + " ").appendSibling(tr(OF)) + .appendText(" " + PowerDisplayUtil.formatPower(max) + " ").appendSibling(tr(RF)); + } + + private static IChatComponent label(String key) { + return new ChatComponentText(" ").appendSibling(tr(key)).appendText(": "); } public static void sendInfoMessage(EntityPlayer player, NetworkPowerManager pm) { PowerTracker tracker = pm.getNetworkPowerTracker(); - String color = "\u00A7a "; - StringBuilder sb = new StringBuilder(); - sb.append(color); - sb.append(NET_HEADING); - sb.append("\n"); - - color = "\u00A79 "; - sb.append(color); - sb.append(CON_STORAGE); - sb.append(PowerDisplayUtil.formatPower(pm.getPowerInConduits())); - sb.append(OF); - sb.append(PowerDisplayUtil.formatPower(pm.getMaxPowerInConduits())); - sb.append(" "); - sb.append(PowerDisplayUtil.abrevation()); - sb.append("\n"); - sb.append(CAP_BANK_STOR); - sb.append(PowerDisplayUtil.formatPower(pm.getPowerInCapacitorBanks())); - sb.append(OF); - sb.append(PowerDisplayUtil.formatPower(pm.getMaxPowerInCapacitorBanks())); - sb.append(" "); - sb.append(PowerDisplayUtil.abrevation()); - sb.append("\n"); - sb.append(MACH_BUF_STOR); - sb.append(PowerDisplayUtil.formatPower(pm.getPowerInReceptors())); - sb.append(OF); - sb.append(PowerDisplayUtil.formatPower(pm.getMaxPowerInReceptors())); - sb.append(" "); - sb.append(PowerDisplayUtil.abrevation()); - sb.append("\n"); - sb.append(AVE_OUT); - sb.append(PowerDisplayUtil.formatPowerFloat(tracker.getAverageRfTickSent())); - sb.append("\n"); - sb.append(AVE_IN); - sb.append(PowerDisplayUtil.formatPowerFloat(tracker.getAverageRfTickRecieved())); - - String[] lines = sb.toString().split("\n"); - ChatUtil.sendNoSpam(player, lines); + ChatUtil.sendNoSpam( + player, + line(EnumChatFormatting.GREEN).appendSibling(tr(NET_HEADING)), + line(EnumChatFormatting.BLUE).appendSibling(label(CON_STORAGE)) + .appendSibling(power(pm.getPowerInConduits(), pm.getMaxPowerInConduits())), + label(CAP_BANK_STOR) + .appendSibling(power(pm.getPowerInCapacitorBanks(), pm.getMaxPowerInCapacitorBanks())), + label(MACH_BUF_STOR).appendSibling(power(pm.getPowerInReceptors(), pm.getMaxPowerInReceptors())), + label(AVE_OUT).appendText(PowerDisplayUtil.formatPowerFloat(tracker.getAverageRfTickSent())), + label(AVE_IN).appendText(PowerDisplayUtil.formatPowerFloat(tracker.getAverageRfTickRecieved()))); } public static void sendPowerConduitInfo(EntityPlayer player, IPowerConduit con, PowerTracker tracker) { - String color = "\u00A7a "; - StringBuilder sb = new StringBuilder(); - sb.append(color); - sb.append(ENERGY_CONDUIT); - - color = "\u00A79 "; - sb.append(color); - sb.append(CON_BUF); - sb.append(PowerDisplayUtil.formatPower(con.getEnergyStored())); - sb.append(OF); - sb.append(PowerDisplayUtil.formatPower(con.getMaxEnergyStored())); - sb.append(" "); - sb.append(PowerDisplayUtil.abrevation()); - sb.append("\n"); - sb.append(AVE_OUT); - sb.append(PowerDisplayUtil.formatPowerFloat(tracker.getAverageRfTickSent())); - sb.append("\n"); - sb.append(AVE_IN); - sb.append(PowerDisplayUtil.formatPowerFloat(tracker.getAverageRfTickRecieved())); - - String[] lines = sb.toString().split("\n"); - ChatUtil.sendNoSpam(player, lines); + ChatUtil.sendNoSpam( + player, + line(EnumChatFormatting.GREEN).appendSibling(tr(ENERGY_CONDUIT)).appendSibling( + line(EnumChatFormatting.BLUE).appendSibling(label(CON_BUF)) + .appendSibling(power(con.getEnergyStored(), con.getMaxEnergyStored()))), + label(AVE_OUT).appendText(PowerDisplayUtil.formatPowerFloat(tracker.getAverageRfTickSent())), + label(AVE_IN).appendText(PowerDisplayUtil.formatPowerFloat(tracker.getAverageRfTickRecieved()))); } private void sendPowerReciptorInfo(EntityPlayer player, Block block, int stored, int maxStored, int minRec, int maxRec, int request) { - String color = "\u00A7a "; - StringBuilder sb = new StringBuilder(); - sb.append(color); - sb.append(block.getLocalizedName()); - - color = "\u00A79 "; - sb.append(color); - sb.append(CON_BUF); - sb.append(PowerDisplayUtil.formatPower(stored)); - sb.append(OF); - sb.append(PowerDisplayUtil.formatPower(maxStored)); - sb.append(" "); - sb.append(PowerDisplayUtil.abrevation()); - sb.append("\n"); - - sb.append(REQUEST_RANGE); - sb.append(PowerDisplayUtil.formatPower(minRec)); - sb.append(" - "); - sb.append(PowerDisplayUtil.formatPower(maxRec)); - sb.append(" "); - sb.append(PowerDisplayUtil.abrevation()); - sb.append("\n"); - - sb.append(CUR_REQUEST); - sb.append(PowerDisplayUtil.formatPower(request)); - sb.append(" "); - sb.append(PowerDisplayUtil.abrevation()); - - String[] lines = sb.toString().split("\n"); - ChatUtil.sendNoSpam(player, lines); + ChatUtil.sendNoSpam( + player, + line(EnumChatFormatting.GREEN) + .appendSibling(new ChatComponentTranslation(block.getUnlocalizedName() + ".name")) + .appendSibling( + line(EnumChatFormatting.BLUE).appendSibling(label(CON_BUF)) + .appendSibling(power(stored, maxStored))), + label(REQUEST_RANGE).appendText( + PowerDisplayUtil.formatPower(minRec) + " - " + PowerDisplayUtil.formatPower(maxRec) + " ") + .appendSibling(tr(RF)), + label(CUR_REQUEST).appendText(PowerDisplayUtil.formatPower(request) + " ").appendSibling(tr(RF))); } } diff --git a/src/main/java/crazypants/enderio/teleport/anchor/BlockTravelAnchor.java b/src/main/java/crazypants/enderio/teleport/anchor/BlockTravelAnchor.java index d1dee927..d8262cbb 100644 --- a/src/main/java/crazypants/enderio/teleport/anchor/BlockTravelAnchor.java +++ b/src/main/java/crazypants/enderio/teleport/anchor/BlockTravelAnchor.java @@ -10,7 +10,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -163,14 +166,13 @@ public class BlockTravelAnchor extends BlockEio public static void sendPrivateChatMessage(EntityPlayer player, UserIdent owner) { if (!player.isSneaking()) { + IChatComponent ownerName = new ChatComponentText(owner.getPlayerName()); + ownerName.getChatStyle().setColor(EnumChatFormatting.RED); ChatUtil.sendNoSpam( player, - EnderIO.lang.localize("gui.travelAccessable.privateBlock1") + " " - + EnumChatFormatting.RED - + owner.getPlayerName() - + EnumChatFormatting.WHITE - + " " - + EnderIO.lang.localize("gui.travelAccessable.privateBlock2")); + new ChatComponentTranslation( + EnderIO.lang.addPrefix("gui.travelAccessable.privateBlock"), + ownerName)); } } diff --git a/src/main/java/crazypants/enderio/teleport/telepad/ItemCoordSelector.java b/src/main/java/crazypants/enderio/teleport/telepad/ItemCoordSelector.java index 5b86d9ef..a9e9bf79 100644 --- a/src/main/java/crazypants/enderio/teleport/telepad/ItemCoordSelector.java +++ b/src/main/java/crazypants/enderio/teleport/telepad/ItemCoordSelector.java @@ -11,7 +11,9 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.play.client.C08PacketPlayerBlockPlacement; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -103,8 +105,9 @@ public class ItemCoordSelector extends Item implements IResourceTooltipProvider } if (!world.isRemote) { player.addChatMessage( - new ChatComponentText( - EnderIO.lang.localize("itemCoordSelector.chat.setCoords", bc.chatString()))); + new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemCoordSelector.chat.setCoords"), + bc.chatString())); } } @@ -116,11 +119,9 @@ public class ItemCoordSelector extends Item implements IResourceTooltipProvider } if (!world.isRemote) { player.addChatMessage( - new ChatComponentText( - EnderIO.lang.localize( - "itemCoordSelector.chat.setDimension", - EnumChatFormatting.GREEN.toString(), - Integer.toString(dim)))); + new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemCoordSelector.chat.setDimension"), + dimensionComponent(dim))); } } @@ -194,21 +195,29 @@ public class ItemCoordSelector extends Item implements IResourceTooltipProvider private void onCoordsChanged(EntityPlayer player, BlockCoord bc) { if (!player.worldObj.isRemote) { player.addChatMessage( - new ChatComponentText(EnderIO.lang.localize("itemCoordSelector.chat.newCoords", bc.chatString()))); + new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemCoordSelector.chat.newCoords"), + bc.chatString())); } } private void onDimensionChanged(EntityPlayer player, int dim) { if (!player.worldObj.isRemote) { player.addChatMessage( - new ChatComponentText( - EnderIO.lang.localize( - "itemCoordSelector.chat.newDimension", - EnumChatFormatting.GREEN.toString(), - Integer.toString(dim)))); + new ChatComponentTranslation( + EnderIO.lang.addPrefix("itemCoordSelector.chat.newDimension"), + dimensionComponent(dim))); } } + private static IChatComponent dimensionComponent(int dim) { + // Color the argument itself: chat resets formatting after each component, so a code in the lang string + // doesn't carry over to it. + IChatComponent component = new ChatComponentText(Integer.toString(dim)); + component.getChatStyle().setColor(EnumChatFormatting.GREEN); + return component; + } + public void setCoords(ItemStack stack, BlockCoord bc) { stack.stackTagCompound.setBoolean("default", false); bc.writeToNBT(stack.stackTagCompound); diff --git a/src/main/resources/assets/enderio/lang/cs_CZ.lang b/src/main/resources/assets/enderio/lang/cs_CZ.lang index a4779bc4..4580ee77 100644 --- a/src/main/resources/assets/enderio/lang/cs_CZ.lang +++ b/src/main/resources/assets/enderio/lang/cs_CZ.lang @@ -640,8 +640,7 @@ enderio.gui.mjReader.insertedInto=bude vložen do: enderio.gui.mjReader.noItems=Nepřijímá zádné předměty. enderio.gui.mjReader.noItem=Nemůže přijmout enderio.gui.mjReader.receiveItems=Může přijmout předměty z: -enderio.gui.mjReader.receiveItem1=Může přijmout -enderio.gui.mjReader.receiveItem2=z: +enderio.gui.mjReader.receiveItem=Může přijmout %s z: #CapactorBank enderio.gui.capBank.inputRs=Vstupní ruditový mód @@ -684,8 +683,7 @@ enderio.stirlingGenerator.output=Generuje: enderio.stirlingGenerator.burnRate=Hodnota spalování: #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Pouze -enderio.gui.travelAccessable.privateBlock2=může změnit nastavení tohoto bloku. +enderio.gui.travelAccessable.privateBlock=Pouze %s může změnit nastavení tohoto bloku. enderio.gui.travelAccessable.public=Veřejné enderio.gui.travelAccessable.private=Soukromé enderio.gui.travelAccessable.protected=Chráněné @@ -1061,8 +1059,8 @@ item.itemCoordSelector.tooltip.detailed.line5=select that specific block. item.itemCoordSelector.tooltip.detailed.line6=Can select from a distance. enderio.itemCoordSelector.chat.newCoords=New Coords: %s enderio.itemCoordSelector.chat.setCoords=Set Coords: %s -enderio.itemCoordSelector.chat.newDimension=New Dimension: %s%s -enderio.itemCoordSelector.chat.setDimension=Set Dimension: %s%s +enderio.itemCoordSelector.chat.newDimension=New Dimension: %s +enderio.itemCoordSelector.chat.setDimension=Set Dimension: %s enderio.item.itemSoulVessel.tooltip.health=Health: enderio.item.itemSoulVessel.tooltip.fluidname=Fluid Name: enderio.item.itemSoulVessel.tooltip.color=Color: diff --git a/src/main/resources/assets/enderio/lang/de_DE.lang b/src/main/resources/assets/enderio/lang/de_DE.lang index b6982f46..0a9969d2 100644 --- a/src/main/resources/assets/enderio/lang/de_DE.lang +++ b/src/main/resources/assets/enderio/lang/de_DE.lang @@ -684,8 +684,14 @@ item.itemCoordSelector.tooltip.detailed.line5=den spezifischen Block auszuwähle item.itemCoordSelector.tooltip.detailed.line6=Kann aus einer Entfernung auswählen enderio.itemCoordSelector.chat.newCoords=Neue Koordinaten: %s enderio.itemCoordSelector.chat.setCoords=Festgelegte Koordinaten: %s -enderio.itemCoordSelector.chat.newDimension=Neue Dimension: %s%s -enderio.itemCoordSelector.chat.setDimension=Festgelegte Dimension: %s%s +enderio.itemCoordSelector.chat.newDimension=Neue Dimension: %s +enderio.itemCoordSelector.chat.setDimension=Festgelegte Dimension: %s +enderio.itemConduitProbe.chat.copied=Conduit Einstellungen kopiert +enderio.itemOCConduit.chat.channel=Kanal %s zu %s +enderio.itemOCConduit.chat.connectedTo=Verbunden mit: %s +enderio.itemOCConduit.chat.nodeAt=%s zu %s +enderio.itemOCConduit.chat.noConnections=Keine Verbindungen an %s +enderio.itemOCConduit.chat.noNetwork=Netzwerk nicht verbunden mit %s #Painter tile.blockPainter.name=Färbemaschine @@ -1041,8 +1047,7 @@ enderio.gui.mjReader.insertedInto=wird insertiert nach: enderio.gui.mjReader.noItems=Empfängt keine Items. enderio.gui.mjReader.noItem=Kann nicht empfangen enderio.gui.mjReader.receiveItems=Kann Items empfangen von: -enderio.gui.mjReader.receiveItem1=Kann -enderio.gui.mjReader.receiveItem2=empfangen von: +enderio.gui.mjReader.receiveItem=Kann %s empfangen von: #CapactorBank enderio.gui.capBank.inputRs=Input-Redstone-Modus @@ -1096,8 +1101,7 @@ enderio.stirlingGenerator.upgrades={0} gibt eine Effizienz von {2}{1,number,#.#} enderio.stirlingGenerator.remaining={0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF verbleibend #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Nur -enderio.gui.travelAccessable.privateBlock2=darf die Einstellungen dieses Blocks ändern. +enderio.gui.travelAccessable.privateBlock=Nur %s darf die Einstellungen dieses Blocks ändern. enderio.gui.travelAccessable.public=Öffentlich enderio.gui.travelAccessable.private=Privat enderio.gui.travelAccessable.protected=Geschützt diff --git a/src/main/resources/assets/enderio/lang/en_US.lang b/src/main/resources/assets/enderio/lang/en_US.lang index 667b5736..f30f9016 100644 --- a/src/main/resources/assets/enderio/lang/en_US.lang +++ b/src/main/resources/assets/enderio/lang/en_US.lang @@ -779,8 +779,14 @@ item.itemCoordSelector.tooltip.detailed.line5=select that specific block. item.itemCoordSelector.tooltip.detailed.line6=Can select from a distance. enderio.itemCoordSelector.chat.newCoords=New Coords: %s enderio.itemCoordSelector.chat.setCoords=Set Coords: %s -enderio.itemCoordSelector.chat.newDimension=New Dimension: %s%s -enderio.itemCoordSelector.chat.setDimension=Set Dimension: %s%s +enderio.itemCoordSelector.chat.newDimension=New Dimension: %s +enderio.itemCoordSelector.chat.setDimension=Set Dimension: %s +enderio.itemConduitProbe.chat.copied=Copied conduit settings +enderio.itemOCConduit.chat.channel=Channel %s at %s +enderio.itemOCConduit.chat.connectedTo=Connected to: %s +enderio.itemOCConduit.chat.nodeAt=%s at %s +enderio.itemOCConduit.chat.noConnections=No connections at %s +enderio.itemOCConduit.chat.noNetwork=No network at %s #Painter tile.blockPainter.name=Painting Machine @@ -1146,8 +1152,8 @@ enderio.gui.mjReader.insertedInto=will be inserted into: enderio.gui.mjReader.noItems=Receives no items. enderio.gui.mjReader.noItem=Can not receive enderio.gui.mjReader.receiveItems=Can receive items from: -enderio.gui.mjReader.receiveItem1=Can receive -enderio.gui.mjReader.receiveItem2=from: +enderio.gui.mjReader.receiveItem=Can receive %s from: +enderio.gui.mjReader.distance=Distance [%s] #CapactorBank enderio.gui.capBank.inputRs=Input Redstone Mode @@ -1208,8 +1214,7 @@ enderio.gui.blockBuffer.omni.name=Omni Buffer enderio.gui.blockBuffer.creative.name=Creative Buffer #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Only -enderio.gui.travelAccessable.privateBlock2=may change this blocks settings. +enderio.gui.travelAccessable.privateBlock=Only %s may change this blocks settings. enderio.gui.travelAccessable.public=Public enderio.gui.travelAccessable.private=Private enderio.gui.travelAccessable.protected=Protected diff --git a/src/main/resources/assets/enderio/lang/es_AR.lang b/src/main/resources/assets/enderio/lang/es_AR.lang index e65d4e10..bf3001eb 100644 --- a/src/main/resources/assets/enderio/lang/es_AR.lang +++ b/src/main/resources/assets/enderio/lang/es_AR.lang @@ -517,8 +517,8 @@ item.itemCoordSelector.tooltip.detailed.line3=Shift+Clic-derecho a un bloque par item.itemCoordSelector.tooltip.detailed.line4=Se puede seleccionar desde la distancia. enderio.itemCoordSelector.chat.newCoords=Nuevas Coordenadas: %s enderio.itemCoordSelector.chat.setCoords=Establecer Coordenadas: %s -enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s%s -enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s%s +enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s +enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s #Painter tile.blockPainter.name=Máquina de Pintar @@ -790,8 +790,7 @@ enderio.gui.mjReader.insertedInto=Será insertado a: enderio.gui.mjReader.noItems=No recibe objetos. enderio.gui.mjReader.noItem=No puede recibir. enderio.gui.mjReader.receiveItems=Puede recibir objetos de: -enderio.gui.mjReader.receiveItem1=Puede recibir -enderio.gui.mjReader.receiveItem2=de: +enderio.gui.mjReader.receiveItem=Puede recibir %s de: #CapactorBank enderio.gui.capBank.inputRs=Modo de Entrada de Redstone @@ -845,8 +844,7 @@ enderio.stirlingGenerator.upgrades={0} proporciona {2}{1,number,#.#}x{3} de efic enderio.stirlingGenerator.remaining={0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF Restantes. #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Solo -enderio.gui.travelAccessable.privateBlock2=Puede cambiar los ajustes de este bloque. +enderio.gui.travelAccessable.privateBlock=Solo %s puede cambiar los ajustes de este bloque. enderio.gui.travelAccessable.public=Público enderio.gui.travelAccessable.private=Privado enderio.gui.travelAccessable.protected=Protegido diff --git a/src/main/resources/assets/enderio/lang/es_ES.lang b/src/main/resources/assets/enderio/lang/es_ES.lang index c67f86c9..24139bd1 100644 --- a/src/main/resources/assets/enderio/lang/es_ES.lang +++ b/src/main/resources/assets/enderio/lang/es_ES.lang @@ -519,8 +519,8 @@ item.itemCoordSelector.tooltip.detailed.line3=Shift+Clic-derecho a un bloque par item.itemCoordSelector.tooltip.detailed.line4=Se puede seleccionar desde la distancia. enderio.itemCoordSelector.chat.newCoords=Nuevas Coordenadas: %s enderio.itemCoordSelector.chat.setCoords=Establecer Coordenadas: %s -enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s%s -enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s%s +enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s +enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s #Painter tile.blockPainter.name=Máquina de Pintar @@ -792,8 +792,7 @@ enderio.gui.mjReader.insertedInto=Será insertado a: enderio.gui.mjReader.noItems=No recibe objetos. enderio.gui.mjReader.noItem=No puede recibir. enderio.gui.mjReader.receiveItems=Puede recibir objetos de: -enderio.gui.mjReader.receiveItem1=Puede recibir -enderio.gui.mjReader.receiveItem2=de: +enderio.gui.mjReader.receiveItem=Puede recibir %s de: #CapactorBank enderio.gui.capBank.inputRs=Modo de Entrada de Redstone @@ -847,8 +846,7 @@ enderio.stirlingGenerator.upgrades={0} proporciona {2}{1,number,#.#}x{3} de efic enderio.stirlingGenerator.remaining={0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF Restantes. #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Solo -enderio.gui.travelAccessable.privateBlock2=Puede cambiar los ajustes de este bloque. +enderio.gui.travelAccessable.privateBlock=Solo %s puede cambiar los ajustes de este bloque. enderio.gui.travelAccessable.public=Público enderio.gui.travelAccessable.private=Privado enderio.gui.travelAccessable.protected=Protegido diff --git a/src/main/resources/assets/enderio/lang/es_MX.lang b/src/main/resources/assets/enderio/lang/es_MX.lang index e65d4e10..bf3001eb 100644 --- a/src/main/resources/assets/enderio/lang/es_MX.lang +++ b/src/main/resources/assets/enderio/lang/es_MX.lang @@ -517,8 +517,8 @@ item.itemCoordSelector.tooltip.detailed.line3=Shift+Clic-derecho a un bloque par item.itemCoordSelector.tooltip.detailed.line4=Se puede seleccionar desde la distancia. enderio.itemCoordSelector.chat.newCoords=Nuevas Coordenadas: %s enderio.itemCoordSelector.chat.setCoords=Establecer Coordenadas: %s -enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s%s -enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s%s +enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s +enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s #Painter tile.blockPainter.name=Máquina de Pintar @@ -790,8 +790,7 @@ enderio.gui.mjReader.insertedInto=Será insertado a: enderio.gui.mjReader.noItems=No recibe objetos. enderio.gui.mjReader.noItem=No puede recibir. enderio.gui.mjReader.receiveItems=Puede recibir objetos de: -enderio.gui.mjReader.receiveItem1=Puede recibir -enderio.gui.mjReader.receiveItem2=de: +enderio.gui.mjReader.receiveItem=Puede recibir %s de: #CapactorBank enderio.gui.capBank.inputRs=Modo de Entrada de Redstone @@ -845,8 +844,7 @@ enderio.stirlingGenerator.upgrades={0} proporciona {2}{1,number,#.#}x{3} de efic enderio.stirlingGenerator.remaining={0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF Restantes. #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Solo -enderio.gui.travelAccessable.privateBlock2=Puede cambiar los ajustes de este bloque. +enderio.gui.travelAccessable.privateBlock=Solo %s puede cambiar los ajustes de este bloque. enderio.gui.travelAccessable.public=Público enderio.gui.travelAccessable.private=Privado enderio.gui.travelAccessable.protected=Protegido diff --git a/src/main/resources/assets/enderio/lang/es_UY.lang b/src/main/resources/assets/enderio/lang/es_UY.lang index e65d4e10..bf3001eb 100644 --- a/src/main/resources/assets/enderio/lang/es_UY.lang +++ b/src/main/resources/assets/enderio/lang/es_UY.lang @@ -517,8 +517,8 @@ item.itemCoordSelector.tooltip.detailed.line3=Shift+Clic-derecho a un bloque par item.itemCoordSelector.tooltip.detailed.line4=Se puede seleccionar desde la distancia. enderio.itemCoordSelector.chat.newCoords=Nuevas Coordenadas: %s enderio.itemCoordSelector.chat.setCoords=Establecer Coordenadas: %s -enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s%s -enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s%s +enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s +enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s #Painter tile.blockPainter.name=Máquina de Pintar @@ -790,8 +790,7 @@ enderio.gui.mjReader.insertedInto=Será insertado a: enderio.gui.mjReader.noItems=No recibe objetos. enderio.gui.mjReader.noItem=No puede recibir. enderio.gui.mjReader.receiveItems=Puede recibir objetos de: -enderio.gui.mjReader.receiveItem1=Puede recibir -enderio.gui.mjReader.receiveItem2=de: +enderio.gui.mjReader.receiveItem=Puede recibir %s de: #CapactorBank enderio.gui.capBank.inputRs=Modo de Entrada de Redstone @@ -845,8 +844,7 @@ enderio.stirlingGenerator.upgrades={0} proporciona {2}{1,number,#.#}x{3} de efic enderio.stirlingGenerator.remaining={0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF Restantes. #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Solo -enderio.gui.travelAccessable.privateBlock2=Puede cambiar los ajustes de este bloque. +enderio.gui.travelAccessable.privateBlock=Solo %s puede cambiar los ajustes de este bloque. enderio.gui.travelAccessable.public=Público enderio.gui.travelAccessable.private=Privado enderio.gui.travelAccessable.protected=Protegido diff --git a/src/main/resources/assets/enderio/lang/es_VE.lang b/src/main/resources/assets/enderio/lang/es_VE.lang index 80cfb2c7..355fe7fc 100644 --- a/src/main/resources/assets/enderio/lang/es_VE.lang +++ b/src/main/resources/assets/enderio/lang/es_VE.lang @@ -517,8 +517,8 @@ item.itemCoordSelector.tooltip.detailed.line3=Shift+Clic-derecho a un bloque par item.itemCoordSelector.tooltip.detailed.line4=Se puede seleccionar desde la distancia. enderio.itemCoordSelector.chat.newCoords=Nuevas Coordenadas: %s enderio.itemCoordSelector.chat.setCoords=Establecer Coordenadas: %s -enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s%s -enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s%s +enderio.itemCoordSelector.chat.newDimension=Nueva Dimensión: %s +enderio.itemCoordSelector.chat.setDimension=Establecer Dimensión: %s #Painter tile.blockPainter.name=Máquina de Pintar @@ -788,8 +788,7 @@ enderio.gui.mjReader.insertedInto=Será insertado a: enderio.gui.mjReader.noItems=No recibe objetos. enderio.gui.mjReader.noItem=No puede recibir. enderio.gui.mjReader.receiveItems=Puede recibir objetos de: -enderio.gui.mjReader.receiveItem1=Puede recibir -enderio.gui.mjReader.receiveItem2=de: +enderio.gui.mjReader.receiveItem=Puede recibir %s de: #CapactorBank enderio.gui.capBank.inputRs=Modo de Entrada de Redstone @@ -843,8 +842,7 @@ enderio.stirlingGenerator.upgrades={0} proporciona {2}{1,number,#.#}x{3} de efic enderio.stirlingGenerator.remaining={0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF Restantes. #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Solo -enderio.gui.travelAccessable.privateBlock2=Puede cambiar los ajustes de este bloque. +enderio.gui.travelAccessable.privateBlock=Solo %s puede cambiar los ajustes de este bloque. enderio.gui.travelAccessable.public=Público enderio.gui.travelAccessable.private=Privado enderio.gui.travelAccessable.protected=Protegido diff --git a/src/main/resources/assets/enderio/lang/fr_FR.lang b/src/main/resources/assets/enderio/lang/fr_FR.lang index da605933..c34ecab3 100644 --- a/src/main/resources/assets/enderio/lang/fr_FR.lang +++ b/src/main/resources/assets/enderio/lang/fr_FR.lang @@ -520,8 +520,8 @@ item.itemCoordSelector.tooltip.detailed.line5=sélectionner ce bloc. item.itemCoordSelector.tooltip.detailed.line6=Peut sélectioner à distance. enderio.itemCoordSelector.chat.newCoords=Nouvelles Coords: %s enderio.itemCoordSelector.chat.setCoords=Définir Coords: %s -enderio.itemCoordSelector.chat.newDimension=Nouvelle Dimension: %s%s -enderio.itemCoordSelector.chat.setDimension=Définir Dimension: %s%s +enderio.itemCoordSelector.chat.newDimension=Nouvelle Dimension: %s +enderio.itemCoordSelector.chat.setDimension=Définir Dimension: %s #Painter tile.blockPainter.name=Machine à Enduction @@ -810,8 +810,7 @@ enderio.gui.mjReader.insertedInto=sera inséré dans : enderio.gui.mjReader.noItems=Ne reçoit aucun objet. enderio.gui.mjReader.noItem=Ne peut pas recevoir enderio.gui.mjReader.receiveItems=Peut recevoir des objet de : -enderio.gui.mjReader.receiveItem1=Peut recevoir -enderio.gui.mjReader.receiveItem2=de : +enderio.gui.mjReader.receiveItem=Peut recevoir %s de : #CapacitorBank enderio.gui.capBank.inputRs=Mode Redstone Entrée @@ -865,8 +864,7 @@ enderio.stirlingGenerator.upgrades={0} donne efficacité {2}{1,number,#.#}x{3} enderio.stirlingGenerator.remaining=Reste {0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Seulement -enderio.gui.travelAccessable.privateBlock2=peut modifier les paramètres de ce bloc. +enderio.gui.travelAccessable.privateBlock=Seulement %s peut modifier les paramètres de ce bloc. enderio.gui.travelAccessable.public=Publique enderio.gui.travelAccessable.private=Privé enderio.gui.travelAccessable.protected=Protégé diff --git a/src/main/resources/assets/enderio/lang/ko_KR.lang b/src/main/resources/assets/enderio/lang/ko_KR.lang index 40ac4d0f..84a52dbe 100644 --- a/src/main/resources/assets/enderio/lang/ko_KR.lang +++ b/src/main/resources/assets/enderio/lang/ko_KR.lang @@ -678,8 +678,7 @@ enderio.gui.mjReader.insertedInto=will be inserted into: enderio.gui.mjReader.noItems=Receives no items. enderio.gui.mjReader.noItem=Can not receive enderio.gui.mjReader.receiveItems=Can receive items from: -enderio.gui.mjReader.receiveItem1=Can receive -enderio.gui.mjReader.receiveItem2=from: +enderio.gui.mjReader.receiveItem=Can receive %s from: #CapactorBank enderio.gui.capBank.inputRs=Input Redstone Mode @@ -724,8 +723,7 @@ enderio.stirlingGenerator.output=Generating: enderio.stirlingGenerator.burnRate=Burn Rate: #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Only -enderio.gui.travelAccessable.privateBlock2=may change this blocks settings. +enderio.gui.travelAccessable.privateBlock=Only %s may change this blocks settings. enderio.gui.travelAccessable.public=Public enderio.gui.travelAccessable.private=Private enderio.gui.travelAccessable.protected=Protected diff --git a/src/main/resources/assets/enderio/lang/pl_PL.lang b/src/main/resources/assets/enderio/lang/pl_PL.lang index 07758179..b5549415 100644 --- a/src/main/resources/assets/enderio/lang/pl_PL.lang +++ b/src/main/resources/assets/enderio/lang/pl_PL.lang @@ -179,8 +179,7 @@ enderio.gui.mjReader.insertedInto=zostanie wysłany do: enderio.gui.mjReader.noItems=Nie otrzymuje rzeczy. enderio.gui.mjReader.noItem=Nie można przesłać enderio.gui.mjReader.receiveItems=Może otrzymać rzeczy z: -enderio.gui.mjReader.receiveItem1=Przyjmie -enderio.gui.mjReader.receiveItem2=z: +enderio.gui.mjReader.receiveItem=Przyjmie %s z: #CapactorBank enderio.gui.capBank.inputRs=Włącznik przyrostu energii @@ -208,8 +207,7 @@ enderio.gui.alloy.mode.alloy=Tylko stopy enderio.gui.alloy.mode.furnace=Tylko jak zwykły piec #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Można -enderio.gui.travelAccessable.privateBlock2=zmienić tylko te ustawienia. +enderio.gui.travelAccessable.privateBlock=Można %s zmienić tylko te ustawienia. enderio.gui.travelAccessable.public=Publiczny enderio.gui.travelAccessable.private=Prywatny enderio.gui.travelAccessable.protected=Chroniony diff --git a/src/main/resources/assets/enderio/lang/pt_BR.lang b/src/main/resources/assets/enderio/lang/pt_BR.lang index 7e0af2d6..8de2ff31 100644 --- a/src/main/resources/assets/enderio/lang/pt_BR.lang +++ b/src/main/resources/assets/enderio/lang/pt_BR.lang @@ -728,8 +728,7 @@ enderio.gui.mjReader.insertedInto=vai ser inserido em: enderio.gui.mjReader.noItems=Não recebe itens. enderio.gui.mjReader.noItem=Não pode receber enderio.gui.mjReader.receiveItems=Pode receber itens de: -enderio.gui.mjReader.receiveItem1=Pode receber -enderio.gui.mjReader.receiveItem2=de: +enderio.gui.mjReader.receiveItem=Pode receber %s de: #CapactorBank enderio.gui.capBank.inputRs=Entrada Redstone Mode @@ -774,8 +773,7 @@ enderio.stirlingGenerator.output=Gerando: enderio.stirlingGenerator.burnRate=Taxa de Queima: #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Apenas -enderio.gui.travelAccessable.privateBlock2=pode mudar as configurações desse bloco +enderio.gui.travelAccessable.privateBlock=Apenas %s pode mudar as configurações desse bloco enderio.gui.travelAccessable.public=Público enderio.gui.travelAccessable.private=Privado enderio.gui.travelAccessable.protected=Protegido diff --git a/src/main/resources/assets/enderio/lang/pt_PT.lang b/src/main/resources/assets/enderio/lang/pt_PT.lang index 29a72c20..e2669089 100644 --- a/src/main/resources/assets/enderio/lang/pt_PT.lang +++ b/src/main/resources/assets/enderio/lang/pt_PT.lang @@ -730,8 +730,7 @@ enderio.gui.mjReader.insertedInto=vai ser inserido em: enderio.gui.mjReader.noItems=Não recebe itens. enderio.gui.mjReader.noItem=Não pode receber enderio.gui.mjReader.receiveItems=Pode receber itens de: -enderio.gui.mjReader.receiveItem1=Pode receber -enderio.gui.mjReader.receiveItem2=de: +enderio.gui.mjReader.receiveItem=Pode receber %s de: #CapactorBank enderio.gui.capBank.inputRs=Entrada Redstone Mode @@ -776,8 +775,7 @@ enderio.stirlingGenerator.output=A Gerar: enderio.stirlingGenerator.burnRate=Taxa de Queima: #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Apenas -enderio.gui.travelAccessable.privateBlock2=pode mudar as configurações desse bloco +enderio.gui.travelAccessable.privateBlock=Apenas %s pode mudar as configurações desse bloco enderio.gui.travelAccessable.public=Público enderio.gui.travelAccessable.private=Privado enderio.gui.travelAccessable.protected=Protegido diff --git a/src/main/resources/assets/enderio/lang/ru_RU.lang b/src/main/resources/assets/enderio/lang/ru_RU.lang index c8e7f2c9..c59d40bd 100644 --- a/src/main/resources/assets/enderio/lang/ru_RU.lang +++ b/src/main/resources/assets/enderio/lang/ru_RU.lang @@ -727,8 +727,14 @@ item.itemCoordSelector.tooltip.detailed.line5=выбрать конкретны item.itemCoordSelector.tooltip.detailed.line6=Можно выбирать блоки на расстоянии. enderio.itemCoordSelector.chat.newCoords=Новые координаты: %s enderio.itemCoordSelector.chat.setCoords=Выбранные координаты: %s -enderio.itemCoordSelector.chat.newDimension=Новое измерение: %s%s -enderio.itemCoordSelector.chat.setDimension=Выбранное измерение: %s%s +enderio.itemCoordSelector.chat.newDimension=Новое измерение: %s +enderio.itemCoordSelector.chat.setDimension=Выбранное измерение: %s +enderio.itemConduitProbe.chat.copied=Настройки труб скопированы +enderio.itemOCConduit.chat.channel=Канал %s на %s +enderio.itemOCConduit.chat.connectedTo=Подключено к: %s +enderio.itemOCConduit.chat.nodeAt=%s на %s +enderio.itemOCConduit.chat.noConnections=Нет подключений на %s +enderio.itemOCConduit.chat.noNetwork=Нет сети на %s #Painter tile.blockPainter.name=Покрасочный механизм @@ -1086,8 +1092,8 @@ enderio.gui.mjReader.insertedInto=будет направлен: enderio.gui.mjReader.noItems=Не получает предметов. enderio.gui.mjReader.noItem=Не может получать enderio.gui.mjReader.receiveItems=Может получать предметы от: -enderio.gui.mjReader.receiveItem1=Может получать -enderio.gui.mjReader.receiveItem2=от: +enderio.gui.mjReader.receiveItem=Может получать %s от: +enderio.gui.mjReader.distance=Расстояние [%s] #CapactorBank enderio.gui.capBank.inputRs=Режим красного камня на входе @@ -1141,8 +1147,7 @@ enderio.stirlingGenerator.upgrades={0} даёт {2}{1,number,#.#}x{3} эффек enderio.stirlingGenerator.remaining=Осталось {0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=Только -enderio.gui.travelAccessable.privateBlock2=может управлять настройками этого блока. +enderio.gui.travelAccessable.privateBlock=Только %s может изменить настройки этого блока. enderio.gui.travelAccessable.public=Общедоступный enderio.gui.travelAccessable.private=Частный enderio.gui.travelAccessable.protected=Защищённый diff --git a/src/main/resources/assets/enderio/lang/zh_CN.lang b/src/main/resources/assets/enderio/lang/zh_CN.lang index 785ba77a..20548f97 100644 --- a/src/main/resources/assets/enderio/lang/zh_CN.lang +++ b/src/main/resources/assets/enderio/lang/zh_CN.lang @@ -727,8 +727,8 @@ item.itemCoordSelector.tooltip.detailed.line5=选取特定方块. item.itemCoordSelector.tooltip.detailed.line6=可以在远处选取. enderio.itemCoordSelector.chat.newCoords=新坐标: %s enderio.itemCoordSelector.chat.setCoords=设置坐标: %s -enderio.itemCoordSelector.chat.newDimension=新世界: %s%s -enderio.itemCoordSelector.chat.setDimension=设置世界: %s%s +enderio.itemCoordSelector.chat.newDimension=新世界: %s +enderio.itemCoordSelector.chat.setDimension=设置世界: %s #Painter tile.blockPainter.name=喷涂机 @@ -1086,8 +1086,7 @@ enderio.gui.mjReader.insertedInto=会被输入于: enderio.gui.mjReader.noItems=未接收到物品. enderio.gui.mjReader.noItem=无法接收 enderio.gui.mjReader.receiveItems=合法的接收对象: -enderio.gui.mjReader.receiveItem1=可以接收 -enderio.gui.mjReader.receiveItem2=从: +enderio.gui.mjReader.receiveItem=可以接收 %s 从: #CapactorBank enderio.gui.capBank.inputRs=输入红石控制 @@ -1141,8 +1140,7 @@ enderio.stirlingGenerator.upgrades={0} 提供 {2}{1,number,#.#}x{3} 的效率 enderio.stirlingGenerator.remaining=残余 {0,number,percent}|{1,choice,0#|0<{1}m }{2,number}s|{3,number,#,###} RF #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=只有 -enderio.gui.travelAccessable.privateBlock2=才能改变该方块的设置. +enderio.gui.travelAccessable.privateBlock=只有 %s 才能改变该方块的设置. enderio.gui.travelAccessable.public=公共 enderio.gui.travelAccessable.private=私有 enderio.gui.travelAccessable.protected=被保护 diff --git a/src/main/resources/assets/enderio/lang/zh_TW.lang b/src/main/resources/assets/enderio/lang/zh_TW.lang index 58aa4bf8..45ae89ca 100644 --- a/src/main/resources/assets/enderio/lang/zh_TW.lang +++ b/src/main/resources/assets/enderio/lang/zh_TW.lang @@ -698,8 +698,7 @@ enderio.gui.mjReader.insertedInto=會被輸入于: enderio.gui.mjReader.noItems=未接收到物品. enderio.gui.mjReader.noItem=無法接收 enderio.gui.mjReader.receiveItems=合法的接收對象: -enderio.gui.mjReader.receiveItem1=可以接收 -enderio.gui.mjReader.receiveItem2=從: +enderio.gui.mjReader.receiveItem=可以接收 %s 從: #CapactorBank enderio.gui.capBank.inputRs=輸入紅石控制 @@ -744,8 +743,7 @@ enderio.stirlingGenerator.output=產能速率: enderio.stirlingGenerator.burnRate=燃燒速率: #Travel Blocks -enderio.gui.travelAccessable.privateBlock1=只有 -enderio.gui.travelAccessable.privateBlock2=才能改變該方塊的設置. +enderio.gui.travelAccessable.privateBlock=只有 %s 才能改變該方塊的設置. enderio.gui.travelAccessable.public=公共 enderio.gui.travelAccessable.private=私有 enderio.gui.travelAccessable.protected=被保護 @@ -1080,8 +1078,8 @@ item.itemCoordSelector.tooltip.detailed.line5=select that specific block. item.itemCoordSelector.tooltip.detailed.line6=Can select from a distance. enderio.itemCoordSelector.chat.newCoords=New Coords: %s enderio.itemCoordSelector.chat.setCoords=Set Coords: %s -enderio.itemCoordSelector.chat.newDimension=New Dimension: %s%s -enderio.itemCoordSelector.chat.setDimension=Set Dimension: %s%s +enderio.itemCoordSelector.chat.newDimension=New Dimension: %s +enderio.itemCoordSelector.chat.setDimension=Set Dimension: %s enderio.item.itemSoulVessel.tooltip.health=Health: enderio.item.itemSoulVessel.tooltip.fluidname=Fluid Name: enderio.item.itemSoulVessel.tooltip.color=Color: