1.0.1 Release Fix!

This commit is contained in:
Koopa 2024-12-30 19:52:57 -05:00
parent 725274453e
commit af1ca7831d
10 changed files with 112 additions and 24 deletions

8
.idea/.gitignore generated vendored Normal file
View File

@ -0,0 +1,8 @@
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml

7
.idea/encodings.xml generated Normal file
View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
</component>
</project>

14
.idea/misc.xml generated Normal file
View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -6,7 +6,7 @@
<groupId>com.koopa</groupId>
<artifactId>lifestealcore</artifactId>
<version>1.0.0</version>
<version>1.0.1</version>
<packaging>jar</packaging>
<name>LifeStealCore</name>

View File

@ -1 +1 @@
TEST
https://www.spigotmc.org/resources/lifesteal-core-1-13-1-20-4.121599/

View File

@ -24,6 +24,7 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
// Load their hearts from hearts.yml and update their health
plugin.getHeartManager().updatePlayerMaxHealth(player);
}
@ -31,20 +32,25 @@ public class PlayerListener implements Listener {
public void onPlayerDeath(PlayerDeathEvent event) {
Player victim = event.getEntity();
Player killer = victim.getKiller();
int victimHearts = plugin.getHeartManager().getPlayerHearts(victim);
if (killer != null && killer != victim) {
int victimHearts = plugin.getHeartManager().getPlayerHearts(victim);
int killerHearts = plugin.getHeartManager().getPlayerHearts(killer);
if (victimHearts > plugin.getConfig().getInt("settings.min-hearts")) {
plugin.getHeartManager().setPlayerHearts(victim, victimHearts - 1);
plugin.getHeartManager().setPlayerHearts(killer, killerHearts + 1);
killer.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 100, 1));
}
// Check if this is their last heart
if (victimHearts <= 1) {
// Ban them but keep minimum health for game mechanics
plugin.getBanManager().banPlayer(victim, killer); // Ban with dramatic effect
plugin.getHeartManager().setPlayerHearts(victim, 0); // This won't set health to 0
return;
}
// Ban the player
plugin.getBanManager().banPlayer(victim);
// Only lose hearts to player kills
if (killer != null && killer != victim) {
// PvP death - transfer heart
int killerHearts = plugin.getHeartManager().getPlayerHearts(killer);
plugin.getHeartManager().setPlayerHearts(victim, victimHearts - 1);
plugin.getHeartManager().setPlayerHearts(killer, killerHearts + 1);
killer.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 100, 1));
}
// Non-PvP deaths don't lose hearts unless it was their last heart
}
@EventHandler

View File

@ -125,15 +125,32 @@ public class BanManager {
Bukkit.broadcastMessage(MessageUtils.color("&c&lBANISHED TO THE SHADOW REALM"));
Bukkit.broadcastMessage("");
// Ban the player
// Add to banned players list
bannedPlayers.put(player.getUniqueId(), true);
banData.set(player.getUniqueId().toString() + ".name", player.getName());
banData.set(player.getUniqueId().toString() + ".banTime", System.currentTimeMillis());
saveBanData();
// Ban and kick the player
Bukkit.getScheduler().runTaskLater(plugin, () -> {
// Ban the player
Bukkit.getBanList(BanList.Type.NAME).addBan(
player.getName(),
MessageUtils.color(
"&c&lYOU HAVE BEEN BANISHED!\n\n" +
"&7You have lost all your hearts...\n" +
"&7Other players must use a Revival Beacon to bring you back!"
),
null, // No expiry
"LifeSteal System"
);
// Kick them with the message
player.kickPlayer(MessageUtils.color(
"&c&lYOU HAVE BEEN BANISHED!\n\n" +
"&7You have lost all your hearts...\n" +
"&7Find a Revival Beacon to return!"
"&7Other players must use a Revival Beacon to bring you back!"
));
plugin.getConfig().set("banned-players." + player.getUniqueId(), true);
plugin.saveConfig();
}, 2L); // Small delay for dramatic effect
}

View File

@ -36,6 +36,17 @@ public class HeartManager {
}
}
data = YamlConfiguration.loadConfiguration(dataFile);
// Load all saved hearts into memory
for (String uuidString : data.getKeys(false)) {
try {
UUID uuid = UUID.fromString(uuidString);
int hearts = data.getInt(uuidString);
playerHearts.put(uuid, hearts);
} catch (IllegalArgumentException e) {
plugin.getLogger().warning("Invalid UUID in hearts.yml: " + uuidString);
}
}
}
public void saveAllData() {
@ -54,18 +65,43 @@ public class HeartManager {
}
public int getPlayerHearts(Player player) {
return playerHearts.getOrDefault(player.getUniqueId(),
plugin.getConfig().getInt("settings.default-hearts"));
UUID uuid = player.getUniqueId();
if (!playerHearts.containsKey(uuid)) {
// If player doesn't have hearts saved, give them default hearts
int defaultHearts = plugin.getConfig().getInt("settings.default-hearts");
playerHearts.put(uuid, defaultHearts);
savePlayerHearts(uuid);
}
return playerHearts.get(uuid);
}
public void setPlayerHearts(Player player, int hearts) {
playerHearts.put(player.getUniqueId(), hearts);
updatePlayerMaxHealth(player);
UUID uuid = player.getUniqueId();
// Ensure minimum of 1 health for game mechanics
hearts = Math.max(0, hearts);
playerHearts.put(uuid, hearts);
savePlayerHearts(uuid);
if (hearts > 0) {
updatePlayerMaxHealth(player);
}
}
private void savePlayerHearts(UUID uuid) {
// Save to hearts.yml immediately when changed
data.set(uuid.toString(), playerHearts.get(uuid));
try {
data.save(dataFile);
} catch (Exception e) {
plugin.getLogger().severe("Could not save hearts data!");
e.printStackTrace();
}
}
public void updatePlayerMaxHealth(Player player) {
int hearts = getPlayerHearts(player);
player.setMaxHealth(hearts * 2);
// Minimum of 1 health (0.5 hearts) for the game
player.setMaxHealth(Math.max(1, hearts * 2));
}
public void setHearts(UUID uuid, int hearts) {

View File

@ -1,5 +1,5 @@
name: LifeStealCore
version: '1.0.0'
version: '1.0.1'
main: com.koopa.lifestealcore.LifeStealCore
api-version: '1.13'
author: Koopa

View File

@ -1 +1 @@
1.0.0
1.0.1