public static boolean isCitizensNPC(LivingEntity entity) { return entity.hasMetadata("NPC"); }
@SuppressWarnings("unchecked") public static Map<UUID, Double> getDamageToEntityPercent(LivingEntity victim) { Map<UUID, Double> damagePercentMap = new HashMap<>(); if (victim.hasMetadata("DamageCount")) { for (MetadataValue value : victim.getMetadata("DamageCount")) { if (value.getOwningPlugin().getName().equals("MyPet")) { Map<UUID, Double> damageMap = (Map<UUID, Double>) value.value(); double allDamage = 0; for (Double damage : damageMap.values()) { allDamage += damage; } if (allDamage <= 0) { return damagePercentMap; } for (UUID entity : damageMap.keySet()) { damagePercentMap.put(entity, damageMap.get(entity) / allDamage); } return damagePercentMap; } } } return damagePercentMap; } }
@SuppressWarnings("unchecked") public static double getDamageToEntityPercent(LivingEntity damager, LivingEntity victim) { if (victim.hasMetadata("DamageCount")) { UUID damagerUUID = damager.getUniqueId(); for (MetadataValue value : victim.getMetadata("DamageCount")) { if (value.getOwningPlugin().getName().equals("MyPet")) { Map<UUID, Double> damageMap = (Map<UUID, Double>) value.value(); double allDamage = 0; double damagerDamage = damageMap.containsKey(damagerUUID) ? damageMap.get(damagerUUID) : 0; for (UUID entity : damageMap.keySet()) { allDamage += damageMap.get(entity); } return damagerDamage / allDamage; } } } return 0; }
@EventHandler public void onEntityDeath(EntityDeathEvent event) { int i = 0; while (event.getEntity().hasMetadata("betonquest-drops-" + i)) { try { List<MetadataValue> metadata = event.getEntity().getMetadata("betonquest-drops-" + i); for (MetadataValue m : metadata) { String item = m.asString(); int index = item.indexOf(':'); event.getDrops().add(new QuestItem(new ItemID(null, item.substring(0, index))) .generate(Integer.valueOf(item.substring(index + 1)))); } } catch (Exception e) { Debug.error("Error when dropping custom item from entity: " + e.getMessage()); } i++; } }
/** * Monitor EntityDeath events. * * @param event * The event to watch */ @EventHandler(priority = EventPriority.LOWEST) public void onEntityDeathLowest(EntityDeathEvent event) { /* WORLD BLACKLIST CHECK */ if(WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) return; LivingEntity entity = event.getEntity(); if (Misc.isNPCEntity(entity)) { return; } if (entity.hasMetadata(mcMMO.customNameKey)) { entity.setCustomName(entity.getMetadata(mcMMO.customNameKey).get(0).asString()); entity.removeMetadata(mcMMO.customNameKey, plugin); } if (entity.hasMetadata(mcMMO.customVisibleKey)) { entity.setCustomNameVisible(entity.getMetadata(mcMMO.customVisibleKey).get(0).asBoolean()); entity.removeMetadata(mcMMO.customVisibleKey, plugin); } if (entity.hasMetadata(mcMMO.entityMetadataKey)) { entity.removeMetadata(mcMMO.entityMetadataKey, plugin); } }
@SuppressWarnings("unchecked") public static void addDamageToEntity(LivingEntity damager, LivingEntity victim, double damage) { Map<UUID, Double> damageMap; if (victim.hasMetadata("DamageCount")) { for (MetadataValue value : victim.getMetadata("DamageCount")) { if (value.getOwningPlugin().getName().equals("MyPet")) { damageMap = (Map<UUID, Double>) value.value(); if (damageMap.containsKey(damager)) { double oldDamage = damageMap.get(damager); damageMap.put(damager.getUniqueId(), victim.getHealth() < damage ? victim.getHealth() + oldDamage : damage + oldDamage); } else { damageMap.put(damager.getUniqueId(), victim.getHealth() < damage ? victim.getHealth() : damage); } break; } } } else { damageMap = new WeakHashMap<>(); damageMap.put(damager.getUniqueId(), victim.getHealth() < damage ? victim.getHealth() : damage); victim.setMetadata("DamageCount", new FixedMetadataValue(MyPetApi.getPlugin(), damageMap)); } }
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onEntityDeath(EntityDeathEvent event) { Entity entity = event.getEntity(); if (!(entity instanceof LivingEntity)) { return; } LivingEntity died = (LivingEntity)entity; String name = died.getCustomName(); if (name == null || name.isEmpty()) { EntityData mob = defaultMobs.get(died.getType()); if (mob != null && !died.hasMetadata("nodrops")) { mob.modifyDrops(controller, event); } return; } EntityData mob = mobsByName.get(name); if (mob == null) return; MagicMobDeathEvent deathEvent = new MagicMobDeathEvent(controller, mob, event); Bukkit.getPluginManager().callEvent(deathEvent); if (!died.hasMetadata("nodrops")) { mob.modifyDrops(controller, event); } // Prevent double-deaths .. gg Mojang? // Kind of hacky to use this flag for it, but seemed easiest died.setCustomNameVisible(false); died.setCustomName(null); }
/** * Resets any stopped movements and runs the {@link ResetTask} if able. */ public void reset() { if (this.runnable != null) { this.runnable.cancel(); } if (this.msg != null) { this.msg.cancel(); } if (!(this.entity instanceof Player)) { this.entity.setAI(true); } if (this.reset != null) { this.reset.run(); } if (this.entity.hasMetadata("movement:stop")) { this.entity.removeMetadata("movement:stop", ProjectKorra.plugin); } }
@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();
target.setMetadata(mcMMO.customVisibleKey, new FixedMetadataValue(mcMMO.p, oldNameVisible)); else if (!target.hasMetadata(mcMMO.customNameKey)) { target.setMetadata(mcMMO.customNameKey, new FixedMetadataValue(mcMMO.p, "")); target.setMetadata(mcMMO.customVisibleKey, new FixedMetadataValue(mcMMO.p, false));
/** * Monitor EntityTame events. * * @param event * The event to watch */ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityTame(EntityTameEvent event) { /* WORLD BLACKLIST CHECK */ if(WorldBlacklist.isWorldBlacklisted(event.getEntity().getWorld())) return; if (event instanceof FakeEntityTameEvent) { return; } Player player = (Player) event.getOwner(); /* WORLD GUARD MAIN FLAG CHECK */ if(WorldGuardUtils.isWorldGuardLoaded()) { if(!WorldGuardManager.getInstance().hasMainFlag(player)) return; } LivingEntity entity = event.getEntity(); if (!UserManager.hasPlayerDataKey(player) || Misc.isNPCEntity(entity) || entity.hasMetadata(mcMMO.entityMetadataKey)) { return; } entity.setMetadata(mcMMO.entityMetadataKey, mcMMO.metadataValue); UserManager.getPlayer(player).getTamingManager().awardTamingXP(entity); }
if (entity.hasMetadata("NPC")) { return targetsProcessed.contains(SentinelTarget.NPCS) || SentinelUtilities.isRegexTargeted(CitizensAPI.getNPCRegistry().getNPC(entity).getName(), byNpcName);
if (target.hasMetadata(mcMMO.entityMetadataKey)) { baseXP *= ExperienceConfig.getInstance().getSpawnedMobXpMultiplier(); if (target.hasMetadata(mcMMO.bredMetadataKey)) { baseXP *= ExperienceConfig.getInstance().getBredMobXpMultiplier();