Skip to content

Instantly share code, notes, and snippets.

@gagedevs
Created May 4, 2022 01:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gagedevs/d69d5a32e88cb384c7e3921452821e98 to your computer and use it in GitHub Desktop.
Save gagedevs/d69d5a32e88cb384c7e3921452821e98 to your computer and use it in GitHub Desktop.
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