diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..4788b4b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,113 @@
+# User-specific stuff
+.idea/
+
+*.iml
+*.ipr
+*.iws
+
+# IntelliJ
+out/
+
+# Compiled class file
+*.class
+
+# Log file
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Package Files #
+*.jar
+*.war
+*.nar
+*.ear
+*.zip
+*.tar.gz
+*.rar
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+
+*~
+
+# temporary files which can be created if a process still has a handle open of a deleted file
+.fuse_hidden*
+
+# KDE directory preferences
+.directory
+
+# Linux trash folder which might appear on any partition or disk
+.Trash-*
+
+# .nfs files are created when an open file is removed but is still being accessed
+.nfs*
+
+# General
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear in the root of a volume
+.DocumentRevisions-V100
+.fseventsd
+.Spotlight-V100
+.TemporaryItems
+.Trashes
+.VolumeIcon.icns
+.com.apple.timemachine.donotpresent
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# Windows thumbnail cache files
+Thumbs.db
+Thumbs.db:encryptable
+ehthumbs.db
+ehthumbs_vista.db
+
+# Dump file
+*.stackdump
+
+# Folder config file
+[Dd]esktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msix
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+target/
+
+pom.xml.tag
+pom.xml.releaseBackup
+pom.xml.versionsBackup
+pom.xml.next
+
+release.properties
+dependency-reduced-pom.xml
+buildNumber.properties
+.mvn/timing.properties
+.mvn/wrapper/maven-wrapper.jar
+.flattened-pom.xml
+
+# Common working directory
+run/
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..e44a4e3
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,74 @@
+
+
+ 4.0.0
+
+ xyz.inlineyt
+ stamper
+ 1.0-SNAPSHOT
+ jar
+
+ Alle gegen Stamer
+
+
+ 18
+ UTF-8
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+
+ 17
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.4
+
+
+ package
+
+ shade
+
+
+ false
+
+
+
+
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ spigotmc-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
+
+ sonatype
+ https://oss.sonatype.org/content/groups/public/
+
+
+
+
+
+ org.spigotmc
+ spigot-api
+ 1.18.2-R0.1-SNAPSHOT
+ provided
+
+
+
diff --git a/src/main/java/xyz/inlineyt/stamper/Main.java b/src/main/java/xyz/inlineyt/stamper/Main.java
new file mode 100644
index 0000000..db98387
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/Main.java
@@ -0,0 +1,40 @@
+package xyz.inlineyt.stamper;
+
+import org.bukkit.Bukkit;
+
+import org.bukkit.plugin.PluginManager;
+import org.bukkit.plugin.java.JavaPlugin;
+import xyz.inlineyt.stamper.commands.*;
+import xyz.inlineyt.stamper.gameState.StateManager;
+import xyz.inlineyt.stamper.listener.*;
+
+public final class Main extends JavaPlugin {
+
+ @Override
+ public void onEnable() {
+ // Plugin startup logic
+ // StateManager.setState("Lobby");
+ PluginManager manager = Bukkit.getPluginManager();
+ manager.registerEvents(new ChatListener(), this);
+ manager.registerEvents(new JoinListener(), this);
+ manager.registerEvents(new QuitListener(), this);
+ manager.registerEvents(new EntityHitListener(), this);
+ manager.registerEvents(new DeathListener(), this);
+ manager.registerEvents(new InvClickListener(), this);
+ getCommand("StartGame").setExecutor(new StartGame());
+ getCommand("Compass").setExecutor(new Compass());
+ getCommand("Rank").setExecutor(new rank());
+ //getCommand("Compass").setExecutor(new Compass());
+ getCommand("Kits").setExecutor(new Kits());
+ getCommand("Teleport").setExecutor(new Teleport());
+ getCommand("giveKit").setExecutor(new GiveKit());
+ xyz.inlineyt.stamper.kits.Kits.getKits().add("Tank-Test");
+ xyz.inlineyt.stamper.kits.Kits.getKits().add("Test-OP");
+ xyz.inlineyt.stamper.kits.Kits.getKits().add("Test-Normal");
+ }
+
+ @Override
+ public void onDisable() {
+ // Plugin shutdown logic
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/builder/ItemBuilder.java b/src/main/java/xyz/inlineyt/stamper/builder/ItemBuilder.java
new file mode 100644
index 0000000..5290179
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/builder/ItemBuilder.java
@@ -0,0 +1,67 @@
+package xyz.inlineyt.stamper.builder;
+
+import org.bukkit.Material;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.inventory.ItemFlag;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.function.Consumer;
+
+public class ItemBuilder {
+
+
+
+
+ private Map> clickActions;
+ private ItemMeta itemMeta;
+ private ItemStack itemStack;
+ public ItemBuilder(Material mat){
+ itemStack = new ItemStack(mat);
+ itemMeta = itemStack.getItemMeta();
+ this.clickActions = new HashMap<>();
+ }
+ public ItemBuilder setDisplayname(String s){
+ itemMeta.setDisplayName(s);
+ return this;
+ }
+ public ItemBuilder setLocalizedName(String s){
+ itemMeta.setLocalizedName(s);
+ return this;
+ }
+ public ItemBuilder setLore(String... s){
+ itemMeta.setLore(Arrays.asList(s));
+ return this;
+ }
+
+ public ItemBuilder setUnbreakable(boolean s){
+ itemMeta.setUnbreakable(s);
+ return this;
+ }
+ public ItemBuilder addItemFlags(ItemFlag... s){
+ itemMeta.addItemFlags(s);
+ return this;
+ }
+
+
+ @Override
+ public String toString() {
+ return "ItemBuilder{" +
+ "itemMeta=" + itemMeta +
+ ", itemStack=" + itemStack +
+ '}';
+ }
+ public ItemStack build(){
+ itemStack.setItemMeta(itemMeta);
+ return itemStack;
+ }
+
+
+
+
+
+
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/commands/Compass.java b/src/main/java/xyz/inlineyt/stamper/commands/Compass.java
new file mode 100644
index 0000000..8a4b029
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/commands/Compass.java
@@ -0,0 +1,38 @@
+package xyz.inlineyt.stamper.commands;
+
+
+import xyz.inlineyt.stamper.builder.ItemBuilder;
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.PlayerInventory;
+import xyz.inlineyt.stamper.player.OP;
+
+public class Compass implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+
+ Player player = (Player) sender;
+
+ PlayerInventory inventory = player.getInventory();
+if (player.hasPermission("event.rank.op")) {
+ inventory.addItem(new ItemBuilder(Material.COMPASS).setDisplayname("Target: Spieler").build());
+
+ for (Player targetPlayer : Bukkit.getOnlinePlayers()) {
+
+ player.setCompassTarget(targetPlayer.getLocation());
+
+ }
+ player.setCompassTarget(OP.getOPPlayers().get(1).getLocation());
+
+ inventory.addItem(new ItemBuilder(Material.COMPASS).setDisplayname("Target: " + OP.getOPPlayers().get(1).getName()).build());
+
+}
+
+
+ return false;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/commands/GiveKit.java b/src/main/java/xyz/inlineyt/stamper/commands/GiveKit.java
new file mode 100644
index 0000000..684452e
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/commands/GiveKit.java
@@ -0,0 +1,38 @@
+package xyz.inlineyt.stamper.commands;
+
+import org.bukkit.Bukkit;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import xyz.inlineyt.stamper.kits.Kits;
+import xyz.inlineyt.stamper.kits.TestKit;
+import xyz.inlineyt.stamper.kits.TestKitOP;
+import xyz.inlineyt.stamper.kits.TestKitOPTank;
+
+public class GiveKit implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ Player player = Bukkit.getPlayer(args[0]);
+
+
+ switch (args[1]){
+
+ case "testkit":
+ TestKit.Kit(player);
+ break;
+ case "tank":
+ TestKitOPTank.kit(player);
+ break;
+ case "op":
+ TestKitOP.kit(player);
+ break;
+ }
+
+
+
+
+
+ return false;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/commands/Kits.java b/src/main/java/xyz/inlineyt/stamper/commands/Kits.java
new file mode 100644
index 0000000..fc645ea
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/commands/Kits.java
@@ -0,0 +1,37 @@
+package xyz.inlineyt.stamper.commands;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.Inventory;
+import xyz.inlineyt.stamper.builder.ItemBuilder;
+
+public class Kits implements CommandExecutor {
+ int slot ;
+
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ Player player = (Player) sender;
+ Inventory inventory = Bukkit.createInventory(null , 3*9 , "Kit Art Auswählen" );
+
+//rework KitGUI
+ xyz.inlineyt.stamper.kits.Kits.getKits().forEach( (n) -> inventory.setItem( slot++ , new ItemBuilder(Material.NETHERITE_CHESTPLATE).setDisplayname(n).setLocalizedName(n).build()) );
+
+
+ // inventory.setItem( 11, new ItemBuilder(Material.NETHERITE_CHESTPLATE).setDisplayname("OP Kits").setLocalizedName("KitKat_OP").build());
+ // inventory.setItem( 13, new ItemBuilder(Material.NETHERITE_CHESTPLATE).setDisplayname("OP Kits").setLocalizedName("KitKat_Player").build());
+
+
+ player.openInventory(inventory);
+ return false;
+ }
+
+
+
+
+
+
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/commands/StartGame.java b/src/main/java/xyz/inlineyt/stamper/commands/StartGame.java
new file mode 100644
index 0000000..c0be965
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/commands/StartGame.java
@@ -0,0 +1,19 @@
+package xyz.inlineyt.stamper.commands;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.inventory.Inventory;
+import xyz.inlineyt.stamper.gameState.StateManager;
+
+public class StartGame implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+
+
+ StateManager.setState("inGame");
+
+
+ return false;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/commands/Teleport.java b/src/main/java/xyz/inlineyt/stamper/commands/Teleport.java
new file mode 100644
index 0000000..082c91e
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/commands/Teleport.java
@@ -0,0 +1,56 @@
+package xyz.inlineyt.stamper.commands;
+
+import org.bukkit.Bukkit;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+public class Teleport implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+
+ Player playerSender = (Player) sender;
+
+ Player player = Bukkit.getPlayer(args[1]);
+ switch (args[0]){
+
+ case "here":
+ player.sendTitle("㸋" , "",7 , 10, 7);
+ player.teleport( playerSender);
+
+ break;
+
+ case "to" :
+ if (args[2] == null) {
+ player.sendTitle("㸋" , "",7 , 10, 7);
+ sender.sendMessage("bitte Spieler angeben");
+
+ }
+ player.sendTitle("㸋" , "",7 , 10, 7);
+ Player target = Bukkit.getPlayer(args[2]);
+ player.teleport(target);
+
+
+
+ break;
+
+ case "all":
+
+ for (Player allPlayers : Bukkit.getOnlinePlayers()){
+ allPlayers.sendTitle("㸋" , "",7 , 10, 7);
+ allPlayers.teleport(playerSender);
+
+ }
+
+ break;
+
+ }
+
+
+
+
+
+ return false;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/commands/rank.java b/src/main/java/xyz/inlineyt/stamper/commands/rank.java
new file mode 100644
index 0000000..ecb8f72
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/commands/rank.java
@@ -0,0 +1,74 @@
+package xyz.inlineyt.stamper.commands;
+
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+import xyz.inlineyt.stamper.player.Helpers;
+import xyz.inlineyt.stamper.player.OP;
+
+public class rank implements CommandExecutor {
+ @Override
+ public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
+ Player target = Bukkit.getPlayer(args[0]) ;
+
+ if (args[1].equalsIgnoreCase("OP")) {
+
+ if (Helpers.getHelpers().contains(target)){
+ Helpers.getHelpers().remove(target);
+ }
+
+ OP.getOPPlayers().add(target);
+
+ for (Player Onlineplayers : Bukkit.getOnlinePlayers()) {
+
+ Onlineplayers.sendTitle(target.getName() + " wurde nun zum 眨" , "" ,0 , 10 ,0 );
+
+ }
+ target.setPlayerListName( "眨 " + ChatColor.GRAY + target.getName());
+ } else if (args[1].equalsIgnoreCase("Helper")) {
+
+ if (OP.getOPPlayers().contains(target)){
+ OP.getOPPlayers().remove(target);
+ }
+
+ for (Player Onlineplayers : Bukkit.getOnlinePlayers()) {
+
+ Onlineplayers.sendTitle(target.getName() + " wurde nun zum 眩" , "" ,0 , 10 ,0 );
+ }
+
+ target.setPlayerListName( "眩 " + target.getName());
+ Helpers.getHelpers().add(target);
+
+
+
+
+
+ } else if (args[1].equalsIgnoreCase("Player")) {
+
+ if (OP.getOPPlayers().contains(target)) {
+ OP.getOPPlayers().remove(target);
+ }
+
+ for (Player Onlineplayers : Bukkit.getOnlinePlayers()) {
+
+ Onlineplayers.sendTitle(target.getName() + " wurde nun zum 眪" , "" ,0 , 10 ,0 );
+ target.setPlayerListName( "眪 "+ ChatColor.GRAY + target.getName());
+
+ }
+
+ Helpers.getHelpers().add(target);
+
+
+
+
+
+ }
+
+
+
+ return false;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/gameState/State.java b/src/main/java/xyz/inlineyt/stamper/gameState/State.java
new file mode 100644
index 0000000..0b286b3
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/gameState/State.java
@@ -0,0 +1,13 @@
+package xyz.inlineyt.stamper.gameState;
+
+public class State {
+ public static String State;
+
+ public static String getState() {
+ return State;
+ }
+
+ public static void setState(String state) {
+ State = state;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/gameState/StateManager.java b/src/main/java/xyz/inlineyt/stamper/gameState/StateManager.java
new file mode 100644
index 0000000..7540aef
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/gameState/StateManager.java
@@ -0,0 +1,80 @@
+package xyz.inlineyt.stamper.gameState;
+
+
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import xyz.inlineyt.stamper.kits.SelectedOPKit;
+import xyz.inlineyt.stamper.kits.TestKit;
+import xyz.inlineyt.stamper.kits.TestKitOP;
+import xyz.inlineyt.stamper.kits.TestKitOPTank;
+import xyz.inlineyt.stamper.player.Helpers;
+import xyz.inlineyt.stamper.player.OP;
+
+public class StateManager {
+
+ public static void setState(String GameState) {
+
+ switch (GameState){
+ case "Lobby":
+ State.setState("Lobby");
+
+ break;
+ case "inGame":
+
+
+
+ State.setState("Inagme");
+
+ for (Player players : Bukkit.getOnlinePlayers()) {
+ String kitName = SelectedOPKit.getKit();
+ if (OP.getOPPlayers().contains(players)) {
+
+ switch (kitName) {
+
+ case "TestOP":
+ TestKitOP.kit(players);
+ break;
+ case "TestTank":
+ TestKitOPTank.kit(players);
+ break;
+ }
+ if (Helpers.getHelpers().contains(players)) {
+
+ switch (kitName) {
+
+ case "TestOP":
+ TestKitOP.kit(players);
+ break;
+ case "TestTank":
+ TestKitOPTank.kit(players);
+ break;
+ }
+ }
+
+
+
+
+ } else TestKit.kit(players);
+ }
+
+
+
+
+ break;
+ case "stop":
+
+ State.setState("Stop");
+ Bukkit.getServer().shutdown();
+ break;
+
+
+
+ }
+ }
+
+
+
+
+
+
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/kits/Kit.java b/src/main/java/xyz/inlineyt/stamper/kits/Kit.java
new file mode 100644
index 0000000..6e1de7b
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/kits/Kit.java
@@ -0,0 +1,22 @@
+package xyz.inlineyt.stamper.kits;
+
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.PlayerInventory;
+
+public interface Kit {
+
+ public static PlayerInventory kit(Player player) {
+ PlayerInventory inventory = player.getInventory();
+
+
+ return inventory;
+ };
+
+ public static String Kit(){
+ String KitName = "KitName";
+ return KitName;
+ };
+
+
+
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/kits/Kits.java b/src/main/java/xyz/inlineyt/stamper/kits/Kits.java
new file mode 100644
index 0000000..223f4b8
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/kits/Kits.java
@@ -0,0 +1,13 @@
+package xyz.inlineyt.stamper.kits;
+
+import java.util.ArrayList;
+
+public class Kits {
+
+
+ public static ArrayList Kits = new ArrayList();
+
+ public static ArrayList getKits() {
+ return Kits;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/kits/SelectedKit.java b/src/main/java/xyz/inlineyt/stamper/kits/SelectedKit.java
new file mode 100644
index 0000000..e9364a1
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/kits/SelectedKit.java
@@ -0,0 +1,14 @@
+package xyz.inlineyt.stamper.kits;
+
+public class SelectedKit {
+
+ public static String Kit;
+
+ public static String getKit() {
+ return Kit;
+ }
+
+ public static void setKit(String kit) {
+ Kit = kit;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/kits/SelectedOPKit.java b/src/main/java/xyz/inlineyt/stamper/kits/SelectedOPKit.java
new file mode 100644
index 0000000..9618cf0
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/kits/SelectedOPKit.java
@@ -0,0 +1,14 @@
+package xyz.inlineyt.stamper.kits;
+
+public class SelectedOPKit {
+
+ public static String Kit;
+
+ public static String getKit() {
+ return Kit;
+ }
+
+ public static void setKit(String kit) {
+ Kit = kit;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/kits/TestKit.java b/src/main/java/xyz/inlineyt/stamper/kits/TestKit.java
new file mode 100644
index 0000000..487279d
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/kits/TestKit.java
@@ -0,0 +1,29 @@
+package xyz.inlineyt.stamper.kits;
+
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.PlayerInventory;
+import xyz.inlineyt.stamper.builder.ItemBuilder;
+
+
+public class TestKit implements Kit{
+
+
+ public static PlayerInventory kit(Player player) {
+ PlayerInventory inventory = player.getInventory();
+
+ inventory.setItem(0, new ItemBuilder(Material.DIAMOND_SWORD).setDisplayname("Dia Schwert zum Test Kit").build());
+
+
+ inventory.setItem(1, new ItemBuilder(Material.DIAMOND_AXE).setDisplayname("Dia Axt zum Test Kit").build());
+ inventory.setItem(2, new ItemBuilder(Material.DIAMOND_PICKAXE).setDisplayname("Dia PickAxt zum Test Kit").build());
+
+ return inventory;
+ }
+
+
+ public static String Kit(Player player){
+ String KitName = "Test-Kit";
+ return KitName;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/kits/TestKitOP.java b/src/main/java/xyz/inlineyt/stamper/kits/TestKitOP.java
new file mode 100644
index 0000000..081fe89
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/kits/TestKitOP.java
@@ -0,0 +1,25 @@
+package xyz.inlineyt.stamper.kits;
+
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.PlayerInventory;
+import xyz.inlineyt.stamper.builder.ItemBuilder;
+
+
+public class TestKitOP implements Kit{
+
+ public static PlayerInventory kit(Player player) {
+ PlayerInventory inventory = player.getInventory();
+
+ inventory.setItem(0, new ItemBuilder(Material.DIAMOND_SWORD).setDisplayname("Dia Schwert zum Test Kit des OP").build());
+
+
+ inventory.setItem(1, new ItemBuilder(Material.DIAMOND_AXE).setDisplayname("Dia Axt zum Test Kit des OP").build());
+ inventory.setItem(2, new ItemBuilder(Material.DIAMOND_PICKAXE).setDisplayname("Dia PickAxt zum Test Kit des OP").build());
+
+ return inventory;
+ }
+
+
+
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/kits/TestKitOPTank.java b/src/main/java/xyz/inlineyt/stamper/kits/TestKitOPTank.java
new file mode 100644
index 0000000..76dba75
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/kits/TestKitOPTank.java
@@ -0,0 +1,21 @@
+package xyz.inlineyt.stamper.kits;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.PlayerInventory;
+import xyz.inlineyt.stamper.builder.ItemBuilder;
+
+
+public class TestKitOPTank implements Kit{
+
+ public static PlayerInventory kit(Player player) {
+ PlayerInventory inventory = player.getInventory();
+
+ inventory.setItem(0, new ItemBuilder(Material.DIAMOND_SWORD).setDisplayname("Dia Schwert zum Test Kit des OP").build());
+
+
+ inventory.setItem(1, new ItemBuilder(Material.DIAMOND_AXE).setDisplayname("Dia Axt zum Test Kit des OP").build());
+ inventory.setItem(2, new ItemBuilder(Material.DIAMOND_PICKAXE).setDisplayname("Dia PickAxt zum Test Kit des OP").build());
+ inventory.setItem(3, new ItemBuilder(Material.SHIELD).setDisplayname("Tank Shield").build());
+ return inventory;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/listener/ChatListener.java b/src/main/java/xyz/inlineyt/stamper/listener/ChatListener.java
new file mode 100644
index 0000000..7fc65dd
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/listener/ChatListener.java
@@ -0,0 +1,23 @@
+package xyz.inlineyt.stamper.listener;
+
+import org.bukkit.ChatColor;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.AsyncPlayerChatEvent;
+
+public class ChatListener implements Listener {
+
+
+ @EventHandler(ignoreCancelled = true)
+ public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
+
+ if (event.getPlayer().hasPermission("event.rank.op")){
+ event.setFormat(ChatColor.RED + "OP " + event.getPlayer().getName() + " > " + event.getMessage());
+ } else event.setFormat(ChatColor.GREEN + "Spieler "+ event.getPlayer().getName( ) + " > " + event.getMessage());
+
+
+
+
+
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/listener/DeathListener.java b/src/main/java/xyz/inlineyt/stamper/listener/DeathListener.java
new file mode 100644
index 0000000..645996b
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/listener/DeathListener.java
@@ -0,0 +1,26 @@
+package xyz.inlineyt.stamper.listener;
+
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.PlayerDeathEvent;
+
+public class DeathListener implements Listener {
+
+ @EventHandler(ignoreCancelled = true)
+ public void onPlayerDeath(PlayerDeathEvent event) {
+ if (event.getEntity().getKiller() == null) {
+ event.getEntity().kickPlayer("du bist Gestorben");
+
+ event.setDeathMessage(event.getEntity().getName() + "ist Gestorben." );
+ } else {
+
+ event.setDeathMessage(event.getEntity().getName() + "wurde von " + event.getEntity().getKiller().getName() + "getötet");
+ event.getEntity().kickPlayer("du bist Gestorben");
+
+
+
+ event.getEntity().getKiller().sendMessage("Du hast " + event.getEntity().getName() + " getötet");
+ }
+ }
+ }
+
diff --git a/src/main/java/xyz/inlineyt/stamper/listener/EntityHitListener.java b/src/main/java/xyz/inlineyt/stamper/listener/EntityHitListener.java
new file mode 100644
index 0000000..800f8ac
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/listener/EntityHitListener.java
@@ -0,0 +1,33 @@
+package xyz.inlineyt.stamper.listener;
+
+import org.bukkit.entity.Player;
+import org.bukkit.event.Listener;
+import org.bukkit.event.entity.EntityDamageByEntityEvent;
+import xyz.inlineyt.stamper.gameState.State;
+import xyz.inlineyt.stamper.player.OP;
+import xyz.inlineyt.stamper.player.Players;
+
+public class EntityHitListener implements Listener {
+
+
+ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
+
+ if (event.getDamager() instanceof Player) {
+ if(OP.getOPPlayers().contains(((Player) event.getDamager()).getPlayer())) {return;}
+ if (State.getState() == "Ingame") {
+ if (Players.getPlayers().contains(event.getEntity())){
+ if (Players.getPlayers().contains(event.getEntity())){
+ event.setCancelled(true);
+ } else if (OP.getOPPlayers().contains(((Player) event.getDamager()).getPlayer())){
+ return;
+ }
+ } else return;
+ }
+ else event.setCancelled(true);
+
+ }
+
+
+
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/listener/InvClickListener.java b/src/main/java/xyz/inlineyt/stamper/listener/InvClickListener.java
new file mode 100644
index 0000000..0ac1d02
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/listener/InvClickListener.java
@@ -0,0 +1,76 @@
+package xyz.inlineyt.stamper.listener;
+
+import org.bukkit.Bukkit;
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.inventory.InventoryClickEvent;
+import org.bukkit.inventory.Inventory;
+import xyz.inlineyt.stamper.builder.ItemBuilder;
+import xyz.inlineyt.stamper.kits.SelectedOPKit;
+
+public class InvClickListener implements Listener {
+
+ @EventHandler(ignoreCancelled = true)
+ public void onInventoryClick(InventoryClickEvent event) {
+
+ if (event.getView().getTitle() == "Kit Art Auswählen") {
+ if (event.getCurrentItem().getItemMeta().hasLocalizedName()) {
+ Player player = (Player) event.getWhoClicked();
+ event.setCancelled(true);
+
+
+ switch (event.getCurrentItem().getItemMeta().getLocalizedName()) {
+ case "KitKat_OP":
+ Inventory inventoryOP = Bukkit.createInventory(null, 5 * 9, "Kit Auswählen");
+
+ inventoryOP.setItem(11, new ItemBuilder(Material.NETHERITE_CHESTPLATE).setDisplayname("Test Kit OP").setLocalizedName("Kit_OP_Test").build());
+
+ inventoryOP.setItem(13, new ItemBuilder(Material.NETHERITE_CHESTPLATE).setDisplayname("Tank Kit OP").setLocalizedName("Kit_OP_Test_Tank").build());
+
+ player.openInventory(inventoryOP);
+
+ break;
+
+ case "KitKat_Player":
+ Inventory inventoryPlayer = Bukkit.createInventory(null, 5 * 9, "Kit Auswählen für Spieler");
+
+ inventoryPlayer.setItem(11, new ItemBuilder(Material.NETHERITE_CHESTPLATE).setDisplayname("Test Kit OP").setLocalizedName("Kit_Test").build());
+
+
+ player.openInventory(inventoryPlayer);
+ break;
+
+
+ }
+
+
+ }
+ } else if (event.getView().getTitle() == "Kit Auswählen") {
+ if (event.getCurrentItem().getItemMeta().hasLocalizedName()) {
+ Player player = (Player) event.getWhoClicked();
+ event.setCancelled(true);
+ switch (event.getCurrentItem().getItemMeta().getLocalizedName()) {
+ case "Kit_OP_Test":
+
+ SelectedOPKit.setKit("TestOP");
+
+
+ break;
+ case "Kit_OP_Test_Tank":
+
+ SelectedOPKit.setKit("TestTank");
+
+
+ break;
+ }
+ }
+
+
+ }
+
+
+ }
+}
+
diff --git a/src/main/java/xyz/inlineyt/stamper/listener/JoinListener.java b/src/main/java/xyz/inlineyt/stamper/listener/JoinListener.java
new file mode 100644
index 0000000..de8f72c
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/listener/JoinListener.java
@@ -0,0 +1,33 @@
+package xyz.inlineyt.stamper.listener;
+
+import org.bukkit.ChatColor;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+import xyz.inlineyt.stamper.player.OP;
+import xyz.inlineyt.stamper.player.Players;
+import xyz.inlineyt.stamper.tablist.Tablist;
+
+public class JoinListener implements Listener {
+
+ public void onPlayerJoin(PlayerJoinEvent event) {
+
+ if (event.getPlayer().hasPermission("event.rank.op")){
+
+ Tablist.updatePlayerDisplay( event.getPlayer() ,"眨 " + ChatColor.GRAY + event.getPlayer().getName() );
+ event.setJoinMessage("眨 " + ChatColor.GRAY + event.getPlayer().getName() + " hat den Server betreten");
+
+
+ OP.getOPPlayers().add(event.getPlayer());
+
+
+
+ }else {
+
+ event.setJoinMessage("眪 " + ChatColor.GRAY + event.getPlayer().getName() + " hat den Server betreten");
+ Tablist.updatePlayerDisplay(event.getPlayer(), "眪 " + ChatColor.GRAY + event.getPlayer().getName());
+ Players.getPlayers().add(event.getPlayer());
+ }
+
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/listener/QuitListener.java b/src/main/java/xyz/inlineyt/stamper/listener/QuitListener.java
new file mode 100644
index 0000000..95a2e0f
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/listener/QuitListener.java
@@ -0,0 +1,20 @@
+package xyz.inlineyt.stamper.listener;
+
+import org.bukkit.ChatColor;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerQuitEvent;
+
+public class QuitListener implements Listener {
+
+
+ @EventHandler(ignoreCancelled = true)
+ public void onPlayerQuit(PlayerQuitEvent event) {
+
+
+ if (event.getPlayer().hasPermission("event.rank.op")){
+ event.setQuitMessage(ChatColor.RED + "OP " + ChatColor.DARK_GRAY + "| " + ChatColor.GRAY + event.getPlayer().getName() + " hat den Server verlassen");
+
+ } else event.setQuitMessage(ChatColor.GREEN + "Spieler " + ChatColor.DARK_GRAY + "| " + ChatColor.GRAY + event.getPlayer().getName() + " hat den Server verlassen");
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/player/Helpers.java b/src/main/java/xyz/inlineyt/stamper/player/Helpers.java
new file mode 100644
index 0000000..d68889e
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/player/Helpers.java
@@ -0,0 +1,16 @@
+package xyz.inlineyt.stamper.player;
+
+import org.bukkit.entity.Player;
+
+import java.util.ArrayList;
+
+public class Helpers {
+
+ public static ArrayList Helpers = new ArrayList() ;
+
+ public static ArrayList getHelpers() {
+ return Helpers;
+ }
+
+
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/player/OP.java b/src/main/java/xyz/inlineyt/stamper/player/OP.java
new file mode 100644
index 0000000..0039da5
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/player/OP.java
@@ -0,0 +1,16 @@
+package xyz.inlineyt.stamper.player;
+
+import org.bukkit.entity.Player;
+
+import java.util.ArrayList;
+
+public class OP {
+
+
+ public static ArrayList OPPlayers = new ArrayList();
+
+
+ public static ArrayList getOPPlayers() {
+ return OPPlayers;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/player/Players.java b/src/main/java/xyz/inlineyt/stamper/player/Players.java
new file mode 100644
index 0000000..ce1b504
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/player/Players.java
@@ -0,0 +1,14 @@
+package xyz.inlineyt.stamper.player;
+
+import org.bukkit.entity.Player;
+
+import java.util.ArrayList;
+
+public class Players {
+
+public static ArrayList Players = new ArrayList();
+
+ public static ArrayList getPlayers() {
+ return Players;
+ }
+}
diff --git a/src/main/java/xyz/inlineyt/stamper/tablist/Tablist.java b/src/main/java/xyz/inlineyt/stamper/tablist/Tablist.java
new file mode 100644
index 0000000..cb26702
--- /dev/null
+++ b/src/main/java/xyz/inlineyt/stamper/tablist/Tablist.java
@@ -0,0 +1,29 @@
+package xyz.inlineyt.stamper.tablist;
+
+import org.bukkit.entity.Player;
+
+public class Tablist {
+
+ public static void updatePlayerDisplay(Player player , String Display) {
+
+
+ player.setPlayerListName(Display);
+ player.setDisplayName(Display);
+
+
+
+ }
+ public static void updatePlayerTabHeaderFooter(Player player ,String DisplayHeader , String DisplayFooter) {
+
+
+ player.setPlayerListHeaderFooter(DisplayHeader , DisplayFooter);
+
+
+
+ }
+
+
+
+
+
+}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
new file mode 100644
index 0000000..2ec8819
--- /dev/null
+++ b/src/main/resources/plugin.yml
@@ -0,0 +1,17 @@
+name: Alle-gegen-Stamer
+version: '${project.version}'
+main: xyz.inlineyt.stamper.Main
+api-version: 1.18
+commands:
+ StartGame:
+ permission: event.rank.op
+ Compass:
+ permission: event.compass
+ Kits:
+ permission: event.kit
+ Rank:
+ permission: event.rank
+ GiveKit:
+ permission: event.kit
+ Teleport:
+ permission: event.kit
\ No newline at end of file