1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00
This commit is contained in:
mrCookieSlime 2016-05-29 10:28:05 +02:00
commit 7aab7aaf7c

View File

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