From 10ce764af173bb1961590df860d7aedb75aca479 Mon Sep 17 00:00:00 2001 From: mcmonkey4eva Date: Sun, 15 Sep 2013 14:47:20 -0700 Subject: [PATCH] Fix null projectile-related debug spam --- .../aufdemrand/denizen/objects/dEntity.java | 123 +++++---- .../containers/core/WorldScriptHelper.java | 260 +++++++++--------- 2 files changed, 193 insertions(+), 190 deletions(-) diff --git a/src/main/java/net/aufdemrand/denizen/objects/dEntity.java b/src/main/java/net/aufdemrand/denizen/objects/dEntity.java index 5d3e344f6f..568cf624c7 100644 --- a/src/main/java/net/aufdemrand/denizen/objects/dEntity.java +++ b/src/main/java/net/aufdemrand/denizen/objects/dEntity.java @@ -335,7 +335,7 @@ public NPC getNPC() { return CitizensAPI.getNPCRegistry().getNPC(entity); } - + /** * Get the dNPC corresponding to this entity * @@ -377,7 +377,7 @@ public Player getPlayer() { public boolean isPlayer() { return !isNPC() && entity instanceof Player; } - + /** * Get this entity as a Projectile * @@ -385,10 +385,10 @@ public boolean isPlayer() { */ public Projectile getProjectile() { - + return (Projectile) entity; } - + /** * Check whether this entity is a Projectile * @@ -398,7 +398,7 @@ public Projectile getProjectile() { public boolean isProjectile() { return entity instanceof Projectile; } - + /** * Get this Projectile entity's shooter * @@ -406,27 +406,30 @@ public boolean isProjectile() { */ public dEntity getShooter() { - return new dEntity(getProjectile().getShooter()); + if (isProjectile() && hasShooter()) + return new dEntity(getProjectile().getShooter()); + else + return null; } - + /** * Set this Projectile entity's shooter - * + * */ public void setShooter(dEntity shooter) { - if (shooter.isLivingEntity()) + if (isProjectile() && shooter.isLivingEntity()) getProjectile().setShooter(shooter.getLivingEntity()); } - + /** * Check whether this entity has a shooter. * * @return true or false */ - + public boolean hasShooter() { - return getProjectile().getShooter() != null; + return isProjectile() && getProjectile().getShooter() != null; } /** @@ -869,7 +872,7 @@ public String getAttribute(Attribute attribute) { dB.echoDebug("dEntity has returned null."); return "null"; } - + ///////////////////// // DEBUG ATTRIBUTES ///////////////// @@ -907,7 +910,7 @@ public String getAttribute(Attribute attribute) { return new Element(debug()) .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element @@ -917,7 +920,7 @@ public String getAttribute(Attribute attribute) { if (attribute.startsWith("prefix")) return new Element(prefix) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns Element @@ -928,12 +931,12 @@ public String getAttribute(Attribute attribute) { return new Element(getObjectType()) .getAttribute(attribute.fulfill(1)); } - - + + ///////////////////// // IDENTIFICATION ATTRIBUTES ///////////////// - + // <--[tag] // @attribute // @returns dScript/Element @@ -949,7 +952,7 @@ public String getAttribute(Attribute attribute) { return new Element(entity.getType().name()) .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element @@ -961,7 +964,7 @@ public String getAttribute(Attribute attribute) { if (getLivingEntity().getCustomName() == null) return "null"; return new Element(getLivingEntity().getCustomName()).getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Number) @@ -988,7 +991,7 @@ public String getAttribute(Attribute attribute) { return new Element(entity.getType().getName()) .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element @@ -998,12 +1001,12 @@ public String getAttribute(Attribute attribute) { if (attribute.startsWith("uuid")) return new Element(entity.getUniqueId().toString()) .getAttribute(attribute.fulfill(1)); - - + + ///////////////////// // INVENTORY ATTRIBUTES ///////////////// - + // <--[tag] // @attribute // @returns dInventory @@ -1013,8 +1016,8 @@ public String getAttribute(Attribute attribute) { if (attribute.startsWith("equipment")) { return new dInventory(getLivingEntity()).getAttribute(attribute.fulfill(1)); } - - + + ///////////////////// // LOCATION ATTRIBUTES ///////////////// @@ -1031,7 +1034,7 @@ public String getAttribute(Attribute attribute) { return new Element(getLivingEntity().hasLineOfSight(toEntity.getBukkitEntity())).getAttribute(attribute.fulfill(1)); } } - + // <--[tag] // @attribute // @returns dLocation @@ -1041,7 +1044,7 @@ public String getAttribute(Attribute attribute) { if (attribute.startsWith("eye_location")) return new dLocation(getEyeLocation()) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1056,7 +1059,7 @@ public String getAttribute(Attribute attribute) { return new Element("null") .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns dLocation @@ -1090,7 +1093,7 @@ public String getAttribute(Attribute attribute) { return new dLocation(entity.getLocation()) .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns dWorld @@ -1101,12 +1104,12 @@ public String getAttribute(Attribute attribute) { return new dWorld(entity.getWorld()) .getAttribute(attribute.fulfill(1)); } - - + + ///////////////////// // STATE ATTRIBUTES ///////////////// - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1116,7 +1119,7 @@ public String getAttribute(Attribute attribute) { if (attribute.startsWith("can_pickup_items")) return new Element(getLivingEntity().getCanPickupItems()) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns Element(Float) @@ -1126,7 +1129,7 @@ public String getAttribute(Attribute attribute) { if (attribute.startsWith("fall_distance")) return new Element(entity.getFallDistance()) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns Duration @@ -1136,7 +1139,7 @@ public String getAttribute(Attribute attribute) { if (attribute.startsWith("fire_time")) return new Duration(entity.getFireTicks() / 20) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns dPlayer @@ -1151,7 +1154,7 @@ public String getAttribute(Attribute attribute) { else return new Element("null") .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns dPlayer @@ -1166,7 +1169,7 @@ else return new Element("null") return new Element("null") .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns dEntity @@ -1196,7 +1199,7 @@ else return new Element("null") else return new Element("null") .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute ]> // @returns Element(Boolean) @@ -1214,7 +1217,7 @@ else return new Element("null") else if (!getLivingEntity().getActivePotionEffects().isEmpty()) returnElement = true; return new Element(returnElement).getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element @@ -1237,7 +1240,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) else return new Element("healthy").getAttribute(attribute.fulfill(2)); } - + // <--[tag] // @attribute // @returns Element(Number) @@ -1271,7 +1274,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("health")) return new Element(getLivingEntity().getHealth()) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1281,7 +1284,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("is_empty")) return new Element(entity.isEmpty()) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1291,7 +1294,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("is_inside_vehicle")) return new Element(entity.isInsideVehicle()) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1306,7 +1309,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) return Element.FALSE .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1316,7 +1319,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("is_on_ground")) return new Element(entity.isOnGround()) .getAttribute(attribute.fulfill(1)); - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1331,7 +1334,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) return Element.FALSE .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1347,7 +1350,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) return Element.FALSE .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns dPlayer @@ -1367,7 +1370,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("last_damage.amount")) return new Element(getLivingEntity().getLastDamage()) .getAttribute(attribute.fulfill(2)); - + // <--[tag] // @attribute // @returns Element @@ -1377,7 +1380,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("last_damage.cause")) return new Element(entity.getLastDamageCause().getCause().name()) .getAttribute(attribute.fulfill(2)); - + // <--[tag] // @attribute // @returns Duration @@ -1387,7 +1390,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("last_damage.duration")) return new Duration((long) getLivingEntity().getNoDamageTicks()) .getAttribute(attribute.fulfill(2)); - + // <--[tag] // @attribute // @returns Duration @@ -1397,12 +1400,12 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("time_lived")) return new Duration(entity.getTicksLived() / 20) .getAttribute(attribute.fulfill(1)); - - + + ///////////////////// // TYPE ATTRIBUTES ///////////////// - + // <--[tag] // @attribute // @returns Element @@ -1412,7 +1415,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) if (attribute.startsWith("entity_type")) { return new Element(entity_type.name()).getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1423,7 +1426,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) return new Element(isLivingEntity()) .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1435,7 +1438,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) return Element.TRUE.getAttribute(attribute.fulfill(1)); else return Element.FALSE.getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1446,7 +1449,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) return new Element(isNPC()) .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1457,7 +1460,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) return new Element(isPlayer()) .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Boolean) @@ -1468,7 +1471,7 @@ else if ((float) getLivingEntity().getHealth() / maxHealth < 1) return new Element(isProjectile()) .getAttribute(attribute.fulfill(1)); } - + // <--[tag] // @attribute // @returns Element(Boolean) diff --git a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java index a0b8e495f6..bac6225b7b 100644 --- a/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java +++ b/src/main/java/net/aufdemrand/denizen/scripts/containers/core/WorldScriptHelper.java @@ -80,7 +80,7 @@ public WorldScriptHelper() { DenizenAPI.getCurrentInstance().getServer().getPluginManager() .registerEvents(this, DenizenAPI.getCurrentInstance()); } - + ///////////////////// // EVENT HANDLER @@ -109,7 +109,7 @@ public static String doEvents(List eventNames, dNPC npc, Player player, List entries = script.getEntries (player != null ? new dPlayer(player) : null, npc, "events.on " + eventName); - + if (entries.isEmpty()) continue; dB.report("Event", @@ -336,7 +336,7 @@ public void blockDamage(BlockDamageEvent event) { if (determination.toUpperCase().startsWith("INSTABREAK")) event.setInstaBreak(true); } - + // <--[event] // @Events // block dispenses item @@ -370,10 +370,10 @@ public void blockDispense(BlockDispenseEvent event) { material.identify() + " dispenses item", material.identify() + " dispenses " + item.identify()), null, null, context); - + if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); - + else if (Argument.valueOf(determination) .matchesPrimitive(aH.PrimitiveType.Double)) { event.setVelocity(event.getVelocity().normalize() @@ -412,7 +412,7 @@ public void blockFade(BlockFadeEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // block spreads @@ -446,7 +446,7 @@ public void blockFromTo(BlockFromToEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // block grows @@ -542,7 +542,7 @@ public void blockPhysics(BlockPhysicsEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // piston extends @@ -576,7 +576,7 @@ public void blockPistonExtend(BlockPistonExtendEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // piston retracts @@ -685,7 +685,7 @@ public void blockRedstone(BlockRedstoneEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setNewCurrent(event.getOldCurrent()); } - + // <--[event] // @Events // brewing stand brews @@ -714,7 +714,7 @@ public void brew(BrewEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // furnace burns item @@ -751,7 +751,7 @@ else if (Argument.valueOf(determination) event.setBurnTime(aH.getIntegerFrom(determination)); } } - + // <--[event] // @Events // player takes item from furnace @@ -788,7 +788,7 @@ public void furnaceExtract(FurnaceExtractEvent event) { event.setExpToDrop(aH.getIntegerFrom(determination)); } } - + // <--[event] // @Events // furnace smelts item (into ) @@ -829,7 +829,7 @@ else if (dItem.matches(determination)) { event.setResult(dItem.valueOf(determination).getItemStack()); } } - + // <--[event] // @Events // leaves decay @@ -955,7 +955,7 @@ public void timeEvent() { hour = hour + 6; // Get the hour if (hour >= 24) hour = hour - 24; - + dWorld currentWorld = new dWorld(world); if (!current_time.containsKey(currentWorld.identify()) @@ -1003,7 +1003,7 @@ public void hangingBreak(HangingBreakEvent event) { Player player = null; dNPC npc = null; - + Map context = new HashMap(); dEntity hanging = new dEntity(event.getEntity()); String hangingType = hanging.getEntityType().name(); @@ -1068,7 +1068,7 @@ else if (entity.isPlayer()) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // player places hanging @@ -1144,7 +1144,7 @@ public void creatureSpawn(CreatureSpawnEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // creeper powered (because ) @@ -1179,7 +1179,7 @@ public void creeperPower(CreeperPowerEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // entity changes block @@ -1284,7 +1284,7 @@ public void entityDamage(EntityDamageEvent event) { Player player = null; dNPC npc = null; String determination; - + Map context = new HashMap(); dEntity entity = new dEntity(event.getEntity()); String entityType = entity.getEntityType().name(); @@ -1301,7 +1301,7 @@ public void entityDamage(EntityDamageEvent event) { else if (entity.isPlayer()) { player = entity.getPlayer(); } - + boolean isFatal = false; if (entity.isValid()) { @@ -1394,7 +1394,7 @@ else if (damager.isPlayer()) { // If we had no player in our regular context, use this one if (player == null) player = subPlayer; } - + // If the damager is a projectile, add its shooter (which can be null) // to the context else if (damager.isProjectile()) { @@ -1541,7 +1541,7 @@ public void entityRegainHealth(EntityRegainHealthEvent event) { dNPC npc = null; context.put("entity", entity); - + if (entity.isNPC()) { npc = entity.getDenizenNPC(); entityType = "npc"; @@ -1565,7 +1565,7 @@ else if (Argument.valueOf(determination) event.setAmount(aH.getDoubleFrom(determination)); } } - + // <--[event] // @Events // entity enters portal @@ -1592,7 +1592,7 @@ public void entityPortalEnter(EntityPortalEnterEvent event) { entityType + " enters portal"), null, null, context); } - + // <--[event] // @Events // entity exits portal @@ -1641,16 +1641,16 @@ public void entityShootBow(EntityShootBowEvent event) { Map context = new HashMap(); Player player = null; dNPC npc = null; - + dItem bow = new dItem(event.getBow()); - dEntity projectile = new dEntity(event.getProjectile()); + dEntity projectile = new dEntity(event.getProjectile()); dEntity entity = new dEntity(event.getEntity()); String entityType = entity.getEntityType().name(); context.put("bow", bow); context.put("projectile", projectile); context.put("entity", entity); - + if (entity.isNPC()) { npc = entity.getDenizenNPC(); entityType = "npc"; @@ -1731,7 +1731,7 @@ else if (Argument.valueOf(determination).matchesArgumentList(dEntity.class)) { public void entityTame(EntityTameEvent event) { Player player = null; - + Map context = new HashMap(); dEntity entity = new dEntity(event.getEntity()); String entityType = entity.getEntityType().name(); @@ -1776,7 +1776,7 @@ public void entityTarget(EntityTargetEvent event) { Player player = null; dNPC npc = null; - + Map context = new HashMap(); final dEntity entity = new dEntity(event.getEntity()); @@ -1797,7 +1797,7 @@ public void entityTarget(EntityTargetEvent event) { dEntity target = new dEntity(event.getTarget()); String targetType = target.getEntityType().name(); context.put("target", target); - + if (target.isNPC()) { npc = target.getDenizenNPC(); targetType = "npc"; @@ -1872,7 +1872,7 @@ public void entityTeleport(EntityTeleportEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // entity unleashed (because ) @@ -1974,7 +1974,7 @@ else if (Argument.valueOf(determination) event.setFoodLevel(aH.getIntegerFrom(determination)); } } - + // <--[event] // @Events // horse jumps @@ -2095,7 +2095,7 @@ public void itemSpawn(ItemSpawnEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // pig zapped @@ -2128,7 +2128,7 @@ public void pigZap(PigZapEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // projectile hits block @@ -2142,10 +2142,10 @@ public void pigZap(PigZapEvent event) { // --> @EventHandler public void projectileHit(ProjectileHitEvent event) { - + Player player = null; dNPC npc = null; - + Map context = new HashMap(); dEntity entity = new dEntity(event.getEntity()); String entityType = entity.getEntityType().name(); @@ -2154,13 +2154,13 @@ public void projectileHit(ProjectileHitEvent event) { context.put("entity", entity); context.put("shooter", shooter); - if (shooter.isNPC()) { + if (shooter != null && shooter.isNPC()) { npc = shooter.getDenizenNPC(); } - if (shooter.isPlayer()) { + if (shooter != null && shooter.isPlayer()) { player = shooter.getPlayer(); } - + Block hit = null; BlockIterator bi = new BlockIterator(entity.getLocation().getWorld(), entity.getLocation().toVector(), entity.getLocation().getDirection().normalize(), 0, 4); while(bi.hasNext()) { @@ -2169,7 +2169,7 @@ public void projectileHit(ProjectileHitEvent event) { break; } } - + doEvents(Arrays.asList ("projectile hits block", entityType + " hits block", @@ -2177,7 +2177,7 @@ public void projectileHit(ProjectileHitEvent event) { entityType + " hits " + hit.getType().name()), npc, player, context); } - + // <--[event] // @Events // player dyes sheep () @@ -2214,7 +2214,7 @@ public void sheepDyeWool(SheepDyeWoolEvent event) { else if (DyeColor.valueOf(determination) != null) event.setColor(DyeColor.valueOf(determination)); } - + // <--[event] // @Events // sheep regrows wool @@ -2241,7 +2241,7 @@ public void sheepRegrowWool(SheepRegrowWoolEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // slime splits (into <#>) @@ -2315,11 +2315,11 @@ public void enchantItemEvent(EnchantItemEvent event) { ("item enchanted", item.identify() + " enchanted"), null, player, context); - + if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // player () clicks () (in ) @@ -2360,7 +2360,7 @@ public void inventoryClickEvent(InventoryClickEvent event) { events.add(interaction + " in " + type); if (event.getCurrentItem() != null) { - + item = new dItem(event.getCurrentItem()); dMaterial itemMaterial = item.getMaterial(); @@ -2377,7 +2377,7 @@ public void inventoryClickEvent(InventoryClickEvent event) { events.add(interaction + itemMaterial.identify() + " in " + type); } - + context.put("item", item); String determination = doEvents(events, null, player, context); @@ -2441,7 +2441,7 @@ public void inventoryDragEvent(InventoryDragEvent event) { events.add("player drags in " + type); if (event.getOldCursor() != null) { - + item = new dItem(event.getOldCursor()); dMaterial itemMaterial = item.getMaterial(); @@ -2458,7 +2458,7 @@ public void inventoryDragEvent(InventoryDragEvent event) { events.add("player drags " + itemMaterial.identify() + " in " + type); } - + context.put("item", item); String determination = doEvents(events, null, player, context); @@ -2466,7 +2466,7 @@ public void inventoryDragEvent(InventoryDragEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // item moves from inventory (to ) @@ -2545,7 +2545,7 @@ public void inventoryOpenEvent(InventoryOpenEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // inventory picks up item @@ -2638,7 +2638,7 @@ else if (!determination.equals("none")) { event.setMessage(determination); } } - + // <--[event] // @Events // player animates () @@ -2791,7 +2791,7 @@ public void playerBucketFill(PlayerBucketFillEvent event) { // // @Triggers when a player moves to a different world. // @Context - // returns the dWorld that the player was previously on. + // returns the dWorld that the player was previously on. // // --> @EventHandler @@ -2810,7 +2810,7 @@ public void playerChangedWorld(PlayerChangedWorldEvent event) { " to " + destinationWorld.identify()), null, event.getPlayer(), context); } - + // Shares description with asyncPlayerChat @EventHandler public void playerChat(final PlayerChatEvent event) { @@ -2941,7 +2941,7 @@ public void playerCommandPreprocess(PlayerCommandPreprocessEvent event) { // // @Triggers when a player dies. // @Context - // returns an Element of the death message. + // returns an Element of the death message. // // @Determine // Element(String) to change the death message. @@ -2963,7 +2963,7 @@ public void playerDeath(PlayerDeathEvent event) { event.setDeathMessage(determination); } } - + // <--[event] // @Events // player drops item @@ -2981,7 +2981,7 @@ public void playerDeath(PlayerDeathEvent event) { // --> @EventHandler public void playerDropItem(PlayerDropItemEvent event) { - + Map context = new HashMap(); dItem item = new dItem(event.getItemDrop().getItemStack()); context.put("item", item); @@ -2998,7 +2998,7 @@ public void playerDropItem(PlayerDropItemEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // player throws (hatching/non-hatching) egg @@ -3014,7 +3014,7 @@ public void playerDropItem(PlayerDropItemEvent event) { // --> @EventHandler public void playerEggThrow(PlayerEggThrowEvent event) { - + Map context = new HashMap(); dEntity egg = new dEntity(event.getEgg()); context.put("egg", egg); @@ -3022,7 +3022,7 @@ public void playerEggThrow(PlayerEggThrowEvent event) { List events = new ArrayList(); events.add("player throws egg"); - + if (event.isHatching()) events.add("player throws hatching egg"); else events.add("player throws non-hatching egg"); @@ -3053,7 +3053,7 @@ public void playerFish(PlayerFishEvent event) { dNPC npc = null; - + String state = event.getState().name(); Map context = new HashMap(); @@ -3065,7 +3065,7 @@ public void playerFish(PlayerFishEvent event) { events.add("player fishes while " + state); if (event.getCaught() != null) { - + dEntity entity = new dEntity(event.getCaught()); String entityType = entity.getEntityType().name(); context.put("entity", entity); @@ -3198,7 +3198,7 @@ public void playerInteractEntity(PlayerInteractEntityEvent event) { String determination; dNPC npc = null; - + dItem item = new dItem(event.getPlayer().getItemInHand()); dMaterial itemMaterial = item.getMaterial(); dEntity entity = new dEntity(event.getRightClicked()); @@ -3207,7 +3207,7 @@ public void playerInteractEntity(PlayerInteractEntityEvent event) { Map context = new HashMap(); context.put("location", new dLocation(event.getRightClicked().getLocation())); context.put("entity", entity); - + if (entity.isNPC()) { npc = entity.getDenizenNPC(); entityType = "npc"; @@ -3281,7 +3281,7 @@ public void playerItemConsume(PlayerItemConsumeEvent event) { // // @Triggers when a player joins the server. // @Context - // returns an Element of the join message. + // returns an Element of the join message. // // @Determine // Element(String) to change the join message. @@ -3289,7 +3289,7 @@ public void playerItemConsume(PlayerItemConsumeEvent event) { // --> @EventHandler public void playerJoinEvent(PlayerJoinEvent event) { - + Map context = new HashMap(); context.put("message", new Element(event.getJoinMessage())); @@ -3303,14 +3303,14 @@ public void playerJoinEvent(PlayerJoinEvent event) { event.setJoinMessage(determination); } } - + // <--[event] // @Events // player kicked // // @Triggers when a player is kicked from the server. // @Context - // returns an Element of the kick message. + // returns an Element of the kick message. // // @Determine // Element(String) to change the kick message. @@ -3330,7 +3330,7 @@ public void playerKick(PlayerKickEvent event) { event.setLeaveMessage(determination); } } - + // <--[event] // @Events // player leashes entity @@ -3387,7 +3387,7 @@ public void playerLevelChange(PlayerLevelChangeEvent event) { // // @Triggers when a player logs in to the server. // @Context - // returns an Element of the player's hostname. + // returns an Element of the player's hostname. // // @Determine // "KICKED" to kick the player from the server. @@ -3407,7 +3407,7 @@ public void playerLogin(PlayerLoginEvent event) { if (determination.toUpperCase().startsWith("KICKED")) event.disallow(PlayerLoginEvent.Result.KICK_OTHER, determination); } - + // <--[event] // @Events // player walks over notable @@ -3443,7 +3443,7 @@ public void playerMove(PlayerMoveEvent event) { event.setCancelled(true); } } - + // <--[event] // @Events // player picks up item @@ -3463,7 +3463,7 @@ public void playerMove(PlayerMoveEvent event) { // --> @EventHandler public void playerPickupItem(PlayerPickupItemEvent event) { - + Map context = new HashMap(); dItem item = new dItem(event.getItem().getItemStack()); context.put("item", item); @@ -3490,7 +3490,7 @@ public void playerPickupItem(PlayerPickupItemEvent event) { // // @Triggers when a player quit the server. // @Context - // returns an Element of the quit message. + // returns an Element of the quit message. // // @Determine // Element(String) to change the quit message. @@ -3518,7 +3518,7 @@ public void playerQuit(PlayerQuitEvent event) { // // @Triggers when a player respawns. // @Context - // returns a dLocation of the respawn location. + // returns a dLocation of the respawn location. // // @Determine // dLocation to change the respawn location. @@ -3526,7 +3526,7 @@ public void playerQuit(PlayerQuitEvent event) { // --> @EventHandler public void playerRespawn(PlayerRespawnEvent event) { - + Map context = new HashMap(); context.put("location", new dLocation(event.getRespawnLocation())); @@ -3544,7 +3544,7 @@ public void playerRespawn(PlayerRespawnEvent event) { if (location != null) event.setRespawnLocation(location); } } - + // <--[event] // @Events // player shears entity @@ -3565,13 +3565,13 @@ public void playerShearEntity(PlayerShearEntityEvent event) { Map context = new HashMap(); dEntity entity = new dEntity(event.getEntity()); String entityType = entity.getEntityType().name(); - + context.put("entity", entity); - + List events = new ArrayList(); events.add("player shears entity"); events.add("player shears " + entityType); - + if (entity.getEntityType().equals(EntityType.SHEEP)) { String color = ((Sheep) entity.getBukkitEntity()).getColor().name(); events.add("player shears " + color + " sheep"); @@ -3582,7 +3582,7 @@ public void playerShearEntity(PlayerShearEntityEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // player toggles flight @@ -3610,7 +3610,7 @@ public void playerToggleFlight(PlayerToggleFlightEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // player toggles sneak @@ -3638,7 +3638,7 @@ public void playerToggleSneak(PlayerToggleSneakEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // player toggles sprint @@ -3675,7 +3675,7 @@ public void playerToggleSprint(PlayerToggleSprintEvent event) { // Shares description with playerCommandPreprocess @EventHandler public void serverCommand(ServerCommandEvent event) { - + Map context = new HashMap(); List args = Arrays.asList( @@ -3718,27 +3718,27 @@ public void serverCommand(ServerCommandEvent event) { // --> @EventHandler public void vehicleBlockCollision(VehicleBlockCollisionEvent event) { - + Player player = null; dNPC npc = null; dEntity vehicle = new dEntity(event.getVehicle()); String vehicleType = vehicle.getEntityType().name(); dMaterial material = new dMaterial(event.getBlock().getType()); - + Map context = new HashMap(); context.put("vehicle", vehicle); context.put("location", new dLocation(event.getBlock().getLocation())); - + List events = new ArrayList(); events.add("vehicle collides with block"); events.add("vehicle collides with " + material.identify()); events.add(vehicleType + " collides with block"); events.add(vehicleType + " collides with " + material.identify()); - + doEvents(events, npc, player, context); } - + // <--[event] // @Events // vehicle collides with entity @@ -3758,7 +3758,7 @@ public void vehicleBlockCollision(VehicleBlockCollisionEvent event) { // --> @EventHandler public void vehicleEntityCollision(VehicleEntityCollisionEvent event) { - + Player player = null; dNPC npc = null; @@ -3766,25 +3766,25 @@ public void vehicleEntityCollision(VehicleEntityCollisionEvent event) { String vehicleType = vehicle.getEntityType().name(); dEntity entity = new dEntity(event.getEntity()); String entityType = entity.getEntityType().name(); - + Map context = new HashMap(); context.put("vehicle", vehicle); context.put("entity", entity); - + List events = new ArrayList(); events.add("vehicle collides with entity"); events.add("vehicle collides with " + entityType); events.add(vehicleType + " collides with entity"); events.add(vehicleType + " collides with " + entityType); - + String determination = doEvents(events, npc, player, context); - + if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); if (determination.toUpperCase().startsWith("NOPICKUP")) event.setPickupCancelled(true); } - + // <--[event] // @Events // vehicle created @@ -3800,12 +3800,12 @@ public void vehicleEntityCollision(VehicleEntityCollisionEvent event) { // --> @EventHandler public void vehicleCreate(VehicleCreateEvent event) { - + Map context = new HashMap(); dEntity vehicle = new dEntity(event.getVehicle()); String vehicleType = vehicle.getEntityType().name(); - + context.put("vehicle", vehicle); doEvents(Arrays.asList @@ -3813,7 +3813,7 @@ public void vehicleCreate(VehicleCreateEvent event) { vehicleType + " created"), null, null, context); } - + // <--[event] // @Events // vehicle damaged @@ -3841,21 +3841,21 @@ public void vehicleDamage(VehicleDamageEvent event) { dEntity vehicle = new dEntity(event.getVehicle()); String vehicleType = vehicle.getEntityType().name(); - + Map context = new HashMap(); context.put("damage", new Element(event.getDamage())); context.put("vehicle", vehicle); - + List events = new ArrayList(); events.add("vehicle damaged"); events.add(vehicleType + " damaged"); - + if (event.getAttacker() != null) { dEntity entity = new dEntity(event.getAttacker()); String entityType = entity.getEntityType().name(); context.put("entity", entity); - + if (entity.isPlayer()) { player = entity.getPlayer(); } @@ -3863,7 +3863,7 @@ public void vehicleDamage(VehicleDamageEvent event) { npc = entity.getDenizenNPC(); entityType = "npc"; } - + events.add("entity damages vehicle"); events.add("entity damages " + vehicleType); events.add(entityType + " damages vehicle"); @@ -3902,26 +3902,26 @@ public void vehicleDestroy(VehicleDestroyEvent event) { // "CANCELLED" to stop the entity from destroying the vehicle. // // --> - + Player player = null; dNPC npc = null; dEntity vehicle = new dEntity(event.getVehicle()); String vehicleType = vehicle.getEntityType().name(); - + Map context = new HashMap(); context.put("vehicle", vehicle); - + List events = new ArrayList(); events.add("vehicle destroyed"); events.add(vehicleType + " destroyed"); - + if (event.getAttacker() != null) { dEntity entity = new dEntity(event.getAttacker()); String entityType = entity.getEntityType().name(); context.put("entity", entity); - + if (entity.isPlayer()) { player = entity.getPlayer(); } @@ -3929,7 +3929,7 @@ public void vehicleDestroy(VehicleDestroyEvent event) { npc = entity.getDenizenNPC(); entityType = "npc"; } - + events.add("entity destroys vehicle"); events.add("entity destroys " + vehicleType); events.add(entityType + " destroys vehicle"); @@ -3963,12 +3963,12 @@ public void vehicleEnter(VehicleEnterEvent event) { Player player = null; dNPC npc = null; - + Map context = new HashMap(); dEntity vehicle = new dEntity(event.getVehicle()); String vehicleType = vehicle.getEntityType().name(); - + dEntity entity = new dEntity(event.getEntered()); String entityType = entity.getEntityType().name(); @@ -4014,12 +4014,12 @@ public void vehicleExit(VehicleExitEvent event) { Player player = null; dNPC npc = null; - + Map context = new HashMap(); dEntity vehicle = new dEntity(event.getVehicle()); String vehicleType = vehicle.getEntityType().name(); - + dEntity entity = new dEntity(event.getExited()); String entityType = entity.getEntityType().name(); @@ -4119,12 +4119,12 @@ public void weatherChange(WeatherChangeEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - - + + ///////////////////// // WORLD EVENTS ///////////////// - + // <--[event] // @Events // portal created (in ) (because ) @@ -4147,7 +4147,7 @@ public void portalCreate(PortalCreateEvent event) { context.put("world", world); context.put("reason", new Element(reason)); - + String determination = doEvents(Arrays.asList ("portal created", "portal created because " + reason, @@ -4158,7 +4158,7 @@ public void portalCreate(PortalCreateEvent event) { if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // spawn changes (in ) @@ -4179,7 +4179,7 @@ public void spawnChange(SpawnChangeEvent event) { context.put("world", world); context.put("old_location", new dLocation(event.getPreviousLocation())); context.put("new_location", new dLocation(world.getWorld().getSpawnLocation())); - + doEvents(Arrays.asList ("spawn changes", "spawn changes in " + world.identify()), @@ -4217,7 +4217,7 @@ public void structureGrow(StructureGrowEvent event) { events.add("structure grows in " + world.identify()); events.add(treeType + " grows"); events.add(treeType + " grows in " + world.identify()); - + if (event.isFromBonemeal()) { events.add("structure grows from bonemeal"); events.add("structure grows from bonemeal in " + world.identify()); @@ -4230,13 +4230,13 @@ public void structureGrow(StructureGrowEvent event) { events.add(treeType + " grows naturally"); events.add(treeType + " grows naturally in " + world.identify()); } - + String determination = doEvents(events, null, null, context); if (determination.toUpperCase().startsWith("CANCELLED")) event.setCancelled(true); } - + // <--[event] // @Events // world initializes @@ -4254,13 +4254,13 @@ public void worldInit(WorldInitEvent event) { dWorld world = new dWorld(event.getWorld()); context.put("world", world); - + doEvents(Arrays.asList ("world initializes", world.identify() + " initializes"), null, null, context); } - + // <--[event] // @Events // world loads @@ -4278,13 +4278,13 @@ public void worldLoad(WorldLoadEvent event) { dWorld world = new dWorld(event.getWorld()); context.put("world", world); - + doEvents(Arrays.asList ("world loads", world.identify() + " loads"), null, null, context); } - + // <--[event] // @Events // world saves @@ -4302,13 +4302,13 @@ public void worldSave(WorldSaveEvent event) { dWorld world = new dWorld(event.getWorld()); context.put("world", world); - + doEvents(Arrays.asList ("world saves", world.identify() + " saves"), null, null, context); } - + // <--[event] // @Events // world unloads @@ -4326,7 +4326,7 @@ public void worldUnload(WorldUnloadEvent event) { dWorld world = new dWorld(event.getWorld()); context.put("world", world); - + doEvents(Arrays.asList ("world unloads", world.identify() + " unloads"),