@Nullable public static List<BlockFace> getDirections(String name) { if (name == null) { return null; } if (name.equalsIgnoreCase("cardinal")) { return cardinalDirections; } if (name.equalsIgnoreCase("all")) { return allDirections; } if (name.equalsIgnoreCase("plane")) { return planeDirections; } if (name.equalsIgnoreCase("neighbors")) { return neighborDirections; } BlockFace single = getBlockFace(name); if (single == null) return null; List<BlockFace> singleSet = new ArrayList<>(); singleSet.add(single); return singleSet; }
@Override public void initialize(Spell spell, ConfigurationSection parameters) { super.initialize(spell, parameters); // Parsing this parameter here to pre-prime the stack recursionDepth = parameters.getInt("size", 32); recursionDepth = parameters.getInt("depth", recursionDepth); directions = DirectionUtils.getDirections(parameters, "faces"); if (parameters.contains("priority_faces")) { priority = new HashSet<>(DirectionUtils.getDirections(parameters, "priority_faces")); prioritized = new ArrayDeque<>(recursionDepth + 10); } replaceable = null; touched = new HashSet<>(); stack = new ArrayDeque<>(recursionDepth + 10); }
while (yaw < 0) yaw += 360; while (yaw >= 360) yaw -= 360; signData.setFacingDirection(DirectionUtils.getDirection((int)yaw)); blockState.setData(signData);
@Nonnull public static List<BlockFace> getDirections(ConfigurationSection parameters, String key) { List<BlockFace> faceSet = null; if (parameters.isString(key)) { String name = parameters.getString(key); faceSet = getDirections(name); } if (faceSet == null) { Collection<String> faceList = ConfigurationUtils.getStringList(parameters, key); if (faceList != null) { faceSet = new ArrayList<>(); for (String face : faceList) { faceSet.addAll(getDirections(face)); } } } if (faceSet == null) { faceSet = cardinalDirections; } return faceSet; }
@Override public void prepare(CastContext context, ConfigurationSection parameters) { super.prepare(context, parameters); verticalSearchDistance = parameters.getInt("vertical_range", context.getVerticalSearchDistance()); directions = DirectionUtils.getDirections(parameters, "faces"); }
@Override public void prepare(CastContext context, ConfigurationSection parameters) { super.prepare(context, parameters); consumeBlocks = parameters.getBoolean("consume", false); consumeVariants = parameters.getBoolean("consume_variants", true); verticalSearchDistance = parameters.getInt("vertical_range", context.getVerticalSearchDistance()); directions = DirectionUtils.getDirections(parameters, "faces"); maxHeight = parameters.getInt("max_height", 0); }