Activity

DevCmb

Added a panel for showing all the games on MCC Island, along with the amount of trophies that can be earned from them and the 2 player progressions towards max.

This is basically already 1/3rd of the website done! I might not do fishing because it’d take a really really long time to get working, but we’ll see!

Changelog

Attachment
0
DevCmb
  • Make it so when voting finishes, it automatically starts the game
  • Change the method used in the start game command to an async version
  • Fix a bug where tumbling players, when having their score changed, would essentially re-create the object
  • Properly spawn voters at the center of the arena
  • Shorten voting time 30s -> 20s
  • Fix a bug where spectators would still have their votes count
  • Fix a bug where async countdowns wouldn’t execute the onExecute method attached to it
  • Slightly re-order the countdown logic to have 0 not yield, instead ending immediately

Changelog

0
DevCmb
  • Add the voting system where players vote by standing on the color corresponding to the game they want to play
  • Add a command for setting event timers
  • Add a Material validator in the ConfigController
  • Include the name and votable state of games in their RegisteredGame class
  • Add a name field to games for public-facing events
  • Display in the scoreboard if the timer is paused

Changelog

Attachment
0
DevCmb
  • Added a pre-event cutscene that will later be used to explain voting, scoring, etc
  • Refactor cutscene steps to not require a game or LaodedMap, instead giving an option to just provide a world and configuration section
  • Move the logic to prevent dismounting inside the CutsceneContext class itself instead of being handled by the GameBase
  • Add a command to manually trigger a ready check
  • Add a command to pause the active event timer
  • Add protections to the hub world (make it so players not in creative cannot damage the map)
  • Edit the scoreboard to show if the timer is paused
  • Spawn players in adventure instead of survival
  • Force load the hub world
  • Rename Orange Ocelots to Orange Orcas to steer away from MCC-equivalence
  • Deactivate the intermission scoreboard when the game starts

Changelog

Attachment
0
DevCmb
  • Add the ready check system for starting the event
  • Add the /event start command to start the event (triggering a ready check to continue)
  • Add a section on the intermisison scoreboard to track a timer (ready check -> active timer -> “Event Inactive” -> empty component)
  • Fix a bug where the server would try to update UI for players that have already disconnected
  • Change the data replication logic to be done at the end of a game, not when the server closes. This should hopefully mean that if it crashes mid-game, we can re-run without a partial state being captured in the database.
  • Change instances of creating an audience out of all online players to a Bukkit.broadcast call instead (cleaner)

Changelog

Attachment
0
DevCmb
  • Add a scoreboard for when no game is active
  • Rework the system for the TumblingPlayer data class such that an instance is created for all whitelisted players, not just online ones
  • Replace the individual getPlayerData database function with getAllPlayerData to be invoked when the server boots
  • Make tumbling players the main parameters for format operations (with an option for players still being available)
  • Add a secondary method for getting controllers, using an inline function and a reified type generic to reduce the need for arguments and casts
  • Safeguard whitelist calls from executing if the provided profile does not have a user ID associated to it
  • Set up the basic event state class for later implementation
  • Make the team score method give score to all members of a team, not just online ones
  • Fix inconsistencies in format for scoreboard score numbers (color tag was inside the formatter instead of the template)

Changelog

Attachment
1

Comments

Nibbles
Nibbles 5 days ago

big things are happening

DevCmb
  • Change the game timer system to be class based. This allows multiple timers per game, timers outside of games, etc
  • Added the /timer command which allows setting, pausing, and unpausing timers.
  • Made it display a Paused text in the timer bossbar if the timer is currently paused
  • Fixed a bug where the /world command did not have a permission requirement
  • Fix a bug with deathrun where the first team to be trapping would get trap items during the cutscene
  • Fix a bug where all players would be affected by end-of-round run-failing instead of just participants (this would include spectators)
  • Fix kill formatting not displaying kill score

Changelog

Attachment
0
DevCmb

And with that, Deathrun is complete for now 🎉

  • Added a cooldown indicator as a bossbar for traps
  • Fix a bug where the end display wouldn’t update due to the chunk being unloaded
  • Made it so runners cannot see other runners
  • Fix placements being 0-based instead of 1-based (0th place instead of 1st)
  • Edit the crumble bossbar to show a warning icon if something goes wrong

Changelog

Attachment
0
DevCmb
  • Add a proper cutscene to deathrun
  • Give players win score based on their placement instead of being a fixed constant
  • Add a score display at the end to indicate the score for finishing at that time
  • Rename parseCoordinates to validateLocation for consistency with Nibbl_z’s branch
  • Edit the cutscene context to hold an instance of the game its being ran for

Changelog

Attachment
Attachment
0
DevCmb
  • Added checkpoints to the deathrun course
  • Finally move coordinate parsing to a class instead of reusing the exact same logic over and over
  • Fix a bug where you’d only have 3 hearts when respawning
  • Fix a bug where you’d be given damage sfx and visuals when spawning
  • Add void height to the config (I only added it to the prod config, not the template goog

Changelog

Attachment
0
DevCmb
  • Add individual score to all the scoreboards
  • Move the repeated getTeamScoresComponent and getIndividualScoreComponent methods to UserInterfaceUtility instead of just reusing the logic
  • Move some MiniMessage placeholders to the MiniMessagePlaceholders class for global updating
  • Add an extension function for getting a player’s formatted name

Changelog

Attachment
0
DevCmb
  • Add the happy ghast trap
  • Add a debug toolkit to deathrun to trigger death events
  • Added a custom void height to respawn players when they fall
  • Removed the magma floor from the beam run to instead focus on just killing those who fall
  • Remove placement bonuses from deathrun in accordance with Nibbl_z’s score system changes

Changelog

Attachment
0
DevCmb

I’m bouncing back and forth between like 20 things now because thats how im staying motivated with this project!!!

  • Give the crumble kit selector a custom inventory UI
  • Fix deathrun individual placement not giving a message for individual placement
  • Fix a bug on nibbles’ sniffer caretaker game which caused him 3 hours of problems
  • Fix a bug with deathrun where the timer wouldn’t go away after the game ends
  • Start on the noxesium Qibs for movement (a quib is just a hitbox that does something when the player enters it). This runs independent of ping so its consistent regardless of player latency. Didn’t get around to actually implementing it because the documentation is basically nonexistent

Changelog

Attachment
0
DevCmb
  • Track the amount of time the player spent in the course
  • Display that time in the actionbar
  • Show the current matchup in chat to be consistent with other game events

Changelog

Attachment
0
DevCmb
  • Add the game and round end logic for deathrun
  • Award points for trappers getting damages or kills
  • Announce when a player wins or loses
  • Move some repeated logic to the GameBase class for displaying individual and team scores
  • Make completing or failing the run turn you into a spectator
  • Fix the countdown timer being slightly offset by 3 pixels

Changelog

Attachment
0
DevCmb
  • Display the members of a team in the scoreboard
  • Refactor the database to properly update the cache when reassigning teams
  • Refactor the database to store UUIDs alongside names in the whitelist cache
  • Add the minimessage placeholder method to this branch

Changelog

Attachment
0
DevCmb

Taking a bit of a break from Deathrun to do some of the event stuff

  • Show a logo, event mode status, and team scores in the topbar
  • Hide playerss from the player list (will be re-added below the respective team next commit)
  • Spent way too long debugging an issue just to realize my resource pack was outdated
  • Moved 1px text padding calculation to UserInterfaceUtility
  • Add a command for listing all teams (was used to get pixel lengths)

Changelog

Attachment
0
DevCmb

Global Changes

  • Edit the score system to allow custom ScoreSources for later logging
  • Added a command to send a game message from the current game
  • Cancel all damage from fireworks because they’re often used for effects
  • Keep track of invisible players to hide them for when players join

Deathrun Changes

  • Define an end gate so that, when passing it, you become a spectator and get win points
  • Give the game an icon
  • Give the game messages for score sources

Changelog

Attachment
0
DevCmb

Global Changes

  • Reset a few more values when players connect
  • Fix the DISABLE_BLOCK_BREAKING flag disabling block placing instead of breaking

Deathrun Changes

  • Give attackers speed
  • Clear attacker inventories after the round ends
  • Add a safeguard that makes it so you can’t use the trap items unless your team is up
  • Fix a bug where you’d have to move to get a trap item
  • Set the player’s max health to the amount of lives they have
  • Force all damage sources to only do 1 heart and respawn the player

Changelog

Attachment
0
DevCmb
  • Added the trap system which gives the attackers an item based on where they are to control a certain trap
  • Edit the advance item system to disable dropping for items

Yes this is unfortunately all I did
I had a lot of problems while making this

Changelog

Attachment
0
DevCmb
  • Made the pre-round sequence where it announces whos attacking now
  • Place attackers at a different spawn so they can see over all of the other players. I’ll give them trap tools soon™️
  • Edited the topbar to display the current branch and a build number instead of the $version-$build
    idek why this took so long goog (prob stuggling with git for a while)

Changelog

Attachment
0
DevCmb

New Game Started: Deathrun

I played a bunch of those “out-play the killers” games when I was younger and I wanna bring the idea to this event

  • 1 team at a time will try to kill as many people as possible with traps as they go through a small parkour course (1-2m).
  • The team will get score based on how many people they’re able to kill, and each team will go 1 time.

Other changes

  • Added a dev bossbar containing the build identifier (hexadecimal) and current state (indev)
  • Include templates in the repository to help with collaboration
  • Added the GPL v3 license to the project
  • Disable the locator bar by default with a flag to re-enable it
  • Make it so players on the same team can’t attack eachother

Changelog

All changes from here on out are on a seperate branch for collaboration with one of my friends who is helping with another game.

Attachment
0
DevCmb
  • Add the scoreboard system for enabling and disabling scoreboards for a player
  • Added the crumble scoreboard
  • Change team placement and indiv placement to use team priority in the case of a tie
  • Centralize the glpyh pixel widths using a github gist I found

Changelog

Attachment
0
DevCmb
  • Make the cutscene for crumble
  • Make falling a certain distance immediately kill you
  • Reduce load when breaking walls
  • Add a minimessage instance
  • Unhide spectators in the cleanup stage instead of postgame

Changelog

Attachment
0
DevCmb
  • Display the scores of all teams and players at the end of the game
  • Have certain score sources tell the player a message
  • Reward individual and team score for winning, losing, and drawing matches
  • Edit the opening cutscene to include the game’s icon
  • Finally gave the teams proper icons

Changelog

feat: ✨ Announce team and individual placements at the end of the game

Attachment
0
DevCmb
  • Close the game loop with the game end and cleanup methods
  • Nerf bomber blast protection level II -> I
  • Internally non-null assert tumbling players (if they didn’t get created you wouldn’t be able to connect to the server)
  • Fix actionbar runnable not being run properly for crumble
  • Re-arrange events to be at the bottom of the game base and crumble files
  • Make it so spectators cannot take damage
  • Internally keep track of the score earned in the game

Changelog

Attachment
0
DevCmb
  • Spawn players who die at the center of their arena as spectators (players cannot see spectators)
  • Make asyncCountdown not fire if the countdown was cancelled
  • Fix a logic issue where any kill would give your team a win/draw (depends on the amount of players)
  • Fix win and loss states setting the wrong round’s result (currentRound is 1-based while indexes are 0-based)
  • Made it so if you have your block place cancelled before a round starts, it won’t also do the tnt spawn logic
  • Add a timer set command
  • Made the timer repeat until the time hits 0, not a set amount of time. This makes it respond to mid-countdown changes.
  • Reduce the amount of arenas from 7 to 4 because I thought that 8 matchups meant 7 were needed, but no, thats just the round count, the amount of arenas needed is teams/2 (2 teams per arena)

Changelog

Attachment
0
DevCmb
  • Add a countdown timer at the top of the screen
  • Add a bossbar handler for UI elements that appear up in that area
  • Give a sword pickaxe to all kits other than worker (which already has an iron one)
  • Add a Round Over title for when the round ends
  • Draw any rounds not over in 2 minutes
  • Make it so you can’t place blocks until the game starts

Changelog

fix: 🐛 Make it so you can’t place blocks before the round starts

feat: ✨ Add the timer system

Attachment
0
DevCmb
  • Add the ninja kit. This one took the longest because I had to add a custom item for the ninja and resolve a bunch of dependency issues.
  • Made round spawning reset your fire ticks
  • Changed hud positioning for the kit indicator to be slighly more accurate (ninja is offset but im not sure theres much I can do for now)

Changelog

Attachment
0
DevCmb
  • Add the hunter kit
  • Rebalance existing kits
  • Fix pre-round damage still applying
  • Add cleanup functions to some of the kits that lacked them
  • Add an event to test kill powers on kits

Changelog

Attachment
0
DevCmb
  • Added the fisher kit
  • Fixed my database not working at all (most of the time was spent on this 😭)
  • Fix the kit display from being slighly offset because of rounding errors
  • Add a cleanup field to kits that gets called in between rounds
  • Sort the kit selector by the ID in alphabetic order

Changelog

Attachment
0
DevCmb
  • Added the bomber kit which allows the player to get a nuke tnt with a high blast radius but low damage
  • Fix FAWE dependency
  • Fix debug logging not displaying the correct source line (it’d always say it comes from the DebugUtil class)
  • Actually store the outcome of a match
  • Make it so you can’t use your ability until the round starts
  • Make tnt auto light when placed

Changelog

Attachment
0
DevCmb
  • Add the walls to the crumble game which go away after a short grace period (still doesn’t have a countdown or anything but thats for another time)
  • Added some debugging tools which allow me to trigger any game-specific event with a single command without needing to edit that command file (very barebones still)

Changelog

Attachment
Attachment
0
DevCmb

A bunch of bugfixes I noticed when doing a final playtesting round

Changelog

Attachment
0
DevCmb

Update the cutscene system to use pigs for the player to mount instead of allowing them to fly (survivial mode players would get kicked for flying)

Also did an internal change to restructure the database file to use kotlin coroutines instead of yielding the thread whenever a database action needed to be completed

Finally, added the other 6 spawn arenas for matchups on the warfare map

Changelog

Attachment
0
DevCmb

Add the kit item to the hotbar while in game to allow using the ability (also add the skull for info purposes)

Attachment
0
DevCmb

Implemented the archer kit’s ability and kill effect. Also did a bunch of research on resource pack displays (can be found here) to display above your action bar what your current selected kit is.

Attachment
0
DevCmb

Make the kit selector work and create a system for managing these inventory UIs without sharing the same inventory with multiple people (oversights++)

Attachment
0
DevCmb

Start on the kit selector for the crumble minigame, as well as an internal system for creating itemstacks with left and right click actions to save myself a lot of hassle whenever I need to trigger some event off an item click

Attachment
0
DevCmb

Update the engine for team spawning. Also added the crumble specific stuff for map spawning.

This devlog took so long because I was trying to make a repeatable system for spawns instead of just passing it off to an abstract method. This is ridiculous because each game would have its own spawning rulesets instead of being consistent.

Attachment
0
DevCmb

Update the cutscene system to properly display the chat message, add the first step of the crumble cutscene, and add a world saver so I can actually save the maps without needing to do it manually

Attachment
0
DevCmb

Started on the cutscene system that plays before a game to explain rules and whatnot.

Attachment
0
DevCmb

Add a simple map loading system that uses kotlin coroutines to minimize latency

Attachment
0
DevCmb

Start the general game engine systems I’ll use to make the rest of the games

Attachment
0
DevCmb

Add a team assignment command and tweak the db structure a bit to make it so you can mark a player as not whitelisted while not deleting their data

Attachment
0
DevCmb

Get the project setup with a database and teams system

Attachment
0
DevCmb

Shipped this project!

Hours: 38.35
Cookies: 🍪 906
Multiplier: 23.62 cookies/hr

I made a minecraft server plugin for a continuous stream of parkour gameplay! I took inspirations from MCC’s Parkour Warrior and Ace Race gamemodes and made it into something unique. This is my second time making a game loop for a minecraft server, but this time I did it way cleaner and in kotlin instead of plain java. Getting worldedit to behave was a challenge but I surpassed those challenges anyways!!! Happy to finally have this done

DevCmb

Make the starting block crumble to prevent AFK players from just stalling out the game. Also added a bunch of documentation and a really in-depth setup guide.

Attachment
0
DevCmb

Added elimination to the game, finally closing the game loop to be played infinitely. There are surely some issues still (leaving doesn’t eliminate the player, the modifier system still doesn’t exist, etc), but for now, the actual loop is finished!!!

Attachment
0
DevCmb

Added a system where obstacles crumble away after a certain amount of time. This is going to be used for eliminating players, progressively getting faster and faster.

Attachment
0
DevCmb

Add a sidebar to display scores and obstacles completed. With this also comes an objective display system for the player ui delegate so thats why the time isn’t like 30 minutes. also internal changes woohoo!

Attachment
0
DevCmb

Add a scoring system and do more internal changes as per usual

Attachment
0
DevCmb

Add a better debugging structure, an indicator for the items you’re given for a specific course, and migrate from worldedit to FastAsyncWorldEdit (FAWE) since its way faster

Attachment
0
DevCmb

Made the different obstacle types give their respective items, as well as a bunch of tiny changes here and there, but thats to be expected because I never hone in on one thing per devlog lol

0
DevCmb

Added individual stepping of obstacles. Currently there’s only one for testing sake, but im going to add more, as well as some for elytra, riptide tridents, etc.

Attachment
0
DevCmb

Added the pregame countdown, gate opening, and a loop reset command to make testing a bit easier. Hopefully obstacle generation is next

Attachment
0
DevCmb

Add a requirement to obstacle saving where a start and end line must be determined via a line of diamond and redstone blocks. This’ll make it a hell of a lot easier to position when it comes time to need to load the obstacles

Attachment
Attachment
0
DevCmb

Add a subcommand to the obstacle command that lets me load the saved obstacles

Attachment
0
DevCmb

Got a command set up where I can export worldedit selections to schematic files for later implementation. Also did some internal work here and there.

Attachment
0
DevCmb

Added LiteCommands to get some debugging utilities to make template worlds easier to view and edit (editing coming soon trust)

Attachment
0
DevCmb

Get world creation and deletion working, along with removing the multiverse core implementation (with caused this devlog to have way too much time). Also did a bit for the actionbar UI system, but didn’t get really anywhere.

Attachment
0
DevCmb

Start the game loop and add the bossbar UI system to display bossbars and reserve space based on their height

Attachment
0
DevCmb

Do a lot of research and development on a UI system that abuses minecrafts spacing to offset the text negatively, but ultimately I couldn’t figure it out entirely. Along with this brings a better actionbar system

Attachment
0
DevCmb

Setup some basic listeners and do some packet manipulation to give the player hunger and hardcore hearts. Both of these are hidden in a resource pack so they appear as if nothing is there.

Attachment
0
DevCmb

Set up the project with basic boilerplate

Attachment
0
DevCmb

Get the basic Qt window and learn how docks and such work. This is a very ambitious project and im excited to see where I can take it 🔥

Attachment
0
DevCmb

Shipped this project!

Hours: 25.29
Cookies: 🍪 672
Multiplier: 26.59 cookies/hr

I made the thing!!!!! AchievementsMC is all good for v1.0 with a good variety of achievements to start off with. Might revisit the project at some point to give it some updates, but for now, its good 🔥

DevCmb

Do some documentation and put the plugin onto modrinth

Attachment
0
DevCmb

Finally got around to getting achievements to give rewards! This is probably the last thing for the project but maybe theres some glaring issues I’ll fix later™️

Attachment
Attachment
0
DevCmb

Player achievements page, new achievements, and internal restructuring

Attachment
0
DevCmb

Add more achievements, bump invcontrol to the next version because it was broken, and fix CI builds

Attachment
0
DevCmb

Add new achievements for you to create

Attachment
0
DevCmb

Add the ability to remove achievements, as well as the backend database stuff that is needed (only additions can be replicated on server close, not deletions)

Attachment
0
DevCmb

Add the ability to edit achievements, as well as this info popup to show the current fields on the main page.

Attachment
0
DevCmb

Finally get the actual creation mechanisms working! It took a while since I had a bug in the underlying framework (thanks past DevCmb) that I had to take a detour to debug and fix, but it works!!!! Editing should use the same basic menu so it shouldn’t take as long as this 🔥

Attachment
Attachment
0
DevCmb

Fix a bunch of bugs that I overlooked when initially making the project.

Attachment
0
DevCmb

Got the reward item input to request the user for an item, and update if the user actually provides it

Attachment
0
DevCmb

Add database replication for achievements, and add this final setting which can’t be updated yet™️

Attachment
0
DevCmb

Add more input items

Attachment
0
DevCmb

Started the configuration items in the achievement editor, though it definitely needs more work.

Attachment
0
DevCmb

Set up player data and achievement incrementation. Also made the logic to replicate the player data back to the database in the anc_progressions table

Attachment
0
DevCmb

Start on the actual achievement classes with a barebones Kill Hostile Mobs one to get the ball rolling. Still need to actually make the db logic to store this information, but thats future me’s problem 🫡

Attachment
0
DevCmb

Get my UI library implemented and cook up this UI. The time for this devlog is higher than normal because of how many other things I tried to do to get UI working, but nothing else was easy 😭

Thank you DevCmb for the InvControl library.
Hm I wonder why I made that 🤔

Attachment
0
DevCmb

Remove the CI builds and include an installation section on the README

Attachment
1

Comments

MeBadDev
MeBadDev 4 months ago

I love it!

DevCmb

Shipped this project!

Hours: 11.93
Cookies: 🍪 235
Multiplier: 19.66 cookies/hr

Finished up the main features for the project! Its definitely not complete, but its got the basic features that I was intending to make 🫡

Might work on it if i’m out of ideas in the future, but for now, its good!!!

DevCmb

Got CI builds running for deploying to github packages, also expanded the documentation to include core principles and examples

Attachment
Attachment
0
DevCmb

Spent a while debugging while you could insert items into frames with hotkeys but not take them out, turns out currentItem is only set if your mouse is actually hovering over an item, its not the affected item. Thats 30m im never getting back 🫡

Attachment
0
DevCmb

Made item maps which allow you to pass in an array of items (yes its not actually a HashMap, screw you). This is to make it more dynamic as well as allow for something that other libraries I’ve seen don’t really support.

Attachment
0
DevCmb

Make a little aim trainer game for both testing and fixing some bugs and as an example for anyone who wants to use this library

0
DevCmb

Got a testing plugin up and running to hopefully reduce the amount of devlogs that are exclusively code for their images. This also proves my code isn’t terrible because it literally works the first time I’m testing it 🔥 (minus one small unchecked error where you register items on a page before that page is registered)

Attachment
0
DevCmb

I tried making it a maven submodule, and the second I found any resistance to that idea, I switched over to gradle which broke everything. I tried fixing it, I failed. I git rollback’d the whole thing and just did it in maven with a guide. Thank you build systems of the 21st century

Attachment
0
DevCmb

Refactored the codebase to use a page-based system instead of just throwing together items whenever you feel like it

Attachment
0
DevCmb

Wrote the base for many of the systems I hope to implement in the future. Implemented the base item, chest inventory ui, listeners for buttons, and a registry to keep track of button items.

Attachment
2

Comments

Nibbles
Nibbles 4 months ago

kot;lin!!! :D

pierreide10
pierreide10 3 months ago

making plugins in kotlin ???

DevCmb

Start the project with a very barebones function to kickstart everything else

Attachment
0
DevCmb

Got the basic command controller set up as well as a database intermediary to prevent copious database calls (pretty barebones and will be expanded soon™️)

Attachment
2

Comments

Mr.Chicken
Mr.Chicken 4 months ago

Hi DevCmb

Nibbles
Nibbles 4 months ago

what if instead you expand it Right Now™️ devcmb im watching your stream why you playin bloons td 6

DevCmb

Got some of the behind-the-scenes systems working, mainly with the ControllerDelegate and Database module. Also got the version display up and running but that’s standard with all my mc projects.

Attachment
Attachment
0