- Extended
DrawsOnLeft
to work withList<? extends FormattedText
instead ofList<Component>
.- Thanks to type erasure™ this isn't binary breaking.
- Changed the
BiMap
implementation used byDynamicRegistry
to a custom one which usesIdentityHashMap
for the inverse.- This fixes issues where mutable registry objects are unable to resolve their keys (not that registry objects should be mutable, but having this issue present is often worse).
- Added a builder for
BasicWandererTrade
.
- Fixed a race condition in Dynamic Registry sync that could cause objects to fail to deserialize.
- Added many new helpers to
DeferredHelper
. - Made
LegacyRecipeProvider#recipeOutput
protected. - Added the
DrawsOnLeft
interface from Apotheosis, which allows for rendering a component tooltip aligned to the left edge of a container screen. - Deprecated the use of auto-generated ids in
RandomAttributeModifier
. - Added datagen support for
DynamicRegistry
objects. - Added
StepFunction.fromBounds
and changed the default representation to the min/max/step form (instead of min/steps/step). - Fixed a logical bug in
EnchantmentUtils.getExperience
which could cause it to report double the intended value. - Made GearSet#tags a Set instead of a List.
- Added
PlaceboContainerMenu#clearContainer(Player, IItemHandler)
. - Added back
GearSetRegistry#getRandomSet
. - Added the datagen utils developed in Apothic Enchanting:
DataGenBuilder
andLegacyRecipeProvider
.
- Fixed json brewing mixes not being applied during initial load of a dedicated server.
- This caused json-based brewing recipes (i.e. those from Apothic Attributes) to not work until running
/reload
.
- This caused json-based brewing recipes (i.e. those from Apothic Attributes) to not work until running
- Fixed a crash when calling
GearSet#apply
caused by iterating an unsupported equipment slot. - RuyaSavascisi: Added Turkish Localization.
- Renamed
DeferredHelper#menu(String, MenuType)
tomenuType
to resolve a generic inference issue.
- Added immediate-mode registration helpers for BE and Menu types.
- The old deferred-mode menu type helpers were removed in favor of the new ones.
- The BE type helpers rely on unfreezing the registry due to intrusive holders.
- Added
DeferredHelper#getRegisteredObjects
and made DH retain a list of registered objects to support this.- The
Registrar
objects are still discarded, and the objects are not accessible until after registration.
- The
- Added
DynamicRegistry#holderStreamCodec
. - Fixed
OptionalStackCodec
crashing when decoding optional values which were not present. - Restricted
DynamicHolder
to the registry typeR
instead ofT extends R
.
- Fixed a dependency configuration issue.
- Updated to 1.21.1.
- Buildscript now uses ModDevGradle.
- Expanded
DeferredHelper
to cover various common cases without resorting to usage of the supplier overloads. - Documented all methods of
DeferredHelper
. - Made immediately-resolvable types (i.e. data component types) bypass uses of
DeferredHolder
when usingDeferredHelper
. - Gave
ITabFiller
access to the fullBuildCreativeModeTabContentsEvent
for use with data registries.
- Fixed supporter wings not rendering.
- Made
DynamicRegistry#beginReload
andDynamicRegistry#onReload
called on SSP hosts with the original registry data.- This fixes a bug where json brewing mixes were not being populated to JEI.
- Fixed Dynamic Registries not registering stream codecs.
- Fixed a crash that would occur if a JsonMix was instantiated.
- Added a registration helper for data components.
- Fixed a dedicated server crash.
- Ported to 1.21
- Added
StreamCodec
support toDynamicRegistry
. - Renamed
ItemAdapter
toOptionalStackCodec
. - Removed the
/placbeo string_to_obj
command. - Removed
PotionIngredient
,PacketDistro
,LootSystem
,PoolBuilder
, andBrewingRecipeRegistry
.
- Fixed
ButtonClickMessage
's ID being null.
- Fixed the name of
QuickMoveMenu#moveItemStackTo
being incorrect.
- Fixed
StackLootEntry.TYPE
using static registration. - Added datagen helper classes
RuntimeDatagenHelpers
andDynamicRegistryProvider
. - Removed
MenuUtil.merge
andMenuUtil.split
.- After neoforged/NeoForge#599 a single dataslot can sync a full int.
- Made
TickingBlockEntityType
use aTickSide
enum instead of two booleans. - Updated and/or added documentation for various objects.
- Updated the generated unlocalized name for the new
singlePotion
/multiPotion
helpers.
- Fixed
brewing_mixes
not loading.
- Added the
brewing_mixes
json loader, which requires less boilerplate to add brewing recipes.
- Added more
DeferredHelper
methods for creating potions. - Removed the deprecated
collections
package. - Added the
wanderer_trades
json loader, and config options to remove all non-json trades. - Added the
brewing_recipes
json loader. Does not permit adjusting vanilla recipes or other mods' recipes.
- Fixed synced dynamic registries not working in singleplayer.
- Fixed placebo's primary itemstack codec not functioning.
- Added the
ResourceReloadEvent
, which fires on both client and server resource reload. - Made the
NeoForge.EVENT_BUS
initialized at mod construction.
- Fixed an incompatibility with newer neo versions.
- Eagerly prevent registration of duplicate payload providers.
- Fixed PayloadProvider(s) not being registered.
- Made PayloadProvider versions mandatory, starting at
1
for all payloads.
- Fixed mixins not loading.
- Initial port to 1.20.4.
- Added
speed
param toGradientColor
.
- Added back
EnchantmentUtils.getLevelForExperience
which was missed in 8.5.9.
- Updated EnchantmentUtils to be more useful.
- New version is based on Bookshelf, old version was based on OpenBlocks.
- Fixed RandomAttributeModifier not being re-applicable.
- Fixed
ChatComponentMixin
not being in the client mixin package. - Fixed the Supporter Trail / Wing keybinds causing a crash if pressed before entering the world.
- Fixed an issue with RandomAttributeModifier encountering UUID collisions.
- Fixed supporter keybinds not working.
- Made
ChancedEffectInstance
,RandomAttributeModifier
, andStepFunction
records, and added constant codecs which remove random values. - Deprecated some old GSON code that should no longer be used.
- Fixed
ItemAdapter
's item stack codec usingCompoundTag.CODEC
instead ofNBTAdapter.EITHER_CODEC
.- This meant that nothing was able to use legacy nbt-strings, which isn't entirely a bad thing, but not something that should be enforced yet.
- Fixed startup error from GearSetRegistry.
- Fixed how
CodecMap
's default codec system worked.
- Removed
PSerializable
and usages. Everything is codecs now! - Renamed
SerializerMap
toCodecMap
and switched the internals to work with codecs. - Added
NullableFieldCodec
to work around issues withCodec#optionalFieldOf
- Stolen from Commoble. - Added
GearSet
andChancedEffectInstance
from Apotheosis.- The
GearSetRegistry
was also pulled here. No default gear sets were added.
- The
- Added the key as context to
DynamicRegistry#validateItem
.
- Removed
TypeKeyed
and usages. The keys of dynamic items may now be retrieved from the relevantDynamicRegistry
orDynamicHolder
.
- Added
DynamicRegistry#holderCodec
to easily produce a codec forDynamicHolder
s.
- Added
/placebo hand
for emitting the currently held item in JSON Object form, which is used by dependent mods. - Added
/placebo string_to_obj
for converting legacy NBT-Strings to JSON Object form. - Made it so that
\n
is unescaped when logging chat lines.
- Removed forge dependency line from the mods.toml and marked as Forge and NeoForge for CF.
- The dependency will be added back and the Forge marker will be removed once CF supports Neo correctly.
- Made DynamicRegistry use a linked hash map when syncing to preserve registration order.
- Made CachedObject lazy-init the ConcurrentHashMap stored on ItemStack.
- Renamed the MenuUtil.type overloads because generic inference fails.
- Added a T -> DynamicHolder function.
- Added support for empty holders.
- Major refactor to PlaceboJsonReloadListener and related code.
- Now called DynamicRegistry, and DynamicRegistryObject is now DynamicHolder.
- Made data listeners trigger on the clientside when using PlaceboContainerMenu.
- Added the method
MessageProvider#getNetworkDirection
.
- Reduced
MessageHelper.handlePacket
fromSupplier<Runnable>
toRunnable
. - Added a quick util method for making
SoundEvent
s toDeferredHelper
.
- Refactors and documentation updates to most systems.
- Added additional utils to ContainerUtil for creating MenuType(s).
- Added DeferredHelper and moved registry helper classes to the registry package.
- Added ITabFiller and TabFillingRegistry
- Added the atlas file which loads textures from /blocks and /items.
- Fixed coremods using the wrong package name.
- Updated to Neo.
- Updated buildscripts to automate coremods.json and mixins.json file.
- Added publishing tasks.
- Updated to 1.20.1
- Added SlotUpdateListener so I can stop copying
Runnable listener
into all my menu classes.
- Added an Ingredient codec.
- Made CachedObject use ConcurrentHashMap to avoid issues resolving offthread (induced by FastSuite recipe matching in parallel).
- Reduced conditions-not-met log message from PlaceboJsonReloadList
- Added a method to invalidate all cached objects of a given type.
- Updated TypeKeyed to no longer require setting the serializer. Objects should be aware of what their serializer is, as two serializers should not produce the same object.
- Breaking change for Apotheosis, Gateways, and HNN, so all of those will need to be updated as well.
- Also improved some validation in the deserialization process.
- Added more codec support across the board.
- Made the TagParser accept codec-form CompoundTag (NBT) Objects.
- Fixed a crash that could happen if negative luck was encountered.
- Added new Supporter Wings (Armored, Blaze, Bone, Cloud, Fairy, Mechanical, and Monarch).
- Added CachedObject, which allows for caching of nbt-encoded itemstack objects.
- Fixed a network encode error in ItemAdapter.CODEC.
- More codec things.
- Changed StepFunction.CODEC to accept constant float values as well as the usual definition.
- Added the GetEnchantmentLevelEvent, which allows changing enchantment levels for gameplay purposes.
- Fixed ItemUseEvent not accepting null players as specified by UseOnContext.
- Added a hook for Placebo Container Menus to react to successful shift-click operations.
- Added Codec support to PSerializer.
- Fixed Optional-related crashes.
- Added the ability to access the max and current steps of a StepFunction.
- StepFunction is now a final class.
- Removed DimWeightedJsonReloadListener in favor of better logic in WeightedJsonReloadListener.
- Changed .cfg files such that they preserve insertion order for entries.
- Added everything needed to port Apotheosis.
- Updated to 1.19.2
- Added some additional json utility code.
- Added a variant of blit() that takes a color arg to ClientUtil.
- Fixed the rainbow color breaking on servers.
- Added boilerplate for TOP entity additions.
- Added strict error logging to RecipeHelper.
- Made RecipeHelper accept TagKey as an input type.
- Added more setters to ModifiableEnergyStorage.
- Added the AnvilLandEvent.
- Added a very angry logging message if a TickingEntityBlock has the wrong entity type class.
- Fixed a crash when a dimensional reload listener has no items for that dimension.
- Added DimWeightedJsonReloadListener for dimension-restricted weighted items.
- Pulled in StepFunction from Apotheosis.
- Fixed deserialized StackLootEntries not passing in conditions or functions.
- Added a sketchy reflection-based auto-registration method for SerializerBuilder.
- It coerces read(FriendlyByteBuf), read(JsonObject), write(FriendlyByteBuf) and JsonObject write() from the source class as a serializer.
- Added WeightedJsonReloadListener to better handle weighted entries.
- Re-added the ItemUseEvent needed by Apotheosis.
- Forge declined to add this event, so here it will stay.
- Made RandomAttributeModifier not crash on fail due to how it is used in Gateways.
- Fixes GatewaysToEternity#3
- Rewrite to RecipeHelper to allow recipes to be regenerated on reload, rather than built once.
- This means that configs that adjust recipes can work without restarting the game.
- However, due to timing, it is likely they will need a double-reload to trigger.
- Added various utilities needed by Gateways to Eternity 2.0.0.
- Fixed a bug where Placebo-JSON reload listeners were syncing data back to the host on SSP/LAN
- This caused data to be lost when only part of the object is sent to the client for any reason.
- Made changes to how energy syncs in Placebo Menus.
- This should fix energy values going negative, I hope...
- Fixed recipe types not being registered.
- Minimum Forge Version bumped to 40.1.14.
- Needed to access IContext from AddReloadListenerEvent
- Fixed PlaceboJsonReloadListener(s) failing to sync on the first login to a server.
- This change is breaking, and mods using PJRL from 6.3.0 will not work with this build.
- All impacted mods will have corresponding updates.
- Added new functionality to Configuration to support top-level comments, as well as a title.
- A document detailing the file specification will also be linked to.
- Made QuickMoveHandler call setChanged on the clicked slot for shift-clicks.
- Fixed PlaceboJsonReloadListeners not checking IConditions.
- Fixed RecipeHelper not being invoked.
- Updated to 1.18.2 - This was a breaking change due to tag updates within MC.
- Fixed Rainbow Color.
- Added a new utility to register RecipeTypes since the old method is defunct.
- Added support for loading conditions on ALL placebo-based json reload listeners.
- This includes Hostile Neural Networks, Apotheosis, and any other future projects.
- Added the PlaceboJsonReloadListener, which assists in creation of automatically synced data-driven systems.
- Rewrote EasyContainerData and PlaceboContainerMenu to allow data slots to have separate real and synced values.
- Breaking Change
- Added the base code for TOP compat.
- Added util to check if LCTRL or RCTRL is down.
- Sushomeister: Added Ukranian and Russian translations.
- Hav3funDJ: Added Italian translation.
- Added util to add lore to an itemstack.
- Added the PlaceboTaskQueue to enqueue tick-based tasks.
- Added the ability to handle optional stacks in ItemAdapter.
- Fixed a bug where mods using QuickMoveHandler were crashing outside of dev.
- Fully updated to 1.18.1
- Barebones port of what is necessary for PackMenu (The config system).
- Added util to add the commonly-used inventory shuffle movement rules.
- Added a ton more container util code.
- Full port to 1.17.1
- Added some useful Container, TileEntity, and GUI Utils.
- Moved most JS Coremods to Mixin where possible.
- Stripped new events and PR'd to forge.
- Removed deprecated code.
- Barebones port of what is necessary for PackMenu (The config system).
- Placebo loot tables will now properly have their ID set.
- Added a /placebo command
- Added a subcommand to allow for serialization of existing loot tables.
- Cleaned up some code that needed.
- Code has been updated to Official (Mojang) Mappings.
- TagBuilder and ReflectionHelper have been deprecated and are pending removal.