added lightning sword and steven's wrath
This commit is contained in:
@@ -2,11 +2,10 @@ package dev.zxq5.fantasysmp;
|
||||
|
||||
import dev.zxq5.fantasysmp.events.HereticWarner;
|
||||
import dev.zxq5.fantasysmp.events.StevenKillCheck;
|
||||
import dev.zxq5.fantasysmp.items.GenericGearSet;
|
||||
import dev.zxq5.fantasysmp.items.Items;
|
||||
import dev.zxq5.fantasysmp.items.Witherite;
|
||||
import dev.zxq5.fantasysmp.items.*;
|
||||
import dev.zxq5.fantasysmp.warps.Warp;
|
||||
import dev.zxq5.fantasysmp.warps.Warper;
|
||||
import org.bukkit.entity.Panda;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public final class Fantasysmp extends JavaPlugin {
|
||||
@@ -37,6 +36,12 @@ public final class Fantasysmp extends JavaPlugin {
|
||||
GenericGearSet witherite = new Witherite();
|
||||
witherite.registerRecipes();
|
||||
|
||||
Lightning lightning = new Lightning();
|
||||
lightning.registerRecipes();
|
||||
|
||||
StevensWrath stevensWrath = new StevensWrath();
|
||||
stevensWrath.registerRecipes();
|
||||
|
||||
getServer().getPluginManager().registerEvents(new StevenKillCheck(), this);
|
||||
|
||||
HereticWarner hereticWarner = new HereticWarner();
|
||||
|
||||
@@ -61,7 +61,7 @@ public class StevenKillCheck implements Listener {
|
||||
|
||||
public void destroyHeretic(Player heretic) {
|
||||
Location coords = heretic.getLocation();
|
||||
World world = getServer().getWorlds().getFirst();
|
||||
World world = coords.getWorld();
|
||||
Plugin plugin = getPluginManager().getPlugin("fantasysmp");
|
||||
|
||||
broadcastMessage(ChatColor.DARK_RED + "HERESY!!!!");
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package dev.zxq5.fantasysmp.items;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.data.type.Light;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Wither;
|
||||
@@ -46,7 +47,9 @@ public class Items implements CommandExecutor {
|
||||
|
||||
public Items(JavaPlugin plugin) {
|
||||
Witherite.init();
|
||||
Lightning.init();
|
||||
getServer().getPluginManager().registerEvents(new Witherite(), plugin);
|
||||
|
||||
getServer().getPluginManager().registerEvents(new Lightning(), plugin);
|
||||
getServer().getPluginManager().registerEvents(new StevensWrath(), plugin);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
package dev.zxq5.fantasysmp.items;
|
||||
|
||||
import dev.zxq5.fantasysmp.util.LoreChecker;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.entity.LightningStrike;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.bukkit.Bukkit.broadcastMessage;
|
||||
import static org.bukkit.Bukkit.getServer;
|
||||
|
||||
public class Lightning extends GenericGearSet implements Listener, CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(org.bukkit.command.CommandSender sender, org.bukkit.command.Command command, String label, String[] args) {
|
||||
if (!(args[0].equals("lightning"))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Player player = (Player) sender;
|
||||
|
||||
player.getInventory().addItem(new Lightning().getSword());
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecipes() {
|
||||
ItemStack sword = this.getSword();
|
||||
NamespacedKey swordKey = new NamespacedKey("fantasysmp.items", "lightning_sword");
|
||||
ShapedRecipe swordRecipe = new ShapedRecipe(swordKey, sword);
|
||||
swordRecipe.shape(" N ", " N ", " R ");
|
||||
swordRecipe.setIngredient('N', Material.NETHER_STAR);
|
||||
swordRecipe.setIngredient('R', Material.LIGHTNING_ROD);
|
||||
getServer().addRecipe(swordRecipe);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamageByEntity(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
// checks that it is a player that is performing the attack.
|
||||
if (!(event.getDamager() instanceof org.bukkit.entity.Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!( LoreChecker.itemLoreContains(player.getInventory().getItemInMainHand(), this.swordLore) )) return;
|
||||
|
||||
if (
|
||||
player.isOnGround()
|
||||
|| player.getVelocity().getY() >= 0
|
||||
|| player.isClimbing()
|
||||
|| player.isInWater()
|
||||
|| player.isInsideVehicle()
|
||||
|| player.hasPotionEffect(PotionEffectType.BLINDNESS)
|
||||
) return;
|
||||
|
||||
|
||||
Location location = event.getEntity().getLocation();
|
||||
World world = location.getWorld();
|
||||
|
||||
if (world == null) return;
|
||||
|
||||
world.strikeLightning(location);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamage(org.bukkit.event.entity.EntityDamageEvent event) {
|
||||
if (event.getEntity() instanceof Player player) {
|
||||
|
||||
if (!(event
|
||||
.getDamageSource()
|
||||
.getDamageType()
|
||||
.getKey()
|
||||
.toString()
|
||||
.equals("minecraft:lightning_bolt")
|
||||
)) return;
|
||||
|
||||
if (LoreChecker.itemLoreContains(player.getInventory().getItemInMainHand(), this.swordLore)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getSword() {
|
||||
ItemStack item = super.getSword();
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setItemModel(NamespacedKey.fromString("fantasysmp:lightning_sword"));
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
public static void init() {}
|
||||
|
||||
public Lightning() {
|
||||
this.setTier5();
|
||||
this.swordName = "Lightning Sword";
|
||||
this.swordLore = "All who oppose shall be smitten.";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
package dev.zxq5.fantasysmp.items;
|
||||
|
||||
import dev.zxq5.fantasysmp.util.LoreChecker;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.entity.LightningStrike;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.ShapedRecipe;
|
||||
import org.bukkit.inventory.ShapelessRecipe;
|
||||
import org.bukkit.inventory.SmithingTransformRecipe;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.bukkit.Bukkit.broadcastMessage;
|
||||
import static org.bukkit.Bukkit.getServer;
|
||||
|
||||
public class StevensWrath extends GenericGearSet implements Listener, CommandExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(org.bukkit.command.CommandSender sender, org.bukkit.command.Command command, String label, String[] args) {
|
||||
if (!(args[0].equals("wrath"))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Player player = (Player) sender;
|
||||
|
||||
player.getInventory().addItem(new StevensWrath().getSword());
|
||||
return true;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onCraft(org.bukkit.event.inventory.PrepareItemCraftEvent event) {
|
||||
if (!event.getInventory().contains(Material.NETHERITE_BLOCK)) return;
|
||||
if (!event.getInventory().contains(new Lightning().getSword())) return;
|
||||
event.getInventory().setResult(new StevensWrath().getSword());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerRecipes() {}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamageByEntity(org.bukkit.event.entity.EntityDamageByEntityEvent event) {
|
||||
|
||||
// checks that it is a player that is performing the attack.
|
||||
if (!(event.getDamager() instanceof org.bukkit.entity.Player player)) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(
|
||||
LoreChecker.itemLoreContains(player.getInventory().getItemInMainHand(), this.swordLore)
|
||||
|| LoreChecker.itemLoreContains(player.getInventory().getItemInOffHand(), this.swordLore)
|
||||
)) return;
|
||||
|
||||
Location location = event.getEntity().getLocation();
|
||||
World world = location.getWorld();
|
||||
|
||||
if (world == null) return;
|
||||
|
||||
world.strikeLightning(location);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityDamage(org.bukkit.event.entity.EntityDamageEvent event) {
|
||||
if (event.getEntity() instanceof Player player) {
|
||||
|
||||
if (!(event
|
||||
.getDamageSource()
|
||||
.getDamageType()
|
||||
.getKey()
|
||||
.toString()
|
||||
.equals("minecraft:lightning_bolt")
|
||||
)) return;
|
||||
|
||||
if (LoreChecker.itemLoreContains(player.getInventory().getItemInMainHand(), this.swordLore) ||
|
||||
LoreChecker.itemLoreContains(player.getInventory().getItemInOffHand(), this.swordLore)) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getSword() {
|
||||
ItemStack item = super.getSword();
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setItemModel(NamespacedKey.fromString("fantasysmp:stevens_wrath"));
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
public static void init() {}
|
||||
|
||||
public StevensWrath() {
|
||||
this.setTier6();
|
||||
this.swordName = ChatColor.LIGHT_PURPLE + "Stevens Wrath" + ChatColor.RESET;
|
||||
this.swordLore = ChatColor.LIGHT_PURPLE + "All who oppose the mighty Steven shall face his wrath of lightning.";
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
package dev.zxq5.fantasysmp.items;
|
||||
|
||||
import dev.zxq5.fantasysmp.util.LoreChecker;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
@@ -77,12 +78,7 @@ public class Witherite extends GenericGearSet implements Listener, CommandExecut
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if (!player.getInventory().getItemInMainHand().getItemMeta().getLore().toString().contains(this.swordLore)) {
|
||||
return;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
if (!LoreChecker.itemLoreContains(player.getInventory().getItemInMainHand(), this.swordLore)) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -98,15 +94,18 @@ public class Witherite extends GenericGearSet implements Listener, CommandExecut
|
||||
@EventHandler
|
||||
public void onEntityPotionEffectEvent(org.bukkit.event.entity.EntityPotionEffectEvent event) {
|
||||
if (event.getEntity() instanceof Player player) {
|
||||
if (event.getNewEffect() == null) return;
|
||||
|
||||
if (event.getNewEffect().getType() != org.bukkit.potion.PotionEffectType.WITHER) {
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
if (player.getInventory().getHelmet().getItemMeta().getLore().toString().contains(this.helmetLore)
|
||||
&& player.getInventory().getChestplate().getItemMeta().getLore().toString().contains(this.chestplateLore)
|
||||
&& player.getInventory().getLeggings().getItemMeta().getLore().toString().contains(this.leggingsLore)
|
||||
&& player.getInventory().getBoots().getItemMeta().getLore().toString().contains(this.bootsLore)) {
|
||||
if (LoreChecker.itemLoreContains(player.getInventory().getHelmet(), this.helmetLore)
|
||||
&& LoreChecker.itemLoreContains(player.getInventory().getChestplate(), this.chestplateLore)
|
||||
&& LoreChecker.itemLoreContains(player.getInventory().getLeggings(), this.leggingsLore)
|
||||
&& LoreChecker.itemLoreContains(player.getInventory().getBoots(), this.bootsLore)
|
||||
) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package dev.zxq5.fantasysmp.util;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class LoreChecker {
|
||||
public static boolean itemLoreContains(ItemStack item, String content) {
|
||||
if (item == null) return false;
|
||||
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
if (meta == null) return false;
|
||||
|
||||
List<String> lore = meta.getLore();
|
||||
if (lore == null) return false;
|
||||
|
||||
return lore.toString().contains(content);
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ website: https://zxq5.dev
|
||||
commands:
|
||||
items:
|
||||
description: create custom items from plugin
|
||||
usage: /items <set name>
|
||||
usage: /items <name>
|
||||
permission: fantasysmp.admin
|
||||
|
||||
home:
|
||||
|
||||
Reference in New Issue
Block a user