Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.54 KB | None | 0 0
  1. /**
  2. * This class will dynamically manage the skills restrictions
  3. */
  4. public class SkillCrafts
  5. {
  6.  
  7. /* The Instance */
  8. private static SkillCrafts instance;
  9.  
  10. /* The map that will contains all the skills craft */
  11. private HashMap<ResourceLocation, Map.Entry<Double, HashMap<EnumSkills, Double>>> SKILL_CRAFTS = new HashMap<>();
  12.  
  13. /**
  14. * Returns the class instance
  15. */
  16. public static SkillCrafts getInstance()
  17. {
  18. if(instance == null)
  19. instance = new SkillCrafts();
  20. return instance;
  21. }
  22.  
  23. /**
  24. * Initialize skill-crafts from the json-file
  25. */
  26. public void init()
  27. {
  28. SKILL_CRAFTS.clear();
  29. String jsonAsString = Helpers.readFileToString(KyrgonFiles.serverSkillCraftsConfig);
  30.  
  31. JsonObject jsonObject = new JsonParser().parse(jsonAsString).getAsJsonObject();
  32.  
  33. jsonObject.entrySet().forEach(entry ->
  34. {
  35.  
  36. ItemStack itemStack = Helpers.getItemStackFromString("{id:\"" + entry.getKey() + "\",Count:1b}");
  37. if (!itemStack.isEmpty()) {
  38. HashMap<EnumSkills, Double> map = new HashMap<>();
  39. AtomicReference<Double> xp = new AtomicReference<>((double) 0);
  40. entry.getValue().getAsJsonObject().entrySet().forEach(entry2 ->
  41. {
  42. for (EnumSkills skill : EnumSkills.values())
  43. {
  44. if(entry2.getKey().equalsIgnoreCase("xp"))
  45. {
  46. xp.set(entry2.getValue().getAsDouble());
  47. } else if (skill.getName().equalsIgnoreCase(entry2.getKey())) {
  48.  
  49. map.put(
  50. skill,
  51. entry2.getValue().getAsDouble()
  52. );
  53.  
  54. break;
  55. }
  56. }
  57. });
  58. if (map.size() > 0 || xp.get() > 0)
  59. {
  60. SKILL_CRAFTS.put(
  61. itemStack.getItem().getRegistryName(),
  62. new Map.Entry<Double, HashMap<EnumSkills, Double>>(){
  63. @Override
  64. public HashMap<EnumSkills, Double> getValue() {
  65. return map;
  66. }
  67.  
  68. @Override
  69. public HashMap<EnumSkills, Double> setValue(HashMap<EnumSkills, Double> value) {
  70. return null;
  71. }
  72.  
  73. @Override
  74. public Double getKey() {
  75. return xp.get();
  76. }
  77. }
  78. );
  79. }
  80. }
  81. });
  82. }
  83.  
  84. /**
  85. * Returns true if the player can craft a specified item
  86. */
  87. public boolean isPlayerCanCraft(EntityPlayer player, Item item)
  88. {
  89. if(player != null)
  90. {
  91. if(SKILL_CRAFTS.containsKey(item.getRegistryName()))
  92. {
  93. HashMap<EnumSkills, Double> map = SKILL_CRAFTS.get(item.getRegistryName()).getValue();
  94. if(map.size() > 0)
  95. {
  96. PlayerSkills skills = Skills.getSkills(player);
  97. for (Map.Entry<EnumSkills, Double> entry : map.entrySet())
  98. {
  99. if(skills.hasSkill(entry.getKey()))
  100. {
  101. return skills.getSkill(entry.getKey()) >= entry.getValue();
  102. }
  103. }
  104. }
  105. }
  106. }
  107. return false;
  108. }
  109.  
  110. /**
  111. * Get the number of skill-xp that a skill-craft drops when the craft is crafted
  112. */
  113. public double getGivenXP(Item item)
  114. {
  115. return SKILL_CRAFTS.containsKey(item.getRegistryName()) ? SKILL_CRAFTS.get(item.getRegistryName()).getKey() : 0;
  116. }
  117.  
  118. /**
  119. *
  120. */
  121. public EnumSkills getRandomRequiredSkill(Item item)
  122. {
  123. if(SKILL_CRAFTS.containsKey(item.getRegistryName()))
  124. {
  125. List<EnumSkills> possibleSkills = new ArrayList<>(SKILL_CRAFTS.get(item.getRegistryName()).getValue().keySet());
  126. return possibleSkills.size() > 0 ? possibleSkills.get(new Random().nextInt(possibleSkills.size())) : null;
  127. }
  128. return null;
  129. }
  130.  
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement