mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-19 19:25:48 +00:00
Merge branch 'master' of https://github.com/TheBusyBiscuit/Slimefun4.git
This commit is contained in:
commit
7aab7aaf7c
@ -1,24 +1,20 @@
|
|||||||
package me.mrCookieSlime.Slimefun.listeners;
|
package me.mrCookieSlime.Slimefun.listeners;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.SkullItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.SkullItem;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
import me.mrCookieSlime.EmeraldEnchants.EmeraldEnchants;
|
||||||
import me.mrCookieSlime.Slimefun.Variables;
|
import me.mrCookieSlime.EmeraldEnchants.ItemEnchantment;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SoulboundItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunStartup;
|
||||||
|
import me.mrCookieSlime.Slimefun.Variables;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.Soul;
|
import me.mrCookieSlime.Slimefun.api.Soul;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.Creeper;
|
import org.bukkit.entity.Creeper;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.entity.Skeleton;
|
import org.bukkit.entity.Skeleton;
|
||||||
@ -31,111 +27,130 @@ import org.bukkit.event.entity.EntityDeathEvent;
|
|||||||
import org.bukkit.event.player.PlayerRespawnEvent;
|
import org.bukkit.event.player.PlayerRespawnEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class DamageListener implements Listener {
|
public class DamageListener implements Listener {
|
||||||
|
|
||||||
public DamageListener(SlimefunStartup plugin) {
|
public DamageListener(SlimefunStartup plugin) {
|
||||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)");
|
private SimpleDateFormat format = new SimpleDateFormat("(MMM d, yyyy @ hh:mm)");
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onDamage(EntityDeathEvent e) {
|
public void onDamage(EntityDeathEvent e) {
|
||||||
if (e.getEntity() instanceof Player) {
|
if (e.getEntity() instanceof Player) {
|
||||||
Player p = (Player) e.getEntity();
|
Player p = (Player) e.getEntity();
|
||||||
if (p.getInventory().containsAtLeast(SlimefunItems.GPS_EMERGENCY_TRANSMITTER, 1)) {
|
if (p.getInventory().containsAtLeast(SlimefunItems.GPS_EMERGENCY_TRANSMITTER, 1)) {
|
||||||
Slimefun.getGPSNetwork().addWaypoint(p, "&4Deathpoint &7" + format.format(new Date()), p.getLocation().getBlock().getLocation());
|
Slimefun.getGPSNetwork().addWaypoint(p, "&4Deathpoint &7" + format.format(new Date()), p.getLocation().getBlock().getLocation());
|
||||||
}
|
}
|
||||||
Iterator<ItemStack> drops = e.getDrops().iterator();
|
Iterator<ItemStack> drops = e.getDrops().iterator();
|
||||||
while (drops.hasNext()) {
|
while (drops.hasNext()) {
|
||||||
ItemStack item = drops.next();
|
ItemStack item = drops.next();
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BOUND_BACKPACK, false)) {
|
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BOUND_BACKPACK, false)) {
|
||||||
Soul.storeItem(e.getEntity().getUniqueId(), item);
|
Soul.storeItem(e.getEntity().getUniqueId(), item);
|
||||||
drops.remove();
|
drops.remove();
|
||||||
}
|
} else if (SlimefunItem.getByItem(removeEnchantments(item)) != null) {
|
||||||
else if (SlimefunItem.getByItem(item) != null) {
|
if (SlimefunItem.getByItem(removeEnchantments(item)) instanceof SoulboundItem) {
|
||||||
if (SlimefunItem.getByItem(item) instanceof SoulboundItem) {
|
Soul.storeItem(e.getEntity().getUniqueId(), item);
|
||||||
Soul.storeItem(e.getEntity().getUniqueId(), item);
|
drops.remove();
|
||||||
drops.remove();
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
}
|
||||||
}
|
if (e.getEntity().getKiller() instanceof Player) {
|
||||||
if (e.getEntity().getKiller() instanceof Player) {
|
Player p = (Player) e.getEntity().getKiller();
|
||||||
Player p = (Player) e.getEntity().getKiller();
|
ItemStack item = p.getInventory().getItemInMainHand();
|
||||||
ItemStack item = p.getInventory().getItemInMainHand();
|
|
||||||
|
if (SlimefunManager.drops.containsKey(e.getEntity().getType())) {
|
||||||
if (SlimefunManager.drops.containsKey(e.getEntity().getType())) {
|
for (ItemStack drop : SlimefunManager.drops.get(e.getEntity().getType())) {
|
||||||
for (ItemStack drop: SlimefunManager.drops.get(e.getEntity().getType())) {
|
if (Slimefun.hasUnlocked(p, item, true)) {
|
||||||
if (Slimefun.hasUnlocked(p, item, true)) {
|
e.getDrops().add(drop);
|
||||||
e.getDrops().add(drop);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
if (item != null) {
|
||||||
if (item != null) {
|
if (Slimefun.hasUnlocked(p, item, true)) {
|
||||||
if (Slimefun.hasUnlocked(p, item, true)) {
|
if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("SWORD_OF_BEHEADING"), true)) {
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItem.getItem("SWORD_OF_BEHEADING"), true)) {
|
if (e.getEntity() instanceof Zombie) {
|
||||||
if (e.getEntity() instanceof Zombie) {
|
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE"))) {
|
||||||
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.ZOMBIE"))) {
|
e.getDrops().add(new CustomItem(Material.SKULL_ITEM, 2));
|
||||||
e.getDrops().add(new CustomItem(Material.SKULL_ITEM, 2));
|
}
|
||||||
}
|
} else if (e.getEntity() instanceof Skeleton) {
|
||||||
}
|
switch (((Skeleton) e.getEntity()).getSkeletonType()) {
|
||||||
else if (e.getEntity() instanceof Skeleton) {
|
case NORMAL: {
|
||||||
switch (((Skeleton) e.getEntity()).getSkeletonType()) {
|
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON")))
|
||||||
case NORMAL: {
|
e.getDrops().add(new CustomItem(Material.SKULL_ITEM, 0));
|
||||||
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.SKELETON"))) e.getDrops().add(new CustomItem(Material.SKULL_ITEM, 0));
|
break;
|
||||||
break;
|
}
|
||||||
}
|
case WITHER: {
|
||||||
case WITHER: {
|
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON")))
|
||||||
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.WITHER_SKELETON"))) e.getDrops().add(new CustomItem(Material.SKULL_ITEM, 1));
|
e.getDrops().add(new CustomItem(Material.SKULL_ITEM, 1));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
} else if (e.getEntity() instanceof Creeper) {
|
||||||
else if (e.getEntity() instanceof Creeper) {
|
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER"))) {
|
||||||
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.CREEPER"))) {
|
e.getDrops().add(new CustomItem(Material.SKULL_ITEM, 4));
|
||||||
e.getDrops().add(new CustomItem(Material.SKULL_ITEM, 4));
|
}
|
||||||
}
|
} else if (e.getEntity() instanceof Player) {
|
||||||
}
|
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER"))) {
|
||||||
else if (e.getEntity() instanceof Player) {
|
e.getDrops().add(new SkullItem(((Player) e.getEntity()).getName()));
|
||||||
if (SlimefunStartup.chance(100, (Integer) Slimefun.getItemValue("SWORD_OF_BEHEADING", "chance.PLAYER"))) {
|
}
|
||||||
e.getDrops().add(new SkullItem(((Player) e.getEntity()).getName()));
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
if (Talisman.checkFor(e, SlimefunItem.getByName("HUNTER_TALISMAN"))) {
|
||||||
|
List<ItemStack> newDrops = new ArrayList<ItemStack>();
|
||||||
if (Talisman.checkFor(e, SlimefunItem.getByName("HUNTER_TALISMAN"))) {
|
for (ItemStack drop : e.getDrops()) {
|
||||||
List<ItemStack> newDrops = new ArrayList<ItemStack>();
|
newDrops.add(drop);
|
||||||
for (ItemStack drop: e.getDrops()) {
|
}
|
||||||
newDrops.add(drop);
|
for (ItemStack drop : newDrops) {
|
||||||
}
|
e.getDrops().add(drop);
|
||||||
for (ItemStack drop: newDrops) {
|
}
|
||||||
e.getDrops().add(drop);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
@EventHandler
|
||||||
|
public void onArrowHit(EntityDamageEvent e) {
|
||||||
@EventHandler
|
if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL) {
|
||||||
public void onArrowHit(EntityDamageEvent e) {
|
if (Variables.damage.containsKey(e.getEntity().getUniqueId())) {
|
||||||
if (e.getEntity() instanceof Player && e.getCause() == DamageCause.FALL) {
|
e.setCancelled(true);
|
||||||
if (Variables.damage.containsKey(e.getEntity().getUniqueId())) {
|
Variables.damage.remove(e.getEntity().getUniqueId());
|
||||||
e.setCancelled(true);
|
}
|
||||||
Variables.damage.remove(e.getEntity().getUniqueId());
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
@EventHandler
|
||||||
|
public void onRespawn(PlayerRespawnEvent e) {
|
||||||
@EventHandler
|
Soul.retrieveItems(e.getPlayer());
|
||||||
public void onRespawn(PlayerRespawnEvent e) {
|
}
|
||||||
Soul.retrieveItems(e.getPlayer());
|
|
||||||
}
|
private ItemStack removeEnchantments(ItemStack itemStack) {
|
||||||
|
ItemStack strippedItem = itemStack.clone();
|
||||||
|
|
||||||
|
for (Enchantment enchantment : itemStack.getEnchantments().keySet()) {
|
||||||
|
strippedItem.removeEnchantment(enchantment);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Slimefun.isEmeraldEnchantsInstalled()) {
|
||||||
|
for(ItemEnchantment enchantment : EmeraldEnchants.getInstance().getRegistry().getEnchantments(itemStack)){
|
||||||
|
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(strippedItem, enchantment.getEnchantment(), 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return strippedItem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user