From bfa7c94a8f297af3977682bf41b7665fac9fd36e Mon Sep 17 00:00:00 2001 From: unurled Date: Thu, 14 Apr 2022 22:35:27 +0200 Subject: [PATCH] 0.5.1 --- .gitignore | 1 + build.gradle | 2 +- src/main/java/gq/unurled/raxen/Raxen.java | 2 +- .../raxen/components/dungeons/Dungeon.java | 23 ++++---- .../raxen/components/dungeons/Gate.java | 1 - .../dungeons/types/MonsterType.java | 56 ++++++++++++++++++- .../dungeons/types/forest/ForestDungeon.java | 16 ++++++ .../dungeons/types/forest/ForestMonster.java | 51 +---------------- .../other/custom/dungeon/forest/Elf.java | 3 +- .../other/custom/dungeon/forest/Wolf.java | 3 +- .../gq/unurled/raxen/manager/Manager.java | 4 +- .../raxen/manager/entity/ItemManager.java | 44 +-------------- .../raxen/manager/server/DungeonsManager.java | 21 +++++++ .../raxen/manager/server/WorldManager.java | 18 +++--- .../java/gq/unurled/raxen/utils/Utils.java | 23 +++++++- .../unurled/raxen/utils/libs/Multiverse.java | 2 +- 16 files changed, 143 insertions(+), 127 deletions(-) create mode 100644 src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestDungeon.java diff --git a/.gitignore b/.gitignore index 8a53917..108f7ad 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ .project api/ *.iml +worlds/ .gradle/ gradle.properties diff --git a/build.gradle b/build.gradle index f32f2a9..f8f5d3c 100644 --- a/build.gradle +++ b/build.gradle @@ -81,7 +81,7 @@ dependencies { } group = 'gq.unurled' -version = '0.4.9' +version = '0.5.1' description = 'Raxen' java.sourceCompatibility = JavaVersion.VERSION_17 diff --git a/src/main/java/gq/unurled/raxen/Raxen.java b/src/main/java/gq/unurled/raxen/Raxen.java index 1cb9219..a30e612 100644 --- a/src/main/java/gq/unurled/raxen/Raxen.java +++ b/src/main/java/gq/unurled/raxen/Raxen.java @@ -19,7 +19,7 @@ public final class Raxen extends JavaPlugin { private static final String prefix = "Rx> "; @Getter - private static String version = "0.4.9"; + private static String version = "0.5.1"; private final PluginManager pm = getServer().getPluginManager(); private static Raxen plugin; diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/Dungeon.java b/src/main/java/gq/unurled/raxen/components/dungeons/Dungeon.java index 9c0cce3..5fd91ce 100644 --- a/src/main/java/gq/unurled/raxen/components/dungeons/Dungeon.java +++ b/src/main/java/gq/unurled/raxen/components/dungeons/Dungeon.java @@ -2,48 +2,45 @@ package gq.unurled.raxen.components.dungeons; import gq.unurled.raxen.Raxen; import gq.unurled.raxen.components.dungeons.types.MonsterType; -import gq.unurled.raxen.components.dungeons.types.forest.ForestMonster; import gq.unurled.raxen.components.entity.other.RaxenEntity; +import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.Location; -import org.bukkit.World; -import java.util.Arrays; import java.util.HashMap; import java.util.Map; -import java.util.UUID; import static gq.unurled.raxen.utils.DungeonUtils.getRadiusFromRank; -import static gq.unurled.raxen.utils.Utils.log; public class Dungeon { - private String name; + @Getter private String name; - private Rank rank; + @Getter private Rank rank; - private Gate gate; + @Getter private Gate gate; - private Map monster = new HashMap(); + @Getter private Map monster = new HashMap(); /** * The Type of the Dungeon */ - private Types types; + @Getter private Types types; /** * Monster Types */ - private MonsterType monsterType; + @Getter private MonsterType monsterType; - private Location location; - private Integer radius; + @Getter private Location location; + @Getter private Integer radius; public Dungeon(String name, Rank rank, Types types, MonsterType mType) { this.name = name; this.rank = rank; this.types = types; this.monsterType = mType; + generateGate(); } /** diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/Gate.java b/src/main/java/gq/unurled/raxen/components/dungeons/Gate.java index a48aead..6d98173 100644 --- a/src/main/java/gq/unurled/raxen/components/dungeons/Gate.java +++ b/src/main/java/gq/unurled/raxen/components/dungeons/Gate.java @@ -4,7 +4,6 @@ import org.bukkit.Location; import org.bukkit.Material; import java.util.Random; -import java.util.UUID; public class Gate { diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/types/MonsterType.java b/src/main/java/gq/unurled/raxen/components/dungeons/types/MonsterType.java index 79b6fa1..f98ad1e 100644 --- a/src/main/java/gq/unurled/raxen/components/dungeons/types/MonsterType.java +++ b/src/main/java/gq/unurled/raxen/components/dungeons/types/MonsterType.java @@ -1,21 +1,34 @@ package gq.unurled.raxen.components.dungeons.types; import gq.unurled.raxen.components.dungeons.Rank; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.World; +import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; +import org.bukkit.scheduler.BukkitRunnable; +import org.bukkit.scheduler.BukkitTask; +import org.jetbrains.annotations.Nullable; -public interface MonsterType { +import java.util.Random; + +import static gq.unurled.raxen.utils.Utils.debug; + +public class MonsterType { public enum type {; private Double rate; public String ID; public Class clazz; + type(Double rate, String ID, Class clazz) { this.rate = rate; this.ID = ID; this.clazz = clazz; } - public static type getTypeById(String ID) { + public static @Nullable type getTypeById(String ID) { for (type type : type.values()) { if(type.ID.equals(ID)) { return type; @@ -31,6 +44,7 @@ public interface MonsterType { public void setRate(Double rate) { this.rate = rate; } + public String getID() { return ID; } @@ -38,7 +52,43 @@ public interface MonsterType { public void setID(String ID) { this.ID = ID; } + + public Class getClazz() { + return clazz; + } + + public void getClazz(Class clazz) { + this.clazz = clazz; + } } - void genMonster(World world, Rank rank); + public void genMonster(World world, Rank rank) { + Double x = 0.0; + Double y = 100.0; + Double z = 0.0; + for (type type : type.values()) { + type.name(); + Random r = new Random(); + int per = r.nextInt(100); + if (per >= type.rate) { + // spawn entity + debug("Spawning Entity " + type.ID); + Entity e = world.spawnEntity(new Location(world, x, y, z), EntityType.ARROW); + // e = ((RaxenEntity) type.getClazz()).createEntity(); + e.setInvulnerable(true); + BukkitTask task = new BukkitRunnable() { + @Override + public void run() { + Location loc = new Location(e.getWorld(), e.getLocation().getX(), e.getLocation().getY()-1, e.getLocation().getZ()); + if (loc.getBlock().getType() != Material.AIR) { + e.setInvulnerable(false); + this.cancel(); + } + } + }.runTaskTimerAsynchronously(Bukkit.getPluginManager().getPlugin("Raxen"), 0L, 20L); + } + x = 5.0 + ( 50.0 - 5.0 ) * r.nextDouble(); + z = 5.0 + ( 50.0 - 5.0 ) * r.nextDouble(); + } + } } diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestDungeon.java b/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestDungeon.java new file mode 100644 index 0000000..b511432 --- /dev/null +++ b/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestDungeon.java @@ -0,0 +1,16 @@ +package gq.unurled.raxen.components.dungeons.types.forest; + +import gq.unurled.raxen.components.dungeons.Dungeon; +import gq.unurled.raxen.components.dungeons.Rank; +import gq.unurled.raxen.components.dungeons.Types; +import gq.unurled.raxen.components.dungeons.types.MonsterType; + +public class ForestDungeon extends Dungeon { + public ForestDungeon(String name, Rank rank, Types types, MonsterType mType) { + super(name, rank, types, mType); + } + + public ForestDungeon() { + super("Forest", Rank.E, Types.FOREST, new ForestMonster()); + } +} diff --git a/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestMonster.java b/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestMonster.java index 545d515..f78d71e 100644 --- a/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestMonster.java +++ b/src/main/java/gq/unurled/raxen/components/dungeons/types/forest/ForestMonster.java @@ -1,60 +1,13 @@ package gq.unurled.raxen.components.dungeons.types.forest; -import gq.unurled.raxen.components.dungeons.Rank; import gq.unurled.raxen.components.dungeons.types.MonsterType; import gq.unurled.raxen.components.entity.other.custom.dungeon.forest.Elf; import gq.unurled.raxen.components.entity.other.custom.dungeon.forest.Wolf; import lombok.Getter; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.World; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Zombie; -import org.bukkit.scheduler.BukkitRunnable; -import org.bukkit.scheduler.BukkitScheduler; -import org.bukkit.scheduler.BukkitTask; -import org.jetbrains.annotations.NotNull; -import java.util.Random; +public class ForestMonster extends MonsterType { -import static gq.unurled.raxen.utils.Utils.debug; -import static org.apache.commons.lang.math.RandomUtils.nextInt; - -public class ForestMonster implements MonsterType { - @Override - public void genMonster(World world, Rank rank) { - Double x = 0.0; - Double y = 100.0; - Double z = 0.0; - for (type type : type.values()) { - type.name(); - Random r = new Random(); - int per = r.nextInt(100); - if (per >= type.rate) { - // spawn entity - debug("Spawning Entity " + type.ID); - Entity e = world.spawnEntity(new Location(world, x, y, z), EntityType.ARROW); - e.setInvulnerable(true); - BukkitTask task = new BukkitRunnable() { - @Override - public void run() { - Location loc = new Location(e.getWorld(), e.getLocation().getX(), e.getLocation().getY()-1, e.getLocation().getZ()); - if (loc.getBlock().getType() != Material.AIR) { - e.setInvulnerable(false); - this.cancel(); - } - } - }.runTaskTimerAsynchronously(Bukkit.getPluginManager().getPlugin("Raxen"), 0L, 20L); - } - x = 5.0 + ( 50.0 - 5.0 ) * r.nextDouble(); - z = 5.0 + ( 50.0 - 5.0 ) * r.nextDouble(); - } - } - - @Getter - enum type { + @Getter enum type { ELF(50.0 ,"ELF", Elf.class), WOLF(50.0, "WOLF", Wolf.class); diff --git a/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Elf.java b/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Elf.java index ca30343..3adaada 100644 --- a/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Elf.java +++ b/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Elf.java @@ -9,8 +9,7 @@ import org.bukkit.entity.EntityType; public class Elf extends RaxenEntity { - @Getter - private final String name; + @Getter private final String name; public Elf(Raxen main, String name, Integer level, Double health, Double strength) { super(main, name, level, health, strength); diff --git a/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Wolf.java b/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Wolf.java index fff8d7c..753491b 100644 --- a/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Wolf.java +++ b/src/main/java/gq/unurled/raxen/components/entity/other/custom/dungeon/forest/Wolf.java @@ -9,8 +9,7 @@ import org.bukkit.entity.EntityType; public class Wolf extends RaxenEntity { - @Getter - private final String name; + @Getter private final String name; public Wolf(Raxen main, String name, Integer level, Double health, Double strength) { diff --git a/src/main/java/gq/unurled/raxen/manager/Manager.java b/src/main/java/gq/unurled/raxen/manager/Manager.java index 08f23dc..836db72 100644 --- a/src/main/java/gq/unurled/raxen/manager/Manager.java +++ b/src/main/java/gq/unurled/raxen/manager/Manager.java @@ -28,11 +28,13 @@ public class Manager { private LootManager lootManager; @Getter private LibsManager libsManager; + @Getter private DungeonsManager dungeonsManager; @Getter private Multiverse multiverse; public void set(Raxen main) { libsManager = new LibsManager(main); + multiverse = new Multiverse(); worldManager = new WorldManager(main); storageManager = new StorageManager(main); @@ -45,6 +47,6 @@ public class Manager { resourcePackManager = new ResourcePackManager(main); entityManager = new EntityManager(main); lootManager = new LootManager(main); - multiverse = new Multiverse(); + dungeonsManager = new DungeonsManager(main); } } diff --git a/src/main/java/gq/unurled/raxen/manager/entity/ItemManager.java b/src/main/java/gq/unurled/raxen/manager/entity/ItemManager.java index 8ad6db7..22f707e 100644 --- a/src/main/java/gq/unurled/raxen/manager/entity/ItemManager.java +++ b/src/main/java/gq/unurled/raxen/manager/entity/ItemManager.java @@ -32,49 +32,7 @@ public class ItemManager { public ItemManager(Raxen main) { this.main = main; - register(); - } - - private void example() { - File customFile; - FileConfiguration customConfig; - customFile = new File(main.getDataFolder() + "/Items/", "/example.yml"); - - if (!customFile.exists()) { - customFile.getParentFile().mkdirs(); - try { - customFile.createNewFile(); - } - catch (IOException e) { - error((Raxen) Bukkit.getPluginManager().getPlugin("Raxen"),"Error in Item Manager saving new File."); - e.printStackTrace(); - } - } - customConfig = new YamlConfiguration(); - try { - customConfig.load(customFile); - } catch (IOException | InvalidConfigurationException e) { - e.printStackTrace(); - } - List lore = new ArrayList<>(); - lore.add("super lore wahou"); - if (customConfig.get("name") == null) { - customConfig.set("id", "minecraft_id_of_item"); - customConfig.set("customId", "id_of_item_used_to_identify_it"); - customConfig.set("name", "Name of the Item"); - customConfig.set("health", 100); - customConfig.set("defense", 50); - customConfig.set("speed", 100); - customConfig.set("strength", 100); - customConfig.set("custom_ability","fireball"); - customConfig.set("custom_model_data", 123); - customConfig.set("lore",lore); - try { - customConfig.save(customFile); - } catch (IOException e) { - e.printStackTrace(); - } - } + // register(); } private void register() { diff --git a/src/main/java/gq/unurled/raxen/manager/server/DungeonsManager.java b/src/main/java/gq/unurled/raxen/manager/server/DungeonsManager.java index d4a8838..2b955d6 100644 --- a/src/main/java/gq/unurled/raxen/manager/server/DungeonsManager.java +++ b/src/main/java/gq/unurled/raxen/manager/server/DungeonsManager.java @@ -1,11 +1,32 @@ package gq.unurled.raxen.manager.server; +import gq.unurled.raxen.Raxen; +import gq.unurled.raxen.components.dungeons.Dungeon; import gq.unurled.raxen.components.dungeons.Gate; +import gq.unurled.raxen.components.dungeons.types.forest.ForestDungeon; import java.util.HashMap; import java.util.UUID; public class DungeonsManager { + private Raxen main; + private HashMap gates = new HashMap<>(); + + private HashMap dungeons = new HashMap<>(); + + public DungeonsManager(Raxen main) { + this.main = main; + registerDungeons(); + } + + public void registerDungeons() { + ForestDungeon forestDungeon = new ForestDungeon(); + dungeons.put("FOREST", forestDungeon); + + for (String s : dungeons.keySet()) { + main.getManager().getWorldManager().loadWorld(dungeons.get(s).getName()); + } + } } diff --git a/src/main/java/gq/unurled/raxen/manager/server/WorldManager.java b/src/main/java/gq/unurled/raxen/manager/server/WorldManager.java index 3acc377..769f697 100644 --- a/src/main/java/gq/unurled/raxen/manager/server/WorldManager.java +++ b/src/main/java/gq/unurled/raxen/manager/server/WorldManager.java @@ -3,13 +3,16 @@ package gq.unurled.raxen.manager.server; import com.onarandombox.MultiverseCore.api.MVWorldManager; import com.onarandombox.MultiverseCore.api.MultiverseWorld; import gq.unurled.raxen.Raxen; +import org.bukkit.World; import java.io.File; import java.io.IOException; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import static gq.unurled.raxen.utils.Utils.*; -import static gq.unurled.raxen.utils.Utils.error; public class WorldManager { @@ -34,8 +37,6 @@ public class WorldManager { this.worldFolder = new File("worlds/"); this.worldManager = main.getManager().getMultiverse().getWorldManager(); worlds.add("Forest"); - log(pluginFolder.getAbsolutePath(), "" + pluginFolder.isDirectory()); - log(worldFolder.getAbsolutePath(), "" + worldFolder.isDirectory()); } public void removeWorld(String name) { @@ -82,19 +83,20 @@ public class WorldManager { } public void loadWorld(String name) { - File world = new File(pluginFolder + name + "/"); + File world = new File(pluginFolder + "/" + name + "/"); if (!world.exists() || !world.isDirectory()) { - error("Loading world " + name + ". Folder don't exists."); + error("Loading world " + name + ". Folder " + world.getAbsolutePath() + " don't exists."); return; } - File newWorld = new File(worldFolder + name); + File newWorld = new File(worldFolder + "/" + name); try { + log(colorTextComp("Copping world " + world.getName() + "."), colorTextComp("From " + world.getAbsolutePath() + " to " + newWorld.getAbsolutePath() +".")); copyDirectory(world.getAbsolutePath(), newWorld.getAbsolutePath()); } catch (IOException e) { error("Error while Loading world " + name + " at coping data."); e.printStackTrace(); } worldManager.loadWorld(name); + worldManager.addWorld(world.getName(), World.Environment.NORMAL, null, null, false, null); } - } diff --git a/src/main/java/gq/unurled/raxen/utils/Utils.java b/src/main/java/gq/unurled/raxen/utils/Utils.java index be3bf25..d84df38 100644 --- a/src/main/java/gq/unurled/raxen/utils/Utils.java +++ b/src/main/java/gq/unurled/raxen/utils/Utils.java @@ -18,10 +18,8 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; -import java.io.File; import java.io.IOException; import java.nio.file.*; -import java.util.Comparator; public class Utils { @@ -84,6 +82,19 @@ public class Utils { .serialize(minimessage.deserialize(string))); } + public static String textCompToString(TextComponent comp) { + MiniMessage minimessage = MiniMessage.builder() + .tags(TagResolver.builder() + .resolver(StandardTags.color()) + .resolver(StandardTags.decorations()) + .resolver(StandardTags.reset()) + .build() + ) + .build(); + return ChatColor.translateAlternateColorCodes('&', LegacyComponentSerializer.legacyAmpersand() + .serialize(comp)); + } + public static String decolor(String string) { return MiniMessage.miniMessage().stripTags(string); } @@ -146,6 +157,14 @@ public class Utils { } } + public static void log(TextComponent... strings) { + Raxen main = (Raxen) Bukkit.getPluginManager().getPlugin("Raxen"); + assert main != null; + for(TextComponent string : strings) { + main.getServer().sendMessage(string); + } + } + public static void warn(String... strings) { Raxen main = (Raxen) Bukkit.getPluginManager().getPlugin("Raxen"); assert main != null; diff --git a/src/main/java/gq/unurled/raxen/utils/libs/Multiverse.java b/src/main/java/gq/unurled/raxen/utils/libs/Multiverse.java index 0c6c07f..52376d2 100644 --- a/src/main/java/gq/unurled/raxen/utils/libs/Multiverse.java +++ b/src/main/java/gq/unurled/raxen/utils/libs/Multiverse.java @@ -10,8 +10,8 @@ public class Multiverse { private MVWorldManager worldManager; public Multiverse() { - this.worldManager = core.getMVWorldManager(); this.core = (MultiverseCore) Bukkit.getServer().getPluginManager().getPlugin("Multiverse-Core"); + this.worldManager = core.getMVWorldManager(); } public MVWorldManager getWorldManager() {