MoonlightCore its a library mod for mod developers to simplify the development of multi-loader mods, providing a set of abstractions of loader-specific APIs and self-provided APIs
How to Install Moonlight Core (Mod)
Moonlight Core by RealLeoxian is verified for Fabric, Forge, Neoforge across Minecraft versions 1.20.1, 1.21.1, 26.1, 26.1.1, 26.1.2 (latest release: 26.1.2.12-beta, file size: 493 KB). Follow the steps below to install it safely from ModCraft.tv:
- Click the Download button above and select your Minecraft version (1.20.1, 1.21.1, 26.1, 26.1.1, 26.1.2) and platform (Fabric, Forge, Neoforge).
- Make sure you have the compatible loader or environment installed for Fabric, Forge, Neoforge.
- Move the downloaded Moonlight Core file into your Minecraft
.minecraft/modsfolder and launch the game.
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 13d ago | 1 | ||||
| 13d ago | 1 | ||||
| 13d ago | 1 | ||||
| 13d ago | 1 | ||||
| 17d ago | 1 | ||||
| 17d ago | 1 | ||||
| 17d ago | 1 | ||||
| 17d ago | 1 | ||||
| 22d ago | 1 | ||||
| 22d ago | 1 | ||||
| 1mo ago | 1 | ||||
| 1mo ago | 1 | ||||
| 1mo ago | 1 | ||||
| 1mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 2mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| 11mo ago | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 | ||||
| last yr. | 1 |
GlobalStoragewas renamed toGlobalDataStorage- To get a
GlobalDataStorageit's factory must be registered usingGlobalDataStorageRegistrar GlobalDataStorage#getOrCreatenow only gets anid- Now
GlobalDataStorages cannot be registered once the server is starting
GlobalStoragewas renamed toGlobalDataStorage- To get a
GlobalDataStorageit's factory must be registered usingGlobalDataStorageRegistrar GlobalDataStorage#getOrCreatenow only gets anid- Now
GlobalDataStorages cannot be registered once the server is starting
- Added
syncDatamethod onDataAttachmentHolder - Added
GlobalStorageinterface to have global data across the server
- Added
syncDatamethod onDataAttachmentHolder - Added
GlobalStorageinterface to have global data across the server
- Fixed codec on Neoforge's data attachment implementation
- Fixed codec on Neoforge's data attachment implementation
- Fixed DataComponents stream codec generics
- Fixed DataComponents stream codec generics
- Removed
addTaskmethod fromServerConfigurationNetworking, now having to useBEFORE_CONFIGUREandCONFIGUREevents to register custom configuration tasks - Added
completeTaskmethod onServerConfigrationNetowking$Context - Packet payload type registration got split from the handler registration, now to register a packet payload you have to use
PayloadTypeRegisterstatic methods and useregisterHandlermethod from networking classes ([Client/Server][Configuration/Play]Networking) - Fixed an error on NeoForge with
FluidModel$Unbakedmodel trying to be loaded from dedicated server - Internal changes to config synchronization now being fully at
PLAYphase, avoiding problems with race conditions betweenCONFIGURATIONandPLAY - Now mods don't have to register their mod's
EventBusneitherDeferredRegistrar - Added Attachments layer abstraction, you can build your own using
DataAttachmentTypeand get them usingDataAttachmentHolder#of
- Removed
addTaskmethod fromServerConfigurationNetworking, now having to useBEFORE_CONFIGUREandCONFIGUREevents to register custom configuration tasks - Added
completeTaskmethod onServerConfigrationNetowking$Context - Packet payload type registration got split from the handler registration, now to register a packet payload you have to use
PayloadTypeRegisterstatic methods and useregisterHandlermethod from networking classes ([Client/Server][Configuration/Play]Networking) - Fixed an error on NeoForge with
FluidModel$Unbakedmodel trying to be loaded from dedicated server - Internal changes to config synchronization now being fully at
PLAYphase, avoiding problems with race conditions betweenCONFIGURATIONandPLAY - Now mods don't have to register their mod's
EventBusneitherDeferredRegistrar - Added Attachments layer abstraction, you can build your own using
DataAttachmentTypeand get them usingDataAttachmentHolder#of
- Fix weird error at configuration-phase sync config task when joining a world
- Removed XPlat
ModEntrypointandClientModEntrypoint, now fabric platform must implementMoonlightCoreInitializer - Added
BEFORE_CONFIGUREandCONFIGUREconnection events, removingRegisterConfigurationTasksEvent - Removed old way of registering things, now using
NewRegistryEventandRegisterEvent Registrarwas replaced withRegistryHelper- Removed
initializeModmethods from client and common RegistryBuildernow returns a supplier with the registry
- Fix weird error at configuration-phase sync config task when joining a world
- Removed XPlat
ModEntrypointandClientModEntrypoint, now fabric platform must implementMoonlightCoreInitializer - Added
BEFORE_CONFIGUREandCONFIGUREconnection events, removingRegisterConfigurationTasksEvent - Removed old way of registering things, now using
NewRegistryEventandRegisterEvent Registrarwas replaced withRegistryHelper- Removed
initializeModmethods from client and common RegistryBuildernow returns a supplier with the registry
- Fabric platform implementation was improved
- Added
ClientTooltipComponentRegistrar - Added
ResourceStacksStorageto use built-inResourceStack - Added convention tags (
c:tags) ArgumentTypeRegistrarno longer needs a namespaceinitmethods from registrars were renamed toconfigure- Fluids API is no longer marked as experimental
- removed
canRiddenMobsFloatfromFluidBehavior - Added Javadoc
- Fabric platform implementation was improved
- Added
ClientTooltipComponentRegistrar - Added
ResourceStacksStorageto use built-inResourceStack - Added convention tags (
c:tags) ArgumentTypeRegistrarno longer needs a namespaceinitmethods from registrars were renamed toconfigure- Fluids API is no longer marked as experimental
- removed
canRiddenMobsFloatfromFluidBehavior - Added Javadoc
## Fixes
1. Fixed events not being all invoked on fabric
2. Fixed valid configurations requests task not being completed (only caused problems on fabric apparently???), preventing world load
## Fluid Registration API
The previous version Fluid Registration API was BAD, I had already noticed that when I made the first
version but IDK why I even released it. HOWEVER, here is the new (still experimental) fluid registration api.
### Common
#### FluidRegistrar
A registrar for fluids, moving from the
Platform#registerFluid methods toits own interface. Fluids need their properties, attribute handler, tag and behavior. Example:
``
java
TagKey<Fluid> TAG = TagKey.create(Registries.FLUID, Identifier.parse("moonlightcore:slime"));
FluidRegistrar.init("examplemod",registrar -> {
registrar.register(
"slime",
TAG,
FluidProperties.DEFAULT,
FluidAttributesHandler.DEFAULT,
FluidBehavior.WATER_LIKE
);
});
`
#### FluidBehavior
FluidBehavior handles how the entity interacts with the fluid, how the entity will move, if
it can swim, drown, supports boats, sprinting, etc. Anyways, not everyone will have some
hyper mega advanced fluid physics applied to the entities so there is a builder for
simple fluids :p
#### FluidAttributesHandler
Handle some properties that are used on Neoforge and on Fabric:
- Display name and it's color
- Bucket fill/empty sound
- Fall distance modifier
- Light emission level
- Temperature
- Viscosity
### Client
#### FluidRendererRegistrar
A registrar for fluids rendering, used to register fluid models and FluidRenderHandler`s#### FluidRenderHandler
Handles the tooltip used with the tooltip and the color of the fluid