use of net.aufdemrand.denizencore.tags.Attribute in project Denizen-For-Bukkit by DenizenScript.
the class ServerTags method serverTag.
@TagManager.TagEvents
public void serverTag(ReplaceableTagEvent event) {
if (!event.matches("server", "svr", "global") || event.replaced()) {
return;
}
Attribute attribute = event.getAttributes().fulfill(1);
// -->
if (attribute.startsWith("object_is_valid")) {
dObject o = ObjectFetcher.pickObjectFor(attribute.getContext(1), new BukkitTagContext(null, null, false, null, false, null));
event.setReplaced(new Element(!(o == null || o instanceof Element)).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("has_whitelist")) {
event.setReplaced(new Element(Bukkit.hasWhitelist()).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("has_flag")) {
String flag_name;
if (attribute.hasContext(1)) {
flag_name = attribute.getContext(1);
} else {
event.setReplaced("null");
return;
}
event.setReplaced(new Element(FlagManager.serverHasFlag(flag_name)).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("flag")) {
String flag_name;
if (attribute.hasContext(1)) {
flag_name = attribute.getContext(1);
} else {
event.setReplaced("null");
return;
}
attribute.fulfill(1);
// NOTE: Meta is in dList.java
if (attribute.startsWith("is_expired") || attribute.startsWith("isexpired")) {
event.setReplaced(new Element(!FlagManager.serverHasFlag(flag_name)).getAttribute(attribute.fulfill(1)));
return;
}
// NOTE: Meta is in dList.java
if (attribute.startsWith("size") && !FlagManager.serverHasFlag(flag_name)) {
event.setReplaced(new Element(0).getAttribute(attribute.fulfill(1)));
return;
}
if (FlagManager.serverHasFlag(flag_name)) {
FlagManager.Flag flag = DenizenAPI.getCurrentInstance().flagManager().getGlobalFlag(flag_name);
event.setReplaced(new dList(flag.toString(), true, flag.values()).getAttribute(attribute));
}
return;
}
// -->
if (attribute.startsWith("list_materials")) {
dList allMats = new dList();
for (Material mat : Material.values()) {
allMats.add(mat.name());
}
event.setReplaced(allMats.getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("list_flags")) {
dList allFlags = new dList(DenizenAPI.getCurrentInstance().flagManager().listGlobalFlags());
dList searchFlags = null;
if (!allFlags.isEmpty() && attribute.hasContext(1)) {
searchFlags = new dList();
String search = attribute.getContext(1);
if (search.startsWith("regex:")) {
try {
Pattern pattern = Pattern.compile(search.substring(6), Pattern.CASE_INSENSITIVE);
for (String flag : allFlags) {
if (pattern.matcher(flag).matches()) {
searchFlags.add(flag);
}
}
} catch (Exception e) {
dB.echoError(e);
}
} else {
search = CoreUtilities.toLowerCase(search);
for (String flag : allFlags) {
if (CoreUtilities.toLowerCase(flag).contains(search)) {
searchFlags.add(flag);
}
}
}
}
event.setReplaced(searchFlags == null ? allFlags.getAttribute(attribute.fulfill(1)) : searchFlags.getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("list_notables")) {
dList allNotables = new dList();
if (attribute.hasContext(1)) {
String type = CoreUtilities.toLowerCase(attribute.getContext(1));
types: for (Map.Entry<String, Class> typeClass : NotableManager.getReverseClassIdMap().entrySet()) {
if (type.equals(CoreUtilities.toLowerCase(typeClass.getKey()))) {
for (Object notable : NotableManager.getAllType(typeClass.getValue())) {
allNotables.add(((dObject) notable).identify());
}
break types;
}
}
} else {
for (Notable notable : NotableManager.notableObjects.values()) {
allNotables.add(((dObject) notable).identify());
}
}
event.setReplaced(allNotables.getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("start_time")) {
event.setReplaced(new Duration(Denizen.startTime / 50).getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("ram_allocated")) {
event.setReplaced(new Element(Runtime.getRuntime().totalMemory()).getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("ram_max")) {
event.setReplaced(new Element(Runtime.getRuntime().maxMemory()).getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("ram_free")) {
event.setReplaced(new Element(Runtime.getRuntime().freeMemory()).getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("available_processors")) {
event.setReplaced(new Element(Runtime.getRuntime().availableProcessors()).getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("current_time_millis")) {
event.setReplaced(new Element(System.currentTimeMillis()).getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("has_event") && attribute.hasContext(1)) {
event.setReplaced(new Element(OldEventManager.eventExists(attribute.getContext(1)) || OldEventManager.eventExists(OldEventManager.StripIdentifiers(attribute.getContext(1)))).getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("get_event_handlers") && attribute.hasContext(1)) {
String eventName = attribute.getContext(1).toUpperCase();
List<WorldScriptContainer> EventsOne = OldEventManager.events.get("ON " + eventName);
List<WorldScriptContainer> EventsTwo = OldEventManager.events.get("ON " + OldEventManager.StripIdentifiers(eventName));
if (EventsOne == null && EventsTwo == null) {
dB.echoError("No world scripts will handle the event '" + eventName + "'");
} else {
dList list = new dList();
if (EventsOne != null) {
for (WorldScriptContainer script : EventsOne) {
list.add("s@" + script.getName());
}
}
if (EventsTwo != null) {
for (WorldScriptContainer script : EventsTwo) {
if (!list.contains("s@" + script.getName())) {
list.add("s@" + script.getName());
}
}
}
event.setReplaced(list.getAttribute(attribute.fulfill(1)));
}
}
// -->
if (attribute.startsWith("selected_npc")) {
NPC npc = ((Citizens) Bukkit.getPluginManager().getPlugin("Citizens")).getNPCSelector().getSelected(Bukkit.getConsoleSender());
if (npc == null) {
return;
} else {
event.setReplaced(new dNPC(npc).getAttribute(attribute.fulfill(1)));
}
return;
}
// -->
if (attribute.startsWith("get_npcs_named") && Depends.citizens != null && attribute.hasContext(1)) {
dList npcs = new dList();
for (NPC npc : CitizensAPI.getNPCRegistry()) {
if (npc.getName().equalsIgnoreCase(attribute.getContext(1))) {
npcs.add(dNPC.mirrorCitizensNPC(npc).identify());
}
}
event.setReplaced(npcs.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("has_file") && attribute.hasContext(1)) {
File f = new File(DenizenAPI.getCurrentInstance().getDataFolder(), attribute.getContext(1));
try {
if (!Settings.allowStrangeYAMLSaves() && !f.getCanonicalPath().startsWith(DenizenAPI.getCurrentInstance().getDataFolder().getCanonicalPath())) {
dB.echoError("Invalid path specified. Invalid paths have been denied by the server administrator.");
return;
}
} catch (Exception e) {
dB.echoError(e);
return;
}
event.setReplaced(new Element(f.exists()).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_files") && attribute.hasContext(1)) {
File folder = new File(DenizenAPI.getCurrentInstance().getDataFolder(), attribute.getContext(1));
if (!folder.exists() || !folder.isDirectory()) {
return;
}
try {
if (!Settings.allowStrangeYAMLSaves() && !folder.getCanonicalPath().startsWith(DenizenAPI.getCurrentInstance().getDataFolder().getCanonicalPath())) {
dB.echoError("Invalid path specified. Invalid paths have been denied by the server administrator.");
return;
}
} catch (Exception e) {
dB.echoError(e);
return;
}
File[] files = folder.listFiles();
if (files == null) {
return;
}
dList list = new dList();
for (File file : files) {
list.add(file.getName());
}
event.setReplaced(list.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("has_permissions")) {
event.setReplaced(new Element(Depends.permissions != null && Depends.permissions.isEnabled()).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("has_economy")) {
event.setReplaced(new Element(Depends.economy != null && Depends.economy.isEnabled()).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("denizen_version")) {
event.setReplaced(new Element(DenizenAPI.getCurrentInstance().getDescription().getVersion()).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("bukkit_version")) {
event.setReplaced(new Element(Bukkit.getBukkitVersion()).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("version")) {
event.setReplaced(new Element(Bukkit.getServer().getVersion()).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("java_version")) {
event.setReplaced(new Element(System.getProperty("java.version")).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("max_players")) {
event.setReplaced(new Element(Bukkit.getServer().getMaxPlayers()).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_sql_connections")) {
dList list = new dList();
for (Map.Entry<String, Connection> entry : SQLCommand.connections.entrySet()) {
try {
if (!entry.getValue().isClosed()) {
list.add(entry.getKey());
} else {
SQLCommand.connections.remove(entry.getKey());
}
} catch (SQLException e) {
dB.echoError(attribute.getScriptEntry().getResidingQueue(), e);
}
}
event.setReplaced(list.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_permission_groups")) {
if (Depends.permissions == null) {
dB.echoError("No permission system loaded! Have you installed Vault and a compatible permissions plugin?");
return;
}
event.setReplaced(new dList(Arrays.asList(Depends.permissions.getGroups())).getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_plugin_names")) {
dList plugins = new dList();
for (Plugin plugin : Bukkit.getServer().getPluginManager().getPlugins()) {
plugins.add(plugin.getName());
}
event.setReplaced(plugins.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_scripts")) {
dList scripts = new dList();
for (String str : ScriptRegistry._getScriptNames()) {
scripts.add("s@" + str);
}
event.setReplaced(scripts.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("match_player") && attribute.hasContext(1)) {
Player matchPlayer = null;
String matchInput = CoreUtilities.toLowerCase(attribute.getContext(1));
for (Player player : Bukkit.getOnlinePlayers()) {
if (CoreUtilities.toLowerCase(player.getName()).equals(matchInput)) {
matchPlayer = player;
break;
} else if (CoreUtilities.toLowerCase(player.getName()).contains(matchInput) && matchPlayer == null) {
matchPlayer = player;
}
}
if (matchPlayer != null) {
event.setReplaced(new dPlayer(matchPlayer).getAttribute(attribute.fulfill(1)));
}
return;
}
// -->
if (attribute.startsWith("match_offline_player") && attribute.hasContext(1)) {
UUID matchPlayer = null;
String matchInput = CoreUtilities.toLowerCase(attribute.getContext(1));
for (Map.Entry<String, UUID> entry : dPlayer.getAllPlayers().entrySet()) {
if (CoreUtilities.toLowerCase(entry.getKey()).equals(matchInput)) {
matchPlayer = entry.getValue();
break;
} else if (CoreUtilities.toLowerCase(entry.getKey()).contains(matchInput) && matchPlayer == null) {
matchPlayer = entry.getValue();
}
}
if (matchPlayer != null) {
event.setReplaced(new dPlayer(matchPlayer).getAttribute(attribute.fulfill(1)));
}
return;
}
// -->
if (attribute.startsWith("get_npcs_assigned") && Depends.citizens != null && attribute.hasContext(1)) {
dScript script = dScript.valueOf(attribute.getContext(1));
if (script == null || !(script.getContainer() instanceof AssignmentScriptContainer)) {
dB.echoError("Invalid script specified.");
} else {
dList npcs = new dList();
for (NPC npc : CitizensAPI.getNPCRegistry()) {
if (npc.hasTrait(AssignmentTrait.class) && npc.getTrait(AssignmentTrait.class).hasAssignment() && npc.getTrait(AssignmentTrait.class).getAssignment().getName().equalsIgnoreCase(script.getName())) {
npcs.add(dNPC.mirrorCitizensNPC(npc).identify());
}
}
event.setReplaced(npcs.getAttribute(attribute.fulfill(1)));
return;
}
}
// -->
if (attribute.startsWith("get_online_players_flagged") && attribute.hasContext(1)) {
String flag = attribute.getContext(1);
dList players = new dList();
for (Player player : Bukkit.getOnlinePlayers()) {
if (DenizenAPI.getCurrentInstance().flagManager().getPlayerFlag(new dPlayer(player), flag).size() > 0) {
players.add(new dPlayer(player).identify());
}
}
event.setReplaced(players.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("get_players_flagged") && attribute.hasContext(1)) {
String flag = attribute.getContext(1);
dList players = new dList();
for (Map.Entry<String, UUID> entry : dPlayer.getAllPlayers().entrySet()) {
if (DenizenAPI.getCurrentInstance().flagManager().getPlayerFlag(new dPlayer(entry.getValue()), flag).size() > 0) {
players.add(new dPlayer(entry.getValue()).identify());
}
}
event.setReplaced(players.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("get_spawned_npcs_flagged") && Depends.citizens != null && attribute.hasContext(1)) {
String flag = attribute.getContext(1);
dList npcs = new dList();
for (NPC npc : CitizensAPI.getNPCRegistry()) {
dNPC dNpc = dNPC.mirrorCitizensNPC(npc);
if (dNpc.isSpawned() && FlagManager.npcHasFlag(dNpc, flag)) {
npcs.add(dNpc.identify());
}
}
event.setReplaced(npcs.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("get_npcs_flagged") && Depends.citizens != null && attribute.hasContext(1)) {
String flag = attribute.getContext(1);
dList npcs = new dList();
for (NPC npc : CitizensAPI.getNPCRegistry()) {
dNPC dNpc = dNPC.mirrorCitizensNPC(npc);
if (FlagManager.npcHasFlag(dNpc, flag)) {
npcs.add(dNpc.identify());
}
}
event.setReplaced(npcs.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_npcs") && Depends.citizens != null) {
dList npcs = new dList();
for (NPC npc : CitizensAPI.getNPCRegistry()) {
npcs.add(dNPC.mirrorCitizensNPC(npc).identify());
}
event.setReplaced(npcs.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_worlds")) {
dList worlds = new dList();
for (World world : Bukkit.getWorlds()) {
worlds.add(dWorld.mirrorBukkitWorld(world).identify());
}
event.setReplaced(worlds.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_plugins")) {
dList plugins = new dList();
for (Plugin plugin : Bukkit.getServer().getPluginManager().getPlugins()) {
plugins.add(new dPlugin(plugin).identify());
}
event.setReplaced(plugins.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_players")) {
dList players = new dList();
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
players.add(dPlayer.mirrorBukkitPlayer(player).identify());
}
event.setReplaced(players.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_online_players")) {
dList players = new dList();
for (Player player : Bukkit.getOnlinePlayers()) {
players.add(dPlayer.mirrorBukkitPlayer(player).identify());
}
event.setReplaced(players.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_offline_players")) {
dList players = new dList();
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
if (!player.isOnline()) {
players.add(dPlayer.mirrorBukkitPlayer(player).identify());
}
}
event.setReplaced(players.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_banned_players")) {
dList banned = new dList();
for (OfflinePlayer player : Bukkit.getBannedPlayers()) {
banned.add(dPlayer.mirrorBukkitPlayer(player).identify());
}
event.setReplaced(banned.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_ops")) {
dList players = new dList();
for (OfflinePlayer player : Bukkit.getOperators()) {
players.add(dPlayer.mirrorBukkitPlayer(player).identify());
}
event.setReplaced(players.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_online_ops")) {
dList players = new dList();
for (OfflinePlayer player : Bukkit.getOperators()) {
if (player.isOnline()) {
players.add(dPlayer.mirrorBukkitPlayer(player).identify());
}
}
event.setReplaced(players.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("list_offline_ops")) {
dList players = new dList();
for (OfflinePlayer player : Bukkit.getOfflinePlayers()) {
if (player.isOp() && !player.isOnline()) {
players.add(dPlayer.mirrorBukkitPlayer(player).identify());
}
}
event.setReplaced(players.getAttribute(attribute.fulfill(1)));
return;
}
// -->
if (attribute.startsWith("motd")) {
event.setReplaced(new Element(Bukkit.getServer().getMotd()).getAttribute(attribute.fulfill(1)));
return;
} else // -->
if (attribute.startsWith("entity_is_spawned") && attribute.hasContext(1)) {
dEntity ent = dEntity.valueOf(attribute.getContext(1));
event.setReplaced(new Element((ent != null && ent.isUnique() && ent.isSpawned()) ? "true" : "false").getAttribute(attribute.fulfill(1)));
} else // -->
if (attribute.startsWith("player_is_valid") && attribute.hasContext(1)) {
event.setReplaced(new Element(dPlayer.playerNameIsValid(attribute.getContext(1))).getAttribute(attribute.fulfill(1)));
} else // -->
if (attribute.startsWith("npc_is_valid") && attribute.hasContext(1)) {
dNPC npc = dNPC.valueOf(attribute.getContext(1));
event.setReplaced(new Element((npc != null && npc.isValid())).getAttribute(attribute.fulfill(1)));
} else // -->
if (attribute.startsWith("current_bossbars")) {
dList dl = new dList();
for (String str : BossBarCommand.bossBarMap.keySet()) {
dl.add(str);
}
event.setReplaced(dl.getAttribute(attribute.fulfill(1)));
} else // -->
if (attribute.startsWith("recent_tps")) {
dList list = new dList();
for (double tps : NMSHandler.getInstance().getRecentTps()) {
list.add(new Element(tps).identify());
}
event.setReplaced(list.getAttribute(attribute.fulfill(1)));
} else // -->
if (attribute.startsWith("port")) {
event.setReplaced(new Element(NMSHandler.getInstance().getPort()).getAttribute(attribute.fulfill(1)));
}
// TODO: Add everything else from Bukkit.getServer().*
}
use of net.aufdemrand.denizencore.tags.Attribute in project Denizen-For-Bukkit by DenizenScript.
the class TextTags method specialCharacterTags.
@TagManager.TagEvents
public void specialCharacterTags(ReplaceableTagEvent event) {
if (!event.getName().startsWith("&")) {
return;
}
String lower = CoreUtilities.toLowerCase(event.getName());
Attribute attribute = event.getAttributes();
// -->
if (lower.equals("&nl")) {
event.setReplaced(new Element("\n").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&")) {
event.setReplaced(new Element("&").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&cm")) {
event.setReplaced(new Element(",").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&ss")) {
event.setReplaced(new Element("§").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&sq")) {
event.setReplaced(new Element("'").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&sp")) {
event.setReplaced(new Element(String.valueOf(' ')).getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals(" ")) {
event.setReplaced(new Element(String.valueOf((char) 0x00A0)).getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&dq")) {
event.setReplaced(new Element("\"").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&co")) {
event.setReplaced(new Element(":").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&sc")) {
event.setReplaced(new Element(String.valueOf((char) 0x2011)).getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&rb")) {
event.setReplaced(new Element("]").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&lb")) {
event.setReplaced(new Element("[").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&rc")) {
event.setReplaced(new Element("}").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&lc")) {
event.setReplaced(new Element("{").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&ns")) {
event.setReplaced(new Element("#").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&pc")) {
event.setReplaced(new Element("%").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&pipe")) {
event.setReplaced(new Element("|").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&ds")) {
event.setReplaced(new Element("$").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("<")) {
event.setReplaced(new Element(String.valueOf((char) 0x01)).getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals(">")) {
event.setReplaced(new Element(String.valueOf((char) 0x02)).getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&bs")) {
event.setReplaced(new Element("\\").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&at")) {
event.setReplaced(new Element("@").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&dot")) {
event.setReplaced(new Element(".").getAttribute(attribute.fulfill(1)));
} else // -->
if (lower.equals("&hrt")) {
event.setReplaced(new Element("♥").getAttribute(attribute.fulfill(1)));
}
// -->
if (attribute.startsWith("&chr") && attribute.hasContext(1)) {
event.setReplaced(String.valueOf((char) Integer.parseInt(attribute.getContext(1), 16)));
}
}
use of net.aufdemrand.denizencore.tags.Attribute in project Denizen-For-Bukkit by DenizenScript.
the class CuboidTags method locationTags.
@TagManager.TagEvents
public void locationTags(ReplaceableTagEvent event) {
if (!event.matches("cuboid") || event.replaced()) {
return;
}
dCuboid cuboid = null;
String context = event.getNameContext();
if (event.hasNameContext()) {
cuboid = dCuboid.valueOf(context);
}
// Check if cuboid is null, return if it is
if (cuboid == null) {
return;
}
// Build and fill attributes
Attribute attribute = event.getAttributes();
event.setReplaced(cuboid.getAttribute(attribute.fulfill(1)));
}
use of net.aufdemrand.denizencore.tags.Attribute in project Denizen-For-Bukkit by DenizenScript.
the class EntityTags method entityTags.
//////////
// ReplaceableTagEvent handler
////////
@TagManager.TagEvents
public void entityTags(ReplaceableTagEvent event) {
if (!event.matches("entity") || event.replaced()) {
return;
}
// Build a new attribute out of the raw_tag supplied in the script to be fulfilled
Attribute attribute = event.getAttributes();
dEntity e = null;
// Entity tag may specify a new entity in the <entity[context]...> portion of the tag.
if (attribute.hasContext(1)) {
// Check if this is a valid entity and update the dEntity object reference.
if (attribute.getIntContext(1) >= 1) {
// TODO: Is the e@ needed here? If so, why? Should it be?
e = dEntity.valueOf("e@" + attribute.getContext(1));
}
}
if (e == null || !e.isValid()) {
if (!event.hasAlternative()) {
dB.echoError("Invalid or missing entity for tag <" + event.raw_tag + ">!");
}
return;
}
event.setReplaced(e.getAttribute(attribute.fulfill(1)));
}
use of net.aufdemrand.denizencore.tags.Attribute in project Denizen-For-Bukkit by DenizenScript.
the class LocationTags method locationTags.
@TagManager.TagEvents
public void locationTags(ReplaceableTagEvent event) {
if (!event.matches("location", "l") || event.replaced()) {
return;
}
// Stage the location
dLocation loc = null;
// Check name context for a specified location, or check
// the ScriptEntry for a 'location' context
String context = event.getNameContext();
if (event.hasNameContext() && dLocation.matches(context)) {
loc = dLocation.valueOf(context);
} else if (event.getScriptEntry().hasObject("location")) {
loc = (dLocation) event.getScriptEntry().getObject("location");
}
// Check if location is null, return null if it is
if (loc == null) {
return;
}
// Build and fill attributes
Attribute attribute = event.getAttributes();
event.setReplaced(loc.getAttribute(attribute.fulfill(1)));
}
Aggregations