From 9d5fd6eb8837a7c06ac708ed472c33664bb7a0f2 Mon Sep 17 00:00:00 2001 From: Lixfel Date: Mon, 5 Jun 2023 15:42:29 +0200 Subject: [PATCH] YeetAPION: Simulators --- .../bausystem/configplayer/Config.java | 4 + .../features/simulator/SimulatorStorage.java | 67 ++---------- .../features/simulator/TNTSimulator.java | 51 ++++----- .../simulator/tnt/SimulatorElement.java | 8 +- .../features/simulator/tnt/TNTElement.java | 76 +++++-------- .../features/simulator/tnt/TNTGroup.java | 46 +++----- .../bausystem/worlddata/SimulatorData.java | 101 ------------------ 7 files changed, 85 insertions(+), 268 deletions(-) delete mode 100644 BauSystem_Main/src/de/steamwar/bausystem/worlddata/SimulatorData.java diff --git a/BauSystem_Main/src/de/steamwar/bausystem/configplayer/Config.java b/BauSystem_Main/src/de/steamwar/bausystem/configplayer/Config.java index 9fd84a64..5983ed21 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/configplayer/Config.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/configplayer/Config.java @@ -63,6 +63,10 @@ public class Config extends YamlConfig { @ConfigField private List depthCounter; + @Getter + @ConfigField + private boolean simulatorAutoTrace; + @Getter @ConfigField private final Map baugui = new HashMap<>(); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorStorage.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorStorage.java index a549e0a2..a4331b84 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorStorage.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/SimulatorStorage.java @@ -21,24 +21,18 @@ package de.steamwar.bausystem.features.simulator; import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.SWUtils; -import de.steamwar.bausystem.features.simulator.tnt.TNTElement; import de.steamwar.bausystem.utils.ItemUtils; import de.steamwar.inventory.SWItem; import de.steamwar.linkage.Linked; import de.steamwar.linkage.api.Disable; import de.steamwar.linkage.api.Enable; -import de.steamwar.sql.SteamwarUser; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; -import org.bukkit.World; +import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; -import yapion.exceptions.YAPIONException; -import yapion.hierarchy.types.YAPIONArray; -import yapion.hierarchy.types.YAPIONObject; -import yapion.parser.YAPIONParser; import java.io.File; import java.io.IOException; @@ -46,17 +40,15 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; import java.util.Set; -import java.util.stream.Collectors; @Linked public class SimulatorStorage implements Enable, Disable { - public static final World WORLD = Bukkit.getWorlds().get(0); private static final File simulatorsDir = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "simulators"); - private static NamespacedKey simulatorSelection = SWUtils.getNamespaceKey("simulator_selection"); + private static final NamespacedKey simulatorSelection = SWUtils.getNamespaceKey("simulator_selection"); - private static Map tntSimulators = new HashMap<>(); + private static final Map tntSimulators = new HashMap<>(); public static void createNewSimulator(String name) { tntSimulators.put(name, new TNTSimulator()); @@ -107,11 +99,11 @@ public class SimulatorStorage implements Enable, Disable { if (tntSimulator != null) { tntSimulator.close(); } - new File(simulatorsDir, name + ".simulator").delete(); + new File(simulatorsDir, name + ".yml").delete(); } public static void copySimulator(TNTSimulator tntSimulator, String name) { - tntSimulators.put(name, new TNTSimulator(tntSimulator.toYAPION())); + tntSimulators.put(name, new TNTSimulator(tntSimulator.toYaml())); } public static void removeSimulator(ItemStack itemStack) { @@ -139,48 +131,11 @@ public class SimulatorStorage implements Enable, Disable { if (files == null) return; for (File file : files) { - YAPIONObject yapionObject; - try { - yapionObject = YAPIONParser.parse(file); - } catch (YAPIONException | IOException e) { + String name = file.getName(); + if(!name.endsWith(".yml")) continue; - } - if (file.getName().endsWith(".yapion")) { - String name = file.getName().substring(0, file.getName().length() - 7); - try { - SteamwarUser steamwarUser = SteamwarUser.get(Integer.parseInt(name)); - convert(file, steamwarUser); - } catch (Exception e) { - file.delete(); - } - } else { - String name = file.getName().substring(0, file.getName().length() - ".simulator".length()); - tntSimulators.put(name, new TNTSimulator(yapionObject)); - } - } - } - private static void convert(File file, SteamwarUser steamwarUser) { - YAPIONObject yapionObject; - try { - yapionObject = YAPIONParser.parse(file); - } catch (YAPIONException | IOException e) { - return; - } - try { - file.delete(); - } catch (Exception e) { - e.printStackTrace(); - } - for (String s : yapionObject.getKeys()) { - String newName = steamwarUser.getUserName() + (s.isEmpty() ? "" : "_" + s); - YAPIONArray content = yapionObject.getArray(s); - if (content.isEmpty()) continue; - TNTSimulator tntSimulator = new TNTSimulator(); - for (YAPIONObject element : content.streamObject().collect(Collectors.toList())) { - tntSimulator.getTntElementList().add(new TNTElement(element, null, tntSimulator.getEntityServer())); - } - tntSimulators.put(newName, tntSimulator); + tntSimulators.put(name.substring(0, name.length() - 4), new TNTSimulator(YamlConfiguration.loadConfiguration(file))); } } @@ -188,9 +143,9 @@ public class SimulatorStorage implements Enable, Disable { public void disable() { for (Map.Entry entry : tntSimulators.entrySet()) { try { - entry.getValue().toYAPION().toFile(new File(simulatorsDir, entry.getKey() + ".simulator")); - } catch (Exception e) { - e.printStackTrace(); + entry.getValue().toYaml().save(new File(simulatorsDir, entry.getKey() + ".yml")); + } catch (IOException e) { + throw new SecurityException(e); } } } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java index 46d9779a..901d89b2 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/TNTSimulator.java @@ -20,6 +20,8 @@ package de.steamwar.bausystem.features.simulator; import de.steamwar.bausystem.BauSystem; +import de.steamwar.bausystem.config.ConfigField; +import de.steamwar.bausystem.config.YamlConfig; import de.steamwar.bausystem.configplayer.Config; import de.steamwar.bausystem.features.simulator.gui.TNTElementGUI; import de.steamwar.bausystem.features.simulator.gui.TNTSimulatorGui; @@ -36,10 +38,8 @@ import de.steamwar.entity.REntityServer; import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.Material; +import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -import yapion.hierarchy.types.YAPIONArray; -import yapion.hierarchy.types.YAPIONObject; -import yapion.hierarchy.types.YAPIONType; import java.util.*; import java.util.concurrent.atomic.AtomicBoolean; @@ -47,40 +47,29 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.stream.Collectors; @Getter -public class TNTSimulator { +public class TNTSimulator extends YamlConfig { - private Set players = new HashSet<>(); - private REntityServer entityServer = new REntityServer(); + static { + register(TNTGroup.class); + register(TNTElement.class); + } + private final Set players = new HashSet<>(); + private final REntityServer entityServer = new REntityServer(); + + @ConfigField private Material material = Material.TNT; - private List tntElementList = new ArrayList<>(); + @ConfigField + private final List tntElementList = new ArrayList<>(); - public TNTSimulator() { + public TNTSimulator() {} - } + public TNTSimulator(ConfigurationSection section) { + super(section); - public TNTSimulator(YAPIONObject yapionObject) { - material = Material.valueOf(yapionObject.getStringOrDefault("material", Material.TNT.name())); - YAPIONArray yapionArray = yapionObject.getArrayOrDefault("tntElements", new YAPIONArray()); - for (YAPIONObject element : yapionArray.streamObject().collect(Collectors.toList())) { - if (element.containsKey("elements", YAPIONType.ARRAY)) { - tntElementList.add(new TNTGroup(element, entityServer)); - } else { - tntElementList.add(new TNTElement(element, null, entityServer)); - } - } - } - - public YAPIONObject toYAPION() { - YAPIONObject yapionObject = new YAPIONObject(); - yapionObject.add("material", material.name()); - YAPIONArray yapionArray = new YAPIONArray(); - for (SimulatorElement element : tntElementList) { - yapionArray.add(element.toYAPION()); - } - yapionObject.add("tntElements", yapionArray); - return yapionObject; + for(SimulatorElement element : tntElementList) + element.init(entityServer, null); } public void close() { @@ -218,7 +207,7 @@ public class TNTSimulator { AtomicBoolean needsAutoTrace = new AtomicBoolean(); players.forEach(player -> { - boolean simulatorAutoTrace = Config.getInstance().get(player).getPlainValueOrDefault("simulatorAutoTrace", false); + boolean simulatorAutoTrace = Config.get(player).isSimulatorAutoTrace(); if (simulatorAutoTrace) { needsAutoTrace.set(true); player.performCommand("trace show"); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/SimulatorElement.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/SimulatorElement.java index 181e3389..34ce77f3 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/SimulatorElement.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/SimulatorElement.java @@ -22,21 +22,23 @@ package de.steamwar.bausystem.features.simulator.tnt; import de.steamwar.bausystem.region.Region; import de.steamwar.bausystem.shared.Pair; import de.steamwar.entity.REntity; +import de.steamwar.entity.REntityServer; import de.steamwar.inventory.SWItem; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.configuration.serialization.ConfigurationSerializable; import org.bukkit.entity.Player; import org.bukkit.util.Vector; -import yapion.hierarchy.types.YAPIONObject; import java.util.*; -public interface SimulatorElement { +public interface SimulatorElement extends ConfigurationSerializable { Map> observer = new HashMap<>(); Map closeObserver = new HashMap<>(); - YAPIONObject toYAPION(); + void init(REntityServer entityServer, TNTGroup tntGroup); + List getEntities(); void getEntity(List elements, REntity entity); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/TNTElement.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/TNTElement.java index 666c3359..f7aaae0c 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/TNTElement.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/TNTElement.java @@ -20,8 +20,9 @@ package de.steamwar.bausystem.features.simulator.tnt; import de.steamwar.bausystem.BauSystem; +import de.steamwar.bausystem.config.ConfigField; +import de.steamwar.bausystem.config.YamlConfig; import de.steamwar.bausystem.features.simulator.OrderUtils; -import de.steamwar.bausystem.features.simulator.SimulatorStorage; import de.steamwar.bausystem.region.Region; import de.steamwar.bausystem.region.flags.Flag; import de.steamwar.bausystem.region.flags.flagvalues.FreezeMode; @@ -41,81 +42,62 @@ import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.entity.TNTPrimed; import org.bukkit.util.Vector; -import yapion.hierarchy.types.YAPIONObject; import java.util.*; @Getter -public class TNTElement implements SimulatorElement { +public class TNTElement extends YamlConfig implements SimulatorElement { private static final World WORLD = Bukkit.getWorlds().get(0); - private final REntityServer entityServer; + private REntityServer entityServer; private RFallingBlockEntity entity; - TNTGroup tntGroup = null; + @Setter + private TNTGroup tntGroup; - private final Vector position; + @ConfigField + private Vector position; + @ConfigField private int fuseTicks = 80; + @ConfigField private int count = 1; + @ConfigField private int tickOffset = 0; @Setter + @ConfigField private boolean xVelocity = false; @Setter + @ConfigField private boolean yVelocity = false; @Setter + @ConfigField private boolean zVelocity = false; + @ConfigField private Material order = Material.REPEATER; + @ConfigField private Material material = Material.TNT; + @ConfigField private boolean disabled = false; public TNTElement(Vector position, TNTGroup tntGroup, REntityServer entityServer) { - this.entityServer = entityServer; - this.tntGroup = tntGroup; this.position = position; - initEntity(); + init(entityServer, tntGroup); } - public TNTElement(YAPIONObject yapionObject, TNTGroup tntGroup, REntityServer entityServer) { - this.entityServer = entityServer; - this.tntGroup = tntGroup; - this.position = new Vector(yapionObject.getDoubleOrDefault("x", yapionObject.getDoubleOrDefault("positionX", 0)), yapionObject.getDoubleOrDefault("y", yapionObject.getDoubleOrDefault("positionY", 0)), yapionObject.getDoubleOrDefault("z", yapionObject.getDoubleOrDefault("positionZ", 0))); - this.disabled = yapionObject.getBooleanOrDefault("disabled", false); - this.fuseTicks = yapionObject.getIntOrDefault("fuseTicks", 80); - this.count = yapionObject.getIntOrDefault("count", 1); - this.tickOffset = yapionObject.getIntOrDefault("tickOffset", 0); - this.xVelocity = yapionObject.getBooleanOrDefault("xVelocity", false); - this.yVelocity = yapionObject.getBooleanOrDefault("yVelocity", false); - this.zVelocity = yapionObject.getBooleanOrDefault("zVelocity", false); - this.order = Material.valueOf(yapionObject.getStringOrDefault("order", yapionObject.getBooleanOrDefault("comparator", false) ? Material.COMPARATOR.name() : Material.REPEATER.name())); - this.material = Material.valueOf(yapionObject.getStringOrDefault("material", Material.TNT.name())); - initEntity(); - } - - private void initEntity() { - this.entity = new RFallingBlockEntity(entityServer, getPosition().toLocation(WORLD), Material.TNT); - this.entity.setNoGravity(true); - _updatePosition(); + public TNTElement(Map map) { + super(map); } @Override - public YAPIONObject toYAPION() { - YAPIONObject yapionObject = new YAPIONObject(); - yapionObject.add("x", position.getX()); - yapionObject.add("y", position.getY()); - yapionObject.add("z", position.getZ()); - yapionObject.add("fuseTicks", fuseTicks); - yapionObject.add("count", count); - yapionObject.add("tickOffset", tickOffset); - yapionObject.add("xVelocity", xVelocity); - yapionObject.add("yVelocity", yVelocity); - yapionObject.add("zVelocity", zVelocity); - yapionObject.add("order", order.name()); - yapionObject.add("material", material.name()); - yapionObject.add("disabled", disabled); - return yapionObject; + public void init(REntityServer entityServer, TNTGroup tntGroup) { + this.entityServer = entityServer; + this.tntGroup = tntGroup; + this.entity = new RFallingBlockEntity(entityServer, getPosition().toLocation(WORLD), Material.TNT); + this.entity.setNoGravity(true); + _updatePosition(); } @Override @@ -191,7 +173,7 @@ public class TNTElement implements SimulatorElement { @Override public boolean locations(Map>>> result, Region region, Location radius) { if (disabled) return false; - Location location = getPosition().toLocation(SimulatorStorage.WORLD); + Location location = getPosition().toLocation(WORLD); if (region.isGlobal() && location.distanceSquared(radius) > 10000) { return false; } @@ -199,14 +181,14 @@ public class TNTElement implements SimulatorElement { return false; } Region thisRegion = Region.getRegion(location); - if (thisRegion.getFlagStorage().get(Flag.FREEZE) == FreezeMode.ACTIVE) { + if (thisRegion.get(Flag.FREEZE) == FreezeMode.ACTIVE) { return true; } result.computeIfAbsent(getTickOffset(), ignore -> new HashMap<>()) .computeIfAbsent(OrderUtils.order(order), ignore -> new HashSet<>()) .add(new Pair<>(() -> { - SimulatorStorage.WORLD.spawn(location, TNTPrimed.class, tntPrimed -> { + WORLD.spawn(location, TNTPrimed.class, tntPrimed -> { tntPrimed.setFuseTicks(fuseTicks); if (!xVelocity) tntPrimed.setVelocity(tntPrimed.getVelocity().setX(0)); if (!yVelocity) tntPrimed.setVelocity(tntPrimed.getVelocity().setY(0)); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/TNTGroup.java b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/TNTGroup.java index f3327578..5595db5d 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/TNTGroup.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/simulator/tnt/TNTGroup.java @@ -20,6 +20,8 @@ package de.steamwar.bausystem.features.simulator.tnt; import de.steamwar.bausystem.BauSystem; +import de.steamwar.bausystem.config.ConfigField; +import de.steamwar.bausystem.config.YamlConfig; import de.steamwar.bausystem.region.Region; import de.steamwar.bausystem.shared.Pair; import de.steamwar.entity.REntity; @@ -30,8 +32,6 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.util.Vector; -import yapion.hierarchy.types.YAPIONArray; -import yapion.hierarchy.types.YAPIONObject; import java.util.ArrayList; import java.util.List; @@ -40,50 +40,36 @@ import java.util.Set; import java.util.stream.Collectors; @Getter -public class TNTGroup implements SimulatorElement { +public class TNTGroup extends YamlConfig implements SimulatorElement { - private final Vector position; + @ConfigField + private Vector position; + @ConfigField private int tickOffset = 0; + @ConfigField private Material material = Material.BARREL; + @ConfigField private boolean disabled = false; - private List elements = new ArrayList<>(); + @ConfigField + private final List elements = new ArrayList<>(); public TNTGroup(Vector position) { this.position = position; } - public TNTGroup(YAPIONObject yapionObject, REntityServer entityServer) { - this.position = new Vector(yapionObject.getDoubleOrDefault("x", 0), yapionObject.getDoubleOrDefault("y", 0), yapionObject.getDoubleOrDefault("z", 0)); - this.tickOffset = yapionObject.getIntOrDefault("tickOffset", 0); - this.material = Material.getMaterial(yapionObject.getStringOrDefault("material", "BARREL")); - this.disabled = yapionObject.getBooleanOrDefault("disabled", false); - YAPIONArray elements = yapionObject.getArrayOrDefault("elements", new YAPIONArray()); - for (YAPIONObject element : elements.streamObject().collect(Collectors.toList())) { - TNTElement tntElement = new TNTElement(element, this, entityServer); - this.elements.add(tntElement); - tntElement._updatePosition(); - } + public TNTGroup(Map map) { + super(map); } @Override - public YAPIONObject toYAPION() { - YAPIONObject yapionObject = new YAPIONObject(); - yapionObject.add("x", position.getX()); - yapionObject.add("y", position.getY()); - yapionObject.add("z", position.getZ()); - yapionObject.add("tickOffset", tickOffset); - yapionObject.add("material", material.name()); - yapionObject.add("disabled", disabled); - YAPIONArray yapionArray = new YAPIONArray(); - for (TNTElement element : elements) { - yapionArray.add(element.toYAPION()); + public void init(REntityServer entityServer, TNTGroup tntGroup) { + for(TNTElement element : elements) { + element.init(entityServer, this); } - yapionObject.add("elements", yapionArray); - return yapionObject; } public void add(TNTElement tntElement) { - tntElement.tntGroup = this; + tntElement.setTntGroup(this); elements.add(tntElement); } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/worlddata/SimulatorData.java b/BauSystem_Main/src/de/steamwar/bausystem/worlddata/SimulatorData.java deleted file mode 100644 index 7b3687b8..00000000 --- a/BauSystem_Main/src/de/steamwar/bausystem/worlddata/SimulatorData.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * This file is a part of the SteamWar software. - * - * Copyright (C) 2021 SteamWar.de-Serverteam - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see . - */ - -package de.steamwar.bausystem.worlddata; - -import de.steamwar.sql.SteamwarUser; -import lombok.SneakyThrows; -import lombok.experimental.UtilityClass; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import yapion.hierarchy.output.FileOutput; -import yapion.hierarchy.types.YAPIONArray; -import yapion.hierarchy.types.YAPIONObject; -import yapion.parser.InputStreamCharsets; -import yapion.parser.YAPIONParser; -import yapion.parser.options.FileOptions; - -import java.io.File; -import java.util.List; - -@UtilityClass -public class SimulatorData { - - private final File simulatorsDir = new File(Bukkit.getWorlds().get(0).getWorldFolder(), "simulators"); - - static { - simulatorsDir.mkdirs(); - } - - @SneakyThrows - public YAPIONObject getSimulator(Player player) { - File file = getFile(player); - if (!file.exists()) { - return new YAPIONObject(); - } - return YAPIONParser.parse(file, new FileOptions().charset(InputStreamCharsets.UTF_8)); - } - - @SneakyThrows - private void internalSaveSimulator(Player player, YAPIONObject yapionObject) { - File file = getFile(player); - yapionObject.toYAPION(new FileOutput(file)).close(); - } - - @SneakyThrows - void saveSimulator(SteamwarUser steamwarUser, YAPIONObject yapionObject) { - File file = new File(simulatorsDir, steamwarUser.getId() + ".yapion"); - yapionObject.toYAPION(new FileOutput(file)).close(); - } - - public List listSimulator(Player player) { - List strings = getSimulator(player).getKeys(); - strings.remove(""); - return strings; - } - - public void saveSimulator(Player player, String name) { - YAPIONObject yapionObject = getSimulator(player); - yapionObject.put(name, yapionObject.getArray("").copy()); - internalSaveSimulator(player, yapionObject); - } - - public void saveSimulator(Player player, YAPIONArray simulator) { - YAPIONObject yapionObject = getSimulator(player); - yapionObject.put("", simulator); - internalSaveSimulator(player, yapionObject); - } - - public void loadSimulator(Player player, String name) { - YAPIONObject yapionObject = getSimulator(player); - yapionObject.put("", yapionObject.getArray(name).copy()); - internalSaveSimulator(player, yapionObject); - } - - public void removeSimulator(Player player, String name) { - YAPIONObject yapionObject = getSimulator(player); - yapionObject.remove(name); - internalSaveSimulator(player, yapionObject); - } - - private File getFile(Player player) { - SteamwarUser steamwarUser = SteamwarUser.get(player.getUniqueId()); - return new File(simulatorsDir, steamwarUser.getId() + ".yapion"); - } -}