Lots of changes. new features. and fun!

This commit is contained in:
TheTechRobo 2022-03-06 15:48:15 -05:00
parent 7bdcfd890b
commit bd483dc63e
6 changed files with 127 additions and 15 deletions

View File

@ -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();

View File

@ -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);
}
}
}

View File

@ -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);
}
}

View File

@ -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() {

View File

@ -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);
}
}

View File

@ -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);
}
}