initial commit

This commit is contained in:
Laura
2026-01-18 15:01:25 +01:00
commit 3ec59b4074
38 changed files with 1021 additions and 0 deletions
@@ -0,0 +1,12 @@
package de.softwarerat.bansystem.Api;
public class MiliCalc {
public Long addDays(Long ms,int days){
int dayMS = days*86400000;
return dayMS+ms;
};
}
@@ -0,0 +1,55 @@
package de.softwarerat.bansystem;
import de.softwarerat.bansystem.Api.MiliCalc;
import de.softwarerat.bansystem.Command.*;
import de.softwarerat.bansystem.Evelon.Ban;
import de.softwarerat.bansystem.Evelon.Mute;
import de.softwarerat.bansystem.Listener.PlayerJoin;
import de.softwarerat.bansystem.Listener.PlayerSwitchServer;
import de.softwarerat.bansystem.Moderation.ModifyReason;
import net.bytemc.evelon.DatabaseCradinates;
import net.bytemc.evelon.DatabaseProtocol;
import net.bytemc.evelon.Evelon;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Plugin;
public final class Bansystem extends Plugin {
Ban ban;
Mute mute;
MiliCalc miliCalc;
ModifyReason modifyReason;
@Override
public void onEnable() {
getProxy().getPluginManager().registerListener(this, new PlayerJoin(ban));
getProxy().getPluginManager().registerListener(this, new PlayerSwitchServer(ban));
getProxy().getPluginManager().registerCommand(this, new BanPlayer(ban,miliCalc,modifyReason));
getProxy().getPluginManager().registerCommand(this, new MutePlayer(mute, miliCalc, modifyReason) {
@Override
public Iterable<String> onTabComplete(CommandSender commandSender, String[] strings) {
return null;
}
});
getProxy().getPluginManager().registerCommand(this, new UnbanPlayer(ban));
getProxy().getPluginManager().registerCommand(this, new UnmutePlayer(ban));
getProxy().getPluginManager().registerCommand(this, new UUIDBanPlayer(ban,miliCalc,modifyReason));
Evelon.setDatabaseCradinates(new DatabaseCradinates(
DatabaseProtocol.MARIADB,
"127.0.0.1", //ToDo set Right Data
"GGoders0", //ToDo set Right Data
"Admin", //ToDo set Right Data
"BanSystem", //ToDo set Right Data
3306
));
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
}
@@ -0,0 +1,79 @@
package de.softwarerat.bansystem.Command;
import de.softwarerat.bansystem.Api.MiliCalc;
import de.softwarerat.bansystem.Evelon.Ban;
import de.softwarerat.bansystem.Moderation.BanLocation;
import de.softwarerat.bansystem.Moderation.BanReason;
import de.softwarerat.bansystem.Moderation.ModifyReason;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Locale;
public class BanPlayer extends Command implements TabExecutor {
Ban ban;
MiliCalc miliCalc;
ModifyReason modifyReason;
public BanPlayer(Ban ban, MiliCalc miliCalc, ModifyReason modifyReason) {
super("bungeeBan", "Group.Moderator", "");
this.ban = ban;
this.miliCalc = miliCalc;
this.modifyReason = modifyReason;
}
public void execute(CommandSender sender, String[] args) {
if (ProxyServer.getInstance().getPlayer(args[0]).isConnected()){
var p = ProxyServer.getInstance().getPlayer(args[0]);
var sp = sender.getName();
var reason = modifyReason.toBanReason(args[1].toUpperCase(Locale.ROOT));
var l = miliCalc.addDays(System.currentTimeMillis(), Integer.parseInt(args[2]));
ban.processBan(p.getUniqueId(),l,reason,sp, BanLocation.BAN_LOCATION_MINECRAFT);
//ToDo: Add Styling lol
p.disconnect("Du wurdest Gebannt Melde Dich für weitere infos im Discord");
} else {
sender.sendMessage("bitte Nutz den UUID Ban Command da der Spieler nicht online ist.");
}
}
@Override
public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
if (args.length == 1) {
return generatePlayerNameSuggestions(args[0]);
} else if (args.length == 2) {
// Hier könntest du Tab-Vervollständigungen für das zweite Argument hinzufügen
// ...
}
// Weitere Fälle für zusätzliche Argumente hinzufügen...
return Collections.emptyList(); // Wenn keine Vorschläge vorhanden sind
}
private List<String> generatePlayerNameSuggestions(String input) {
List<String> suggestions = new ArrayList<>();
for (ProxiedPlayer player : ProxyServer.getInstance().getPlayers()) {
String playerName = player.getName();
if (playerName.startsWith(input)) {
suggestions.add(playerName);
}
}
return suggestions;
}
private List<String> generateReasonString(String input){
List<String> suggestions = new ArrayList<>();
suggestions.add(BanReason.BAN_REASON_BAN_EVADING.name());
suggestions.add(BanReason.BAN_REASON_TEAMING.name());
suggestions.add(BanReason.BAN_REASON_TEAMING_CROSS.name());
suggestions.add(BanReason.BAN_REASON_HOUSE_BAN.name());
suggestions.add(BanReason.BAN_REASON_BAN_EVADING.name());
return suggestions;
}
}
@@ -0,0 +1,38 @@
package de.softwarerat.bansystem.Command;
import de.softwarerat.bansystem.Api.MiliCalc;
import de.softwarerat.bansystem.Evelon.Ban;
import de.softwarerat.bansystem.Evelon.Mute;
import de.softwarerat.bansystem.Moderation.BanLocation;
import de.softwarerat.bansystem.Moderation.ModifyReason;
import de.softwarerat.bansystem.Moderation.MuteLocation;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;
import java.util.Locale;
public abstract class MutePlayer extends Command implements TabExecutor {
Mute mute;
MiliCalc miliCalc;
ModifyReason modifyReason;
public MutePlayer(Mute mute, MiliCalc miliCalc, ModifyReason modifyReason) {
super("bungeeMute", "Group.Moderator", "");
this.miliCalc = miliCalc;
this.modifyReason = modifyReason;
}
public void execute(CommandSender sender, String[] args) {
var p = ProxyServer.getInstance().getPlayer(args[0]);
var sp = sender.getName();
var reason = modifyReason.toMuteReason(args[1].toUpperCase(Locale.ROOT));
var l = miliCalc.addDays(System.currentTimeMillis(), Integer.parseInt(args[2]));
mute.processMute(p.getUniqueId(),l,reason,sp, MuteLocation.MUTE_LOCATION_MINECRAFT);
//ToDo: Add Styling lol
p.sendMessage("Du wurdest gemuted, Melde Dich im Discord für weitere Infos");
}
}
@@ -0,0 +1,32 @@
package de.softwarerat.bansystem.Command;
import de.softwarerat.bansystem.Api.MiliCalc;
import de.softwarerat.bansystem.Evelon.Ban;
import de.softwarerat.bansystem.Moderation.BanLocation;
import de.softwarerat.bansystem.Moderation.ModifyReason;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import java.util.*;
public class UUIDBanPlayer extends Command {
Ban ban;
MiliCalc miliCalc;
ModifyReason modifyReason;
public UUIDBanPlayer(Ban ban, MiliCalc miliCalc, ModifyReason modifyReason) {
super("bungeeBanUUID", "Group.Moderator", "");
this.ban = ban;
this.miliCalc = miliCalc;
this.modifyReason = modifyReason;
}
public void execute(CommandSender sender, String[] args) {
var sp = sender.getName();
var reason = modifyReason.toBanReason(args[1].toUpperCase(Locale.ROOT));
var l = miliCalc.addDays(System.currentTimeMillis(), Integer.parseInt(args[2]));
ban.processBan(UUID.fromString(args[0]),l,reason,sp, BanLocation.BAN_LOCATION_MINECRAFT);
//ToDo: Add DIscord message
}
}
@@ -0,0 +1,26 @@
package de.softwarerat.bansystem.Command;
import de.softwarerat.bansystem.Api.MiliCalc;
import de.softwarerat.bansystem.Evelon.Ban;
import de.softwarerat.bansystem.Moderation.ModifyReason;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import java.util.UUID;
public class UnbanPlayer extends Command {
Ban ban;
public UnbanPlayer(Ban ban) {
super("BungeeUnban", "Group.Moderator", "");
this.ban = ban;
}
public void execute(CommandSender sender, String[] args) {
sender.sendMessage("Bansystem | Erfolgreich Spieler Entbannt");
ban.deleteBan(UUID.fromString(args[0]));
}
}
@@ -0,0 +1,27 @@
package de.softwarerat.bansystem.Command;
import de.softwarerat.bansystem.Api.MiliCalc;
import de.softwarerat.bansystem.Evelon.Ban;
import de.softwarerat.bansystem.Moderation.ModifyReason;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;
import java.util.UUID;
public class UnmutePlayer extends Command {
ModifyReason modifyReason;
Ban ban;
MiliCalc miliCalc;
public UnmutePlayer(Ban ban) {
super("BungeeUnmute", "Group.Moderator", "");
this.ban = ban;
}
public void execute(CommandSender sender, String[] args) {
sender.sendMessage("Bansystem | Erfolgreich Spieler Entbannt");
ban.deleteBan(UUID.fromString(args[0]));
//ToDo: Add Unban Discord msg
}
}
@@ -0,0 +1,29 @@
package de.softwarerat.bansystem.Evelon;
import de.softwarerat.bansystem.Moderation.BanLocation;
import de.softwarerat.bansystem.Moderation.BanReason;
import net.bytemc.evelon.repository.Filters;
import net.bytemc.evelon.repository.Repository;
import java.util.UUID;
public class Ban {
public void processBan(UUID u, long l , BanReason br , String s, BanLocation bl){
var repository = Repository.create(BanPlayer.class);
repository.query().create(new BanPlayer(u,br,l,s,bl));
}
//getting infos about the ban(like Reason and Time, later planned to add a Proof that the Ban is Right and not a Falseban or a troll from the)
public BanPlayer queryBan (UUID uuid){
var repository = Repository.create(BanPlayer.class);
for (var banPlayer : repository.query().filter(Filters.match("UUID", uuid)).database().findAll()) {
return new BanPlayer(banPlayer.getUuid(),banPlayer.getBanReason(),banPlayer.getBanTime(),banPlayer.getModeratorName(),banPlayer.getBanLocation());
}
return null;
}
//Unbanning the Specified User from the Network
public void deleteBan(UUID uuid){
var repository = Repository.create(BanPlayer.class);
repository.query().filter(Filters.match("UUID", uuid)).delete();
}
}
@@ -0,0 +1,23 @@
package de.softwarerat.bansystem.Evelon;
import de.softwarerat.bansystem.Moderation.BanLocation;
import de.softwarerat.bansystem.Moderation.BanReason;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.bytemc.evelon.repository.annotations.Entity;
import net.bytemc.evelon.repository.annotations.PrimaryKey;
import net.bytemc.evelon.repository.annotations.Row;
import java.util.UUID;
@Entity(name = "BannedPlayers")
@AllArgsConstructor
@Getter
public class BanPlayer {
@PrimaryKey
private UUID uuid;
private BanReason banReason;
private long banTime;
private String ModeratorName;
private BanLocation banLocation;
}
@@ -0,0 +1,28 @@
package de.softwarerat.bansystem.Evelon;
import de.softwarerat.bansystem.Moderation.MuteLocation;
import de.softwarerat.bansystem.Moderation.MuteReason;
import net.bytemc.evelon.repository.Filters;
import net.bytemc.evelon.repository.Repository;
import java.util.UUID;
public class Mute {
public void processMute(UUID u, long l , MuteReason br,String mp, MuteLocation ml){
var repository = Repository.create(MutePlayer.class);
repository.query().create(new MutePlayer(u,br,l,mp,ml));
}
public MutePlayer queryMute (UUID uuid){
var repository = Repository.create(MutePlayer.class);
for (var mutePlayer : repository.query().filter(Filters.match("UUID", uuid)).database().findAll()) {
return new MutePlayer(mutePlayer.getUuid(),mutePlayer.getMuteReason(),mutePlayer.getMuteTime(), mutePlayer.getModeratingPlayerName(), mutePlayer.getMuteLocation());
}
return null;
}
public void deleteMute(UUID uuid){
var repository = Repository.create(BanPlayer.class);
repository.query().delete();
}
}
@@ -0,0 +1,22 @@
package de.softwarerat.bansystem.Evelon;
import de.softwarerat.bansystem.Moderation.BanReason;
import de.softwarerat.bansystem.Moderation.MuteLocation;
import de.softwarerat.bansystem.Moderation.MuteReason;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.bytemc.evelon.repository.annotations.Entity;
import net.bytemc.evelon.repository.annotations.PrimaryKey;
import java.util.UUID;
@Getter
@Entity(name = "MutedPlayers")
@AllArgsConstructor
public class MutePlayer {
@PrimaryKey
private UUID uuid ;
private MuteReason muteReason;
private long muteTime;
private String ModeratingPlayerName;
private MuteLocation muteLocation;
}
@@ -0,0 +1,8 @@
package de.softwarerat.bansystem.Event;
public enum MessageType {
MESSAGE_TYPE_REPORT,
MESSAGE_TYPE_BAN,
MESSAGE_TYPE_MUTE,
MESSAGE_TYPE_KICK;
}
@@ -0,0 +1,26 @@
package de.softwarerat.bansystem.Event;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.ArrayList;
public class Report {
public void PushMsg(ArrayList<ProxiedPlayer>p , ProxiedPlayer repP, ProxiedPlayer player, MessageType messageType, String s){
switch (messageType){
case MESSAGE_TYPE_BAN:
String msg_ban = "Notify Ban | "+ repP.getName()+ " wurde von "+ player.getName() + " Gebannt Grund "+s;
break;
case MESSAGE_TYPE_KICK:
String msg_kick = "Notify Kick | "+ repP.getName()+ " wurde von "+ player.getName() + " Gekickt Grund "+s;
break;
case MESSAGE_TYPE_MUTE:
String msg_mute = "Notify Mute | "+ repP.getName()+ " wurde von "+ player.getName() + " Gemuted";
break;
case MESSAGE_TYPE_REPORT:
String msg_report = "Notify Report | "+ repP.getName()+ " wurde von "+ player.getName() + " Gemeldet";
break;
}
}
}
@@ -0,0 +1,28 @@
package de.softwarerat.bansystem.Listener;
import de.softwarerat.bansystem.Evelon.Ban;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.PostLoginEvent;
import net.md_5.bungee.api.plugin.Listener;
import java.util.UUID;
public class PlayerJoin implements Listener {
Ban ban;
public PlayerJoin(Ban ban) {
this.ban = ban;
}
public void onPostLogin(PostLoginEvent event) {
UUID player = event.getPlayer().getUniqueId();
ProxiedPlayer proxiedPlayer = event.getPlayer();
if (ban.queryBan(player) != null){
//ToDo add Styling
proxiedPlayer.disconnect(ban.queryBan(player).getBanReason().toString());
}
}
}
@@ -0,0 +1,13 @@
package de.softwarerat.bansystem.Listener;
import net.md_5.bungee.api.plugin.Listener;
import net.md_5.bungee.event.EventHandler;
public class PlayerSendMessage implements Listener {
@EventHandler
public void onPlayerMessage(){
}
}
@@ -0,0 +1,28 @@
package de.softwarerat.bansystem.Listener;
import de.softwarerat.bansystem.Evelon.Ban;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.event.PostLoginEvent;
import net.md_5.bungee.api.event.ServerSwitchEvent;
import net.md_5.bungee.api.plugin.Listener;
import java.util.UUID;
public class PlayerSwitchServer implements Listener {
Ban ban;
public PlayerSwitchServer(Ban ban) {
this.ban = ban;
}
public void onServerSwitch(ServerSwitchEvent event) {
UUID player = event.getPlayer().getUniqueId();
ProxiedPlayer proxiedPlayer = event.getPlayer();
if (ban.queryBan(player) != null){
//ToDo add Styling
proxiedPlayer.disconnect(ban.queryBan(player).getBanReason().toString());
}
}
}
@@ -0,0 +1,6 @@
package de.softwarerat.bansystem.Moderation;
public enum BanLocation {
BAN_LOCATION_DISCORD,
BAN_LOCATION_MINECRAFT
}
@@ -0,0 +1,16 @@
package de.softwarerat.bansystem.Moderation;
public enum BanReason {
BAN_REASON_FORBIDDEN_BUILDING,
BAN_REASON_HACKING,
BAN_REASON_TEAMING,
BAN_REASON_TEAMING_CROSS,
BAN_REASON_HOUSE_BAN,
BAN_REASON_GRIEFING,
BAN_REASON_BAN_EVADING;
}
@@ -0,0 +1,39 @@
package de.softwarerat.bansystem.Moderation;
import de.softwarerat.bansystem.Evelon.Mute;
public class ModifyReason {
public BanReason toBanReason(String s) {
switch (s){
case "BAN_REASON_FORBIDDEN_BUILDING":
return BanReason.BAN_REASON_FORBIDDEN_BUILDING;
case "BAN_REASON_HACKING":
return BanReason.BAN_REASON_HACKING;
case "BAN_REASON_TEAMING":
return BanReason.BAN_REASON_TEAMING;
case "BAN_REASON_TEAMING_CROSS":
return BanReason.BAN_REASON_TEAMING_CROSS;
case "BAN_REASON_HOUSE_BAN":
return BanReason.BAN_REASON_HOUSE_BAN;
case "BAN_REASON_GRIEFING":
return BanReason.BAN_REASON_GRIEFING;
case "BAN_REASON_BAN_EVADING":
return BanReason.BAN_REASON_BAN_EVADING;
}
return BanReason.BAN_REASON_HOUSE_BAN;
}
public MuteReason toMuteReason(String s) {
switch (s){
case "MUTE_REASON_CHAT_BEHAVIOR":
return MuteReason.MUTE_REASON_CHAT_BEHAVIOR;
case "MUTE_REASON_AD_SM":
return MuteReason.MUTE_REASON_AD_SM;
case "MUTE_REASON_FORBIDDEN_WORDS":
return MuteReason.MUTE_REASON_FORBIDDEN_WORDS;
}
return MuteReason.MUTE_REASON_MUTE;
}
}
@@ -0,0 +1,6 @@
package de.softwarerat.bansystem.Moderation;
public enum MuteLocation {
MUTE_LOCATION_DISCORD,
MUTE_LOCATION_MINECRAFT
}
@@ -0,0 +1,12 @@
package de.softwarerat.bansystem.Moderation;
public enum MuteReason {
MUTE_REASON_CHAT_BEHAVIOR,
MUTE_REASON_AD_SM,
MUTE_REASON_FORBIDDEN_WORDS,
MUTE_REASON_MUTE;
}
+3
View File
@@ -0,0 +1,3 @@
name: Bansystem
version: '${project.version}'
main: de.softwarerat.bansystem.Bansystem