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]