diff --git a/src/main/java/ru/betterend/client/BetterEndClient.java b/src/main/java/ru/betterend/client/BetterEndClient.java index 57d04ae1..0006c016 100644 --- a/src/main/java/ru/betterend/client/BetterEndClient.java +++ b/src/main/java/ru/betterend/client/BetterEndClient.java @@ -2,18 +2,21 @@ package ru.betterend.client; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderType; import net.minecraft.core.Registry; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; +import net.minecraft.world.entity.player.Player; import ru.betterend.BetterEnd; import ru.betterend.client.render.ERenderLayer; +import ru.betterend.events.ItemTooltipCallback; import ru.betterend.interfaces.IRenderTypeable; import ru.betterend.interfaces.MultiModelItem; import ru.betterend.item.CrystaliteArmor; -import ru.betterend.registry.EndBlockEntityRenders; -import ru.betterend.registry.EndEntitiesRenders; -import ru.betterend.registry.EndModelProviders; -import ru.betterend.registry.EndParticles; -import ru.betterend.registry.EndScreens; +import ru.betterend.registry.*; import ru.betterend.util.TranslationHelper; public class BetterEndClient implements ClientModInitializer { @@ -26,14 +29,29 @@ public class BetterEndClient implements ClientModInitializer { EndEntitiesRenders.register(); EndModelProviders.register(); MultiModelItem.register(); - CrystaliteArmor.registerTooltips(); ClientOptions.init(); + registerTooltips(); if (BetterEnd.isDevEnvironment()) { TranslationHelper.printMissingNames(); } } + public static void registerTooltips() { + ItemTooltipCallback.EVENT.register((player, stack, context, lines) -> { + if (stack.getItem() instanceof CrystaliteArmor) { + boolean hasSet = false; + if (player != null) { + hasSet = CrystaliteArmor.hasFullSet(player); + } + TranslatableComponent setDesc = new TranslatableComponent("tooltip.armor.crystalite_set"); + setDesc.setStyle(Style.EMPTY.applyFormats(hasSet ? ChatFormatting.BLUE : ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC)); + lines.add(TextComponent.EMPTY); + lines.add(setDesc); + } + }); + } + private void registerRenderLayers() { RenderType cutout = RenderType.cutout(); RenderType translucent = RenderType.translucent(); diff --git a/src/main/java/ru/betterend/events/ItemTooltipCallback.java b/src/main/java/ru/betterend/events/ItemTooltipCallback.java new file mode 100644 index 00000000..f0a70655 --- /dev/null +++ b/src/main/java/ru/betterend/events/ItemTooltipCallback.java @@ -0,0 +1,32 @@ +package ru.betterend.events; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.fabricmc.fabric.api.event.Event; +import net.fabricmc.fabric.api.event.EventFactory; +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; + +import java.util.List; + +@Environment(EnvType.CLIENT) +public interface ItemTooltipCallback { + /** + * Fired after the game has appended all base tooltip lines to the list. + */ + Event EVENT = EventFactory.createArrayBacked(ItemTooltipCallback.class, callbacks -> (player, stack, context, lines) -> { + for (ItemTooltipCallback callback : callbacks) { + callback.getTooltip(player, stack, context, lines); + } + }); + + /** + * Called when an item stack's tooltip is rendered. Text added to {@code lines} will be + * rendered with the tooltip. + * + * @param lines the list containing the lines of text displayed on the stack's tooltip + */ + void getTooltip(Player player, ItemStack stack, TooltipFlag context, List lines); +} diff --git a/src/main/java/ru/betterend/item/ArmoredElytra.java b/src/main/java/ru/betterend/item/ArmoredElytra.java index 6c2189e5..ba13bb3e 100644 --- a/src/main/java/ru/betterend/item/ArmoredElytra.java +++ b/src/main/java/ru/betterend/item/ArmoredElytra.java @@ -1,5 +1,7 @@ package ru.betterend.item; +import java.util.UUID; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.fabricmc.fabric.api.object.builder.v1.client.model.FabricModelPredicateProviderRegistry; @@ -7,13 +9,15 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; -import net.minecraft.world.item.*; +import net.minecraft.world.item.ArmorMaterial; +import net.minecraft.world.item.ElytraItem; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Rarity; import ru.betterend.BetterEnd; import ru.betterend.interfaces.MultiModelItem; import ru.betterend.registry.EndItems; -import java.util.UUID; - public class ArmoredElytra extends EndArmorItem implements MultiModelItem { private static final UUID ARMOR_MODIFIER_UUID_CHEST = ARMOR_MODIFIER_UUID_PER_SLOT[2]; diff --git a/src/main/java/ru/betterend/item/CrystaliteArmor.java b/src/main/java/ru/betterend/item/CrystaliteArmor.java index 26a26698..cb372ec7 100644 --- a/src/main/java/ru/betterend/item/CrystaliteArmor.java +++ b/src/main/java/ru/betterend/item/CrystaliteArmor.java @@ -1,10 +1,15 @@ package ru.betterend.item; +import java.util.List; + +import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; +import org.jetbrains.annotations.Nullable; + import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TranslatableComponent; @@ -13,14 +18,16 @@ import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; import ru.betterend.effects.EndStatusEffects; import ru.betterend.item.material.EndArmorMaterial; import ru.betterend.registry.EndItems; public class CrystaliteArmor extends EndArmorItem { - protected final static TranslatableComponent CHEST_DESC; - protected final static TranslatableComponent BOOTS_DESC; + public final static TranslatableComponent CHEST_DESC; + public final static TranslatableComponent BOOTS_DESC; public CrystaliteArmor(EquipmentSlot equipmentSlot, Properties settings) { super(EndArmorMaterial.CRYSTALITE, equipmentSlot, settings); @@ -39,32 +46,6 @@ public class CrystaliteArmor extends EndArmorItem { owner.addEffect(new MobEffectInstance(EndStatusEffects.CRYSTALITE_HEALTH_REGEN)); } - @Environment(EnvType.CLIENT) - public static void registerTooltips() { - ItemTooltipCallback.EVENT.register((stack, context, lines) -> { - if (stack.getItem() instanceof CrystaliteArmor) { - boolean hasSet = false; - Player owner = Minecraft.getInstance().player; - if (owner != null) { - hasSet = hasFullSet(owner); - } - - TranslatableComponent setDesc = new TranslatableComponent("tooltip.armor.crystalite_set"); - setDesc.setStyle(Style.EMPTY.applyFormats(hasSet ? ChatFormatting.BLUE : ChatFormatting.DARK_GRAY, ChatFormatting.ITALIC)); - lines.add(TextComponent.EMPTY); - lines.add(setDesc); - - if (stack.getItem() == EndItems.CRYSTALITE_CHESTPLATE) { - lines.add(1, TextComponent.EMPTY); - lines.add(2, CHEST_DESC); - } else if (stack.getItem() == EndItems.CRYSTALITE_BOOTS) { - lines.add(1, TextComponent.EMPTY); - lines.add(2, BOOTS_DESC); - } - } - }); - } - static { Style descStyle = Style.EMPTY.applyFormats(ChatFormatting.DARK_AQUA, ChatFormatting.ITALIC); CHEST_DESC = new TranslatableComponent("tooltip.armor.crystalite_chest"); diff --git a/src/main/java/ru/betterend/item/CrystaliteBoots.java b/src/main/java/ru/betterend/item/CrystaliteBoots.java index 03e0e797..736ca306 100644 --- a/src/main/java/ru/betterend/item/CrystaliteBoots.java +++ b/src/main/java/ru/betterend/item/CrystaliteBoots.java @@ -1,13 +1,28 @@ package ru.betterend.item; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; import ru.betterend.effects.EndStatusEffects; import ru.betterend.interfaces.MobEffectApplier; import ru.betterend.registry.EndItems; +import java.util.List; + public class CrystaliteBoots extends CrystaliteArmor implements MobEffectApplier { public CrystaliteBoots() { @@ -18,4 +33,12 @@ public class CrystaliteBoots extends CrystaliteArmor implements MobEffectApplier public void applyEffect(LivingEntity owner) { owner.addEffect(new MobEffectInstance(EndStatusEffects.CRYSTALITE_MOVE_SPEED)); } + + @Override + @Environment(EnvType.CLIENT) + public void appendHoverText(ItemStack stack, @Nullable Level level, List lines, TooltipFlag tooltip) { + super.appendHoverText(stack, level, lines, tooltip); + lines.add(1, TextComponent.EMPTY); + lines.add(2, BOOTS_DESC); + } } diff --git a/src/main/java/ru/betterend/item/CrystaliteChestplate.java b/src/main/java/ru/betterend/item/CrystaliteChestplate.java index 3c55deb0..d9ee2f02 100644 --- a/src/main/java/ru/betterend/item/CrystaliteChestplate.java +++ b/src/main/java/ru/betterend/item/CrystaliteChestplate.java @@ -1,13 +1,28 @@ package ru.betterend.item; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.TextComponent; +import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Rarity; +import net.minecraft.world.item.TooltipFlag; +import net.minecraft.world.level.Level; +import org.jetbrains.annotations.Nullable; import ru.betterend.effects.EndStatusEffects; import ru.betterend.interfaces.MobEffectApplier; import ru.betterend.registry.EndItems; +import java.util.List; + public class CrystaliteChestplate extends CrystaliteArmor implements MobEffectApplier { public CrystaliteChestplate() { @@ -18,4 +33,12 @@ public class CrystaliteChestplate extends CrystaliteArmor implements MobEffectAp public void applyEffect(LivingEntity owner) { owner.addEffect(new MobEffectInstance(EndStatusEffects.CRYSTALITE_DIG_SPEED)); } + + @Override + @Environment(EnvType.CLIENT) + public void appendHoverText(ItemStack stack, @Nullable Level level, List lines, TooltipFlag tooltip) { + super.appendHoverText(stack, level, lines, tooltip); + lines.add(1, TextComponent.EMPTY); + lines.add(2, CHEST_DESC); + } } diff --git a/src/main/java/ru/betterend/item/CrystaliteHelmet.java b/src/main/java/ru/betterend/item/CrystaliteHelmet.java index 1231afeb..f44b6e39 100644 --- a/src/main/java/ru/betterend/item/CrystaliteHelmet.java +++ b/src/main/java/ru/betterend/item/CrystaliteHelmet.java @@ -1,13 +1,13 @@ package ru.betterend.item; +import java.util.UUID; + import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.item.Rarity; import ru.betterend.registry.EndAttributes; import ru.betterend.registry.EndItems; -import java.util.UUID; - public class CrystaliteHelmet extends CrystaliteArmor { public CrystaliteHelmet() { diff --git a/src/main/java/ru/betterend/item/CrystaliteLeggings.java b/src/main/java/ru/betterend/item/CrystaliteLeggings.java index fafccec3..45418c6d 100644 --- a/src/main/java/ru/betterend/item/CrystaliteLeggings.java +++ b/src/main/java/ru/betterend/item/CrystaliteLeggings.java @@ -1,13 +1,13 @@ package ru.betterend.item; +import java.util.UUID; + import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.item.Rarity; import ru.betterend.registry.EndItems; -import java.util.UUID; - public class CrystaliteLeggings extends CrystaliteArmor { public CrystaliteLeggings() { diff --git a/src/main/java/ru/betterend/item/EndArmorItem.java b/src/main/java/ru/betterend/item/EndArmorItem.java index aeb6694e..9484f995 100644 --- a/src/main/java/ru/betterend/item/EndArmorItem.java +++ b/src/main/java/ru/betterend/item/EndArmorItem.java @@ -2,6 +2,7 @@ package ru.betterend.item; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; + import net.minecraft.world.entity.EquipmentSlot; import net.minecraft.world.entity.ai.attributes.Attribute; import net.minecraft.world.entity.ai.attributes.AttributeModifier; diff --git a/src/main/java/ru/betterend/mixin/client/ItemStackMixin.java b/src/main/java/ru/betterend/mixin/client/ItemStackMixin.java new file mode 100644 index 00000000..dd0ffad9 --- /dev/null +++ b/src/main/java/ru/betterend/mixin/client/ItemStackMixin.java @@ -0,0 +1,21 @@ +package ru.betterend.mixin.client; + +import net.minecraft.network.chat.Component; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.TooltipFlag; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.betterend.events.ItemTooltipCallback; + +import java.util.List; + +@Mixin(ItemStack.class) +public class ItemStackMixin { + @Inject(method = "getTooltipLines", at = @At("RETURN")) + private void be_getTooltip(Player entity, TooltipFlag tooltipContext, CallbackInfoReturnable> info) { + ItemTooltipCallback.EVENT.invoker().getTooltip(entity, ItemStack.class.cast(this), tooltipContext, info.getReturnValue()); + } +} diff --git a/src/main/java/ru/betterend/mixin/common/LivingEntityMixin.java b/src/main/java/ru/betterend/mixin/common/LivingEntityMixin.java index a82ff6c1..d89d4f7f 100644 --- a/src/main/java/ru/betterend/mixin/common/LivingEntityMixin.java +++ b/src/main/java/ru/betterend/mixin/common/LivingEntityMixin.java @@ -1,12 +1,27 @@ package ru.betterend.mixin.common; +import java.util.Collection; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.At.Shift; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + import net.minecraft.sounds.SoundEvent; import net.minecraft.util.Mth; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; -import net.minecraft.world.entity.*; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.MoverType; import net.minecraft.world.entity.ai.attributes.AttributeMap; import net.minecraft.world.entity.ai.attributes.AttributeModifier; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; @@ -17,21 +32,11 @@ import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.At.Shift; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.ModifyArg; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import ru.betterend.interfaces.MobEffectApplier; import ru.betterend.item.ArmoredElytra; import ru.betterend.item.CrystaliteArmor; import ru.betterend.registry.EndAttributes; -import java.util.Collection; - @Mixin(LivingEntity.class) public abstract class LivingEntityMixin extends Entity { diff --git a/src/main/java/ru/betterend/registry/EndItems.java b/src/main/java/ru/betterend/registry/EndItems.java index 6f84b4db..45619fa3 100644 --- a/src/main/java/ru/betterend/registry/EndItems.java +++ b/src/main/java/ru/betterend/registry/EndItems.java @@ -24,7 +24,6 @@ import net.minecraft.world.item.ArmorItem; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; -import net.minecraft.world.item.Rarity; import net.minecraft.world.item.ShovelItem; import net.minecraft.world.item.SpawnEggItem; import net.minecraft.world.item.SwordItem; @@ -33,7 +32,19 @@ import net.minecraft.world.item.Tiers; import net.minecraft.world.level.block.DispenserBlock; import ru.betterend.BetterEnd; import ru.betterend.config.Configs; -import ru.betterend.item.*; +import ru.betterend.item.ArmoredElytra; +import ru.betterend.item.CrystaliteBoots; +import ru.betterend.item.CrystaliteChestplate; +import ru.betterend.item.CrystaliteHelmet; +import ru.betterend.item.CrystaliteLeggings; +import ru.betterend.item.DrinkItem; +import ru.betterend.item.EnchantedPetalItem; +import ru.betterend.item.EndArmorItem; +import ru.betterend.item.EndBucketItem; +import ru.betterend.item.EndSpawnEggItem; +import ru.betterend.item.EternalCrystalItem; +import ru.betterend.item.PatternedDiscItem; +import ru.betterend.item.PatternedItem; import ru.betterend.item.material.EndArmorMaterial; import ru.betterend.item.material.EndToolMaterial; import ru.betterend.item.tool.EndAxeItem; diff --git a/src/main/resources/assets/betterend/lang/ko_kr.json b/src/main/resources/assets/betterend/lang/ko_kr.json index 07515255..dcdecc42 100644 --- a/src/main/resources/assets/betterend/lang/ko_kr.json +++ b/src/main/resources/assets/betterend/lang/ko_kr.json @@ -75,6 +75,7 @@ "item.betterend.aeternium_sword_handle": "에테르늄 검 손잡이", "item.betterend.leather_stripe": "가죽끈", "item.betterend.leather_wrapped_stick": "가죽을 감은 막대기", + "item.betterend.elytra_armored": "장갑 겉날개", "effect.betterend.end_veil": "엔드 베일", "enchantment.betterend.end_veil": "엔드 베일", @@ -316,6 +317,7 @@ "block.betterend.quartz_lantern": "석영 랜턴", "item.betterend.bucket_end_fish": "엔드 물고기가 담긴 양동이", + "item.betterend.bucket_cubozoa": "상자해파리가 담긴 양동이", "item.betterend.end_fish_cooked": "익힌 엔드 물고기", "item.betterend.end_fish_raw": "엔드 물고기", @@ -503,8 +505,8 @@ "block.betterend.charnia_green": "초록색 차니아", "block.betterend.vent_bubble_column": "거품 분출 기둥", "block.betterend.respawn_obelisk": "리스폰 오벨리스크", - "message.betterend.set_spawn": "\u00A7b\u00A7l리스폰 지점을 설정했습니다", - "message.betterend.fail_spawn": "\u00A7c\u00A7l호박 6개를 가지고 있어야 리스폰 지점을 설정할 수 있습니다", + "message.betterend.set_spawn": "§b§l리스폰 지점을 설정했습니다", + "message.betterend.fail_spawn": "§c§l리스폰 지점을 설정하려면 호박 6개를 들고 있어야 합니다", "block.betterend.dragon_tree_composter": "용혈수 퇴비통", "block.betterend.end_lotus_composter": "엔드 연꽃 퇴비통", @@ -517,7 +519,7 @@ "biome.betterend.old_bulbis_gardens": "오래된 구근 정원", "block.betterend.ivis_moss": "이비스 이끼", "block.betterend.ivis_vine": "이비스 덩굴", - "block.betterend.silk_moth_nest": "비단나방 둥지", + "block.betterend.silk_moth_nest": "누에나방 둥지", "block.betterend.umbrella_tree_bark": "우산 나무", "block.betterend.umbrella_tree_barrel": "우산 나무 통", @@ -590,9 +592,9 @@ "block.betterend.lumecorn": "루메콘", "block.betterend.salteago": "살테고", "block.betterend.vaiolush_fern": "바이올루시 고사리", - "entity.betterend.silk_moth": "비단나방", + "entity.betterend.silk_moth": "누에나방", "item.betterend.silk_fiber": "비단 실", - "item.betterend.spawn_egg_silk_moth": "비단나방 생성 알", + "item.betterend.spawn_egg_silk_moth": "누에나방 생성 알", "block.betterend.thallasium_ore": "탈라슘 광석", "item.betterend.thallasium_axe": "탈라슘 도끼", @@ -676,5 +678,198 @@ "item.betterend.thallasium_shovel_head": "탈라슘 삽 머리", "item.betterend.thallasium_sword_blade": "탈라슘 검 날", "item.betterend.thallasium_sword_handle": "탈라슘 검 손잡이", - "block.betterend.aeternium_anvil": "에테르늄 모루" + "block.betterend.aeternium_anvil": "에테르늄 모루", + + "biome.betterend.dragon_graveyards": "드래곤 묘지", + "biome.betterend.dry_shrubland": "마른 관목", + "block.betterend.aeridium": "아이리디엄", + "block.betterend.amaranita_cap": "아마라니타 갓", + "block.betterend.amaranita_fur": "아마라니타 털", + "block.betterend.amaranita_hymenophore": "아마라니타 자실층탁", + "block.betterend.amaranita_hyphae": "아마라니타 균사", + "block.betterend.amaranita_lantern": "아마라니타 랜턴", + "block.betterend.amaranita_stem": "아마라니타 줄기", + "block.betterend.clawfern": "클로펀", + "block.betterend.globulagus": "글로불라거스", + "block.betterend.lamellarium": "라멜라리엄", + "block.betterend.large_amaranita_mushroom": "큰 아마라니타 버섯", + "block.betterend.lutebus": "루테버스", + "block.betterend.mossy_bone": "이끼 낀 뼈", + "block.betterend.mossy_obsidian": "이끼 낀 흑요석", + "block.betterend.orango": "오랑고", + "block.betterend.rutiscus": "루티스커스", + "block.betterend.rutiscus_path": "루티스커스 길", + "block.betterend.sangnum": "생넘", + "block.betterend.sangnum_path": "생넘 길", + "block.betterend.small_amaranita_mushroom": "작은 아마라니타 버섯", + + "block.betterend.amber_root_seed": "호박 뿌리 씨앗", + "block.betterend.azure_jadestone": "하늘색 옥석", + "block.betterend.azure_jadestone_bricks": "하늘색 옥석 벽돌", + "block.betterend.azure_jadestone_bricks_slab": "하늘색 옥석 벽돌 반 블록", + "block.betterend.azure_jadestone_bricks_stairs": "하늘색 옥석 벽돌 계단", + "block.betterend.azure_jadestone_bricks_wall": "하늘색 옥석 벽돌 담장", + "block.betterend.azure_jadestone_button": "하늘색 옥석 버튼", + "block.betterend.azure_jadestone_furnace": "하늘색 옥석 화로", + "block.betterend.azure_jadestone_lantern": "하늘색 옥석 랜턴", + "block.betterend.azure_jadestone_pedestal": "하늘색 옥석 받침대", + "block.betterend.azure_jadestone_pillar": "하늘색 옥석 기둥", + "block.betterend.azure_jadestone_plate": "하늘색 옥석 압력판", + "block.betterend.azure_jadestone_polished": "윤나는 하늘색 옥석 ", + "block.betterend.azure_jadestone_slab": "하늘색 옥석 반 블록", + "block.betterend.azure_jadestone_stairs": "하늘색 옥석 계단", + "block.betterend.azure_jadestone_tiles": "하늘색 옥석 타일 ", + "block.betterend.azure_jadestone_wall": "하늘색 옥석 담장", + "block.betterend.chorus_mushroom_seed": "후렴 버섯 씨앗", + "block.betterend.end_stone_stalactite": "엔드 돌 종유석", + "block.betterend.end_stone_stalactite_cavemoss": "동굴 이끼가 덮힌 엔드 돌 종유석", + "block.betterend.pearlberry_seed": "펄베리 씨앗", + "block.betterend.rubinea": "루비네아", + "block.betterend.sandy_jadestone": "모래색 옥석", + "block.betterend.sandy_jadestone_bricks": "모래색 옥석 벽돌", + "block.betterend.sandy_jadestone_bricks_slab": "모래색 옥석 벽돌 반 블록", + "block.betterend.sandy_jadestone_bricks_stairs": "모래색 옥석 벽돌 계단", + "block.betterend.sandy_jadestone_bricks_wall": "모래색 옥석 벽돌 담장", + "block.betterend.sandy_jadestone_button": "모래색 옥석 버튼", + "block.betterend.sandy_jadestone_furnace": "모래색 옥석 화로", + "block.betterend.sandy_jadestone_lantern": "모래색 옥석 랜턴", + "block.betterend.sandy_jadestone_pedestal": "모래색 옥석 받침대", + "block.betterend.sandy_jadestone_pillar": "모래색 옥석 기둥", + "block.betterend.sandy_jadestone_plate": "모래색 옥석 압력판", + "block.betterend.sandy_jadestone_polished": "윤나는 모래색 옥석", + "block.betterend.sandy_jadestone_slab": "모래색 옥석 반 블록", + "block.betterend.sandy_jadestone_stairs": "모래색 옥석 계단", + "block.betterend.sandy_jadestone_tiles": "모래색 옥석 타일", + "block.betterend.sandy_jadestone_wall": "모래색 옥석 담장", + "block.betterend.smaragdant_crystal": "스마그댄트 수정", + "block.betterend.smaragdant_crystal_shard": "스마그댄트 수정 조각", + "block.betterend.virid_jadestone": "담녹색 옥석", + "block.betterend.virid_jadestone_bricks": "담녹색 옥석 벽돌", + "block.betterend.virid_jadestone_bricks_slab": "담녹색 옥석 벽돌 반 블록", + "block.betterend.virid_jadestone_bricks_stairs": "담녹색 옥석 벽돌 계단", + "block.betterend.virid_jadestone_bricks_wall": "담녹색 옥석 벽돌 담장", + "block.betterend.virid_jadestone_button": "담녹색 옥석 버튼", + "block.betterend.virid_jadestone_furnace": "담녹색 옥석 화로", + "block.betterend.virid_jadestone_lantern": "담녹색 옥석 랜턴", + "block.betterend.virid_jadestone_pedestal": "담녹색 옥석 받침대", + "block.betterend.virid_jadestone_pillar": "담녹색 옥석 기둥", + "block.betterend.virid_jadestone_plate": "담녹색 옥석 압력판", + "block.betterend.virid_jadestone_polished": "윤나는 담녹색 옥석", + "block.betterend.virid_jadestone_slab": "담녹색 옥석 반 블록", + "block.betterend.virid_jadestone_stairs": "담녹색 옥석 계단", + "block.betterend.virid_jadestone_tiles": "담녹색 옥석 타일", + "block.betterend.virid_jadestone_wall": "담녹색 옥석 담장", + "item.betterend.amber_root_raw": "호박 뿌리", + "item.betterend.chorus_mushroom_cooked": "익힌 후렴 버섯", + "item.betterend.chorus_mushroom_raw": "후렴 버섯", + + "biome.betterend.empty_aurora_cave": "빈 오로라 동굴", + "biome.betterend.empty_end_cave": "빈 엔드 동굴", + "biome.betterend.empty_smaragdant_cave": "빈 스마그댄트 동굴", + "biome.betterend.lush_aurora_cave": "무성한 오로라 동굴", + "biome.betterend.lush_smaragdant_cave": "무성한 스마그댄트 동굴", + + "block.betterend.dragon_bone_block": "드래곤 뼈 블록", + "block.betterend.dragon_bone_slab": "드래곤 뼈 반 블록", + "block.betterend.dragon_bone_stairs": "드래곤 뼈 계단", + "block.betterend.mossy_dragon_bone": "이끼 낀 드래곤 뼈", + + "biome.betterend.lantern_woods": "랜턴 숲", + "block.betterend.filalux": "필라룩스", + "block.betterend.filalux_lantern": "필라룩스 랜턴", + "block.betterend.filalux_wings": "필라룩스 날개", + "block.betterend.lucernia_bark": "루체르니아", + "block.betterend.lucernia_barrel": "루체르니아 통", + "block.betterend.lucernia_bookshelf": "루체르니아 책장", + "block.betterend.lucernia_button": "루체르니아 버튼", + "block.betterend.lucernia_chest": "루체르니아 상자", + "block.betterend.lucernia_composter": "루체르니아 퇴비통", + "block.betterend.lucernia_crafting_table": "루체르니아 제작대", + "block.betterend.lucernia_door": "루체르니아 문", + "block.betterend.lucernia_fence": "루체르니아 울타리", + "block.betterend.lucernia_gate": "루체르니아 울타리 문", + "block.betterend.lucernia_ladder": "루체르니아 사다리", + "block.betterend.lucernia_leaves": "루체르니아 잎", + "block.betterend.lucernia_log": "루체르니아 원목", + "block.betterend.lucernia_outer_leaves": "루체르니아 겉잎", + "block.betterend.lucernia_planks": "루체르니아 판자", + "block.betterend.lucernia_plate": "루체르니아 압력판", + "block.betterend.lucernia_sapling": "루체르니아 묘목", + "block.betterend.lucernia_sign": "루체르니아 표지판", + "block.betterend.lucernia_slab": "루체르니아 반 블록", + "block.betterend.lucernia_stairs": "루체르니아 계단", + "block.betterend.lucernia_stripped_bark": "껍질 벗긴 루체르니아", + "block.betterend.lucernia_stripped_log": "껍질 벗긴 루체르니아 원목", + "block.betterend.lucernia_trapdoor": "루체르니아 다락문", + + "block.betterend.aurant_polypore": "오랑 버섯", + "block.betterend.bolux_mushroom": "볼럭스 버섯", + "block.betterend.flamaea": "플라마이아", + "block.betterend.pond_anemone": "연못 말미잘", + "block.betterend.ruscus": "러스커스", + "item.betterend.bolux_mushroom_cooked": "익힌 볼럭스 버섯", + + "block.betterend.silk_moth_hive": "누에 나방통 ", + "item.betterend.silk_moth_matrix": "누에 나방 망", + + "biome.betterend.neon_oasis": "네온 오아시스", + "block.betterend.cave_pumpkin": "동굴 호박", + "block.betterend.cave_pumpkin_seed": "동굴 호박 씨앗", + "block.betterend.magnula": "매그눌라", + "block.betterend.neon_cactus": "네온 선인장", + "item.betterend.cave_pumpkin_pie": "동굴 호박 파이", + + "item.betterend.music_disc_strange_and_alien": "§b음반§r", + "item.betterend.music_disc_strange_and_alien.desc": "§5Firel§r - §fStrange And Alien§r", + "item.betterend.music_disc_grasping_at_stars": "§b음반§r", + "item.betterend.music_disc_grasping_at_stars.desc": "§5Firel§r - §fGrasping At Stars§r", + "item.betterend.music_disc_endseeker": "§b음반§r", + "item.betterend.music_disc_endseeker.desc": "§5Firel§r - §fEndseeker§r", + "item.betterend.music_disc_eo_dracona": "§b음반§r", + "item.betterend.music_disc_eo_dracona.desc": "§5Firel§r - §fEo Dracona§r", + + "block.betterend.hydralux_petal_block_amber": "호박색 꽃잎 블록", + "block.betterend.hydralux_petal_block_beige": "베이지색 꽃잎 블록", + "block.betterend.hydralux_petal_block_cream": "크림색 꽃잎 블록", + "block.betterend.hydralux_petal_block_dark_green": "진한 녹색 꽃잎 블록", + "block.betterend.hydralux_petal_block_forest_green": "짙은 황록색 꽃잎 블록", + "block.betterend.hydralux_petal_block_hot_pink": "강한 분홍색 꽃잎 블록", + "block.betterend.hydralux_petal_block_indigo": "남색 꽃잎 블록", + "block.betterend.hydralux_petal_block_maroon": "고동색 꽃잎 블록", + "block.betterend.hydralux_petal_block_navy": "감청색 꽃잎 블록", + "block.betterend.hydralux_petal_block_olive": "황록색 꽃잎 블록", + "block.betterend.hydralux_petal_block_pale_green": "담녹색 꽃잎 블록", + "block.betterend.hydralux_petal_block_pale_pink": "연분홍색 꽃잎 블록", + "block.betterend.hydralux_petal_block_pale_yellow": "연노랑색 꽃잎 블록", + "block.betterend.hydralux_petal_block_sky_blue": "하늘색 꽃잎 블록", + "block.betterend.hydralux_petal_block_slate_gray": "쥐색 꽃잎 블록", + "block.betterend.hydralux_petal_block_violet": "보라색 꽃잎 블록", + + "block.betterend.smaragdant_crystal_bricks": "스마그댄트 벽돌", + "block.betterend.smaragdant_crystal_bricks_slab": "스마그댄트 벽돌 반 블록", + "block.betterend.smaragdant_crystal_bricks_stairs": "스마그댄트 벽돌 계단", + "block.betterend.smaragdant_crystal_bricks_wall": "스마그댄트 벽돌 담장", + "block.betterend.smaragdant_crystal_pedestal": "스마그댄트 받침대", + "block.betterend.smaragdant_crystal_pillar": "스마그댄트 기둥", + "block.betterend.smaragdant_crystal_polished": "윤나는 스마그댄트", + "block.betterend.smaragdant_crystal_slab": "스마그댄트 반 블록", + "block.betterend.smaragdant_crystal_stairs": "스마그댄트 계단", + "block.betterend.smaragdant_crystal_tiles": "스마그댄트 타일", + "block.betterend.smaragdant_crystal_wall": "스마그댄트 담장", + "message.betterend.anvil_damage": "§c피해", + + "block.betterend.neon_cactus_block": "네온 선인장 블록", + "block.betterend.neon_cactus_slab": "네온 선인장 반 블록", + "block.betterend.neon_cactus_stairs": "네온 선인장 계단", + "biome.betterend.jade_cave": "옥 동굴", + "item.betterend.blossom_berry_jelly": "만발한 열매 젤리", + "item.betterend.aeternium_forged_plate": "에테르늄 단조 판", + "item.betterend.terminite_forged_plate": "터미나이트 단조 판", + "item.betterend.thallasium_forged_plate": "탈라슘 단조 판", + + "attribute.name.generic.blindness_resistance": "실명 저항", + + "tooltip.armor.crystalite_set": "세트 보너스 : 재생 I", + "tooltip.armor.crystalite_chest": "효과 : 굴착 속도 I", + "tooltip.armor.crystalite_boots": "효과 : 신속 I" } diff --git a/src/main/resources/betterend.mixins.client.json b/src/main/resources/betterend.mixins.client.json index be0ed49a..62f3a6eb 100644 --- a/src/main/resources/betterend.mixins.client.json +++ b/src/main/resources/betterend.mixins.client.json @@ -22,7 +22,8 @@ "BiomeColorsMixin", "ModelLoaderMixin", "LocalPlayerMixin", - "CapeLayerMixin" + "CapeLayerMixin", + "ItemStackMixin" ], "injectors": { "defaultRequire": 1