@EventHandler public void onEntityTameEvent(EntityTameEvent event) { /* Get the entity being tamed. */ LivingEntity entity = event.getEntity(); if (StackUtils.hasRequiredData(entity)) { /* Get the new quantity. Current size, less one (One being tamed) */ int newQuantity = StackUtils.getStackSize(entity) - 1; /* Clear the name of the entity that was just tamed. */ entity.setCustomName(""); /* If there are any mobs remaining in the stack, then peel em off to form a new stack. */ if (newQuantity > 0) { LivingEntity newEntity = getPlugin().getStackUtils().peelOffStack(entity, false); /* If there was an age in question, then assign it. */ if (newEntity instanceof Ageable) { ((Ageable) newEntity).setAge(((Ageable) event.getEntity()).getAge()); } /* * Yes I know the following aren't possible, but if someone uses a plugin that allows for taming of other mobs through NMS, * then this will account for that. */ /* If the stack had a colour, assign it. */ if (newEntity instanceof Colorable) { ((Colorable) newEntity).setColor(((Colorable) event.getEntity()).getColor()); } /* If it was a sheep, keep it's sheared status. */ if (newEntity instanceof Sheep) { ((Sheep) newEntity).setSheared(((Sheep) event.getEntity()).isSheared()); } } } }
@EventHandler(priority = EventPriority.MONITOR) public void onEntityTame(EntityTameEvent event) { if (event.isCancelled() == false && event.getOwner() instanceof Player && !worlds.contains(event.getEntity().getWorld().getName())) { playerStatManager .getPlayerBlob(((Player) event.getOwner()).getName()) .getStat("stats", "tame" + event.getEntity().getType().toString().replace("_", "")) .incrementStat(1); } }
/** * Monitor EntityTame events. * * @param event The event to watch */ @EventHandler(priority = EventPriority.MONITOR) public void onEntityTame(EntityTameEvent event) { Player player = (Player) event.getOwner(); if (mcPermissions.getInstance().taming(player) && !event.getEntity().hasMetadata("mcmmoSummoned")) { PlayerProfile PP = Users.getProfile(player); EntityType type = event.getEntityType(); int xp = 0; switch (type) { case WOLF: xp = LoadProperties.mtameWolf; break; case OCELOT: xp = LoadProperties.mtameOcelot; break; default: break; } PP.addXP(SkillType.TAMING, xp); Skills.XpCheckSkill(SkillType.TAMING, player); } }
@EventHandler public void onTaming(EntityTameEvent event) { if (event.getOwner() instanceof Player) { String playerID = PlayerConverter.getID((Player) event.getOwner()); if (!dataMap.containsKey(playerID)) { return; } LivingEntity entity = event.getEntity(); TameData playerData = (TameData) dataMap.get(playerID); switch (type) { case WOLF: if (entity.getType().equals(EntityType.WOLF) && checkConditions(playerID)) { playerData.subtract(); } break; case OCELOT: if (entity.getType().equals(EntityType.OCELOT) && checkConditions(playerID)) { playerData.subtract(); } break; case HORSE: if (entity.getType().equals(EntityType.HORSE) && checkConditions(playerID)) { playerData.subtract(); } break; default: break; } if (playerData.isZero()) { completeObjective(playerID); } } }
/** * Monitor EntityTame events. * * @param event The event to watch */ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onEntityTame(EntityTameEvent event) { Player player = (Player) event.getOwner(); LivingEntity entity = event.getEntity(); if (Misc.isNPCEntity(player) || Misc.isNPCEntity(entity) || entity.hasMetadata(mcMMO.entityMetadataKey)) { return; } UserManager.getPlayer(player).getTamingManager().awardTamingXP(entity); }