A Fabric mod for Geyser servers that detects players joining from one platform or another and adds tags and executes players based on one's platforms. modrinth.com/mod/bedrock-detector
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Code formatting

+70 -55
+2
.gitignore
··· 38 38 replay_*.log 39 39 *.hprof 40 40 *.jfr 41 + 42 + .factorypath
+33 -17
src/main/java/gay/pillow/bedrockdetector/BedrockDetector.java
··· 1 1 package gay.pillow.bedrockdetector; 2 2 3 3 import net.fabricmc.api.ModInitializer; 4 - 5 4 import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents; 6 5 import net.minecraft.server.network.ServerPlayerEntity; 7 6 import org.geysermc.floodgate.api.FloodgateApi; ··· 9 8 import org.slf4j.LoggerFactory; 10 9 11 10 public class BedrockDetector implements ModInitializer { 12 - public static final String MOD_ID = "bedrockdetector"; 13 11 14 - public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); 12 + public static final String MOD_ID = "bedrockdetector"; 15 13 16 - @Override 17 - public void onInitialize() { 18 - // This code runs as soon as Minecraft is in a mod-load-ready state. 19 - // However, some things (like resources) may still be uninitialized. 20 - // Proceed with mild caution. 14 + public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); 15 + 16 + @Override 17 + public void onInitialize() { 18 + // This code runs as soon as Minecraft is in a mod-load-ready state. 19 + // However, some things (like resources) may still be uninitialized. 20 + // Proceed with mild caution. 21 21 ConfigManager.loadConfig(); 22 22 ServerPlayConnectionEvents.JOIN.register((handler, sender, server) -> { 23 23 FloodgateApi floodgateApi = FloodgateApi.getInstance(); 24 24 if (floodgateApi == null) return; 25 25 ServerPlayerEntity player = handler.player; 26 - boolean isBedrockPlayer = floodgateApi.isFloodgatePlayer(player.getUuid()); 27 - LOGGER.info("{} is a {} player", player.getName().getLiteralString(), isBedrockPlayer ? "Bedrock" : "Java"); 26 + boolean isBedrockPlayer = floodgateApi.isFloodgatePlayer( 27 + player.getUuid() 28 + ); 29 + LOGGER.info( 30 + "{} is a {} player", 31 + player.getName().getLiteralString(), 32 + isBedrockPlayer ? "Bedrock" : "Java" 33 + ); 28 34 if (isBedrockPlayer) { 29 - ConfigManager.config.java.tags.forEach(player::removeCommandTag); 30 - ConfigManager.config.bedrock.tags.forEach(player::addCommandTag); 31 - ConfigManager.config.bedrock.commands.forEach((cmd) -> PlayerUtils.runCommandAsPlayer(server, player, cmd)); 35 + ConfigManager.config.java.tags.forEach( 36 + player::removeCommandTag 37 + ); 38 + ConfigManager.config.bedrock.tags.forEach( 39 + player::addCommandTag 40 + ); 41 + ConfigManager.config.bedrock.commands.forEach(cmd -> 42 + PlayerUtils.runCommandAsPlayer(server, player, cmd) 43 + ); 32 44 } else { 33 - ConfigManager.config.bedrock.tags.forEach(player::removeCommandTag); 45 + ConfigManager.config.bedrock.tags.forEach( 46 + player::removeCommandTag 47 + ); 34 48 ConfigManager.config.java.tags.forEach(player::addCommandTag); 35 - ConfigManager.config.java.commands.forEach((cmd) -> PlayerUtils.runCommandAsPlayer(server, player, cmd)); 49 + ConfigManager.config.java.commands.forEach(cmd -> 50 + PlayerUtils.runCommandAsPlayer(server, player, cmd) 51 + ); 36 52 } 37 53 }); 38 - } 39 - } 54 + } 55 + }
-2
src/main/java/gay/pillow/bedrockdetector/Config.java
··· 5 5 public int configVersion = 1; 6 6 public PlatformConfig java = new PlatformConfig(); 7 7 public PlatformConfig bedrock = new PlatformConfig(); 8 - 9 8 } 10 -
+6 -4
src/main/java/gay/pillow/bedrockdetector/ConfigManager.java
··· 2 2 3 3 import com.google.gson.Gson; 4 4 import com.google.gson.GsonBuilder; 5 - 6 5 import java.io.File; 7 6 import java.io.FileReader; 8 7 import java.io.FileWriter; ··· 10 9 11 10 public class ConfigManager { 12 11 13 - private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); 14 - private static final File CONFIG_FILE = new File("config/" + BedrockDetector.MOD_ID + ".json"); 12 + private static final Gson GSON = new GsonBuilder() 13 + .setPrettyPrinting() 14 + .create(); 15 + private static final File CONFIG_FILE = new File( 16 + "config/" + BedrockDetector.MOD_ID + ".json" 17 + ); 15 18 16 19 public static Config config = new Config(); 17 20 ··· 38 41 BedrockDetector.LOGGER.error(e.toString()); 39 42 } 40 43 } 41 - 42 44 }
-1
src/main/java/gay/pillow/bedrockdetector/PlatformConfig.java
··· 6 6 7 7 public ArrayList<String> tags = new ArrayList<>(); 8 8 public ArrayList<String> commands = new ArrayList<>(); 9 - 10 9 }
+6 -4
src/main/java/gay/pillow/bedrockdetector/PlayerUtils.java
··· 6 6 7 7 public class PlayerUtils { 8 8 9 - public static void runCommandAsPlayer(MinecraftServer server, ServerPlayerEntity player, String command) { 9 + public static void runCommandAsPlayer( 10 + MinecraftServer server, 11 + ServerPlayerEntity player, 12 + String command 13 + ) { 10 14 ServerCommandSource source = player.getCommandSource().withLevel(4); // 2 = "player-level" permissions 11 15 12 - server.getCommandManager() 13 - .parseAndExecute(source, command); 16 + server.getCommandManager().parseAndExecute(source, command); 14 17 } 15 - 16 18 }
+23 -27
src/main/resources/fabric.mod.json
··· 1 1 { 2 - "schemaVersion": 1, 3 - "id": "bedrockdetector", 4 - "version": "${version}", 5 - "name": "Bedrock Detector", 6 - "description": "A Fabric mod for Geyser servers that detects players joining from one platform or another and adds tags and executes players based on one's platforms.", 7 - "authors": [ 8 - "Lighty" 9 - ], 10 - "contact": { 11 - "sources": "https://git.gay/lighty/bedrock-detector" 12 - }, 2 + "schemaVersion": 1, 3 + "id": "bedrockdetector", 4 + "version": "${version}", 5 + "name": "Bedrock Detector", 6 + "description": "A Fabric mod for Geyser servers that detects players joining from one platform or another and adds tags and executes players based on one's platforms.", 7 + "authors": ["Lighty"], 8 + "contact": { 9 + "sources": "https://tangled.org/@lighty.pillow.gay/bedrock-detector" 10 + }, 13 11 "custom": { 14 12 "modmenu": { 15 13 "links": { ··· 20 18 "update_checker": true 21 19 } 22 20 }, 23 - "license": "LGPL-3.0", 24 - "icon": "assets/bedrockdetector/icon.png", 25 - "environment": "*", 26 - "entrypoints": { 27 - "main": [ 28 - "gay.pillow.bedrockdetector.BedrockDetector" 29 - ] 30 - }, 31 - "depends": { 32 - "fabricloader": ">=0.17.3", 33 - "minecraft": "~1.21.10", 34 - "java": ">=21", 35 - "fabric-api": "*", 36 - "floodgate": "*" 37 - } 38 - } 21 + "license": "LGPL-3.0", 22 + "icon": "assets/bedrockdetector/icon.png", 23 + "environment": "*", 24 + "entrypoints": { 25 + "main": ["gay.pillow.bedrockdetector.BedrockDetector"] 26 + }, 27 + "depends": { 28 + "fabricloader": ">=0.17.3", 29 + "minecraft": "~1.21.10", 30 + "java": ">=21", 31 + "fabric-api": "*", 32 + "floodgate": "*" 33 + } 34 + }