static PlayerData FromPlayer(Player player) { List<MetadataValue> data = player.getMetadata(METADATA_TAG); if(data == null || data.isEmpty()) { return new PlayerData(player); } else { try { PlayerData playerData = (PlayerData)(data.get(0).value()); return playerData; } catch(Exception e) { return new PlayerData(player); } } }
/** * @return the {@link MapWrapper} of the clicked frame */ public MapWrapper getMapWrapper() { if (this.mapWrapper != null) { return this.mapWrapper; } ItemFrame itemFrame = getItemFrame(); if (itemFrame != null) { if (itemFrame.hasMetadata("MAP_WRAPPER_REF")) { List<MetadataValue> metadataValues = itemFrame.getMetadata("MAP_WRAPPER_REF"); for (MetadataValue value : metadataValues) { MapWrapper wrapper = (MapWrapper) value.value(); if (wrapper != null) { return this.mapWrapper = wrapper; } } } } return null; }
@Override public void change(Event e, Object[] delta, Changer.ChangeMode mode){ if (object.getSingle(e) instanceof Metadatable) { Metadatable metadata = (Metadatable)object.getSingle(e); if (mode == ChangeMode.SET) { if (metadata.hasMetadata(string.getSingle(e))) { metadata.removeMetadata(string.getSingle(e), Skellett.plugin); } metadata.setMetadata(string.getSingle(e), (MetadataValue)new FixedMetadataValue(Skellett.plugin, (Object)(delta[0]))); } else if (mode == ChangeMode.RESET || mode == ChangeMode.DELETE) { if (metadata.hasMetadata(string.getSingle(e))) { metadata.removeMetadata(string.getSingle(e), Skellett.plugin); } } } }
/** * 真偽値のメタデータを取得する * @param key キー * @return 値 * @see org.bitbucket.ucchy.undine.sender.MailSender#getBooleanMetadata(java.lang.String) */ @Override public boolean getBooleanMetadata(String key) { if ( offline == null ) { offline = getOfflinePlayer(); } if ( !offline.isOnline() ) { return false; } List<MetadataValue> values = offline.getPlayer().getMetadata(key); if ( values.size() == 0 ) { return false; } return values.get(0).asBoolean(); }
private ArmorStand getArmorStand(Block b) { UUID uuid = null; for (MetadataValue value : b.getMetadata("armorStand")) { if (value.getOwningPlugin() == plugin) { uuid = (UUID) value.value(); } } b.removeMetadata("armorStand", plugin); if (uuid != null) { for(org.bukkit.entity.Entity e : b.getWorld().getEntities()) { if(e instanceof ArmorStand && e.getUniqueId().equals(uuid)) { return (ArmorStand) e; } } } return null; }
/** * Retrieves the metadata for a {@link Block}, ensuring the block being asked for actually belongs to this BlockMetadataStore's * owning world. * @see MetadataStoreBase#getMetadata(Object, String) */ @Override public List<MetadataValue> getMetadata(Block block, String metadataKey) { if(block.getWorld() == owningWorld) { return super.getMetadata(block, metadataKey); } else { throw new IllegalArgumentException("Block does not belong to world " + owningWorld.getName()); } }
/** * Sets or overwrites a metadata value on a {@link Block} from a given {@link Plugin}, ensuring the target block belongs * to this BlockMetadataStore's owning world. * @see MetadataStoreBase#setMetadata(Object, String, org.bukkit.metadata.MetadataValue) */ @Override public void setMetadata(Block block, String metadataKey, MetadataValue newMetadataValue) { if(block.getWorld() == owningWorld) { super.setMetadata(block, metadataKey, newMetadataValue); } else { throw new IllegalArgumentException("Block does not belong to world " + owningWorld.getName()); } }
public static Object getMetadata(JavaPlugin plugin, Metadatable object, String key) { List<MetadataValue> values = object.getMetadata(key); for (MetadataValue value : values) { if (value.getOwningPlugin().equals(plugin)) { return value.value(); } } return null; }
@EventHandler(priority = EventPriority.LOWEST) public void onQuit(PlayerQuitEvent event) { final MetadataValue future = event.getPlayer().getMetadata(METADATA_KEY, plugin); if(future != null) { ((SettableFuture) future.value()).set(null); } }
/** * Set a metadata value. * @param metadata - The object to set the metadata of. * @param key - The key to index the metadata by. * @param o - The object value to set. */ public static void setMetadata(Metadatable metadata, String key, Object o) { if (o instanceof MetadataValue) o = ((MetadataValue) o).value(); if (o instanceof Enum<?>) o = ((Enum<?>) o).name(); metadata.setMetadata(key, new FixedMetadataValue(Core.getInstance(), o)); }
private long getLastLandChangedMeta(Player player) { List<MetadataValue> value = player.getMetadata(LAND_CHANGED_META_KEY); long millis = System.currentTimeMillis(); long remaining = value == null || value.isEmpty() ? 0L : value.get(0).asLong() - millis; if (remaining <= 0L) { // update the metadata. player.setMetadata(LAND_CHANGED_META_KEY, new FixedMetadataValue(plugin, millis + LAND_CHANGE_MSG_THRESHOLD)); } return remaining; }
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGH) public void onItemPickup(PlayerPickupItemEvent event) { Player player = event.getPlayer(); long remaining = getRemaining(player); if (remaining > 0L) { UUID itemUUID = event.getItem().getUniqueId(); Long delay = itemUUIDPickupDelays.get(itemUUID); if (delay == null) return; // The item has been spawned for over the required pickup time for // PVP Protected players, let them pick it up. long millis = System.currentTimeMillis(); if ((delay - millis) > 0L) { event.setCancelled(true); // Don't let the pickup event spam the player. List<MetadataValue> value = player.getMetadata(ITEM_PICKUP_MESSAGE_META_KEY); if (value != null && !value.isEmpty() && value.get(0).asLong() - millis <= 0L) { player.setMetadata(ITEM_PICKUP_MESSAGE_META_KEY, new FixedMetadataValue(plugin, millis + ITEM_PICKUP_MESSAGE_DELAY)); player.sendMessage(ChatColor.RED + "You cannot pick this item up for another " + ChatColor.BOLD + DurationFormatUtils.formatDurationWords(remaining, true, true) + ChatColor.RED + " as your " + getDisplayName() + ChatColor.RED + " timer is active [" + ChatColor.BOLD + DurationFormatter.getRemaining(remaining, true, false) + ChatColor.RED + " remaining]"); } } else itemUUIDPickupDelays.remove(itemUUID); } }
private static String getMetadataValue(List<MetadataValue> values) { String text = null; for (MetadataValue v : values) { if (v.getOwningPlugin().getName().equalsIgnoreCase(Main.getInstance().getName())) { text = (String) v.value(); break; } } return text; }
/** * キャストが要らない取得の例示 * @param value 取得する値 */ @SuppressWarnings("unused") private void get(MetadataValue value) { value.asBoolean(); // boolean value.asByte(); // byte value.asDouble(); // double value.asFloat(); // float value.asInt(); // int value.asLong(); // long value.asShort(); // short value.asString(); // String }
static PlayerData FromPlayer(Player player) { List<MetadataValue> data = player.getMetadata(METADATA_TAG); if(data == null || data.isEmpty()) { return new PlayerData(player); } else { PlayerData playerData = (PlayerData)(data.get(0).value()); return playerData; } }
public UUID getBlocksOwner(Block b) { List<MetadataValue> list = b.getMetadata("Owner"); if(list == null || list.isEmpty()) return null; return UUID.fromString(list.get(0).asString()); }
@EventHandler(priority=EventPriority.HIGH) public void nexusHelperCheck(PlayerInteractEvent event) { if(event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) { final Player player = event.getPlayer(); TeamBlock t = null; if(KitUtils.itemHasName(player.getItemInHand(), TeamBlock.Red.getName())) t = TeamBlock.Red; else if(KitUtils.itemHasName(player.getItemInHand(), TeamBlock.Blue.getName())) t = TeamBlock.Blue; else if(KitUtils.itemHasName(player.getItemInHand(), TeamBlock.Green.getName())) t = TeamBlock.Green; else if(KitUtils.itemHasName(player.getItemInHand(), TeamBlock.Yellow.getName())) t = TeamBlock.Yellow; if(t != null) { //They made a click with a team block event.setCancelled(true); List<MetadataValue> vals = player.getMetadata("TeamHandler"); if(vals != null && vals.size() == 1) { Object obj = vals.get(0).value(); if(obj != null && obj instanceof TeamBlockHandler) { ((TeamBlockHandler)obj).onBlockClick(player, t.Team, event.getAction(), event.getClickedBlock(),event.getBlockFace()); } } } } }
@EventHandler public void onEnemyDeath(EntityDeathEvent e) { if (!QuestManagerPlugin.questManagerPlugin.getPluginConfiguration().getWorlds().contains( e.getEntity().getWorld().getName())) return; List<MetadataValue> metas = e.getEntity().getMetadata(CLASS_META_KEY); if (metas == null || metas.isEmpty()) { return; } //eliminate those that have a different EntityType right away, for performance if (e.getEntityType() != this.type) { return; } for (MetadataValue meta : metas) { if (!meta.getOwningPlugin().getName().equals(QuestManagerPlugin.questManagerPlugin.getName())) { continue; } //same plugin and same key. Use it. if (meta.asString().equals(enemyClassID)) { EnemyDeathEvent event = new EnemyDeathEvent(spawningRegion, e); Bukkit.getPluginManager().callEvent(event); handleDeath(e); return; } } }
@EventHandler public void breakblock(BlockBreakEvent event) { if (event.isCancelled()) { return; } if (event.getBlock().getType() != Material.DIAMOND_ORE) { return; } if (event.getBlock().hasMetadata("AlreadyDone")) { return; } Player player = event.getPlayer(); if (this.lastPatch.containsKey(player.getUniqueId())) { Long time = this.lastPatch.get(player.getUniqueId()); Long maxtime = (long)this.janitor.getMainConfig().getConfig().getInt("xrayduration") * 1000; if (UtilTime.nowlong() - time < maxtime) { for (Player staff : this.xrayCatcher) { staff.sendMessage(String.valueOf(Janitor.PREFIX) + C.Reset + player.getName() + C.Gray + " might be using " + C.Blue + "Xray"); } } } int x = -7; while (x < 7) { int y = -7; while (y < 7) { int z = -7; while (z < 7) { Location location = event.getBlock().getLocation().add((double)x, (double)y, (double)z); if (location.getBlock().getType() == Material.DIAMOND_ORE) { location.getBlock().setMetadata("AlreadyDone", (MetadataValue)new FixedMetadataValue((Plugin)this.janitor, (Object)true)); } ++z; } ++y; } ++x; } this.lastPatch.put(player.getUniqueId(), UtilTime.nowlong()); }
@EventHandler public void blockplace(BlockPlaceEvent event) { if (event.isCancelled()) { return; } if (event.getBlock().getType() != Material.DIAMOND_ORE) { return; } event.getBlock().setMetadata("AlreadyDone", (MetadataValue)new FixedMetadataValue((Plugin)this.janitor, (Object)true)); }
/** * Sets or overwrites a metadata value on a {@link Block} from a given {@link Plugin}, ensuring the target block belongs * to this BlockMetadataStore's owning world. * @see MetadataStoreBase#setMetadata(Object, String, MetadataValue) */ @Override public void setMetadata(Block block, String metadataKey, MetadataValue newMetadataValue) { if(block.getWorld() == owningWorld) { super.setMetadata(block, metadataKey, newMetadataValue); } else { throw new IllegalArgumentException("Block does not belong to world " + owningWorld.getName()); } }
@Override public List<MetadataValue> getMetadata(String metadataKey) { List<MetadataValue> bukkitList = new ArrayList<MetadataValue>(); if (nukkit.getMetadata(metadataKey) != null) { nukkit.getMetadata(metadataKey).forEach((value) -> bukkitList.add(PokkitMetadataValue.toBukkit(value))); } return bukkitList; }
@Override @Nullable protected Object[] get(Event e) { Metadatable metadata; if (object.getSingle(e) instanceof Metadatable && (metadata = (Metadatable)object.getSingle(e)).hasMetadata(string.getSingle(e))) { return new Object[]{((MetadataValue)metadata.getMetadata(string.getSingle(e)).iterator().next()).value()}; } return null; }
/** * Gets the reason that an entity spawned. Note that these reasons are reset * when the server restarts. * * @param entity The entity * @return The {@link SpawnReason} */ public SpawnReason getSpawnReason(Entity entity) { for (MetadataValue value : entity.getMetadata("spawn-reason")) { if (value.getOwningPlugin() instanceof BloodMoon) { return (SpawnReason) value.value(); } } return SpawnReason.DEFAULT; }
@EventHandler(priority = EventPriority.LOW) public void leftClick(EntityDamageByEntityEvent event) { if (!(event.getDamager() instanceof Player)) { return; } List<MetadataValue> list = event.getEntity().getMetadata(cmdsMetadata); if (!list.isEmpty()) { if (list.get(0).value() instanceof Commands) { event.setCancelled(true); ((Commands) list.get(0).value()).click((Player) event.getDamager(), true); } } }
/** * 文字列のメタデータを取得する * @param key キー * @return 値 * @see org.bitbucket.ucchy.undine.sender.MailSender#getStringMetadata(java.lang.String) */ @Override public String getStringMetadata(String key) { if ( offline == null ) { offline = getOfflinePlayer(); } if ( !offline.isOnline() ) { return null; } List<MetadataValue> values = offline.getPlayer().getMetadata(key); if ( values.size() == 0 ) { return null; } return values.get(0).asString(); }
@Override public boolean onCommand(WhiteCommandSender sender, Command cmd, String label, String[] args) { if (!sender.hasPermission(permission)) { sender.sendMessage(msg.getMessage(sender, error_Permission, "", true)); return true; } if (args.length == 0) { sendUsing((WhitePlayer) sender); return true; } WhitePlayer player = (WhitePlayer) sender; if(!player.getPlayer().hasMetadata("replay")){ sendUsing((WhitePlayer) sender); return true; } List<MetadataValue> meta = player.getPlayer().getMetadata("replay"); WhitePlayer target = WhiteEggAPI.getPlayer(meta.get(0).asString()); if (target == null) { player.sendMessage(msg.getMessage(player, error_Player, msgPrefix, true)); return true; } String message = Util.build(args, 0); target.sendMessage(replace(msg.getMessage(target, key + ".format", "", true), player, target, message, true)); player.sendMessage(replace(msg.getMessage(player, key + ".format", "", true), player, target, message, false)); target.getPlayer().playSound(target.getPlayer().getLocation(), Sound.CHICKEN_EGG_POP, 1, 1); return false; }
@EventHandler(priority = EventPriority.LOW) public void rightClick(PlayerInteractEntityEvent event) { List<MetadataValue> list = event.getRightClicked().getMetadata(cmdsMetadata); if (!list.isEmpty()) { if (list.get(0).value() instanceof Commands) { event.setCancelled(true); ((Commands) list.get(0).value()).click(event.getPlayer(), false); } } }