<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Mojangcam (English)</title><description>A hands-on dev and IT log: code I write, servers I run, and the errors I fix along the way.</description><link>https://blog.jhproject.cloud/</link><language>en</language><item><title>Building a Minecraft Server with an AI Team #5 - Running the Dev Team with a Discord Bot! Decision Forum, Command List &amp; Resource Pack Channel 🤝</title><link>https://blog.jhproject.cloud/en/posts/ai-mc-server-05-discord-ops/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/ai-mc-server-05-discord-ops/</guid><description>How people and an AI dev team trade decisions on Discord: channel roles, forum tags, command forums, a latest-only resource pack channel, and no deletes.</description><pubDate>Wed, 30 Sep 2026 03:04:00 GMT</pubDate><category>Discord bot</category><category>Discord API</category><category>Discord forum</category><category>Minecraft server admin</category><category>python-dotenv</category><category>requests</category><category>AI agents</category><category>Building a Minecraft Server with an AI Team</category></item><item><title>Building a Minecraft Server with an AI Team #4 - A Resource Pack Pipeline Where ChatGPT Draws and Claude Reviews! 🎨</title><link>https://blog.jhproject.cloud/en/posts/ai-mc-server-04-art-pipeline/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/ai-mc-server-04-art-pipeline/</guid><description>ChatGPT draws the GUIs, icons, and weapons; Claude checks specs and merges the resource pack. Plus 5 bugs the review caught before they hit the game.</description><pubDate>Wed, 30 Sep 2026 03:03:00 GMT</pubDate><category>Minecraft resource pack</category><category>Resource pack tutorial</category><category>Custom GUI</category><category>item_model</category><category>Bow pulling model</category><category>ChatGPT</category><category>Claude</category><category>Building a Minecraft Server with an AI Team</category></item><item><title>Building a Minecraft Server with an AI Team #3 - Numbers ×10, a 12-Hour XP Curve, and Simulating 6 Classes! 📊</title><link>https://blog.jhproject.cloud/en/posts/ai-mc-server-03-balance/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/ai-mc-server-03-balance/</guid><description>How I scaled a Minecraft MMORPG server&apos;s HP and damage 10x (keeping admin edits), built a 12-hour 1→30 XP curve, and what simulating 6 classes revealed.</description><pubDate>Wed, 30 Sep 2026 03:02:00 GMT</pubDate><category>Minecraft server</category><category>RPG balancing</category><category>XP curve</category><category>Damage formula</category><category>Simulation</category><category>Game design</category><category>Building a Minecraft Server with an AI Team</category></item><item><title>Building a Minecraft Server with an AI Team #2 - 13 Modules in One Plugin! The Core Structure and the &apos;1000029 Damage&apos; Incident 🧩</title><link>https://blog.jhproject.cloud/en/posts/ai-mc-server-02-core-modules/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/ai-mc-server-02-core-modules/</guid><description>A Paper plugin jar holding core plus 13 modules, a permission name that disabled entire modules, and why killing a mob showed 1000029 damage, with the fix.</description><pubDate>Wed, 30 Sep 2026 03:01:00 GMT</pubDate><category>Minecraft plugin</category><category>Paper</category><category>PaperMC</category><category>Plugin architecture</category><category>Modular design</category><category>Custom health system</category><category>Hot reload</category><category>Building a Minecraft Server with an AI Team</category></item><item><title>Building a Minecraft Server with an AI Team #1 - 1 AI Team Lead + 15 Team Members Building an MMORPG Plugin! 🤖</title><link>https://blog.jhproject.cloud/en/posts/ai-mc-server-01-ai-team/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/ai-mc-server-01-ai-team/</guid><description>How I build 13 Minecraft MMORPG plugins solo: Claude as team lead, 15 scheduled tasks as the team. Orders, reports, merge rules, and real problems I hit.</description><pubDate>Wed, 30 Sep 2026 03:00:00 GMT</pubDate><category>Minecraft server</category><category>Minecraft plugin</category><category>Paper</category><category>Claude</category><category>AI agents</category><category>Scheduled tasks</category><category>git worktree</category><category>Building a Minecraft Server with an AI Team</category></item><item><title>Discord API Changes for Bot Developers, September 2026 - 20 MiB Files, Multi-line Slash Command Input, Age Assurance, Invite Target Users, Required shard, and How to Handle Them with discord.py 2.7.1 (Python Examples) 🗞️</title><link>https://blog.jhproject.cloud/en/posts/discord-api-changes-2026-09/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-api-changes-2026-09/</guid><description>September 2026 Discord API changes for bot devs: 20 MiB uploads, multi-line slash options, Age Assurance, invite target users, and required shard, in discord.py 2.7.1.</description><pubDate>Wed, 30 Sep 2026 01:26:00 GMT</pubDate><category>Discord API changes</category><category>discord.py</category><category>Age Assurance</category><category>slash commands</category><category>Discord bot</category><category>file upload limit</category><category>invite links</category><category>sharding</category><category>Python examples</category></item><item><title>Discord Bot Tutorial #32 - Build a Server Log &amp; Audit Log Channel! Auto-Log Message Deletes, Edits, Joins/Leaves, and Kicks (Python Example) 🕵️</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-32-audit-log/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-32-audit-log/</guid><description>Build a Discord log bot with discord.py 2.x that records deleted message content, who deleted it, joins/leaves, role changes, kicks and bans as embeds.</description><pubDate>Sat, 26 Sep 2026 00:00:00 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>Discord log bot</category><category>audit log</category><category>Discord moderation</category><category>message delete log</category><category>on_audit_log_entry_create</category></item><item><title>Claude Opus 5.5 Is Here! Claude Code&apos;s New Default Model and a 20% Price Cut - What Changed from Opus 5 and the Settings to Update Now 🚀</title><link>https://blog.jhproject.cloud/en/posts/claude-opus-5-5-release/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/claude-opus-5-5-release/</guid><description>Claude Opus 5.5 launched Sept 22 and is Claude Code&apos;s default from v2.1.280, 20% cheaper. What changed from Opus 5, settings to recheck, and API changes.</description><pubDate>Fri, 25 Sep 2026 00:00:00 GMT</pubDate><category>Claude Opus 5.5</category><category>Claude Code</category><category>Claude Code default model</category><category>Opus 5.5 pricing</category><category>Claude Code settings.json</category><category>effort level</category><category>AI coding</category><category>Anthropic</category></item><item><title>Claude Code Model Switching &amp; Effort Settings, Fully Explained - How to Choose Between Opus 5 / Sonnet 5 / Fable 5.1 🎛️</title><link>https://blog.jhproject.cloud/en/posts/claude-code-model-effort-guide/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/claude-code-model-effort-guide/</guid><description>I briefly covered /model and /effort in my Opus 5 post, but searches like &apos;change Claude Code model&apos; keep coming in. So here&apos;s a dedicated guide to both.</description><pubDate>Mon, 21 Sep 2026 08:41:51 GMT</pubDate><category>Claude Code</category><category>Claude Code model</category><category>Claude Code effort</category><category>effort level</category><category>Claude Opus 5</category><category>Claude Sonnet 5</category><category>Claude Fable 5.1</category><category>Claude Code settings.json</category><category>AI coding</category></item><item><title>Python Office Automation #14 - Auto-Generate PowerPoint Reports! Just Change the Excel Numbers and Your Slides Are Done (python-pptx) 📊</title><link>https://blog.jhproject.cloud/en/posts/python-automation-14-powerpoint/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/python-automation-14-powerpoint/</guid><description>Last time, we covered how to automatically upload Excel data to Google Sheets (gspread). Collecting, saving, and sharing data is now all handled by Python.</description><pubDate>Sun, 20 Sep 2026 15:31:03 GMT</pubDate><category>python-pptx</category><category>OpenPyXL</category><category>Python</category><category>Python PowerPoint automation</category><category>create PPT with Python</category><category>python-pptx tutorial</category><category>report automation</category><category>office automation</category><category>Python Excel</category></item><item><title>Discord Bot Tutorial #30 - Build a Poll &amp; Survey Bot! Native Polls + Buttons with Real-Time Tallies (Python Example) 🗳️</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-30-poll/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-30-poll/</guid><description>This episode builds a Discord poll bot in Python, one of the most-used server features, two ways: native polls and button polls with live tallies.</description><pubDate>Fri, 18 Sep 2026 23:52:01 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>Discord poll bot</category><category>Discord poll</category><category>discord.Poll</category><category>button UI</category><category>Python example</category><category>Discord bot tutorial</category></item><item><title>Python 3.15 Final Is 13 Days Away! Check Whether Your Code Will Break - UTF-8 by Default (Goodbye cp949) &amp; Lazy Import Migration Checklist 🐍</title><link>https://blog.jhproject.cloud/en/posts/python-3-15-migration-checklist/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/python-3-15-migration-checklist/</guid><description>Python 3.15 final lands on October 1, 2026, just 13 days away. After covering what&apos;s new in beta 4, rc1, and rc2, this time we check whether your code will break.</description><pubDate>Thu, 17 Sep 2026 23:51:06 GMT</pubDate><category>Python 3.15</category><category>PEP 686</category><category>PEP 810</category><category>lazy import</category><category>UnicodeDecodeError</category><category>cp949</category><category>Python UTF-8 encoding</category><category>Python migration</category><category>Python automation</category></item><item><title>Discord Bot Tutorial #14 - Saving Data! JSON vs SQLite (Python Example)</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-14-json-sqlite/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-14-json-sqlite/</guid><description>In #13, we handed server management to the bot. One catch: data kept only in variables, like #13&apos;s temp_channels, vanishes the moment the bot restarts.</description><pubDate>Thu, 30 Jul 2026 00:05:58 GMT</pubDate><category>discord.py</category><category>Python</category><category>JSON</category><category>SQLite</category><category>Discord bot tutorial</category><category>Discord bot data storage</category><category>Discord attendance bot</category><category>Python SQLite</category><category>Discord points bot</category></item><item><title>Discord Bot Tutorial #13 - Automating Roles and Channels to Manage Your Server! (Python Example)</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-13-role-channel/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-13-role-channel/</guid><description>In #12, we kept the bot safe with cooldowns and permissions. Now let&apos;s hand your server&apos;s repetitive admin chores to the bot with three automations.</description><pubDate>Sat, 25 Jul 2026 00:45:20 GMT</pubDate><category>discord.py</category><category>Python</category><category>on_member_join</category><category>Discord bot tutorial</category><category>Discord auto role</category><category>Discord button roles</category><category>Join to Create voice channel</category><category>Discord server automation</category><category>persistent view</category></item><item><title>Discord Bot Tutorial #12 - Managing Command Cooldowns and Permissions! (Python Example)</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-12-cooldown-permission/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-12-cooldown-permission/</guid><description>In #11, we built a Flask web dashboard to check the bot&apos;s status. The bot has plenty of features now, but put it on a real server and this always happens.</description><pubDate>Mon, 20 Jul 2026 15:03:56 GMT</pubDate><category>discord.py</category><category>app_commands</category><category>Python</category><category>Discord bot tutorial</category><category>Discord bot cooldown</category><category>Discord bot permissions</category><category>slash commands</category><category>Python bot</category><category>Claude Code</category></item><item><title>Discord Bot Tutorial #11 - Building a Web Dashboard with Flask! (Python Example)</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-11-flask-dashboard/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-11-flask-dashboard/</guid><description>Last time we added multi-language (i18n) support to the bot. This time, let&apos;s build a web dashboard for it with Flask! (The cooldown part is coming soon, too.)</description><pubDate>Tue, 14 Jul 2026 23:45:52 GMT</pubDate><category>discord.py</category><category>Flask</category><category>Python</category><category>Discord bot</category><category>web dashboard</category><category>bot monitoring</category><category>Discord bot tutorial</category><category>threading</category><category>automation</category></item><item><title>Discord Bot Tutorial #10 - Adding Multi-Language (i18n) Support! (Python Example)</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-10-i18n/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-10-i18n/</guid><description>Last time we connected AI (Claude &amp; ChatGPT API) to our bot. This time we&apos;ll upgrade it into a global bot with multi-language (i18n) support!</description><pubDate>Thu, 09 Jul 2026 23:50:02 GMT</pubDate><category>discord.py</category><category>Python</category><category>i18n</category><category>Discord bot</category><category>localization</category><category>Translator</category><category>slash commands</category><category>multilingual bot</category><category>Discord bot tutorial</category></item><item><title>Discord Bot Tutorial #9 - Connecting AI (Claude &amp; ChatGPT API) to Your Bot! (Python Example)</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-09-ai-api/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-09-ai-api/</guid><description>Last time we styled bot messages with Embeds. Now let&apos;s add AI to your bot: type /ai with a question and Claude or ChatGPT answers it.</description><pubDate>Wed, 08 Jul 2026 01:39:25 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>Claude API</category><category>ChatGPT API</category><category>AI chatbot</category><category>slash commands</category><category>Python bot</category><category>Discord bot tutorial</category></item><item><title>Discord Bot Tutorial #8 - Styling Embeds with Images and Fields (Python Example)</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-08-embed-image-fields/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-08-embed-image-fields/</guid><description>In Part #7, we collected user input with a Modal. In Part #8, we&apos;ll cover Embeds, which make your bot&apos;s messages look much nicer!</description><pubDate>Mon, 06 Jul 2026 23:53:37 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>Discord embed</category><category>add_field</category><category>embed thumbnail</category><category>slash commands</category><category>Python bot</category><category>Discord bot tutorial</category></item><item><title>Discord Bot Tutorial #7 - Getting User Input with a Modal (Python Example)</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-07-modal/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-07-modal/</guid><description>Buttons and dropdowns only let users pick from preset choices. So what do you do when users need to type their own text freely?</description><pubDate>Mon, 06 Jul 2026 00:01:23 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>Discord modal</category><category>discord.ui.Modal</category><category>TextInput</category><category>suggestion box bot</category><category>Python bot</category><category>Discord bot tutorial</category></item><item><title>Discord Bot Tutorial #6 - Implementing a Dropdown (Select Menu)!</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-06-select-menu/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-06-select-menu/</guid><description>In #5 we learned how to interact with a bot using buttons. This time we&apos;re going one step further and building a dropdown menu (Select Menu)!</description><pubDate>Fri, 03 Jul 2026 22:58:15 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>Select Menu</category><category>Discord dropdown</category><category>discord.ui.Select</category><category>slash command</category><category>Python bot</category><category>Discord bot tutorial</category></item><item><title>Discord Bot Tutorial #5 - Implementing Button Interactions!</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-05-button/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-05-button/</guid><description>Last time in #4 we sent embeds with slash commands. Now let&apos;s add clickable buttons to messages and build a bot that actually reacts when you click them!</description><pubDate>Fri, 03 Jul 2026 02:10:14 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>Discord button</category><category>discord.ui.View</category><category>button interaction</category><category>slash command</category><category>Python bot</category><category>Discord bot tutorial</category></item><item><title>Discord Bot Tutorial #4 - Sending Embeds with Slash Commands!</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-04-slash-embed/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-04-slash-embed/</guid><description>To use slash commands in a Discord bot, use discord.app_commands. intents = discord.Intents.default() bot = commands.Bot(command_prefix=&quot;/&quot;, intents=intents)</description><pubDate>Thu, 17 Apr 2025 16:25:54 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>slash command</category><category>Discord embed</category><category>discord.Embed</category><category>embed message</category><category>Discord bot tutorial</category></item><item><title>Discord Bot Tutorial #3 - Adding Subcommands to Slash Commands!</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-03-subcommand/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-03-subcommand/</guid><description>For example, /user info and /user ban: let&apos;s put several features inside a single command group! We&apos;ll build it with class UserCommandGroup(app_commands.Group) in discord.py.</description><pubDate>Mon, 14 Apr 2025 16:00:55 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>slash command</category><category>subcommand</category><category>command group</category><category>app_commands</category><category>Discord bot tutorial</category></item><item><title>Discord Bot Tutorial #2 - Adding Options (Arguments) to Slash Commands!</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-02-slash-options/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-02-slash-options/</guid><description>This time, let&apos;s build a slash command that takes user input, like /say message:Hello! We&apos;ll use Python and discord.py again. Check out the code below👇</description><pubDate>Mon, 14 Apr 2025 15:00:01 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>slash command</category><category>slash command options</category><category>app_commands</category><category>Discord bot tutorial</category><category>command arguments</category></item><item><title>Discord Bot Tutorial - Mastering Slash Commands!</title><link>https://blog.jhproject.cloud/en/posts/discord-bot-01-slash-command/</link><guid isPermaLink="true">https://blog.jhproject.cloud/en/posts/discord-bot-01-slash-command/</guid><description>Build Discord slash commands (/command) with discord.py. They&apos;re cleaner than text commands, support autocomplete, and are basically a must-have today.</description><pubDate>Mon, 14 Apr 2025 12:33:55 GMT</pubDate><category>discord.py</category><category>Python</category><category>Discord bot</category><category>slash command</category><category>Discord slash commands</category><category>app commands</category><category>Discord bot tutorial</category><category>Python bot</category></item></channel></rss>