diff --git a/src/main/java/gregtech/api/items/materialitem/MaterialMetaItem.java b/src/main/java/gregtech/api/items/materialitem/MaterialMetaItem.java index 43e5d2c214..dc2632ff60 100644 --- a/src/main/java/gregtech/api/items/materialitem/MaterialMetaItem.java +++ b/src/main/java/gregtech/api/items/materialitem/MaterialMetaItem.java @@ -102,7 +102,6 @@ protected boolean canGenerate(OrePrefix orePrefix, Material material) { } @Override - @SideOnly(Side.CLIENT) public String getItemStackDisplayName(ItemStack itemStack) { if (itemStack.getItemDamage() < metaItemOffset) { Material material = Material.MATERIAL_REGISTRY.getObjectById(itemStack.getItemDamage() % 1000); diff --git a/src/main/java/gregtech/api/items/metaitem/MetaItem.java b/src/main/java/gregtech/api/items/metaitem/MetaItem.java index dac758f3d6..f0064f4113 100644 --- a/src/main/java/gregtech/api/items/metaitem/MetaItem.java +++ b/src/main/java/gregtech/api/items/metaitem/MetaItem.java @@ -21,6 +21,7 @@ import gregtech.api.unification.material.type.Material; import gregtech.api.unification.ore.OrePrefix; import gregtech.api.unification.stack.ItemMaterialInfo; +import gregtech.api.util.LocalisationUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.block.model.ModelBakery; import net.minecraft.client.renderer.block.model.ModelResourceLocation; @@ -471,7 +472,7 @@ public boolean shouldCauseReequipAnimation(ItemStack oldStack, ItemStack newStac } @Override - @SideOnly(Side.CLIENT) + @SuppressWarnings("deprecation") public String getItemStackDisplayName(ItemStack stack) { if (stack.getItemDamage() >= metaItemOffset) { T item = getItem(stack); @@ -486,9 +487,9 @@ public String getItemStackDisplayName(ItemStack stack) { .getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null); if (fluidHandlerItem != null) { FluidStack fluidInside = fluidHandlerItem.drain(Integer.MAX_VALUE, false); - return I18n.format(unlocalizedName, fluidInside == null ? I18n.format("metaitem.fluid_cell.empty") : fluidInside.getLocalizedName()); + return LocalisationUtils.format(unlocalizedName, fluidInside == null ? LocalisationUtils.format("metaitem.fluid_cell.empty") : fluidInside.getLocalizedName()); } - return I18n.format(unlocalizedName); + return LocalisationUtils.format(unlocalizedName); } return super.getItemStackDisplayName(stack); } diff --git a/src/main/java/gregtech/api/items/toolitem/ToolMetaItem.java b/src/main/java/gregtech/api/items/toolitem/ToolMetaItem.java index ebb4ccc9fb..fb5c3f0a25 100755 --- a/src/main/java/gregtech/api/items/toolitem/ToolMetaItem.java +++ b/src/main/java/gregtech/api/items/toolitem/ToolMetaItem.java @@ -20,6 +20,7 @@ import gregtech.api.unification.material.type.SolidMaterial; import gregtech.api.util.GTLog; import gregtech.api.util.GTUtility; +import gregtech.api.util.LocalisationUtils; import gregtech.common.ConfigHolder; import net.minecraft.block.state.IBlockState; import net.minecraft.client.resources.I18n; @@ -406,7 +407,7 @@ public ICapabilityProvider initCapabilities(ItemStack stack, @Nullable NBTTagCom } @Override - @SideOnly(Side.CLIENT) + @SuppressWarnings("deprecation") public String getItemStackDisplayName(ItemStack stack) { if (stack.getItemDamage() >= metaItemOffset) { T item = getItem(stack); @@ -415,7 +416,7 @@ public String getItemStackDisplayName(ItemStack stack) { } SolidMaterial primaryMaterial = getToolMaterial(stack); String materialName = primaryMaterial == null ? "" : String.valueOf(primaryMaterial.getLocalizedName()); - return I18n.format("metaitem." + item.unlocalizedName + ".name", materialName); + return LocalisationUtils.format("metaitem." + item.unlocalizedName + ".name", materialName); } return super.getItemStackDisplayName(stack); } diff --git a/src/main/java/gregtech/api/pipenet/block/material/ItemBlockMaterialPipe.java b/src/main/java/gregtech/api/pipenet/block/material/ItemBlockMaterialPipe.java index f836119bbf..00b93f6b71 100644 --- a/src/main/java/gregtech/api/pipenet/block/material/ItemBlockMaterialPipe.java +++ b/src/main/java/gregtech/api/pipenet/block/material/ItemBlockMaterialPipe.java @@ -14,7 +14,6 @@ public ItemBlockMaterialPipe(BlockMaterialPipe block) @SuppressWarnings("unchecked") @Override - @SideOnly(Side.CLIENT) public String getItemStackDisplayName(ItemStack stack) { PipeType pipeType = blockPipe.getItemPipeType(stack); Material material = ((BlockMaterialPipe) blockPipe).getItemMaterial(stack); diff --git a/src/main/java/gregtech/api/recipes/RecipeMap.java b/src/main/java/gregtech/api/recipes/RecipeMap.java index 69d36860c0..f7a7e1b642 100644 --- a/src/main/java/gregtech/api/recipes/RecipeMap.java +++ b/src/main/java/gregtech/api/recipes/RecipeMap.java @@ -24,6 +24,7 @@ import gregtech.api.util.EnumValidationResult; import gregtech.api.util.GTLog; import gregtech.api.util.GTUtility; +import gregtech.api.util.LocalisationUtils; import gregtech.api.util.ValidationResult; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; @@ -406,10 +407,10 @@ public List ccGetRecipeList() { .collect(Collectors.toList()); } - @SideOnly(Side.CLIENT) @ZenGetter("localizedName") + @SuppressWarnings("deprecation") public String getLocalizedName() { - return I18n.format("recipemap." + unlocalizedName + ".name"); + return LocalisationUtils.format("recipemap." + unlocalizedName + ".name"); } @ZenGetter("unlocalizedName") diff --git a/src/main/java/gregtech/api/recipes/machines/FuelRecipeMap.java b/src/main/java/gregtech/api/recipes/machines/FuelRecipeMap.java index d22cab1b6e..2a7676294f 100644 --- a/src/main/java/gregtech/api/recipes/machines/FuelRecipeMap.java +++ b/src/main/java/gregtech/api/recipes/machines/FuelRecipeMap.java @@ -6,11 +6,9 @@ import gregtech.api.GTValues; import gregtech.api.recipes.FluidKey; import gregtech.api.recipes.recipes.FuelRecipe; -import net.minecraft.client.resources.I18n; +import gregtech.api.util.LocalisationUtils; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fml.common.Optional.Method; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; import stanhebben.zenscript.annotations.ZenClass; import stanhebben.zenscript.annotations.ZenGetter; import stanhebben.zenscript.annotations.ZenMethod; @@ -84,10 +82,10 @@ public List getRecipeList() { return Collections.unmodifiableList(recipeList); } - @SideOnly(Side.CLIENT) @ZenGetter("localizedName") + @SuppressWarnings("deprecation") public String getLocalizedName() { - return I18n.format("recipemap." + unlocalizedName + ".name"); + return LocalisationUtils.format("recipemap." + unlocalizedName + ".name"); } @ZenGetter("unlocalizedName") diff --git a/src/main/java/gregtech/api/unification/material/type/Material.java b/src/main/java/gregtech/api/unification/material/type/Material.java index ac149e5dcc..95d7af13b0 100644 --- a/src/main/java/gregtech/api/unification/material/type/Material.java +++ b/src/main/java/gregtech/api/unification/material/type/Material.java @@ -9,7 +9,7 @@ import gregtech.api.unification.stack.MaterialStack; import gregtech.api.util.GTControlledRegistry; import gregtech.api.util.GTLog; -import net.minecraft.client.resources.I18n; +import gregtech.api.util.LocalisationUtils; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import stanhebben.zenscript.annotations.*; @@ -381,10 +381,10 @@ public String getUnlocalizedName() { return "material." + toString(); } - @SideOnly(Side.CLIENT) @ZenGetter("localizedName") + @SuppressWarnings("deprecation") public String getLocalizedName() { - return I18n.format(getUnlocalizedName()); + return LocalisationUtils.format(getUnlocalizedName()); } @Override diff --git a/src/main/java/gregtech/api/unification/ore/OrePrefix.java b/src/main/java/gregtech/api/unification/ore/OrePrefix.java index b330c01c6a..6ec01e978b 100644 --- a/src/main/java/gregtech/api/unification/ore/OrePrefix.java +++ b/src/main/java/gregtech/api/unification/ore/OrePrefix.java @@ -7,9 +7,8 @@ import gregtech.api.unification.material.type.*; import gregtech.api.unification.stack.MaterialStack; import gregtech.api.util.GTUtility; -import net.minecraft.client.resources.I18n; -import net.minecraftforge.fml.relauncher.Side; -import net.minecraftforge.fml.relauncher.SideOnly; +import gregtech.api.util.LocalisationUtils; +import jdk.nashorn.internal.ir.annotations.Ignore; import org.apache.commons.lang3.Validate; import javax.annotation.Nullable; @@ -442,13 +441,13 @@ private void runGeneratedMaterialHandlers() { currentProcessingPrefix.set(null); } - @SideOnly(Side.CLIENT) + @SuppressWarnings("deprecation") public String getLocalNameForItem(Material material) { String specfiedUnlocalized = "item." + material.toString() + "." + this.name(); - if (I18n.hasKey(specfiedUnlocalized)) return I18n.format(specfiedUnlocalized); + if (LocalisationUtils.hasKey(specfiedUnlocalized)) return LocalisationUtils.format(specfiedUnlocalized); String unlocalized = "item.material.oreprefix." + this.name(); String matLocalized = material.getLocalizedName(); - String formatted = I18n.format(unlocalized, matLocalized); + String formatted = LocalisationUtils.format(unlocalized, matLocalized); return formatted.equals(unlocalized) ? matLocalized : formatted; } diff --git a/src/main/java/gregtech/api/util/LocalisationUtils.java b/src/main/java/gregtech/api/util/LocalisationUtils.java new file mode 100644 index 0000000000..f448d7d5d3 --- /dev/null +++ b/src/main/java/gregtech/api/util/LocalisationUtils.java @@ -0,0 +1,53 @@ +package gregtech.api.util; + +import net.minecraftforge.fml.common.FMLCommonHandler; +import net.minecraftforge.fml.relauncher.Side; + +public class LocalisationUtils { + + /** + * @deprecated + * This function calls `net.minecraft.client.resources.I18n.format` when called on client + * or `net.minecraft.util.text.translation.I18n.translateToLocalFormatted` when called on server. + *
    + *
  • It is intended that translations should be done using `I18n` on the client.
  • + *
  • For setting up translations on the server you should use `TextComponentTranslatable`.
  • + *
  • `LocalisationUtils` is only for cases where some kind of translation is required on the server and there is no client/player in context.
  • + *
  • `LocalisationUtils` is "best effort" and will probably only work properly with en-us.
  • + *
+ * @param localisationKey the localisation key passed to the underlying format function + * @param substitutions the substitutions passed to the underlying format function + * @return the localized string. + */ + @Deprecated + public static String format(String localisationKey, Object... substitutions) { + if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + return net.minecraft.util.text.translation.I18n.translateToLocalFormatted(localisationKey, substitutions); + } else { + return net.minecraft.client.resources.I18n.format(localisationKey, substitutions); + } + } + + /** + * @deprecated + * This function calls `net.minecraft.client.resources.I18n.hasKey` when called on client + * or `net.minecraft.util.text.translation.I18n.canTranslate` when called on server. + *
    + *
  • It is intended that translations should be done using `I18n` on the client.
  • + *
  • For setting up translations on the server you should use `TextComponentTranslatable`.
  • + *
  • `LocalisationUtils` is only for cases where some kind of translation is required on the server and there is no client/player in context.
  • + *
  • `LocalisationUtils` is "best effort" and will probably only work properly with en-us.
  • + *
+ * @param localisationKey the localisation key passed to the underlying hasKey function + * @return a boolean indicating if the given localisation key has localisations + */ + @Deprecated + public static boolean hasKey(String localisationKey) { + if (FMLCommonHandler.instance().getEffectiveSide() == Side.SERVER) { + return net.minecraft.util.text.translation.I18n.canTranslate(localisationKey); + } else { + return net.minecraft.client.resources.I18n.hasKey(localisationKey); + } + } + +} diff --git a/src/main/java/gregtech/common/blocks/CompressedItemBlock.java b/src/main/java/gregtech/common/blocks/CompressedItemBlock.java index 0a878c1240..c52b1e70ad 100644 --- a/src/main/java/gregtech/common/blocks/CompressedItemBlock.java +++ b/src/main/java/gregtech/common/blocks/CompressedItemBlock.java @@ -29,7 +29,6 @@ public IBlockState getBlockState(ItemStack stack) { } @Override - @SideOnly(Side.CLIENT) public String getItemStackDisplayName(ItemStack stack) { Material material = getBlockState(stack).getValue(compressedBlock.variantProperty); return OrePrefix.block.getLocalNameForItem(material); diff --git a/src/main/java/gregtech/common/blocks/FrameItemBlock.java b/src/main/java/gregtech/common/blocks/FrameItemBlock.java index dc04611537..58fb43346b 100644 --- a/src/main/java/gregtech/common/blocks/FrameItemBlock.java +++ b/src/main/java/gregtech/common/blocks/FrameItemBlock.java @@ -29,7 +29,6 @@ public IBlockState getBlockState(ItemStack stack) { } @Override - @SideOnly(Side.CLIENT) public String getItemStackDisplayName(ItemStack stack) { Material material = frameBlock.frameMaterial; return OrePrefix.frameGt.getLocalNameForItem(material); diff --git a/src/main/java/gregtech/common/blocks/OreItemBlock.java b/src/main/java/gregtech/common/blocks/OreItemBlock.java index fcc10f8ecd..8d752e0a8d 100644 --- a/src/main/java/gregtech/common/blocks/OreItemBlock.java +++ b/src/main/java/gregtech/common/blocks/OreItemBlock.java @@ -35,7 +35,6 @@ protected IBlockState getBlockState(ItemStack stack) { } @Override - @SideOnly(Side.CLIENT) public String getItemStackDisplayName(ItemStack stack) { IBlockState blockState = getBlockState(stack); StoneType stoneType = blockState.getValue(oreBlock.STONE_TYPE); diff --git a/src/main/java/gregtech/common/items/behaviors/AbstractMaterialPartBehavior.java b/src/main/java/gregtech/common/items/behaviors/AbstractMaterialPartBehavior.java index f3c8c56ec5..039ac915e2 100644 --- a/src/main/java/gregtech/common/items/behaviors/AbstractMaterialPartBehavior.java +++ b/src/main/java/gregtech/common/items/behaviors/AbstractMaterialPartBehavior.java @@ -7,6 +7,7 @@ import gregtech.api.unification.material.Materials; import gregtech.api.unification.material.type.IngotMaterial; import gregtech.api.unification.material.type.Material; +import gregtech.api.util.LocalisationUtils; import net.minecraft.client.resources.I18n; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -62,10 +63,10 @@ public void setPartDamage(ItemStack itemStack, int rotorDamage) { } @Override - @SideOnly(Side.CLIENT) + @SuppressWarnings("deprecation") public String getItemStackDisplayName(ItemStack itemStack, String unlocalizedName) { IngotMaterial material = getPartMaterial(itemStack); - return I18n.format(unlocalizedName, material.getLocalizedName()); + return LocalisationUtils.format(unlocalizedName, material.getLocalizedName()); } @Override diff --git a/src/main/java/gregtech/common/items/behaviors/FacadeItem.java b/src/main/java/gregtech/common/items/behaviors/FacadeItem.java index d215473d05..62ca90f454 100644 --- a/src/main/java/gregtech/common/items/behaviors/FacadeItem.java +++ b/src/main/java/gregtech/common/items/behaviors/FacadeItem.java @@ -3,9 +3,9 @@ import com.google.common.collect.ImmutableList; import gregtech.api.items.metaitem.stats.IItemNameProvider; import gregtech.api.items.metaitem.stats.ISubItemHandler; +import gregtech.api.util.LocalisationUtils; import gregtech.common.ConfigHolder; import gregtech.common.covers.facade.FacadeHelper; -import net.minecraft.client.resources.I18n; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.init.Blocks; import net.minecraft.init.Items; @@ -21,10 +21,11 @@ public class FacadeItem implements IItemNameProvider, ISubItemHandler { @Override + @SuppressWarnings("deprecation") public String getItemStackDisplayName(ItemStack itemStack, String unlocalizedName) { ItemStack facadeStack = getFacadeStack(itemStack); String name = facadeStack.getItem().getItemStackDisplayName(facadeStack); - return I18n.format(unlocalizedName, name); + return LocalisationUtils.format(unlocalizedName, name); } @Override diff --git a/src/main/java/gregtech/integration/theoneprobe/provider/TransformerInfoProvider.java b/src/main/java/gregtech/integration/theoneprobe/provider/TransformerInfoProvider.java index 073678cd36..ca5630efc0 100644 --- a/src/main/java/gregtech/integration/theoneprobe/provider/TransformerInfoProvider.java +++ b/src/main/java/gregtech/integration/theoneprobe/provider/TransformerInfoProvider.java @@ -9,7 +9,6 @@ import mcjty.theoneprobe.api.ElementAlignment; import mcjty.theoneprobe.api.IProbeInfo; import mcjty.theoneprobe.api.TextStyleClass; -import net.minecraft.client.resources.I18n; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing;