mirror of
https://github.com/KoopaCode/LifeSteal-Core.git
synced 2025-03-31 13:57:33 +00:00
1.0.1 Release Fix!
This commit is contained in:
parent
725274453e
commit
af1ca7831d
8
.idea/.gitignore
generated
vendored
Normal file
8
.idea/.gitignore
generated
vendored
Normal 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
7
.idea/encodings.xml
generated
Normal 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
14
.idea/misc.xml
generated
Normal 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>
|
2
pom.xml
2
pom.xml
@ -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>
|
||||
|
@ -1 +1 @@
|
||||
TEST
|
||||
https://www.spigotmc.org/resources/lifesteal-core-1-13-1-20-4.121599/
|
@ -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
|
||||
|
@ -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
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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
|
||||
|
@ -1 +1 @@
|
||||
1.0.0
|
||||
1.0.1
|
Loading…
x
Reference in New Issue
Block a user