Qwen3.5-9B on prod, Gemini 2.5 Flash for dev, error correction, branding
Prod deployment: - paper-ai and shrink-world switched from gemma3n:e4b to qwen3.5:9b - Error correction: detects RCON errors (<--[HERE]), asks model to fix, retries - Broadened error patterns: Unknown game mode, Unknown enchantment, etc. - Fixed fire fallback matching "firework" as fire intent - Fixed command format examples (WRONG vs RIGHT in prompt) - max_tokens bumped to 600 for command calls - Removed template workflow commands from sudo prompt Dev server: - Gemini 2.5 Flash ($0.15/$0.60 per M tokens) replaces Flash Lite - 10 bots for ~$1-1.5/hr training data generation - Dynamic pricing by model name in cost tracker Branding: - Rajdhani Bold as official Mortdecai font - Logo variants: mortdecai + mortdec.ai in 6 fonts - Whitelist page updated with Mortdecai branding + mortdec.ai domain Whitelist UUID fix: - Looks up real Mojang UUID via api.mojang.com - Patches all whitelist.json files directly - No more offline-mode UUID mismatches WorldEdit schematics: - 77 schematics installed (villages, bridges, lighthouses, parks, etc.) Mortdecai v4 training in progress: 63% complete on steel141 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 9.1 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 5.7 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 8.9 KiB |
|
After Width: | Height: | Size: 9.7 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 11 KiB |
@@ -33,3 +33,22 @@
|
||||
{"timestamp": "2026-03-19T01:02:27Z", "source": "live_playtest", "category": "command_gen", "mode": "god", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "pray lord i am stuck below the surface", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08"], "player_position": {"x": -151, "y": 57, "z": -205}}}, "output": {"commands_generated": ["execute as slingshooter08 run tp ~ ~10 ~", "effect give slingshooter08 minecraft:regeneration 60 0 true", "tellraw slingshooter08 [{\"text\":\"The heavens grant thee escape and healing.\",\"color\":\"gold\"}]"], "commands_executed": ["execute as slingshooter08 run tp ~ ~10 ~", "effect give slingshooter08 minecraft:regeneration 60 0 true", "tellraw slingshooter08 [{\"text\":\"The heavens grant thee escape and healing.\",\"color\":\"gold\"}]"], "message": "{\"message\": \"{\\\"message\\\": \\\"Your plight is known. From the depths, I shall lift you, and mend what is broken.\\\", \\\"commands\\\": [\\\"execute as slingshooter08 run tp ~ ~10 ~\\\", \\\"effect give slingshooter08 minecraft:regeneration 60 0 true\\\", \\\"tellraw slingshooter08 [{\\\\\\\"text\\\\\\\":\\\\\\\"The heavens grant thee escape and healing.\\\\\\\",\\\\\\\"color\\\\\\\":\\\\\\\"gold\\\\\\\"}]\\\"]}\", \"commands\": [\"execute as slingshooter08 run tp ~ ~10 ~\", \"effect give slingshooter08 minecraft:regeneration 60 0 true\", \"tellraw slingshooter08 [{\\\\\\\"text\\\\\\\":\\\\\\\"The heavens grant thee escape and healing.\\\\\\\",\\\\\\\"color\\\\\\\":\\\\\\\"gold\\\\\\\"}]\"]}"}, "rcon_results": [], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T01:02:42Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo tp me to home", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08"], "player_position": {"x": -150, "y": 57, "z": -204}}}, "output": {"commands_generated": ["tp slingshooter08 -151 57 -205"], "commands_executed": ["tp slingshooter08 -151 57 -205"], "message": ""}, "rcon_results": [["tp slingshooter08 -151 57 -205", "Teleported slingshooter08 to -150.500000, 57.000000, -204.500000"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T01:43:22Z", "source": "live_playtest", "category": "command_gen", "mode": "god", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "pray lord I have no health and I am about to die", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08"], "player_position": {"x": -153, "y": 64, "z": -220}}}, "output": {"commands_generated": ["effect give slingshooter08 minecraft:regeneration 60 1 true", "effect give slingshooter08 minecraft:absorption 60 0 true", "give slingshooter08 golden_apple 1", "tellraw slingshooter08 [{\"text\":\"Mercy flows through the heavens.\",\"color\":\"gold\"}]"], "commands_executed": ["effect give slingshooter08 minecraft:regeneration 60 1 true", "effect give slingshooter08 minecraft:absorption 60 0 true", "give slingshooter08 golden_apple 1", "tellraw slingshooter08 [{\"text\":\"Mercy flows through the heavens.\",\"color\":\"gold\"}]"], "message": "{\"message\": \"{\\\"message\\\": \\\"{\\\\\\\"message\\\\\\\": \\\\\\\"Your plea is heard. Life is returned, and a shield against harm is granted.\\\\\\\", \\\\\\\"commands\\\\\\\": [\\\\\\\"effect give slingshooter08 minecraft:regeneration 60 1 true\\\\\\\", \\\\\\\"effect give slingshooter08 minecraft:absorption 60 0 true\\\\\\\", \\\\\\\"give slingshooter08 golden_apple 1\\\\\\\", \\\\\\\"tellraw slingshooter08 [{\\\\\\\\\\\\\\\"text\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"Mercy flows through the heavens.\\\\\\\\\\\\\\\",\\\\\\\\\\\\\\\"color\\\\\\\\\\\\\\\":\\\\\\\\\\\\\\\"gold\\\\\\\\\\\\\\\"}]\\\\\\\"]}\\\", \\\"commands\\\": [\\\"effect give slingshooter08 minecraft:regeneration 60 1 true\\\", \\\"effect give slingshooter08 minecraft:absorption 60 0 true\\\", \\\"give slingshooter08 golden_apple 1\\\", \\\"tellraw slingshooter08 [{\\\\\\\"text\\\\\\\":\\\\\\\"Mercy flows through the heavens.\\\\\\\",\\\\\\\"color\\\\\\\":\\\\\\\"gold\\\\\\\"}]\\\"]}\", \"commands\": [\"effect give slingshooter08 minecraft:regeneration 60 1 true\", \"effect give slingshooter08 minecraft:absorption 60 0 true\", \"give slingshooter08 golden_apple 1\", \"tellraw slingshooter08 [{\\\"text\\\":\\\"Mercy flows through the heavens.\\\",\\\"color\\\":\\\"gold\\\"}]\"]}"}, "rcon_results": [], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T21:51:52Z", "source": "live_playtest", "category": "command_gen", "mode": "god", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "pray god give me lemons", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08"], "player_position": {"x": -182, "y": 69, "z": -201}}}, "output": {"commands_generated": ["give slingshooter08 minecraft:lemon 1", "tellraw slingshooter08 [{\"text\":\"God has granted you a lemon. Use it wisely.\",\"color\":\"green\"}]"], "commands_executed": ["give slingshooter08 minecraft:lemon 1", "tellraw slingshooter08 [{\"text\":\"God has granted you a lemon. Use it wisely.\",\"color\":\"green\"}]"], "message": "Hear me, mortal. Your plea has been acknowledged. A lemon shall be yours. Let its tartness be a reminder of my boundless, and occasionally whimsical, power."}, "rcon_results": [], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T21:55:07Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo destruct the area around me", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08"], "player_position": {"x": -212, "y": 70, "z": -208}}}, "output": {"commands_generated": ["fill ~-5 ~-2 ~-5 ~5 ~2 ~5 air", "summon tnt ~-3 ~1 ~-3 {Fuse:60}", "summon tnt ~3 ~1 ~3 {Fuse:60}", "summon tnt ~-3 ~1 ~3 {Fuse:60}", "summon tnt ~3 ~1 ~-3 {Fuse:60}"], "commands_executed": ["fill ~-5 ~-2 ~-5 ~5 ~2 ~5 air", "summon tnt ~-3 ~1 ~-3 {Fuse:60}", "summon tnt ~3 ~1 ~3 {Fuse:60}", "summon tnt ~-3 ~1 ~3 {Fuse:60}", "summon tnt ~3 ~1 ~-3 {Fuse:60}"], "message": ""}, "rcon_results": [["fill ~-5 ~-2 ~-5 ~5 ~2 ~5 air", "No blocks were filled"], ["summon tnt ~-3 ~1 ~-3 {Fuse:60}", "Summoned new Primed TNT"], ["summon tnt ~3 ~1 ~3 {Fuse:60}", "Summoned new Primed TNT"], ["summon tnt ~-3 ~1 ~3 {Fuse:60}", "Summoned new Primed TNT"], ["summon tnt ~3 ~1 ~-3 {Fuse:60}", "Summoned new Primed TNT"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T21:56:21Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo place 200 of any kind of block anywhere by me", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08"], "player_position": {"x": -211, "y": 69, "z": -194}}}, "output": {"commands_generated": ["setblock -210 70 -205 stone", "setblock -210 70 -204 stone", "setblock -210 70 -203 stone", "setblock -210 70 -202 stone", "setblock -210 70 -201 stone", "setblock -210 70 -200 stone", "setblock -210 70 -199 stone", "setblock -210 70 -198 stone"], "commands_executed": ["setblock -210 70 -205 stone", "setblock -210 70 -204 stone", "setblock -210 70 -203 stone", "setblock -210 70 -202 stone", "setblock -210 70 -201 stone", "setblock -210 70 -200 stone", "setblock -210 70 -199 stone", "setblock -210 70 -198 stone"], "message": ""}, "rcon_results": [["setblock -210 70 -205 stone", "Changed the block at -210, 70, -205"], ["setblock -210 70 -204 stone", "Changed the block at -210, 70, -204"], ["setblock -210 70 -203 stone", "Changed the block at -210, 70, -203"], ["setblock -210 70 -202 stone", "Changed the block at -210, 70, -202"], ["setblock -210 70 -201 stone", "Changed the block at -210, 70, -201"], ["setblock -210 70 -200 stone", "Changed the block at -210, 70, -200"], ["setblock -210 70 -199 stone", "Changed the block at -210, 70, -199"], ["setblock -210 70 -198 stone", "Changed the block at -210, 70, -198"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T21:57:01Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo do 200 more", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08"], "player_position": {"x": -212, "y": 68, "z": -191}}}, "output": {"commands_generated": ["setblock -214 70 -203 stone", "setblock -214 70 -202 stone", "setblock -214 70 -201 stone", "setblock -214 70 -200 stone", "setblock -214 70 -199 stone", "setblock -214 70 -198 stone", "setblock -214 70 -197 stone", "setblock -214 70 -196 stone"], "commands_executed": ["setblock -214 70 -203 stone", "setblock -214 70 -202 stone", "setblock -214 70 -201 stone", "setblock -214 70 -200 stone", "setblock -214 70 -199 stone", "setblock -214 70 -198 stone", "setblock -214 70 -197 stone", "setblock -214 70 -196 stone"], "message": ""}, "rcon_results": [["setblock -214 70 -203 stone", "Changed the block at -214, 70, -203"], ["setblock -214 70 -202 stone", "Changed the block at -214, 70, -202"], ["setblock -214 70 -201 stone", "Changed the block at -214, 70, -201"], ["setblock -214 70 -200 stone", "Changed the block at -214, 70, -200"], ["setblock -214 70 -199 stone", "Changed the block at -214, 70, -199"], ["setblock -214 70 -198 stone", "Changed the block at -214, 70, -198"], ["setblock -214 70 -197 stone", "Changed the block at -214, 70, -197"], ["setblock -214 70 -196 stone", "Changed the block at -214, 70, -196"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T21:57:22Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo but try to do all 200 at a time", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08"], "player_position": {"x": -210, "y": 69, "z": -195}}}, "output": {"commands_generated": ["fill ~-10 ~0 ~-10 ~10 ~5 ~10 stone"], "commands_executed": ["fill ~-10 ~0 ~-10 ~10 ~5 ~10 stone"], "message": ""}, "rcon_results": [["fill ~-10 ~0 ~-10 ~10 ~5 ~10 stone", "Successfully filled 2646 block(s)"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:54:04Z", "source": "live_playtest", "category": "command_gen", "mode": "god", "player": "ZeroInjustice", "player_is_admin": false, "input": {"user_message": "pray save me", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["ZeroInjustice"], "player_details": {"ZeroInjustice": {"pos": "x=8, y=62, z=6 (10 blocks from spawn)"}}, "time_of_day": "afternoon", "weather": "clear", "world_border": 1000.0, "player_position": {"x": 47, "y": 62, "z": 59}}}, "output": {"commands_generated": ["effect give ZeroInjustice minecraft:regeneration 5 1", "effect give ZeroInjustice minecraft:absorption 5 0", "give ZeroInjustice minecraft:golden_apple 1 0 {display:{Name:'\"Divine Apple\"'}}", "tellraw ZeroInjustice [{\"text\":\"May the gods grant you strength, traveler.\",\"color\":\"gold\"}]"], "commands_executed": ["effect give ZeroInjustice minecraft:regeneration 5 1", "effect give ZeroInjustice minecraft:absorption 5 0", "give ZeroInjustice minecraft:golden_apple 1 0 {display:{Name:'\"Divine Apple\"'}}", "tellraw ZeroInjustice [{\"text\":\"May the gods grant you strength, traveler.\",\"color\":\"gold\"}]"], "message": "Hear me, mortal. Your plea echoes across the blocks. Though I have woven this world, suffering exists within it. Rise, for I have granted you respite. Strength and sustenance are yours. Yet, remember this: even divine aid is fleeting. Prove yourself worthy of this grace."}, "rcon_results": [], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:54:40Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo give me the strongest bow and 100 arrows", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["ZeroInjustice", "slingshooter08"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -179, "y": 64, "z": -225}}}, "output": {"commands_generated": ["give slingshooter08 bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}]}", "give slingshooter08 arrow 100"], "commands_executed": ["give slingshooter08 bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}]}", "give slingshooter08 minecraft:arrow 100"], "message": ""}, "rcon_results": [["give slingshooter08 bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}]}", "Expected whitespace to end one argument, but found trailing data\n...oter08 bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}]}<--[HERE]"], ["give slingshooter08 minecraft:arrow 100", "Gave 100 [Arrow] to slingshooter08"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:55:18Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo give me the most powerful bow, not sticks", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["ZeroInjustice", "slingshooter08"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -185, "y": 65, "z": -220}}}, "output": {"commands_generated": ["give slingshooter08 bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}],FireworkRocket:1b} 1", "give slingshooter08 arrow 100"], "commands_executed": ["give slingshooter08 minecraft:bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}],FireworkRocket:1b} 1", "give slingshooter08 minecraft:arrow 100"], "message": ""}, "rcon_results": [["give slingshooter08 minecraft:bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}],FireworkRocket:1b} 1", "Expected whitespace to end one argument, but found trailing data\n...ecraft:bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}],FireworkRocket:1b} 1<--[HERE]"], ["give slingshooter08 minecraft:arrow 100", "Gave 100 [Arrow] to slingshooter08"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:56:00Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo give me minecraft:bow", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["ZeroInjustice", "slingshooter08"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -207, "y": 68, "z": -188}}}, "output": {"commands_generated": ["give slingshooter08 minecraft:bow 1"], "commands_executed": ["give slingshooter08 minecraft:bow 1"], "message": ""}, "rcon_results": [["give slingshooter08 minecraft:bow 1", "Gave 1 [Bow] to slingshooter08"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:56:15Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "ZeroInjustice", "player_is_admin": false, "input": {"user_message": "sudo give me a god stick", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["ZeroInjustice", "slingshooter08"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": 69, "y": 64, "z": 88}}}, "output": {"commands_generated": ["give ZeroInjustice stick{Enchantments:[{id:unbreaking,lvl:3},{id:knockback,lvl:2},{id:fire_aspect,lvl:2}],Lore:[\"\\\"God Stick\\\"\"]}", "effect ZeroInjustice resistance 1000000 255 true", "effect ZeroInjustice speed 1000000 255 true", "effect ZeroInjustice jump_boost 1000000 255 true"], "commands_executed": ["give ZeroInjustice minecraft:stick{Enchantments:[{id:unbreaking,lvl:3},{id:knockback,lvl:2},{id:fire_aspect,lvl:2}],Lore:[\"\\\"God Stick\\\"\"]}", "effect ZeroInjustice resistance 1000000 255 true", "effect ZeroInjustice speed 1000000 255 true", "effect ZeroInjustice jump_boost 1000000 255 true"], "message": ""}, "rcon_results": [["give ZeroInjustice minecraft:stick{Enchantments:[{id:unbreaking,lvl:3},{id:knockback,lvl:2},{id:fire_aspect,lvl:2}],Lore:[\"\\\"God Stick\\\"\"]}", "Expected whitespace to end one argument, but found trailing data\n...raft:stick{Enchantments:[{id:unbreaking,lvl:3},{id:knockback,lvl:2},{id:fire_aspect,lvl:2}],Lore:[\"\\\"God Stick\\\"\"]}<--[HERE]"], ["effect ZeroInjustice resistance 1000000 255 true", "Incorrect argument for command\neffect ZeroInjustice resistance 1000000 255 true<--[HERE]"], ["effect ZeroInjustice speed 1000000 255 true", "Incorrect argument for command\neffect ZeroInjustice speed 1000000 255 true<--[HERE]"], ["effect ZeroInjustice jump_boost 1000000 255 true", "Incorrect argument for command\neffect ZeroInjustice jump_boost 1000000 255 true<--[HERE]"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:56:26Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo give me minecraft:bow with the strongest enchantments", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["ZeroInjustice", "slingshooter08"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -209, "y": 70, "z": -209}}}, "output": {"commands_generated": ["give slingshooter08 minecraft:bow{Enchantments:[{id:power,lvl:5},{id:punch,lvl:5},{id:flame,lvl:1},{id:unbreaking,lvl:3}],Lore:[\"\\\"Strongest Bow\\\"\"]} 1", "give slingshooter08 minecraft:arrow 100"], "commands_executed": ["give slingshooter08 minecraft:bow[enchantments={power:5,punch:5,flame:1,unbreaking:3}] 1", "give slingshooter08 minecraft:arrow 100"], "message": ""}, "rcon_results": [["give slingshooter08 minecraft:bow[enchantments={power:5,punch:5,flame:1,unbreaking:3}] 1", "Gave 1 [Bow] to slingshooter08"], ["give slingshooter08 minecraft:arrow 100", "Gave 100 [Arrow] to slingshooter08"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:56:35Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo tp the two players together", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["ZeroInjustice", "slingshooter08"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": 68, "y": 64, "z": 88}}}, "output": {"commands_generated": ["execute at slingshooter08 run tp slingshooter08 ZeroInjustice"], "commands_executed": ["execute at slingshooter08 run tp slingshooter08 ZeroInjustice"], "message": ""}, "rcon_results": [["execute at slingshooter08 run tp slingshooter08 ZeroInjustice", "Teleported slingshooter08 to ZeroInjustice"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:57:16Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo give me the best armor", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["ZeroInjustice", "slingshooter08"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": 61, "y": 63, "z": 80}}}, "output": {"commands_generated": ["give slingshooter08 minecraft:diamond_helmet{Enchantments:[{id:protection,lvl:4},{id:unbreaking,lvl:3}]} 1", "give slingshooter08 minecraft:diamond_chestplate{Enchantments:[{id:protection,lvl:4},{id:unbreaking,lvl:3}]} 1", "give slingshooter08 minecraft:diamond_leggings{Enchantments:[{id:protection,lvl:4},{id:unbreaking,lvl:3}]} 1", "give slingshooter08 minecraft:diamond_boots{Enchantments:[{id:protection,lvl:4},{id:unbreaking,lvl:3}]} 1"], "commands_executed": ["give slingshooter08 minecraft:diamond_helmet[enchantments={protection:4,unbreaking:3}] 1", "give slingshooter08 minecraft:diamond_chestplate[enchantments={protection:4,unbreaking:3}] 1", "give slingshooter08 minecraft:diamond_leggings[enchantments={protection:4,unbreaking:3}] 1", "give slingshooter08 minecraft:diamond_boots[enchantments={protection:4,unbreaking:3}] 1"], "message": ""}, "rcon_results": [["give slingshooter08 minecraft:diamond_helmet[enchantments={protection:4,unbreaking:3}] 1", "Gave 1 [Diamond Helmet] to slingshooter08"], ["give slingshooter08 minecraft:diamond_chestplate[enchantments={protection:4,unbreaking:3}] 1", "Gave 1 [Diamond Chestplate] to slingshooter08"], ["give slingshooter08 minecraft:diamond_leggings[enchantments={protection:4,unbreaking:3}] 1", "Gave 1 [Diamond Leggings] to slingshooter08"], ["give slingshooter08 minecraft:diamond_boots[enchantments={protection:4,unbreaking:3}] 1", "Gave 1 [Diamond Boots] to slingshooter08"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:57:44Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo tp me to the other player", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08", "ZeroInjustice"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -146, "y": 96, "z": -211}}}, "output": {"commands_generated": ["tp slingshooter08 ZeroInjustice"], "commands_executed": ["tp slingshooter08 ZeroInjustice"], "message": ""}, "rcon_results": [["tp slingshooter08 ZeroInjustice", "Teleported slingshooter08 to ZeroInjustice"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:58:44Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "ZeroInjustice", "player_is_admin": false, "input": {"user_message": "sudo give me a fire charge", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08", "ZeroInjustice"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -143, "y": 76, "z": -214}}}, "output": {"commands_generated": ["give ZeroInjustice fire_charge 1"], "commands_executed": ["give ZeroInjustice minecraft:fire_charge 1"], "message": ""}, "rcon_results": [["give ZeroInjustice minecraft:fire_charge 1", "Gave 1 [Fire Charge] to ZeroInjustice"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:59:02Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "ZeroInjustice", "player_is_admin": false, "input": {"user_message": "sudo give me a firework", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08", "ZeroInjustice"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -143, "y": 76, "z": -214}}}, "output": {"commands_generated": ["give ZeroInjustice firework_rocket 1"], "commands_executed": ["give ZeroInjustice minecraft:firework_rocket 1"], "message": ""}, "rcon_results": [["give ZeroInjustice minecraft:firework_rocket 1", "Gave 1 [Firework Rocket] to ZeroInjustice"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:59:12Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "slingshooter08", "player_is_admin": true, "input": {"user_message": "sudo make the other player float", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08", "ZeroInjustice"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -140, "y": 96, "z": -218}}}, "output": {"commands_generated": ["summon fireball ~ ~10 ~ {Power:[0,1,0],ExplosionPower:0}"], "commands_executed": ["summon fireball ~ ~10 ~ {Power:[0,1,0],ExplosionPower:0}"], "message": ""}, "rcon_results": [["summon fireball ~ ~10 ~ {Power:[0,1,0],ExplosionPower:0}", "Summoned new Fireball"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-19T23:59:26Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "ZeroInjustice", "player_is_admin": false, "input": {"user_message": "sudo give me a fire bow", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08", "ZeroInjustice"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -143, "y": 76, "z": -214}}}, "output": {"commands_generated": ["give ZeroInjustice bow{Enchantments:[{id:flame,lvl:1},{id:unbreaking,lvl:3}],Lore:[\"\\\"Fire Bow\\\"\"]} 1"], "commands_executed": ["give ZeroInjustice minecraft:bow[enchantments={flame:1,unbreaking:3}] 1"], "message": ""}, "rcon_results": [["give ZeroInjustice minecraft:bow[enchantments={flame:1,unbreaking:3}] 1", "Gave 1 [Bow] to ZeroInjustice"]], "needs_review": true}
|
||||
{"timestamp": "2026-03-20T00:00:06Z", "source": "live_playtest", "category": "command_gen", "mode": "sudo", "player": "ZeroInjustice", "player_is_admin": false, "input": {"user_message": "sudo tp me to a jungle temple", "server_context": {"server_type": "paper", "version": "1.21.x", "online_players": ["slingshooter08", "ZeroInjustice"], "player_details": {}, "time_of_day": "unknown", "weather": "unknown", "world_border": null, "player_position": {"x": -140, "y": 147, "z": -227}}}, "output": {"commands_generated": ["execute at ZeroInjustice run tp ZeroInjustice ~ ~100 ~"], "commands_executed": ["execute at ZeroInjustice run tp ZeroInjustice ~ ~100 ~"], "message": ""}, "rcon_results": [["execute at ZeroInjustice run tp ZeroInjustice ~ ~100 ~", "Teleported ZeroInjustice to -140.681114, 163.000000, -227.129601"]], "needs_review": true}
|
||||
|
||||
@@ -0,0 +1,195 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>Typodermic Fonts Inc. Freeware Font instructions 2014</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
margin:30px 20% 120px 20%;
|
||||
padding:0px;
|
||||
font-family:Consolas, Courier, sans-serif;
|
||||
color:#4c4b44;
|
||||
background-color:#c2c1b3;
|
||||
|
||||
/* IE10 Consumer Preview */
|
||||
background-image: -ms-linear-gradient(top left, #DEDDD6 0%, #9D9B87 100%);
|
||||
|
||||
/* Mozilla Firefox */
|
||||
background-image: -moz-linear-gradient(top left, #DEDDD6 0%, #9D9B87 100%);
|
||||
|
||||
/* Opera */
|
||||
background-image: -o-linear-gradient(top left, #DEDDD6 0%, #9D9B87 100%);
|
||||
|
||||
/* Webkit (Safari/Chrome 10) */
|
||||
background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0, #DEDDD6), color-stop(1, #9D9B87));
|
||||
|
||||
/* Webkit (Chrome 11+) */
|
||||
background-image: -webkit-linear-gradient(top left, #DEDDD6 0%, #9D9B87 100%);
|
||||
|
||||
/* W3C Markup, IE10 Release Preview */
|
||||
background-image: linear-gradient(to bottom right, #DEDDD6 0%, #9D9B87 100%);
|
||||
|
||||
}
|
||||
h2 {color:#6d6c61;}
|
||||
a {color:#8f5b54;}
|
||||
a:hover {color:#ffffff; background-color:#9a998c;}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<svg width="350px" height="30px">
|
||||
<path fill="#69685D" d="M0,4.006L0.554,0h20.674l-0.553,4.006l-2.559,2.772h-4.688l-0.682,4.816l-2.515,3.026l1.663,3.07
|
||||
l-1.62,11.594H4.987l-1.448-1.79l2.94-20.716H1.791L0,4.006z"/>
|
||||
<path fill="#69685D" d="M35.8,0h5.285l1.408,1.791l-1.876,13.343l-2.515,3.111h-4.264l-1.534,11.04h-5.286l-1.449-1.79l1.322-9.25
|
||||
h-4.263l-1.705-3.111l1.875-13.343L24.76,0h5.242l-1.706,12.064h5.799L35.8,0z"/>
|
||||
<path fill="#69685D" d="M62.09,0l2.899,3.453L63.412,14.58l-3.496,3.962h-9.805l-1.491,10.742h-5.244l-1.493-1.79l3.625-25.704
|
||||
L47.469,0H62.09z M50.965,12.362h5.797l0.81-5.583h-5.799L50.965,12.362z"/>
|
||||
<path fill="#69685D" d="M64.256,26.642l3.367-24.041L70.523,0h14.664l2.132,2.601l-3.368,24.041l-2.856,2.643H66.431L64.256,26.642
|
||||
z M73.335,11.595l-2.514,3.026l1.663,3.07l-0.683,4.816H77.6l0.68-4.816l2.516-3.07l-1.663-3.026l0.681-4.816h-5.796L73.335,11.595
|
||||
z"/>
|
||||
<path fill="#69685D" d="M86.926,29.285L91.017,0h15.518l3.581,4.307l-2.899,20.673l-4.774,4.305H86.926z M96.345,11.595
|
||||
l-2.515,3.026l1.664,3.07l-0.683,4.816h5.798l0.681-4.816l2.516-3.07l-1.663-3.026l0.681-4.816h-5.796L96.345,11.595z"/>
|
||||
<path fill="#69685D" d="M127.114,29.285h-15.473l-1.492-1.79l3.624-25.704L115.731,0h15.389l-0.554,4.006l-2.557,2.772h-7.971
|
||||
l-0.684,4.816h6.906l1.662,3.026l-2.515,3.111h-6.905l-0.683,4.775h8.057l1.791,2.771L127.114,29.285z"/>
|
||||
<path fill="#69685D" d="M150.21,0l2.898,3.453l-1.405,9.977l-3.881,3.452l2.217,10.613l-1.748,1.79h-4.944l-2.387-11.553h-2.6
|
||||
l-1.622,11.553h-5.241l-1.493-1.79l3.624-25.704L135.588,0H150.21z M145.691,6.779h-5.796l-0.683,4.816h5.799L145.691,6.779z"/>
|
||||
<path fill="#69685D" d="M159.92,29.285h-5.242l-1.492-1.79l3.41-24.042L160.432,0h21.911l2.897,3.453l-3.409,24.042l-1.876,1.79
|
||||
h-5.284l1.617-11.594l2.517-3.07l-1.662-3.026l0.681-4.816h-4.092l-3.154,22.506h-6.522l3.155-22.506h-4.134l-0.683,4.816
|
||||
l-2.515,3.026l1.663,3.07L159.92,29.285z"/>
|
||||
<path fill="#69685D" d="M191.879,29.285h-5.244l-1.492-1.79l3.624-25.704L190.728,0h5.242l-1.619,11.595l-2.516,3.026l1.663,3.07
|
||||
L191.879,29.285z"/>
|
||||
<path fill="#69685D" d="M213.018,25.279l-0.554,4.006h-13.854l-2.899-3.494l3.156-22.338L202.702,0h13.854l-0.555,4.006
|
||||
l-2.558,2.772h-8.1l-0.683,4.816l-2.515,3.026l1.663,3.07l-0.683,4.816h8.1L213.018,25.279z"/>
|
||||
<path fill="#69685D" d="M226.007,29.285l-1.492-1.79l3.624-25.704L230.1,0h15.473l-0.554,4.006l-2.557,2.772h-8.058l-0.724,5.115
|
||||
h6.818l1.664,3.07l-2.557,3.11h-6.82l-1.535,11.211H226.007z"/>
|
||||
<path fill="#69685D" d="M243.903,26.642l3.368-24.041L250.17,0h14.663l2.131,2.601l-3.367,24.041l-2.855,2.643h-14.664
|
||||
L243.903,26.642z M252.983,11.595l-2.516,3.026l1.662,3.07l-0.681,4.816h5.796l0.684-4.816l2.515-3.07l-1.664-3.026l0.684-4.816
|
||||
h-5.798L252.983,11.595z"/>
|
||||
<path fill="#69685D" d="M280.639,19.822l-4.731-7.758l-2.516,3.069l1.662,3.069l-1.533,11.082h-5.244l-1.493-1.79l3.626-25.704
|
||||
L272.37,0h4.773l4.902,9.677L283.41,0h5.285l1.407,1.791l-3.623,25.704l-1.877,1.79h-5.285L280.639,19.822z"/>
|
||||
<path fill="#69685D" d="M291.926,4.006L292.48,0h20.674l-0.554,4.006l-2.557,2.772h-4.691l-0.681,4.816l-2.516,3.026l1.664,3.07
|
||||
l-1.621,11.594h-5.285l-1.451-1.79l2.942-20.716h-4.689L291.926,4.006z"/>
|
||||
<path fill="#69685D" d="M325.168,17.478h-9.209l-2.387-3.923l1.45-10.102L318.857,0h14.452l-0.682,4.86l-1.621,1.918h-9.506
|
||||
l-0.64,4.561h9.208l2.388,3.878l-1.493,10.572l-3.836,3.494h-14.579l-1.107-1.917l0.682-4.86h12.362L325.168,17.478z"/>
|
||||
</svg>
|
||||
|
||||
<br>
|
||||
|
||||
<p translate="no">
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=de&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhivq6___mill12Uw6fPvMWyJxstkw">Deutsch</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=es&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhjAt3cpinDeMTX6Ro8UcZFqaE8K5Q">Español</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=fr&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhjObLPhFyyhwigF-dBoOZ3eXYdDsw">Français</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=ar&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhg2hs-st3zodt-AjmoeuPHfyJsTEg">العربية</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=zh-CN&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhiilVnjG1Ks0DN7UyRqbKExhxAT-Q">中国简体</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=zh-TW&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhiSCPRAYToARlHI4kxIK9eCIFKQhw">簡體字</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=cs&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhj3z2HOOmCXLT-ApYW2SCeBvTGvTA">Čeština</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=el&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhhoORG-43TvZ2NVrll3T0oyOZE0VA">Ελληνικά</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=iw&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhiP4kLXdDxVNuV6-9tHJ8Tbt-1xKw">עִבְרִית</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=hi&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhhJmUufReWrMTSaGKPPOqV7q5jpGQ">हिन्दी</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=hu&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhgfcL_UwP3jkr6Vvq35rkhETFuTug">Magyar</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=is&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhjpK9lELyRP50Vv3RNgqCJDb6d-GQ">Íslenska</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=id&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhiExV3gmyXBUVqcwNiGiUWQSRrgIQ">Indonesia</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=it&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhgMr2_uulaLYRSFz8C34rtcbN6XEg">Italiano</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=ko&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhhl_nNXiOMIiBERq879UXH1XYfZGw">한국말</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&ie=UTF8&prev=_t&sl=en&tl=ja&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhi2FvSFgSUub72-Sq2moIRAosCiLA">日本語</a>
|
||||
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=no&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhhnf9AGd5hfxwA04e1w-tfYPha1ww">Norsk</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=pl&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhjZTe5eJRrZffLe0zgqEHPrMb8pOQ">Język Polski</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=pt-BR&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhg-zp3i6AcZCv02ONjZ5YvkcCFDBw">Português</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=pa&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhhPEMoYvW59_DJT7y6fxgG2IMh23A">ਪੰਜਾਬੀ</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=ro&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhgD0R8zxuQQh-YmFpQTJdvjhAYm2A">Română</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=ru&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhgI6c7Pd-FCcipT4xc2NPTefj5JJg">Русский</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=sv&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhhA8gW_-rjCbZQ5TK46zFMB3_StEQ">Svenska</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=ta&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhiwxxCEPzu3pHBXP-fbTZaOzYqe3g">தமிழ்</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=th&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhjP1N1DRUB1M81k5mi5KnRtt5C2-Q">ภาษาไทย</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=tr&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhiTYbD039OWznCcGyQnMy89_v-1gA">Türkçe</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=uk&u=http%3A%2F%2Ftypodermicfonts.com%2Fwp-content%2Fuploads%2F2014%2F02%2Fread-this.html">Українська мова</a>
|
||||
<a href="http://translate.google.com/translate?hl=en&sl=en&tl=vi&u=http://typodermicfonts.com/wp-content/uploads/2014/02/read-this.html&sandbox=0&usg=ALkJrhirTQPOLCZognLpxOvJQT_158y07A">Tiếng Việt</a>
|
||||
</p>
|
||||
|
||||
|
||||
<p>Thanks for downloading a free font from <span translate="no">Typodermic Fonts Inc.</span> This font is <em>free for commercial use</em>. Read the attached license agreement for details.</p>
|
||||
|
||||
|
||||
<h2>Installation</h2>
|
||||
|
||||
<ul>
|
||||
<li>Windows 8/7/Vista: Get the font out of the ZIP. Right-click on the font and <em>Install</em>
|
||||
<li>Windows XP: Get the font out of the ZIP. Put it into <cite translate="no">Start Menu/Control Panel/Appearance and Themes/Fonts</cite>
|
||||
<li>Mac OS X: Get the font out of the ZIP. Put it into <cite translate="no">/Library/Fonts</cite> or <cite translate="no">/Users/Your_username/Library/Fonts</cite>
|
||||
<li>Mac OS X 10.3 or above: Double-click the font file and <em>Install font</em>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2>Allowed</h2>
|
||||
|
||||
<ul>
|
||||
<li>art
|
||||
<li>sign
|
||||
<li>poster
|
||||
<li>banner
|
||||
<li>book
|
||||
<li>business card
|
||||
<li>album
|
||||
<li>movie
|
||||
<li>television
|
||||
<li>logo
|
||||
<li>trademarked logo
|
||||
<li>clothing
|
||||
<li>sticker
|
||||
<li>stamp
|
||||
<li>product label
|
||||
<li>web page (not embedded)
|
||||
<li>app (not embedded)
|
||||
<li>PDF (not editable)
|
||||
</ul>
|
||||
|
||||
<h2>Not allowed</h2>
|
||||
|
||||
<ul>
|
||||
<li>ebook
|
||||
<li>app (embedded)
|
||||
<li>web page (embedded)
|
||||
<li>product creation platform
|
||||
<li>alphabet stamps
|
||||
<li>advertisment server
|
||||
<li>web template
|
||||
<li>PDF (editable)
|
||||
<li>OEM
|
||||
<li>device embedding
|
||||
</ul>
|
||||
|
||||
<p>It’s easy to get a different license agreement. Read the <a href="http://typodermicfonts.com/custom/">this page</a> for details.</p>
|
||||
|
||||
<h2>Other styles</h2>
|
||||
|
||||
<p>Many of my free fonts have other styles available. Please visit <a href="http://typodermicfonts.com">Typodermic Fonts</a> and search for the name of this font in the search bar.</p>
|
||||
|
||||
|
||||
<h2>About me</h2>
|
||||
|
||||
<p>My name is <span translate="no">Ray Larabie</span> and I’ve been creating fonts since 1996.</p>
|
||||
|
||||
<p>Please visit <a href="http://typodermicfonts.com">typodermicfonts.com</a> to find out more.</p>
|
||||
|
||||
<p translate="no"><a href="https://www.facebook.com/pages/Typodermic-Fonts/7153899975">Facebook</a></p>
|
||||
<p translate="no"><a href="http://about.me/raylarabie/#">About.me</a></p>
|
||||
<p translate="no"><p><a href="https://twitter.com/typodermic">Twitter</a></p>
|
||||
<p translate="no"><p><a href="http://www.pinterest.com/plywood747/">Pinterest</a></p>
|
||||
|
||||
</body>
|
||||
@@ -25,7 +25,7 @@ SERVERS = [
|
||||
|
||||
WHITELIST_LOG = "/var/log/mc_whitelist.log"
|
||||
|
||||
LOGO_URL = "https://storage.googleapis.com/sethfreiberg.com/sethflix/favicon.png"
|
||||
LOGO_URL = "https://git.sethpc.xyz/Seth/Mortdecai/raw/branch/master/branding/mortdec_ai_rajdhani.png"
|
||||
|
||||
|
||||
def rcon_command(cmd, host, port, password):
|
||||
@@ -54,11 +54,65 @@ def rcon_command(cmd, host, port, password):
|
||||
return f"ERROR: {e}"
|
||||
|
||||
|
||||
def lookup_mojang_uuid(username):
|
||||
"""Look up a player's real Mojang UUID from the API."""
|
||||
try:
|
||||
import urllib.request
|
||||
url = f"https://api.mojang.com/users/profiles/minecraft/{username}"
|
||||
req = urllib.request.Request(url, headers={"User-Agent": "MortdecaiWhitelist/1.0"})
|
||||
resp = urllib.request.urlopen(req, timeout=5)
|
||||
data = json.loads(resp.read())
|
||||
raw = data.get("id", "")
|
||||
if len(raw) == 32:
|
||||
# Format as UUID with dashes
|
||||
return f"{raw[:8]}-{raw[8:12]}-{raw[12:16]}-{raw[16:20]}-{raw[20:]}"
|
||||
return raw
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
|
||||
def whitelist_player(username):
|
||||
"""Whitelist player on all servers, fixing UUIDs to real Mojang UUIDs."""
|
||||
results = {}
|
||||
|
||||
# Get real UUID from Mojang
|
||||
uuid = lookup_mojang_uuid(username)
|
||||
|
||||
for srv in SERVERS:
|
||||
# RCON whitelist add (creates entry, possibly with wrong offline UUID)
|
||||
result = rcon_command(f"whitelist add {username}", srv["host"], srv["rcon_port"], srv["rcon_pass"])
|
||||
results[srv["name"]] = result.strip()
|
||||
|
||||
# Fix UUIDs in whitelist.json files directly
|
||||
if uuid:
|
||||
WHITELIST_FILES = [
|
||||
"/opt/paper-ai-25567/whitelist.json",
|
||||
"/opt/mcsmanager/daemon/data/InstanceData/shrinkborder1234567890abcdef12345/whitelist.json",
|
||||
"/opt/mcsmanager/daemon/data/InstanceData/d39f55861cb34204a92a18a9e1c78ca6/whitelist.json",
|
||||
]
|
||||
for wl_path in WHITELIST_FILES:
|
||||
try:
|
||||
with open(wl_path) as f:
|
||||
wl = json.load(f)
|
||||
changed = False
|
||||
for entry in wl:
|
||||
if entry["name"].lower() == username.lower() and entry["uuid"] != uuid:
|
||||
entry["uuid"] = uuid
|
||||
entry["name"] = username
|
||||
changed = True
|
||||
if changed:
|
||||
with open(wl_path, "w") as f:
|
||||
json.dump(wl, f, indent=2)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Reload whitelists
|
||||
for srv in SERVERS:
|
||||
try:
|
||||
rcon_command("whitelist reload", srv["host"], srv["rcon_port"], srv["rcon_pass"])
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
return results
|
||||
|
||||
|
||||
@@ -71,7 +125,7 @@ PAGE = """<!DOCTYPE html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Minecraft AI Server — sethpc.xyz</title>
|
||||
<title>Mortdecai — Minecraft AI</title>
|
||||
<style>
|
||||
* {{ margin: 0; padding: 0; box-sizing: border-box; }}
|
||||
body {{ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
||||
@@ -80,8 +134,8 @@ PAGE = """<!DOCTYPE html>
|
||||
a:hover {{ color: #e65c00; }}
|
||||
|
||||
.header {{ background: #000; padding: 1rem; text-align: center; border-bottom: 2px solid #D35400; }}
|
||||
.header img {{ width: 40px; vertical-align: middle; border: none; }}
|
||||
.header span {{ font-size: 1.2rem; font-weight: 700; color: #D35400; margin-left: 0.5rem; vertical-align: middle; }}
|
||||
.header img {{ height: 40px; vertical-align: middle; border: none; }}
|
||||
.header span {{ font-size: 1.2rem; font-weight: 700; color: #D35400; margin-left: 0.5rem; vertical-align: middle; display: none; }}
|
||||
|
||||
.container {{ max-width: 600px; margin: 0 auto; padding: 1.5rem; }}
|
||||
|
||||
@@ -137,12 +191,12 @@ PAGE = """<!DOCTYPE html>
|
||||
|
||||
<div class="header">
|
||||
<img src="{logo}" alt="logo" class="noborder">
|
||||
<span>sethpc.xyz</span>
|
||||
<span>mortdec.ai</span>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="hero">
|
||||
<h1>Minecraft AI Server</h1>
|
||||
<h1>Mortdecai</h1>
|
||||
<p>An AI runs on this server that listens to in-game chat and does things in the world based on what you say.</p>
|
||||
</div>
|
||||
|
||||
|
||||