By registering with us, you'll be able to discuss, share and private message with other members of our community.
SignUp Now!--== | **UPDATE 1.9.30** | ==--
There have been MANY major changes and NEW features added to this version. Please let us know if you encounter any issues with this new update.
-- **Supported Minecraft Versions** --
1.13.X, 1.14.X, 1.15.X, 1.16.X, 1.17.X, 1.18.X, 1.19.X
-- **More Version Support** --
A little while ago we updated Heroes to Java 16, which was actually unnecessary. We have now reverted Heroes to be compiled on Java 8, what this means is that once again ALL versions from 1.13 and onwards are now supported by Heroes! Due to the overwhelming amount of changes to Heroes as well it is **REQUIRED** that you redownload ANY and ALL skill packs as previous versions of skills may cause major errors. More details on skill updates below.
-- **Full Translation Support** --
Attention all, drum roll please - Heroes now has **FULL TRANSLATION SUPPORT**. Pretty much every single message in Heroes is now translatable via a file created by the plugin called `translations.yml`! The only exceptions is that some commands are not translatable, the majority of the most used ones are! We will be finishing off the rest of the commands in future updates to come! This was a major undertaking, with the translation file featuring literally over 400 messages which used to be hard coded into Heroes, so understandably there may be some small typos or errors - please let us know if you come across any!
When **configuring** the translations. There are few little tricks you can do to further customize Heroes;
- For many translations, mainly those which are sent to the player as a message, if you configure the translation such that `some-translation: ''` (such that it's empty), this will mean that the message simply will not be sent! This means for example for those of you which don't use races or don't use secondary classes, you can simply set those options to an empty string and then those messages won't be sent. For example, see the below translations which are used mainly for the /hero info command.
*Default*
```
commands:
player-summary: '{level} {primary}&r, {level} {secondary}&r, {race}'
class-summary: '&aClass {primary}$mastered-primary$ &7| &aProfession {secondary}$mastered-secondary$'
race-summary: '&aRace &7- {race}'
```
*Modified*
```
commands:
player-summary: '{level} {primary}&r'
class-summary: '&aClass {primary}$mastered-primary$ &7'
race-summary: ''
```
As such, removing the messages for races and secondary classes will mean the message is not sent to the player.
- Another thing you may have noticed is the use of {level}. The curly brackets will tell Heroes to look for another translation in the same section as where it is used. In the above examples, the `player-summary` is in the `commands` section, using {level} will look for a translation with the path commands.level and will automatically fill it with that value. By default, it will fill it with 'Lv. &6$lvl$'. Additionally you can specify a translation from another section just by doing {section.message} for example.
- In many of the translations, we use placeholder values such as $lvl$, $1, $2 etc. In some instances those values will be replaced with levels, a Hero's name or whatever else in relation to the specific translation. If you don't wish to use these values you don't have to, however you can't add your own placeholders (unless it's through Placeholder API) to these messages.
- As you'd expect we support using chat colours as well, any character of & will be interpreted as a chat color so keep that in mind.
- If you want things to be formatted correctly, it's recommended to try keep the spaces in translations as what is written if you want things to be displayed properly.
-- **Optimizations** --
For many years, Heroes has relied on an external library/plugin called EffectLib, it WAS necessary in the past that this plugin was installed for many of Heroes skills to work. However, we have now shaded the library into Heroes itself so you will no longer require to install that plugin separately! Additionally, EffectLib's EffectManager USED to be created pretty much every time a skill was cast, this meant unnecessary memory overhead and was just incredibly inefficient. As such, NOW, Heroes has one EffectManager of which ALL skills have been updated to use. **This is another reason why it is REQUIRED that you update all of your skills from the available skill packs**.
--- **Miscellaneous** --
- Fixed bug in MMOItemHandler
- Added option for damage scaling where mobs will only be scaled if the player is higher than their level.
- **ALL COMMANDS** in Heroes now should have automatic tab completions. This was done somewhat automagically so it can be a little buggy, remember, if you ever get confused about a hero command just type the command with a question mark after it.
- A player's Hero is no longer unloaded twice when they quit the server
- Added an option to attributes to allow an initial allocation point amount when the player is at level 1.
- Made the majority of log messages such as ("Class does not have pvp-item-multiplier set") and alike as debug messages ONLY. Therefore, simply enable debug mode if you wish to see these messages. This has made the Heroes boot sequence a lot cleaner![]()
- Enabling debug mode on config.yml will no longer mute normal log messages
- Added a mana and stamina condition to be injected with MythicMobs
- Mobs are now able to hit themselves (this was causing issues with plugins such as MythicMobs)
- If an equipped item is broken, then it's armour value will not be considered during custom mitigation.
- Update the list of what is considered a transparent block for versions 1.16-1.19
- The MythicMob item roll option now has an optional default role setting.
- Fixed a major bug where skills did not heal in combat.
- Fixed a potentially major issue causing an infinite loop regarding party members leaving.
- Combat enter and leave messages have been moved to translations.yml. This should be done automagically.
-- **Developer Updates** --
- When using Heroes.getCharacterManager().getHero(), this has been changed so that it will NO LONGER load a Hero if the Hero is not loaded. This was to prevent weird issues where a Hero was loaded even after they were offline. If you attempt to getHero() when they are not loaded then an exception will be thrown. To avoid this, basically do NOT call getHero() from a PlayerJoinEvent pretty much ever, always run a delayed task or find another way to accomplish whatever it is you wish to do.
- The Messaging class which has been deprecated for a while now has been removed. If you're using this, just don't. Use ChatComponents if you really need.
- When using a Hero object, using .getHeroClass(), .getSecondaryClass(), or .getRaceClass() will now NEVER be null. This is how it's always been, but for some reason these methods were marked as Nullable
- For skill developers, if you wish to use the shaded effect lib you can use the protected static final variable called 'effectLib', or you can get an instance of the plugin and call .getEffectLibManager(). Please NEVER dispose of this manager as it is used by all skills and is not disposed of.
- The latest public repository available is now 1.9.30-RELEASE. Maven example is below;
```
<repository>
<id>heroes-repo</id>
<url>https://nexus.hc.to/content/repositories/pub_releases/</url>
</repository>
<dependency>
<groupId>com.herocraftonline.heroes</groupId>
<artifactId>Heroes</artifactId>
<version>1.9.30-RELEASE</version>
<scope>provided</scope>
</dependency>
```
-- **The Future of Heroes** --
Our next major plan for Heroes, as we have mentioned is to essentially rewrite the entire damage handler. Over the many years of Heroes life, this damage handler has been an intertwined mess of spaghetti code. The problem, is that damage events are called constantly, multiple times a second, and therefore because this code is incredibly inefficient - this is most likely the main cause of any 'lag' generated by Heroes. My goal is to rewrite it from the ground up, refactoring it so that various checks are only made if those options are enabled for example. This will improve both the efficiency and hopefully will fix the magnitude of bugs generated by the spaghetti code damage handler. I'm currently aware of issues regarding enchantment damage and protection, where both values tend to not scale correctly at all. For example, right now - apparently damage over time effects such as bleed stack with sharpness. To fix issues such as these will require the full damage rewrite.
By improving the damage handler you should expect a significant performance improve across the board.
Update 1.9.25-b(Hotfix)
Fixed issue when generating new files that caused null pointer Fixed issue loading skills. Skills are now built on Java 16 just like Heroes allowing backwards compat for 1.16.5 and above Updated default classes to some nice community submitted ones. These are much more helpful when using Heroes for the first time. Fixed a long-standing issue with the custom knockback implementation, where values less than vanilla knockback would tend to sometimes pull an entity towards the player.
HEROES VERSION 1.9.25-SNAPSHOT
Scriptable Skills (Mythic Skills)
Added Mythic Skills which means Heroes now FINALLY has scriptable skills! You do require MythicMobs for this to work as it essentially casts a MythicMob skill as a Hero. You can configure stamina, mana, reagent costs - cooldowns, delays and all! At the moment, the one limitation is that Mythic Skills do not support increases per attributes unfortunately since Mythic Mobs is what handles the damage calculations. (This could be solved with a custom Heroes damage mechanic, but maybe thats for later). A new file called script-files should be generated after booting your server with this update. There are 3 examples in there of Mythic Skills with an in-depth explanation of how it works.
Custom Heroes Mythic Mechanics and Conditions
Since we are dealing with Mythic Mobs more directly in Heroes, we have added 1 condition and 4 new mechanics for your usages.
The condition 'heroestarget{type=?}' should be used on mythic skills to help mythic target the correct mobs. This is explained further in the script-skills.yml file.
The ? can be replaced with either ALLY, ENEMY, SELF, or ALL.
The mechanic 'drainstamina{amount=50}/drainmana{amount=50}' will drain the target's stamina/mana if they are a player by the specified amount. This can be used in mythic skills or by a mythic mob.
The mechanic 'drainstaminaovertime{amount=20;duration=6000;period=1000}/drainmanaovertime{amount=20;duration=6000;period=1000}' will drain the target's stamina/mana by the specified 'amount' if they are a player for every 'period' over the specified 'duration'. This can be used in mythic skills or by a mythic mob.
Custom Health Regen
A new section has been added to the config.yml called 'health'. This should automatically generate after booting your server with the new update. This will add a constant static regeneration effect to all players, similar to how mana and stamina generate. You can customise how often it regenerates, a regen-multiplier when in combat. You can even make it so it only regenerates when food is full. These can be configured by default in the config.yml or individually in classes, and support regen increases per level just like the other stats. As usual, by default this is turned OFF, simply set enabled: true in the health section to enable the feature.
Default Max Stats and Regen
Added a config option to set the default max health, stamina and mana. Similarly a default regen for health, mana and stamina has also been added to config.yml. These values will be used if NO stat is configured in the class.yml file.
Heroes Food Change
Changed the time-multiplier setting in config.yml to be read as milliseconds instead of seconds so that this is consistent with literally all the other config settings. If this value is set to less than 100, you'll get a warning saying you have set it incorrectly, and Heroes will convert the value into milliseconds for you.
MMOItems Additions
Added a heroes-health-regen stat to MMOItems to match with the mana and stamina ones. Added an optional stat to MMOItems called penetration. You can choose to use this in the experimental-features tab. If you set use-mmoitems-penetration to true, then the amount of penetration a weapon will do will now be dependent on the MMOItem's penetration stat on the weapon NOT what is configured in the config.
Damage Scaling Feature
Todo stub
-- Bug Fixes/Changes --
-- API Changes --
- Fixed an issue where when custom knockback was enabled, hitting an enemy where the attack was cancelled would cause the enemy to be thrown towards you
- Updated MMOItems to 6.8.2 dependency and MythicLib to 1.4.2. If you do not use those versions then MMOItems Stats may have their lore-format stats generated weirdly
- Updated default classes to the community submitted ones (which are better constructed and way more helpful for new users). And removed the old default classes.
- WeaponDamageEvent and SkillDamageEvent now inherit from a class called HeroesDamageEvent which represents a HeroesDamageEvent between two entities. A new API event has been added called MythicDamageEvent which represents an event caused by a MythicMob dealing damage via a skill. This helps to clean up the code quite a bit and hopefully will improve efficiency
- Improved the usage of switching between ItemHandlers depending on if you are using Relics or MMOItems.
HEROES VERSION 1.9.25-SNAPSHOT
Scriptable Skills (Mythic Skills)
Added Mythic Skills which means Heroes now FINALLY has scriptable skills! You do require MythicMobs for this to work as it essentially casts a MythicMob skill as a Hero. You can configure stamina, mana, reagent costs - cooldowns, delays and all! At the moment, the one limitation is that Mythic Skills do not support increases per attributes unfortunately since Mythic Mobs is what handles the damage calculations. (This could be solved with a custom Heroes damage mechanic, but maybe thats for later). A new file called script-files should be generated after booting your server with this update. There are 3 examples in there of Mythic Skills with an in-depth explanation of how it works.
Custom Heroes Mythic Mechanics and Conditions
Since we are dealing with Mythic Mobs more directly in Heroes, we have added 1 condition and 4 new mechanics for your usages.
The condition 'heroestarget{type=?}' should be used on mythic skills to help mythic target the correct mobs. This is explained further in the script-skills.yml file.
The ? can be replaced with either ALLY, ENEMY, SELF, or ALL.
The mechanic 'drainstamina{amount=50}/drainmana{amount=50}' will drain the target's stamina/mana if they are a player by the specified amount. This can be used in mythic skills or by a mythic mob.
The mechanic 'drainstaminaovertime{amount=20;duration=6000;period=1000}/drainmanaovertime{amount=20;duration=6000;period=1000}' will drain the target's stamina/mana by the specified 'amount' if they are a player for every 'period' over the specified 'duration'. This can be used in mythic skills or by a mythic mob.
Custom Health Regen
A new section has been added to the config.yml called 'health'. This should automatically generate after booting your server with the new update. This will add a constant static regeneration effect to all players, similar to how mana and stamina generate. You can customise how often it regenerates, a regen-multiplier when in combat. You can even make it so it only regenerates when food is full. These can be configured by default in the config.yml or individually in classes, and support regen increases per level just like the other stats. As usual, by default this is turned OFF, simply set enabled: true in the health section to enable the feature.
Default Max Stats and Regen
Added a config option to set the default max health, stamina and mana. Similarly a default regen for health, mana and stamina has also been added to config.yml. These values will be used if NO stat is configured in the class.yml file.
Heroes Food Change
Changed the time-multiplier setting in config.yml to be read as milliseconds instead of seconds so that this is consistent with literally all the other config settings. If this value is set to less than 100, you'll get a warning saying you have set it incorrectly, and Heroes will convert the value into milliseconds for you.
MMOItems Additions
Added a heroes-health-regen stat to MMOItems to match with the mana and stamina ones. Added an optional stat to MMOItems called penetration. You can choose to use this in the experimental-features tab. If you set use-mmoitems-penetration to true, then the amount of penetration a weapon will do will now be dependent on the MMOItem's penetration stat on the weapon NOT what is configured in the config.
Damage Scaling Feature
Todo stub
-- Bug Fixes/Changes --
-- API Changes --
- Fixed an issue where when custom knockback was enabled, hitting an enemy where the attack was cancelled would cause the enemy to be thrown towards you
- Updated MMOItems to 6.8.2 dependency and MythicLib to 1.4.2. If you do not use those versions then MMOItems Stats may have their lore-format stats generated weirdly
- Updated default classes to the community submitted ones (which are better constructed and way more helpful for new users). And removed the old default classes.
- WeaponDamageEvent and SkillDamageEvent now inherit from a class called HeroesDamageEvent which represents a HeroesDamageEvent between two entities. A new API event has been added called MythicDamageEvent which represents an event caused by a MythicMob dealing damage via a skill. This helps to clean up the code quite a bit and hopefully will improve efficiency
- Improved the usage of switching between ItemHandlers depending on if you are using Relics or MMOItems.
Please test before going into production, things should function!
Minor fixes, add 1.19 support. Fix double health
RAVINGAR authored 12 hours ago
3c1aa7d7- 01 Jul, 2022 3 commits
Spell target info is removed LAST after all plugins have dealt with the EntityDamageEvent
RAVINGAR authored 1 week ago
5261ac91
Revert
RAVINGAR authored 1 week ago
ac7eccd3
Added back methods for adding and removing max health..
RAVINGAR authored 1 week ago
052d1696- 27 Jun, 2022 1 commit
Merge branch 'more-bug-fix' into 'dev'
Kainzo authored 2 weeks ago
4fd41241- 25 Jun, 2022 1 commit
Potentially fixed hero reload
RAVINGAR authored 2 weeks ago
e9ca5d4e- 24 Jun, 2022 1 commit
Literally fixed silly combat issues where it wouldn't enter a player in combat if a mob hit them
RAVINGAR authored 2 weeks ago
94832a5e- 19 Jun, 2022 3 commits
Add nicety
RAVINGAR authored 3 weeks ago
3352b929
Added stamina on block cost
RAVINGAR authored 3 weeks ago
0f8b5579
Refactor
RAVINGAR authored 3 weeks ago
e28c6b7b- 17 Jun, 2022 2 commits
Optimisations
RAVINGAR authored 3 weeks ago
803d9ee0
Fixed undead mobs not being checked properly
RAVINGAR authored 3 weeks ago
b3d8f291- 15 Jun, 2022 2 commits
Impproved so other plugins can cancelt he event
RAVINGAR authored 3 weeks ago
56626026
Added handler for Mythic cancelling our damage event!
RAVINGAR authored 3 weeks ago
f53f889c- 12 Jun, 2022 1 commit
Fixed null pointer
RAVINGAR authored 1 month ago
4a18e485- 10 Jun, 2022 1 commit
Will not make player leave until unless kick event is not cancelled
RAVINGAR authored 1 month ago
58422388- 06 Jun, 2022 2 commits
Fix ItemRoll showing in chat
RAVINGAR authored 1 month ago
e0bc4924
Revert to Java 16, drop support for all versions below 1.16.5
RAVINGAR authored 1 month ago
de6e25aa- 03 Jun, 2022 2 commits
Allow shears and fishing rods to be used..
RAVINGAR authored 1 month ago
93c070a6
Removed all health deprecations and updated syntax
RAVINGAR authored 1 month ago
8c26b7c2- 02 Jun, 2022 3 commits
Made stuff drop at feet
RAVINGAR authored 1 month ago
df429d5a
Added better null check for having null hero class
RAVINGAR authored 1 month ago
44d61fe6
Now if a hero is not proficient with a weapon they will not deal their max damage.
RAVINGAR authored 1 month ago
36d9dbcf- 31 May, 2022 5 commits
More bug fixes and now the previous commit actually works.
RAVINGAR authored 1 month ago
b88c76cd
Tools not allowed by classes cannot be used in combat
RAVINGAR authored 1 month ago
80079892
useToolsinPermittedWeapons will now not allow tools in combat. There is a distinction now
RAVINGAR authored 1 month ago
ae7d2254
Default runestone added
RAVINGAR authored 1 month ago
902041df
Merge branch 'minor-bug-fixes' into 'dev'
Kainzo authored 1 month ago
aaee8ba6- 30 May, 2022 5 commits
Change colour
RAVINGAR authored 1 month ago
6bf9c990
Reverted my durability changes because they were bad!
RAVINGAR authored 8 months ago
3c3c929b
Update dep for new MM things..
RAVINGAR authored 1 month ago
b9b02933
Fixed health related issues
RAVINGAR authored 1 month ago
4bfe083a
Defaulted fluid collision to always allow targetting through water
RAVINGAR authored 1 month ago
d84abd4b
We get it, advertisements are annoying!
Sure, ad-blocking software does a great job at blocking ads, but it also blocks useful features of our website. For the best site experience please disable your AdBlocker.