@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onItemFrameDamage(final EntityDamageByEntityEvent e) { // Check world if (!Util.inWorld(e.getEntity()) || !(e.getEntity() instanceof ItemFrame)) { return; } if (e.getDamager() instanceof Projectile) { if (DEBUG) plugin.getLogger().info("DEBUG: Projectile damage to itemframe"); // Find out who fired the arrow Projectile p = (Projectile) e.getDamager(); if (DEBUG) plugin.getLogger().info("DEBUG: Shooter is " + p.getShooter().toString()); if (p.getShooter() instanceof Skeleton || p.getShooter() instanceof Golem) { if (DEBUG) plugin.getLogger().info("DEBUG: Shooter is mob"); if (!Settings.allowMobDamageToItemFrames) { if (DEBUG) plugin.getLogger().info("DEBUG: Damage not allowed, cancelling"); e.setCancelled(true); } } } }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onItemFrameDamage(final HangingBreakByEntityEvent e) { if (DEBUG) { plugin.getLogger().info("DEBUG: Hanging break by entity event"); plugin.getLogger().info("DEBUG: cause = " + e.getCause()); plugin.getLogger().info("DEBUG: entity = " + e.getEntity()); plugin.getLogger().info("DEBUG: remover = " + e.getRemover()); } // Check world if (!Util.inWorld(e.getEntity()) || !(e.getEntity() instanceof ItemFrame)) { return; } if (e.getRemover() instanceof Skeleton || e.getRemover() instanceof Golem) { if (DEBUG) plugin.getLogger().info("DEBUG: Remover is mob"); if (!Settings.allowMobDamageToItemFrames) { if (DEBUG) plugin.getLogger().info("DEBUG: Damage not allowed, cancelling"); e.setCancelled(true); } } }
/** * Utilizes a random chance to either spawn a skeleton with gold armor or resources. * * @param event The event */ @EventHandler public void onEntityDeath(EntityDeathEvent event) { Entity entity = event.getEntity(); if (entity instanceof Sheep) { double chance = Math.random(); if (0.25 > chance) { Skeleton skeleton = entity.getWorld().spawn(entity.getLocation(), Skeleton.class); skeleton.getEquipment().setArmorContents( new ItemStack[]{ new ItemStack(Material.GOLD_HELMET), new ItemStack(Material.GOLD_CHESTPLATE), new ItemStack(Material.GOLD_LEGGINGS), new ItemStack(Material.GOLD_BOOTS) } ); } else if (0.5 > chance) { event.getDrops().add(new ItemStack(Material.IRON_INGOT)); } else if (0.75 > chance) { event.getDrops().add(new ItemStack(Material.GOLD_INGOT)); } else { event.getDrops().add(new ItemStack(Material.DIAMOND)); } } }
@EventHandler(priority = EventPriority.HIGH) public void onEntityTarget(EntityTargetEvent event) { if( event.getEntity() instanceof Skeleton && NavyCraft.aaSkelesList.contains((Skeleton)event.getEntity()) ) { if( event.getTarget() instanceof Player ) { Player target = (Player)event.getTarget(); Craft skeleCraft = Craft.getCraft(target.getLocation().getBlockX(), target.getLocation().getBlockY(), target.getLocation().getBlockZ()); if( skeleCraft != null && !skeleCraft.crewNames.isEmpty() && skeleCraft.crewNames.contains(target.getName()) ) { event.setCancelled(true); } } } }
@EventHandler public void onEntityBendingDeath(EntityBendingDeathEvent event) { Entity v = event.getVictim(); Element e = CoreAbility.getAbility(event.getAbility()).getElement(); int xp; if(v == null || e == null) return; if(v instanceof Player) { xp = 25 + (int)(Math.random() * ((35 - 25) + 1)); } else if(v instanceof Zombie || v instanceof Creeper || v instanceof Witch || v instanceof Skeleton || v instanceof Guardian || v instanceof Spider) { xp = 13 + (int)(Math.random() * ((22 - 13) + 1)); } else { xp = 3 + (int)(Math.random() * ((8 - 3) + 1)); } BendingExp.addExp(event.getAttacker(), e, xp); }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onItemFrameDamage(final EntityDamageByEntityEvent e) { // Check world if (!inWorld(e.getEntity()) || !(e.getEntity() instanceof ItemFrame)) { return; } if (e.getDamager() instanceof Projectile) { if (DEBUG) plugin.getLogger().info("DEBUG: Projectile damage to itemframe"); // Find out who fired the arrow Projectile p = (Projectile) e.getDamager(); if (DEBUG) plugin.getLogger().info("DEBUG: Shooter is " + p.getShooter().toString()); if (p.getShooter() instanceof Skeleton || p.getShooter() instanceof Golem) { if (DEBUG) plugin.getLogger().info("DEBUG: Shooter is mob"); if (!Settings.allowMobDamageToItemFrames) { if (DEBUG) plugin.getLogger().info("DEBUG: Damage not allowed, cancelling"); e.setCancelled(true); } } } }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onItemFrameDamage(final HangingBreakByEntityEvent e) { if (DEBUG) { plugin.getLogger().info("DEBUG: Hanging break by entity event"); plugin.getLogger().info("DEBUG: cause = " + e.getCause()); plugin.getLogger().info("DEBUG: entity = " + e.getEntity()); plugin.getLogger().info("DEBUG: remover = " + e.getRemover()); } // Check world if (!inWorld(e.getEntity()) || !(e.getEntity() instanceof ItemFrame)) { return; } if (e.getRemover() instanceof Skeleton || e.getRemover() instanceof Golem) { if (DEBUG) plugin.getLogger().info("DEBUG: Remover is mob"); if (!Settings.allowMobDamageToItemFrames) { if (DEBUG) plugin.getLogger().info("DEBUG: Damage not allowed, cancelling"); e.setCancelled(true); } } }
@EventHandler public void onSkeletonShoot(EntityShootBowEvent event){ if(event.getEntity() instanceof Skeleton){ Skeleton s = (Skeleton) event.getEntity(); if(DroneShocktroop.isPossiblyShocktroop(s)){ DroneShocktroop troop = getShocktroop(s); if(troop == null){ s.remove(); //System.out.println("troop for named skeleton is null, removing!"); event.setCancelled(true); } else { //System.out.println("Allowed fire!"); } } } }
public void SkeletalArmy() { for (Player pl : Bukkit.getOnlinePlayers()) { Location loc = pl.getLocation(); Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "time night"); Bukkit.broadcastMessage(ChatColor.BOLD+""+ChatColor.RED+"The Skeletal Army Event Has Begun!"); Skeleton skeleton = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton1 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton2 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton3 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton4 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton5 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton6 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton7 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton8 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton9 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); Skeleton skeleton0 = (Skeleton) pl.getWorld().spawnEntity((Location) Arrays.asList(circle(loc, 4, 1, true, true, 1)), EntityType.SKELETON); } }
@EventHandler public void onQuit(PlayerQuitEvent e) { if(essentialsPlayers.containsKey(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isVanished()) { essentialsPlayers.remove(e.getPlayer().getName()); return; } ItemStack[] items = e.getPlayer().getInventory().getContents(); Skeleton skel = (Skeleton) e.getPlayer().getWorld().spawnEntity(e.getPlayer().getLocation(), EntityType.SKELETON); //lets pimp the skeleton a bit! turnSkelToNpc(skel, e.getPlayer().getName()); npcs.put(skel.getUniqueId(), items); essentialsPlayers.remove(e.getPlayer().getName()); NpcDespawn(skel); } }
@EventHandler public void onTeleport(PlayerTeleportEvent e) { if(essentialsPlayers.containsKey(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isVanished()) { return; } ItemStack[] items = e.getPlayer().getInventory().getContents(); Skeleton skel = (Skeleton) e.getPlayer().getWorld().spawnEntity(e.getPlayer().getLocation(), EntityType.SKELETON); //lets pimp the skeleton a bit! turnSkelToNpc(skel, e.getPlayer().getName()); npcs.put(skel.getUniqueId(), items); essentialsPlayers.remove(e.getPlayer().getName()); NpcDespawn(skel); } }
@EventHandler public void onQuit(PlayerKickEvent e) { if(essentialsPlayers.containsKey(e.getPlayer().getName())) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isVanished()) { essentialsPlayers.remove(e.getPlayer().getName()); return; } ItemStack[] items = e.getPlayer().getInventory().getContents(); Skeleton skel = (Skeleton) e.getPlayer().getWorld().spawnEntity(e.getPlayer().getLocation(), EntityType.SKELETON); //lets pimp the skeleton a bit! turnSkelToNpc(skel, e.getPlayer().getName()); npcs.put(skel.getUniqueId(), items); essentialsPlayers.remove(e.getPlayer().getName()); NpcDespawn(skel); } }
@EventHandler(priority = EventPriority.HIGH) public void onJoinNpc(PlayerJoinEvent e) { for(Entity entity : e.getPlayer().getNearbyEntities(16, 16, 16)) { if(entity instanceof Skeleton) { Skeleton skel = (Skeleton) entity; if(skel.isCustomNameVisible()) { if(skel.getCustomName().equalsIgnoreCase(e.getPlayer().getName())) { e.getPlayer().kickPlayer(ChatColor.GREEN + "[Combat log]" + ChatColor.GRAY + "\nyou are not allowed to join until the npc is dead."); e.setJoinMessage(""); return; } } } } XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(e.getPlayer().getName()); if(xp.isInventoryClearanceOnRelog()) { xp.ClearInventoryOnRelog(); } }
private void turnSkelToNpc(Skeleton skel, String player) { ItemStack head = new ItemStack(Material.SKULL_ITEM); head.setDurability((short)3); SkullMeta meta = (SkullMeta) head.getItemMeta(); meta.setOwner(player); head.setItemMeta(meta); head.setAmount(1); skel.getEquipment().setHelmet(head); skel.getEquipment().setHelmetDropChance(0); ItemStack chestplate = new ItemStack(Material.IRON_CHESTPLATE); chestplate.setAmount(1); skel.getEquipment().setChestplate(chestplate); skel.getEquipment().setChestplateDropChance(0); ItemStack leggings = new ItemStack(Material.IRON_LEGGINGS); leggings.setAmount(1); skel.getEquipment().setLeggings(leggings); skel.getEquipment().setLeggingsDropChance(0); ItemStack shoes = new ItemStack(Material.IRON_BOOTS); skel.getEquipment().setBoots(shoes); skel.getEquipment().setBootsDropChance(0); skel.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Integer.MAX_VALUE, 30)); skel.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, Integer.MAX_VALUE, 30)); skel.setCustomName(player); skel.setCustomNameVisible(true); }
@EventHandler(priority = EventPriority.LOWEST) public void onCreatureSpawnEventLowest(CreatureSpawnEvent event) { if (!(event.getEntity() instanceof Monster) || event.isCancelled()) { return; } if (!mythicDrops.getConfigSettings().getEnabledWorlds().contains(event.getEntity().getWorld() .getName())) { return; } if (mythicDrops.getConfigSettings().isGiveAllMobsNames()) { nameMobs(event.getEntity()); } if (mythicDrops.getConfigSettings().isBlankMobSpawnEnabled()) { event.getEntity().getEquipment().clear(); if (event.getEntity() instanceof Skeleton && !mythicDrops.getConfigSettings() .isSkeletonsSpawnWithoutBows()) { event.getEntity().getEquipment().setItemInMainHand(new ItemStack(Material.BOW, 1)); } } event.getEntity() .setCanPickupItems(mythicDrops.getConfigSettings().isMobsPickupEquipment()); }
/** * When a player breaks ore, spawn mob * * @param event Event */ @EventHandler(ignoreCancelled = true) public void onEntityDeath(BlockBreakEvent event) { EntityType type; switch (event.getBlock().getType()) { case COAL_ORE: type = EntityType.ZOMBIE; break; case IRON_ORE: type = EntityType.SKELETON; break; case GOLD_ORE: type = EntityType.SPIDER; break; case DIAMOND_ORE: type = EntityType.WITCH; break; default: type = null; break; } Entity entity; if (type != null && random.nextDouble() < (double) this.moduleConfiguration.get("chance")) { entity = event.getBlock().getWorld().spawnEntity(event.getBlock().getLocation(), type); if (type == EntityType.SKELETON) ((Skeleton) entity).getEquipment().clear(); //Remove skeleton bow } }
private LoggableCreatureEvent getLoggableEntityEvent(EntityEventAction action, EntityEvent event) { final Entity entity = event.getEntity(); final Location location = entity.getLocation(); final World world = entity.getWorld(); Point3d coordinates = new Point3d(location.getX(), location.getY(), location.getZ()); LoggableCreatureEvent entityEvent = new LoggableCreatureEvent(world.getFullTime(), minecraft_server, world.getName(), action); LivingEntity spCreature = new LivingEntity(); spCreature.setType("creature"); spCreature.setCurrentHealth(((org.bukkit.entity.LivingEntity)entity).getHealth()); spCreature.setMaxHealth(((org.bukkit.entity.LivingEntity)entity).getMaxHealth()); spCreature.setLocation(coordinates); for (PotionEffect potion : (((org.bukkit.entity.LivingEntity)entity).getActivePotionEffects())) { spCreature.addPotions(potion.getType().getName() + ":" + potion.getAmplifier()); } if (event.getEntityType() == EntityType.SKELETON) { Skeleton skeleton = (org.bukkit.entity.Skeleton) event.getEntity(); spCreature.setName(skeleton.getSkeletonType() + "_SKELETON"); } else { spCreature.setName(event.getEntityType().name()); } entityEvent.setEntity(spCreature); return entityEvent; }
@Override @Nullable public ItemType convert(final Object o) { final SkullType type; if (o instanceof Skeleton || o instanceof SkeletonData) { if (o instanceof SkeletonData ? ((SkeletonData) o).isWither() : ((Skeleton) o).getSkeletonType() == SkeletonType.WITHER) { type = SkullType.WITHER; } else { type = SkullType.SKELETON; } } else if (o instanceof Zombie || o instanceof EntityData && Zombie.class.isAssignableFrom(((EntityData<?>) o).getType())) { type = SkullType.ZOMBIE; } else if (o instanceof OfflinePlayer || o instanceof PlayerData) { type = SkullType.PLAYER; } else if (o instanceof Creeper || o instanceof CreeperData) { type = SkullType.CREEPER; } else { return null; } @SuppressWarnings("deprecation") final ItemType i = new ItemType(Material.SKULL_ITEM.getId(), (short) type.ordinal()); if (o instanceof OfflinePlayer) { final SkullMeta s = (SkullMeta) Bukkit.getItemFactory().getItemMeta(Material.SKULL_ITEM); s.setOwner(((OfflinePlayer) o).getName()); i.setItemMeta(s); } return i; }
@Override public RequirementState getState() { YamlConfiguration myState = new YamlConfiguration(); myState.set("type", "vr"); ConfigurationSection foeSection = myState.createSection("foe"); foeSection.set("type", foe.getType().name()); foeSection.set("maxhp", foe.getMaxHealth()); foeSection.set("hp", foe.getHealth()); foeSection.set("name", foe.getCustomName()); foeSection.set("location", foe.getLocation()); if (foe instanceof Guardian) { foeSection.set("elder", ((Guardian) foe).isElder()); } if (foe instanceof Slime) { foeSection.set("size", ((Slime) foe).getSize()); } if (foe instanceof Skeleton) { foeSection.set("wither", ((Skeleton) foe).getSkeletonType() == SkeletonType.WITHER); } EquipmentConfiguration econ = new EquipmentConfiguration(foe.getEquipment()); foeSection.set("equipment", econ.getConfiguration()); return new RequirementState(myState); }
@Override public LivingEntity spawnWitherSkeleton(Location loc) { Skeleton entity = (Skeleton) loc.getWorld().spawnEntity(loc, EntityType.SKELETON); entity.setSkeletonType(SkeletonType.WITHER); return entity; }
private void createRobot(Skeleton s) { EntityEquipment e = s.getEquipment(); e.setHelmet(new ItemStack(Material.DISPENSER, 1)); e.setChestplate(new ItemStack(Material.IRON_CHESTPLATE, 1)); e.setLeggings(new ItemStack(Material.CHAINMAIL_LEGGINGS, 1)); e.setLeggings(new ItemStack(Material.IRON_BOOTS, 1)); e.setItemInMainHand(new ItemStack(Material.BOW, 1)); permaVanish(s); }
@EventHandler(priority = EventPriority.HIGHEST) public void onEntityDeath(EntityDeathEvent event) { if (event.getEntityType() == EntityType.SKELETON) { Skeleton s = (Skeleton) event.getEntity(); if ((s.getSkeletonType() == Skeleton.SkeletonType.WITHER) && (Math.random() < 0.3)) { event.getDrops().add(new ItemStack(Material.NETHER_STALK, 1)); } } }
public void onDisable(){ for(World w : Bukkit.getWorlds()){ for(Entity e : w.getEntities()){ if(e.getType() == EntityType.GHAST){ e.remove(); } if(e.getType() == EntityType.SKELETON){ if(DroneShocktroop.isPossiblyShocktroop((Skeleton) e)){ e.remove(); } } } } }
@EventHandler public void onArrowHit(EntityDamageByEntityEvent event){ if(event.getDamager() instanceof Arrow){ Arrow a = (Arrow) event.getDamager(); if(a.getShooter() instanceof Skeleton && event.getEntity() instanceof Skeleton){ Skeleton s1 = (Skeleton) a.getShooter(); Skeleton s2 = (Skeleton) event.getEntity(); if(DroneShocktroop.isPossiblyShocktroop(s1) && DroneShocktroop.isPossiblyShocktroop(s2)){ event.setCancelled(true); } } } }
DroneShocktroop getShocktroop(Skeleton skel){ for (DroneShocktroop s : activeShocktroops) { if (s.mySkeleton == skel) { return s; } } return null; }
public DroneShocktroop(Player target){ this.target = target; Location l = getSafeLocationNearTarget(); if(l == null) l = target.getLocation(); mySkeleton = (Skeleton) target.getWorld().spawnEntity(l, EntityType.SKELETON); target.playSound(mySkeleton.getLocation(), Sound.PORTAL_TRAVEL, 2.0F, 2.0F); mySkeleton.setCustomName("Skywatch Shock Trooper"); mySkeleton.setCustomNameVisible(true); EntityEquipment e = mySkeleton.getEquipment(); ItemStack hat = new ItemStack(Material.DISPENSER, 1); ItemStack chest = new ItemStack(Material.DIAMOND_CHESTPLATE, 1); ItemStack leggings = new ItemStack(Material.DIAMOND_LEGGINGS, 1); ItemStack boots = new ItemStack(Material.DIAMOND_BOOTS, 1); chest.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, SQSkywatch.protectionLevel); leggings.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, SQSkywatch.protectionLevel); boots.addEnchantment(Enchantment.PROTECTION_ENVIRONMENTAL, SQSkywatch.protectionLevel); e.setHelmet(hat); e.setChestplate(chest); e.setLeggings(leggings); e.setBoots(boots); ItemStack bow = new ItemStack(Material.BOW, 1); bow.addEnchantment(Enchantment.ARROW_DAMAGE, SQSkywatch.powerLevel); bow.addEnchantment(Enchantment.ARROW_KNOCKBACK, SQSkywatch.knockbackLevel); if(SQSkywatch.flameBows){ bow.addEnchantment(Enchantment.ARROW_FIRE, 1); } e.setItemInHand(bow); mySkeleton.setTarget(target); mySkeleton.getWorld().playEffect(mySkeleton.getLocation(), Effect.ENDER_SIGNAL, 0); }
public static boolean isPossiblyShocktroop(Entity e) { if(e instanceof Skeleton){ Skeleton s = (Skeleton) e; return s.getCustomName() != null && s.getCustomName().equals("Skywatch Shock Trooper"); } return false; }
@Override public void effect(Event e, ItemStack item, int level) { EntityDamageByEntityEvent event = (EntityDamageByEntityEvent) e; final Player player = (Player) event.getDamager(); final LivingEntity ent = (LivingEntity) event.getEntity(); new BukkitRunnable() { @Override public void run() { if (ent.getHealth() <= 0) { byte type = 3; if (ent instanceof Skeleton) { type = 0; if (((Skeleton) ent).getSkeletonType().equals(SkeletonType.WITHER)) type = 1; } else if (ent instanceof Zombie) type = 2; else if (ent instanceof Creeper) type = 4; ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, type); if (type == 3) { SkullMeta sm = (SkullMeta) skull.getItemMeta(); sm.setOwner(ent.getName()); skull.setItemMeta(sm); } ent.getWorld().dropItem(ent.getLocation(), skull); EffectManager.playSound(player.getLocation(), "BLOCK_ANVIL_LAND", 0.1f, 1.5f); } } }.runTaskLater(getPlugin(), 5l); }
@EventHandler public void onNameTag(PlayerInteractEntityEvent e) { if(e.getRightClicked() instanceof Skeleton) { Skeleton skel = (Skeleton) e.getRightClicked(); if(skel.isCustomNameVisible()) { if(npcs.containsKey(skel.getUniqueId())) { e.setCancelled(true); } } } }
@EventHandler public void onDamage(EntityDamageByEntityEvent e) { if(e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if(e.getDamager() instanceof Zombie) { entitys.put(p.getName(), e.getDamager().getUniqueId()); } else if(e.getDamager() instanceof Arrow) { Arrow arrow = (Arrow) e.getDamager(); if(arrow.getShooter() instanceof Skeleton) { Skeleton skel = (Skeleton) arrow.getShooter(); entitys.put(p.getName(), skel.getUniqueId()); } } } }
@EventHandler public void getMobTypeEvent(EntityDamageByEntityEvent e) { if(e.getEntity() instanceof Player) { Player p = (Player) e.getEntity(); if(e.getDamager() instanceof Zombie) { entityList.put(p.getName(), e.getDamager()); } else if(e.getDamager() instanceof Arrow) { Arrow arrow = (Arrow) e.getDamager(); if(arrow.getShooter() instanceof Skeleton) { entityList.put(p.getName(), arrow.getShooter()); } } } }
public static Entity addlProps(Entity entity) { EntityType entityType = entity.getType(); if (entityType == EntityType.SKELETON && ((Skeleton) entity).getSkeletonType().getId() == 1) { ((Skeleton) entity).getEquipment().setItemInHand(new ItemStack(Material.STONE_SWORD)); } else if (entityType == EntityType.SKELETON && ((Skeleton) entity).getSkeletonType().getId() == 0) { ((Skeleton) entity).getEquipment().setItemInHand(new ItemStack(Material.BOW)); } else if (entityType == EntityType.PIG_ZOMBIE) { ((PigZombie) entity).getEquipment().setItemInHand(new ItemStack(Material.GOLD_SWORD)); } return entity; }
@SuppressWarnings("deprecation") @Override public boolean run(Player player, String[] args, int power) { if (canRun(player, args)) { Block block = player.getTargetBlock(null, 100); Location loc = block.getLocation(); loc.setY(loc.getY() + 1); Skeleton skel = loc.getWorld().spawn(loc, Skeleton.class); skel.getEquipment().setHelmet(new ItemStack(Material.LEATHER_HELMET)); skel.setMetadata("owner", new FixedMetadataValue(Zephyrus.getPlugin(), player.getName())); en.add(skel); new End(skel).runTaskLater(Zephyrus.getPlugin(), getConfig().getInt(getName() + ".duration") * 20); for (Entity e : skel.getNearbyEntities(20, 20, 20)) { if (e instanceof LivingEntity && e != player) { Object m = NMSHandler.getHandle(skel); Object tar = NMSHandler.getHandle(e); Method method = ReflectionUtils.getMethod(m.getClass(), "setGoalTarget"); try { method.invoke(m, tar); } catch (Exception ex) { ex.printStackTrace(); } break; } } return true; } else { Lang.errMsg("spells.summon.fail", player); return false; } }
@EventHandler(priority=EventPriority.HIGHEST) public void onDeath(final EntityDeathEvent e) { if (e.getEntity().hasMetadata("android_killer")) { for (MetadataValue value: e.getEntity().getMetadata("android_killer")) { final AndroidObject obj = (AndroidObject) value.value(); Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() { @SuppressWarnings("deprecation") @Override public void run() { List<ItemStack> items = new ArrayList<ItemStack>(); for (Entity n: e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) { if (n instanceof Item && !n.hasMetadata("no_pickup")) { items.add(((Item) n).getItemStack()); n.remove(); } } switch (e.getEntityType()) { case BLAZE: { items.add(new ItemStack(Material.BLAZE_ROD, 1 + CSCoreLib.randomizer().nextInt(2))); break; } case PIG_ZOMBIE: { items.add(new ItemStack(Material.GOLD_NUGGET, 1 + CSCoreLib.randomizer().nextInt(3))); break; } case SKELETON: { if (((Skeleton) e.getEntity()).getSkeletonType().equals(SkeletonType.WITHER)) { if (CSCoreLib.randomizer().nextInt(250) < 2) items.add(new MaterialData(Material.SKULL_ITEM, (byte) 1).toItemStack(1)); } break; } default: break; } obj.getAndroid().addItems(obj.getBlock(), items.toArray(new ItemStack[items.size()])); ExperienceOrb exp = (ExperienceOrb) e.getEntity().getWorld().spawnEntity(e.getEntity().getLocation(), EntityType.EXPERIENCE_ORB); exp.setExperience(1 + CSCoreLib.randomizer().nextInt(6)); } }, 1L); return; } } }
public static void skeletonAttacks(Skeleton boss, Player damager){ int attack = r.nextInt(8); List<Player> near = new ArrayList<>(); boss.getNearbyEntities(7, 7, 7).forEach(en -> { if (en instanceof Player) { near.add((Player) en); } }); switch (attack){ case 0: if (boss.getHealth() + 20 >= boss.getMaxHealth()) boss.setHealth(boss.getMaxHealth()); boss.setHealth(boss.getHealth() + 20); break; case 1: List<Item> bones = new ArrayList<>(); for (int i = 0 ; i < 20; i++) { ItemStack osso = new ItemStack(Material.BONE, 1); Location dropLoc = boss.getLocation(); dropLoc.setX(dropLoc.getX() + r.nextDouble() - r.nextDouble()); dropLoc.setY(dropLoc.getY() + r.nextDouble() - r.nextDouble()); dropLoc.setZ(dropLoc.getZ() + r.nextDouble() - r.nextDouble()); final Item bone = boss.getWorld().dropItem(dropLoc, osso); Vector v = new Vector(Math.random() - Math.random(), Math.random(), Math.random() - Math.random()).multiply(1); bone.setVelocity(v); bone.setPickupDelay(Integer.MAX_VALUE); bones.add(bone); } ParticleEffect.EXPLOSION_HUGE.display(new Vector(0, 0, 0), 2, boss.getLocation(), 50); near.forEach(p -> { if (!p.equals(damager)) { WCTWD.getPlayer(p).sendSound(Sound.ENTITY_GENERIC_EXPLODE); p.damage(3); } }); WCTWD.getPlayer(damager).sendSound(Sound.ENTITY_GENERIC_EXPLODE); damager.damage(3); bs.runTaskLater(plugin, () -> bones.forEach(b -> b.remove()), 40); break; default: break; } }
@Override public void spawn() { switch (type) { case SKELETON: Skeleton s = getLocation().getWorld().spawn(this.getLocation(), Skeleton.class); s.setCustomName(ChatColor.RED + "Nexus Wachter"); s.setCustomNameVisible(true); this.entity = s; KDFEntity ke = new KDFEntity(entity); HashMap<Enchantment, Integer> bowE = new HashMap<Enchantment, Integer>(); bowE.put(Enchantment.ARROW_DAMAGE, 5); bowE.put(Enchantment.ARROW_FIRE, 1); bowE.put(Enchantment.ARROW_KNOCKBACK, 2); ke.setItem(EnumItemSlot.MAINHAND, Item.getInstance().getItem(Material.BOW, ChatColor.RED + "Nexus Wachter Boog", 1, bowE, true)); ke.setItem(EnumItemSlot.OFFHAND, Item.getInstance().getItem(Material.SHIELD, ChatColor.RED + "Nexus Wachter Schild", 1)); break; case ZOMBIE: Zombie z = getLocation().getWorld().spawn(this.getLocation(), Zombie.class); z.setCustomName(ChatColor.RED + "Nexus Wachter"); z.setCustomNameVisible(true); this.entity = z; KDFEntity kez = new KDFEntity(entity); HashMap<Enchantment, Integer> swordE = new HashMap<Enchantment, Integer>(); swordE.put(Enchantment.DAMAGE_ALL, 5); swordE.put(Enchantment.FIRE_ASPECT, 2); swordE.put(Enchantment.KNOCKBACK, 3); kez.setItem(EnumItemSlot.MAINHAND, Item.getInstance().getItem(Material.BOW, ChatColor.RED + "Nexus Wachter Zwaard", 1, swordE, true)); kez.setItem(EnumItemSlot.OFFHAND, Item.getInstance().getItem(Material.SHIELD, ChatColor.RED + "Nexus Wachter Schild", 1)); break; } KDFEntity armor = new KDFEntity(entity); HashMap<Enchantment, Integer> armorE = new HashMap<Enchantment, Integer>(); armorE.put(Enchantment.PROTECTION_ENVIRONMENTAL, 4); armorE.put(Enchantment.DURABILITY, 3); armorE.put(Enchantment.THORNS, 3); armor.setItem(EnumItemSlot.FEET, Item.getInstance().getItem(Material.DIAMOND_BOOTS, ChatColor.RED + "Wachter's Schoenen", 1, armorE, true)); armor.setItem(EnumItemSlot.LEGS, Item.getInstance().getItem(Material.DIAMOND_LEGGINGS, ChatColor.RED + "Wachter's Broek", 1, armorE, true)); armor.setItem(EnumItemSlot.CHEST, Item.getInstance().getItem(Material.DIAMOND_CHESTPLATE, ChatColor.RED + "Wachter's Kuras", 1, armorE, true)); armor.setItem(EnumItemSlot.HEAD, Item.getInstance().getItem(Material.DIAMOND_HELMET, ChatColor.RED + "Wachter's Helm", 1, armorE, true)); }
@Override protected boolean init(final @Nullable Class<? extends Skeleton> c, final @Nullable Skeleton e) { wither = (e == null || !hasWither) ? false : e.getSkeletonType() == SkeletonType.WITHER; return true; }