Utils/Bannerparser/src/main/java/eu/mikroskeem/utils/bannerparser/parsers/planetminecraft/PlanetMinecraftParser.java

52 lines
1.7 KiB
Java

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<Pattern> fromUrl(URL url){
try {
String bannerData = ParseQuery.splitQuery(url).getOrDefault("b", "");
return parse(bannerData);
} catch (UnsupportedEncodingException e){
return null;
}
}
private ArrayList<Pattern> parse(String whole){
ArrayList<Pattern> patterns = new ArrayList<>();
/* Get base color */
patterns.add(new Pattern(parseColor(whole.charAt(0)), PatternType.BASE));
/* Iterate over all others */
List<String> 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);
}
}