This commit is contained in:
modmuss50 2019-11-07 20:35:26 +00:00
parent b7f9825dbb
commit 12515ed9ee
32 changed files with 100 additions and 97 deletions

View file

@ -12,9 +12,9 @@ plugins {
def ENV = System.getenv()
class Globals {
static def baseVersion = "0.4.9"
static def mcVersion = "19w44a"
static def yarnVersion = "+build.2"
static def baseVersion = "0.4.10"
static def mcVersion = "19w45a"
static def yarnVersion = "+build.1"
}
import org.apache.commons.codec.digest.DigestUtils

View file

@ -1,5 +1,5 @@
archivesBaseName = "fabric-blockrenderlayer-v1"
version = getSubprojectVersion(project, "1.1.2")
version = getSubprojectVersion(project, "1.1.3")
dependencies {
compile project(path: ':fabric-api-base', configuration: 'dev')

View file

@ -65,7 +65,10 @@ public class BlockRenderLayerMapImpl implements BlockRenderLayerMap {
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) {
public static void initialize(BiConsumer<Block, RenderLayer> blockHandlerIn, BiConsumer<Fluid, RenderLayer> fluidHandlerIn) {
//Done to handle backwards compat, in previous snapshots Items had their own map for render layers, now the BlockItem is used.
BiConsumer<Item, RenderLayer> itemHandlerIn = (item, renderLayer) -> blockHandlerIn.accept(Block.getBlockFromItem(item), renderLayer);
//Add all the pre existing render layers
blockRenderLayerMap.forEach(blockHandlerIn);
itemRenderLayerMap.forEach(itemHandlerIn);

View file

@ -35,11 +35,10 @@ import net.fabricmc.fabric.impl.blockrenderlayer.BlockRenderLayerMapImpl;
@Mixin(RenderLayers.class)
public class MixinBlockRenderLayer {
@Shadow private static Map<Block, RenderLayer> BLOCKS;
@Shadow private static Map<Item, RenderLayer> ITEMS;
@Shadow private static Map<Fluid, RenderLayer> FLUIDS;
@Inject(method = "<clinit>*", at = @At("RETURN"))
private static void onInitialize(CallbackInfo info) {
BlockRenderLayerMapImpl.initialize(BLOCKS::put, ITEMS::put, FLUIDS::put);
BlockRenderLayerMapImpl.initialize(BLOCKS::put, FLUIDS::put);
}
}

View file

@ -1,5 +1,5 @@
archivesBaseName = "fabric-events-interaction-v0"
version = getSubprojectVersion(project, "0.2.5")
version = getSubprojectVersion(project, "0.2.6")
dependencies {
compile project(path: ':fabric-api-base', configuration: 'dev')

View file

@ -44,7 +44,7 @@ public abstract class MixinMinecraftClient {
private ItemStack fabric_emulateOldPick() {
MinecraftClient client = (MinecraftClient) (Object) this;
ClientPickBlockCallback.Container ctr = new ClientPickBlockCallback.Container(ItemStack.EMPTY);
ClientPickBlockCallback.EVENT.invoker().pick(client.player, client.hitResult, ctr);
ClientPickBlockCallback.EVENT.invoker().pick(client.player, client.crosshairTarget, ctr);
return ctr.getStack();
}
@ -53,7 +53,7 @@ public abstract class MixinMinecraftClient {
MinecraftClient client = (MinecraftClient) (Object) this;
// Do a "best effort" emulation of the old events.
ItemStack stack = ClientPickBlockGatherCallback.EVENT.invoker().pick(client.player, client.hitResult);
ItemStack stack = ClientPickBlockGatherCallback.EVENT.invoker().pick(client.player, client.crosshairTarget);
// TODO: Remove in 0.3.0
if (stack.isEmpty()) {
@ -68,15 +68,15 @@ public abstract class MixinMinecraftClient {
// I don't like that we clone vanilla logic here, but it's our best bet for now.
PlayerInventory playerInventory = client.player.inventory;
if (client.player.abilities.creativeMode && Screen.hasControlDown() && client.hitResult.getType() == HitResult.Type.BLOCK) {
BlockEntity be = client.world.getBlockEntity(((BlockHitResult) client.hitResult).getBlockPos());
if (client.player.abilities.creativeMode && Screen.hasControlDown() && client.crosshairTarget.getType() == HitResult.Type.BLOCK) {
BlockEntity be = client.world.getBlockEntity(((BlockHitResult) client.crosshairTarget).getBlockPos());
if (be != null) {
stack = addBlockEntityNbt(stack, be);
}
}
stack = ClientPickBlockApplyCallback.EVENT.invoker().pick(client.player, client.hitResult, stack);
stack = ClientPickBlockApplyCallback.EVENT.invoker().pick(client.player, client.crosshairTarget, stack);
if (stack.isEmpty()) {
return;
@ -108,7 +108,7 @@ public abstract class MixinMinecraftClient {
@ModifyVariable(at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerInventory;getSlotWithStack(Lnet/minecraft/item/ItemStack;)I"), method = "doItemPick", ordinal = 0)
public ItemStack modifyItemPick(ItemStack stack) {
MinecraftClient client = (MinecraftClient) (Object) this;
ItemStack result = ClientPickBlockApplyCallback.EVENT.invoker().pick(client.player, client.hitResult, stack);
ItemStack result = ClientPickBlockApplyCallback.EVENT.invoker().pick(client.player, client.crosshairTarget, stack);
fabric_itemPickCancelled = result.isEmpty();
return result;
}

View file

@ -1,5 +1,5 @@
archivesBaseName = "fabric-networking-v0"
version = getSubprojectVersion(project, "0.1.6")
version = getSubprojectVersion(project, "0.1.7")
dependencies {
compile project(path: ':fabric-api-base', configuration: 'dev')

View file

@ -17,7 +17,7 @@
package net.fabricmc.fabric.api.network;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.ThreadExecutor;
import net.minecraft.util.thread.ThreadExecutor;
import net.fabricmc.api.EnvType;

View file

@ -33,7 +33,7 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.Packet;
import net.minecraft.util.Identifier;
import net.minecraft.util.PacketByteBuf;
import net.minecraft.util.ThreadExecutor;
import net.minecraft.util.thread.ThreadExecutor;
import net.fabricmc.api.EnvType;
import net.fabricmc.fabric.api.network.ClientSidePacketRegistry;

View file

@ -28,7 +28,7 @@ import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.network.packet.CustomPayloadC2SPacket;
import net.minecraft.util.Identifier;
import net.minecraft.util.ThreadExecutor;
import net.minecraft.util.thread.ThreadExecutor;
import net.fabricmc.api.EnvType;
import net.fabricmc.fabric.api.network.PacketContext;

View file

@ -1,5 +1,5 @@
archivesBaseName = "fabric-registry-sync-v0"
version = getSubprojectVersion(project, "0.2.4")
version = getSubprojectVersion(project, "0.2.5")
dependencies {
compile project(path: ':fabric-api-base', configuration: 'dev')

View file

@ -69,7 +69,7 @@ public final class RegistrySyncManager {
if (accept) {
try {
context.getTaskQueue().supply(() -> {
context.getTaskQueue().submit(() -> {
if (compound == null) {
errorHandler.accept(new RemapException("Received null compound tag in sync packet!"));
return null;

View file

@ -1,5 +1,5 @@
archivesBaseName = "fabric-renderer-api-v1"
version = getSubprojectVersion(project, "0.2.5")
version = getSubprojectVersion(project, "0.2.6")
dependencies {
compile project(path: ':fabric-api-base', configuration: 'dev')

View file

@ -33,7 +33,7 @@ import net.fabricmc.fabric.api.renderer.v1.material.RenderMaterial;
*/
public interface QuadView {
/** Count of integers in a conventional (un-modded) block or item vertex. */
int VANILLA_VERTEX_STRIDE = VertexFormats.POSITION_COLOR_UV_NORMAL.getVertexSizeInteger();
int VANILLA_VERTEX_STRIDE = VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL.getVertexSizeInteger();
/** Count of integers in a conventional (un-modded) block or item quad. */
int VANILLA_QUAD_STRIDE = VANILLA_VERTEX_STRIDE * 4;

View file

@ -1,5 +1,5 @@
archivesBaseName = "fabric-renderer-indigo"
version = getSubprojectVersion(project, "0.2.10")
version = getSubprojectVersion(project, "0.2.11")
dependencies {
compile project(path: ':fabric-api-base', configuration: 'dev')

View file

@ -24,7 +24,7 @@ import static net.minecraft.util.math.Direction.SOUTH;
import static net.minecraft.util.math.Direction.UP;
import static net.minecraft.util.math.Direction.WEST;
import net.minecraft.util.SystemUtil;
import net.minecraft.util.Util;
import net.minecraft.util.math.Direction;
import net.fabricmc.api.EnvType;
@ -95,7 +95,7 @@ enum AoFace {
this.weightFunc = weightFunc;
}
private static final AoFace[] values = SystemUtil.consume(new AoFace[6], (neighborData) -> {
private static final AoFace[] values = Util.create(new AoFace[6], (neighborData) -> {
neighborData[DOWN.getId()] = AOF_DOWN;
neighborData[UP.getId()] = AOF_UP;
neighborData[NORTH.getId()] = AOF_NORTH;

View file

@ -56,7 +56,7 @@ public abstract class EncodingFormat {
public static final int TOTAL_STRIDE;
static {
final VertexFormat format = VertexFormats.POSITION_COLOR_UV_NORMAL;
final VertexFormat format = VertexFormats.POSITION_COLOR_TEXTURE_LIGHT_NORMAL;
VERTEX_X = HEADER_STRIDE + 0;
VERTEX_Y = HEADER_STRIDE + 1;
VERTEX_Z = HEADER_STRIDE + 2;

View file

@ -24,6 +24,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.util.math.Matrix4f;
import net.minecraft.client.util.math.Vector3f;
import net.minecraft.util.math.BlockPos;
@ -96,7 +97,7 @@ public abstract class AbstractQuadRenderer {
final int color = quad.spriteColor(i, 0);
buff.color(color & 0xFF, (color >> 8) & 0xFF, (color >> 16) & 0xFF, (color >> 24) & 0xFF);
buff.texture(quad.spriteU(i, 0), quad.spriteV(i, 0));
buff.defaultOverlay(overlay);
buff.overlay(overlay);
buff.light(quad.lightmap(i));
if (useNormals) {
@ -172,6 +173,6 @@ public abstract class AbstractQuadRenderer {
}
// Unfortunately cannot use brightness cache here unless we implement one specifically for flat lighting. See #329
return blockInfo.blockView.getLightmapCoordinates(blockState, mpos);
return WorldRenderer.method_23793(blockInfo.blockView, blockState, mpos);
}
}

View file

@ -23,6 +23,7 @@ import java.util.function.Function;
import net.minecraft.block.BlockState;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.render.block.BlockModelRenderer;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.client.util.math.Matrix4f;
@ -62,7 +63,7 @@ public class BlockRenderContext extends AbstractRenderContext implements RenderC
return 15 << 20 | 15 << 4;
}
return blockInfo.blockView.getLightmapCoordinates(blockInfo.blockView.getBlockState(pos), pos);
return WorldRenderer.method_23793(blockInfo.blockView, blockInfo.blockView.getBlockState(pos), pos);
}
private float aoLevel(BlockPos pos) {
@ -79,8 +80,8 @@ public class BlockRenderContext extends AbstractRenderContext implements RenderC
this.vanillaRenderer = vanillaRenderer;
this.bufferBuilder = buffer;
this.matrixStack = matrixStack;
this.matrix = matrixStack.peek();
this.normalMatrix = matrixStack.peekNormal();
this.matrix = matrixStack.method_23760().method_23761();
this.normalMatrix = matrixStack.method_23760().method_23762();
this.seed = seed;
this.overlay = overlay;
@ -100,7 +101,7 @@ public class BlockRenderContext extends AbstractRenderContext implements RenderC
protected void acceptVanillaModel(BakedModel model) {
isCallingVanilla = true;
didOutput = didOutput && vanillaRenderer.tesselate(blockInfo.blockView, model, blockInfo.blockState, blockInfo.blockPos, matrixStack, bufferBuilder, false, random, seed, overlay);
didOutput = didOutput && vanillaRenderer.render(blockInfo.blockView, model, blockInfo.blockState, blockInfo.blockPos, matrixStack, bufferBuilder, false, random, seed, overlay);
isCallingVanilla = false;
}

View file

@ -80,7 +80,7 @@ public class BlockRenderInfo {
}
int blockColor(int colorIndex) {
return 0xFF000000 | blockColorMap.getColorMultiplier(blockState, blockView, blockPos, colorIndex);
return 0xFF000000 | blockColorMap.getColor(blockState, blockView, blockPos, colorIndex);
}
boolean shouldDrawFace(Direction face) {

View file

@ -23,9 +23,10 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import net.minecraft.block.BlockState;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.chunk.BlockLayeredBufferBuilderStorage;
import net.minecraft.client.render.chunk.ChunkBatcher.ChunkRenderData;
import net.minecraft.client.render.chunk.ChunkBatcher.ChunkRenderer;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.render.chunk.BlockBufferBuilderStorage;
import net.minecraft.client.render.chunk.ChunkBuilder.ChunkData;
import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
import net.minecraft.client.render.chunk.ChunkRendererRegion;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.BlockRenderView;
@ -69,8 +70,8 @@ public class ChunkRenderInfo {
private final BlockPos.Mutable chunkOrigin = new BlockPos.Mutable();
AccessChunkRendererData chunkData;
ChunkRenderer chunkRenderer;
BlockLayeredBufferBuilderStorage builders;
BuiltChunk chunkRenderer;
BlockBufferBuilderStorage builders;
BlockRenderView blockView;
private final Object2ObjectOpenHashMap<RenderLayer, BufferBuilder> buffers = new Object2ObjectOpenHashMap<>();
@ -82,7 +83,7 @@ public class ChunkRenderInfo {
aoLevelCache.defaultReturnValue(Float.MAX_VALUE);
}
void prepare(ChunkRendererRegion blockView, ChunkRenderer chunkRenderer, ChunkRenderData chunkData, BlockLayeredBufferBuilderStorage builders) {
void prepare(ChunkRendererRegion blockView, BuiltChunk chunkRenderer, ChunkData chunkData, BlockBufferBuilderStorage builders) {
this.blockView = blockView;
this.chunkOrigin.set(chunkRenderer.getOrigin());
this.chunkData = (AccessChunkRendererData) chunkData;
@ -126,7 +127,7 @@ public class ChunkRenderInfo {
int result = brightnessCache.get(key);
if (result == Integer.MAX_VALUE) {
result = blockView.getLightmapCoordinates(blockView.getBlockState(pos), pos);
result = WorldRenderer.method_23793(blockView, blockView.getBlockState(pos), pos);
brightnessCache.put(key, result);
}

View file

@ -90,8 +90,8 @@ public class ItemRenderContext extends AbstractRenderContext implements RenderCo
this.itemStack = stack;
this.bufferBuilder = buffer;
this.matrixStack = matrixStack;
this.matrix = matrixStack.peek();
this.normalMatrix = matrixStack.peekNormal();
this.matrix = matrixStack.method_23760().method_23761();
this.normalMatrix = matrixStack.method_23760().method_23762();
this.overlay = overlay;
this.vanillaHandler = vanillaHandler;

View file

@ -19,9 +19,9 @@ package net.fabricmc.fabric.impl.client.indigo.renderer.render;
import java.util.function.Consumer;
import net.minecraft.block.BlockState;
import net.minecraft.client.render.chunk.BlockLayeredBufferBuilderStorage;
import net.minecraft.client.render.chunk.ChunkBatcher.ChunkRenderData;
import net.minecraft.client.render.chunk.ChunkBatcher.ChunkRenderer;
import net.minecraft.client.render.chunk.BlockBufferBuilderStorage;
import net.minecraft.client.render.chunk.ChunkBuilder.ChunkData;
import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
import net.minecraft.client.render.chunk.ChunkRendererRegion;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.client.util.math.Matrix4f;
@ -83,7 +83,7 @@ public class TerrainRenderContext extends AbstractRenderContext implements Rende
}
};
public TerrainRenderContext prepare(ChunkRendererRegion blockView, ChunkRenderer chunkRenderer, ChunkRenderData chunkData, BlockLayeredBufferBuilderStorage builders) {
public TerrainRenderContext prepare(ChunkRendererRegion blockView, BuiltChunk chunkRenderer, ChunkData chunkData, BlockBufferBuilderStorage builders) {
blockInfo.setBlockView(blockView);
chunkInfo.prepare(blockView, chunkRenderer, chunkData, builders);
return this;
@ -96,8 +96,8 @@ public class TerrainRenderContext extends AbstractRenderContext implements Rende
/** Called from chunk renderer hook. */
public boolean tesselateBlock(BlockState blockState, BlockPos blockPos, final BakedModel model, MatrixStack matrixStack) {
this.matrix = matrixStack.peek();
this.normalMatrix = matrixStack.peekNormal();
this.matrix = matrixStack.method_23760().method_23761();
this.normalMatrix = matrixStack.method_23760().method_23762();
try {
aoCalc.clear();

View file

@ -30,20 +30,20 @@ import net.fabricmc.fabric.impl.client.indigo.renderer.accessor.AccessAmbientOcc
@Mixin(targets = "net.minecraft.client.render.block.BlockModelRenderer$AmbientOcclusionCalculator")
public abstract class MixinAmbientOcclusionCalculator implements AccessAmbientOcclusionCalculator {
@Shadow private float[] colorMultiplier;
@Shadow private int[] brightness;
@Shadow private float[] brightness;
@Shadow private int[] light;
@Shadow
public abstract void apply(BlockRenderView blockRenderView, BlockState blockState, BlockPos pos, Direction face, float[] aoData, BitSet controlBits);
@Override
public float[] fabric_colorMultiplier() {
return colorMultiplier;
return brightness;
}
@Override
public int[] fabric_brightness() {
return brightness;
return light;
}
@Override

View file

@ -47,11 +47,11 @@ public abstract class MixinBlockModelRenderer implements AccessBlockModelRendere
protected BlockColors colorMap;
@Shadow
protected abstract void updateShape(BlockRenderView blockView, BlockState blockState, BlockPos blockPos, int[] vertexData, Direction face, float[] aoData, BitSet controlBits);
protected abstract void getQuadDimensions(BlockRenderView blockView, BlockState blockState, BlockPos blockPos, int[] vertexData, Direction face, float[] aoData, BitSet controlBits);
private final ThreadLocal<BlockRenderContext> CONTEXTS = ThreadLocal.withInitial(BlockRenderContext::new);
@Inject(at = @At("HEAD"), method = "tesselate", cancellable = true)
@Inject(at = @At("HEAD"), method = "render(Lnet/minecraft/world/BlockRenderView;Lnet/minecraft/client/render/model/BakedModel;Lnet/minecraft/block/BlockState;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumer;ZLjava/util/Random;JI)Z", cancellable = true)
private void hookTesselate(BlockRenderView blockView, BakedModel model, BlockState state, BlockPos pos, MatrixStack matrix, VertexConsumer buffer, boolean checkSides, Random rand, long seed, int overlay, CallbackInfoReturnable<Boolean> ci) {
if (!((FabricBakedModel) model).isVanillaAdapter()) {
BlockRenderContext context = CONTEXTS.get();
@ -69,6 +69,6 @@ public abstract class MixinBlockModelRenderer implements AccessBlockModelRendere
@Override
public void fabric_updateShape(BlockRenderView blockView, BlockState blockState, BlockPos pos, int[] vertexData, Direction face, float[] aoData, BitSet controlBits) {
updateShape(blockView, blockState, pos, vertexData, face, aoData, controlBits);
getQuadDimensions(blockView, blockState, pos, vertexData, face, aoData, controlBits);
}
}

View file

@ -32,9 +32,9 @@ import net.minecraft.block.entity.BlockEntity;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.block.BlockRenderManager;
import net.minecraft.client.render.chunk.BlockLayeredBufferBuilderStorage;
import net.minecraft.client.render.chunk.ChunkBatcher;
import net.minecraft.client.render.chunk.ChunkBatcher.ChunkRenderer;
import net.minecraft.client.render.chunk.BlockBufferBuilderStorage;
import net.minecraft.client.render.chunk.ChunkBuilder;
import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
import net.minecraft.client.render.chunk.ChunkRendererRegion;
import net.minecraft.client.render.model.BakedModel;
import net.minecraft.client.util.math.MatrixStack;
@ -67,10 +67,10 @@ public class MixinChunkRebuildTask {
@Shadow
protected ChunkRendererRegion field_20838;
@Shadow
protected ChunkRenderer field_20839;
protected BuiltChunk field_20839;
@Inject(at = @At("HEAD"), method = "method_22785")
private void hookChunkBuild(float float_1, float float_2, float float_3, ChunkBatcher.ChunkRenderData renderData, BlockLayeredBufferBuilderStorage builder, CallbackInfoReturnable<Set<BlockEntity>> ci) {
private void hookChunkBuild(float float_1, float float_2, float float_3, ChunkBuilder.ChunkData renderData, BlockBufferBuilderStorage builder, CallbackInfoReturnable<Set<BlockEntity>> ci) {
if (field_20838 != null) {
TerrainRenderContext renderer = TerrainRenderContext.POOL.get();
renderer.prepare(field_20838, field_20839, renderData, builder);
@ -105,7 +105,7 @@ public class MixinChunkRebuildTask {
}
}
return renderManager.tesselateBlock(blockState, blockPos, blockView, matrix, bufferBuilder, checkSides, random);
return renderManager.renderBlock(blockState, blockPos, blockView, matrix, bufferBuilder, checkSides, random);
}
/**

View file

@ -22,11 +22,11 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.chunk.ChunkBatcher.ChunkRenderData;
import net.minecraft.client.render.chunk.ChunkBuilder.ChunkData;
import net.fabricmc.fabric.impl.client.indigo.renderer.accessor.AccessChunkRendererData;
@Mixin(ChunkRenderData.class)
@Mixin(ChunkData.class)
public class MixinChunkRenderData implements AccessChunkRendererData {
@Shadow
private Set<RenderLayer> initialized;

View file

@ -20,11 +20,11 @@ import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.chunk.ChunkBatcher.ChunkRenderer;
import net.minecraft.client.render.chunk.ChunkBuilder.BuiltChunk;
import net.fabricmc.fabric.impl.client.indigo.renderer.accessor.AccessChunkRenderer;
@Mixin(ChunkRenderer.class)
@Mixin(BuiltChunk.class)
public abstract class MixinChunkRenderer implements AccessChunkRenderer {
@Shadow
abstract void beginBufferBuilding(BufferBuilder builder);

View file

@ -1,5 +1,5 @@
archivesBaseName = "fabric-rendering-fluids-v1"
version = getSubprojectVersion(project, "0.1.5")
version = getSubprojectVersion(project, "0.1.6")
dependencies {
compile project(path: ':fabric-api-base', configuration: 'dev')

View file

@ -50,7 +50,7 @@ public class MixinFluidRenderer {
FluidRenderHandlerRegistryImpl.INSTANCE.onFluidRendererReload(waterSprites, lavaSprites);
}
@Inject(at = @At("HEAD"), method = "tesselate", cancellable = true)
@Inject(at = @At("HEAD"), method = "render", cancellable = true)
public void tesselate(BlockRenderView view, BlockPos pos, VertexConsumer vertexConsumer, FluidState state, CallbackInfoReturnable<Boolean> info) {
FluidRendererHookContainer ctr = fabric_renderHandler.get();
FluidRenderHandler handler = FluidRenderHandlerRegistryImpl.INSTANCE.getOverride(state.getFluid());
@ -72,12 +72,12 @@ public class MixinFluidRenderer {
} */
}
@Inject(at = @At("RETURN"), method = "tesselate")
@Inject(at = @At("RETURN"), method = "render")
public void tesselateReturn(BlockRenderView view, BlockPos pos, VertexConsumer vertexConsumer, FluidState state, CallbackInfoReturnable<Boolean> info) {
fabric_renderHandler.get().clear();
}
@ModifyVariable(at = @At(value = "INVOKE", target = "net/minecraft/client/render/block/FluidRenderer.isSameFluid(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction;Lnet/minecraft/fluid/FluidState;)Z"), method = "tesselate", ordinal = 0)
@ModifyVariable(at = @At(value = "INVOKE", target = "net/minecraft/client/render/block/FluidRenderer.isSameFluid(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction;Lnet/minecraft/fluid/FluidState;)Z"), method = "render", ordinal = 0)
public boolean modLavaCheck(boolean chk) {
// First boolean local is set by vanilla according to 'matches lava'
// but uses the negation consistent with 'matches water'
@ -88,13 +88,13 @@ public class MixinFluidRenderer {
return chk || !ctr.state.matches(FluidTags.WATER);
}
@ModifyVariable(at = @At(value = "INVOKE", target = "net/minecraft/client/render/block/FluidRenderer.isSameFluid(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction;Lnet/minecraft/fluid/FluidState;)Z"), method = "tesselate", ordinal = 0)
@ModifyVariable(at = @At(value = "INVOKE", target = "net/minecraft/client/render/block/FluidRenderer.isSameFluid(Lnet/minecraft/world/BlockView;Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/util/math/Direction;Lnet/minecraft/fluid/FluidState;)Z"), method = "render", ordinal = 0)
public Sprite[] modSpriteArray(Sprite[] chk) {
FluidRendererHookContainer ctr = fabric_renderHandler.get();
return ctr.handler != null ? ctr.handler.getFluidSprites(ctr.view, ctr.pos, ctr.state) : chk;
}
@ModifyVariable(at = @At(value = "CONSTANT", args = "intValue=16", ordinal = 0, shift = At.Shift.BEFORE), method = "tesselate", ordinal = 0)
@ModifyVariable(at = @At(value = "CONSTANT", args = "intValue=16", ordinal = 0, shift = At.Shift.BEFORE), method = "render", ordinal = 0)
public int modTintColor(int chk) {
FluidRendererHookContainer ctr = fabric_renderHandler.get();
return ctr.handler != null ? ctr.handler.getFluidColor(ctr.view, ctr.pos, ctr.state) : chk;

View file

@ -1,2 +1,2 @@
archivesBaseName = "fabric-resource-loader-v0"
version = getSubprojectVersion(project, "0.1.7")
version = getSubprojectVersion(project, "0.1.8")

View file

@ -128,36 +128,34 @@ public class ModNioResourcePack extends AbstractFileResourcePack implements ModR
}
@Override
public Collection<Identifier> findResources(ResourceType type, String path, int depth, Predicate<String> predicate) {
public Collection<Identifier> findResources(ResourceType type, String namespace, String path, int depth, Predicate<String> predicate) {
List<Identifier> ids = new ArrayList<>();
String nioPath = path.replace("/", separator);
for (String namespace : getNamespaces(type)) {
Path namespacePath = getPath(type.getDirectory() + "/" + namespace);
Path namespacePath = getPath(type.getDirectory() + "/" + namespace);
if (namespacePath != null) {
Path searchPath = namespacePath.resolve(nioPath).toAbsolutePath().normalize();
if (namespacePath != null) {
Path searchPath = namespacePath.resolve(nioPath).toAbsolutePath().normalize();
if (Files.exists(searchPath)) {
try {
Files.walk(searchPath, depth)
.filter(Files::isRegularFile)
.filter((p) -> {
String filename = p.getFileName().toString();
return !filename.endsWith(".mcmeta") && predicate.test(filename);
})
.map(namespacePath::relativize)
.map((p) -> p.toString().replace(separator, "/"))
.forEach((s) -> {
try {
ids.add(new Identifier(namespace, s));
} catch (InvalidIdentifierException e) {
LOGGER.error(e.getMessage());
}
});
} catch (IOException e) {
LOGGER.warn("findResources at " + path + " in namespace " + namespace + ", mod " + modInfo.getId() + " failed!", e);
}
if (Files.exists(searchPath)) {
try {
Files.walk(searchPath, depth)
.filter(Files::isRegularFile)
.filter((p) -> {
String filename = p.getFileName().toString();
return !filename.endsWith(".mcmeta") && predicate.test(filename);
})
.map(namespacePath::relativize)
.map((p) -> p.toString().replace(separator, "/"))
.forEach((s) -> {
try {
ids.add(new Identifier(namespace, s));
} catch (InvalidIdentifierException e) {
LOGGER.error(e.getMessage());
}
});
} catch (IOException e) {
LOGGER.warn("findResources at " + path + " in namespace " + namespace + ", mod " + modInfo.getId() + " failed!", e);
}
}
}