diff --git a/fabric-blockrenderlayer-v1/build.gradle b/fabric-blockrenderlayer-v1/build.gradle index 429815d5e..5ee0ad416 100644 --- a/fabric-blockrenderlayer-v1/build.gradle +++ b/fabric-blockrenderlayer-v1/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-blockrenderlayer-v1" -version = getSubprojectVersion(project, "1.1.0") +version = getSubprojectVersion(project, "1.1.1") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/impl/blockrenderlayer/BlockRenderLayerMapImpl.java b/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/impl/blockrenderlayer/BlockRenderLayerMapImpl.java index 0c25354f8..da0d4bf16 100644 --- a/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/impl/blockrenderlayer/BlockRenderLayerMapImpl.java +++ b/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/impl/blockrenderlayer/BlockRenderLayerMapImpl.java @@ -16,12 +16,12 @@ package net.fabricmc.fabric.impl.blockrenderlayer; +import java.util.HashMap; +import java.util.Map; import java.util.function.BiConsumer; import net.minecraft.client.render.RenderLayer; import net.minecraft.item.Item; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; import net.minecraft.block.Block; @@ -32,58 +32,46 @@ public class BlockRenderLayerMapImpl implements BlockRenderLayerMap { @Override public void putBlock(Block block, RenderLayer renderLayer) { - if (block == null) { - LOG.warn("Ignoring request to map null block to BlockRenderLayer"); - } else if (renderLayer == null) { - LOG.warn("Ignoring request to map block " + block.toString() + " to null BlockRenderLayer"); - } else { - blockHandler.accept(block, renderLayer); - } + if (block == null) throw new IllegalArgumentException("Request to map null block to BlockRenderLayer"); + if (renderLayer == null) throw new IllegalArgumentException("Request to map block " + block.toString() + " to null BlockRenderLayer"); + + blockHandler.accept(block, renderLayer); } @Override public void putItem(Item item, RenderLayer renderLayer) { - if (item == null) { - LOG.warn("Ignoring request to map null item to BlockRenderLayer"); - } else if (renderLayer == null) { - LOG.warn("Ignoring request to map item " + item.toString() + " to null BlockRenderLayer"); - } else { - itemHandler.accept(item, renderLayer); - } + if (item == null) throw new IllegalArgumentException("Request to map null item to BlockRenderLayer"); + if (renderLayer == null) throw new IllegalArgumentException("Request to map item " + item.toString() + " to null BlockRenderLayer"); + + itemHandler.accept(item, renderLayer); } @Override public void putFluid(Fluid fluid, RenderLayer renderLayer) { - if (fluid == null) { - LOG.warn("Ignoring request to map null fluid to BlockRenderLayer"); - } else if (renderLayer == null) { - LOG.warn("Ignoring request to map fluid " + fluid.toString() + " to null BlockRenderLayer"); - } else { - fluidHandler.accept(fluid, renderLayer); - } + if (fluid == null) throw new IllegalArgumentException("Request to map null fluid to BlockRenderLayer"); + if (renderLayer == null) throw new IllegalArgumentException("Request to map fluid " + fluid.toString() + " to null BlockRenderLayer"); + + fluidHandler.accept(fluid, renderLayer); } public static final BlockRenderLayerMap INSTANCE = new BlockRenderLayerMapImpl(); - - private static final Logger LOG = LogManager.getLogger(); - - // These should never be used before our Mixin populates them because a non-null BRL instance is - // a required parameter of our methods. They are given dummy consumers that log - // warnings in case something goes wrong. - - private static BiConsumer<Block, RenderLayer> blockHandler = (b, l) -> { - LOG.warn("Unable to map Block {} to BlockRenderLayer. Mapping handler not ready.", b); - }; - private static BiConsumer<Item, RenderLayer> itemHandler = (b, l) -> { - LOG.warn("Unable to map Item {} to BlockRenderLayer. Mapping handler not ready.", b); - }; + private static Map<Block, RenderLayer> blockRenderLayerMap = new HashMap<>(); + private static Map<Item, RenderLayer> itemRenderLayerMap = new HashMap<>(); + private static Map<Fluid, RenderLayer> fluidRenderLayerMap = new HashMap<>(); - private static BiConsumer<Fluid, RenderLayer> fluidHandler = (f, b) -> { - LOG.warn("Unable to map Fluid {} to BlockRenderLayer. Mapping handler not ready.", f); - }; + //This consumers initially add to the maps above, and then are later set (when initialize is called) to insert straight into the target map. + private static BiConsumer<Block, RenderLayer> blockHandler = (b, l) -> blockRenderLayerMap.put(b, l); + private static BiConsumer<Item, RenderLayer> itemHandler = (i, l) -> itemRenderLayerMap.put(i, l); + private static BiConsumer<Fluid, RenderLayer> fluidHandler = (f, b) -> fluidRenderLayerMap.put(f, b); public static void initialize(BiConsumer<Block, RenderLayer> blockHandlerIn, BiConsumer<Item, RenderLayer> itemHandlerIn, BiConsumer<Fluid, RenderLayer> fluidHandlerIn) { + //Add all the pre existing render layers + blockRenderLayerMap.forEach(blockHandlerIn); + itemRenderLayerMap.forEach(itemHandlerIn); + fluidRenderLayerMap.forEach(fluidHandlerIn); + + //Set the handlers to directly accept later additions blockHandler = blockHandlerIn; itemHandler = itemHandlerIn; fluidHandler = fluidHandlerIn;