Skip to content

Commit

Permalink
diesel generator fluid rendering
Browse files Browse the repository at this point in the history
  • Loading branch information
ttttdoy committed Jun 22, 2024
1 parent d6e4d3d commit f9cf2ef
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import breadmodadvanced.recipe.fluidEnergy.generators.DieselGeneratorRecipe
import breadmodadvanced.registry.block.ModBlockEntitiesAdv
import breadmodadvanced.registry.recipe.ModRecipeTypesAdv
import net.minecraft.core.BlockPos
import net.minecraft.core.Direction
import net.minecraft.nbt.CompoundTag
import net.minecraft.world.entity.player.Player
import net.minecraft.world.entity.player.StackedContents
import net.minecraft.world.item.ItemStack
Expand All @@ -27,11 +25,8 @@ class DieselGeneratorBlockEntity(
pBlockState,
ModRecipeTypesAdv.DIESEL_GENERATOR,
EnergyBattery(50000, 0, 2000) to null,
ForgeCapabilities.FLUID_HANDLER to (FluidContainer(mutableMapOf(
FluidTank(8000) to StorageDirection.STORE_ONLY
)) to mutableListOf(Direction.UP, null))
ForgeCapabilities.FLUID_HANDLER to (FluidContainer(mutableMapOf(FluidTank(8000) to StorageDirection.STORE_ONLY)) to null)
) {
override fun getUpdateTag(): CompoundTag = super.getUpdateTag().also { saveAdditional(it) }
private fun getItemHandler() = capabilityHolder.capabilityOrNull<IndexableItemHandler>(ForgeCapabilities.ITEM_HANDLER)

override fun clearContent() { getItemHandler()?.clear() }
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
import net.minecraft.core.Direction
import net.minecraft.world.inventory.InventoryMenu
import net.minecraft.world.level.block.state.properties.BlockStateProperties
import net.minecraft.world.level.material.Fluids
import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions
import net.minecraftforge.client.model.generators.ModelProvider
import net.minecraftforge.common.capabilities.ForgeCapabilities
import net.minecraftforge.fluids.FluidStack

class DieselGeneratorRenderer: BlockEntityRenderer<DieselGeneratorBlockEntity> {
private val doorModelLocation = ModMainAdv.modLocation("${ModelProvider.BLOCK_FOLDER}/diesel_generator/diesel_generator_door")
Expand All @@ -34,6 +36,7 @@ class DieselGeneratorRenderer: BlockEntityRenderer<DieselGeneratorBlockEntity> {
val doorModel = instance.modelManager.getModel(doorModelLocation)
val blockRotation = pBlockEntity.blockState.getValue(BlockStateProperties.HORIZONTAL_FACING)

pPoseStack.pushPose()
when(blockRotation) { // TODO Set up rotations and translations for door, upgrade cards, and fluid, set up functions for transforming separate models
Direction.NORTH -> {
// println("facing north")
Expand Down Expand Up @@ -64,8 +67,58 @@ class DieselGeneratorRenderer: BlockEntityRenderer<DieselGeneratorBlockEntity> {
// pPoseStack.rotateAround(blockRotation, 0.0f, 0.0f, 0.0f)

renderBlockModel(pPoseStack, pBuffer, pBlockEntity, doorModel, pPackedLight, pPackedOverlay)
pPoseStack.popPose()
val amount = 6000f
val capacity = 8000f
val blockPos = pBlockEntity.blockPos
val fluidTypeExtensions = IClientFluidTypeExtensions.of(Fluids.WATER)
val stillFluidTexture = fluidTypeExtensions.getStillTexture(FluidStack(Fluids.WATER, 1000))?: return
val fluidState = Fluids.WATER.defaultFluidState()
val fluidSprite = instance.getTextureAtlas(InventoryMenu.BLOCK_ATLAS).apply(stillFluidTexture)
val fluidTint = fluidTypeExtensions.getTintColor(fluidState, pBlockEntity.level, blockPos)

pBlockEntity.capabilityHolder.capabilityOrNull<FluidContainer>(ForgeCapabilities.FLUID_HANDLER)?.let { // todo figure out why this isn't returning any fluid or amount at all
val fluidHeight: Float = ((amount / capacity * 0.5f) + 0.37f)
val builder = pBuffer.getBuffer(ItemBlockRenderTypes.getRenderLayer(fluidState))

// val fluidCap = pBlockEntity.capabilityHolder.capabilityOrNull<FluidContainer>(ForgeCapabilities.FLUID_HANDLER)
//
// println(fluidCap?.allTanks?.get(0)?.fluidAmount?.toFloat())

// Top
if(amount < capacity) {
pPoseStack.pushPose()
drawQuad(builder, pPoseStack, 0.02f, fluidHeight, 0.02f, 0.75f, fluidHeight, 0.75f, fluidSprite.u0, fluidSprite.v0, fluidSprite.u1, fluidSprite.v1, pPackedLight, fluidTint)
pPoseStack.popPose()
}

// North
// pPoseStack.pushPose()
// drawQuad(builder, pPoseStack, 0.25f, 0f, 0.25f, 0.75f, fluidHeight, 0.25f, fluidSprite.u0, fluidSprite.v0, fluidSprite.u1, fluidSprite.v1, pPackedLight, fluidTint)
// pPoseStack.popPose()

// South
// pPoseStack.pushPose()
// pPoseStack.mulPose(Axis.YP.rotationDegrees(180f))
// pPoseStack.translate(-1f, 0f, 0f)
// drawQuad(builder, pPoseStack, 0.25f, 0f, -0.75f, 0.75f, fluidHeight, -0.75f, fluidSprite.u0, fluidSprite.v0, fluidSprite.u1, fluidSprite.v1, pPackedLight, fluidTint)
// pPoseStack.popPose()

// West
pPoseStack.pushPose()
pPoseStack.mulPose(Axis.YP.rotationDegrees(90f))
pPoseStack.translate(-1f, 0f, 0f)
drawQuad(builder, pPoseStack, 0.25f, 0.57f, 0.02f, 0.75f, fluidHeight, 0.02f, fluidSprite.u0, fluidSprite.v0, fluidSprite.u1, fluidSprite.v1, pPackedLight, fluidTint)
pPoseStack.popPose()

// East
pPoseStack.pushPose()
pPoseStack.mulPose(Axis.YP.rotationDegrees(-90f))
pPoseStack.translate(0f, 0f, -1f)
drawQuad(builder, pPoseStack, 0.25f, 0.57f, 0.02f, 0.75f, fluidHeight, 0.02f, fluidSprite.u0, fluidSprite.v0, fluidSprite.u1, fluidSprite.v1, pPackedLight, fluidTint)
pPoseStack.popPose()

/* old code block
pBlockEntity.capabilityHolder.capabilityOrNull<FluidContainer>(ForgeCapabilities.FLUID_HANDLER)?.let { // todo figure out why this isn't returning any fluid or amount at all
it.allTanks[0].let { tank ->
// println(tank.space)
if(tank.isEmpty) return
Expand Down Expand Up @@ -102,7 +155,6 @@ class DieselGeneratorRenderer: BlockEntityRenderer<DieselGeneratorBlockEntity> {
pPoseStack.translate(0f, 0f, -1f)
drawQuad(builder, pPoseStack, 0.25f, 0f, 0.25f, 0.75f, fluidHeight, 0.25f, fluidSprite.u0, fluidSprite.v0, fluidSprite.v0, fluidSprite.v1, pPackedLight, fluidTint)
pPoseStack.popPose()
}
}
*/
}
}
1 change: 1 addition & 0 deletions advanced/src/main/resources/META-INF/mods.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ license="${mod_license}"
displayName="${mod_name}"
authors="${mod_authors}"
description='''${mod_description}'''
logoFile="logo.png"
[[dependencies.${mod_id}]]
modId="forge"
mandatory=true
Expand Down
Binary file added advanced/src/main/resources/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions src/main/resources/META-INF/mods.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ license="${mod_license}"
displayName="${mod_name}"
authors="${mod_authors}"
description='''${mod_description}'''
logoFile="logo.png"
[[dependencies.${mod_id}]]
modId="forge"
mandatory=true
Expand Down
Binary file added src/main/resources/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit f9cf2ef

Please sign in to comment.