more misc fluid work, gonna leave most of this untill we have an offical or new api
This commit is contained in:
parent
0742abb840
commit
6a93c3fd46
28 changed files with 147 additions and 404 deletions
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue