Advertisement
JackOUT

Untitled

Jul 30th, 2022
1,126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.11 KB | None | 0 0
  1. package games.coob.laserturrets.settings;
  2.  
  3. import games.coob.laserturrets.model.TurretData;
  4. import games.coob.laserturrets.util.StringUtil;
  5. import lombok.AccessLevel;
  6. import lombok.Getter;
  7. import lombok.RequiredArgsConstructor;
  8. import lombok.ToString;
  9. import org.bukkit.Bukkit;
  10. import org.bukkit.Material;
  11. import org.bukkit.entity.EntityType;
  12. import org.bukkit.entity.Player;
  13. import org.mineacademy.fo.Valid;
  14. import org.mineacademy.fo.collection.SerializedMap;
  15. import org.mineacademy.fo.model.ConfigSerializable;
  16. import org.mineacademy.fo.model.Tuple;
  17. import org.mineacademy.fo.settings.YamlConfig;
  18.  
  19. import java.util.ArrayList;
  20. import java.util.List;
  21. import java.util.Map;
  22. import java.util.UUID;
  23.  
  24. public class TurretSettings extends YamlConfig {
  25.  
  26.     @Getter
  27.     private List<LevelData> levels;
  28.  
  29.     private List<String> playerBlacklist;
  30.  
  31.     @Getter
  32.     private List<EntityType> mobBlacklist;
  33.  
  34.     public static TurretSettings getInstance(final String turretType) {
  35.         return new TurretSettings(turretType);
  36.     }
  37.  
  38.     public TurretSettings(final String turretType) {
  39.         setPathPrefix(StringUtil.capitalize(turretType) + "_Turret_Default_Settings");
  40.         this.loadConfiguration("turrets/" + turretType + "-turrets.yml");
  41.     }
  42.  
  43.     @Override
  44.     protected void onLoad() {
  45.         this.playerBlacklist = this.getList("Player_Blacklist", String.class);
  46.         this.mobBlacklist = this.getList("Mob_Blacklist", EntityType.class);
  47.         this.levels = this.loadLevels();
  48.     }
  49.  
  50.     private List<LevelData> loadLevels() {
  51.         final List<LevelData> levels = new ArrayList<>();
  52.  
  53.         for (final Map.Entry<Integer, Object> entry : getMap("Levels", Integer.class, Object.class).entrySet()) {
  54.             final int level = entry.getKey();
  55.             final SerializedMap levelSettings = SerializedMap.of(entry.getValue());
  56.  
  57.             levels.add(LevelData.deserialize(levelSettings, level));
  58.         }
  59.  
  60.         return levels;
  61.     }
  62.  
  63.     public List<UUID> getPlayerBlacklist() {
  64.         final List<UUID> playerList = new ArrayList<>();
  65.  
  66.         for (final String playerName : this.playerBlacklist) {
  67.             final Player player = Bukkit.getPlayer(playerName);
  68.  
  69.             if (player != null)
  70.                 playerList.add(player.getUniqueId());
  71.         }
  72.  
  73.         return playerList;
  74.     }
  75.  
  76.     @Getter
  77.     @ToString
  78.     @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
  79.     public static class LevelData implements ConfigSerializable {
  80.  
  81.         private final int level;
  82.  
  83.         private double price;
  84.  
  85.         private boolean enableLasers;
  86.  
  87.         private double laserDamage;
  88.  
  89.         private int range;
  90.  
  91.         private int health;
  92.  
  93.         private List<Tuple<Material, Double>> lootChances;
  94.  
  95.         public void setLevelData(final TurretData.TurretLevel turretLevel) {
  96.             turretLevel.setRange(this.range);
  97.             turretLevel.setPrice(this.price);
  98.             turretLevel.setLaserEnabled(this.enableLasers);
  99.             turretLevel.setLaserDamage(this.laserDamage);
  100.             turretLevel.setHealth(this.health);
  101.             turretLevel.setLootChances(this.lootChances);
  102.         }
  103.  
  104.         @Override
  105.         public SerializedMap serialize() {
  106.             return null;
  107.         }
  108.  
  109.         public static LevelData deserialize(final SerializedMap map, final int level) {
  110.             final LevelData levelData = new LevelData(level);
  111.  
  112.             map.setRemoveOnGet(true);
  113.  
  114.             levelData.range = map.getInteger("Range");
  115.             Valid.checkNotNull(levelData.range, "Missing 'Range' key from level: " + map);
  116.  
  117.             levelData.health = map.getInteger("Health");
  118.             Valid.checkNotNull(levelData.health, "Missing 'Health' key from level: " + map);
  119.  
  120.             levelData.price = map.getDouble("Price");
  121.             Valid.checkNotNull(levelData.price, "Missing 'Price' key from level: " + map);
  122.  
  123.             levelData.enableLasers = map.getBoolean("Enable_Laser_Pointers");
  124.             Valid.checkNotNull(levelData.enableLasers, "Missing 'Enable_Laser_Pointers' key from level: " + map);
  125.  
  126.             levelData.laserDamage = map.getDouble("Laser_Pointer_Damage");
  127.             Valid.checkNotNull(levelData.price, "Missing 'Laser_Pointer_Damage' key from level: " + map);
  128.  
  129.             levelData.lootChances = map.getTupleList("Loot_Drops", Material.class, Double.class);
  130.             Valid.checkNotNull(levelData.lootChances, "Missing 'Loot_Drops' key from level: " + map);
  131.  
  132.             Valid.checkBoolean(map.isEmpty(), "Found unrecognized level settings: " + map);
  133.  
  134.             return levelData;
  135.         }
  136.     }
  137. }
  138.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement