more misc fluid work, gonna leave most of this untill we have an offical or new api

This commit is contained in:
modmuss50 2019-07-24 19:06:21 +01:00
parent 0742abb840
commit 6a93c3fd46
28 changed files with 147 additions and 404 deletions

View file

@ -1,5 +1,6 @@
package techreborn.client.render;
import io.github.prospector.silk.fluid.FluidInstance;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandler;
import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry;
import net.fabricmc.fabric.api.renderer.v1.Renderer;
@ -20,6 +21,7 @@ import net.minecraft.client.render.model.json.ModelTransformation;
import net.minecraft.client.texture.Sprite;
import net.minecraft.entity.LivingEntity;
import net.minecraft.fluid.Fluid;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
@ -27,6 +29,7 @@ import net.minecraft.util.math.Direction;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.ExtendedBlockView;
import net.minecraft.world.World;
import reborncore.common.fluid.container.GenericFluidContainer;
import javax.annotation.Nullable;
import java.util.Collections;
@ -34,11 +37,11 @@ import java.util.List;
import java.util.Random;
import java.util.function.Supplier;
public class DyamicCellBakedModel implements BakedModel, FabricBakedModel {
public class DynamicCellBakedModel implements BakedModel, FabricBakedModel {
Sprite base;
public DyamicCellBakedModel() {
public DynamicCellBakedModel() {
base = MinecraftClient.getInstance().getSpriteAtlas().getSprite(new Identifier("techreborn:item/cell_base"));
}
@ -49,12 +52,14 @@ public class DyamicCellBakedModel implements BakedModel, FabricBakedModel {
@Override
public void emitItemQuads(ItemStack stack, Supplier<Random> randomSupplier, RenderContext context) {
Fluid fluid = null;
if(stack.hasTag() && stack.getTag().containsKey("fluid")){
fluid = Registry.FLUID.get(new Identifier(stack.getTag().getString("fluid")));
GenericFluidContainer<ItemStack> fluidContainer = GenericFluidContainer.fromStack(stack);
Fluid fluid = Fluids.EMPTY;
if(fluidContainer != null){
FluidInstance fluidInstance = fluidContainer.getFluidInstance(stack);
if(!fluidInstance.isEmpty()){
fluid = fluidContainer.getFluidInstance(stack).getFluid();
}
}
context.meshConsumer().accept(getMesh(fluid));
}
@ -77,7 +82,7 @@ public class DyamicCellBakedModel implements BakedModel, FabricBakedModel {
.spriteColor(0, -1, -1, -1, -1)
.spriteBake(0, base, MutableQuadView.BAKE_LOCK_UV).emit();
if(fluid != null){
if(fluid != Fluids.EMPTY){
FluidRenderHandler fluidRenderHandler = FluidRenderHandlerRegistry.INSTANCE.get(fluid);
if(fluidRenderHandler != null){
Sprite fluidSprite = fluidRenderHandler.getFluidSprites(MinecraftClient.getInstance().world, BlockPos.ORIGIN, fluid.getDefaultState())[0];
@ -129,7 +134,7 @@ public class DyamicCellBakedModel implements BakedModel, FabricBakedModel {
@Override
public BakedModel apply(BakedModel bakedModel, ItemStack itemStack, World world, LivingEntity livingEntity) {
return DyamicCellBakedModel.this;
return DynamicCellBakedModel.this;
}
}