Skip to content

Commit 56c25aa

Browse files
committed
置いたブロックを15秒で消えるように
1 parent 0e58920 commit 56c25aa

3 files changed

Lines changed: 66 additions & 4 deletions

File tree

src/main/java/com/github/elic0de/thejpspit/spigot/TheJpsPit.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import com.github.elic0de.thejpspit.spigot.item.items.ItemDiamondChestPlate;
1717
import com.github.elic0de.thejpspit.spigot.item.items.ItemDiamondSword;
1818
import com.github.elic0de.thejpspit.spigot.item.items.ItemObsidian;
19+
import com.github.elic0de.thejpspit.spigot.listener.BlockPlaceListener;
1920
import com.github.elic0de.thejpspit.spigot.listener.CombatTagger;
2021
import com.github.elic0de.thejpspit.spigot.listener.EventListener;
2122
import com.github.elic0de.thejpspit.spigot.network.PluginMessageReceiver;
@@ -103,7 +104,7 @@ public void onEnable() {
103104
.registerOutgoingPluginChannel(this, PluginMessageReceiver.BUNGEE_CHANNEL_ID);
104105

105106
registerCommands();
106-
registerListener();
107+
registerListeners();
107108
registerHooks();
108109

109110
loadHooks();
@@ -168,9 +169,10 @@ private void registerCommands() {
168169
commandManager.registerCommand(new SpawnCommand());
169170
}
170171

171-
private void registerListener() {
172+
private void registerListeners() {
172173
new EventListener();
173174
new CombatTagger();
175+
new BlockPlaceListener();
174176
}
175177

176178
private void registerHooks() {
@@ -199,9 +201,11 @@ public void onDisable() {
199201
database.terminate();
200202
}
201203
game.getTask().stop();
202-
203204
queueTask.stop();
204205

206+
// 置かれたブロックを削除
207+
BlockPlaceListener.removeBlocks();
208+
205209
getServer().getMessenger().unregisterOutgoingPluginChannel(this);
206210
getServer().getMessenger().unregisterIncomingPluginChannel(this);
207211

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.github.elic0de.thejpspit.spigot.listener;
2+
3+
import com.github.elic0de.thejpspit.spigot.TheJpsPit;
4+
import java.util.HashSet;
5+
import java.util.Set;
6+
import org.bukkit.Bukkit;
7+
import org.bukkit.Effect;
8+
import org.bukkit.GameMode;
9+
import org.bukkit.Location;
10+
import org.bukkit.Material;
11+
import org.bukkit.block.Block;
12+
import org.bukkit.entity.Player;
13+
import org.bukkit.event.EventHandler;
14+
import org.bukkit.event.Listener;
15+
import org.bukkit.event.block.BlockPlaceEvent;
16+
17+
public class BlockPlaceListener implements Listener {
18+
19+
private final TheJpsPit pit;
20+
21+
private static final Set<Location> water = new HashSet<>();
22+
private static final Set<Location> blocksPlaced = new HashSet<>();
23+
24+
public BlockPlaceListener() {
25+
this.pit = TheJpsPit.getInstance();
26+
Bukkit.getPluginManager().registerEvents(this, pit);
27+
}
28+
29+
@EventHandler
30+
public void on(BlockPlaceEvent event) {
31+
final Player player = event.getPlayer();
32+
if (player.getGameMode() == GameMode.CREATIVE) return;
33+
final Block placedBlock = event.getBlockPlaced();
34+
final Location placedBlockLocation = placedBlock.getLocation();
35+
36+
if(event.getBlockReplacedState().getType() == Material.WATER) water.add(placedBlock.getLocation());
37+
38+
blocksPlaced.add(placedBlockLocation);
39+
40+
pit.getServer().getScheduler().runTaskLater(pit, runnable -> {
41+
if (water.contains(placedBlockLocation)) {
42+
placedBlock.setType(Material.WATER);
43+
} else {
44+
placedBlock.setType(Material.AIR);
45+
}
46+
blocksPlaced.remove(placedBlockLocation);
47+
}, (15 * 20));
48+
}
49+
50+
public static void removeBlocks() {
51+
for (Location location : blocksPlaced) {
52+
location.getBlock().setType(Material.AIR);
53+
}
54+
for (Location location : water) {
55+
location.getBlock().setType(Material.WATER);
56+
}
57+
}
58+
}

src/main/java/com/github/elic0de/thejpspit/spigot/listener/EventListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import org.bukkit.event.EventHandler;
1717
import org.bukkit.event.Listener;
1818
import org.bukkit.event.block.Action;
19+
import org.bukkit.event.block.BlockPlaceEvent;
1920
import org.bukkit.event.entity.*;
2021
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
2122
import org.bukkit.event.player.*;
@@ -91,7 +92,6 @@ public void onConsume(PlayerItemConsumeEvent event) {
9192
}
9293
}
9394

94-
9595
@EventHandler
9696
public void onHungerChange(FoodLevelChangeEvent event) {
9797
event.setCancelled(true);

0 commit comments

Comments
 (0)