diff --git a/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java b/src/main/java/net/minecraftforge/client/model/animation/TileEntityRendererAnimation.java similarity index 92% rename from src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java rename to src/main/java/net/minecraftforge/client/model/animation/TileEntityRendererAnimation.java index 278116899e..21b69429e1 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/AnimationTESR.java +++ b/src/main/java/net/minecraftforge/client/model/animation/TileEntityRendererAnimation.java @@ -24,6 +24,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.BlockRendererDispatcher; import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.block.model.IBakedModel; +import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IWorldReader; @@ -31,7 +32,6 @@ import net.minecraftforge.client.MinecraftForgeClient; import net.minecraftforge.common.animation.Event; import net.minecraftforge.common.animation.IEventHandler; import net.minecraftforge.common.capabilities.OptionalCapabilityInstance; -import net.minecraftforge.common.model.IModelState; import net.minecraftforge.common.model.animation.CapabilityAnimation; import net.minecraftforge.common.model.animation.IAnimationStateMachine; import net.minecraftforge.common.property.IExtendedBlockState; @@ -39,18 +39,16 @@ import net.minecraftforge.common.property.Properties; import java.util.Random; -import org.apache.commons.lang3.tuple.Pair; - /** - * Generic TileEntitySpecialRenderer that works with the Forge model system and animations. + * Generic {@link TileEntityRenderer} that works with the Forge model system and animations. */ -public class AnimationTESR extends TileEntityRendererFast implements IEventHandler +public class TileEntityRendererAnimation extends TileEntityRendererFast implements IEventHandler { protected static BlockRendererDispatcher blockRenderer; @Override public void renderTileEntityFast(T te, double x, double y, double z, float partialTick, int breakStage, BufferBuilder renderer) - { + { OptionalCapabilityInstance cap = te.getCapability(CapabilityAnimation.ANIMATION_CAPABILITY); if(!cap.isPresent()) { diff --git a/src/main/java/net/minecraftforge/client/model/animation/TileEntityRendererFast.java b/src/main/java/net/minecraftforge/client/model/animation/TileEntityRendererFast.java index 1d4d78b736..a318e2a6fc 100644 --- a/src/main/java/net/minecraftforge/client/model/animation/TileEntityRendererFast.java +++ b/src/main/java/net/minecraftforge/client/model/animation/TileEntityRendererFast.java @@ -29,8 +29,29 @@ import net.minecraft.client.renderer.BufferBuilder; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.client.renderer.tileentity.TileEntityRenderer; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.client.renderer.vertex.VertexFormat; import net.minecraft.tileentity.TileEntity; +/** + * A special case {@link TileEntityRenderer} which can be batched with other + * renderers that are also instances of this class. + *

+ * Advantages: + *

    + *
  • All batched renderers are drawn with a single draw call
  • + *
  • Renderers have their vertices depth sorted for better translucency + * support
  • + *
+ *

+ * Disadvantages: + *

    + *
  • OpenGL operations are not permitted
  • + *
  • All renderers must use the same {@link VertexFormat} + * ({@link DefaultVertexFormats#BLOCK})
  • + *
+ * + * @param The type of {@link TileEntity} being rendered. + */ public abstract class TileEntityRendererFast extends TileEntityRenderer { @Override @@ -63,6 +84,11 @@ public abstract class TileEntityRendererFast extends TileE RenderHelper.enableStandardItemLighting(); } + /** + * Draw this renderer to the passed {@link BufferBuilder}. DO + * NOT draw to any buffers other than the one passed, or use any OpenGL + * operations as they will not be applied when this renderer is batched. + */ @Override public abstract void renderTileEntityFast(T te, double x, double y, double z, float partialTicks, int destroyStage, BufferBuilder buffer); } diff --git a/src/main/java/net/minecraftforge/common/extensions/IForgeWorldType.java b/src/main/java/net/minecraftforge/common/extensions/IForgeWorldType.java index 32f86671d0..0fbdb5ecee 100644 --- a/src/main/java/net/minecraftforge/common/extensions/IForgeWorldType.java +++ b/src/main/java/net/minecraftforge/common/extensions/IForgeWorldType.java @@ -19,6 +19,7 @@ import net.minecraft.world.gen.layer.GenLayerZoom; import net.minecraft.world.gen.layer.LayerUtil; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import net.minecraftforge.fml.client.config.IArrayEntry; public interface IForgeWorldType { @@ -81,17 +82,19 @@ public interface IForgeWorldType } /** - * Creates the GenLayerBiome used for generating the world with the specified - * ChunkProviderSettings JSON String *IF AND ONLY IF* this WorldType == - * WorldType.CUSTOMIZED. + * Allows modifying the {@link IAreaFactory} used for this type's biome + * generation. * - * - * @param worldSeed The world seed - * @param parentLayer The parent layer to feed into any layer you return - * @param chunkSettings The ChunkGeneratorSettings constructed from the custom - * JSON - * @return A GenLayer that will return ints representing the Biomes to be - * generated, see GenLayerBiome + * @param The type of {@link IArea}. + * @param The type of {@link IContextExtended}. + * + * @param parentLayer The parent layer to feed into any layer you return + * @param chunkSettings The {@link OverworldGenSettings} used to create the + * {@link GenLayerBiome}. + * @param contextFactory A {@link LongFunction} factory to create contexts of + * the supplied size. + * @return An {@link IAreaFactory} that representing the Biomes to be generated. + * @see {@link GenLayerBiome} */ default > IAreaFactory getBiomeLayer(IAreaFactory parentLayer, OverworldGenSettings chunkSettings, LongFunction contextFactory)