52 lines
1.7 KiB
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);
|
|
}
|
|
}
|