凌语丶
本帖最后由 凌语丶 于 2022-12-14 19:16 编辑
  1. World endWorld;
  2. for(World w : Bukkit.getWorlds()){
  3. if(Objects.nonNull(w.getEnderDragonBattle())){
  4. endWorld = w;
  5. }
  6. }
  7. DragonBattle dragonBattle = endWorld.getEnderDragonBattle();
  8. dragonBattle.initiateRespawn();
  9. sender.sendMessage(String.format("%s复活仪式启动成功!", ChatColor.GREEN));
复制代码



代码如上
确认endWorld为服务器内末地
代码能正常运行到最后一句

代码不能正常启动末影龙复活仪式 求解


无敌三脚猫
你把个末影水晶放好位置了吗?这个方法要检测水晶到位之后才会开始复活仪式,不然就无事发生
啊不,也不是完全无事发生,会以debug级别打印一句话,服务端控制台没有的话,log里应该有

凌语丶
无敌三脚猫 发表于 2022-12-14 18:53
你把个末影水晶放好位置了吗?这个方法要检测水晶到位之后才会开始复活仪式,不然就无事发生
啊不,也不 ...

是的,我刚刚搜索到了这个
  1. p.getWorld().getBlockAt(0,67,0).setType(Material.DRAGON_EGG);
  2. p.getWorld().spawnEntity(p.getWorld().getBlockAt(new Location(endWorld,0.5,64,3.5)).getLocation(), EntityType.ENDER_CRYSTAL);
  3. p.getWorld().spawnEntity(p.getWorld().getBlockAt(new Location(endWorld,0.5,64,-2.5)).getLocation(), EntityType.ENDER_CRYSTAL);
  4. p.getWorld().spawnEntity(p.getWorld().getBlockAt(new Location(endWorld,-2.5,64,0.5)).getLocation(), EntityType.ENDER_CRYSTAL);
  5. p.getWorld().spawnEntity(p.getWorld().getBlockAt(new Location(endWorld,3.5,64,0.5)).getLocation(), EntityType.ENDER_CRYSTAL);
复制代码

但是 生成的末影水晶不会被判定为玩家放置的(带基岩底座)

但我这里确实是完全无事发生(Paper-1.19.2)

凌语丶
凌语丶 发表于 2022-12-14 19:12
是的,我刚刚搜索到了这个

但是 生成的末影水晶不会被判定为玩家放置的(带基岩底座)

草 Location是“假的”
  1. endWorld.spawnEntity(new Location(endWorld,0.5,64,3.5), EntityType.ENDER_CRYSTAL);
  2. endWorld.spawnEntity(new Location(endWorld,0.5,64,-2.5), EntityType.ENDER_CRYSTAL);
  3. endWorld.spawnEntity(new Location(endWorld,-2.5,64,0.5), EntityType.ENDER_CRYSTAL);
  4. endWorld.spawnEntity(new Location(endWorld,3.5,64,0.5), EntityType.ENDER_CRYSTAL);
复制代码

成功

无敌三脚猫
凌语丶 发表于 2022-12-14 19:12
是的,我刚刚搜索到了这个

但是 生成的末影水晶不会被判定为玩家放置的(带基岩底座)

你这个写法p.getWorld().getBlockAt(new Location(endWorld,0.5,64,3.5)).getLocation()
是不是相当于new Location(endWorld,0,64,3)?那这就放歪了……吧,我没试过,猜的
感觉不如直接写new Location(endWorld,0.5,64,3.5)
末影水晶可以设置为没有底座,但复活末影龙的时候并不在意末影水晶有没有底座

凌语丶
无敌三脚猫 发表于 2022-12-14 19:20
你这个写法p.getWorld().getBlockAt(new Location(endWorld,0.5,64,3.5)).getLocation()
是不是相当于new ...

4# 确实是放歪了
这个写法也不太好 x,z是确定的 但是要检测y

无敌三脚猫
如果用net.minecraft.world.level.dimension.end.a(List<EntityEnderCrystal> var0)来开启复活仪式,放歪也没关系,甚至都不需要4个水晶,1个或者100个都可以,可惜需要反射
在1.19是这个方法,其它版本可能会变

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