package eu.mikroskeem.utils.bannerparser.parsers.planetminecraft; import eu.mikroskeem.utils.bannerparser.parsers.Parser; import eu.mikroskeem.utils.bannerparser.ParseQuery; import org.bukkit.DyeColor; import org.bukkit.block.banner.Pattern; import org.bukkit.block.banner.PatternType; import java.io.UnsupportedEncodingException; import java.net.URL; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class PlanetMinecraftParser implements Parser { /* * See http://www.planetminecraft.com/banner/ */ public ArrayList fromUrl(URL url){ try { String bannerData = ParseQuery.splitQuery(url).getOrDefault("b", ""); return parse(bannerData); } catch (UnsupportedEncodingException e){ return null; } } private ArrayList parse(String whole){ ArrayList patterns = new ArrayList<>(); /* Get base color */ patterns.add(new Pattern(parseColor(whole.charAt(0)), PatternType.BASE)); /* Iterate over all others */ List propertyList = Arrays.asList(whole.substring(1).split("(?<=\\G..)")); propertyList.forEach(property->{ DyeColor color = parseColor(property.charAt(0)); PatternType patternType = parsePattern(property.charAt(1)); patterns.add(new Pattern(color, patternType)); }); return patterns; } private PatternType parsePattern(char part){ String partStr = String.valueOf(part); return PatternParser.valueOf(partStr); } private DyeColor parseColor(char part){ String partStr = String.valueOf(part); return ColorParser.valueOf(partStr); } }