net.minecraft.util.BlockRenderLayer类的使用及代码示例

x33g5p2x  于2022-01-17 转载在 其他  
字(9.7k)|赞(0)|评价(0)|浏览(88)

本文整理了Java中net.minecraft.util.BlockRenderLayer类的一些代码示例,展示了BlockRenderLayer类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。BlockRenderLayer类的具体详情如下:
包路径:net.minecraft.util.BlockRenderLayer
类名称:BlockRenderLayer

BlockRenderLayer介绍

暂无

代码示例

代码示例来源:origin: AppliedEnergistics/Applied-Energistics-2

for( BlockRenderLayer forcedLayer : BlockRenderLayer.values() )

代码示例来源:origin: SleepyTrousers/EnderIO

private static Integer mkKey(EnumFacing side, BlockRenderLayer pass) {
 return (side == null ? 0 : side.ordinal() + 1) * (BlockRenderLayer.values().length + 1) + (pass == BREAKING ? 0 : pass.ordinal() + 1);
}

代码示例来源:origin: OpenMods/OpenModsLib

@Override
public MultiLayerModel process(ImmutableMap<String, String> customData) {
  final ModelUpdater updater = new ModelUpdater(customData);
  final Optional<ResourceLocation> base = updater.get("base", ModelUpdater.MODEL_LOCATION, this.base);
  final Map<BlockRenderLayer, ResourceLocation> models = Maps.newHashMap();
  for (BlockRenderLayer layer : BlockRenderLayer.values()) {
    final ResourceLocation result = updater.get(layer.toString(), ModelUpdater.MODEL_LOCATION, this.models.get(layer));
    if (result != null) models.put(layer, result);
  }
  return updater.hasChanged()? new MultiLayerModel(base, models) : this;
}

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

public void setAbovelimit(
    final BlockRenderLayer layer,
    final int fc )
{
  faceCount[layer.ordinal()] = fc;
}

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

public static ModelQuadLayer[] getCachedFace(
    final int stateID,
    final long weight,
    final EnumFacing face,
    final BlockRenderLayer layer )
{
  if ( layer == null )
  {
    return null;
  }
  final int cacheVal = stateID << 6 | layer.ordinal() << 4 | face.ordinal();
  final ModelQuadLayer[] mpc = cache.get( cacheVal );
  if ( mpc != null )
  {
    return mpc;
  }
  final BlockRenderLayer original = net.minecraftforge.client.MinecraftForgeClient.getRenderLayer();
  try
  {
    ForgeHooksClient.setRenderLayer( layer );
    return getInnerCachedFace( cacheVal, stateID, weight, face, layer );
  }
  finally
  {
    // restore previous layer.
    ForgeHooksClient.setRenderLayer( original );
  }
}

代码示例来源:origin: OpenMods/OpenModsLib

public MultiLayerBakedModel(Map<BlockRenderLayer, IBakedModel> models, IBakedModel base, IBakedModel missing, ImmutableMap<TransformType, TRSRTransformation> cameraTransforms) {
  super(base, cameraTransforms);
  this.models = ImmutableMap.copyOf(models);
  this.missing = missing;
  final List<BakedQuad> quads = Lists.newArrayList();
  for (BlockRenderLayer layer : BlockRenderLayer.values()) {
    final IBakedModel model = models.get(layer);
    if (model != null) {
      buildQuadsForLayer(quads, model);
    }
  }
  this.quads = ImmutableList.copyOf(quads);
}

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

final int[] faceCount = new int[BlockRenderLayer.values().length];
      faceCount[lx.layer.ordinal()] += model.faceCount();
        rTracker.setAbovelimit( brl, faceCount[brl.ordinal()] );
        faceCount[brl.ordinal()] = 0;

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

public static ChiseledBlockBaked getBreakingModel(
    ChiselLayer layer,
    Integer blockStateID )
{
  int key = layer.layer.ordinal() + ( blockStateID << 2 );
  ChiseledBlockBaked out = breakCache.get( key );
  if ( out == null )
  {
    final IBlockState state = ModUtil.getStateById( blockStateID );
    final IBakedModel model = ModelUtil.solveModel( state, 0, Minecraft.getMinecraft().getBlockRendererDispatcher().getBlockModelShapes().getModelForState( ModUtil.getStateById( blockStateID ) ), layer.layer );
    if ( model != null )
    {
      out = ChiseledBlockBaked.createFromTexture( ModelUtil.findTexture( blockStateID, model, EnumFacing.UP, layer.layer ), layer );
    }
    else
    {
      out = ChiseledBlockBaked.createFromTexture( null, null );
    }
    breakCache.put( key, out );
  }
  return out;
}

代码示例来源:origin: PenguinSquad/Harvest-Festival

@Override
  protected void setupRender(BuildingAccess world) {
    for (BlockRenderLayer layer: BlockRenderLayer.values()) {
      VertexBuffer buffer = renderer.getWorldRendererByLayer(layer);
      buffer.begin(7, DefaultVertexFormats.BLOCK);
      world.getBlockMap().entrySet().stream().filter(placeable -> placeable.getKey().getY() != 0)
          .forEach(placeable -> addRender(world, placeable.getValue(), placeable.getKey(), layer, buffer));
    }
  }
}

代码示例来源:origin: Lunatrius/Schematica

@Override
public void renderOverlay() {
  if (this.initialized) {
    preRenderOverlay();
    for (final RenderOverlay renderOverlay : this.renderOverlays) {
      final VertexBuffer vertexBuffer = renderOverlay.getVertexBufferByLayer(BlockRenderLayer.TRANSLUCENT.ordinal());
      GlStateManager.pushMatrix();
      preRenderChunk(renderOverlay);
      renderOverlay.multModelviewMatrix();
      vertexBuffer.bindBuffer();
      setupArrayPointersOverlay();
      vertexBuffer.drawArrays(GL11.GL_QUADS);
      GlStateManager.popMatrix();
    }
    OpenGlHelper.glBindBuffer(OpenGlHelper.GL_ARRAY_BUFFER, 0);
    GlStateManager.resetColor();
    this.renderOverlays.clear();
    postRenderOverlay();
  }
}

代码示例来源:origin: SleepyTrousers/EnderIO

public @Nonnull List<BakedQuad> getQuads(EnumFacing side, BlockRenderLayer pass) {
 final List<BakedQuad> list = table[mkKey(side, pass)];
 if (list == null || list.isEmpty()) {
  if (pass == BREAKING) {
   // breaking layer: not set by model, try to construct it on-the-fly
   List<BakedQuad> result = Collections.<BakedQuad> emptyList();
   for (BlockRenderLayer layer : BlockRenderLayer.values()) {
    result = CompositeList.create(result, table[mkKey(side, layer)]);
   }
   return result;
  }
  return Collections.<BakedQuad> emptyList();
 } else {
  return list;
 }
}

代码示例来源:origin: Lunatrius/Schematica

@Override
public void renderChunkLayer(final BlockRenderLayer layer) {
  preRenderChunk();
  if (this.initialized) {
    for (final RenderChunk renderChunk : this.renderChunks) {
      final VertexBuffer vertexbuffer = renderChunk.getVertexBufferByLayer(layer.ordinal());
      GlStateManager.pushMatrix();
      preRenderChunk(renderChunk);
      renderChunk.multModelviewMatrix();
      vertexbuffer.bindBuffer();
      setupArrayPointers();
      vertexbuffer.drawArrays(GL11.GL_QUADS);
      GlStateManager.popMatrix();
    }
    OpenGlHelper.glBindBuffer(OpenGlHelper.GL_ARRAY_BUFFER, 0);
    GlStateManager.resetColor();
    this.renderChunks.clear();
  }
  postRenderChunk();
}

代码示例来源:origin: PenguinSquad/Harvest-Festival

protected void setupRender(BuildingAccess world) {
  for (BlockRenderLayer layer: BlockRenderLayer.values()) {
    VertexBuffer buffer = renderer.getWorldRendererByLayer(layer);
    buffer.begin(7, DefaultVertexFormats.BLOCK);
    for (Entry<BlockPos, IBlockState> placeable: world.getBlockMap().entrySet()) {
      addRender(world, placeable.getValue(), placeable.getKey(), layer, buffer);
    }
  }
}

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

final int cacheV = stateID << 6 | layer.ordinal() << 4 | xf.ordinal();
  cache.put( cacheV, mp );
final int cacheV = stateID << 6 | layer.ordinal() << 4 | f.ordinal();
final ArrayList<ModelQuadLayerBuilder> x = tmp.get( f );
final ModelQuadLayer[] mp = new ModelQuadLayer[x.size()];

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

private static void updateCacheClient()
{
  layerFilters.clear();
  final Map<BlockRenderLayer, BitSet> layerFilters = VoxelBlob.layerFilters;
  final BlockRenderLayer[] layers = BlockRenderLayer.values();
  for ( final BlockRenderLayer layer : layers )
  {
    layerFilters.put( layer, new BitSet( 4096 ) );
  }
  for ( final Iterator<Block> it = Block.REGISTRY.iterator(); it.hasNext(); )
  {
    final Block block = it.next();
    for ( final IBlockState state : block.getBlockState().getValidStates() )
    {
      final int id = ModUtil.getStateId( state );
      if ( state == null || state.getBlock() != block )
      {
        // reverse mapping is broken, so just skip over this state.
        continue;
      }
      for ( final BlockRenderLayer layer : layers )
      {
        if ( block.canRenderInLayer( state, layer ) )
        {
          layerFilters.get( layer ).set( id );
        }
      }
    }
  }
}

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

final BlockRenderLayer layer )
final int blockToWork = layer.ordinal() * EnumFacing.VALUES.length + myFace.ordinal();

代码示例来源:origin: AlgorithmX2/Chisels-and-Bits

public VoxelNeighborRenderTracker()
{
  faceCount = new Integer[BlockRenderLayer.values().length];
  if ( ChiselsAndBits.getConfig().defaultToDynamicRenderer )
  {
    isDynamic = IS_DYNAMIC | IS_LOCKED;
    for ( int x = 0; x < faceCount.length; ++x )
    {
      faceCount[x] = ChiselsAndBits.getConfig().dynamicModelFaceCount + 1;
    }
  }
  else if ( ChiselsAndBits.getConfig().forceDynamicRenderer )
  {
    isDynamic = IS_DYNAMIC | IS_LOCKED;
  }
}

代码示例来源:origin: TeamWizardry/Wizardry

if (info.blockState.getMaterial() == Material.AIR) continue;
if (info.blockState.getRenderType() == EnumBlockRenderType.INVISIBLE) continue;
blocks.put(info.blockState.getBlock().getRenderLayer().ordinal(), info);

代码示例来源:origin: SleepyTrousers/EnderIO

@SuppressWarnings("null")
public static void renderBlockModel(@Nonnull World world, @Nonnull BlockPos pos, @Nonnull IBlockState state, boolean translateToOrigin, boolean relight) {
 BufferBuilder wr = Tessellator.getInstance().getBuffer();
 wr.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
 if (translateToOrigin) {
  wr.setTranslation(-pos.getX(), -pos.getY(), -pos.getZ());
 }
 BlockRendererDispatcher blockrendererdispatcher = Minecraft.getMinecraft().getBlockRendererDispatcher();
 BlockModelShapes modelShapes = blockrendererdispatcher.getBlockModelShapes();
 IBakedModel ibakedmodel = modelShapes.getModelForState(state);
 final IBlockAccess worldWrapper = relight ? new WorldWrapper(world, pos) : world;
 for (BlockRenderLayer layer : BlockRenderLayer.values()) {
  if (state.getBlock().canRenderInLayer(state, layer)) {
   ForgeHooksClient.setRenderLayer(layer);
   blockrendererdispatcher.getBlockModelRenderer().renderModel(worldWrapper, ibakedmodel, state, pos, wr, false);
  }
 }
 ForgeHooksClient.setRenderLayer(null);
 if (translateToOrigin) {
  wr.setTranslation(0, 0, 0);
 }
 Tessellator.getInstance().draw();
}

代码示例来源:origin: OpenMods/OpenModsLib

private void drawBlock() {
  final Tessellator tessellator = Tessellator.getInstance();
  final BufferBuilder wr = tessellator.getBuffer();
  final BlockRendererDispatcher dispatcher = parent.getMinecraft().getBlockRendererDispatcher();
  for (BlockRenderLayer layer : BlockRenderLayer.values()) {
    if (blockState.getBlock().canRenderInLayer(blockState, layer)) {
      net.minecraftforge.client.ForgeHooksClient.setRenderLayer(layer);
      wr.setTranslation(-0.5, -0.5, -0.5);
      wr.begin(GL11.GL_QUADS, DefaultVertexFormats.BLOCK);
      dispatcher.renderBlock(blockState, FakeBlockAccess.ORIGIN, access, wr);
      tessellator.draw();
    }
  }
  wr.setTranslation(0.0D, 0.0D, 0.0D);
  net.minecraftforge.client.ForgeHooksClient.setRenderLayer(null);
}

相关文章

微信公众号

最新文章

更多