本帖最后由 凌语丶 于 2022-12-14 19:16 编辑
复制代码
代码如上
确认endWorld为服务器内末地
代码能正常运行到最后一句
代码不能正常启动末影龙复活仪式 求解
- World endWorld;
- for(World w : Bukkit.getWorlds()){
- if(Objects.nonNull(w.getEnderDragonBattle())){
- endWorld = w;
- }
- }
- DragonBattle dragonBattle = endWorld.getEnderDragonBattle();
- dragonBattle.initiateRespawn();
- sender.sendMessage(String.format("%s复活仪式启动成功!", ChatColor.GREEN));
代码如上
确认endWorld为服务器内末地
代码能正常运行到最后一句
代码不能正常启动末影龙复活仪式 求解
你把个末影水晶放好位置了吗?这个方法要检测水晶到位之后才会开始复活仪式,不然就无事发生
啊不,也不是完全无事发生,会以debug级别打印一句话,服务端控制台没有的话,log里应该有
啊不,也不是完全无事发生,会以debug级别打印一句话,服务端控制台没有的话,log里应该有
无敌三脚猫 发表于 2022-12-14 18:53
你把个末影水晶放好位置了吗?这个方法要检测水晶到位之后才会开始复活仪式,不然就无事发生
啊不,也不 ...
是的,我刚刚搜索到了这个
- p.getWorld().getBlockAt(0,67,0).setType(Material.DRAGON_EGG);
- p.getWorld().spawnEntity(p.getWorld().getBlockAt(new Location(endWorld,0.5,64,3.5)).getLocation(), EntityType.ENDER_CRYSTAL);
- p.getWorld().spawnEntity(p.getWorld().getBlockAt(new Location(endWorld,0.5,64,-2.5)).getLocation(), EntityType.ENDER_CRYSTAL);
- p.getWorld().spawnEntity(p.getWorld().getBlockAt(new Location(endWorld,-2.5,64,0.5)).getLocation(), EntityType.ENDER_CRYSTAL);
- 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是“假的”
- endWorld.spawnEntity(new Location(endWorld,0.5,64,3.5), EntityType.ENDER_CRYSTAL);
- endWorld.spawnEntity(new Location(endWorld,0.5,64,-2.5), EntityType.ENDER_CRYSTAL);
- endWorld.spawnEntity(new Location(endWorld,-2.5,64,0.5), EntityType.ENDER_CRYSTAL);
- 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是这个方法,其它版本可能会变
在1.19是这个方法,其它版本可能会变