Hello all,
Today we are finally releasing a technical update we have been working on for months: our very own in-house Discord linking system with features never before seen in the history of Minecraft multiplayer! While this update will appear to you as a simple but significant improvement to our Discord linking system, its internal workings goes far beyond Discord linking and will lay the foundations for a web-based ecosystem of GunColony-hosted sites and even the account systems of the standalone game.
Note: as announced in the previous update, we will switch our server updates into smaller updates that are released as features are developed and made ready to release, which should help to improve our overall agility of server updates and avoid unnecessary delays. Therefore, this update brings Discord linking as its only player-facing feature.
NEW DISCORD LINKING
This update brings a completely custom-coded Discord linking system to the game, offering unprecedented ease of linking and making it much easier for you to get fully setup in our Discord with the full ability to chat and follow our latest updates.
Starting from this update, you can now link your Minecraft and Discord accounts together through OAuth login, doing away with convoluted steps such as messaging a linking bot. In fact, you can even do it without entering the GunColony server – all you need is to have joined GunColony at least once previously and click a link to login to your Minecraft and Discord accounts and link them together. This update will make our Discord server much more accessible, allowing us to announce events such as special matches in the future and receive significant attendance.
There are now two methods of linking your accounts:
- Direct linking: Click a URL (https://guncolony.io/url/mc-discord-link) in our Discord server and login to your Minecraft and Discord accounts via OAuth2 login to link them instantly.
- In-game linking: In-game, type “/discord link” to generate a URL specific to your Minecraft account. You will then login to your Discord account via OAuth2 login to link your two accounts. This method does not require you to login to your Minecraft account. (Clicking the Discord NPCs at spawn will also give you these instructions.)

If you have an offline account, you can only use the in-game linking method.
The linking rewards currently remain the same as before this update. The rewards are currently hard-coded as it is Minecraft-specific and the Place Engine lacks a generic reward system currently.
NEW WEB THEME
When linking is complete you will receive the following confirmation screen with a new custom-coded animated background:
Error pages will also use the same web theme:
This web theme is completely developed from scratch using our in-house Place Web Framework with features such as atomic CSS and inline content. At GunColony we believe in an extremely fast and responsive user experience, and that includes our web content which is served directly from our network of game servers with full access to ongoing game data. Keeping our page fully inlined and under 14kB (including an embedded font) results in the fastest-possible webpage response time, not to mention stellar server-side rendering performance (~1-2ms per page). The web theme and the infrastructure required to support it took a significant amount of effort to develop and will be expanded upon and used for all of our web-based features going forward.
NEW DISCORD ROLE SYNC LOGIC
We have developed a brand new syncing logic for our Discord roles. Our previous Discord plugin only synchronized roles for players that were online at the time (specifically in our lobby server). We have now written a syncing system with the same behavior but that works regardless of whether the player is offline or online. Of course, like all other parts of this update, the code is written in the Place Engine and is easily transferable to our future standalone game and its future permission group system.
Syncing is done:
- Periodically (the system is currently set to check up to 100 players every minute).
- Whenever players switch servers (not limited to the main server – our servers can now signal each other to trigger role syncing for a player whenever they travel to any server). There is a rate limit to how often player data will be synced with this option.
- When a player newly links their Discord account.
Note: since the Discord syncing system is still new, syncing of staff groups is temporarily disabled and will be re-enabled in the future.
EXISTING PLAYERS HANDLING
All current player links from the previous system have been migrated to the new system. If you already had a linked Discord account, you do not have to do anything and will automatically receive the benefits of Discord linking in the new system, including being able to login to future web-based GunColony features with your Discord account.
However, there were a significant number of cases in the past where players have been unlinked from the server, but retain Discord groups such as “Enlisted” as well as level groups because our previous syncing did not remove groups from these users. These players will now keep the “Enlisted” group (which is specially set to be never removed by our role syncing system) and thus keep the ability to chat in Discord, but will lose their donor / in-game level groups. To regain these groups please link your Minecraft and Discord accounts on the new system.
FUTURE PROOFING
Our new Discord linking system is written with the future in mind. Linking your Discord account now will allow you the ability to login to our future standalone game with the same Discord account and access all of your progress from GunColony upon the game’s release. It will also grant you login access to our future Git-based modding platform and other sites using the same account. This includes players who have linked their accounts before this update as well.
NEW DISCORD NPC
We have added a new Discord NPC at the main spawn to make the Discord linking feature of the server more visible to players. This new NPC is identical to the one in the newbie shooting range.
SERVER CHAT WILL BE COMING BACK SOON!
The new Discord linking uses entirely in-house code, making it easy for us to add additional features to the system in the future. Soon we will be able to bring back an old feature that has been broken for years: the #server-chat Discord channel to allow Discord members to talk to players in GunColony!
TECHNICAL CHANGES: NEW DISCORD LINKING SYSTEM
We have developed a new system to let players link their Discord and Minecraft accounts with truly unprecedented ease. We leverage the two platforms’ OAuth2 integrations to allow you to link your accounts entirely in the browser. To our knowledge ours is the first account linking system of its kind anywhere in the entire Minecraft community. The code of this system is also written into the Place Engine and designed to support general social login to let users access Place’s various planned web features in the future.
- To link your Discord account to your Minecraft account, you can now visit a URL, and then login to your Microsoft account (which you use to log into Minecraft) followed by Discord account entirely in the browser.
- This means that you no longer need to join the GunColony server to complete the process; however, your Minecraft account does still need to have joined GunColony before to link your accounts successfully. Like before, you still need to link your Discord account to your Minecraft account before being able to talk.
- This is drastically simpler than the previous system, which required you to log into Minecraft and join GunColony, get a code in-game, and then message it to a specific Discord bot.
- There is an alternative method to link your accounts by joining the GunColony server and typing “/discord link”, which will generate a unique login link specific to your Minecraft account. Since we already know your Minecraft account, you will only need to login to your Discord account in the ensuing login webpage.
- This method is easier to use to players who are already in-game, and is also the only way to link your Discord and Minecraft accounts if you have an offline Minecraft account.
- Both GunColony and the Discord now have updated instructions on how to link your accounts.
- Due to Mojang API rate limits only 3 new players can link their accounts per minute, which is acceptable at our current popularity. If the system is rate-limited, you will receive an error asking you to try again in a minute or so.
- Existing users logging in will not be affected by this rate limit, as our system remembers the Minecraft account linked to your Microsoft account.
- You can always use the alternative in-game method to link your accounts if the main method does not work due to the rate limit.
- The current Discord linking system has been removed. However, we have developed replacements for its old features such as giving you the Enlisted tag and syncing tags based on your Discord group. These features are implemented using the Kord library and integrated into the Place Engine, so they will be fully functional in the standalone game. They only run on the main instance in the Place network (currently the BungeeCord).
- We also have a (currently mostly hardcoded) replacement feature to give you the ability to join PVP lobbies without leveling, as well as unlock the exclusive RPK-12 LMG, if you have linked Discord.
TECHNICAL CHANGES: CROSS-SERVER MESSAGING
Almost a year ago, we unveiled a web-based scoreboard feature intended to show off the unique benefits of our custom game engine, particularly the ability for game servers to directly serve web-pages to players containing dynamic game information without the overhead of data going through any intermediary platforms such as a database. Our ambition is to provide lightweight, rich web-based features to players with unprecedentedly low latency and server costs, made possible only through direct-rendering of web pages from the game server itself.
We are now one step closer to realizing that ambition as with this update, we significantly stabilize and improve the system with a new backend and various performance enhancements.
- Added a comprehensive, flexible cross-server messaging solution to the Place Engine based on Redis Pub/Sub and Kotlin Serialization, allowing for structured messages to be broadcast to all servers or addressed to a specific server, and making it easy to add new message types to the codebase
- Changed the backend of the Web Scoreboard feature from Kafka to the new messaging system based on Redis.
- This fixes a bug where the webpages from the Web Scoreboard feature can time-out especially if it is the first time the feature is used after restarting the server.
- The Web Scoreboard should now also have a lower latency.
- Less data is now sent between backend servers to power the Web Scoreboard, as while the user request is still broadcast to all Place servers on the network, the network response is now sent directly back to the BungeeCord server without being broadcast.
- The latency of the Web Scoreboard should now be lower and more consistent, allowing for faster page loads.
- These improvements are applied to the Place Engine as a whole and thus will also apply to any other game-server-rendered web UI we create in the future.
TECHNICAL CHANGES: WEB SESSIONS
We have created a web sessions system for Place which currently powers the new account linking system, but will also become the backbone of all future Place web systems that require user login going forward (such as a future web-based user profile/stats page accessible to all users, a moderation site accessible to staff members even while not in-game, and even the standalone game webpage itself). It uses Redis as the underlying data store.
- After players login through one of their linked accounts (Minecraft or Discord), players’ browsers will enter a session. This is the same concept as being “logged in” in other websites.
- Login sessions currently last for one year if you do not access the Place website. If you do access the website while still logged in, the session expiry time will be refreshed once a day and thus reset the delay before you are logged out.
- As a preemptive method to prevent malicious attacks, each user is limited to 10 sessions. Creating a 11th session will forcibly end the user’s oldest session by the last refreshed time. The code is optimized as much as possible to reduce the number and size of queries made to Redis.
- Currently there is not yet a comprehensive “login”/”logout” mechanism, meaning that users are not yet redirected to the login page automatically if they are logged out, and they also cannot log out currently short of resetting their browser cookies. This will be remedied soon after we create a full user-facing website powered by the Place Engine.
- The session system is designed with future support for lightweight non-HTTP web requests in mind. In the standalone game, the client will be able to make lightweight requests to routes directly through the web socket which bypasses any HTTP handling overhead, while the server can also push HTML directly to clients without a request (used for high performance server-rendering of complex in-game UI). In the event of such requests the sessions feature will be entirely bypassed in favor of the using the identity of the logged-in player directly.
OTHER CHANGES
- Updated ViaVersion version to latest, potentially fixing some issues with newer Minecraft version clients
BUG FIXES
- The Place Engine-based web scoreboard now functions again and should be much more reliable in the future due to the new Web Sessions system