diff --git a/pom.xml b/pom.xml index 20704d24..55fc71e4 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ dev.efnilite IP pom - 3.3.3 + 3.3.4 witp diff --git a/witp/pom.xml b/witp/pom.xml index fdef54bc..f185d714 100644 --- a/witp/pom.xml +++ b/witp/pom.xml @@ -5,12 +5,12 @@ IP dev.efnilite - 3.3.3 + 3.3.4 4.0.0 witp - 3.3.3 + 3.3.4 16 diff --git a/witp/src/main/java/dev/efnilite/ip/ParkourCommand.java b/witp/src/main/java/dev/efnilite/ip/ParkourCommand.java index b1e33e23..5fd1418e 100644 --- a/witp/src/main/java/dev/efnilite/ip/ParkourCommand.java +++ b/witp/src/main/java/dev/efnilite/ip/ParkourCommand.java @@ -8,7 +8,9 @@ import dev.efnilite.ip.player.ParkourPlayer; import dev.efnilite.ip.player.ParkourUser; import dev.efnilite.ip.player.data.InventoryData; +import dev.efnilite.ip.schematic.RotationAngle; import dev.efnilite.ip.schematic.Schematic; +import dev.efnilite.ip.schematic.SchematicCache; import dev.efnilite.ip.schematic.selection.Selection; import dev.efnilite.ip.session.Session; import dev.efnilite.ip.util.Util; @@ -194,6 +196,7 @@ public boolean execute(CommandSender sender, String[] args) { Message.send(player, "/witp schematic pos1 - &7Set the first position of your selection"); Message.send(player, "/witp schematic pos2 - &7Set the second position of your selection"); Message.send(player, "/witp schematic save - &7Save your selection to a schematic file"); + Message.send(player, "/witp schematic paste - &7Paste a schematic file"); Message.send(player, ""); Message.send(player, "&nHave any questions or need help? Join the Discord!"); return true; @@ -410,6 +413,21 @@ public boolean execute(CommandSender sender, String[] args) { return true; } + } else if (args.length == 3) { + if (args[0].equalsIgnoreCase("schematic") && player != null && player.hasPermission("witp.schematic")) { + if (args[1].equalsIgnoreCase("paste")) { + String name = args[2]; + Schematic schematic = SchematicCache.getSchematic(name); + if (schematic == null) { + Message.send(sender, IP.PREFIX + "Couldn't find " + name); + return true; + } + + schematic.paste(player.getLocation(), RotationAngle.ANGLE_0); + Message.send(sender, IP.PREFIX + "Pasted schematic " + name); + return true; + } + } } return true; } @@ -450,7 +468,7 @@ public List tabComplete(CommandSender sender, String[] args) { completions.add(pp.getName()); } } else if (args[0].equalsIgnoreCase("schematic") && sender.hasPermission("witp.schematic")) { - completions.addAll(Arrays.asList("wand", "pos1", "pos2", "save")); + completions.addAll(Arrays.asList("wand", "pos1", "pos2", "save", "paste")); } else if (args[0].equalsIgnoreCase("forcejoin") && sender.hasPermission("witp.forcejoin")) { if (sender.hasPermission("witp.forcejoin.everyone")) { completions.add("everyone"); diff --git a/witp/src/main/java/dev/efnilite/ip/generator/DefaultGenerator.java b/witp/src/main/java/dev/efnilite/ip/generator/DefaultGenerator.java index 7c5fd574..adcf77f3 100644 --- a/witp/src/main/java/dev/efnilite/ip/generator/DefaultGenerator.java +++ b/witp/src/main/java/dev/efnilite/ip/generator/DefaultGenerator.java @@ -109,7 +109,7 @@ public DefaultGenerator(@NotNull Session session, GeneratorOption... generatorOp this.mostRecentBlock = player.getLocation().clone(); this.lastStandingPlayerLocation = mostRecentBlock.clone(); - this.heading = Option.HEADING.get(); + this.heading = Option.HEADING; } @Override diff --git a/witp/src/main/java/dev/efnilite/ip/schematic/SchematicAdjuster.java b/witp/src/main/java/dev/efnilite/ip/schematic/SchematicAdjuster.java index ca462f5c..3b95ce53 100644 --- a/witp/src/main/java/dev/efnilite/ip/schematic/SchematicAdjuster.java +++ b/witp/src/main/java/dev/efnilite/ip/schematic/SchematicAdjuster.java @@ -32,7 +32,7 @@ public class SchematicAdjuster { Vector3D to = start.getRelativePosition(); adjustTo = adjustTo.subtract(to.toBukkitVector()); - return schematic.pasteAdjusted(adjustTo, getAngle(Option.HEADING.get())); + return schematic.pasteAdjusted(adjustTo, getAngle(Option.HEADING)); } /** @@ -43,7 +43,7 @@ public class SchematicAdjuster { * * @return the associated angle */ - private static RotationAngle getAngle(Direction heading) { + public static RotationAngle getAngle(Direction heading) { return switch (heading) { case SOUTH -> // south RotationAngle.ANGLE_180; diff --git a/witp/src/main/java/dev/efnilite/ip/util/config/Option.java b/witp/src/main/java/dev/efnilite/ip/util/config/Option.java index dabbc692..4cbae3c2 100644 --- a/witp/src/main/java/dev/efnilite/ip/util/config/Option.java +++ b/witp/src/main/java/dev/efnilite/ip/util/config/Option.java @@ -42,7 +42,7 @@ public class Option { public static List POSSIBLE_LEADS; // Advanced settings - public static ConfigOption HEADING; + public static Direction HEADING; public static ConfigOption> LANGUAGES; public static String DEFAULT_LANG; @@ -149,7 +149,7 @@ public static void init(boolean init) { BUNGEECORD = new ConfigOption<>(config, "bungeecord.enabled"); // Generation - HEADING = new ConfigOption<>(Util.getDirection(generation.getString("advanced.island.parkour.heading"))); + HEADING = Util.getDirection(generation.getString("advanced.island.parkour.heading")); // Scoring ALL_POINTS = new ConfigOption<>(config, "scoring.all-points"); diff --git a/witp/src/main/java/dev/efnilite/ip/world/WorldDivider.java b/witp/src/main/java/dev/efnilite/ip/world/WorldDivider.java index 37e9ddc4..110179a7 100644 --- a/witp/src/main/java/dev/efnilite/ip/world/WorldDivider.java +++ b/witp/src/main/java/dev/efnilite/ip/world/WorldDivider.java @@ -261,11 +261,14 @@ public void setup(Location to, ParkourPlayer pp) { Player player = pp.getPlayer(); pp.teleport(to); + player.setGameMode(GameMode.ADVENTURE); // -= Inventory =- - player.setGameMode(GameMode.ADVENTURE); - if (Option.INVENTORY_HANDLING.get() && Option.OPTIONS_ENABLED.get()) { + if (Option.INVENTORY_HANDLING.get()) { player.getInventory().clear(); + } + + if (Option.INVENTORY_HANDLING.get() && Option.OPTIONS_ENABLED.get()) { ItemStack mat = IP.getConfiguration().getFromItemData(pp.getLocale(), "general.menu").build(); if (mat == null) { IP.logging().error("Material for options in config is null - defaulting to compass"); diff --git a/witp/src/main/resources/plugin.yml b/witp/src/main/resources/plugin.yml index dcfedc8a..0caf4007 100644 --- a/witp/src/main/resources/plugin.yml +++ b/witp/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: 'WITP' description: 'Infinitely automatically generating parkour plugin.' author: Efnilite, Ice_Pancake -version: 3.3.3 +version: 3.3.4 api-version: 1.16 main: dev.efnilite.ip.IP depend: [vilib]