diff --git a/build.gradle b/build.gradle index 8dc4f87d8..4f52c98e5 100644 --- a/build.gradle +++ b/build.gradle @@ -12,8 +12,8 @@ plugins { def ENV = System.getenv() class Globals { - static def baseVersion = "0.4.4" - static def mcVersion = "19w41a" + static def baseVersion = "0.4.5" + static def mcVersion = "19w42a" static def yarnVersion = "+build.1" } diff --git a/fabric-blockrenderlayer-v1/build.gradle b/fabric-blockrenderlayer-v1/build.gradle index 8c3be96f7..429815d5e 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.0.2") +version = getSubprojectVersion(project, "1.1.0") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/api/blockrenderlayer/v1/BlockRenderLayerMap.java b/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/api/blockrenderlayer/v1/BlockRenderLayerMap.java index bbf81124d..78bff1ea6 100644 --- a/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/api/blockrenderlayer/v1/BlockRenderLayerMap.java +++ b/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/api/blockrenderlayer/v1/BlockRenderLayerMap.java @@ -20,6 +20,7 @@ import net.fabricmc.fabric.impl.blockrenderlayer.BlockRenderLayerMapImpl; import net.minecraft.block.Block; import net.minecraft.client.render.RenderLayer; import net.minecraft.fluid.Fluid; +import net.minecraft.item.Item; /** * Use to associate blocks or fluids with block render layer other than default. @@ -44,7 +45,16 @@ public interface BlockRenderLayerMap { * @param renderLayer Render layer. Should be one of the layers used for terrain rendering. */ void putBlock(Block block, RenderLayer renderLayer); - + + /** + * Map (or re-map) a item with a render layer. Re-mapping is not recommended but if done, last one in wins. + * Must be called from client thread prior to world load/rendering. Best practice will be to call from mod's client initializer. + * + * @param item Identifies item to be mapped. + * @param renderLayer Render layer. Should be one of the layers used for entity rendering. + */ + void putItem(Item item, RenderLayer renderLayer); + /** * Map (or re-map) a fluid state with a render layer. Re-mapping is not recommended but if done, last one in wins. * Must be called from client thread prior to world load/rendering. Best practice will be to call from mod's client initializer. 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 9ec6ed115..0c25354f8 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 @@ -19,6 +19,7 @@ package net.fabricmc.fabric.impl.blockrenderlayer; 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; @@ -40,6 +41,17 @@ public class BlockRenderLayerMapImpl implements BlockRenderLayerMap { } } + @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); + } + } + @Override public void putFluid(Fluid fluid, RenderLayer renderLayer) { if (fluid == null) { @@ -63,12 +75,17 @@ public class BlockRenderLayerMapImpl implements BlockRenderLayerMap { 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 BiConsumer<Fluid, RenderLayer> fluidHandler = (f, b) -> { LOG.warn("Unable to map Fluid {} to BlockRenderLayer. Mapping handler not ready.", f); }; - public static void initialize(BiConsumer<Block, RenderLayer> blockHandlerIn, BiConsumer<Fluid, RenderLayer> fluidHandlerIn) { + public static void initialize(BiConsumer<Block, RenderLayer> blockHandlerIn, BiConsumer<Item, RenderLayer> itemHandlerIn, BiConsumer<Fluid, RenderLayer> fluidHandlerIn) { blockHandler = blockHandlerIn; + itemHandler = itemHandlerIn; fluidHandler = fluidHandlerIn; } } diff --git a/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/mixin/blockrenderlayer/MixinBlockRenderLayer.java b/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/mixin/blockrenderlayer/MixinBlockRenderLayer.java index 8deebf90d..dc751cab9 100644 --- a/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/mixin/blockrenderlayer/MixinBlockRenderLayer.java +++ b/fabric-blockrenderlayer-v1/src/main/java/net/fabricmc/fabric/mixin/blockrenderlayer/MixinBlockRenderLayer.java @@ -18,7 +18,9 @@ package net.fabricmc.fabric.mixin.blockrenderlayer; import java.util.Map; +import net.minecraft.class_4696; import net.minecraft.client.render.RenderLayer; +import net.minecraft.item.Item; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -29,13 +31,14 @@ import net.fabricmc.fabric.impl.blockrenderlayer.BlockRenderLayerMapImpl; import net.minecraft.block.Block; import net.minecraft.fluid.Fluid; -@Mixin(RenderLayer.class) +@Mixin(class_4696.class) public class MixinBlockRenderLayer { - @Shadow private static Map<Block, RenderLayer> field_20803; - @Shadow private static Map<Fluid, RenderLayer> field_20804; + @Shadow private static Map<Block, RenderLayer> field_21469; + @Shadow private static Map<Item, RenderLayer> field_21470; + @Shadow private static Map<Fluid, RenderLayer> field_21471; @Inject(method = "<clinit>*", at = @At("RETURN")) private static void onInitialize(CallbackInfo info) { - BlockRenderLayerMapImpl.initialize(field_20803::put, field_20804::put); + BlockRenderLayerMapImpl.initialize(field_21469::put, field_21470::put, field_21471::put); } } diff --git a/fabric-events-interaction-v0/build.gradle b/fabric-events-interaction-v0/build.gradle index c072a27ba..67d236add 100644 --- a/fabric-events-interaction-v0/build.gradle +++ b/fabric-events-interaction-v0/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-events-interaction-v0" -version = getSubprojectVersion(project, "0.2.3") +version = getSubprojectVersion(project, "0.2.4") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/eventsinteraction/MixinClientPlayerInteractionManager.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/eventsinteraction/MixinClientPlayerInteractionManager.java index e150aeda6..5d6a10cf7 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/eventsinteraction/MixinClientPlayerInteractionManager.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/eventsinteraction/MixinClientPlayerInteractionManager.java @@ -117,7 +117,7 @@ public class MixinClientPlayerInteractionManager { ActionResult result = UseEntityCallback.EVENT.invoker().interact(player, player.getEntityWorld(), hand, entity, hitResult); if (result != ActionResult.PASS) { if (result == ActionResult.SUCCESS) { - Vec3d hitVec = hitResult.getPos().subtract(entity.method_23317(), entity.method_23318(), entity.method_23321()); + Vec3d hitVec = hitResult.getPos().subtract(entity.getX(), entity.getY(), entity.getZ()); this.networkHandler.sendPacket(new PlayerInteractEntityC2SPacket(entity, hand, hitVec)); } info.setReturnValue(result); diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/eventsinteraction/MixinServerPlayNetworkHandler.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/eventsinteraction/MixinServerPlayNetworkHandler.java index 927ac582d..b5a8ca99c 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/eventsinteraction/MixinServerPlayNetworkHandler.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/eventsinteraction/MixinServerPlayNetworkHandler.java @@ -40,7 +40,7 @@ public class MixinServerPlayNetworkHandler { World world = player.getEntityWorld(); Entity entity = packet.getEntity(world); if (entity != null) { - EntityHitResult hitResult = new EntityHitResult(entity, packet.getHitPosition().add(entity.method_23317(), entity.method_23318(), entity.method_23321())); + EntityHitResult hitResult = new EntityHitResult(entity, packet.getHitPosition().add(entity.getX(), entity.getY(), entity.getZ())); ActionResult result = UseEntityCallback.EVENT.invoker().interact(player, world, packet.getHand(), entity, hitResult); if (result != ActionResult.PASS) { diff --git a/fabric-networking-v0/build.gradle b/fabric-networking-v0/build.gradle index b1fc02427..92d53c0a0 100644 --- a/fabric-networking-v0/build.gradle +++ b/fabric-networking-v0/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-networking-v0" -version = getSubprojectVersion(project, "0.1.4") +version = getSubprojectVersion(project, "0.1.5") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-networking-v0/src/main/java/net/fabricmc/fabric/api/server/PlayerStream.java b/fabric-networking-v0/src/main/java/net/fabricmc/fabric/api/server/PlayerStream.java index 34270f45a..1d4092e1f 100644 --- a/fabric-networking-v0/src/main/java/net/fabricmc/fabric/api/server/PlayerStream.java +++ b/fabric-networking-v0/src/main/java/net/fabricmc/fabric/api/server/PlayerStream.java @@ -88,7 +88,7 @@ public final class PlayerStream { } // fallback - return watching(entity.getEntityWorld(), new ChunkPos((int) (entity.method_23317() / 16.0D), (int) (entity.method_23318() / 16.0D))); + return watching(entity.getEntityWorld(), new ChunkPos((int) (entity.getX() / 16.0D), (int) (entity.getZ() / 16.0D))); } public static Stream<PlayerEntity> watching(BlockEntity entity) { diff --git a/fabric-renderer-api-v1/build.gradle b/fabric-renderer-api-v1/build.gradle index 77a07446c..27a31d12f 100644 --- a/fabric-renderer-api-v1/build.gradle +++ b/fabric-renderer-api-v1/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-renderer-api-v1" -version = getSubprojectVersion(project, "0.2.4") +version = getSubprojectVersion(project, "0.2.5") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-renderer-api-v1/src/main/java/net/fabricmc/fabric/api/renderer/v1/material/BlendMode.java b/fabric-renderer-api-v1/src/main/java/net/fabricmc/fabric/api/renderer/v1/material/BlendMode.java index eb6fe3d76..b04791e67 100644 --- a/fabric-renderer-api-v1/src/main/java/net/fabricmc/fabric/api/renderer/v1/material/BlendMode.java +++ b/fabric-renderer-api-v1/src/main/java/net/fabricmc/fabric/api/renderer/v1/material/BlendMode.java @@ -30,25 +30,25 @@ public enum BlendMode { /** * Fully opaque with depth test, no blending. Used for most normal blocks. */ - SOLID(RenderLayer.method_23577()), + SOLID(RenderLayer.getSolid()), /** * Pixels with alpha > 0.5 are rendered as if {@code SOLID}. Other pixels are not rendered. * Texture mip-map enabled. Used for leaves. */ - CUTOUT_MIPPED(RenderLayer.method_23579()), + CUTOUT_MIPPED(RenderLayer.getCutoutMipped()), /** * Pixels with alpha > 0.5 are rendered as if {@code SOLID}. Other pixels are not rendered. * Texture mip-map disabled. Used for iron bars, glass and other cutout sprites with hard edges. */ - CUTOUT(RenderLayer.method_23581()), + CUTOUT(RenderLayer.getCutout()), /** * Pixels are blended with the background according to alpha color values. Some performance cost, * use in moderation. Texture mip-map enabled. Used for stained glass. */ - TRANSLUCENT(RenderLayer.method_23583()); + TRANSLUCENT(RenderLayer.getTranslucent()); public final RenderLayer blockRenderLayer; @@ -57,13 +57,13 @@ public enum BlendMode { } public static BlendMode fromRenderLayer(RenderLayer renderLayer) { - if (renderLayer == RenderLayer.method_23577()) { + if (renderLayer == RenderLayer.getSolid()) { return SOLID; - } else if (renderLayer == RenderLayer.method_23579()) { + } else if (renderLayer == RenderLayer.getCutoutMipped()) { return CUTOUT_MIPPED; - } else if (renderLayer == RenderLayer.method_23581()) { + } else if (renderLayer == RenderLayer.getCutout()) { return CUTOUT; - } else if (renderLayer == RenderLayer.method_23583()) { + } else if (renderLayer == RenderLayer.getTranslucent()) { return TRANSLUCENT; } else { return DEFAULT; diff --git a/fabric-renderer-indigo/build.gradle b/fabric-renderer-indigo/build.gradle index 6c6593a35..fb95c542b 100644 --- a/fabric-renderer-indigo/build.gradle +++ b/fabric-renderer-indigo/build.gradle @@ -1,5 +1,5 @@ archivesBaseName = "fabric-renderer-indigo" -version = getSubprojectVersion(project, "0.2.5") +version = getSubprojectVersion(project, "0.2.6") dependencies { compile project(path: ':fabric-api-base', configuration: 'dev') diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/indigo/IndigoMixinConfigPlugin.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/indigo/IndigoMixinConfigPlugin.java index c31b4811c..faf8a5739 100644 --- a/fabric-renderer-indigo/src/main/java/net/fabricmc/indigo/IndigoMixinConfigPlugin.java +++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/indigo/IndigoMixinConfigPlugin.java @@ -61,6 +61,14 @@ public class IndigoMixinConfigPlugin implements IMixinConfigPlugin { } static boolean shouldForceCompatibility() { + if(true){ + /** + * TODO: remove me, and fix indigo + * + * This has been done to work around some funky rendering issues as of 19w42a + */ + return true; + } loadIfNeeded(); return forceCompatibility; } diff --git a/fabric-renderer-indigo/src/main/java/net/fabricmc/indigo/renderer/render/BlockRenderInfo.java b/fabric-renderer-indigo/src/main/java/net/fabricmc/indigo/renderer/render/BlockRenderInfo.java index 7c9331315..6f7e71167 100644 --- a/fabric-renderer-indigo/src/main/java/net/fabricmc/indigo/renderer/render/BlockRenderInfo.java +++ b/fabric-renderer-indigo/src/main/java/net/fabricmc/indigo/renderer/render/BlockRenderInfo.java @@ -21,6 +21,7 @@ import java.util.function.Supplier; import net.fabricmc.fabric.api.renderer.v1.material.BlendMode; import net.minecraft.block.BlockState; +import net.minecraft.class_4696; import net.minecraft.client.MinecraftClient; import net.minecraft.client.color.block.BlockColors; import net.minecraft.client.render.RenderLayer; @@ -69,7 +70,7 @@ public class BlockRenderInfo { seed = -1L; defaultAo = modelAO && MinecraftClient.isAmbientOcclusionEnabled() && blockState.getLuminance() == 0; - defaultLayer = RenderLayer.method_22715(blockState); + defaultLayer = class_4696.method_23679(blockState); } public void release() { diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 0836acaad..18d44d6f5 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -17,7 +17,7 @@ ], "depends": { "fabricloader": ">=0.6.2", - "minecraft": "~1.15-alpha.19.39.a" + "minecraft": "~1.15-alpha.19.42.a" }, "description": "Core API module providing key hooks and intercompatibility features." }