diff --git a/.gitignore b/.gitignore index 1c4fe38..9502fda 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ # User-specific stuff -server/ # .idea/ .vscode/ .settings/ diff --git a/.idea/modules.xml b/.idea/modules.xml index edf799d..de5bc76 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -2,6 +2,7 @@ + diff --git a/src/main/java/me/unurled/raxen/manager/server/BuildManager.java b/src/main/java/me/unurled/raxen/manager/server/BuildManager.java new file mode 100644 index 0000000..1c3aed1 --- /dev/null +++ b/src/main/java/me/unurled/raxen/manager/server/BuildManager.java @@ -0,0 +1,87 @@ +package me.unurled.raxen.manager.server; + +import java.util.HashMap; +import java.util.Map; +import me.unurled.raxen.Raxen; +import me.unurled.raxen.components.clientbuild.Builds; +import me.unurled.raxen.components.clientbuild.PlayerList; +import org.bukkit.Location; +import org.bukkit.block.Block; +import org.bukkit.entity.Player; + +public class BuildManager { + + private Raxen raxen; + + private HashMap builds; + + + public BuildManager(Raxen raxen) { + this.raxen = raxen; + this.builds = new HashMap<>(); + } + + public HashMap getBuilds() { + return builds; + } + + public void addBuild(Builds build, PlayerList pl) { + builds.put(build, pl); + } + + public void removeBuild(Builds build) { + builds.remove(build); + } + + public Builds getBuildByOwner(String owner) { + for (Map.Entry entry : builds.entrySet()) { + if (entry.getKey().getOwner().toString().equals(owner)) { + return entry.getKey(); + } + } + return null; + } + + public HashMap getBuildsByOwner(String owner) { + HashMap buildss = new HashMap<>(); + for (Map.Entry build : builds.entrySet()) { + if (build.getKey().getOwner().toString().equals(owner)) { + buildss.put(build.getKey(), build.getValue()); + } + } + return buildss; + } + + public Builds getBuildsByLocation(Location loc) { + for (Map.Entry build : builds.entrySet()) { + for (Block b : build.getKey().getBlocks()) { + Location bl = b.getLocation(); + if (bl.getWorld() == loc.getWorld() && bl.getBlockX() == loc.getBlockX() + && bl.getBlockY() == loc.getBlockY() && bl.getBlockZ() == loc.getBlockZ()) { + return build.getKey(); + } + } + } + return null; + } + + public boolean isABuild(Location loc) { + for (Map.Entry build : builds.entrySet()) { + for (Block b : build.getKey().getBlocks()) { + Location bl = b.getLocation(); + if (bl.getWorld() == loc.getWorld() && bl.getBlockX() == loc.getBlockX() + && bl.getBlockY() == loc.getBlockY() && bl.getBlockZ() == loc.getBlockZ()) { + return true; + } + } + } + return false; + } + + public boolean isInPlayerList(Builds build, Player player) { + if (!builds.containsKey(build)) { + return false; + } + return builds.get(build).getPlayers().contains(player); + } +} diff --git a/src/main/java/me/unurled/raxen/manager/server/GlyphManager.java b/src/main/java/me/unurled/raxen/manager/server/GlyphManager.java new file mode 100644 index 0000000..6199f65 --- /dev/null +++ b/src/main/java/me/unurled/raxen/manager/server/GlyphManager.java @@ -0,0 +1,41 @@ +package me.unurled.raxen.manager.server; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import lombok.Getter; +import me.unurled.raxen.Raxen; +import me.unurled.raxen.components.glyph.Glyph; +import me.unurled.raxen.components.glyph.GlyphBuilder; +import me.unurled.raxen.config.GlyphConfig; + +public class GlyphManager { + + private Raxen main; + + @Getter + private HashMap glyphs; + private GlyphConfig glyphConfig; + private Map> map; + + public GlyphManager(Raxen main) { + this.main = main; + glyphs = new HashMap<>(); + registerGlyphs(); + } + + void registerGlyphs() { + // TODO: register all glyphs + glyphConfig = new GlyphConfig(main); + map = glyphConfig.parseGlyphConfigs(); + final List glyphList = new ArrayList<>(); + for (final Map subMap : map.values()) { + glyphList.addAll(subMap.keySet()); + } + for (String glyph : glyphList) { +// registerGlyph(glyph); + } + } +} diff --git a/src/main/java/me/unurled/raxen/manager/server/TutorialManager.java b/src/main/java/me/unurled/raxen/manager/server/TutorialManager.java new file mode 100644 index 0000000..8111a1d --- /dev/null +++ b/src/main/java/me/unurled/raxen/manager/server/TutorialManager.java @@ -0,0 +1,106 @@ +package me.unurled.raxen.manager.server; + +import com.sk89q.worldedit.EditSession; +import com.sk89q.worldedit.WorldEdit; +import com.sk89q.worldedit.bukkit.BukkitAdapter; +import com.sk89q.worldedit.extent.clipboard.Clipboard; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats; +import com.sk89q.worldedit.extent.clipboard.io.ClipboardReader; +import com.sk89q.worldedit.function.operation.Operation; +import com.sk89q.worldedit.math.BlockVector3; +import com.sk89q.worldedit.session.ClipboardHolder; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import lombok.Getter; +import me.unurled.raxen.components.tutorial.Tutorial; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Player; + +public class TutorialManager { + + Map tutorials = new HashMap<>(); + + @Getter + Map locations = new HashMap<>(); + + double x = 0; + double y = 0; + double z = 0; + + static final double STEP = 150; + + public void addTutorial(Player player, Tutorial tutorial) { + tutorials.put(player.getUniqueId(), tutorial); + locations.put(player.getUniqueId(), player.getLocation()); + } + + public Tutorial getTutorial(UUID uuid) { + return tutorials.get(uuid); + } + + public void removeTutorial(UUID uuid) { + tutorials.remove(uuid); + } + + public Map getTutorials() { + return tutorials; + } + + public void startTutorial(Player player) { + if (tutorials.containsKey(player.getUniqueId())) { + Tutorial tutorial = tutorials.get(player.getUniqueId()); + Location loc = generateTutorial(player); + tutorial.startTutorial(player, loc); + } + } + + public Location generateTutorial(Player player) { + double eX, eY, eZ; + if (x == 0 && y == 0 && z == 0) { + eX = 0; + eY = 0; + eZ = 0; + } else { + eX = x + STEP; + eY = y; + eZ = z; + } + World world = Bukkit.getWorld("tutorial"); + // generate world / location (maybe juste have a schematic and paste it in another part of the world...) + File file = new File(Bukkit.getPluginsFolder() + "/Raxen/schematics/template_tuto.schem"); + Clipboard clipboard = null; + ClipboardFormat format = ClipboardFormats.findByFile(file); + try (ClipboardReader reader = format.getReader(new FileInputStream(file))) { + clipboard = reader.read(); + } catch (IOException e) { + throw new RuntimeException(e); + } + try (EditSession editSession = WorldEdit.getInstance() + .newEditSession(BukkitAdapter.adapt(world))) { + Operation operation = new ClipboardHolder(clipboard) + .createPaste(editSession) + .to(BlockVector3.at(eX, eY, eZ)) + .ignoreAirBlocks(false) + .build(); + } + + // gen holo + + // gen mobs / entities + + // gen loots + + // set global last x, y, z + x = eX; + y = eY; + z = eZ; + return new Location(world, x, y, z); + } +}