Skip to content

Commit 4c0f66e

Browse files
committed
fix glidingをやめたらエリトラを消すようにして対応
1 parent a6c624f commit 4c0f66e

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

src/main/java/com/github/elic0de/hungergames/listener/EventListener.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@
2121
import org.bukkit.entity.Entity;
2222
import org.bukkit.entity.Player;
2323
import org.bukkit.event.EventHandler;
24+
import org.bukkit.event.EventPriority;
2425
import org.bukkit.event.Listener;
2526
import org.bukkit.event.block.Action;
2627
import org.bukkit.event.block.BlockBreakEvent;
2728
import org.bukkit.event.entity.EntityDamageByEntityEvent;
2829
import org.bukkit.event.entity.EntityDamageEvent;
30+
import org.bukkit.event.entity.EntityToggleGlideEvent;
2931
import org.bukkit.event.entity.PlayerDeathEvent;
3032
import org.bukkit.event.player.*;
3133
import org.bukkit.inventory.ItemStack;
@@ -101,29 +103,39 @@ private void onDismount(EntityDismountEvent event) {
101103
}
102104

103105
@EventHandler
104-
private void onMove(PlayerMoveEvent event) {
105-
final Player player = event.getPlayer();
106-
if (event.getFrom().getBlock().getRelative(BlockFace.DOWN).getType() == Material.AIR && event.getTo().getBlock().getRelative(BlockFace.DOWN).getType() != Material.AIR) {
106+
private void onMove(EntityToggleGlideEvent event) {
107+
if (event.getEntity() instanceof Player player) {
108+
if (event.isGliding()) return;
107109
final ItemStack chestPlate = player.getInventory().getChestplate();
108110
if (chestPlate == null) return;
109111
if (chestPlate.getType() == Material.ELYTRA) {
110112
player.getInventory().setChestplate(null);
111113
player.getInventory().addItem(ItemBuilder.of(Material.BREAD).amount(20).build());
112114
player.getPassengers().forEach(player::removePassenger);
115+
113116
}
114117
}
115118
}
116119

117120
@EventHandler
118121
private void onDamage(EntityDamageEvent event) {
119-
if (event.getEntity() instanceof Player) {
122+
if (event.getEntity() instanceof Player player) {
120123
if (game.getPhase() instanceof WaitingPhase) {
121124
event.setCancelled(true);
122125
return;
123126
}
124127

125128
switch (event.getCause()) {
126-
case FALL, FLY_INTO_WALL -> event.setCancelled(true);
129+
case FALL, FLY_INTO_WALL -> {
130+
final ItemStack chestPlate = player.getInventory().getChestplate();
131+
if (chestPlate == null) return;
132+
if (chestPlate.getType() == Material.ELYTRA) {
133+
player.getInventory().setChestplate(null);
134+
player.getInventory().addItem(ItemBuilder.of(Material.BREAD).amount(20).build());
135+
player.getPassengers().forEach(player::removePassenger);
136+
event.setCancelled(true);
137+
}
138+
}
127139
}
128140
}
129141
}

0 commit comments

Comments
 (0)