Skip to content

Commit 953f0be

Browse files
committed
途中経過
1 parent cfdd428 commit 953f0be

File tree

6 files changed

+53
-36
lines changed

6 files changed

+53
-36
lines changed

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,15 @@ public void onEnable() {
5252
registerCommands();
5353
registerListener();
5454

55-
Bukkit.getWorlds().forEach(world -> world.setGameRule(GameRule.DO_IMMEDIATE_RESPAWN, true));
55+
Bukkit.getWorlds().forEach(world -> {
56+
world.setGameRule(GameRule.DO_IMMEDIATE_RESPAWN, true);
57+
world.setGameRule(GameRule.KEEP_INVENTORY, true);
58+
});
5659

5760
Bukkit.getOnlinePlayers().forEach(player ->
58-
database.ensureUser(PitPlayer.adapt(player)).thenRun(() ->
61+
database.ensureUser(player).thenRun(() ->
5962
database.getPitPlayer(player).join().ifPresent(pitPlayer -> {
60-
if (!PitPlayerManager.isContain(player)) PitPlayerManager.registerUser(pitPlayer);
61-
pitPlayer.showHealth(pitPlayer);
63+
PitPlayerManager.registerUser(pitPlayer);
6264
game.join(pitPlayer);
6365
})
6466
)
@@ -88,7 +90,7 @@ public void onDisable() {
8890
Bukkit.getOnlinePlayers().forEach(player -> {
8991
final PitPlayer pitPlayer = PitPlayerManager.getPitPlayer(player);
9092
game.leave(pitPlayer);
91-
pitPlayer.getBoard().delete();
93+
if (pitPlayer.getBoard() != null) pitPlayer.getBoard().delete();
9294
});
9395
}
9496

src/main/java/com/github/elic0de/thejpspit/database/Database.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ protected Database(TheJpsPit implementor) {
4747

4848
public abstract CompletableFuture<Void> runScript(InputStream inputStream, Map<String, String> replacements);
4949

50-
public abstract CompletableFuture<Void> ensureUser(PitPlayer pitPlayer);
50+
public abstract CompletableFuture<Void> ensureUser(Player Player);
5151

5252
public abstract CompletableFuture<Optional<PitPlayer>> getPitPlayer(Player player);
5353

src/main/java/com/github/elic0de/thejpspit/database/SqLiteDatabase.java

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -113,22 +113,22 @@ public CompletableFuture<Void> runScript(InputStream inputStream, Map<String, St
113113
}
114114

115115
@Override
116-
public CompletableFuture<Void> ensureUser(PitPlayer onlineUser) {
117-
return CompletableFuture.runAsync(() -> getPitPlayer(onlineUser.getPlayer()).thenAccept(optionalUser ->
116+
public CompletableFuture<Void> ensureUser(Player player) {
117+
return CompletableFuture.runAsync(() -> getPitPlayer(player.getPlayer()).thenAccept(optionalUser ->
118118
optionalUser.ifPresentOrElse(existingUser -> {
119-
if (!existingUser.getName().equals(onlineUser.getName())) {
119+
if (!existingUser.getName().equals(player.getName())) {
120120
// Update a player's name if it has changed in the database
121121
try {
122122
try (PreparedStatement statement = getConnection().prepareStatement(formatStatementTables("""
123123
UPDATE `%players_table%`
124124
SET `username`=?
125125
WHERE `uuid`=?"""))) {
126126

127-
statement.setString(1, onlineUser.getName());
128-
statement.setString(2, existingUser.getUniqueId().toString());
127+
statement.setString(1, player.getName());
128+
statement.setString(2, player.getUniqueId().toString());
129129
statement.executeUpdate();
130130
}
131-
getLogger().log(Level.INFO, "Updated " + onlineUser.getName() + "'s name in the database (" + existingUser.getName() + " -> " + onlineUser.getName() + ")");
131+
getLogger().log(Level.INFO, "Updated " + player.getName() + "'s name in the database (" + existingUser.getName() + " -> " + player.getName() + ")");
132132
} catch (SQLException e) {
133133
getLogger().log(Level.SEVERE, "Failed to update a player's name on the database", e);
134134
}
@@ -141,8 +141,8 @@ public CompletableFuture<Void> ensureUser(PitPlayer onlineUser) {
141141
INSERT INTO `%players_table%` (`uuid`,`username`)
142142
VALUES (?,?);"""))) {
143143

144-
statement.setString(1, onlineUser.getUniqueId().toString());
145-
statement.setString(2, onlineUser.getName());
144+
statement.setString(1, player.getUniqueId().toString());
145+
statement.setString(2, player.getName());
146146
statement.executeUpdate();
147147
}
148148
} catch (SQLException e) {
@@ -192,6 +192,7 @@ public CompletableFuture<Void> updateUserData(PitPlayer player) {
192192
statement.setLong(2, player.getDeaths());
193193
statement.setDouble(3, player.getRating());
194194
statement.setDouble(4, player.getXp());
195+
statement.setString(5, player.getUniqueId().toString());
195196
statement.executeUpdate();
196197
}
197198
} catch (SQLException e) {

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

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
import com.github.elic0de.thejpspit.TheJpsPit;
44
import com.github.elic0de.thejpspit.player.PitPlayer;
55
import com.github.elic0de.thejpspit.player.PitPlayerManager;
6+
import fr.mrmicky.fastboard.FastBoard;
67
import org.bukkit.Bukkit;
8+
import org.bukkit.ChatColor;
79
import org.bukkit.entity.Player;
810
import org.bukkit.event.EventHandler;
911
import org.bukkit.event.Listener;
@@ -23,10 +25,13 @@ public EventListener() {
2325

2426
@EventHandler
2527
public void onJoin(PlayerJoinEvent event) {
26-
plugin.getDatabase().ensureUser(PitPlayer.adapt(event.getPlayer())).thenRun(() ->
28+
if (PitPlayerManager.isContain(event.getPlayer())) {
29+
plugin.getGame().join(PitPlayerManager.getPitPlayer(event.getPlayer()));
30+
return;
31+
}
32+
plugin.getDatabase().ensureUser(event.getPlayer()).thenRun(() ->
2733
plugin.getDatabase().getPitPlayer(event.getPlayer()).join().ifPresent(pitPlayer -> {
28-
if (!PitPlayerManager.isContain(event.getPlayer())) PitPlayerManager.registerUser(pitPlayer);
29-
pitPlayer.showHealth(pitPlayer);
34+
PitPlayerManager.registerUser(pitPlayer);
3035
plugin.getGame().join(pitPlayer);
3136
})
3237
);
@@ -36,8 +41,9 @@ public void onJoin(PlayerJoinEvent event) {
3641
public void onQuit(PlayerQuitEvent event) {
3742
final PitPlayer player = PitPlayerManager.getPitPlayer(event.getPlayer());
3843

44+
PitPlayerManager.unregisterUser(player);
3945
plugin.getGame().leave(player);
40-
player.getBoard().delete();
46+
if (player.getBoard() != null) player.getBoard().delete();
4147
}
4248

4349
@EventHandler
@@ -58,6 +64,7 @@ public void onHungerChange(FoodLevelChangeEvent event) {
5864

5965
@EventHandler
6066
public void onDeath(PlayerDeathEvent event) {
67+
if (event.getEntity().getKiller() == null) return;
6168
plugin.getGame().death(PitPlayerManager.getPitPlayer(event.getEntity()));
6269
event.getDrops().clear();
6370
}
@@ -68,17 +75,28 @@ public void onDurability(PlayerItemDamageEvent event) {
6875
}
6976

7077
@EventHandler
71-
public void onDamage(EntityDamageByEntityEvent event) {
78+
public void onFallDamage(EntityDamageEvent event) {
7279
if (event.getEntity() instanceof Player) {
7380
if (event.getCause() == EntityDamageEvent.DamageCause.FALL) {
7481
event.setCancelled(true);
7582
return;
7683
}
7784
}
78-
if (event.getDamager() instanceof Player player) {
79-
final PitPlayer pitPlayer = PitPlayerManager.getPitPlayer(player);
80-
pitPlayer.showHealth(pitPlayer);
85+
}
86+
87+
@EventHandler
88+
public void onDamage(EntityDamageByEntityEvent event) {
89+
if (event.getEntity() instanceof Player vitim) {
90+
if (event.getDamager() instanceof Player) {
91+
final PitPlayer pitPlayer = PitPlayerManager.getPitPlayer(vitim);
92+
if (event.getCause() == EntityDamageEvent.DamageCause.FALL) {
93+
event.setCancelled(true);
94+
return;
95+
}
96+
pitPlayer.showHealth(pitPlayer);
97+
}
8198
}
99+
82100
}
83101

84102
@EventHandler

src/main/java/com/github/elic0de/thejpspit/player/PitPlayer.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,14 @@ public PitPlayer(Player player, long kills, long deaths, double rating, double x
5454
this.board.updateTitle(ChatColor.translateAlternateColorCodes('&', "&eTHE JPS PIT"));
5555
}
5656

57-
public static PitPlayer adapt(Player player) {
58-
return new PitPlayer(player);
59-
}
60-
6157
public void addItem() {
6258
final PlayerInventory inventory = player.getInventory();
6359

6460
inventory.setArmorContents(ARMOR);
6561

6662
for (ItemStack item : INVENTORY) {
6763
if (inventory.contains(item)) continue;
68-
inventory.addItem(INVENTORY);
64+
inventory.addItem(item);
6965
}
7066
player.updateInventory();
7167
}
@@ -80,13 +76,13 @@ public void sendMessage(String message) {
8076

8177
public void sendStatus() {
8278
Stream.of(
83-
"+ -----< %playerName% >----- +" +
84-
"Kills >> %kills%",
85-
"Deaths >> %deaths%",
86-
"KillRate >> %rating%%",
87-
"RateRank >> %%位",
88-
"KillRank >> %%位",
89-
"DeathRank >> %%位"
79+
"+ -----< %playerName% >----- +",
80+
"Kills >> &e%kills%",
81+
"Deaths >> &c%deaths%",
82+
"KillRate >> &a%rating%%",
83+
"RateRank >> &e%%位",
84+
"KillRank >> &e%%位",
85+
"DeathRank >> &e%%位"
9086
).map(s ->
9187
s.replaceAll("%playerName%", getName())
9288
.replaceAll("%kills%", kills + "")
@@ -108,7 +104,7 @@ public String getName() {
108104
}
109105

110106
public PitPlayer getKiller() {
111-
return adapt(player.getKiller());
107+
return PitPlayerManager.getPitPlayer(player.getKiller());
112108
}
113109

114110
public long getKills() {

src/main/java/com/github/elic0de/thejpspit/util/ShowHealth.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public static void showHealth(PitPlayer pitPlayer, PitPlayer targetPit) {
5050

5151
pitPlayer.getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR,
5252
new ComponentBuilder(net.md_5.bungee.api.ChatColor.translateAlternateColorCodes(
53-
'&', pitPlayer.getPlayer().getDisplayName() + style)
53+
'&', pitPlayer.getPlayer().getDisplayName() + " " + style)
5454
).create()
5555
);
5656
}

0 commit comments

Comments
 (0)