diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 8c89be5..cf12048 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -26,5 +26,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d4f87d6..f04e95b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -59,19 +59,32 @@
sonatype
https://oss.sonatype.org/content/groups/public/
+
+ enginehub
+ https://maven.enginehub.org/repo/
+
io.papermc.paper
paper-api
- 1.21-R0.1-SNAPSHOT
+ 1.21.1-R0.1-SNAPSHOT
provided
+
- com.mojang
- authlib
- 1.5.25
+ com.sk89q.worldedit
+ worldedit-bukkit
+ 7.3.9
+ provided
+
+
+
+ com.fastasyncworldedit
+ FastAsyncWorldEdit-Bukkit
+ 2.13.0
+ provided
diff --git a/src/main/java/lnmpro/Commands/AcceptDuelCommand.java b/src/main/java/lnmpro/Commands/AcceptDuelCommand.java
index 01ea291..556be2e 100644
--- a/src/main/java/lnmpro/Commands/AcceptDuelCommand.java
+++ b/src/main/java/lnmpro/Commands/AcceptDuelCommand.java
@@ -2,12 +2,18 @@ package lnmpro.Commands;
import lnmpro.Main;
import lnmpro.Utils.Kits;
+import lnmpro.Utils.SchematicPlacer;
import org.bukkit.Bukkit;
+import org.bukkit.GameMode;
+import org.bukkit.Location;
+import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.potion.PotionEffectType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -26,6 +32,8 @@ public class AcceptDuelCommand implements CommandExecutor, TabCompleter {
if (sender instanceof Player player) {
if (player.hasMetadata("DueledBy")) {
Kits kitManager = new Kits(plugin);
+ SchematicPlacer schematic = new SchematicPlacer(plugin);
+
UUID targetUUID = UUID.fromString(player.getMetadata("DueledBy").get(0).asString());
Player enemy = Bukkit.getPlayer(targetUUID);
String gamemode = player.getMetadata("DueledWithGamemode").get(0).asString();
@@ -33,7 +41,40 @@ public class AcceptDuelCommand implements CommandExecutor, TabCompleter {
player.sendMessage("cica " + gamemode);
player.removeMetadata("DueledBy", plugin);
player.removeMetadata("DueledWithGamemode", plugin);
- player.getInventory().setContents(kitManager.getMaceKit(player).getContents());
+
+ player.getInventory().clear();
+ enemy.getInventory().clear();
+ player.getInventory().setContents(kitManager.getAxeKit(player).getContents());
+ enemy.getInventory().setContents(kitManager.getAxeKit(player).getContents());
+
+ World world = Bukkit.getWorld("world");
+ int x = 1000;
+ int y = 0;
+ int z = -2000;
+
+ schematic.placeSchematic(world, x, y, z, "football");
+ Location playerLoc = new Location(world, x + 19.5, y + 0.5, z + 0.5, 90, 0);
+ Location enemyLoc = new Location(world, x - 17.5, y + 0.5, z + 0.5, -90, 0);
+
+ for (PotionEffect potionEffect : player.getActivePotionEffects()) {
+ player.removePotionEffect(potionEffect.getType());
+ }
+ for (PotionEffect potionEffect : enemy.getActivePotionEffects()) {
+ enemy.removePotionEffect(potionEffect.getType());
+ }
+ player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 20, 1), true);
+ enemy.addPotionEffect(new PotionEffect(PotionEffectType.SLOW_FALLING, 20, 1), true);
+ player.teleport(playerLoc);
+ enemy.teleport(enemyLoc);
+ player.setHealth(20D);
+ enemy.setHealth(20D);
+ player.setFoodLevel(20);
+ enemy.setFoodLevel(20);
+ player.setSaturation(5);
+ enemy.setSaturation(5);
+ player.setGameMode(GameMode.ADVENTURE);
+ enemy.setGameMode(GameMode.ADVENTURE);
+
}
} else {
sender.sendMessage("nem vagy player nem fog sikerulni");
diff --git a/src/main/java/lnmpro/Commands/DenyDuelCommand.java b/src/main/java/lnmpro/Commands/DenyDuelCommand.java
index 1bbfb19..1477eea 100644
--- a/src/main/java/lnmpro/Commands/DenyDuelCommand.java
+++ b/src/main/java/lnmpro/Commands/DenyDuelCommand.java
@@ -27,8 +27,6 @@ public class DenyDuelCommand implements CommandExecutor, TabCompleter {
UUID targetUUID = UUID.fromString(player.getMetadata("DueledBy").get(0).asString());
Player enemy = Bukkit.getPlayer(targetUUID);
String gamemode = player.getMetadata("DueledWithGamemode").get(0).asString();
- enemy.sendMessage("nem cica " + gamemode);
- player.sendMessage("nem cica " + gamemode);
player.removeMetadata("DueledBy", plugin);
player.removeMetadata("DueledWithGamemode", plugin);
}
diff --git a/src/main/java/lnmpro/Commands/DuelsCommand.java b/src/main/java/lnmpro/Commands/DuelCommand.java
similarity index 96%
rename from src/main/java/lnmpro/Commands/DuelsCommand.java
rename to src/main/java/lnmpro/Commands/DuelCommand.java
index beaeba4..d01666e 100644
--- a/src/main/java/lnmpro/Commands/DuelsCommand.java
+++ b/src/main/java/lnmpro/Commands/DuelCommand.java
@@ -3,7 +3,6 @@ package lnmpro.Commands;
import lnmpro.Main;
import org.bukkit.Bukkit;
import org.bukkit.Material;
-import org.bukkit.OfflinePlayer;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -18,22 +17,18 @@ import org.bukkit.inventory.meta.SkullMeta;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
-import com.mojang.authlib.GameProfile;
-import com.mojang.authlib.properties.Property;
import org.bukkit.profile.PlayerProfile;
import org.bukkit.profile.PlayerTextures;
-import java.lang.reflect.Field;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.UUID;
-import java.util.Collections;
-public class DuelsCommand implements CommandExecutor, TabCompleter {
+public class DuelCommand implements CommandExecutor, TabCompleter {
private final Main plugin;
- public DuelsCommand(Main plugin) {
+ public DuelCommand(Main plugin) {
this.plugin = plugin;
}
diff --git a/src/main/java/lnmpro/Main.java b/src/main/java/lnmpro/Main.java
index dec3bd4..80dca74 100644
--- a/src/main/java/lnmpro/Main.java
+++ b/src/main/java/lnmpro/Main.java
@@ -14,7 +14,7 @@ public final class Main extends JavaPlugin {
saveDefaultConfig();
saveConfig();
- getCommand("duel").setExecutor(new DuelsCommand(this));
+ getCommand("duel").setExecutor(new DuelCommand(this));
getCommand("acceptduel").setExecutor(new AcceptDuelCommand(this));
getCommand("denyduel").setExecutor(new DenyDuelCommand(this));
diff --git a/src/main/java/lnmpro/Utils/Kits.java b/src/main/java/lnmpro/Utils/Kits.java
index 31e8b39..6b5e03c 100644
--- a/src/main/java/lnmpro/Utils/Kits.java
+++ b/src/main/java/lnmpro/Utils/Kits.java
@@ -228,6 +228,10 @@ public class Kits {
PlayerInventory inv = player.getInventory();
+ ItemStack helmet = new ItemStack(Material.DIAMOND_HELMET);
+ ItemStack chestplate = new ItemStack(Material.DIAMOND_CHESTPLATE);
+ ItemStack leggings = new ItemStack(Material.DIAMOND_LEGGINGS);
+ ItemStack boots = new ItemStack(Material.DIAMOND_BOOTS);
ItemStack axe = new ItemStack(Material.DIAMOND_AXE);
ItemStack sword = new ItemStack(Material.DIAMOND_SWORD);
ItemStack crossbow = new ItemStack(Material.CROSSBOW);
@@ -235,6 +239,7 @@ public class Kits {
ItemStack arrow = new ItemStack(Material.ARROW, 6);
ItemStack shield = new ItemStack(Material.SHIELD);
+ inv.setArmorContents(new ItemStack[]{boots, leggings, chestplate, helmet});
inv.setItem(getItemSlot("axe", "axe", player), axe);
inv.setItem(getItemSlot("sword", "axe", player), sword);
inv.setItem(getItemSlot("crossbow", "axe", player), crossbow);
diff --git a/src/main/java/lnmpro/Utils/SchematicPlacer.java b/src/main/java/lnmpro/Utils/SchematicPlacer.java
new file mode 100644
index 0000000..5b74632
--- /dev/null
+++ b/src/main/java/lnmpro/Utils/SchematicPlacer.java
@@ -0,0 +1,79 @@
+package lnmpro.Utils;
+
+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.function.operation.Operations;
+import com.sk89q.worldedit.math.BlockVector3;
+import com.sk89q.worldedit.session.ClipboardHolder;
+import lnmpro.Main;
+import org.bukkit.Location;
+import org.bukkit.World;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+public class SchematicPlacer {
+ private final Main plugin;
+
+ public SchematicPlacer(Main plugin) {
+ this.plugin = plugin;
+ }
+ public boolean placeSchematic(World world, int x, int y, int z, String schematicName) {
+ File schematicFile = new File(plugin.getDataFolder() + File.separator + "schematics", schematicName + ".schem");
+
+ if (!schematicFile.exists()) {
+ plugin.getLogger().warning("Schematic file not found: " + schematicFile.getAbsolutePath());
+ return false;
+ }
+
+ ClipboardFormat format = ClipboardFormats.findByFile(schematicFile);
+ if (format == null) {
+ plugin.getLogger().warning("Unknown schematic format for file: " + schematicFile.getAbsolutePath());
+ return false;
+ }
+
+ try (FileInputStream fis = new FileInputStream(schematicFile);
+ ClipboardReader reader = format.getReader(fis)) {
+
+ Clipboard clipboard = reader.read();
+ com.sk89q.worldedit.world.World weWorld = BukkitAdapter.adapt(world);
+
+ try (EditSession editSession = WorldEdit.getInstance().newEditSession(weWorld)) {
+ Operation operation = new ClipboardHolder(clipboard)
+ .createPaste(editSession)
+ .to(BlockVector3.at(x, y, z))
+ .ignoreAirBlocks(false)
+ .build();
+
+ Operations.complete(operation);
+ editSession.flushSession();
+ return true;
+ }
+ } catch (IOException e) {
+ plugin.getLogger().severe("Error reading schematic file: " + e.getMessage());
+ e.printStackTrace();
+ } catch (Exception e) {
+ plugin.getLogger().severe("Error placing schematic: " + e.getMessage());
+ e.printStackTrace();
+ }
+
+ return false;
+ }
+
+ public boolean placeSchematic(Location location, String schematicName) {
+ return placeSchematic(
+ location.getWorld(),
+ location.getBlockX(),
+ location.getBlockY(),
+ location.getBlockZ(),
+ schematicName
+ );
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index ebe185b..ff902bc 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,2 +1 @@
-kits:
- mace:
\ No newline at end of file
+kits: {}
\ No newline at end of file
diff --git a/target/InsaneDuels-1.0-SNAPSHOT-shaded.jar b/target/InsaneDuels-1.0-SNAPSHOT-shaded.jar
deleted file mode 100644
index 60d30d3..0000000
Binary files a/target/InsaneDuels-1.0-SNAPSHOT-shaded.jar and /dev/null differ
diff --git a/target/InsaneDuels-1.0-SNAPSHOT.jar b/target/InsaneDuels-1.0-SNAPSHOT.jar
index 60d30d3..8731a6b 100644
Binary files a/target/InsaneDuels-1.0-SNAPSHOT.jar and b/target/InsaneDuels-1.0-SNAPSHOT.jar differ
diff --git a/target/classes/config.yml b/target/classes/config.yml
index ebe185b..ff902bc 100644
--- a/target/classes/config.yml
+++ b/target/classes/config.yml
@@ -1,2 +1 @@
-kits:
- mace:
\ No newline at end of file
+kits: {}
\ No newline at end of file
diff --git a/target/classes/lnmpro/Main.class b/target/classes/lnmpro/Main.class
index a713835..d691f8c 100644
Binary files a/target/classes/lnmpro/Main.class and b/target/classes/lnmpro/Main.class differ
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
index b45021b..eef61db 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -1,7 +1,2 @@
-lnmpro\Main.class
-lnmpro\Commands\AcceptDuelCommand.class
-lnmpro\Listeners\DuelRequestListener.class
-lnmpro\Commands\DenyDuelCommand.class
-lnmpro\Listeners\KitListener.class
-lnmpro\Commands\DuelsCommand.class
-lnmpro\Utils\Kits.class
+lnmpro/Utils/SchematicPlacer.class
+lnmpro/Commands/DuelCommand.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
index 2136b8f..7ff3292 100644
--- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -1,7 +1,8 @@
-E:\InsaneDuels\InsaneDuels\src\main\java\lnmpro\Commands\AcceptDuelCommand.java
-E:\InsaneDuels\InsaneDuels\src\main\java\lnmpro\Commands\DenyDuelCommand.java
-E:\InsaneDuels\InsaneDuels\src\main\java\lnmpro\Commands\DuelsCommand.java
-E:\InsaneDuels\InsaneDuels\src\main\java\lnmpro\Listeners\DuelRequestListener.java
-E:\InsaneDuels\InsaneDuels\src\main\java\lnmpro\Listeners\KitListener.java
-E:\InsaneDuels\InsaneDuels\src\main\java\lnmpro\Main.java
-E:\InsaneDuels\InsaneDuels\src\main\java\lnmpro\Utils\Kits.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/AcceptDuelCommand.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/DenyDuelCommand.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Commands/DuelCommand.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Listeners/DuelRequestListener.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Listeners/KitListener.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Main.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Utils/Kits.java
+/home/jgj52/IdeaProjects/InsaneDuels/src/main/java/lnmpro/Utils/SchematicPlacer.java
diff --git a/target/original-InsaneDuels-1.0-SNAPSHOT.jar b/target/original-InsaneDuels-1.0-SNAPSHOT.jar
index 70f989c..7dab78f 100644
Binary files a/target/original-InsaneDuels-1.0-SNAPSHOT.jar and b/target/original-InsaneDuels-1.0-SNAPSHOT.jar differ