Skip to content

Alpha Release: Vein Mining, PistonHandler, and Bugfixing

Caltinor edited this page Apr 16, 2022 · 1 revision

This is the tenth and probably final private alpha. The next releases will be adding in QOL features, but this release officially concludes a functional rework of PMMO.

Here is everything in this release:

  1. Vein Mining
  2. Piston Handler
  3. Bugs fixed:
    1. Night Vision Perk removing night vision from other sources
    2. Datapacks not being able to be disabled
    3. Max level being higher than possible
    4. Made Damage Boost Perk functional
    5. Added item and block denial logic to player click event trigger

Vein Mining

This is a completely new way to think about vein mining. Instead of your skill passively giving you charge capacity and recharge rate, you now gain vein ability from items. Any item can give vein charge and a player's total vein ability is gained from their combined item abilities from all armor, and hands. Additionally, you no longer have to hold down the tilde key to vein mine. You now use the key to "mark" a block. If you break a marked block, you will trigger a vein mine. If you break any other block, it will break like normal. If you want to unmark a block, you simply mark it again to have the mark removed. You do not need to unmark a block to choose a different one. Simply mark the block you want and the old mark will be removed. here's how the configuration works.

The configs for blocks and items now have an extra, optional, setting for the vein miner

"vein_data": {
  "chargeCap": 100, //the max this item can hold
  "chargeRate": 0.05, //the max this item regenerates per tick
  "comsumeAmount": 4 //only for blocks. how much vein charge is consumed to vein this block
}

There is no cap to how much you can vein (only how much your server can handle) so be wary of how much vein charge you give to items. It might not be an issue with an iron vein of 8 blocks but stone can be veined and if you have a vein charge of 1000, you may break 1000 blocks at once.

On the note of basic blocks like stone, if you do not declare a vein cost for a block, the server config has a setting for the base cost of blocks. If you want to disable all but the blocks you define, set this arbitrarily high so no sum of items would ever be enough.

Items only contribute to your vein ability if they are in your armor slot or hands. However, they charge in all inventory slots. Therefore if you have armor that is good for veining but not very good for defense, you might use it during mining, and then swap it out for better armor to fight. It will then charge in your inventory.

As long as you have a vein item equipped, you will see your current vein ability at the bottom left. configurable via the client config.

There is also a vein tooltip showing you everything from the above config. BlockItems will show the consume amount for their respective blocks.

Piston Handler

This is a more technical change, but moving blocks with pistons now fully updates the blocks for who placed them. So you cannot use a piston to push a rare block so that it doesn't look like you placed it in order to cheese some xp.

BugFixes Galore

Night Vision Perk removing night vision from other sources

This was actually a fix applied in the release version but i copied the code over to retain the fix.

Datapacks not being able to be disabled

There was a design issue where disabling a datapack did not actually remove the settings from the instance. This has been fixed.

Max level being higher than possible

The formula you set up in the config is going to determine the max value. There is only so much XP the mod can store for a single skill so if your formula makes each level harder to get, the max level will actually be quite low. Therefore, if you set the max level in your config to a number higher than what is possible, two things are going to happen. One, it will update within the game so that you can't set level values higher than what is possible. Two, it will update your config for you to have the actual max possible value. You still have the ability to set a max value lower than what is possible.

Made Damage Boost Perk functional

Without item_specific.json there was no way to designate weapons for damage boost perks. This was resolved in this release and you can now delcare specific weapons as having damage boosts.

[DEAL_RANGED_DAMAGE.combat]
  perk="pmmo:damage_boost"
  applies_to=["minecraft:wooden_sword", "minecraft:stone_sword", "minecraft:iron_sword", "etc"]
  per_level=0.01

Instead declaring the perk for one specific itemType and declaring items with a type, you now declare exactly which weapons apply to that specific perk. This also allows you to set different "per_level" settings for different weapons while still using the same skill. An improvement from the previous version.

Added item and block denial logic to player click event trigger

Just an API thing for addon makers. You can now specifically cancel interaction aspects without cancelling the entire event.

Testing Notes

  • have fun veining things. (fun fact, you can mark air, even though you can't break it)
  • play with the damage perk.
  • try adding multiple datapacks and removing individual ones to test the behavior. This is especially helpful for things that stack like cummulative configurations.

One Final Note

This marks the completion of the core content of the alpha. This means that I will likely release this version on CF for use in modpacks. There is still work left to be done, so here is what's ahead.

  1. GUIs. Right now the glossary has not been re-implemented. I still need to figure out how I want that to work since the original glossary was not adapted to the API features.
  2. A few bells and whistles. I need to still add indicators as to how much XP you earned from actions so that i can remove it from the chat. For now I am leaving it in though. That will be removed before a beta for sure.
  3. Commands. There are still a few that need to be carried over.
  4. AutoValues. This is proving to be much harder than it looks. Either it's too simple and forces you to use datapacks, or it's too complex and makes them obsolete. I am trying to find that balance, but have yet to. I think the existence of manual configuration at this point is good for an alpha. AutoValues will be complete before any official release.
  5. Anti-Cheese. Very low priority, but will get done. The xp calculations already have a dummy call to the anti-cheese, so it's just a matter of defining when a player is considered cheesing.
  6. Building a Default Settings Datapack. This will be released on CF as a default for those who don't want to build one themselves, or who want configurations that aren't auto-values. I will be conducting a live stream to work on this and will announce it in the PMMO discord.
  7. A number of requested features. There is an entire list in the development tracker. they have not been forgotten. I designed everything in such a way to give myself the flexibility to implement these later. They will come, but they were postponed due to their niche natures.

I wanted to thank everyone who helped me with this rework so far. Special thanks to Harmony for letting me do this, to Gaxon for hosting the alphas for us to test on a server, to TaterLord for providing feedback when I needed design input, and the silent community members who tested on their own.

Clone this wiki locally