长生道长
本帖最后由 长生道长 于 2022-5-17 05:39 编辑

具体报错如下
  1. java.lang.IllegalArgumentException: No enum constant org.bukkit.Material.LEGACY_DEEPSLATE_IRON_ORE
复制代码
大体意思就是没有LEGACY_DEEPSLATE_IRON_ORE这个枚举
DEEPSLATE_IRON_ORE 这个是1.18.2里面的深层铁矿石



除了这个方法出问题以外,还有以下方法出问题
  1. Material.getMaterial("DEEPSLATE_IRON_ORE");
  2. Material.matchMaterial("DEEPSLATE_IRON_ORE");
复制代码
这些方法获取到的Material 都是AIR 也就是空气


除了这些还有
  1. getBlock().getType()
复制代码
获取新版本的东西也是返回LEGACY_AIR,比如获取深层铜矿就会返回LEGACY_AIR  到底是什么原因呢?



现在我的需求是给指定location的Block设置成指定Type的方块,现在做不到有没有大佬答疑解惑给出解决方案
  1. location.getBlock().setType(Material.valueOf(DEEPSLATE_IRON_ORE));
复制代码




‮tcejorPoiK
本帖最后由 ‮tcejorPoiK 于 2022-5-17 06:18 编辑

plugin.yml里加上api-version属性
比如1.18的插件写上api-version: 1.18

另外实现你的需求的通用写法应该是
  1. location.getBlock().setType(Material.DEEPSLATE_IRON_ORE);
复制代码

teddyxlandlee
所以既然有net.minecraft.world.item.Items,为什么还要来个Material?

长生道长
‮tcejorPoiK 发表于 2022-5-17 06:16
plugin.yml里加上api-version属性
比如1.18的插件写上api-version: 1.18

这个api-version: 1.18 是什么原理,Bukkit更新后哪里看他这种新特性,真的恶心搞了一天就一个这 解决了

第一页 上一页 下一页 最后一页