Lots of changes. new features. and fun!
This commit is contained in:
parent
7bdcfd890b
commit
bd483dc63e
|
@ -1,10 +1,14 @@
|
|||
package ca.thetechrobo.smp;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
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;
|
||||
|
||||
public class DeathListener implements Listener {
|
||||
private ScoreboardWrapper scores;
|
||||
|
@ -17,6 +21,30 @@ public class DeathListener implements Listener {
|
|||
public void onPlayerJoin(PlayerJoinEvent e) {
|
||||
this.scores.addPlayerToScoreboard(e);
|
||||
}
|
||||
@EventHandler
|
||||
public void onPlayerUse(PlayerInteractEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
ItemStack i = p.getInventory().getItemInMainHand();
|
||||
Life d = new Life();
|
||||
d.create();
|
||||
ItemMeta dMeta = d.item.getItemMeta();
|
||||
if ((i.getType() == d.item.getType()) && (i.getItemMeta().getDisplayName().equals(dMeta.getDisplayName()))) {
|
||||
this.scores.add(p);
|
||||
p.getInventory().removeItem(d.item);
|
||||
return;
|
||||
}
|
||||
LifeExtractor f = new LifeExtractor();
|
||||
f.create();
|
||||
ItemMeta fMeta = f.item.getItemMeta();
|
||||
if ((i.getType() == f.item.getType()) && (i.getItemMeta().getDisplayName().equals(fMeta.getDisplayName()))) {
|
||||
if (p.getInventory().firstEmpty() == (-1)) {
|
||||
Bukkit.broadcastMessage("Not enough room in your inventory.");
|
||||
return;
|
||||
}
|
||||
this.scores.die(p, null);
|
||||
d.add(p);
|
||||
}
|
||||
}
|
||||
public void initialise() {
|
||||
this.scores = new ScoreboardWrapper();
|
||||
this.scores.initialise();
|
||||
|
|
|
@ -1,10 +1,14 @@
|
|||
package ca.thetechrobo.smp;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class Life {
|
||||
public ItemStack item;
|
||||
|
||||
import org.bukkit.Material;
|
||||
|
||||
public class Life extends SuperLife {
|
||||
public void create() {
|
||||
ArrayList<String> lore = new ArrayList<String>();
|
||||
lore.add("Highly valuable.");
|
||||
lore.add("Right-click to gain (1) life.");
|
||||
supercreate(Material.NETHERITE_SCRAP, "§5LifeBlockTM", lore);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
package ca.thetechrobo.smp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Material;
|
||||
|
||||
public class LifeExtractor extends SuperLife {
|
||||
public void create() {
|
||||
ArrayList<String> lore = new ArrayList<String>();
|
||||
lore.add("Converts one of your lives into an item.");
|
||||
lore.add("WARNING: If your life count goes to 0");
|
||||
lore.add("it will count.");
|
||||
supercreate(Material.NETHERITE_HOE, "§5LifextractorTM", lore);
|
||||
}
|
||||
}
|
|
@ -1,13 +1,41 @@
|
|||
package ca.thetechrobo.smp;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class LifestealPlugin extends JavaPlugin {
|
||||
@Override
|
||||
public void addRecipes() {
|
||||
LifeExtractor lifextractor = new LifeExtractor();
|
||||
lifextractor.create();
|
||||
ItemStack item = lifextractor.item;
|
||||
NamespacedKey key = new NamespacedKey(this, "lifextractor");
|
||||
ShapedRecipe recipe = new ShapedRecipe(key, item); // error
|
||||
recipe.shape("BS ", " S ", " S ");
|
||||
recipe.setIngredient('B', Material.BUCKET);
|
||||
recipe.setIngredient('S', Material.STICK);
|
||||
Bukkit.addRecipe(recipe);
|
||||
|
||||
Life life = new Life();
|
||||
life.create();
|
||||
life.changeTo3();
|
||||
item = life.item;
|
||||
key = new NamespacedKey(this, "life");
|
||||
recipe = new ShapedRecipe(key, item);
|
||||
recipe.shape("sA ", " ", " ");
|
||||
recipe.setIngredient('A', Material.ANVIL);
|
||||
recipe.setIngredient('s', Material.NETHERITE_INGOT);
|
||||
Bukkit.addRecipe(recipe);
|
||||
}
|
||||
@Override
|
||||
public void onEnable() {
|
||||
DeathListener dl = new DeathListener();
|
||||
dl.initialise();
|
||||
getServer().getPluginManager().registerEvents(dl, this);
|
||||
addRecipes();
|
||||
}
|
||||
@Override
|
||||
public void onDisable() {
|
||||
|
|
|
@ -2,9 +2,11 @@ package ca.thetechrobo.smp;
|
|||
|
||||
import org.bukkit.BanList.Type;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Objects;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -31,16 +33,16 @@ public class ScoreboardWrapper {
|
|||
Score score = lives.getScore(p.getName());
|
||||
this.boards.put(p.getName(), temp);
|
||||
Bukkit.broadcastMessage("It Works!");
|
||||
score.setScore(1);
|
||||
score.setScore(5);
|
||||
p.setScoreboard(this.boards.get(p.getName()));
|
||||
}
|
||||
public byte die(Player p, Player k) {
|
||||
Scoreboard board = this.boards.get(p.getName());
|
||||
Objective lives = board.getObjective("lives");
|
||||
public int die(Player p, int dec) {
|
||||
Objective lives = this.boards.get(p.getName())
|
||||
.getObjective("lives");
|
||||
Score score = lives.getScore(p);
|
||||
int curscore = score.getScore();
|
||||
score.setScore(curscore - 1);
|
||||
if (curscore - 1 == 0) {
|
||||
int curscore = score.getScore() - dec;
|
||||
score.setScore(curscore);
|
||||
if (curscore == 0) {
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
calendar.setTime(new Date());
|
||||
calendar.add(Calendar.DAY_OF_YEAR, 5);
|
||||
|
@ -48,7 +50,16 @@ public class ScoreboardWrapper {
|
|||
Bukkit.getBanList(Type.NAME).addBan(p.getName(), "Ran out of lives.", date, null);
|
||||
p.kickPlayer("Ran out of lives.");
|
||||
}
|
||||
|
||||
return (byte) score.getScore();
|
||||
return curscore;
|
||||
}
|
||||
public ArrayList<Integer> die(Player p, Player k) {
|
||||
ArrayList<Integer> array = new ArrayList<Integer>();
|
||||
array.add(die(p, 1));
|
||||
if (Objects.isNull(k)) array.add(-1);
|
||||
else array.add(add(k));
|
||||
return array;
|
||||
}
|
||||
public int add(Player p) {
|
||||
return die(p, -1);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package ca.thetechrobo.smp;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
public class SuperLife {
|
||||
public ItemStack item;
|
||||
|
||||
public void supercreate(Material m, String dn, ArrayList<String> lore) { // https://www.spigotmc.org/threads/how-to-create-a-custom-item.134241/#post-1423546
|
||||
this.item = new ItemStack(m);
|
||||
ItemMeta meta = this.item.getItemMeta();
|
||||
meta.setDisplayName(dn);
|
||||
meta.setLore(lore);
|
||||
this.item.setItemMeta(meta);
|
||||
}
|
||||
public void add(Player p) {
|
||||
p.getInventory().addItem(this.item);
|
||||
}
|
||||
public void changeTo3() {
|
||||
this.item.setAmount(3);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue