Tests do not run yet.
Things of note:
Removed the idea of substitutions, just register multiple items with the same name they will override each other like a normal map.
Decoupled Forge registries from vanilla classes. They now use bouncer classes. MODDERS SHOULD NEVER USE THESE
Introduced more stringent registry locking. As it sits things are only allowed to be registered during the RegistryEvent.Registry phases!
This is to force modders to split up their registrations, and pave the way for calling these functions multiple times during a single MC lifecycle.
ObjectHolder, Missing Mappings, etc... *should* now work for all registry types, nothing should be special cased to Blocks/Items anymore.
Added optional generic dummy factory to registries, to allow registry creators the ability to dummy more then just Blocks.
Re-worked the ItemStack transformer and applied it to ItemBlock and ItemBlockSpecial. Allowing us to cleanup reflective hacks in Block callbacks.
Registry onAdd callback is now only fired on the ACTIVE registry, fixing any issues of temp registries overriding active objects.
Some things to note:
Netty is screwy so currently can't join single player. @cpw
Crafting has been MAJORY reworked. The current GameRegistry functions are nooped, this is IN THE WORKS.
Just need to move the recipe list to a full class registry, and then re implement the in-code recipe registration.
Also, it IS advised that modders move to JSON, because ideally we'll see a S->C recipe syncing system in 1.13
which would allow servers to have custom recipes.
OreDictionary currently 1/2 works, need to write a better algorithm for replacing ingredients.
Please be patient
Rendering:
A lot of functions got a new float parameter, this is similar to partial ticks, needs more research
Major things to note:
Class renames: https://gist.github.com/LexManos/44dd211f90f498ad4015279b103dff86
Tile Entities are now packed in the ChunkData packet.
Forge intends to work around this to better support large moded worlds, but for the time being modders should implement the new function carefully and only send what data they need to!
Minecraft's codebase now has annotations, these are directly from Mojang and should be adheared to!
Added support for package-info.java's containing @Nullable information for all MC code base.
* Adjust generated quads from texture to take texture size into account #2858
* Fix universal bucket not passing through when rightclicking on a non-block
Add proper sound events when picking up modded fluids #2821
* Have FluidUtil execute properly on both sides and sync as expected. Add default sounds to interacting with tanks
* Save sound for filling/emptying in the fluid
commit b3b290aec9d3010a134859da6001ea28a96c2fdc
Merge: c6ce6a0 d803f7d
Author: cpw <cpw@weeksfamily.ca>
Date: Fri Mar 25 13:28:04 2016 -0400
Merge branch 'RegistryRework' of https://github.com/LexManos/MinecraftForge into LexManos-RegistryRework
Implement proper registry slaves. Should help with rollback related issues.
Missing patch
commit d803f7db76f65db9d27302c9804a643bc853dc22
Author: LexManos <LexManos@gmail.com>
Date: Tue Mar 22 03:36:14 2016 -0700
Update VillagerRegistry and use it. Should in theory make custom villagers work now. Using string version instead of int id for networking.
commit eb5e5b4b42fdca26d2a104e4dc1e6a3ea3051a7b
Author: LexManos <LexManos@gmail.com>
Date: Tue Mar 22 02:14:16 2016 -0700
More cleanup.
commit edbc56b2ff314629d0e402709f3cf29fc79c4a3d
Author: LexManos <LexManos@gmail.com>
Date: Tue Mar 22 02:05:23 2016 -0700
More cleanups, removed deprecated UniqueIdentifier {ResourceLocation now}
commit e2df8d1be3c97601508f83dc97b0e8853fa1e271
Author: LexManos <LexManos@gmail.com>
Date: Tue Mar 22 01:29:19 2016 -0700
Stupid generics....
commit 46d57dc4677fa5ff3923e64eaccfb33d7e5aad8d
Author: LexManos <LexManos@gmail.com>
Date: Tue Mar 22 01:00:25 2016 -0700
Some registry tweaking to provde a non-complicated API modders can use.
Getting Ore Names for a non-existent ore will no longer automatically add that Name to the list nor generate an ID.
Tweaks a warning message in the FluidContainerRegistry. No functionality change.
Signed-off-by: King Lemming <kinglemming@gmail.com>
in the case of a possible alternative fluid implementation. If you always called registerFluid, things
should work pretty seamlessly, but if you didn't (gating with an isFluidRegistered check for example)
you should change to register anyway. This way, even if you're not default in the overall instance, you may
become default if you're the only mod present on a server, for example, or in a world save.
This should radically decrease the mixups caused by mod load ordering problems, and other issues around fluid
tracking.
FluidRegistry:
```java
static BiMap<String, Fluid> fluids = HashBiMap.create();
static BiMap<Fluid, Integer> fluidIDs = HashBiMap.create();
...
public static boolean registerFluid(Fluid fluid)
{
if (fluidIDs.containsKey(fluid.getName()))
^^^^^^^
```
There is definitely should be fluids instead fluidIDs. This mistake broke many mods.
This fixes a rather huge issue where FluidStacks on the client could be desynced if a modder was unaware of it.
This is a breaking change but can be mitigated with a transformer to the getter getFluidID().
Signed-off-by: King Lemming <kinglemming@gmail.com>
Set the destination block the to the fluid.
In the previous code the destination block was still Air and would would
cause a crash because air doesn't have a property for LEVEL