54 lines
2.3 KiB
Java
54 lines
2.3 KiB
Java
package carpet.mixins;
|
|
|
|
import carpet.fakes.BlockEntityRenderDispatcherInterface;
|
|
import com.mojang.blaze3d.platform.GLX;
|
|
import com.mojang.blaze3d.platform.GlStateManager;
|
|
import net.minecraft.block.entity.BlockEntity;
|
|
import net.minecraft.client.render.Camera;
|
|
import net.minecraft.client.render.GuiLighting;
|
|
import net.minecraft.client.render.block.entity.BlockEntityRenderDispatcher;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.world.World;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.Shadow;
|
|
|
|
@Mixin(BlockEntityRenderDispatcher.class)
|
|
public abstract class BlockEntityRenderDispatcher_movableTEMixin implements BlockEntityRenderDispatcherInterface
|
|
{
|
|
@Shadow
|
|
public static double renderOffsetX;
|
|
@Shadow
|
|
public static double renderOffsetY;
|
|
@Shadow
|
|
public static double renderOffsetZ;
|
|
@Shadow
|
|
public Camera cameraEntity;
|
|
@Shadow
|
|
public World world;
|
|
|
|
@Shadow
|
|
public abstract void renderEntity(BlockEntity blockEntity_1, double double_1, double double_2, double double_3,
|
|
float float_1, int int_1, boolean boolean_1);
|
|
|
|
/**
|
|
* @author 2No2Name
|
|
*/
|
|
//Renders the BlockEntity offset by the amount specified in the arguments xOffset yOffset zOffset (the moving block moved in the animation by this)
|
|
public void renderBlockEntityOffset(BlockEntity blockEntity_1, float partialTicks, int destroyStage, double xOffset,
|
|
double yOffset, double zOffset)
|
|
{
|
|
if (blockEntity_1.getSquaredDistance(this.cameraEntity.getPos().x - xOffset, this.cameraEntity.getPos().y - yOffset,
|
|
this.cameraEntity.getPos().z - zOffset) < blockEntity_1.getSquaredRenderDistance())
|
|
{
|
|
GuiLighting.enable();
|
|
int i = this.world.getLightmapIndex(blockEntity_1.getPos(), 0);
|
|
int j = i % 65536;
|
|
int k = i / 65536;
|
|
GLX.glMultiTexCoord2f(GLX.GL_TEXTURE1, (float) j, (float) k);
|
|
GlStateManager.color4f(1.0F, 1.0F, 1.0F, 1.0F);
|
|
BlockPos blockpos = blockEntity_1.getPos();
|
|
this.renderEntity(blockEntity_1, (double) blockpos.getX() - renderOffsetX + xOffset, (double) blockpos.getY() - renderOffsetY + yOffset, (double) blockpos.getZ() - renderOffsetZ + zOffset, partialTicks, destroyStage, false);
|
|
}
|
|
}
|
|
}
|