Allows custom blocks to define if they should use the fluid overlay instead of the flowing texture when in a fluid (#6493)

This commit is contained in:
Richard Freimer 2020-02-06 17:53:37 -05:00 committed by GitHub
parent 982ed69776
commit f93289e01c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 6 deletions

View file

@ -51,20 +51,21 @@
flag7 = true; flag7 = true;
} }
@@ -222,10 +223,10 @@ @@ -222,10 +223,9 @@
flag7 = true; flag7 = true;
BlockPos blockpos = p_228796_2_.func_177972_a(direction); BlockPos blockpos = p_228796_2_.func_177972_a(direction);
TextureAtlasSprite textureatlassprite2 = atextureatlassprite[1]; TextureAtlasSprite textureatlassprite2 = atextureatlassprite[1];
- if (!flag) { - if (!flag) {
+ if (atextureatlassprite[2] != null) { - Block block = p_228796_1_.func_180495_p(blockpos).func_177230_c();
Block block = p_228796_1_.func_180495_p(blockpos).func_177230_c(); - if (block == Blocks.field_150359_w || block instanceof StainedGlassBlock) {
if (block == Blocks.field_150359_w || block instanceof StainedGlassBlock) {
- textureatlassprite2 = this.field_187501_d; - textureatlassprite2 = this.field_187501_d;
+ if (atextureatlassprite[2] != null) {
+ if (p_228796_1_.func_180495_p(blockpos).shouldDisplayFluidOverlay(p_228796_1_, blockpos, p_228796_4_)) {
+ textureatlassprite2 = atextureatlassprite[2]; + textureatlassprite2 = atextureatlassprite[2];
} }
} }
@@ -239,15 +240,15 @@ @@ -239,15 +239,15 @@
float f31 = 1.0F * f30 * f; float f31 = 1.0F * f30 * f;
float f32 = 1.0F * f30 * f1; float f32 = 1.0F * f30 * f1;
float f33 = 1.0F * f30 * f2; float f33 = 1.0F * f30 * f2;
@ -89,7 +90,7 @@
} }
} }
} }
@@ -256,10 +257,15 @@ @@ -256,10 +256,15 @@
} }
} }

View file

@ -35,6 +35,7 @@ import net.minecraft.block.HorizontalBlock;
import net.minecraft.block.IBeaconBeamColorProvider; import net.minecraft.block.IBeaconBeamColorProvider;
import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.SoundType; import net.minecraft.block.SoundType;
import net.minecraft.block.StainedGlassBlock;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.particle.ParticleManager; import net.minecraft.client.particle.ParticleManager;
@ -1054,4 +1055,18 @@ public interface IForgeBlock
{ {
return getBlock().isIn(BlockTags.FENCES) || getBlock().isIn(BlockTags.WALLS) || getBlock() instanceof FenceGateBlock; return getBlock().isIn(BlockTags.FENCES) || getBlock().isIn(BlockTags.WALLS) || getBlock() instanceof FenceGateBlock;
} }
/**
* Called to determine whether this block should use the fluid overlay texture or flowing texture when it is placed under the fluid.
*
* @param state The current state
* @param world The world
* @param pos Block position in world
* @param fluidState The state of the fluid
* @return Whether the fluid overlay texture should be used
*/
default boolean shouldDisplayFluidOverlay(BlockState state, ILightReader world, BlockPos pos, IFluidState fluidState)
{
return state.getBlock() == Blocks.GLASS || state.getBlock() instanceof StainedGlassBlock;
}
} }

View file

@ -898,4 +898,17 @@ public interface IForgeBlockState
{ {
return getBlockState().getBlock().collisionExtendsVertically(getBlockState(), world, pos, collidingEntity); return getBlockState().getBlock().collisionExtendsVertically(getBlockState(), world, pos, collidingEntity);
} }
/**
* Called to determine whether this block should use the fluid overlay texture or flowing texture when it is placed under the fluid.
*
* @param world The world
* @param pos Block position in world
* @param fluidState The state of the fluid
* @return Whether the fluid overlay texture should be used
*/
default boolean shouldDisplayFluidOverlay(ILightReader world, BlockPos pos, IFluidState fluidState)
{
return getBlockState().getBlock().shouldDisplayFluidOverlay(getBlockState(), world, pos, fluidState);
}
} }