@@ -59,6 +59,7 @@ public class Items implements CommandExecutor {
|
|||||||
new Ender();
|
new Ender();
|
||||||
new StevensWrath();
|
new StevensWrath();
|
||||||
new LightningSword();
|
new LightningSword();
|
||||||
|
new Crown();
|
||||||
|
|
||||||
AppleJuice appleJuice = new AppleJuice();
|
AppleJuice appleJuice = new AppleJuice();
|
||||||
appleJuice.registerEvents(Fantasysmp.getPlugin());
|
appleJuice.registerEvents(Fantasysmp.getPlugin());
|
||||||
|
|||||||
@@ -0,0 +1,83 @@
|
|||||||
|
package dev.zxq5.fantasysmp.items.gear;
|
||||||
|
|
||||||
|
import dev.zxq5.fantasysmp.Fantasysmp;
|
||||||
|
import dev.zxq5.fantasysmp.items.presets.*;
|
||||||
|
import org.bukkit.*;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
|
import org.bukkit.event.entity.EntityPotionEffectEvent;
|
||||||
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.potion.PotionEffect;
|
||||||
|
import org.bukkit.potion.PotionEffectType;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
public class Crown extends CustomSet {
|
||||||
|
public static Crown instance;
|
||||||
|
public static int tier = 5;
|
||||||
|
|
||||||
|
public Crown() {
|
||||||
|
super(tier);
|
||||||
|
instance = this;
|
||||||
|
|
||||||
|
this.helmetId = "Crown";
|
||||||
|
this.helmetName = "&eCrown";
|
||||||
|
this.helmetLore = List.of("Harness the power of a &eking.", "Gain permanent &cregeneration" + ChatColor.RESET + " and &fspeed" + ChatColor.RESET + " as your health decreases.");
|
||||||
|
this.helmetModel = 14338;
|
||||||
|
|
||||||
|
this.equipmentModel = "crown";
|
||||||
|
registerItems();
|
||||||
|
registerRecipes();
|
||||||
|
registerHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Crown getInstance() {
|
||||||
|
if (instance == null) {
|
||||||
|
instance = new Crown();
|
||||||
|
}
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void registerRecipes() {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleLeftClick(Player player, ItemStack itemStack, PlayerInteractEvent event) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleRightClick(Player player, ItemStack itemStack, PlayerInteractEvent event) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onHit(Player player, ItemStack itemStack, EntityDamageByEntityEvent event) {}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onArmourChange(Player player, ItemStack item, boolean active) {
|
||||||
|
if(active) {
|
||||||
|
player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, Integer.MAX_VALUE, 0));
|
||||||
|
onHealthChange(player);
|
||||||
|
}else {
|
||||||
|
player.removePotionEffect(PotionEffectType.REGENERATION);
|
||||||
|
player.setWalkSpeed(0.2f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDamage(EntityDamageEvent event) {
|
||||||
|
Player player = (Player) event.getEntity();
|
||||||
|
|
||||||
|
onHealthChange(player);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onHealthChange(Player player) {
|
||||||
|
player.setWalkSpeed((float) (0.2f * (1 + (Math.min(20 - player.getHealth(), 16.0) / 16))));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEffect(EntityPotionEffectEvent event) {}
|
||||||
|
|
||||||
|
private static void registerItems() {
|
||||||
|
Fantasysmp.registerItems(new CustomHelmet(instance, getInstance().helmetId));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,6 +4,8 @@ import dev.zxq5.fantasysmp.Fantasysmp;
|
|||||||
import dev.zxq5.fantasysmp.items.presets.*;
|
import dev.zxq5.fantasysmp.items.presets.*;
|
||||||
import org.bukkit.*;
|
import org.bukkit.*;
|
||||||
import org.bukkit.damage.DamageType;
|
import org.bukkit.damage.DamageType;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.LivingEntity;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
@@ -160,9 +162,36 @@ public class Dragon extends CustomSet {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDamage(EntityDamageEvent event) {
|
public void onDamage(EntityDamageEvent event) {
|
||||||
if (!(event.getDamageSource().getDamageType() == DamageType.FLY_INTO_WALL)) return;
|
if (!(event.getDamageSource().getDamageType() == DamageType.FLY_INTO_WALL || event.getDamageSource().getDamageType() == DamageType.FALL)) return;
|
||||||
|
|
||||||
event.setCancelled(true);
|
event.setDamage(event.getDamage() * 0.5);
|
||||||
|
|
||||||
|
Player player = (Player) event.getEntity();
|
||||||
|
|
||||||
|
double radius = 5.0;
|
||||||
|
double damage = 8.0;
|
||||||
|
double kb = 0.5;
|
||||||
|
|
||||||
|
if (event.getDamageSource().getDamageType() == DamageType.FLY_INTO_WALL) {
|
||||||
|
event.setDamage(event.getDamage() * 0.4);
|
||||||
|
radius = 3.0;
|
||||||
|
damage = 5.0;
|
||||||
|
kb = 0.3;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (Entity entity : player.getNearbyEntities(radius, radius, radius)) {
|
||||||
|
if (entity instanceof LivingEntity target && entity != player) {
|
||||||
|
target.damage(damage, player);
|
||||||
|
|
||||||
|
Vector knockback = target.getLocation().toVector().subtract(player.getLocation().toVector()).normalize();
|
||||||
|
knockback.multiply(kb);
|
||||||
|
knockback.setY(0.5);
|
||||||
|
target.setVelocity(knockback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
player.getWorld().playSound(player.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 1f, 1f);
|
||||||
|
player.getWorld().spawnParticle(Particle.EXPLOSION, player.getLocation(), 30, 1, 1, 1, 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package dev.zxq5.fantasysmp.items.presets;
|
package dev.zxq5.fantasysmp.items.presets;
|
||||||
|
|
||||||
import dev.zxq5.fantasysmp.Fantasysmp;
|
import dev.zxq5.fantasysmp.Fantasysmp;
|
||||||
|
import dev.zxq5.fantasysmp.items.gear.Crown;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.entity.*;
|
import org.bukkit.entity.*;
|
||||||
@@ -8,10 +9,7 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.block.Action;
|
import org.bukkit.event.block.Action;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.*;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
|
||||||
import org.bukkit.event.entity.EntityDeathEvent;
|
|
||||||
import org.bukkit.event.entity.EntityPotionEffectEvent;
|
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.event.player.PlayerInteractEvent;
|
import org.bukkit.event.player.PlayerInteractEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
@@ -94,6 +92,12 @@ public class CustomItemHandler implements Listener {
|
|||||||
|
|
||||||
public void onArmourChange(Player player) {
|
public void onArmourChange(Player player) {
|
||||||
|
|
||||||
|
if (getItemId(player.getInventory().getHelmet()).equals("Crown")) {
|
||||||
|
Crown.getInstance().onArmourChange(player, null, true);
|
||||||
|
} else {
|
||||||
|
Crown.getInstance().onArmourChange(player, null, false);
|
||||||
|
}
|
||||||
|
|
||||||
CustomSet customSet = getSet(player);
|
CustomSet customSet = getSet(player);
|
||||||
|
|
||||||
if(customSet == null && active != null) {
|
if(customSet == null && active != null) {
|
||||||
@@ -123,13 +127,13 @@ public class CustomItemHandler implements Listener {
|
|||||||
customSet.onDamage(event);
|
customSet.onDamage(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
CustomSet customSet = getSet(player);
|
|
||||||
|
|
||||||
if (customSet == null) return;
|
|
||||||
|
|
||||||
customSet.onDamage(event);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CustomSet customSet = getSet(player);
|
||||||
|
|
||||||
|
if (customSet == null) return;
|
||||||
|
|
||||||
|
customSet.onDamage(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
@@ -143,6 +147,16 @@ public class CustomItemHandler implements Listener {
|
|||||||
customSet.onEffect(event);
|
customSet.onEffect(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onPlayerHeal(EntityRegainHealthEvent event) {
|
||||||
|
if (!(event.getEntity() instanceof Player player)) return;
|
||||||
|
|
||||||
|
if (getItemId(player.getInventory().getHelmet()).equals("Crown")) {
|
||||||
|
Crown.getInstance().onHealthChange(player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onDeath(EntityDeathEvent event) {
|
public void onDeath(EntityDeathEvent event) {
|
||||||
if (event.getEntity() instanceof Mob mob) {
|
if (event.getEntity() instanceof Mob mob) {
|
||||||
@@ -161,6 +175,9 @@ public class CustomItemHandler implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String getItemId(ItemStack itemStack) {
|
private static String getItemId(ItemStack itemStack) {
|
||||||
|
if(itemStack == null || !itemStack.hasItemMeta()){
|
||||||
|
return "";
|
||||||
|
}
|
||||||
return itemStack.getItemMeta().getPersistentDataContainer().get(Fantasysmp.customItemKey, PersistentDataType.STRING);
|
return itemStack.getItemMeta().getPersistentDataContainer().get(Fantasysmp.customItemKey, PersistentDataType.STRING);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -179,6 +196,10 @@ public class CustomItemHandler implements Listener {
|
|||||||
if ((customHelmet instanceof CustomHelmet custHelmet) && (customChestplate instanceof CustomChestplate custChestplate) && (customLeggings instanceof CustomLeggings custLeggings) && (customBoots instanceof CustomBoots custBoots)) {
|
if ((customHelmet instanceof CustomHelmet custHelmet) && (customChestplate instanceof CustomChestplate custChestplate) && (customLeggings instanceof CustomLeggings custLeggings) && (customBoots instanceof CustomBoots custBoots)) {
|
||||||
CustomSet customSet = custHelmet.getSet();
|
CustomSet customSet = custHelmet.getSet();
|
||||||
|
|
||||||
|
if (getItemId(helmet).equals("Crown")) {
|
||||||
|
customSet = custChestplate.getSet();
|
||||||
|
}
|
||||||
|
|
||||||
if(customSet.equals(custChestplate.getSet()) && customSet.equals(custLeggings.getSet()) && customSet.equals(custBoots.getSet())) {
|
if(customSet.equals(custChestplate.getSet()) && customSet.equals(custLeggings.getSet()) && customSet.equals(custBoots.getSet())) {
|
||||||
return customSet;
|
return customSet;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user