Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * This class will dynamically manage the skills restrictions
- */
- public class SkillCrafts
- {
- /* The Instance */
- private static SkillCrafts instance;
- /* The map that will contains all the skills craft */
- private HashMap<ResourceLocation, Map.Entry<Double, HashMap<EnumSkills, Double>>> SKILL_CRAFTS = new HashMap<>();
- /**
- * Returns the class instance
- */
- public static SkillCrafts getInstance()
- {
- if(instance == null)
- instance = new SkillCrafts();
- return instance;
- }
- /**
- * Initialize skill-crafts from the json-file
- */
- public void init()
- {
- SKILL_CRAFTS.clear();
- String jsonAsString = Helpers.readFileToString(KyrgonFiles.serverSkillCraftsConfig);
- JsonObject jsonObject = new JsonParser().parse(jsonAsString).getAsJsonObject();
- jsonObject.entrySet().forEach(entry ->
- {
- ItemStack itemStack = Helpers.getItemStackFromString("{id:\"" + entry.getKey() + "\",Count:1b}");
- if (!itemStack.isEmpty()) {
- HashMap<EnumSkills, Double> map = new HashMap<>();
- AtomicReference<Double> xp = new AtomicReference<>((double) 0);
- entry.getValue().getAsJsonObject().entrySet().forEach(entry2 ->
- {
- for (EnumSkills skill : EnumSkills.values())
- {
- if(entry2.getKey().equalsIgnoreCase("xp"))
- {
- xp.set(entry2.getValue().getAsDouble());
- } else if (skill.getName().equalsIgnoreCase(entry2.getKey())) {
- map.put(
- skill,
- entry2.getValue().getAsDouble()
- );
- break;
- }
- }
- });
- if (map.size() > 0 || xp.get() > 0)
- {
- SKILL_CRAFTS.put(
- itemStack.getItem().getRegistryName(),
- new Map.Entry<Double, HashMap<EnumSkills, Double>>(){
- @Override
- public HashMap<EnumSkills, Double> getValue() {
- return map;
- }
- @Override
- public HashMap<EnumSkills, Double> setValue(HashMap<EnumSkills, Double> value) {
- return null;
- }
- @Override
- public Double getKey() {
- return xp.get();
- }
- }
- );
- }
- }
- });
- }
- /**
- * Returns true if the player can craft a specified item
- */
- public boolean isPlayerCanCraft(EntityPlayer player, Item item)
- {
- if(player != null)
- {
- if(SKILL_CRAFTS.containsKey(item.getRegistryName()))
- {
- HashMap<EnumSkills, Double> map = SKILL_CRAFTS.get(item.getRegistryName()).getValue();
- if(map.size() > 0)
- {
- PlayerSkills skills = Skills.getSkills(player);
- for (Map.Entry<EnumSkills, Double> entry : map.entrySet())
- {
- if(skills.hasSkill(entry.getKey()))
- {
- return skills.getSkill(entry.getKey()) >= entry.getValue();
- }
- }
- }
- }
- }
- return false;
- }
- /**
- * Get the number of skill-xp that a skill-craft drops when the craft is crafted
- */
- public double getGivenXP(Item item)
- {
- return SKILL_CRAFTS.containsKey(item.getRegistryName()) ? SKILL_CRAFTS.get(item.getRegistryName()).getKey() : 0;
- }
- /**
- *
- */
- public EnumSkills getRandomRequiredSkill(Item item)
- {
- if(SKILL_CRAFTS.containsKey(item.getRegistryName()))
- {
- List<EnumSkills> possibleSkills = new ArrayList<>(SKILL_CRAFTS.get(item.getRegistryName()).getValue().keySet());
- return possibleSkills.size() > 0 ? possibleSkills.get(new Random().nextInt(possibleSkills.size())) : null;
- }
- return null;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement