User Tools

Site Tools


zh_cn:tutorial:enchantments

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
zh_cn:tutorial:enchantments [2021/09/29 16:20] – [创建独特的附魔类] breakicezh_cn:tutorial:enchantments [2024/08/23 13:53] (current) – [在 1.21 版本之间添加附魔] solidblock
Line 1: Line 1:
-===== 添加附魔 =====+====== 添加附魔 ====== 
 + 
 +===== 自 1.21 版本之后添加附魔 ===== 
 + 
 +从 1.21 开始,附魔都是数据驱动的,这意味着你需要在数据包中定义,而不是在代码中。详情请见 [[https://zh.minecraft.wiki/w/魔咒数据格式|Minecraft Wiki 相关页面]]。 
 + 
 +要在代码中使用这些附魔,只需要存在附魔的 ''RegistryKey'' 对象: 
 +<code java TutorialEnchantments> 
 +public final class TutorialEnchantments { 
 +  public static final RegistryKey<Enchantment> FROST = of("frost"); 
 + 
 +  private static RegistryKey<Enchantment> of(String name) { 
 +    return RegistryKey.of(RegistryKeys.ENCHANTMENT, Identifier.of("tutorial", name)); 
 +  } 
 + 
 +  public static void initialize() { 
 +  } 
 +
 +</code> 
 + 
 +记得在你的 ''ModInitializer'' 中引用 ''initialize'' 方法。 
 +<code java ExampleMod> 
 +public class ExampleMod implements ModInitializer { 
 +  // [...] 
 + 
 +  @Override 
 +  public void onInitialize() { 
 +    // [...] 
 +    TutorialEnchantments.initialize(); 
 +  } 
 +
 +</code> 
 + 
 +要为附魔添加翻译的名称,请看本教程底部。 
 + 
 +===== 在 1.21 版本之前添加附魔 ===== 
 +:!: 此部分教程仅适用于旧的 Minecraft 版本。
  
 如果你想添加属于你的模组的附魔,你需要做以下事情: 如果你想添加属于你的模组的附魔,你需要做以下事情:
-  * 创建一个继承于 ''Enchantment'' 或者已经存在的任意一个附魔类 (比如 ''DamageEnchantment''的类+  * 创建一个继承于 ''Enchantment'' 或者已经存在的任意一个附魔类比如 ''DamageEnchantment''的类
   * 注册你的附魔   * 注册你的附魔
   * 如果需要,添加自定义功能或机制   * 如果需要,添加自定义功能或机制
Line 55: Line 91:
 <code java [enable_line_numbers="false"]> <code java [enable_line_numbers="false"]>
 public class EnchantingExample implements ModInitializer { public class EnchantingExample implements ModInitializer {
- +    public static Enchantment FROST = new FrostEnchantment();
-    private static Enchantment FROST = Registry.register( +
-            Registry.ENCHANTMENT, +
-            new Identifier("tutorial", "frost"), +
-            new FrostEnchantment(+
-    );+
  
     @Override     @Override
     public void onInitialize() {     public void onInitialize() {
 +        Registry.register(Registries.ENCHANTMENT, new Identifier("tutorial", "frost"))
     }     }
 } }
Line 71: Line 102:
 这会在命名空间 ''tutorial:frost'' 下注册我们的附魔。所有非宝藏附魔都可以在附魔台中获得,包括你注册的附魔。 这会在命名空间 ''tutorial:frost'' 下注册我们的附魔。所有非宝藏附魔都可以在附魔台中获得,包括你注册的附魔。
  
-==== 添加翻译 & 测试 ==== +===== 添加翻译 ===== 
-你还是需要像往常一样添加翻译。 回到 [[tutorial:lang|模组语言文件]] 一节并且添加内容:+=) 此部分在 1.21 之后和之前的版本都有效
  
-<code json [enable_line_numbers="false"]>+你还是需要像往常一样添加翻译。回到[[tutorial:lang|模组语言文件]]一节并且添加内容: 
 + 
 +<code javascript resources/data/tutorial/lang/en_us.json>
 { {
     "enchantment.tutorial.frost": "Frost"     "enchantment.tutorial.frost": "Frost"
 +}
 +</code>
 +<code javascript resources/data/tutorial/lang/zh_cn.json>
 +{
 +    "enchantment.tutorial.frost": "霜"
 } }
 </code> </code>
  
-当你在游戏内, [[https://i.imgur.com/31nFl2H.png|你的主手装备应当能被附魔并且可用。]]+当你在游戏内,[[https://i.imgur.com/31nFl2H.png|你的主手装备应当能被附魔并且可用。]]
  
  
  
  
zh_cn/tutorial/enchantments.1632932431.txt.gz · Last modified: 2021/09/29 16:20 by breakice