Initial commit

This commit is contained in:
LAB4CODE
2025-08-22 08:44:53 +00:00
commit 9c09db7025
15 changed files with 674 additions and 0 deletions

3
.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
.idea
out
target

90
pom.xml Normal file
View File

@@ -0,0 +1,90 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>net.lab4code</groupId>
<artifactId>MC-WirelessHopper</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>MC-WirelessHopper</name>
<properties>
<java.version>21</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<defaultGoal>clean package</defaultGoal>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>java.version</source>
<target>java.version</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.5.3</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<repositories>
<repository>
<id>papermc-repo</id>
<url>https://repo.papermc.io/repository/maven-public/</url>
</repository>
<repository>
<id>sonatype</id>
<url>https://oss.sonatype.org/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>io.papermc.paper</groupId>
<artifactId>paper-api</artifactId>
<version>1.21.3-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.10.10</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>4.0.3</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

View File

@@ -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<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] args) {
List<String> result = new ArrayList<>();
return result;
}
}

View File

@@ -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");
}
}

View File

@@ -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<String> 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<List<String>> selectAll(String query, String... args) {
//long long_ = System.currentTimeMillis();
List<List<String>> 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<String> 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<List<String>> selectAll(String query, List<String> args) {
//long long_ = System.currentTimeMillis();
List<List<String>> 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<String> 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<String> selectRow(String query, String... args) {
//long long_ = System.currentTimeMillis();
List<String> 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<String, String> selectRowIncludeColumnName(String query, String... args) {
//long long_ = System.currentTimeMillis();
HashMap<String,String> 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<String> selectColum(String query, String... args) {
//long long_ = System.currentTimeMillis();
List<String> 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<Query> 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!");
}
}
}

View File

@@ -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){
}
}

View File

@@ -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------------------------------------------------------------------");
}
}

View File

@@ -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() {
}
}

View File

@@ -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;
}
}
}

View File

@@ -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;
}
}

View File

@@ -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<String> replace(List<String> string, String price, Player player) {
List<String> result = new ArrayList<>();
for (String s : string) {
result.add(replace(s, price, player));
}
return result;
}
public static List<String> replace(List<String> 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);
// }
}
}

View File

@@ -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<String> 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);
}
}

View File

@@ -0,0 +1,8 @@
# Datastore Types: YML or MySQL
Datastore:
Type: 'YML'
Ip: 'localhost'
Port: 3306
Database: 'MC-WirelessHopper'
User: 'root'
Password: 'Secret'

View File

@@ -0,0 +1 @@
Prefix: '&8[&4MC-WirelessHopper&8]'

View File

@@ -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: