Created
May 4, 2022 01:30
-
-
Save gagedevs/d69d5a32e88cb384c7e3921452821e98 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package me.Gage.lifesteal; | |
import java.util.HashMap; | |
import java.util.List; | |
import java.util.Map; | |
import org.bukkit.Bukkit; | |
import org.bukkit.ChatColor; | |
import org.bukkit.command.Command; | |
import org.bukkit.command.CommandSender; | |
import org.bukkit.entity.EntityType; | |
import org.bukkit.entity.Player; | |
import org.bukkit.event.EventHandler; | |
import org.bukkit.event.Listener; | |
import org.bukkit.event.entity.EntityDeathEvent; | |
import org.bukkit.event.entity.PlayerDeathEvent; | |
import org.bukkit.event.player.PlayerJoinEvent; | |
import org.bukkit.plugin.java.JavaPlugin; | |
public class Main extends JavaPlugin implements Listener{ | |
public String version = this.getConfig().getString("version"); | |
public HashMap<Player, Integer> hearts = new HashMap<Player, Integer>(); | |
public void onEnable() { | |
Bukkit.getConsoleSender().sendMessage("LifeSteal Successfully Enabled.."); | |
this.saveDefaultConfig(); | |
this.getServer().getPluginManager().registerEvents(this, this); | |
this.restoreHealth(); | |
} | |
public void onDisable() { | |
Bukkit.getConsoleSender().sendMessage("LifeSteal Successfully Disabled."); | |
if(!(hearts.isEmpty())) { | |
this.saveHealth(); | |
} | |
} | |
public void saveHealth() { | |
for(HashMap.Entry<Player, Integer> entry : hearts.entrySet()) { | |
this.getConfig().set("data." + entry.getKey(), entry.getValue()); | |
this.saveConfig(); | |
} | |
} | |
public void restoreHealth() { | |
this.getConfig().getConfigurationSection("data").getKeys(false).forEach(key -> { | |
@SuppressWarnings("unchecked") | |
Integer[] content = ((List<Integer>) this.getConfig().get("data." + key)).toArray(new Integer[0]); | |
Player f = Bukkit.getServer().getPlayer(key); | |
hearts.put(f, content); | |
}); | |
} | |
@EventHandler | |
public void onFirstJoin(PlayerJoinEvent e) { | |
hearts.put(e.getPlayer(), 20); | |
} | |
public boolean onCommand(CommandSender sender, Command cmd, String[] args) { | |
if(cmd.getName().equalsIgnoreCase("lifesteal")) { | |
if(!(sender instanceof Player)) { | |
sender.sendMessage("LifeSteal Version:" + version); | |
return true; | |
} | |
if(args.length == 0) { | |
//ver | |
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cLifeSteal Version: &4" + version)); | |
} | |
if(args.length > 0) { | |
if(args[0].equalsIgnoreCase("reload")) { | |
this.reloadConfig(); | |
sender.sendMessage(ChatColor.GOLD + "LifeSteal Config Reloaded."); | |
} | |
} | |
} | |
return false; | |
} | |
@EventHandler | |
public boolean onEntityDeath(EntityDeathEvent e) { | |
if(e.getEntityType() == EntityType.PLAYER) { | |
Player killer = e.getEntity().getKiller(); | |
Player victim = (Player) e.getEntity(); | |
if(victim.getMaxHealth() <= 1) { | |
return true; | |
} | |
killer.setMaxHealth(killer.getMaxHealth() + 1); | |
victim.setMaxHealth(victim.getMaxHealth() - 1); | |
hearts.put(victim, hearts.get(victim) - 1); | |
hearts.put(killer, hearts.get(killer) + 1); | |
} | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment