JackOUT

Untitled

Feb 12th, 2023
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.00 KB | None | 0 0
  1. package games.coob.laserturrets.settings;
  2.  
  3. import games.coob.laserturrets.model.TurretData;
  4. import lombok.*;
  5. import org.bukkit.entity.EntityType;
  6. import org.bukkit.inventory.ItemStack;
  7. import org.mineacademy.fo.collection.SerializedMap;
  8. import org.mineacademy.fo.model.ConfigSerializable;
  9. import org.mineacademy.fo.model.Tuple;
  10. import org.mineacademy.fo.settings.ConfigItems;
  11. import org.mineacademy.fo.settings.YamlConfig;
  12.  
  13. import java.util.*;
  14.  
  15. @Getter
  16. public class TurretSettings extends YamlConfig {
  17.  
  18.     private static final ConfigItems<TurretSettings> loadedTurretSettings = ConfigItems.fromFolder("turrets", TurretSettings.class);
  19.  
  20.     private List<LevelData> levels;
  21.  
  22.     private Set<UUID> playerList = new HashSet<>();
  23.  
  24.     private Set<EntityType> mobList = new HashSet<>();
  25.  
  26.     private boolean enableMobWhitelist;
  27.  
  28.     //private CompMaterial material; TODO
  29.  
  30.     private boolean enablePlayerWhitelist;
  31.  
  32.     private String base64Texture;
  33.  
  34.     private int turretLimit;
  35.  
  36.     private TurretSettings(final String turretType) {
  37.         this.setPathPrefix("Turret_Settings");
  38.         this.loadConfiguration("turret-data.yml", "turrets/" + turretType + "-turrets.yml");
  39.     }
  40.  
  41.     @Override
  42.     protected boolean saveComments() {
  43.         return false;
  44.     }
  45.  
  46.     @Override
  47.     protected void onLoad() {
  48.         this.turretLimit = this.getInteger("Turret_Limit");
  49.         this.playerList = this.getSet("Player_Blacklist", UUID.class);
  50.         this.mobList = this.getSet("Mob_Blacklist", EntityType.class);
  51.         this.enableMobWhitelist = this.getBoolean("Use_Mob_Whitelist");
  52.         this.enablePlayerWhitelist = this.getBoolean("Use_Player_Whitelist");
  53.         this.base64Texture = this.getString("Head_Texture");
  54.         //this.material = this.getMaterial("Tool_Item"); TODO
  55.         this.levels = this.getList("Levels", LevelData.class);
  56.     }
  57.  
  58.     @Override
  59.     protected void onSave() {
  60.         this.set("Turret_Limit", this.turretLimit);
  61.         this.set("Player_Blacklist", this.playerList);
  62.         this.set("Mob_Blacklist", this.mobList);
  63.         this.set("Use_Player_Whitelist", this.enablePlayerWhitelist);
  64.         this.set("Use_Mob_Whitelist", this.enableMobWhitelist);
  65.         this.set("Head_Texture", this.base64Texture);
  66.         //this.set("Tool_Item", this.material);
  67.         this.set("Levels", this.levels);
  68.     }
  69.  
  70.     public void setSettingsRange(final LevelData levelData, final int range) {
  71.         levelData.setRange(range);
  72.  
  73.         this.save();
  74.     }
  75.  
  76.     public void setTurretLimit(final int turretLimit) {
  77.         this.turretLimit = turretLimit;
  78.  
  79.         this.save();
  80.     }
  81.  
  82.     public void setBase64Texture(final String texture) {
  83.         this.base64Texture = texture;
  84.  
  85.         this.save();
  86.     }
  87.  
  88.     /*public void setToolItem(final CompMaterial material) { // TODO
  89.         this.material = material;
  90.  
  91.         this.save();
  92.     }*/
  93.  
  94.     public int getLevelsSize() {
  95.         return this.levels.size();
  96.     }
  97.  
  98.     public LevelData addLevel() {
  99.         final List<LevelData> levels = this.levels;
  100.         final LevelData level = new LevelData();
  101.  
  102.         level.setLevelSettings(levels.get(levels.size() - 1), level);
  103.         levels.add(level);
  104.         this.save();
  105.  
  106.         return levels.get(levels.size() - 1);
  107.     }
  108.  
  109.     public void setLevelPrice(final LevelData levelData, final double price) {
  110.         levelData.setPrice(price);
  111.  
  112.         this.save();
  113.     }
  114.  
  115.     public LevelData getLevel(final int level) {
  116.         final boolean outOfBounds = level <= 0 || level >= this.levels.size() + 1;
  117.  
  118.         if (!outOfBounds)
  119.             return this.levels.get(level - 1);
  120.  
  121.         return null;
  122.     }
  123.  
  124.     public void removeLevel(final int settingsLevel) {
  125.         this.levels.remove(settingsLevel - 1);
  126.         this.save();
  127.     }
  128.  
  129.     public void setLaserEnabled(final LevelData levelData, final boolean laserEnabled) {
  130.         levelData.setLaserEnabled(laserEnabled);
  131.  
  132.         this.save();
  133.     }
  134.  
  135.     public void setLaserDamage(final LevelData levelData, final double damage) {
  136.         levelData.setLaserDamage(damage);
  137.  
  138.         this.save();
  139.     }
  140.  
  141.     public void setHealth(final LevelData levelData, final double health) {
  142.         levelData.setHealth(health);
  143.  
  144.         this.save();
  145.     }
  146.  
  147.     public void setLootChances(final LevelData levelData, final List<Tuple<ItemStack, Double>> lootChances) {
  148.         levelData.setLootChances(lootChances);
  149.  
  150.         this.save();
  151.     }
  152.  
  153.     public void addPlayerToBlacklist(final UUID uuid) {
  154.         this.playerList.add(uuid);
  155.  
  156.         this.save();
  157.     }
  158.  
  159.     public void removePlayerFromBlacklist(final UUID uuid) {
  160.         if (this.playerList != null)
  161.             this.playerList.remove(uuid);
  162.  
  163.         this.save();
  164.     }
  165.  
  166.     public void addMobToBlacklist(final EntityType entityType) {
  167.         this.mobList.add(entityType);
  168.  
  169.         this.save();
  170.     }
  171.  
  172.     public void removeMobFromBlacklist(final EntityType entityType) {
  173.         if (this.mobList != null)
  174.             this.mobList.remove(entityType);
  175.  
  176.         this.save();
  177.     }
  178.  
  179.     public void enableMobWhitelist(final boolean enableMobWhitelist) {
  180.         this.enableMobWhitelist = enableMobWhitelist;
  181.  
  182.         this.save();
  183.     }
  184.  
  185.     public void enablePlayerWhitelist(final boolean enablePlayerWhitelist) {
  186.         this.enablePlayerWhitelist = enablePlayerWhitelist;
  187.  
  188.         this.save();
  189.     }
  190.  
  191.     @Getter
  192.     @Setter
  193.     @ToString
  194.     @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
  195.     public static class LevelData implements ConfigSerializable {
  196.  
  197.  
  198.         private double price;
  199.  
  200.         private boolean laserEnabled;
  201.  
  202.         private double laserDamage;
  203.  
  204.         private int range;
  205.  
  206.         private double health;
  207.  
  208.         private List<Tuple<ItemStack, Double>> lootChances;
  209.  
  210.         public void setLevelData(final TurretData.TurretLevel turretLevel) {
  211.             //turretLevel.setLevel(this.level + upgradeValue);
  212.             turretLevel.setRange(this.range);
  213.             turretLevel.setPrice(this.price);
  214.             turretLevel.setLaserEnabled(this.laserEnabled);
  215.             turretLevel.setLaserDamage(this.laserDamage);
  216.             turretLevel.setMaxHealth(this.health);
  217.             turretLevel.setLootChances(this.lootChances);
  218.         }
  219.  
  220.         public void setLevelSettings(final LevelData levelData, final LevelData newLevel) {
  221.             newLevel.setRange(levelData.getRange());
  222.             newLevel.setPrice(levelData.getPrice());
  223.             newLevel.setLaserEnabled(levelData.isLaserEnabled());
  224.             newLevel.setLaserDamage(levelData.getLaserDamage());
  225.             newLevel.setHealth(levelData.getHealth());
  226.             newLevel.setLootChances(levelData.getLootChances());
  227.         }
  228.  
  229.         @Override
  230.         public SerializedMap serialize() {
  231.             final SerializedMap map = new SerializedMap();
  232.  
  233.             map.put("Range", this.range);
  234.             map.put("Price", this.price);
  235.             map.put("Health", this.health);
  236.             map.put("Enable_Laser_Pointer", this.laserEnabled);
  237.             map.put("Laser_Pointer_Damage", this.laserDamage);
  238.             map.putIf("Loot_Drops", this.lootChances);
  239.  
  240.             return map;
  241.         }
  242.  
  243.         public static LevelData deserialize(final SerializedMap map) {
  244.             final int range = map.getInteger("Range");
  245.             final double health = map.getDouble("Health");
  246.             final double price = map.getDouble("Price");
  247.             final boolean enableLaserPointer = map.getBoolean("Enable_Laser_Pointer");
  248.             final double laserPointerDamage = map.getDouble("Laser_Pointer_Damage");
  249.             final List<Tuple<ItemStack, Double>> lootDrops = map.getTupleList("Loot_Drops", ItemStack.class, Double.class);
  250.  
  251.             final LevelData levelData = new LevelData();
  252.  
  253.             levelData.setRange(range);
  254.             levelData.setPrice(price);
  255.             levelData.setHealth(health);
  256.             levelData.setLaserEnabled(enableLaserPointer);
  257.             levelData.setLaserDamage(laserPointerDamage);
  258.             levelData.setLootChances(lootDrops);
  259.  
  260.             return levelData;
  261.         }
  262.     }
  263.  
  264.     // -----------------------------------------------------------------
  265.     // Static
  266.     // -----------------------------------------------------------------
  267.  
  268.     public static void createSettings(@NonNull final String turretType) {
  269.         loadedTurretSettings.loadOrCreateItem(turretType, () -> new TurretSettings(turretType));
  270.     }
  271.  
  272.     public static void loadTurretSettings() {
  273.         loadedTurretSettings.loadItems();
  274.     }
  275.  
  276.     public static Collection<TurretSettings> getTurretSettings() {
  277.         return loadedTurretSettings.getItems();
  278.     }
  279.  
  280.     public static Set<String> getTurretSettingTypes() {
  281.         return loadedTurretSettings.getItemNames();
  282.     }
  283.  
  284.     public static boolean isTurretSettingLoaded(final String type) {
  285.         return loadedTurretSettings.isItemLoaded(type);
  286.     }
  287.  
  288.     public static TurretSettings findTurretSettings(final String type) {
  289.         return loadedTurretSettings.findItem(type);
  290.     }
  291. }
  292.  
Add Comment
Please, Sign In to add comment