下面列出了怎么用net.minecraft.util.EnumBlockRenderType的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void doRender(EntityBlock entity, double x, double y, double z, float yaw, float partialTicks) {
final IBlockState blockState = entity.getBlockState();
if (blockState.getRenderType() != EnumBlockRenderType.INVISIBLE) {
GlStateManager.pushMatrix();
GlStateManager.translate(x - 0.5, y, z + 0.5);
GlStateManager.disableLighting();
bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
Minecraft.getMinecraft().getBlockRendererDispatcher().renderBlockBrightness(blockState, entity.getBrightness());
GlStateManager.enableLighting();
GlStateManager.popMatrix();
super.doRender(entity, x, y, z, yaw, partialTicks);
}
}
/**
* Renders the desired {@code T} type Entity.
*/
public void doRender(EntityFallTofu entity, double x, double y, double z, float entityYaw, float partialTicks) {
IBlockState iblockstate = BlockLoader.tofuTerrain.getDefaultState();
if (iblockstate.getRenderType() == EnumBlockRenderType.MODEL) {
World world = entity.getWorldObj();
if (iblockstate != world.getBlockState(new BlockPos(entity)) && iblockstate.getRenderType() != EnumBlockRenderType.INVISIBLE) {
this.bindTexture(TextureMap.LOCATION_BLOCKS_TEXTURE);
GlStateManager.pushMatrix();
GlStateManager.disableLighting();
Tessellator tessellator = Tessellator.getInstance();
BufferBuilder bufferbuilder = tessellator.getBuffer();
if (this.renderOutlines) {
GlStateManager.enableColorMaterial();
GlStateManager.enableOutlineMode(this.getTeamColor(entity));
}
bufferbuilder.begin(7, DefaultVertexFormats.BLOCK);
BlockPos blockpos = new BlockPos(entity.posX, entity.getEntityBoundingBox().maxY, entity.posZ);
GlStateManager.translate((float) (x - (double) blockpos.getX() - 0.5D), (float) (y - (double) blockpos.getY()), (float) (z - (double) blockpos.getZ() - 0.5D));
BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher();
blockrendererdispatcher.getBlockModelRenderer().renderModel(world, blockrendererdispatcher.getModelForState(iblockstate), iblockstate, blockpos, bufferbuilder, false);
tessellator.draw();
if (this.renderOutlines) {
GlStateManager.disableOutlineMode();
GlStateManager.disableColorMaterial();
}
GlStateManager.enableLighting();
GlStateManager.popMatrix();
super.doRender(entity, x, y, z, entityYaw, partialTicks);
}
}
}
public static boolean isValidFacade(ItemStack itemStack) {
IBlockState rawBlockState = lookupBlockForItemUnsafe(itemStack);
return rawBlockState != null &&
!rawBlockState.getBlock().hasTileEntity(rawBlockState) &&
!rawBlockState.getBlock().hasTileEntity() &&
rawBlockState.getRenderType() == EnumBlockRenderType.MODEL &&
rawBlockState.isFullCube();
}
public boolean renderBlock(IBlockState state, BlockPos pos, IBlockAccess blockAccess, BufferBuilder bufferBuilderIn)
{
try
{
EnumBlockRenderType renderType = state.getRenderType();
if (renderType == EnumBlockRenderType.INVISIBLE)
{
return false;
}
else
{
switch (renderType)
{
case MODEL:
return this.blockModelRenderer.renderModel(blockAccess, this.getModelForState(state), state, pos, bufferBuilderIn);
case ENTITYBLOCK_ANIMATED:
return false;
case LIQUID:
return this.fluidRenderer.renderFluid(blockAccess, state, pos, bufferBuilderIn);
default:
return false;
}
}
}
catch (Throwable throwable)
{
CrashReport crashreport = CrashReport.makeCrashReport(throwable, "Tesselating block in world");
CrashReportCategory crashreportcategory = crashreport.makeCategory("Block being tesselated");
CrashReportCategory.addBlockInfo(crashreportcategory, pos, state.getBlock(), state.getBlock().getMetaFromState(state));
throw new ReportedException(crashreport);
}
}
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.MODEL;
}
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.MODEL;
}
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.MODEL;
}
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@SideOnly(Side.CLIENT)
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.MODEL;
}
/**
* The type of render function called. MODEL for mixed tesr and static model, MODELBLOCK_ANIMATED for TESR-only,
* LIQUID for vanilla liquids, INVISIBLE to skip all rendering
*/
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.INVISIBLE;
}
/**
* The type of render function called. MODEL for mixed tesr and static model, MODELBLOCK_ANIMATED for TESR-only,
* LIQUID for vanilla liquids, INVISIBLE to skip all rendering
*/
public EnumBlockRenderType getRenderType(IBlockState state)
{
return EnumBlockRenderType.INVISIBLE;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
// return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.MODEL;
}
@Override
@SideOnly(Side.CLIENT)
public EnumBlockRenderType getRenderType(IBlockState state) {
return StoneRenderer.BLOCK_RENDER_TYPE;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
}
@Override
@SideOnly(Side.CLIENT)
public EnumBlockRenderType getRenderType(IBlockState state) {
return CableRenderer.BLOCK_RENDER_TYPE;
}
@Override
@SideOnly(Side.CLIENT)
public EnumBlockRenderType getRenderType(IBlockState state) {
return FluidPipeRenderer.BLOCK_RENDER_TYPE;
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state) {
return EnumBlockRenderType.ENTITYBLOCK_ANIMATED;
}
protected void renderBlocksAndOverlay(BlockPos pos, Set<TileEntity> tileEntities, boolean[] usedLayers, CompiledChunkSchematic data, BufferBuilderCache buffers)
{
IBlockState stateSchematic = this.schematicWorldView.getBlockState(pos);
IBlockState stateClient = this.clientWorldView.getBlockState(pos);
stateSchematic = stateSchematic.getActualState(this.schematicWorldView, pos);
stateClient = stateClient.getActualState(this.clientWorldView, pos);
Block blockSchematic = stateSchematic.getBlock();
Block blockClient = stateClient.getBlock();
boolean clientHasAir = blockClient == Blocks.AIR;
boolean schematicHasAir = blockSchematic == Blocks.AIR;
if (clientHasAir && schematicHasAir)
{
return;
}
// Schematic has a block, client has air
if (clientHasAir || (stateSchematic != stateClient && this.renderColliding))
{
if (blockSchematic.hasTileEntity())
{
this.addTileEntity(pos, data, tileEntities);
}
BlockRenderLayer layer = this.renderAsTranslucent ? BlockRenderLayer.TRANSLUCENT : blockSchematic.getRenderLayer();
int layerIndex = layer.ordinal();
if (stateSchematic.getRenderType() != EnumBlockRenderType.INVISIBLE)
{
BufferBuilder bufferSchematic = buffers.getWorldRendererByLayerId(layerIndex);
if (data.isLayerStarted(layer) == false)
{
data.setLayerStarted(layer);
this.preRenderBlocks(bufferSchematic, this.getPosition());
}
usedLayers[layerIndex] |= this.renderGlobal.renderBlock(stateSchematic, pos, this.schematicWorldView, bufferSchematic);
}
}
if (this.overlayEnabled)
{
OverlayType type = this.getOverlayType(stateSchematic, stateClient);
Color4f overlayColor = this.getOverlayColor(type);
if (overlayColor != null)
{
this.renderOverlay(pos, stateSchematic, type, overlayColor, data, buffers);
}
}
}
public void render(int x, int y, int zLevel, Minecraft mc)
{
if (this.stateExpected != null && this.stateFound != null)
{
GlStateManager.pushMatrix();
int x1 = x + 10;
int x2 = x + this.columnWidthExpected + 30;
RenderUtils.drawOutlinedBox(x, y, this.totalWidth, this.totalHeight, 0xFF000000, GuiBase.COLOR_HORIZONTAL_BAR, zLevel);
RenderUtils.drawRect(x1, y + 16, 16, 16, 0x50C0C0C0, zLevel); // light background for the item
RenderUtils.drawRect(x2, y + 16, 16, 16, 0x50C0C0C0, zLevel); // light background for the item
FontRenderer textRenderer = mc.fontRenderer;
String pre = GuiBase.TXT_WHITE + GuiBase.TXT_BOLD;
String strExpected = pre + StringUtils.translate("litematica.gui.label.schematic_verifier.expected") + GuiBase.TXT_RST;
String strFound = pre + StringUtils.translate("litematica.gui.label.schematic_verifier.found") + GuiBase.TXT_RST;
GlStateManager.translate(0f, 0f, zLevel + 0.1f);
y += 4;
textRenderer.drawString(strExpected, x1, y, 0xFFFFFFFF);
textRenderer.drawString(strFound, x2, y, 0xFFFFFFFF);
y += 12;
GlStateManager.disableLighting();
RenderUtils.enableGuiItemLighting();
boolean useBlockModelConfig = Configs.Visuals.SCHEMATIC_VERIFIER_BLOCK_MODELS.getBooleanValue();
boolean hasModelExpected = this.stateExpected.getRenderType() == EnumBlockRenderType.MODEL;
boolean hasModelFound = this.stateFound.getRenderType() == EnumBlockRenderType.MODEL;
boolean isAirItemExpected = this.stackExpected.isEmpty();
boolean isAirItemFound = this.stackFound.isEmpty();
boolean useBlockModelExpected = hasModelExpected && (isAirItemExpected || useBlockModelConfig || this.stateExpected.getBlock() == Blocks.FLOWER_POT);
boolean useBlockModelFound = hasModelFound && (isAirItemFound || useBlockModelConfig || this.stateFound.getBlock() == Blocks.FLOWER_POT);
BlockModelShapes blockModelShapes = mc.getBlockRendererDispatcher().getBlockModelShapes();
//mc.getRenderItem().zLevel += 100;
IBakedModel model;
if (useBlockModelExpected)
{
model = blockModelShapes.getModelForState(this.stateExpected);
RenderUtils.renderModelInGui(x1, y, zLevel + 1, model, this.stateExpected);
}
else
{
mc.getRenderItem().renderItemAndEffectIntoGUI(mc.player, this.stackExpected, x1, y);
mc.getRenderItem().renderItemOverlayIntoGUI(textRenderer, this.stackExpected, x1, y, null);
}
if (useBlockModelFound)
{
model = blockModelShapes.getModelForState(this.stateFound);
RenderUtils.renderModelInGui(x2, y, zLevel + 1, model, this.stateFound);
}
else
{
mc.getRenderItem().renderItemAndEffectIntoGUI(mc.player, this.stackFound, x2, y);
mc.getRenderItem().renderItemOverlayIntoGUI(textRenderer, this.stackFound, x2, y, null);
}
//mc.getRenderItem().zLevel -= 100;
//GlStateManager.disableBlend();
RenderUtils.disableItemLighting();
textRenderer.drawString(this.nameExpected, x1 + 20, y + 4, 0xFFFFFFFF);
textRenderer.drawString(this.nameFound, x2 + 20, y + 4, 0xFFFFFFFF);
y += 20;
textRenderer.drawString(this.blockRegistrynameExpected, x1, y, 0xFF4060FF);
textRenderer.drawString(this.blockRegistrynameFound, x2, y, 0xFF4060FF);
y += StringUtils.getFontHeight() + 4;
List<String> propsExpected = BlockUtils.getFormattedBlockStateProperties(this.stateExpected, " = ");
List<String> propsFound = BlockUtils.getFormattedBlockStateProperties(this.stateFound, " = ");
RenderUtils.renderText(x1, y, 0xFFB0B0B0, propsExpected);
RenderUtils.renderText(x2, y, 0xFFB0B0B0, propsFound);
GlStateManager.popMatrix();
}
}