@Override public Object value() { return this.value.value(); }
public static McMMOPlayer getPlayer(Player player) { return (McMMOPlayer) player.getMetadata(mcMMO.playerDataKey).get(0).value(); }
private Player getPlanter(Metadatable tnt) { List<MetadataValue> values = tnt.getMetadata("mobarena-planter"); for (MetadataValue value : values) { if (value.getOwningPlugin().equals(plugin)) { return (Player) value.value(); } } return null; }
@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; }
@SuppressWarnings("unchecked") public static double getDamageToEntity(LivingEntity damager, LivingEntity victim) { for (MetadataValue value : victim.getMetadata("DamageCount")) { if (value.getOwningPlugin().getName().equals("MyPet")) { Map<UUID, Double> damageMap = (Map<UUID, Double>) value.value(); if (damageMap.containsKey(damager.getUniqueId())) { return damageMap.get(damager.getUniqueId()); } return 0; } } return 0; }
/** * Get the (first) metadata value on the given target that has the given * key and is of the given class type. * * @param target the target * @param key the key * @param expected the type of the value * @param <T> the type of the value * @return a value, or {@code null} if one does not exists */ @Nullable @SuppressWarnings("unchecked") public static <T> T getIfPresent(Metadatable target, String key, Class<T> expected) { List<MetadataValue> values = target.getMetadata(key); WorldGuardPlugin owner = WorldGuardPlugin.inst(); for (MetadataValue value : values) { if (value.getOwningPlugin() == owner) { Object v = value.value(); if (expected.isInstance(v)) { return (T) v; } } } return null; }
@Override public void finish(CastContext context) { Player player = context.getMage().getPlayer(); List<MetadataValue> meta = player .getMetadata(INITIAL_MOVEMENT_SPEED_META); if (meta.isEmpty()) { return; } SpeedDataStack stack = (SpeedDataStack) meta.get(0).value(); stack.map.remove(this); final float oldSpeed; if (stack.map.isEmpty()) { oldSpeed = stack.initialSpeed; player.removeMetadata(INITIAL_MOVEMENT_SPEED_META, context.getPlugin()); } else { oldSpeed = Iterators.getLast(stack.map.values().iterator()); } player.setWalkSpeed(oldSpeed); } }
@Override public void signBreak(Sign sign, MinigamePlayer player) { Minigame minigame = (Minigame)sign.getBlock().getMetadata("Minigame").get(0).value(); if(minigame != null) { minigame.getScoreboardData().removeDisplay(sign.getBlock()); } }
/** * Calculate bonus XP awarded for Archery when hitting a far-away target. * * @param target The {@link LivingEntity} damaged by the arrow * @param damager The {@link Entity} who shot the arrow */ public void distanceXpBonus(LivingEntity target, Entity damager) { Location firedLocation = (Location) damager.getMetadata(mcMMO.arrowDistanceKey).get(0).value(); Location targetLocation = target.getLocation(); if (firedLocation.getWorld() != targetLocation.getWorld()) { return; } applyXpGain((int) (Math.min(firedLocation.distanceSquared(targetLocation), 2500) * Archery.DISTANCE_XP_MULTIPLIER), getXPGainReason(target, damager)); }
@EventHandler(ignoreCancelled=true) private void breakScoreboard(BlockBreakEvent event) { Block block = event.getBlock(); if (block.getType() == Material.WALL_SIGN) { if (block.hasMetadata("MGScoreboardSign")) { Minigame minigame = (Minigame)block.getMetadata("Minigame").get(0).value(); minigame.getScoreboardData().removeDisplay(block); } } } }
@Override public SpellResult perform(CastContext context) { Player player = context.getMage().getPlayer(); if (player == null) { return SpellResult.PLAYER_REQUIRED; } List<MetadataValue> meta = player .getMetadata(INITIAL_MOVEMENT_SPEED_META); final SpeedDataStack stack; if (meta.isEmpty()) { stack = new SpeedDataStack(); stack.initialSpeed = player.getWalkSpeed(); player.setMetadata(INITIAL_MOVEMENT_SPEED_META, new FixedMetadataValue(context.getPlugin(), stack)); } else { stack = (SpeedDataStack) meta.get(0).value(); } stack.map.put(this, speed); player.setWalkSpeed(speed); return SpellResult.CAST; }
@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)); } }
@Nullable public static com.elmakers.mine.bukkit.api.block.UndoList getUndoList(Entity entity) { com.elmakers.mine.bukkit.api.block.UndoList blockList = null; if (entity != null && entity.hasMetadata("MagicBlockList")) { List<MetadataValue> values = entity.getMetadata("MagicBlockList"); for (MetadataValue metadataValue : values) { Object value = metadataValue.value(); if (value instanceof com.elmakers.mine.bukkit.api.block.UndoList) { blockList = (com.elmakers.mine.bukkit.api.block.UndoList)value; } } } else if (entity != null && entity instanceof FallingBlock) { // Falling blocks need to check their location to handle chain reaction effects Location entityLocation = entity.getLocation(); blockList = getUndoList(entityLocation); if (blockList == null) { // Check one block down as well, in case a spell removed the block underneath a falling block entityLocation.setY(entityLocation.getY() - 1); blockList = getUndoList(entityLocation); } } return blockList; }
@EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public static void onSign(BlockPhysicsEvent event) { Block block = event.getBlock(); if (!BlockUtil.isSign(block)) { return; } Sign sign = (Sign) block.getState(); Block attachedBlock = BlockUtil.getAttachedBlock(sign); if (attachedBlock.getType() == Material.AIR && ChestShopSign.isValid(sign)) { if (!block.hasMetadata(METADATA_NAME)) { return; } sendShopDestroyedEvent(sign, (Player) block.getMetadata(METADATA_NAME).get(0).value()); } }
/** * Monitor falling blocks. * * @param event The event to watch */ @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) public void onFallingBlock(EntityChangeBlockEvent event) { /* WORLD BLACKLIST CHECK */ if(WorldBlacklist.isWorldBlacklisted(event.getBlock().getWorld())) return; if (BlockUtils.shouldBeWatched(event.getBlock().getState()) && event.getEntityType().equals(EntityType.FALLING_BLOCK)) { if (event.getTo().equals(Material.AIR) && mcMMO.getPlaceStore().isTrue(event.getBlock())) { event.getEntity().setMetadata("mcMMOBlockFall", new FixedMetadataValue( plugin, event.getBlock().getLocation())); } else { List<MetadataValue> values = event.getEntity().getMetadata( "mcMMOBlockFall" ); if (!values.isEmpty()) { if (values.get(0).value() == null) return; Block spawn = ((org.bukkit.Location) values.get(0).value()).getBlock(); mcMMO.getPlaceStore().setTrue( event.getBlock() ); mcMMO.getPlaceStore().setFalse( spawn ); } } } }
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() {
if(data != null && data.size() > 0) UUID ownerID = (UUID)data.get(0).value();
final EarthGrab eg = (EarthGrab) event.getRightClicked().getMetadata("earthgrab:trap").get(0).value(); eg.damageTrap(); event.setCancelled(true);