I18n implementation for guns

This commit is contained in:
Bufka2011 2025-08-23 18:10:46 -06:00
parent 3f641a843b
commit 9a0cadaf9d
3 changed files with 315 additions and 85 deletions

View File

@ -29,6 +29,7 @@ import com.hbm.render.util.RenderScreenOverlay;
import com.hbm.sound.AudioWrapper; import com.hbm.sound.AudioWrapper;
import com.hbm.util.BobMathUtil; import com.hbm.util.BobMathUtil;
import com.hbm.util.EnumUtil; import com.hbm.util.EnumUtil;
import com.hbm.util.i18n.I18nUtil;
import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
@ -172,21 +173,21 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
GunConfig config = getConfig(stack, i); GunConfig config = getConfig(stack, i);
for(Receiver rec : config.getReceivers(stack)) { for(Receiver rec : config.getReceivers(stack)) {
IMagazine mag = rec.getMagazine(stack); IMagazine mag = rec.getMagazine(stack);
list.add("Ammo: " + mag.getIconForHUD(stack, player).getDisplayName() + " " + mag.reportAmmoStateForHUD(stack, player)); list.add(I18nUtil.resolveKey("gui.weapon.ammo") + ": " + mag.getIconForHUD(stack, player).getDisplayName() + " " + mag.reportAmmoStateForHUD(stack, player));
float dmg = rec.getBaseDamage(stack); float dmg = rec.getBaseDamage(stack);
list.add("Base Damage: " + FORMAT_DMG.format(dmg)); list.add(I18nUtil.resolveKey("gui.weapon.baseDamage") + ": " + FORMAT_DMG.format(dmg));
if(mag.getType(stack, player.inventory) instanceof BulletConfig) { if(mag.getType(stack, player.inventory) instanceof BulletConfig) {
BulletConfig bullet = (BulletConfig) mag.getType(stack, player.inventory); BulletConfig bullet = (BulletConfig) mag.getType(stack, player.inventory);
int min = (int) (bullet.projectilesMin * rec.getSplitProjectiles(stack)); int min = (int) (bullet.projectilesMin * rec.getSplitProjectiles(stack));
int max = (int) (bullet.projectilesMax * rec.getSplitProjectiles(stack)); int max = (int) (bullet.projectilesMax * rec.getSplitProjectiles(stack));
list.add("Damage with current ammo: " + FORMAT_DMG.format(dmg * bullet.damageMult) + (min > 1 ? (" x" + (min != max ? (min + "-" + max) : min)) : "")); list.add(I18nUtil.resolveKey("gui.weapon.damageWithAmmo") + ": " + FORMAT_DMG.format(dmg * bullet.damageMult) + (min > 1 ? (" x" + (min != max ? (min + "-" + max) : min)) : ""));
} }
} }
float maxDura = config.getDurability(stack); float maxDura = config.getDurability(stack);
if(maxDura > 0) { if(maxDura > 0) {
int dura = MathHelper.clamp_int((int)((maxDura - this.getWear(stack, i)) * 100 / maxDura), 0, 100); int dura = MathHelper.clamp_int((int)((maxDura - this.getWear(stack, i)) * 100 / maxDura), 0, 100);
list.add("Condition: " + dura + "%"); list.add(I18nUtil.resolveKey("gui.weapon.condition") + ": " + dura + "%");
} }
for(ItemStack upgrade : WeaponModManager.getUpgradeItems(stack, i)) { for(ItemStack upgrade : WeaponModManager.getUpgradeItems(stack, i)) {
@ -195,17 +196,17 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IItemHUD, I
} }
switch(this.quality) { switch(this.quality) {
case A_SIDE: list.add(EnumChatFormatting.YELLOW + "Standard Arsenal"); break; case A_SIDE: list.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("gui.weapon.quality.aside")); break;
case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break; case B_SIDE: list.add(EnumChatFormatting.GOLD + I18nUtil.resolveKey("gui.weapon.quality.bside")); break;
case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break; case LEGENDARY: list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("gui.weapon.quality.legendary")); break;
case SPECIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break; case SPECIAL: list.add(EnumChatFormatting.AQUA + I18nUtil.resolveKey("gui.weapon.quality.special")); break;
case UTILITY: list.add(EnumChatFormatting.GREEN + "Utility"); break; case UTILITY: list.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey("gui.weapon.quality.utility")); break;
case SECRET: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.DARK_RED : EnumChatFormatting.RED) + "SECRET"); break; case SECRET: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.DARK_RED : EnumChatFormatting.RED) + I18nUtil.resolveKey("gui.weapon.quality.secret")); break;
case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break; case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + I18nUtil.resolveKey("gui.weapon.quality.debug")); break;
} }
if(Minecraft.getMinecraft().currentScreen instanceof GUIWeaponTable && !this.recognizedMods.isEmpty()) { if(Minecraft.getMinecraft().currentScreen instanceof GUIWeaponTable && !this.recognizedMods.isEmpty()) {
list.add(EnumChatFormatting.RED + "Accepts:"); list.add(EnumChatFormatting.RED + I18nUtil.resolveKey("gui.weapon.accepts" + ":"));
for(ComparableStack comp : this.recognizedMods) list.add(EnumChatFormatting.RED + " " + comp.toStack().getDisplayName()); for(ComparableStack comp : this.recognizedMods) list.add(EnumChatFormatting.RED + " " + comp.toStack().getDisplayName());
} }
} }

View File

@ -6282,3 +6282,124 @@ gui.recipe.enabledFor=Enabled for
gui.recipe.setRecipe=Click to set recipe gui.recipe.setRecipe=Click to set recipe
tile.oc_cable_paintable.name=Paintable Network Cable tile.oc_cable_paintable.name=Paintable Network Cable
# shared recipe / machine labels
gui.recipe.duration=Duration
gui.recipe.consumption=Consumption
gui.recipe.input=Input
gui.recipe.output=Output
gui.recipe.mB=mB
gui.recipe.atPressure=at
gui.recipe.autoswitch=Auto-switch group
gui.recipe.enabledFor=Enabled for
gui.recipe.setRecipe=Click to set recipe
# --- Missile / parts (generic) ---
gui.missile.warhead=Warhead
gui.missile.strength=Strength
gui.missile.fuelType=Fuel Type
gui.missile.fuelAmount=Fuel amount
gui.missile.chipInaccuracy=Chip inaccuracy
gui.missile.finInaccuracy=Fin inaccuracy
gui.missile.size=Size
gui.missile.health=Health
gui.missile.fuel=Fuel
gui.missile.fuelCapacity=Fuel capacity
gui.missile.notLaunchable=Not launchable!
# missile tiers
missile.tier.tier0=Tier 0
missile.tier.tier1=Tier 1
missile.tier.tier2=Tier 2
missile.tier.tier3=Tier 3
missile.tier.tier4=Tier 4
# missile fuel names
missile.fuel.solid=Solid Fuel
missile.fuel.ethanol_peroxide=Ethanol / Hydrogen Peroxide
missile.fuel.kerosene_peroxide=Kerosene / Hydrogen Peroxide
missile.fuel.kerosene_loxy=Kerosene / Liquid Oxygen
missile.fuel.jetfuel_loxy=Jet Fuel / Liquid Oxygen
# warheads (used by parts)
warhead.he=HE
warhead.incendiary=Incendiary
warhead.cluster=Cluster
warhead.bunker_buster=Bunker Buster
warhead.nuclear=Nuclear
warhead.thermonuclear=Thermonuclear (TX)
warhead.n2=N²
warhead.balefire=BF
warhead.schrabidium=Schrabidium
warhead.taint=Taint
warhead.cloud=Cloud
warhead.turbine=Turbine
# part keys
part.inaccuracy=Inaccuracy
part.size=Size
part.type=Type
part.strength=Strength
part.weight=Weight
part.topSize=Top size
part.bottomSize=Bottom size
part.fuelType=Fuel type
part.fuelAmount=Fuel amount
part.fuelConsumption=Fuel consumption
part.maxPayload=Max. payload
part.health=Health
part.rarity=Rarity
part.by=by
part.size.any=Any
part.size.none=None
# fuel extras used by parts
fuel.xenon=Xenon
fuel.balefire=BF Rocket Fuel
# part rarity keys (enum-based)
part.rarity.common=Common
part.rarity.uncommon=Uncommon
part.rarity.rare=Rare
part.rarity.epic=Epic
part.rarity.legendary=Legendary
part.rarity.strange=Strange
# generic / fallback
general.na=N/A
error.generic=### I AM ERROR ###
# --- Satellite chips ---
satchip.frequency=Satellite frequency
satchip.foeq=Gives you an achievement. That's it.
satchip.gerald.line1=Single use.
satchip.gerald.line2=Requires orbital module.
satchip.gerald.line3=Melter of CPUs, bane of every server owner.
satchip.laser=Allows to summon lasers with a 15 second cooldown.
satchip.mapper=Displays currently loaded chunks.
satchip.miner=Will deliver ore powders to a cargo landing pad.
satchip.lunar_miner=Mines moon turf to deliver it to a cargo landing pad.
satchip.radar=Shows a map of active entities.
satchip.resonator=Allows for teleportation with no cooldown.
satchip.scanner=Creates a topdown map of underground ores.
# --- Items (bomb components) ---
item.bomb_part.used_in=Used in:
item.n2.mine=N² Mine
item.fleija.name=F.L.E.I.J.A.
item.solinium.name=Solinium Bomb
# --- Weapon / gun tooltips ---
gui.weapon.ammo=Ammo
gui.weapon.baseDamage=Base Damage
gui.weapon.damageWithAmmo=Damage with current ammo
gui.weapon.condition=Condition
gui.weapon.accepts=Accepts
gui.weapon.quality.aside=Standard Arsenal
gui.weapon.quality.bside=B-Side
gui.weapon.quality.legendary=Legendary Weapon
gui.weapon.quality.special=Special Weapon
gui.weapon.quality.utility=Utility
gui.weapon.quality.secret=SECRET
gui.weapon.quality.debug=DEBUG

View File

@ -4588,19 +4588,6 @@ item.sat_radar.name=Спутник с радиолокационным зонд
item.sat_resonator.name=Спутник с Зен-Резонатором item.sat_resonator.name=Спутник с Зен-Резонатором
item.sat_scanner.name=Спутник с модулем глубинно-ресурсного сканирования item.sat_scanner.name=Спутник с модулем глубинно-ресурсного сканирования
item.sat.desc.frequency=Частота спутника
item.sat.desc.foeq=Даёт тебе достижение. Это всё.
item.sat.desc.gerald.single_use=Одноразовое.
item.sat.desc.gerald.orbital_module=Требует орбитальный модуль.
item.sat.desc.gerald.melter=Расплавитель процессоров, проклятие каждого владельца сервера.
item.sat.desc.laser=Позволяет вызывать лазеры с перезарядкой 15 секунд.
item.sat.desc.mapper=Отображает загруженные в данный момент чанки.
item.sat.desc.miner=Доставит рудные порошки на грузовую посадочную площадку.
item.sat.desc.lunar_miner=Добывает лунный грунт, чтобы доставить его на грузовую посадочную площадку.
item.sat.desc.radar=Показывает карту активных объектов.
item.sat.desc.resonator=Позволяет телепортироваться без перезарядки.
item.sat.desc.scanner=Создаёт карту подземных руд сверху вниз.
item.sawblade.name=Лезвие пилорамы item.sawblade.name=Лезвие пилорамы
item.schnitzel_vegan.name=Вегетарианский шницель item.schnitzel_vegan.name=Вегетарианский шницель
item.schrabidium_axe.name=Шрабидиевый топор item.schrabidium_axe.name=Шрабидиевый топор
@ -6625,4 +6612,125 @@ gui.recipe.autoswitch=Группа автоматического переклю
gui.recipe.enabledFor=Включено для gui.recipe.enabledFor=Включено для
gui.recipe.setRecipe=Нажмите, чтобы выбрать рецепт gui.recipe.setRecipe=Нажмите, чтобы выбрать рецепт
# shared recipe / machine labels
gui.recipe.duration=Время
gui.recipe.consumption=Потребление
gui.recipe.input=Вход
gui.recipe.output=Выход
gui.recipe.mB=mB
gui.recipe.atPressure=при
gui.recipe.autoswitch=Автопереключение группы
gui.recipe.enabledFor=Доступно для
gui.recipe.setRecipe=Нажмите, чтобы установить рецепт
# --- Missile / parts (generic) ---
gui.missile.warhead=Боеголовка
gui.missile.strength=Мощность
gui.missile.fuelType=Тип топлива
gui.missile.fuelAmount=Количество топлива
gui.missile.chipInaccuracy=Неточность чипа
gui.missile.finInaccuracy=Неточность стабилизаторов
gui.missile.size=Размер
gui.missile.health=Прочность
gui.missile.fuel=Топливо
gui.missile.fuelCapacity=Ёмкость топлива
gui.missile.notLaunchable=Невозможно запустить!
# missile tiers
missile.tier.tier0=Уровень 0
missile.tier.tier1=Уровень 1
missile.tier.tier2=Уровень 2
missile.tier.tier3=Уровень 3
missile.tier.tier4=Уровень 4
# missile fuel names
missile.fuel.solid=Твердое топливо
missile.fuel.ethanol_peroxide=Этанол / Перекись водорода
missile.fuel.kerosene_peroxide=Керосин / Перекись водорода
missile.fuel.kerosene_loxy=Керосин / Жидкий кислород
missile.fuel.jetfuel_loxy=Авиационное топливо / Жидкий кислород
# warheads (used by parts)
warhead.he=HE
warhead.incendiary=Зажигательная
warhead.cluster=Кассетная
warhead.bunker_buster=Противобункерная
warhead.nuclear=Ядерная
warhead.thermonuclear=Термоядерная (TX)
warhead.n2=N²
warhead.balefire=Жар-ядерная
warhead.schrabidium=Шрабидевая
warhead.taint=Порча
warhead.cloud=Облако
warhead.turbine=Турбина
# part keys
part.inaccuracy=Неточность
part.size=Размер
part.type=Тип
part.strength=Прочность
part.weight=Вес
part.topSize=Верхний размер
part.bottomSize=Нижний размер
part.fuelType=Тип топлива
part.fuelAmount=Количество топлива
part.fuelConsumption=Расход топлива
part.maxPayload=Макс. нагрузка
part.health=Прочность
part.rarity=Редкость
part.by=Автор
part.size.any=Любой
part.size.none=Нет
# fuel extras used by parts
fuel.xenon=Ксенон
fuel.balefire=Жар-ракетное топливо
# part rarity keys (enum-based, neuter)
part.rarity.common=Обычное
part.rarity.uncommon=Необычное
part.rarity.rare=Редкое
part.rarity.epic=Эпическое
part.rarity.legendary=Легендарное
part.rarity.strange=Странное
# generic / fallback
general.na=Н
error.generic=### Я ОШИБКА ###
# --- Satellite chips ---
satchip.frequency=Частота спутника
satchip.foeq=Даёт достижение. И всё.
satchip.gerald.line1=Одноразовый.
satchip.gerald.line2=Требуется орбитальный модуль.
satchip.gerald.line3=Расплавитель процессоров, проклятие каждого владельца сервера.
satchip.laser=Позволяет вызывать лазеры с перезарядкой 15 секунд.
satchip.mapper=Отображает загруженные в данный момент чанки.
satchip.miner=Доставляет рудные порошки на посадочную площадку.
satchip.lunar_miner=Добывает лунный грунт и доставляет на посадочную площадку.
satchip.radar=Показывает карту активных сущностей
satchip.resonator=Позволяет телепортироваться без перезарядки.
satchip.scanner=Создаёт карту подземных руд сверху вниз.
# --- Items (bomb components) ---
item.bomb_part.used_in=Используется в:
item.n2.mine=Мина N²
item.fleija.name=Ф.Л.Е.Я.
item.solinium.name=Синий Ополаскиватель
# --- Weapon / gun tooltips ---
gui.weapon.ammo=Боеприпасы
gui.weapon.baseDamage=Базовый урон
gui.weapon.damageWithAmmo=Урон с текущими боеприпасами
gui.weapon.condition=Состояние
gui.weapon.accepts=Принимает
gui.weapon.quality.aside=Стандартный арсенал
gui.weapon.quality.bside=Би-Сайд
gui.weapon.quality.legendary=Легендарное оружие
gui.weapon.quality.special=Специальное оружие
gui.weapon.quality.utility=Утилитарное
gui.weapon.quality.secret=СЕКРЕТ
gui.weapon.quality.debug=ОТЛАДКА
// Last updated 23.08.2025 by Bufka2011, MrKimkimora and TactiCOOLHimZa // // Last updated 23.08.2025 by Bufka2011, MrKimkimora and TactiCOOLHimZa //