Add player data deleter; small bugfixes
This commit is contained in:
parent
14f0fbe979
commit
aac5e10ba6
|
@ -1,4 +1,9 @@
|
|||
name: Lifesteal
|
||||
main: ca.thetechrobo.smp.LifestealPlugin
|
||||
version: 1.0
|
||||
api-version: 1.13
|
||||
api-version: 1.18
|
||||
|
||||
commands:
|
||||
deletemydata:
|
||||
description: Deletes your amount of lives, then bans you.
|
||||
usage: "Usage: Not the way you used it, that's for sure"
|
|
@ -11,10 +11,11 @@ import org.bukkit.event.entity.PlayerDeathEvent;
|
|||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.inventory.meta.SkullMeta;
|
||||
|
||||
public class DeathListener implements Listener {
|
||||
private ScoreboardWrapper scores;
|
||||
public ScoreboardWrapper scores;
|
||||
private ArrayList<String> skulllore;
|
||||
@EventHandler
|
||||
public void onDeath(PlayerDeathEvent e) {
|
||||
|
@ -23,7 +24,8 @@ public class DeathListener implements Listener {
|
|||
SkullMeta meta = (SkullMeta) skull.getItemMeta();
|
||||
meta.setOwningPlayer(e.getEntity());
|
||||
meta.setLore(this.skulllore);
|
||||
skull.setItemMeta(meta);
|
||||
ItemMeta newmeta = this.scores.save(meta, 69, "IsDroppedSkull");
|
||||
skull.setItemMeta(newmeta);
|
||||
e.getEntity().getWorld().dropItemNaturally(e.getEntity().getLocation(), skull);
|
||||
}
|
||||
@EventHandler
|
||||
|
@ -39,10 +41,13 @@ public class DeathListener implements Listener {
|
|||
d.create();
|
||||
|
||||
Boolean rightclickair = (e.getAction() == Action.RIGHT_CLICK_AIR);
|
||||
if (!rightclickair) {
|
||||
return;
|
||||
}
|
||||
Boolean condition1a = (i.getItemMeta().getDisplayName().equals(d.dn));
|
||||
Boolean condition1b = (i.getType() == d.m);
|
||||
Boolean lifeblock = (condition1a && condition1b && rightclickair);
|
||||
Boolean heartblock = (i.getItemMeta().getLore().equals(this.skulllore) && rightclickair);
|
||||
Boolean heartblock = (this.scores.load(i, "IsDroppedSkull", 1) == 69 && rightclickair);
|
||||
if (lifeblock) {
|
||||
this.scores.die(p, -1);
|
||||
p.getInventory().removeItem(d.item);
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
package ca.thetechrobo.smp;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.BanList.Type;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class DeleteMyData implements CommandExecutor {
|
||||
private ScoreboardWrapper scores;
|
||||
|
||||
public void initialise(ScoreboardWrapper scores) {
|
||||
this.scores = scores;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onCommand(CommandSender senderr, Command arg1, String arg2, String[] args) {
|
||||
// TODO Auto-generated method stub
|
||||
if (args.length != 1) {
|
||||
return false;
|
||||
}
|
||||
Boolean number = true;
|
||||
try {
|
||||
Integer.parseInt(args[0]);
|
||||
}
|
||||
catch(NumberFormatException e) {
|
||||
number = false;
|
||||
}
|
||||
if (number) {
|
||||
Player sender = (Player) senderr;
|
||||
if (args[0].equals(String.valueOf(this.scores.load(sender, "delete", null)))) {
|
||||
Bukkit.getBanList(Type.NAME).addBan(sender.getName(), "Deleted data.", null, null);
|
||||
sender.kickPlayer("Your server data has been irrecoverably deleted.");
|
||||
String uuid = sender.getUniqueId().toString();
|
||||
Path path = Paths.get("world/playerdata/" + uuid+".dat");
|
||||
try {
|
||||
Files.delete(path);
|
||||
}
|
||||
catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
else {
|
||||
if (!(senderr.isOp())) {
|
||||
senderr.sendMessage("Sorry, You must be op");
|
||||
return false;
|
||||
}
|
||||
Player sender = Bukkit.getPlayer(args[0]);
|
||||
Random random = new Random();
|
||||
Integer randumber = random.nextInt(69421);
|
||||
this.scores.save(sender, randumber, "delete");
|
||||
sender.sendMessage("§eIf you would like to delete all trace of you from the server, enter /deletemydata " + String.valueOf(randumber));
|
||||
sender.sendMessage("NOTE! For security reasons, if you perform this operation, you will never be able to log in to the server with this account ever again.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -35,6 +35,9 @@ public class LifestealPlugin extends JavaPlugin {
|
|||
DeathListener dl = new DeathListener();
|
||||
dl.initialise(this);
|
||||
getServer().getPluginManager().registerEvents(dl, this);
|
||||
DeleteMyData dlmydata = new DeleteMyData();
|
||||
dlmydata.initialise(dl.scores);
|
||||
this.getCommand("deletemydata").setExecutor(dlmydata);
|
||||
addRecipes();
|
||||
}
|
||||
@Override
|
||||
|
|
|
@ -10,6 +10,8 @@ import org.bukkit.NamespacedKey;
|
|||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeInstance;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.persistence.PersistentDataContainer;
|
||||
import org.bukkit.persistence.PersistentDataType;
|
||||
import org.bukkit.scoreboard.DisplaySlot;
|
||||
|
@ -32,6 +34,20 @@ public class ScoreboardWrapper {
|
|||
NamespacedKey key = new NamespacedKey(this.plugin, keystr);
|
||||
p.getPersistentDataContainer().set(key, PersistentDataType.INTEGER, i);
|
||||
}
|
||||
public ItemMeta save(ItemMeta im, Integer i, String keystr) {
|
||||
NamespacedKey key = new NamespacedKey(this.plugin, keystr);
|
||||
im.getPersistentDataContainer().set(key, PersistentDataType.INTEGER, i);
|
||||
return im;
|
||||
}
|
||||
public int load(ItemStack is, String keystr, Integer def) {
|
||||
NamespacedKey key = new NamespacedKey(this.plugin, keystr);
|
||||
PersistentDataContainer c = is.getItemMeta().getPersistentDataContainer();
|
||||
if (c.has(key, PersistentDataType.INTEGER)) {
|
||||
Integer i = c.get(key, PersistentDataType.INTEGER);
|
||||
return i;
|
||||
}
|
||||
return def;
|
||||
}
|
||||
public int load(Player p, String keystr, Integer def) {
|
||||
NamespacedKey key = new NamespacedKey(this.plugin, keystr);
|
||||
PersistentDataContainer c = p.getPersistentDataContainer();
|
||||
|
|
Loading…
Reference in New Issue