diff --git a/README.md b/README.md index 83db887..aa5ab2f 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,4 @@ EAA_MOD =============== -This MOD is created by the "Eggwars Am Abend" (EAA) Squad, to increase fun playing Minecraft by avoiding hacking/idiotic players and providing some useful tools. -This mod is 100% client side and does not interact with the server you are playing on. -## Features -Following a list of features, this mod provides -### TAG -It's basically a report system. - -Users are able to tag other players with a set of tags. As example as Hacker/Friend/Good player and so on. -In addition, the tag gets weighted by a scale from 0 to 10. - -Tagged players are shown when pressing TAB, including their recent tag with grade. -Other commands like playercheck/lobbycheck also use tag data. - -### Ping as Number -Heavily inspired by this cool project, check it out! - -https://www.curseforge.com/minecraft/mc-mods/better-ping-display-fabric - -### Echo -uhm ... yeh ... it echos ... uhm ... you - -(used as PoC, will be removed sooner or later) - -## Commands -All mod commands start with a double slash (`//`), so they don't get confused with other commands - -* `//tag ` - * Tags player with chosen tag and grade. On success, a notification is shown. -* `//lobby` - * Checks if any unwanted players (Hacker/Idiot/Noob) are in the current lobby. -* `//check ` - * shows detailed information about a player, including past player names and tags. -* `//echo ` - * reply with text -* `//reload` - * reloads cashed players. Useful when playing in a team and someone tagged another player. Otherwise, the tag would not appear till next game start. - - -## Settings -Mod needs a file in mod folder called settings.properties containing following values: - -``` -url=mysql:/// -user= -password= -db_name= -``` - -A working sample config is provided in the config folder, setup with a read only user of the developers Database. - -## Database -Database-Model and SQL-Starterscript can be found in the config/database folder. -The Mod itself does not create the needed Database structure. The user has to init the Database by himself. \ No newline at end of file +EAA \ No newline at end of file diff --git a/build.gradle b/build.gradle index a1eb4bc..128dc3f 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,5 @@ plugins { - id 'fabric-loom' version '0.10-SNAPSHOT' + id 'fabric-loom' version '0.7-SNAPSHOT' } sourceCompatibility = JavaVersion.VERSION_1_8 @@ -24,11 +24,12 @@ dependencies { modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" //include group: 'org.postgresql', name: 'postgresql', version: '42.2.9' // https://mvnrepository.com/artifact/mysql/mysql-connector-java - include group: 'mysql', name: 'mysql-connector-java', version: "${project.jdbc_mysql}" - implementation group: 'mysql', name: 'mysql-connector-java', version: "${project.jdbc_mysql}" + //implementation(include('mysql:mysql-connector-java:8.0.25')) + include group: 'mysql', name: 'mysql-connector-java', version: '8.0.25' + implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.25' //modImplementation(group: 'mysql', name: 'mysql-connector-java', version: '8.0.25') - include group: 'com.googlecode.json-simple', name: 'json-simple', version: "${project.json_simple}" - implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: "${project.json_simple}" + include group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' + implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1' // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" diff --git a/config/settings.properties b/config/settings.properties deleted file mode 100644 index 8bc9426..0000000 --- a/config/settings.properties +++ /dev/null @@ -1,4 +0,0 @@ -url=mysql://mysql2f88.netcup.net/ -user=k85020_EAA_MOD_RO -password=EeChf3dfZmwDgMo4rYSFj9bC9i5EaFkKtXfw5F7hPSQyKTZfNv3qougR3jn99ehUiRAgyr9ypLQJUyQhDQAdLf35ymst5sXf34Zo -db_name=k85020_EAA_MOD \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 9983820..a5a1f56 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,19 +4,14 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/versions.html minecraft_version=1.16.5 - yarn_mappings=1.16.5+build.10 - loader_version=0.12.11 + yarn_mappings=1.16.5+build.9 + loader_version=0.11.3 + # Mod Properties - mod_version = 1.1.3 + mod_version = 1.0.1 maven_group = net.saltymc.eaa archives_base_name = EAA_MOD # Dependencies # currently not on the main fabric site, check on the maven: https://maven.fabricmc.net/net/fabricmc/fabric-api/fabric-api (or https://fabricmc.net/versions.html) - fabric_version=0.42.0+1.16 - -#SQL -jdbc_mysql=8.0.27 - -#JSON -json_simple=1.1.1 \ No newline at end of file + fabric_version=0.34.2+1.16 \ No newline at end of file diff --git a/src/main/java/net/saltymc/eaa/EaaMod.java b/src/main/java/net/saltymc/eaa/EaaMod.java index d90d58b..2c50258 100644 --- a/src/main/java/net/saltymc/eaa/EaaMod.java +++ b/src/main/java/net/saltymc/eaa/EaaMod.java @@ -2,7 +2,6 @@ package net.saltymc.eaa; import net.saltymc.eaa.commands.*; -import net.saltymc.eaa.util.io.PropertieLoader; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -10,27 +9,15 @@ import net.fabricmc.api.ClientModInitializer; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import java.util.Properties; - @Environment(EnvType.CLIENT) public final class EaaMod implements ClientModInitializer { - - private static final String SETTINGS_FILE_NAME = "settings.properties"; - public static final Logger LOGGER = LogManager.getLogger("EAA-MOD"); - private static Properties settings; + public static Logger getLogger() { return LOGGER; } - public static Properties getSettings(){ - if (settings == null) - settings = PropertieLoader.loadProperties(SETTINGS_FILE_NAME); - - return settings; - } - @Override public void onInitializeClient() { diff --git a/src/main/java/net/saltymc/eaa/commands/TagCommand.java b/src/main/java/net/saltymc/eaa/commands/TagCommand.java index fc3dfe2..c02d634 100644 --- a/src/main/java/net/saltymc/eaa/commands/TagCommand.java +++ b/src/main/java/net/saltymc/eaa/commands/TagCommand.java @@ -35,17 +35,15 @@ public class TagCommand extends EaaModCommand{ .then( argument("player", StringArgumentType.word()) .suggests((ctx, builder) -> EntityArgumentType.player().listSuggestions(ctx, builder)) - .then( - argument("tag", StringArgumentType.word()) - .suggests(((context, builder) -> { - for (DB_Tag.Type tag : DB_Tag.Type.values()) - builder.suggest(tag.name()); - return builder.buildFuture(); - })) - .then( - argument("grade", IntegerArgumentType.integer(0,10)) - .suggests((ctx, builder) -> IntegerArgumentType.integer(0,10).listSuggestions(ctx, builder)) - .executes(this) - ))); + .then(argument("tag", StringArgumentType.word()) + .suggests(((context, builder) -> { + for (DB_Tag.Type tag : DB_Tag.Type.values()) + builder.suggest(tag.name()); + return builder.buildFuture(); + })) + .then( + argument("grade", IntegerArgumentType.integer(0,10)) + .executes(this) + ))); } } diff --git a/src/main/java/net/saltymc/eaa/custom/ping/CustomPlayerListHud.java b/src/main/java/net/saltymc/eaa/custom/ping/CustomPlayerListHud.java index 292ad3b..3e909b3 100644 --- a/src/main/java/net/saltymc/eaa/custom/ping/CustomPlayerListHud.java +++ b/src/main/java/net/saltymc/eaa/custom/ping/CustomPlayerListHud.java @@ -27,6 +27,7 @@ import net.minecraft.text.OrderedText; import net.minecraft.text.Text; import net.minecraft.world.GameMode; import net.saltymc.eaa.function.TagFunction; +import net.saltymc.eaa.util.database.DB_Tag; /** * By: https://github.com/vladmarica/better-ping-display-fabric/ @@ -163,21 +164,10 @@ public final class CustomPlayerListHud { /* * PLAYER TAG */ - int offset_tag_playername = aa; // safe current x offset -> - TagDTO playerTAG = TagFunction.getScoreboardTag(player.getProfile().getId().toString()); // retrieve Tag object - mc.textRenderer.drawWithShadow(stack, playerTAG.getType().getTag(), (float)aa, (float)ab, playerTAG.getType().getColor()); // draw tag name - - offset_tag_playername += mc.textRenderer.getWidth(playerTAG.getType().getTag()) + 1; // add tag name length to offset - - // current offset plus amount to center grade text - float tmp_x = offset_tag_playername - + ((mc.textRenderer.getWidth("10") - mc.textRenderer.getWidth(playerTAG.getGrade() < 1 ? "|" : playerTAG.getGrade() +"")) - / 2.0f); - mc.textRenderer.drawWithShadow(stack, - playerTAG.getGrade() < 1 ? "|" : playerTAG.getGrade() +"", // if not given draw a pipe - (float) tmp_x, (float) ab, playerTAG.getGradeColor()); - - offset_tag_playername += mc.textRenderer.getWidth("10") + 2; // add offset of largest character + int offset_tag_playername = aa; + DB_Tag.Type playerTAG = TagFunction.getScoreboardTag(player.getProfile().getId().toString()); + mc.textRenderer.drawWithShadow(stack, playerTAG.getTag(), (float)aa, (float)ab, playerTAG.getColor()); + offset_tag_playername += mc.textRenderer.getWidth(playerTAG.getTag()) + 2; Text playerName = hud.getPlayerName(player); @@ -188,7 +178,7 @@ public final class CustomPlayerListHud { } if (obj != null && player.getGameMode() != GameMode.SPECTATOR) { - int ag = offset_tag_playername + i + 1; + int ag = aa + i + 1; ah = ag + q; if (ah - ag > 5) { PlayerListHudUtil.renderScoreboardObjective(hud, stack, obj, ab, gameProfile.getName(), ag, ah, player); diff --git a/src/main/java/net/saltymc/eaa/custom/ping/PingColors.java b/src/main/java/net/saltymc/eaa/custom/ping/PingColors.java index 43a42f0..6521f62 100644 --- a/src/main/java/net/saltymc/eaa/custom/ping/PingColors.java +++ b/src/main/java/net/saltymc/eaa/custom/ping/PingColors.java @@ -33,7 +33,7 @@ public class PingColors { computeOffset(PING_MID, PING_END, Math.min(ping, PING_END))); } - public static float computeOffset(int start, int end, int value) { + static float computeOffset(int start, int end, int value) { float offset = (value - start) / (float) ( end - start); return MathHelper.clamp(offset, 0.0F, 1.0F); } diff --git a/src/main/java/net/saltymc/eaa/custom/ping/TagDTO.java b/src/main/java/net/saltymc/eaa/custom/ping/TagDTO.java deleted file mode 100644 index 47d36b3..0000000 --- a/src/main/java/net/saltymc/eaa/custom/ping/TagDTO.java +++ /dev/null @@ -1,39 +0,0 @@ -package net.saltymc.eaa.custom.ping; - -import net.saltymc.eaa.util.database.DB_Tag; - -import static net.saltymc.eaa.custom.ping.PingColors.computeOffset; - -public class TagDTO { - final int grade; - final int gradeColor; - final DB_Tag.Type type; - - public TagDTO(int grade, DB_Tag.Type type) { - this.grade = grade; - this.gradeColor = calcGradient(grade, type); - this.type = type; - } - - public int getGradeColor() { - return gradeColor; - } - - public DB_Tag.Type getType() { - return type; - } - - private static int calcGradient(int grade, DB_Tag.Type type){ - if (grade < 1) - return 0xaaaaaa; - - return ColorUtil.interpolate( - 0xaaaaaa, - type.getColor(), - computeOffset(0, 10, grade)); - } - - public int getGrade(){ - return grade; - } -} diff --git a/src/main/java/net/saltymc/eaa/function/CheckFunction.java b/src/main/java/net/saltymc/eaa/function/CheckFunction.java index f7a1d11..29d12e3 100644 --- a/src/main/java/net/saltymc/eaa/function/CheckFunction.java +++ b/src/main/java/net/saltymc/eaa/function/CheckFunction.java @@ -4,9 +4,7 @@ import net.fabricmc.fabric.api.client.command.v1.FabricClientCommandSource; import net.minecraft.client.MinecraftClient; import net.minecraft.client.toast.SystemToast; import net.minecraft.text.LiteralText; -import net.minecraft.text.Style; import net.minecraft.text.Text; -import net.minecraft.text.TextColor; import net.minecraft.util.Formatting; import net.saltymc.eaa.util.database.DB_Player; import net.saltymc.eaa.util.database.DB_Tag; @@ -59,7 +57,7 @@ public class CheckFunction { source.sendFeedback(new LiteralText(dateformat.format(curr.getTagDate())).formatted(Formatting.GRAY) .append(new LiteralText(" | ")) - .append(new LiteralText(curr.getType().getTag()).setStyle(Style.EMPTY.withColor(TextColor.fromRgb(curr.getType().getColor())))) + .append(new LiteralText(curr.getType().getTag()).formatted(curr.getType().getFormatting())) .append(new LiteralText(" (" + curr.getGrade() + ") ").formatted(getScaleFormat(curr.getGrade()))) ); } @@ -73,7 +71,7 @@ public class CheckFunction { } } - public static Formatting getScaleFormat(int grade){ + private static Formatting getScaleFormat(int grade){ if (grade <= 5) return Formatting.WHITE; else if (grade < 9) diff --git a/src/main/java/net/saltymc/eaa/function/LobbyFunction.java b/src/main/java/net/saltymc/eaa/function/LobbyFunction.java index 9d026af..a427705 100644 --- a/src/main/java/net/saltymc/eaa/function/LobbyFunction.java +++ b/src/main/java/net/saltymc/eaa/function/LobbyFunction.java @@ -38,7 +38,7 @@ public class LobbyFunction { if (type == DB_Tag.Type.HACKER){ dangerLvl = 2; break; - } else if (type == DB_Tag.Type.IDIOT || type == DB_Tag.Type.NOOB){ + } else if (type == DB_Tag.Type.IDIOT){ dangerLvl = 1; } } @@ -49,7 +49,7 @@ public class LobbyFunction { SystemToast.add(source.getClient().getToastManager(), SystemToast.Type.WORLD_BACKUP, Text.of("OKAY!"), Text.of("No Hackers found")); break; case 1: - SystemToast.add(source.getClient().getToastManager(), SystemToast.Type.TUTORIAL_HINT, Text.of("MEH!"), Text.of("There is an Idiot or Noob!")); + SystemToast.add(source.getClient().getToastManager(), SystemToast.Type.TUTORIAL_HINT, Text.of("MEH!"), Text.of("There is an Idiot!")); break; case 2: SystemToast.add(source.getClient().getToastManager(), SystemToast.Type.WORLD_ACCESS_FAILURE, Text.of("ALARM!"), Text.of("There is a Hacker!")); diff --git a/src/main/java/net/saltymc/eaa/function/TagFunction.java b/src/main/java/net/saltymc/eaa/function/TagFunction.java index 9e09a2d..435969d 100644 --- a/src/main/java/net/saltymc/eaa/function/TagFunction.java +++ b/src/main/java/net/saltymc/eaa/function/TagFunction.java @@ -1,9 +1,9 @@ package net.saltymc.eaa.function; import net.fabricmc.fabric.api.client.command.v1.FabricClientCommandSource; +import net.minecraft.client.MinecraftClient; import net.minecraft.client.toast.SystemToast; import net.minecraft.text.Text; -import net.saltymc.eaa.custom.ping.TagDTO; import net.saltymc.eaa.util.database.DB_Player; import net.saltymc.eaa.util.database.DB_Tag; import net.saltymc.eaa.util.mojangApi.PlayerInfo; @@ -23,18 +23,16 @@ public class TagFunction { } } - public static TagDTO getScoreboardTag(String uuid){ - if (player_tags.containsKey(uuid)) { - DB_Tag tag = player_tags.get(uuid); - return new TagDTO(tag.getGrade(), tag.getType()); - - } else { + public static DB_Tag.Type getScoreboardTag(String uuid){ + if (player_tags.containsKey(uuid)) + return player_tags.get(uuid).getType(); + else { if (free) { free = false; loadPlayer(uuid, false); } } - return new TagDTO(-1, DB_Tag.Type.NOTLOADED); + return DB_Tag.Type.NOTLOADED; } public static void tagPlayer(String player, DB_Tag.Type tag, int grade, FabricClientCommandSource source){ diff --git a/src/main/java/net/saltymc/eaa/util/database/DB_Tag.java b/src/main/java/net/saltymc/eaa/util/database/DB_Tag.java index 8b94394..cac36f5 100644 --- a/src/main/java/net/saltymc/eaa/util/database/DB_Tag.java +++ b/src/main/java/net/saltymc/eaa/util/database/DB_Tag.java @@ -1,5 +1,7 @@ package net.saltymc.eaa.util.database; +import net.minecraft.util.Formatting; + import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -94,30 +96,31 @@ public class DB_Tag { public enum Type { HACKER( - "HAX", "PLayer who hacks", 0xaa0000 + "HAX", "PLayer who hacks", 0xaa0000, Formatting.RED ), FRIENDLY( - "FND", "Player you like", 0x55ff55 + "FND", "Player you like", 0x55ff55, Formatting.GREEN ), GOODPLAYER( - "PRO", "Fair player with good skill", 0xffaa00 + "PRO", "Fair player with good skill", 0xffaa00, Formatting.GOLD ), IDIOT( - "A$$", "Person who is annoying and bad", 0x55ffff - ), NOOB( - "BAD", "Person with low skill", 0xff55ff + "BAD", "Person who is annoying and bad", 0x55ffff, Formatting.AQUA ), NOTTAGGED( - "NaN", "Player is not tagged", 0x555555 + "NaN", "Player is not tagged", 0x555555, Formatting.DARK_GRAY ), NOTLOADED( - "---", "PLayer not loaded", 0xffffff + "---", "PLayer not loaded", 0xffffff, Formatting.WHITE ); String tag, description; int color; + Formatting formatting; - Type(String tag, String description, int color){ + Type(String tag, String description, int color, Formatting formatting){ this.tag = tag; this.description = description; this.color = color; + this.formatting = formatting; } + public String getTag() { return tag; } @@ -129,5 +132,9 @@ public class DB_Tag { public int getColor() { return color; } + + public Formatting getFormatting(){ + return formatting; + } } } diff --git a/src/main/java/net/saltymc/eaa/util/database/Postgre.java b/src/main/java/net/saltymc/eaa/util/database/Postgre.java index 107c25c..cdea712 100644 --- a/src/main/java/net/saltymc/eaa/util/database/Postgre.java +++ b/src/main/java/net/saltymc/eaa/util/database/Postgre.java @@ -7,24 +7,15 @@ import com.mysql.cj.jdbc.Driver; public class Postgre { - private String url; - private String user; - private String password; - private String db_name; - - private final String driverName = "com.mysql.cj.jdbc.Driver"; - + private final String url = "jdbc:postgresql://localhost/myDB"; + private final String user = "postgres"; + private final String password = "root"; private static Postgre postgre; private Connection connection; public Postgre() { - this.url = EaaMod.getSettings().getProperty("url"); - this.user = EaaMod.getSettings().getProperty("user"); - this.password = EaaMod.getSettings().getProperty("password"); - this.db_name = EaaMod.getSettings().getProperty("db_name"); - try { //load driver / config driver EaaMod.LOGGER.debug("Lade DB Treiber"); diff --git a/src/main/java/net/saltymc/eaa/util/io/PropertieLoader.java b/src/main/java/net/saltymc/eaa/util/io/PropertieLoader.java deleted file mode 100644 index 0ac7266..0000000 --- a/src/main/java/net/saltymc/eaa/util/io/PropertieLoader.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.saltymc.eaa.util.io; - -import net.saltymc.eaa.EaaMod; - -import java.io.FileReader; -import java.io.FileWriter; -import java.util.Properties; - -public class PropertieLoader { - - public static Properties loadProperties(String fileName){ - Properties p = new Properties(); - - try (FileReader reader = new FileReader(System.getProperty("user.dir") + "/mods/" + fileName)){ - p.load(reader); - } catch (Exception e){ - try (FileWriter writer = new FileWriter(System.getProperty("user.dir") + "/mods/" + fileName)) { - p.store(writer, "init config file"); - } catch (Exception ex){ - EaaMod.getLogger().error("Cant save Properties" + fileName, e); - } - return loadProperties(fileName); - } - return p; - } -} \ No newline at end of file diff --git a/config/database/datenbank_shema.mwb b/src/main/resources/datenbank/datenbank_shema.mwb similarity index 100% rename from config/database/datenbank_shema.mwb rename to src/main/resources/datenbank/datenbank_shema.mwb diff --git a/config/database/datenbank_shema.png b/src/main/resources/datenbank/datenbank_shema.png similarity index 100% rename from config/database/datenbank_shema.png rename to src/main/resources/datenbank/datenbank_shema.png diff --git a/config/database/datenbank_shema.sql b/src/main/resources/datenbank/datenbank_shema.sql similarity index 100% rename from config/database/datenbank_shema.sql rename to src/main/resources/datenbank/datenbank_shema.sql