マインクラフト非公式フォーラム

本フォーラムでは多彩なサービスを提供しています。

利用方法は「Wiki」より確認できます。

ぜひご登録をお願いいたします!

Spigot 楯を円形にスポーンさせてみる

shields.jpg
三角関数とStream APIのおかげで毎日が幸せです!
Java:
IntStream.range(0, 6)
    .mapToObj(
        i -> new AbstractMap.SimpleEntry<>(i, world.spawn(player.getLocation(), ArmorStand.class, armorStand -> {
          armorStand.setVisible(false); //アーマースタンド本体を不可視化
          armorStand.setInvulnerable(true); //アーマースタンドを無敵化
          armorStand.addEquipmentLock(EquipmentSlot.HAND, LockType.REMOVING_OR_CHANGING); //右クリックでアイテムを取得できないように
          armorStand.getEquipment().setItemInMainHand(new ItemStack(Material.SHIELD)); //右腕に楯をセット
          armorStand.setRightArmPose(new EulerAngle(300, 0, 0)); //腕の角度を調整、楯を構える角度に
          armorStand.teleport(this.calculate(player.getLocation(), i, 0)); //円周上に配置
        })));

このコード内に出てくるthis.calculate(Location,int,int)の中身は以下になります。

Java:
private Location calculate(Location origin, int i, int rotation) {
  float radians = (float) Math.toRadians(i * 60 + rotation);
  float x = MathHelper.cos(radians);
  float z = MathHelper.sin(radians);
  Location location = origin.clone().add(x, 0, z); 
  location.setYaw(180 + i * 60 + rotation); //楯が円周の外側を向くように調整

  return location;
}
 
Top