Class BlockStateProviderHelper

java.lang.Object
petrolpark.mc.library.util.BlockStateProviderHelper

public class BlockStateProviderHelper extends Object
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    static final <T extends net.neoforged.neoforge.client.model.generators.ModelBuilder<T>>
    T
    cubeColumnSideways(net.neoforged.neoforge.client.model.generators.ModelProvider<T> prov, String name, net.minecraft.resources.ResourceLocation side, net.minecraft.resources.ResourceLocation end)
     
    static final net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder
    edgeOrientedBlock(net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder builder, net.neoforged.neoforge.client.model.generators.ModelFile model)
    Adds a rotated ConfiguredModel for every EDGE_ORIENTATION, against Orientation.EDGE_ORIENTATION_PROPERTY, using a single model authored as EAST_SOUTH.
    static final net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder
    orientedBlock(net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder builder, net.neoforged.neoforge.client.model.generators.ModelFile upSouthModel, net.neoforged.neoforge.client.model.generators.ModelFile eastSouthModel)
    Adds a rotated ConfiguredModel for every Orientation, against Orientation.ORIENTATION_PROPERTY, preserving true orientation (front/top are never swapped, unlike edgeOrientedBlock(VariantBlockStateBuilder, ModelFile)).
    static final void
    randomizedRotationAxisBlock(net.neoforged.neoforge.client.model.generators.BlockStateProvider prov, net.minecraft.world.level.block.RotatedPillarBlock block, net.minecraft.resources.ResourceLocation side, net.minecraft.resources.ResourceLocation end)
     
    static final void
    randomizedRotationAxisBlock(net.neoforged.neoforge.client.model.generators.BlockStateProvider prov, net.minecraft.world.level.block.RotatedPillarBlock block, net.neoforged.neoforge.client.model.generators.ModelFile vertical, net.neoforged.neoforge.client.model.generators.ModelFile sideways)
     
    static final void
    randomizedRotationLogBlock(net.neoforged.neoforge.client.model.generators.BlockStateProvider prov, net.minecraft.world.level.block.RotatedPillarBlock block)
     

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • BlockStateProviderHelper

      public BlockStateProviderHelper()
  • Method Details

    • randomizedRotationLogBlock

      public static final void randomizedRotationLogBlock(net.neoforged.neoforge.client.model.generators.BlockStateProvider prov, net.minecraft.world.level.block.RotatedPillarBlock block)
    • randomizedRotationAxisBlock

      public static final void randomizedRotationAxisBlock(net.neoforged.neoforge.client.model.generators.BlockStateProvider prov, net.minecraft.world.level.block.RotatedPillarBlock block, net.minecraft.resources.ResourceLocation side, net.minecraft.resources.ResourceLocation end)
    • randomizedRotationAxisBlock

      public static final void randomizedRotationAxisBlock(net.neoforged.neoforge.client.model.generators.BlockStateProvider prov, net.minecraft.world.level.block.RotatedPillarBlock block, net.neoforged.neoforge.client.model.generators.ModelFile vertical, net.neoforged.neoforge.client.model.generators.ModelFile sideways)
    • cubeColumnSideways

      public static final <T extends net.neoforged.neoforge.client.model.generators.ModelBuilder<T>> T cubeColumnSideways(net.neoforged.neoforge.client.model.generators.ModelProvider<T> prov, String name, net.minecraft.resources.ResourceLocation side, net.minecraft.resources.ResourceLocation end)
    • edgeOrientedBlock

      public static final net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder edgeOrientedBlock(net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder builder, net.neoforged.neoforge.client.model.generators.ModelFile model)
      Adds a rotated ConfiguredModel for every EDGE_ORIENTATION, against Orientation.EDGE_ORIENTATION_PROPERTY, using a single model authored as EAST_SOUTH.

      Orientation.blockStateXRotation and Orientation.blockStateYRotation render an orientation truly, from either UP_SOUTH or EAST_SOUTH depending which is vertical - but model here is only ever EAST_SOUTH. So for the 4 edges whose fields are UP_SOUTH-relative (UP_SOUTH, UP_NORTH, DOWN_SOUTH, DOWN_NORTH), we instead use their front/top-swapped counterpart's fields (e.g. SOUTH_UP instead of UP_SOUTH), which are EAST_SOUTH-relative. The block will still occupy the correct edge, but for those 4 states model's "front" and "top" faces are swapped relative to its true orientation, so its roll around that edge will differ from the other 8. If that matters, use orientedBlock(VariantBlockStateBuilder, ModelFile, ModelFile) instead, which preserves true orientation at the cost of a second model.

    • orientedBlock

      public static final net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder orientedBlock(net.neoforged.neoforge.client.model.generators.VariantBlockStateBuilder builder, net.neoforged.neoforge.client.model.generators.ModelFile upSouthModel, net.neoforged.neoforge.client.model.generators.ModelFile eastSouthModel)
      Adds a rotated ConfiguredModel for every Orientation, against Orientation.ORIENTATION_PROPERTY, preserving true orientation (front/top are never swapped, unlike edgeOrientedBlock(VariantBlockStateBuilder, ModelFile)).

      upSouthModel must be authored as UP_SOUTH and eastSouthModel as EAST_SOUTH - each orientation's Orientation.blockStateXRotation and Orientation.blockStateYRotation are relative to whichever of those 2 is vertical, so we pick the matching model per orientation.