From 9c09db7025986fb85bc63b6095bde53c661edf84 Mon Sep 17 00:00:00 2001
From: LAB4CODE <>
Date: Fri, 22 Aug 2025 08:44:53 +0000
Subject: [PATCH] Initial commit
---
.gitignore | 3 +
pom.xml | 90 +++++++
.../net/lab4code/main/Command_Executer.java | 25 ++
src/main/java/net/lab4code/main/Config.java | 32 +++
src/main/java/net/lab4code/main/Database.java | 244 ++++++++++++++++++
.../java/net/lab4code/main/Event_Handler.java | 13 +
src/main/java/net/lab4code/main/Greeting.java | 23 ++
src/main/java/net/lab4code/main/Main.java | 35 +++
src/main/java/net/lab4code/main/Messages.java | 42 +++
src/main/java/net/lab4code/main/PAPI.java | 38 +++
src/main/java/net/lab4code/main/Util.java | 87 +++++++
src/main/java/net/lab4code/objects/Query.java | 25 ++
src/main/resources/config.yml | 8 +
src/main/resources/messages.yml | 1 +
src/main/resources/plugin.yml | 8 +
15 files changed, 674 insertions(+)
create mode 100644 .gitignore
create mode 100644 pom.xml
create mode 100644 src/main/java/net/lab4code/main/Command_Executer.java
create mode 100644 src/main/java/net/lab4code/main/Config.java
create mode 100644 src/main/java/net/lab4code/main/Database.java
create mode 100644 src/main/java/net/lab4code/main/Event_Handler.java
create mode 100644 src/main/java/net/lab4code/main/Greeting.java
create mode 100644 src/main/java/net/lab4code/main/Main.java
create mode 100644 src/main/java/net/lab4code/main/Messages.java
create mode 100644 src/main/java/net/lab4code/main/PAPI.java
create mode 100644 src/main/java/net/lab4code/main/Util.java
create mode 100644 src/main/java/net/lab4code/objects/Query.java
create mode 100644 src/main/resources/config.yml
create mode 100644 src/main/resources/messages.yml
create mode 100644 src/main/resources/plugin.yml
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..aa03912
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+.idea
+out
+target
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..09d8d50
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,90 @@
+
+
+ 4.0.0
+
+ net.lab4code
+ MC-WirelessHopper
+ 1.0-SNAPSHOT
+ jar
+
+ MC-WirelessHopper
+
+
+ 21
+ UTF-8
+
+
+
+ clean package
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.13.0
+
+ java.version
+ java.version
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.5.3
+
+
+ package
+
+ shade
+
+
+
+
+
+
+
+ src/main/resources
+ true
+
+
+
+
+
+
+ papermc-repo
+ https://repo.papermc.io/repository/maven-public/
+
+
+ sonatype
+ https://oss.sonatype.org/content/groups/public/
+
+
+
+
+
+ io.papermc.paper
+ paper-api
+ 1.21.3-R0.1-SNAPSHOT
+ provided
+
+
+ org.projectlombok
+ lombok
+ 1.18.22
+ provided
+
+
+ me.clip
+ placeholderapi
+ 2.10.10
+ provided
+
+
+ com.zaxxer
+ HikariCP
+ 4.0.3
+ compile
+
+
+
diff --git a/src/main/java/net/lab4code/main/Command_Executer.java b/src/main/java/net/lab4code/main/Command_Executer.java
new file mode 100644
index 0000000..2544a29
--- /dev/null
+++ b/src/main/java/net/lab4code/main/Command_Executer.java
@@ -0,0 +1,25 @@
+package net.lab4code.main;
+
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandExecutor;
+import org.bukkit.command.CommandSender;
+import org.bukkit.command.TabCompleter;
+import org.jetbrains.annotations.NotNull;
+import java.util.ArrayList;
+import java.util.List;
+
+public class Command_Executer implements CommandExecutor, TabCompleter {
+
+ @Override
+ public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String[] args) {
+
+ return false;
+ }
+
+ @Override
+ public List onTabComplete(CommandSender commandSender, Command command, String s, String[] args) {
+ List result = new ArrayList<>();
+
+ return result;
+ }
+}
diff --git a/src/main/java/net/lab4code/main/Config.java b/src/main/java/net/lab4code/main/Config.java
new file mode 100644
index 0000000..dce025b
--- /dev/null
+++ b/src/main/java/net/lab4code/main/Config.java
@@ -0,0 +1,32 @@
+package net.lab4code.main;
+
+import org.bukkit.configuration.file.YamlConfiguration;
+
+import java.io.File;
+
+public class Config {
+ private static final File config = new File(Main.instance.getDataFolder().getPath(), "config.yml");
+ private static YamlConfiguration yamlConfiguration;
+
+ public static void create() {
+ if (!config.exists()) {
+ Main.instance.saveResource("config.yml", false);
+ }
+ yamlConfiguration = YamlConfiguration.loadConfiguration(config);
+ loadConfig();
+
+ }
+
+ public static void loadStorage() {
+ Database.setIp(yamlConfiguration.getString("Datastore.Ip"));
+ Database.setPort(yamlConfiguration.getInt("Datastore.Port"));
+ Database.setUser(yamlConfiguration.getString("Datastore.User"));
+ Database.setPassword(yamlConfiguration.getString("Datastore.Password"));
+ Database.setDatabase(yamlConfiguration.getString("Datastore.Database"));
+ }
+
+ private static void loadConfig() {
+// shopConfirmation = yamlConfiguration.getBoolean("Shop.Confirmbuy");
+ }
+
+}
diff --git a/src/main/java/net/lab4code/main/Database.java b/src/main/java/net/lab4code/main/Database.java
new file mode 100644
index 0000000..0d24c9c
--- /dev/null
+++ b/src/main/java/net/lab4code/main/Database.java
@@ -0,0 +1,244 @@
+package net.lab4code.main;
+
+import com.zaxxer.hikari.HikariConfig;
+import com.zaxxer.hikari.HikariDataSource;
+import lombok.Setter;
+import org.bukkit.Bukkit;
+import java.sql.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import net.lab4code.objects.Query;
+
+public class Database {
+ private static String url;
+ private static HikariConfig config = new HikariConfig();
+ private static HikariDataSource ds;
+ @Setter
+ private static String ip;
+ @Setter
+ private static Integer port;
+ @Setter
+ private static String database;
+ @Setter
+ private static String user;
+ @Setter
+ private static String password;
+
+
+ protected static void main() {
+ url = "jdbc:mysql://" + ip + ":" + port + "/" + database + "?useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin";
+ config.setJdbcUrl(url);
+ config.setUsername(user);
+ config.setPassword(password);
+ config.addDataSourceProperty( "cachePrepStmts" , "true" );
+ config.addDataSourceProperty( "prepStmtCacheSize" , "250" );
+ config.addDataSourceProperty( "prepStmtCacheSqlLimit" , "2048" );
+ ds = new HikariDataSource( config );
+ try (Connection con = ds.getConnection()) {
+ Statement stmt = con.createStatement();
+ stmt.addBatch("CREATE TABLE IF NOT EXISTS `test` (" +
+ "`UUID` VARCHAR(50) NOT NULL," +
+ "`Name` VARCHAR(50) NOT NULL," +
+ "PRIMARY KEY (`UUID`) USING BTREE" +
+ ")");
+ stmt.executeBatch();
+ stmt.close();
+ Bukkit.getConsoleSender().sendMessage(Messages.getMessage("Prefix", null) + " §2MySQL verbunden!");
+ } catch (SQLException exc) {
+ Bukkit.getConsoleSender().sendMessage(exc.getMessage());
+ Bukkit.getConsoleSender().sendMessage(Messages.getMessage("Prefix", null) + " §cMySQL nicht verbunden!");
+ }
+ }
+
+ public static void query(String query, String... args) {
+ try (Connection con = ds.getConnection()) {
+ PreparedStatement stmt = con.prepareStatement(query);
+ for(int i = 0; i < args.length; i++){
+ stmt.setObject(i+1, args[i]);
+ }
+ stmt.execute();
+ stmt.close();
+ } catch (SQLException ex) {
+ System.err.println(ex.getMessage());
+ }
+ }
+
+ public static void query(String query, List args) {
+ try (Connection con = ds.getConnection()) {
+ PreparedStatement stmt = con.prepareStatement(query);
+ for(int i = 0; i < args.size(); i++){
+ stmt.setObject(i+1, args.get(i));
+ }
+ stmt.execute();
+ stmt.close();
+ } catch (SQLException ex) {
+ System.err.println(ex.getMessage());
+ }
+ }
+
+ public static List> selectAll(String query, String... args) {
+ //long long_ = System.currentTimeMillis();
+ List> Result = new ArrayList<>();
+ try (Connection con = ds.getConnection()) {
+ PreparedStatement stmt = con.prepareStatement(query);
+ for(int i = 0; i < args.length; i++){
+ stmt.setObject(i+1, args[i]);
+ }
+ ResultSet rs = stmt.executeQuery();
+ int columns = rs.getMetaData().getColumnCount();
+ while (rs.next()) {
+ List columnList = new ArrayList<>();
+ for (int i = 1; i <= columns; i++) {
+ columnList.add(rs.getString(i));
+ }
+ Result.add(columnList);
+ }
+ rs.close();
+ stmt.close();
+ } catch (SQLException ex) {
+ System.err.println(ex.getMessage());
+ }
+ return Result;
+ }
+
+ public static List> selectAll(String query, List args) {
+ //long long_ = System.currentTimeMillis();
+ List> Result = new ArrayList<>();
+ try (Connection con = ds.getConnection()) {
+ PreparedStatement stmt = con.prepareStatement(query);
+ for(int i = 0; i < args.size(); i++){
+ stmt.setObject(i+1, args.get(i));
+ }
+ ResultSet rs = stmt.executeQuery();
+ int columns = rs.getMetaData().getColumnCount();
+ while (rs.next()) {
+ List columnList = new ArrayList<>();
+ for (int i = 1; i <= columns; i++) {
+ columnList.add(rs.getString(i));
+ }
+ Result.add(columnList);
+ }
+ rs.close();
+ stmt.close();
+ } catch (SQLException ex) {
+ System.err.println(ex.getMessage());
+ }
+ return Result;
+ }
+
+ public static List selectRow(String query, String... args) {
+ //long long_ = System.currentTimeMillis();
+ List Result = new ArrayList<>();
+ try (Connection con = ds.getConnection()) {
+ PreparedStatement stmt = con.prepareStatement(query);
+ for(int i = 0; i < args.length; i++){
+ stmt.setObject(i+1, args[i]);
+ }
+ ResultSet rs = stmt.executeQuery();
+ int columns = rs.getMetaData().getColumnCount();
+ while (rs.next()) {
+ for (int i = 1; i <= columns; i++) {
+ Result.add(rs.getString(i));
+ }
+ }
+ rs.close();
+ stmt.close();
+ } catch (SQLException ex) {
+ System.err.println(ex.getMessage());
+ }
+ return Result;
+ }
+
+ public static HashMap selectRowIncludeColumnName(String query, String... args) {
+ //long long_ = System.currentTimeMillis();
+ HashMap Result = new HashMap<>();
+ try (Connection con = ds.getConnection()) {
+ PreparedStatement stmt = con.prepareStatement(query);
+ for(int i = 0; i < args.length; i++){
+ stmt.setObject(i+1, args[i]);
+ }
+ ResultSet rs = stmt.executeQuery();
+ int columns = rs.getMetaData().getColumnCount();
+ while (rs.next()) {
+ for (int i = 1; i <= columns; i++) {
+ Result.put(rs.getMetaData().getColumnName(i), rs.getString(i));
+ }
+ }
+ rs.close();
+ stmt.close();
+ } catch (SQLException ex) {
+ System.err.println(ex.getMessage());
+ }
+ return Result;
+ }
+
+ public static List selectColum(String query, String... args) {
+ //long long_ = System.currentTimeMillis();
+ List Result = new ArrayList<>();
+ try (Connection con = ds.getConnection()) {
+ PreparedStatement stmt = con.prepareStatement(query);
+ for(int i = 0; i < args.length; i++){
+ stmt.setObject(i+1, args[i]);
+ }
+ ResultSet rs = stmt.executeQuery();
+ int columns = rs.getMetaData().getColumnCount();
+ if(columns > 0) {
+ while (rs.next()) {
+ Result.add(rs.getString(1));
+ }
+ }
+ rs.close();
+ stmt.close();
+ } catch (SQLException ex) {
+ System.err.println(ex.getMessage());
+ }
+ return Result;
+ }
+
+ protected static String select(String query, String... args) {
+ String Ausgabe = "";
+ try (Connection con = ds.getConnection()) {
+ PreparedStatement stmt = con.prepareStatement(query);
+ for(int i = 0; i < args.length; i++){
+ stmt.setObject(i+1, args[i]);
+ }
+ ResultSet rs = stmt.executeQuery();
+ while (rs.next()) {
+ Ausgabe = String.valueOf(rs.getString(1));
+ }
+ rs.close();
+ stmt.close();
+ } catch (SQLException ex) {
+ System.err.println(ex.getMessage());
+ }
+ return Ausgabe;
+ }
+
+ public static void query(List queryList) {
+ try (Connection con = ds.getConnection()) {
+ for (Query query : queryList) {
+ PreparedStatement stmt = con.prepareStatement(query.getQuery());
+ for(int i = 0; i < query.getParameters().size(); i++){
+ stmt.setObject(i+1, query.getParameters().get(i));
+ }
+ stmt.execute();
+ stmt.close();
+ }
+ } catch (SQLException e) {
+ StringBuilder st = new StringBuilder();
+ for(Query query : queryList){
+ st.append(query.getQuery());
+ }
+ System.err.println(e.getMessage());
+ }
+ }
+
+ public static void close() {
+ if(ds != null){
+ ds.close();
+ Bukkit.getConsoleSender().sendMessage(Messages.getMessage("Prefix", null) + " §2MySQL getrennt!");
+ }
+ }
+}
+
diff --git a/src/main/java/net/lab4code/main/Event_Handler.java b/src/main/java/net/lab4code/main/Event_Handler.java
new file mode 100644
index 0000000..c4eb5bd
--- /dev/null
+++ b/src/main/java/net/lab4code/main/Event_Handler.java
@@ -0,0 +1,13 @@
+package net.lab4code.main;
+
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+
+public class Event_Handler implements Listener {
+
+ @EventHandler
+ public void onJoin(PlayerJoinEvent e){
+
+ }
+}
diff --git a/src/main/java/net/lab4code/main/Greeting.java b/src/main/java/net/lab4code/main/Greeting.java
new file mode 100644
index 0000000..d8d1715
--- /dev/null
+++ b/src/main/java/net/lab4code/main/Greeting.java
@@ -0,0 +1,23 @@
+package net.lab4code.main;
+
+import org.bukkit.Bukkit;
+
+public class Greeting {
+
+ protected static void sendGreeting(){
+ Bukkit.getConsoleSender().sendMessage("§3------------------------------------------------------------------");
+ Bukkit.getConsoleSender().sendMessage("§3 ");
+// Bukkit.getConsoleSender().sendMessage("§3 _ ___ _____ ______ _ ");
+// Bukkit.getConsoleSender().sendMessage("§3 | | / / __ \\ | ___ \\ | | ");
+// Bukkit.getConsoleSender().sendMessage("§3 | | / /| | / \\/ ______ | |_/ /__ _ __| | _____ ");
+// Bukkit.getConsoleSender().sendMessage("§3 | | / /_| | | |______| | __/ _ \\ '__| |/ / __|");
+// Bukkit.getConsoleSender().sendMessage("§3 | |___\\___ | \\__/\\ | | | __/ | | <\\__ \\");
+// Bukkit.getConsoleSender().sendMessage("§3 \\_____/ |_/\\____/ \\_| \\___|_| |_|\\_\\___/");
+ Bukkit.getConsoleSender().sendMessage("§3 ");
+ Bukkit.getConsoleSender().sendMessage("§3 Coded by Lab4Code");
+ Bukkit.getConsoleSender().sendMessage("§3 Version: §6" + Main.instance.getDescription().getVersion());
+ Bukkit.getConsoleSender().sendMessage("§3 ");
+ Bukkit.getConsoleSender().sendMessage("§3------------------------------------------------------------------");
+ }
+
+}
diff --git a/src/main/java/net/lab4code/main/Main.java b/src/main/java/net/lab4code/main/Main.java
new file mode 100644
index 0000000..d11fc63
--- /dev/null
+++ b/src/main/java/net/lab4code/main/Main.java
@@ -0,0 +1,35 @@
+package net.lab4code.main;
+
+import lombok.Getter;
+import org.bukkit.Bukkit;
+import org.bukkit.plugin.java.JavaPlugin;
+
+public final class Main extends JavaPlugin {
+
+ public static Main instance;
+ @Getter
+ private static Boolean placehodlerapi = false;
+
+ @Override
+ public void onEnable() {
+ instance = this;
+ Greeting.sendGreeting();
+ Messages.initMessages();
+ Config.create();
+ Config.loadStorage();
+ getServer().getPluginManager().registerEvents(new Event_Handler(),this);
+ getCommand("${REPO_NAME}").setExecutor(new Command_Executer());
+ if (getServer().getPluginManager().isPluginEnabled("PlaceholderAPI")) {
+ new PAPI().register();
+ placehodlerapi = true;
+ Bukkit.getConsoleSender().sendMessage(Messages.getMessage("Prefix", null) + " §2PlaceholderAPI wurde geladen!");
+ } else {
+ Bukkit.getConsoleSender().sendMessage(Messages.getMessage("Prefix", null) + " §6PlaceholderAPI konnte nicht geladen werden!");
+ }
+ }
+
+ @Override
+ public void onDisable() {
+
+ }
+}
diff --git a/src/main/java/net/lab4code/main/Messages.java b/src/main/java/net/lab4code/main/Messages.java
new file mode 100644
index 0000000..de3d18e
--- /dev/null
+++ b/src/main/java/net/lab4code/main/Messages.java
@@ -0,0 +1,42 @@
+package net.lab4code.main;
+
+import org.bukkit.configuration.file.YamlConfiguration;
+import org.bukkit.entity.Player;
+
+import java.io.File;
+
+public class Messages {
+ private static File message = new File(Main.instance.getDataFolder().getPath(), "messages.yml");
+ private static YamlConfiguration yamlConfiguration;
+
+ protected static String getPrefix() {
+ return Prefix;
+ }
+
+ private static String Prefix;
+ public static void initMessages(){
+ if(!message.exists()){
+ Main.instance.saveResource("messages.yml", false);
+ }
+ yamlConfiguration = YamlConfiguration.loadConfiguration(message);
+ Prefix = yamlConfiguration.getString("Prefix").replace("&","§");
+ }
+
+ public static String getMessage(String path, Player player){
+ String result = yamlConfiguration.getString(path);
+ if(result == null){
+ return path;
+ }else {
+ return Util.replace(result, player);
+ }
+ }
+
+ public static String getMessageRaw(String path) {
+ String result = yamlConfiguration.getString(path);
+ if(result == null){
+ return path;
+ }else {
+ return result;
+ }
+ }
+}
diff --git a/src/main/java/net/lab4code/main/PAPI.java b/src/main/java/net/lab4code/main/PAPI.java
new file mode 100644
index 0000000..a1e87e4
--- /dev/null
+++ b/src/main/java/net/lab4code/main/PAPI.java
@@ -0,0 +1,38 @@
+package net.lab4code.main;
+
+import me.clip.placeholderapi.expansion.PlaceholderExpansion;
+import org.bukkit.entity.Player;
+
+public class PAPI extends PlaceholderExpansion {
+
+ @Override
+ public String getIdentifier() {
+ return "MC-WirelessHopper";
+ }
+
+ @Override
+ public String getAuthor() {
+ return "lab4Code";
+ }
+
+ @Override
+ public String getVersion() {
+ return Main.instance.getDescription().getVersion();
+ }
+
+ @Override
+ public boolean canRegister() {
+ return true;
+ }
+
+ @Override
+ public boolean persist() {
+ return true;
+ }
+
+ @Override
+ public String onPlaceholderRequest(Player p, String params) {
+
+ return null;
+ }
+}
diff --git a/src/main/java/net/lab4code/main/Util.java b/src/main/java/net/lab4code/main/Util.java
new file mode 100644
index 0000000..a351ed0
--- /dev/null
+++ b/src/main/java/net/lab4code/main/Util.java
@@ -0,0 +1,87 @@
+package net.lab4code.main;
+
+import me.clip.placeholderapi.PlaceholderAPI;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Util {
+
+
+ public static String getUID() {
+ return "%%__USER__%%";
+ }
+
+ public static String getRID() {
+ return "%%__RESOURCE__%%";
+ }
+
+ public static String getDID() {
+ return "%%__NONCE__%%";
+ }
+
+ public static String replace(String string, Player player){
+ if(string == null){
+ return "";
+ }
+ String result = string
+ .replace("&", "§")
+ .replace("%newline%", "\n")
+ .replace("%prefix%", Messages.getPrefix());
+
+ if (Main.getPlacehodlerapi()) {
+ return PlaceholderAPI.setPlaceholders(player, result);
+ }else {
+ return result;
+ }
+ }
+
+
+ public static String replace(String string, String price, Player player) {
+ return replace(string.replace("%price%", price), player);
+ }
+
+ public static Player isPlayer(CommandSender sender){
+ if(sender instanceof Player player){
+ return player;
+ }
+ return null;
+ }
+
+ public static List replace(List string, String price, Player player) {
+ List result = new ArrayList<>();
+ for (String s : string) {
+ result.add(replace(s, price, player));
+ }
+ return result;
+ }
+
+ public static List replace(List string, Player player) {
+ return replace(string,"0", player);
+ }
+
+ public static void sendMessage(Player player, String message){
+ if(message.isEmpty()){
+ return;
+ }
+// if(Config.getMiniMessageSupport()) {
+// MiniMessageUtils.sendPlayerMiniMessage(message, player);
+// }else {
+ player.sendMessage(message);
+// }
+ }
+
+ public static void sendMessage(CommandSender player, String message){
+ if(message.isEmpty()){
+ return;
+ }
+// if(Config.getMiniMessageSupport()) {
+// MiniMessageUtils.sendSenderMiniMessage(message, player);
+// }else {
+ player.sendMessage(message);
+// }
+ }
+
+}
diff --git a/src/main/java/net/lab4code/objects/Query.java b/src/main/java/net/lab4code/objects/Query.java
new file mode 100644
index 0000000..edb77f3
--- /dev/null
+++ b/src/main/java/net/lab4code/objects/Query.java
@@ -0,0 +1,25 @@
+package net.lab4code.objects;
+
+import lombok.Getter;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+@Getter
+public class Query {
+ final private String query;
+ final private List parameters = new ArrayList<>();
+
+ public Query(String query) {
+ this.query = query;
+ }
+ public Query(String query, String... params) {
+ this.query = query;
+ parameters.addAll(Arrays.stream(params).toList());
+ }
+
+ public void addParam(String param){
+ parameters.add(param);
+ }
+}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
new file mode 100644
index 0000000..a696b8c
--- /dev/null
+++ b/src/main/resources/config.yml
@@ -0,0 +1,8 @@
+# Datastore Types: YML or MySQL
+Datastore:
+ Type: 'YML'
+ Ip: 'localhost'
+ Port: 3306
+ Database: 'MC-WirelessHopper'
+ User: 'root'
+ Password: 'Secret'
\ No newline at end of file
diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml
new file mode 100644
index 0000000..c554b62
--- /dev/null
+++ b/src/main/resources/messages.yml
@@ -0,0 +1 @@
+Prefix: '&8[&4MC-WirelessHopper&8]'
\ No newline at end of file
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
new file mode 100644
index 0000000..e1e3ca1
--- /dev/null
+++ b/src/main/resources/plugin.yml
@@ -0,0 +1,8 @@
+name: MC-WirelessHopper
+version: '1.0-SNAPSHOT'
+main: net.lab4code.main.Main
+api-version: '1.21'
+authors: [ Lab4Code ]
+website: https://lab4code.dev
+commands:
+ MC-WirelessHopper:
\ No newline at end of file