Plugin owningPlugin = newMetadataValue.getOwningPlugin(); Validate.notNull(owningPlugin, "Plugin cannot be null"); String key = disambiguate(subject, metadataKey);
/** * Invalidates all metadata in the metadata store that originates from the * given plugin. Doing this will force each invalidated metadata item to * be recalculated the next time it is accessed. * * @param owningPlugin the plugin requesting the invalidation. * @see MetadataStore#invalidateAll(org.bukkit.plugin.Plugin) * @throws IllegalArgumentException If plugin is null */ public synchronized void invalidateAll(Plugin owningPlugin) { Validate.notNull(owningPlugin, "Plugin cannot be null"); for (Map<Plugin, MetadataValue> values : metadataMap.values()) { if (values.containsKey(owningPlugin)) { values.get(owningPlugin).invalidate(); } } }
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; }
@Override public Object value() { return this.value.value(); }
@Test public void getMetadata_MultipleMetaDataSetByMultiplePlugins_TwoMetadataValuesFound() { MockPlugin plugin1 = MockBukkit.createMockPlugin(); TestPlugin plugin2 = MockBukkit.load(TestPlugin.class); assertFalse(mt.hasMetadata("MyMetadata")); mt.setMetadata("MyMetadata", new FixedMetadataValue(plugin1, "wee")); mt.setMetadata("MyMetadata", new FixedMetadataValue(plugin1, "woo")); mt.setMetadata("MyMetadata", new FixedMetadataValue(plugin2, "also wee")); assertTrue(mt.hasMetadata("MyMetadata")); List<MetadataValue> metadata = mt.getMetadata("MyMetadata"); assertEquals(2, metadata.size()); MetadataValue value1 = metadata.get(0); MetadataValue value2 = metadata.get(1); if (value1.getOwningPlugin() == plugin2) { value2 = value1; value1 = metadata.get(1); } assertEquals("woo", value1.asString()); assertEquals(plugin1, value1.getOwningPlugin()); assertEquals("also wee", value2.asString()); assertEquals(plugin2, value2.getOwningPlugin()); }
@Override public String asString() { return this.value.asString(); }
@Override public boolean asBoolean() { return this.value.asBoolean(); }
@Override public double asDouble() { return this.value.asDouble(); }
@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; }
private Player getPlayerFromFurnace(Block furnaceBlock) { List<MetadataValue> metadata = furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey); if (metadata.isEmpty()) { return null; } return plugin.getServer().getPlayerExact(metadata.get(0).asString()); } }
/** * 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); } }
public boolean isVanished(Player player) { List<MetadataValue> values = player.getMetadata("vanished"); for (MetadataValue value : values) { if (value.asBoolean()) { return true; } } return false; }
private static void processArcheryCombat(LivingEntity target, Player player, EntityDamageByEntityEvent event, Arrow arrow) { double initialDamage = event.getDamage(); double finalDamage = initialDamage; McMMOPlayer mcMMOPlayer = UserManager.getPlayer(player); ArcheryManager archeryManager = mcMMOPlayer.getArcheryManager(); if (target instanceof Player && PrimarySkillType.UNARMED.getPVPEnabled()) { UnarmedManager unarmedManager = UserManager.getPlayer((Player) target).getUnarmedManager(); if (unarmedManager.canDeflect()) { event.setCancelled(unarmedManager.deflectCheck()); if (event.isCancelled()) { return; } } } if (archeryManager.canSkillShot()) { finalDamage += archeryManager.skillShot(initialDamage); } if (archeryManager.canDaze(target)) { finalDamage += archeryManager.daze((Player) target); } if (!arrow.hasMetadata(mcMMO.infiniteArrowKey) && archeryManager.canRetrieveArrows()) { archeryManager.retrieveArrows(target); } archeryManager.distanceXpBonus(target, arrow); applyScaledModifiers(initialDamage, finalDamage, event); startGainXp(mcMMOPlayer, target, PrimarySkillType.ARCHERY, arrow.getMetadata(mcMMO.bowForceKey).get(0).asDouble()); }
/** * 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; }
public static McMMOPlayer getPlayer(Player player) { return (McMMOPlayer) player.getMetadata(mcMMO.playerDataKey).get(0).value(); }
@Override public void setMetadata(String metadataKey, MetadataValue newMetadataValue) { Map<Plugin, MetadataValue> values = metadata.get(metadataKey); if (values == null) { values = new HashMap<>(); metadata.put(metadataKey, values); } values.put(newMetadataValue.getOwningPlugin(), newMetadataValue); }
private Player getPlayerFromFurnace(Block furnaceBlock) { List<MetadataValue> metadata = furnaceBlock.getMetadata(mcMMO.furnaceMetadataKey); if (metadata.isEmpty()) { return null; } return plugin.getServer().getPlayerExact(metadata.get(0).asString()); }
@Override public boolean isVanished(Entity entity) { if (entity == null) return false; for (MetadataValue meta : entity.getMetadata("vanished")) { return meta.asBoolean(); } return false; }