Skip to content
This repository was archived by the owner on Apr 9, 2026. It is now read-only.

Commit af1ca78

Browse files
committed
1.0.1 Release Fix!
1 parent 7252744 commit af1ca78

10 files changed

Lines changed: 111 additions & 23 deletions

File tree

.idea/.gitignore

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/encodings.xml

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 14 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>com.koopa</groupId>
88
<artifactId>lifestealcore</artifactId>
9-
<version>1.0.0</version>
9+
<version>1.0.1</version>
1010
<packaging>jar</packaging>
1111

1212
<name>LifeStealCore</name>

spigot/url

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
TEST
1+
https://www.spigotmc.org/resources/lifesteal-core-1-13-1-20-4.121599/

src/main/java/com/koopa/lifestealcore/listeners/PlayerListener.java

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,27 +24,33 @@ public PlayerListener(LifeStealCore plugin) {
2424
@EventHandler
2525
public void onPlayerJoin(PlayerJoinEvent event) {
2626
Player player = event.getPlayer();
27+
// Load their hearts from hearts.yml and update their health
2728
plugin.getHeartManager().updatePlayerMaxHealth(player);
2829
}
2930

3031
@EventHandler
3132
public void onPlayerDeath(PlayerDeathEvent event) {
3233
Player victim = event.getEntity();
3334
Player killer = victim.getKiller();
35+
int victimHearts = plugin.getHeartManager().getPlayerHearts(victim);
3436

37+
// Check if this is their last heart
38+
if (victimHearts <= 1) {
39+
// Ban them but keep minimum health for game mechanics
40+
plugin.getBanManager().banPlayer(victim, killer); // Ban with dramatic effect
41+
plugin.getHeartManager().setPlayerHearts(victim, 0); // This won't set health to 0
42+
return;
43+
}
44+
45+
// Only lose hearts to player kills
3546
if (killer != null && killer != victim) {
36-
int victimHearts = plugin.getHeartManager().getPlayerHearts(victim);
47+
// PvP death - transfer heart
3748
int killerHearts = plugin.getHeartManager().getPlayerHearts(killer);
38-
39-
if (victimHearts > plugin.getConfig().getInt("settings.min-hearts")) {
40-
plugin.getHeartManager().setPlayerHearts(victim, victimHearts - 1);
41-
plugin.getHeartManager().setPlayerHearts(killer, killerHearts + 1);
42-
killer.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 100, 1));
43-
}
49+
plugin.getHeartManager().setPlayerHearts(victim, victimHearts - 1);
50+
plugin.getHeartManager().setPlayerHearts(killer, killerHearts + 1);
51+
killer.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 100, 1));
4452
}
45-
46-
// Ban the player
47-
plugin.getBanManager().banPlayer(victim);
53+
// Non-PvP deaths don't lose hearts unless it was their last heart
4854
}
4955

5056
@EventHandler

src/main/java/com/koopa/lifestealcore/managers/BanManager.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -125,15 +125,32 @@ public void banPlayer(Player player, Player killer) {
125125
Bukkit.broadcastMessage(MessageUtils.color("&c&lBANISHED TO THE SHADOW REALM"));
126126
Bukkit.broadcastMessage("");
127127

128-
// Ban the player
128+
// Add to banned players list
129+
bannedPlayers.put(player.getUniqueId(), true);
130+
banData.set(player.getUniqueId().toString() + ".name", player.getName());
131+
banData.set(player.getUniqueId().toString() + ".banTime", System.currentTimeMillis());
132+
saveBanData();
133+
134+
// Ban and kick the player
129135
Bukkit.getScheduler().runTaskLater(plugin, () -> {
136+
// Ban the player
137+
Bukkit.getBanList(BanList.Type.NAME).addBan(
138+
player.getName(),
139+
MessageUtils.color(
140+
"&c&lYOU HAVE BEEN BANISHED!\n\n" +
141+
"&7You have lost all your hearts...\n" +
142+
"&7Other players must use a Revival Beacon to bring you back!"
143+
),
144+
null, // No expiry
145+
"LifeSteal System"
146+
);
147+
148+
// Kick them with the message
130149
player.kickPlayer(MessageUtils.color(
131150
"&c&lYOU HAVE BEEN BANISHED!\n\n" +
132151
"&7You have lost all your hearts...\n" +
133-
"&7Find a Revival Beacon to return!"
152+
"&7Other players must use a Revival Beacon to bring you back!"
134153
));
135-
plugin.getConfig().set("banned-players." + player.getUniqueId(), true);
136-
plugin.saveConfig();
137154
}, 2L); // Small delay for dramatic effect
138155
}
139156

src/main/java/com/koopa/lifestealcore/managers/HeartManager.java

Lines changed: 41 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,17 @@ private void loadData() {
3636
}
3737
}
3838
data = YamlConfiguration.loadConfiguration(dataFile);
39+
40+
// Load all saved hearts into memory
41+
for (String uuidString : data.getKeys(false)) {
42+
try {
43+
UUID uuid = UUID.fromString(uuidString);
44+
int hearts = data.getInt(uuidString);
45+
playerHearts.put(uuid, hearts);
46+
} catch (IllegalArgumentException e) {
47+
plugin.getLogger().warning("Invalid UUID in hearts.yml: " + uuidString);
48+
}
49+
}
3950
}
4051

4152
public void saveAllData() {
@@ -54,18 +65,43 @@ public void saveAllData() {
5465
}
5566

5667
public int getPlayerHearts(Player player) {
57-
return playerHearts.getOrDefault(player.getUniqueId(),
58-
plugin.getConfig().getInt("settings.default-hearts"));
68+
UUID uuid = player.getUniqueId();
69+
if (!playerHearts.containsKey(uuid)) {
70+
// If player doesn't have hearts saved, give them default hearts
71+
int defaultHearts = plugin.getConfig().getInt("settings.default-hearts");
72+
playerHearts.put(uuid, defaultHearts);
73+
savePlayerHearts(uuid);
74+
}
75+
return playerHearts.get(uuid);
5976
}
6077

6178
public void setPlayerHearts(Player player, int hearts) {
62-
playerHearts.put(player.getUniqueId(), hearts);
63-
updatePlayerMaxHealth(player);
79+
UUID uuid = player.getUniqueId();
80+
// Ensure minimum of 1 health for game mechanics
81+
hearts = Math.max(0, hearts);
82+
playerHearts.put(uuid, hearts);
83+
savePlayerHearts(uuid);
84+
85+
if (hearts > 0) {
86+
updatePlayerMaxHealth(player);
87+
}
88+
}
89+
90+
private void savePlayerHearts(UUID uuid) {
91+
// Save to hearts.yml immediately when changed
92+
data.set(uuid.toString(), playerHearts.get(uuid));
93+
try {
94+
data.save(dataFile);
95+
} catch (Exception e) {
96+
plugin.getLogger().severe("Could not save hearts data!");
97+
e.printStackTrace();
98+
}
6499
}
65100

66101
public void updatePlayerMaxHealth(Player player) {
67102
int hearts = getPlayerHearts(player);
68-
player.setMaxHealth(hearts * 2);
103+
// Minimum of 1 health (0.5 hearts) for the game
104+
player.setMaxHealth(Math.max(1, hearts * 2));
69105
}
70106

71107
public void setHearts(UUID uuid, int hearts) {

src/main/resources/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: LifeStealCore
2-
version: '1.0.0'
2+
version: '1.0.1'
33
main: com.koopa.lifestealcore.LifeStealCore
44
api-version: '1.13'
55
author: Koopa

version/versioncheck

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.0
1+
1.0.1

0 commit comments

Comments
 (0)