Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.drazisil.petguard;
- import org.spongepowered.api.entity.EntityType;
- import org.spongepowered.api.entity.living.Living;
- import org.spongepowered.api.event.cause.CauseTracked;
- import org.spongepowered.api.event.entity.EntityChangeHealthEvent;
- import org.spongepowered.api.event.player.PlayerInteractEvent;
- import org.spongepowered.api.text.message.Messages;
- import org.spongepowered.api.util.event.Subscribe;
- import org.spongepowered.api.world.Location;
- import java.util.UUID;
- /**
- * Created by joseph on 12/20/2014.
- */
- public class PetGuardListener {
- private PetGuard plugin;
- public PetGuardListener(PetGuard plugin) {
- this.plugin = plugin;
- }
- /**
- *
- * @param event
- */
- @Subscribe
- public void onEntityEvent(EntityChangeHealthEvent event) {
- if (event.getEntity() instanceof Living) {
- /*
- The entity taking the damage
- */
- Living damagee;
- damagee = (Living) event.getEntity();
- /*
- the type of entity the damagee is
- */
- EntityType damageeType;
- damageeType = damagee.getType();
- /*
- The ID of the damagee
- */
- UUID uuid;
- uuid = damagee.getUniqueId();
- /*
- The location damage occurs
- */
- Location location;
- location = damagee.getLocation();
- /*
- The world name where the damagee is
- */
- String worldName;
- worldName = damagee.getWorld().getName();
- /*
- http://jd.bukkit.org/beta/apidocs/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html
- Damage cause types to check for:
- * BLOCK_EXPLOSION
- * CONTACT
- * CUSTOM
- * DROWNING
- * ENTITY_ATTACK
- * ENTITY_EXPLOSION
- * FALL
- * FALLING_BLOCK
- * FIRE
- * FIRE_TICK
- * LAVA
- * LIGHTNING
- * MAGIC
- * MELTING
- * POISON
- * PROJECTILE
- * STARVATION
- * SUFFOCATION
- * SUICIDE
- * THORNS
- * VOID
- * WITHER
- */
- CauseTracked cause;
- cause = (CauseTracked) event.getCause();
- plugin.game.broadcastMessage(Messages.of(worldName + " Ouch: " + damageeType.toString() + " by " + cause.toString()+""));
- }
- }
- @Subscribe
- public void onPlayerInteractEntity(PlayerInteractEvent event) {
- /*
- if (!this.plugin.isEntityPet(event.getRightClicked())) {
- this.plugin.debug("Not a horse: " + event.getRightClicked().getClass());
- if ((event.getRightClicked() instanceof Hanging)) {
- this.plugin.debug("hanging");
- Hanging h = (Hanging) event.getRightClicked();
- if ((h.getType() == EntityType.PAINTING) || (h.getType() == EntityType.ITEM_FRAME)) {
- return;
- }
- this.plugin.debug(h.getUniqueId());
- return;
- }
- return;
- }
- String owner = "";
- boolean owned = false;
- LivingEntity entityRightClicked = (LivingEntity) event.getRightClicked();
- Player player = event.getPlayer();
- ItemStack itemInHand = player.getItemInHand();
- this.plugin.debug("Horse being right clicked: " + this.plugin.getHorseName(null, entityRightClicked));
- if ((!player.hasPermission("PetGuard.admin")) && (player.hasPermission("PetGuard.punish.breed")) && ((event.getPlayer().getItemInHand().getType() == Material.GOLDEN_APPLE) || (event.getPlayer().getItemInHand().getType() == Material.GOLDEN_CARROT))) {
- this.plugin.local(player, "PUNISH_BREED");
- event.setCancelled(true);
- return;
- }
- owner = this.plugin.getPetOwner(entityRightClicked.getUniqueId().toString());
- if (owner != null) {
- owned = true;
- }
- if ((owned) && (itemInHand.getType() != Material.NAME_TAG) && (!owner.equals(player.getName())) && (!this.plugin.canRide(entityRightClicked, player))) {
- event.getPlayer().sendMessage(owner + " " + this.plugin.getLang("NOT_RIDER"));
- event.setCancelled(true);
- return;
- }
- if ((owned) && (itemInHand.getType() == Material.NAME_TAG) && (!itemInHand.getItemMeta().hasDisplayName())) {
- if (!owner.equals(player.getName())) {
- this.plugin.local(player, "NOT_OWNER");
- event.setCancelled(true);
- return;
- }
- this.plugin.local(player, "SET_FREE");
- this.plugin.removePet(entityRightClicked.getUniqueId().toString());
- entityRightClicked.setCustomName(null);
- event.setCancelled(true);
- return;
- }
- if ((owned) && (itemInHand.getType() == Material.NAME_TAG) && (itemInHand.getItemMeta().hasDisplayName()) && (!owner.equals(player.getName()))) {
- this.plugin.local(player, "NOT_OWNER");
- event.setCancelled(true);
- return;
- }
- if ((owned) && (itemInHand.getType() == Material.NAME_TAG) && (itemInHand.getItemMeta().hasDisplayName()) && (owner.equals(player.getName()))) {
- String horseName = itemInHand.getItemMeta().getDisplayName().replace("'", "`");
- this.plugin.nameHorse(event.getRightClicked().getUniqueId().toString(), horseName);
- return;
- }
- if ((!owned) && (itemInHand.getType() == Material.NAME_TAG) && (itemInHand.getItemMeta().hasDisplayName())) {
- String name = itemInHand.getItemMeta().getDisplayName();
- if ((name.contains(";")) || (name.contains("\\"))) {
- player.sendMessage("That is an invalid name tag. Please rename the tag before trying to claim this horse.");
- event.setCancelled(true);
- return;
- }
- if ((player.hasPermission("PetGuard.punish.name")) && (!player.hasPermission("PetGuard.admin"))) {
- this.plugin.local(player, "PUNISH_NAME");
- event.setCancelled(true);
- return;
- }
- if (event.isCancelled()) {
- this.plugin.debug("Event cancelled outside of PetGuard .. Cancelling here.");
- return;
- }
- if (!this.plugin.addPetToDatabase(player, event.getRightClicked(), false)) {
- event.setCancelled(true);
- }
- }
- */
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement