TurnBasedMinecraftMod/Changelog.md
2024-10-22 17:12:32 +09:00

461 lines
14 KiB
Markdown

# Upcoming changes
Minor fixes/refactorings that should make the mod more robust.
Port to Forge 52.0.22 (Minecraft 1.21.1).
Allow leaving battle GUI with Escape key (temporarily), and some refactorings
to (hopefully) fix that pesky transient client-freeze-bug.
# Version Forge-1.26.0
Port to Forge 52.0.21 (Minecraft 1.21.1).
Client-config available via `/tbm-client-edit` (same as NeoForge), but there is
no way to access it via the mod-list (unlike NeoForge). Removed from file
holding server-side config (same as NeoForge).
Add option in client-config to set battle/silly music volume, and an option for
whether or not battle/silly music volume is affected by global music volume
setting and whether or not it is affected by master volume setting.
Proper volume handling (like in the NeoForge branch).
Added Armadillo, Bogged, and Breeze to mob list in config.
# Version NeoForge-1.26.0
Make it possible to open the client-config from the Mod-list GUI.
Port to NeoForge 21.1.69 (Minecraft 1.21.1).
Fix volume handling of battle/silly music. (Previous implementation did not
properly reduce volume based on Minecraft's "music volume" setting.)
Move client-config to NeoForge's configuration.
Add GUI to edit client-config that can be opened with /tbm-client-edit command.
Add option in client-config to set battle/silly music volume, and an option for
whether or not battle/silly music volume is affected by global music volume
setting and whether or not it is affected by master volume setting.
Added Armadillo, Bogged, and Breeze to mob list in config.
# Version NeoForge-1.25.2
Fix invalid use of throwable potions. (Previously, the Player would "drink"
splash/lingering potions when used.) Now, if a splash/lingering potion is
"Use"d in battle, it will be thrown.
Add experimental support for "right-click" of arbitrary items on hotbar when
"Use" is used in battle.
# Version Forge-1.25.2
Fix invalid use of throwable potions. (Previously, the Player would "drink"
splash/lingering potions when used.) Now, if a splash/lingering potion is
"Use"d in battle, it will be thrown.
Add experimental support for "right-click" of arbitrary items on hotbar when
"Use" is used in battle.
# Version Forge-1.25.1
Add icon for mod in Mod list description.
Update for Forge 49.0.19.
Works on Forge Minecraft 1.20.4.
# Version NeoForge-1.25.1
Add icon for mod in Mod list description.
Update for NeoForge 20.4.108-beta.
Works on NeoForge Minecraft 1.20.4.
# Version NeoForge-1.25.0
Add new dependency `j-ogg-vorbis`.
Implement playing Vorbis encoded .ogg files for battle/silly music.
# Version Forge-1.25.0
Remove usage of "shadow jar" in build.gradle, and use jarJar instead.
Add new dependency `j-ogg-vorbis`.
Implement playing Vorbis encoded .ogg files for battle/silly music.
# Version NeoForge-1.24.0
Update to NeoForge 1.20.2-20.2.88.
Allow use of Crossbows in battle (it should behave identically to Bows).
# Version Forge-1.24.0
Update to Forge 1.20.2-48.1.0.
The `master` branch of this repository will track the build for Minecraft Forge.
The `neoforge` branch of this repo. will track the build for NeoForge.
Allow use of Crossbows in battle (it should behave identically to Bows).
# Version 1.23.1
More robust handling of disallowed Damage Sources in battle (via config).
Basically, the mod will load all possible damage sources. Damage sources to be
ignored in battle can be modified with "/tbm-server-edit" and clicking on
"ignore\_damage\_sources". It can also be manually modified in the server
config's "ignore\_damage\_sources" array.
# Version 1.23.0
Support reproducible builds. This means that if this mod is compiled, then it
should be byte-by-byte exactly the same as another compiled jar (assuming it
was compiled with the same version of Java and same mod version.)
Update to Forge 1.20.1-47.1.0.
Experimental support for "use item" for unrecognized items. Note that this uses
the Minecraft API's `Item.finishUsingItem(...)`.
# Version 1.22.0
Update to Forge 1.19.3-44.1.0.
# Version 1.21.4
More refactoring of check-if-in-battle lookup code.
Fix potential bug where clients cannot attack entities if their config didn't
exist client-side. They should now always be available to attack regardless of
whether or not the client has the config entry for an entity.
# Version 1.21.3
Implemented "player-only" battles, which can be enabled in the server-side
config or set using `/tbm-server-edit`. (Somewhat untested because I am only 1
person.)
# Version 1.21.2
Refactored checking-if-in-battle code from `O(n)` to `O(1)` complexity.
(In other words, utilizes the HashMap's constant time lookup of a key instead of
checking every key's id if the entity's id is the same. This speeds up the
lookup from linear to constant time.)
# Version 1.21.1
Refactored checking-if-in-battle code to be more efficient.
# Version 1.21.0
Updated mod to use forge-1.19.2-43.1.1
# Version 1.20
Implemented ignoring specific damage sources while in battle (like lava or
drowning). The damage sources can be tweaked with `/tbm-server-edit`.
Also updated entity entries in the config so that the mod logs much less when an
entity does not have specific values (which gets logged if missing).
Note that the TBM_Config.toml file has been updated. This means that your existing
TBM_Config.toml will be renamed and replaced by the newly updated config.
If you made changes to this file, you will need to apply them again to the new
updated config to keep the changes.
# Version 1.19
Updated to work with forge-1.19-41.1.0. (Somehow, this mod's version number
ended up being the same as Minecraft's version number. Don't count on this to
remain the same.)
Added Allay, Frog, Tadpole, and Warden entities to the config. (The config
version has incremented, so existing config will be replaced. Note that existing
config will not be deleted, but renamed.)
# Version 1.18.7
Incremented network channel's protocol version to 2, because a packet's format
was changed in the previous version.
# Version 1.18.6
Add server config option to disable the turn timer (recommended to not disable
the turn timer, otherwise a player could hang a battle for forever).
Fix turn timer not respecting the server's turn timer value. For example, if the
server had it set to 5 seconds, but the client had it set to 15 seconds, the
turn timer would erronously show 15 seconds at the start of the next turn.
# Version 1.18.5
Fix invalid Battle text output when a Player drinks a potion.
# Version 1.18.4
Fix attacks not hitting due to "invulnerability frames".
Change attacks to be applied approx 150ms apart.
# Version 1.18.3
[The ability to change server-side config from within the game using
"/tbm-server-edit".](https://youtu.be/9xkbHNWkcIY)
Fix Battle not checking Player "speed/slow" status to apply the
"player\_haste\_speed" and "player\_slow\_speed" settings.
# Version 1.18.2
The list of targets in the Battle GUI when selecting a target did not display
Players' names in their team color. This version now shows Player names with
their team color in the target buttons/list.
# Version 1.18.1
Fix battle text output such that players in teams will have their name displayed
with the team's color (and some refactoring of related battle text output).
# Version 1.18.0
Mod now works with Forge-1.18.2-40.1.0 .
Note that the mod's version is confusingly similar (1.18.0).
TBM should allow players to eat any food from any mod (including food items from Pam's HarvestCraft).
# Version 1.17.2.6
(Branched from 1.17.2)
Implemented getting EntityInfo for CustomNPCs that have the same name as a
"custom entry" in the "server\_config.entity" array in the config.
# Version 1.17.2.5
(Branched from 1.17.2)
Refactored OtherModHandling.java to be more efficient when handling CustomNPCs
DamagedEvent.
# Version 1.17.2.4
(Branched from 1.17.2)
Fix usage of NpcAPI.
# Version 1.17.2.3
(Branched from 1.17.2)
Fix potential unhandled exception crash bug related to handling CustomNPCs
Player hurt events.
# Version 1.17.2.2
(Branched from 1.17.2)
Fix potential NullPointerException crash bug.
# Version 1.17.2.1
(Branched from 1.17.2)
Attempt to fix CustomNPCs mods not damaging players in TurnBased combat.
# Version 1.17.2
(try to) Fix potential freeze bug when an entity leaves battle.
# Version 1.17.1
Add experimental support for Pam's Harvestcraft foods.
# Version 1.17
Update mod for Forge 1.16.5-36.1.0 .
# Version 1.16
Add config options regarding creeper behavior.
By default, creepers will not explode if they leave battle (maybe due to a
player fleeing), until the cooldown time ends.
By default, creepers that explode will damage anyone, even if they weren't in
turn-based battle.
# Version 1.15
Add server-side config option that determines on what turn a Creeper will
explode in battle.
# Version 1.14
Implemented support for Creepers in battle.
Added an option to the config to prevent config from being overwritten on
update.
Fixed some display text during battle.
# Version 1.13
Disabled midi playback due to currently being unable to change its volume.
Note mp3 playback breaks sometimes. Using an mp3 file without album art seems to
work though...
# Version 1.12
Fix potential crash if mod is loaded on dedicated server.
# Version 1.11
Fixed text display in BattleGUI.
Updated TBM\_Config.toml with new vanilla mobs.
Fixed version parsing of TBM\_Config.toml.
# Version 1.10
Updated for 1.16.3
Compiled against forge version "1.16.3-34.1.0"
However, MP3 playing seems to not work sometimes.
# Version 1.9
Updated mod for 1.14.4
(Took a long while, and no new features were added due to making sure everything
still works).
Compiled against forge version "1.14.4-28.1.0"
Entity names have changed in the config, so this newer version will replace the
old version. Older existing config should be renamed rather than deleted.
# Version 1.8
Update to forge version "1.12.2-14.23.5.2768".
Fix bug where more than config-set-amount of entities can be in battle.
Add mp3 support, can now play mp3s.
Minor improvements.
# Version 1.7
Fix bug where after using "/tbm-edit", ignore_battle option is saved in
config with the wrong name.
Add "/tbm-edit custom", which lets an OP add an entity entry for entities with
custom names (via name-tags). The entry added into the config file will use
"custom_name" instead of "name" to specify if it is a regular entity entry
or an entry for a specific custom name.
Minor fixes and improvements.
# Version 1.6
Fix bug where player can start battle with self.
Change config to use ".toml" instead of ".xml".
Added command "/tbm-edit" that allows OPs to edit entity entries for TBM.
Can be used to add mobs from other mods easily.
Change how battle info text is displayed.
# Version 1.5
Fix proper consumption of food/potion items in battle.
Added some debug output on internal freeze occurrence (investigation of the
freeze bug is still ongoing).
# Version 1.4
Fix duplicate "... entered battle" messages.
Added max-distance config option for how close a monster must be to initiate
battle (when triggered by a monster targeting a player or entity in battle).
Some internal fixes and refactorings.
# Version 1.3
Added a battle-cooldown and related config option. Now, when leaving battle, a
cooldown timer (default 5 seconds) prevents entities from
attacking/being-attacked for the duration of the cooldown. Can be set to a
minimum of 1 second and maximum of 10 seconds.
"/tbm-enable-all" and "/tbm-disable-all" now notifies all players when they are
invoked by an OP.
Battles can now be started/joined by hostile mobs when they target a player or
other entity in battle, instead of just entering on attack. Old
battle-starting-behavior can be used by setting the related config option.
(This change was made to keep zombies from gathering around the player when
the config option for freezing entities in battle is enabled.)
Non-player entities in battle now primarily attack entities they are already
targeting (via a call to EntityLiving's "getAttackTarget()").
Note since config version is now 5, older config will be renamed and the new
config will take its place.
# Version 1.2
Fixed "/tbm-enable" and "/tbm-disable" not working in singleplayer.
Added commands:
- "/tbm-enable-all"
- "/tbm-disable-all"
Only OPs can use these new commands to enable or disable turn-based-battle for
everyone.
Note that if "/tbm-disable-all" is invoked, joining players will also have
turn-based-battle disabled for them. Invoking "/tbm-enable-all" will change this
back to the default, where turn-based-battle is enabled for joining players.
# Version 1.1
Added commands to enable/disable turn-based-battle on-demand.
Commands are:
- "/tbm-enable"
- "/tbm-disable"
- "/tbm-set \<player> \<true/false>"
There is a config option to allow anyone to use "/tbm-enable" and "/tbm-disable".
Only OPs can use "/tbm-set" (permission level 2).
Note that since config version has been updated, pre-existing config will be
renamed and the newer config will take its place.
# Version 1.0
Features:
- Turn based combat with hostile mobs (excluding passive and bosses) by default
- Config generated at ".minecraft/config/TurnBasedMinecraft/TBM_Config.xml
- Old config is renamed if new config exists with newer mod version
- Battle is very configurable per mob and also for all players in config
- Can add mobs unique to other mods in config (using full Java Class name of mob)
- Can set config on server/singleplayer to freeze mobs in combat
- Can add battle/silly music in ".minecraft/config/TurnBasedMinecraft/Music"
that activates depending on mob types in battle
- What determines battle or silly can be set client-side in config
- Unknown types defaults to battle music instead of silly music
- Can set max battle combatants in config
- Can use bow/arrows in battle (currently different projectile weapons provided
by different mods are not supported)
- Players in creative-mode will not enter turn-based battle