port to MC 1.9

This commit is contained in:
octarine-noise
2016-03-21 20:54:06 +01:00
parent 42c14790af
commit 6ee27c2a99
41 changed files with 208 additions and 216 deletions

View File

@@ -2,8 +2,7 @@ package mods.octarinecore.client.gui
import net.minecraft.client.gui.GuiScreen
import net.minecraft.client.resources.I18n
import net.minecraft.util.EnumChatFormatting.GOLD
import net.minecraft.util.EnumChatFormatting.YELLOW
import net.minecraft.util.text.TextFormatting.*
import net.minecraftforge.fml.client.config.*
/**

View File

@@ -1,7 +1,7 @@
package mods.octarinecore.client.gui
import net.minecraft.client.resources.I18n
import net.minecraft.util.EnumChatFormatting.AQUA
import net.minecraft.util.text.TextFormatting.*
import net.minecraftforge.fml.client.config.GuiConfig
import net.minecraftforge.fml.client.config.GuiConfigEntries
import net.minecraftforge.fml.client.config.IConfigElement

View File

@@ -1,13 +1,13 @@
@file:JvmName("Utils")
package mods.octarinecore.client.gui
import net.minecraft.util.EnumChatFormatting
import net.minecraft.util.text.TextFormatting.*
fun stripTooltipDefaultText(tooltip: MutableList<String>) {
var defaultRows = false
val iter = tooltip.iterator()
while (iter.hasNext()) {
if (iter.next().startsWith(EnumChatFormatting.AQUA.toString())) defaultRows = true
if (iter.next().startsWith(AQUA.toString())) defaultRows = true
if (defaultRows) iter.remove()
}
}

View File

@@ -11,11 +11,13 @@ import net.minecraft.block.Block
import net.minecraft.block.state.IBlockState
import net.minecraft.client.Minecraft
import net.minecraft.client.renderer.BlockRendererDispatcher
import net.minecraft.client.renderer.WorldRenderer
import net.minecraft.util.BlockPos
import net.minecraft.util.EnumWorldBlockLayer
import net.minecraft.util.MathHelper
import net.minecraft.client.renderer.VertexBuffer
import net.minecraft.client.renderer.color.BlockColors
import net.minecraft.util.BlockRenderLayer
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.MathHelper
import net.minecraft.world.IBlockAccess
import net.minecraft.world.biome.BiomeGenBase
/**
* [ThreadLocal] instance of [BlockContext] representing the block being rendered.
@@ -27,6 +29,8 @@ val blockContext by ThreadLocalDelegate { BlockContext() }
*/
val modelRenderer by ThreadLocalDelegate { ModelRenderer() }
val blockColors = ThreadLocal<BlockColors>()
abstract class AbstractBlockRenderingHandler(modId: String) : ResourceHandler(modId) {
val moveToCutout: Boolean get() = true
@@ -35,15 +39,15 @@ abstract class AbstractBlockRenderingHandler(modId: String) : ResourceHandler(mo
// Custom rendering
// ============================
abstract fun isEligible(ctx: BlockContext): Boolean
abstract fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: WorldRenderer, layer: EnumWorldBlockLayer): Boolean
abstract fun render(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer): Boolean
// ============================
// Vanilla rendering wrapper
// ============================
/**
* Render the block in the current [BlockContext], and capture shading and texture data.
* Render the block in the current [BlockContext]
*/
fun renderWorldBlockBase(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: WorldRenderer, layer: EnumWorldBlockLayer?): Boolean {
fun renderWorldBlockBase(ctx: BlockContext, dispatcher: BlockRendererDispatcher, renderer: VertexBuffer, layer: BlockRenderLayer?): Boolean {
ctx.blockState(Int3.zero).let {
if (layer == null || it.block.canRenderInLayer(layer))
return dispatcher.renderBlock(it, ctx.pos, ctx.world, renderer)
@@ -68,18 +72,18 @@ class BlockContext() {
val block: Block get() = block(Int3.zero)
fun block(offset: Int3) = blockState(offset).block
fun blockState(offset: Int3) = (pos + offset).let { world!!.getBlockState(it) }
fun blockData(offset: Int3, pass: Int) = (pos + offset).let { pos ->
fun blockData(offset: Int3) = (pos + offset).let { pos ->
world!!.getBlockState(pos).let { state ->
BlockData(
state,
state.block.colorMultiplier(world!!, pos, pass),
state.block.getMixedBrightnessForBlock(world!!, pos)
Minecraft.getMinecraft().blockColors.colorMultiplier(state, world!!, pos, 0),
state.block.getPackedLightmapCoords(state, world!!, pos)
)
}
}
/** Get the biome ID at the block position. */
val biomeId: Int get() = world!!.getBiomeGenForCoords(pos).biomeID
val biomeId: Int get() = BiomeGenBase.getIdForBiome(world!!.getBiomeGenForCoords(pos))
/** Get the centerpoint of the block being rendered. */
val blockCenter: Double3 get() = Double3(pos.x + 0.5, pos.y + 0.5, pos.z + 0.5)

View File

@@ -4,7 +4,7 @@ import mods.octarinecore.PI2
import mods.octarinecore.common.Double3
import net.minecraft.client.Minecraft
import net.minecraft.client.particle.EntityFX
import net.minecraft.client.renderer.WorldRenderer
import net.minecraft.client.renderer.VertexBuffer
import net.minecraft.client.renderer.texture.TextureAtlasSprite
import net.minecraft.entity.Entity
import net.minecraft.world.World
@@ -25,14 +25,14 @@ abstract class AbstractEntityFX(world: World, x: Double, y: Double, z: Double) :
super.onUpdate()
currentPos.setTo(posX, posY, posZ)
prevPos.setTo(prevPosX, prevPosY, prevPosZ)
velocity.setTo(motionX, motionY, motionZ)
velocity.setTo(xSpeed, ySpeed, zSpeed)
update()
posX = currentPos.x; posY = currentPos.y; posZ = currentPos.z;
motionX = velocity.x; motionY = velocity.y; motionZ = velocity.z;
xSpeed = velocity.x; ySpeed = velocity.y; zSpeed = velocity.z;
}
/** Render the particle. */
abstract fun render(worldRenderer: WorldRenderer, partialTickTime: Float)
abstract fun render(worldRenderer: VertexBuffer, partialTickTime: Float)
/** Update particle on world tick. */
abstract fun update()
@@ -43,7 +43,7 @@ abstract class AbstractEntityFX(world: World, x: Double, y: Double, z: Double) :
/** Add the particle to the effect renderer if it is valid. */
fun addIfValid() { if (isValid) Minecraft.getMinecraft().effectRenderer.addEffect(this) }
override fun renderParticle(worldRenderer: WorldRenderer, entity: Entity, partialTickTime: Float, rotX: Float, rotZ: Float, rotYZ: Float, rotXY: Float, rotXZ: Float) {
override fun renderParticle(worldRenderer: VertexBuffer, entity: Entity, partialTickTime: Float, rotX: Float, rotZ: Float, rotYZ: Float, rotXY: Float, rotXZ: Float) {
billboardRot.first.setTo(rotX + rotXY, rotZ, rotYZ + rotXZ)
billboardRot.second.setTo(rotX - rotXY, -rotZ, rotYZ - rotXZ)
render(worldRenderer, partialTickTime)
@@ -61,13 +61,13 @@ abstract class AbstractEntityFX(world: World, x: Double, y: Double, z: Double) :
* @param[isMirrored] mirror particle texture along V-axis
* @param[alpha] aplha blending
*/
fun renderParticleQuad(worldRenderer: WorldRenderer,
fun renderParticleQuad(worldRenderer: VertexBuffer,
partialTickTime: Float,
currentPos: Double3 = this.currentPos,
prevPos: Double3 = this.prevPos,
size: Double = particleScale.toDouble(),
rotation: Int = 0,
icon: TextureAtlasSprite = particleIcon,
icon: TextureAtlasSprite = particleTexture,
isMirrored: Boolean = false,
alpha: Float = this.particleAlpha) {
@@ -113,11 +113,6 @@ abstract class AbstractEntityFX(world: World, x: Double, y: Double, z: Double) :
.color(particleRed, particleGreen, particleBlue, alpha)
.lightmap(brLow, brHigh)
.endVertex()
// worldRenderer.addVertexWithUV(center.x - v1.x, center.y - v1.y, center.z - v1.z, maxU, maxV)
// worldRenderer.addVertexWithUV(center.x - v2.x, center.y - v2.y, center.z - v2.z, maxU, minV)
// worldRenderer.addVertexWithUV(center.x + v1.x, center.y + v1.y, center.z + v1.z, minU, minV)
// worldRenderer.addVertexWithUV(center.x + v2.x, center.y + v2.y, center.z + v2.z, minU, maxV)
}
override fun getFXLayer() = 1

View File

@@ -2,12 +2,10 @@ package mods.octarinecore.client.render
import mods.octarinecore.common.*
import net.minecraft.client.Minecraft
import net.minecraft.client.renderer.WorldRenderer
import net.minecraft.client.renderer.VertexBuffer
import net.minecraft.client.renderer.texture.TextureAtlasSprite
import net.minecraft.client.renderer.vertex.DefaultVertexFormats
import net.minecraft.util.EnumFacing
import net.minecraft.util.EnumFacing.*
import java.lang.Math.max
class ModelRenderer() : ShadingContext() {
@@ -28,7 +26,7 @@ class ModelRenderer() : ShadingContext() {
* @param[postProcess] lambda to perform arbitrary modifications on the [RenderVertex] just before it goes to the [Tessellator]
*/
inline fun render(
worldRenderer: WorldRenderer,
worldRenderer: VertexBuffer,
model: Model,
rot: Rotation,
trans: Double3 = blockContext.blockCenter,
@@ -88,7 +86,7 @@ open class ShadingContext {
fun aoShading(face: EnumFacing, corner1: EnumFacing, corner2: EnumFacing) =
aoFaces[face.rotate(rotation).ordinal][corner1.rotate(rotation), corner2.rotate(rotation)]
fun blockData(offset: Int3) = blockContext.blockData(offset.rotate(rotation), 0)
fun blockData(offset: Int3) = blockContext.blockData(offset.rotate(rotation))
}
/**
@@ -158,7 +156,7 @@ class RenderVertex() {
}
fun WorldRenderer.ensureSpaceForQuads(num: Int) {
fun VertexBuffer.ensureSpaceForQuads(num: Int) {
rawIntBuffer.position(bufferSize)
growBuffer(num * vertexFormat.nextOffset)
}

View File

@@ -2,8 +2,8 @@ package mods.octarinecore.client.render
import mods.octarinecore.common.Int3
import mods.octarinecore.common.plus
import net.minecraft.util.BlockPos
import net.minecraft.util.EnumFacing
import net.minecraft.util.math.BlockPos
import net.minecraft.world.IBlockAccess
/**

View File

@@ -1,6 +1,7 @@
package mods.octarinecore.client.render
import mods.octarinecore.common.*
import net.minecraft.client.Minecraft
import net.minecraft.client.renderer.BlockModelRenderer
import net.minecraft.util.EnumFacing
import net.minecraft.util.EnumFacing.*
@@ -40,7 +41,7 @@ class AoData() {
}
class AoFaceData(val face: EnumFacing) {
val ao = BlockModelRenderer().AmbientOcclusionFace()
val ao = BlockModelRenderer(Minecraft.getMinecraft().blockColors).AmbientOcclusionFace()
val top = faceCorners[face.ordinal].topLeft.first
val left = faceCorners[face.ordinal].topLeft.second
@@ -63,7 +64,7 @@ class AoFaceData(val face: EnumFacing) {
val quadBounds: FloatArray = FloatArray(12)
val flags = BitSet(3).apply { set(0) }
ao.updateVertexBrightness(ctx.world, blockState.block, ctx.pos + offset, face, quadBounds, flags)
ao.updateVertexBrightness(ctx.world, blockState, ctx.pos + offset, face, quadBounds, flags)
ordered.forEachIndexed { idx, aoData -> aoData.set(ao.vertexBrightness[idx], ao.vertexColorMultiplier[idx] * multiplier) }
}

View File

@@ -6,11 +6,11 @@ import mods.octarinecore.stripStart
import net.minecraft.block.Block
import net.minecraft.block.state.IBlockState
import net.minecraft.client.renderer.block.model.ModelBlock
import net.minecraft.client.renderer.block.model.ModelResourceLocation
import net.minecraft.client.renderer.block.statemap.DefaultStateMapper
import net.minecraft.client.renderer.block.statemap.IStateMapper
import net.minecraft.client.renderer.texture.TextureAtlasSprite
import net.minecraft.client.renderer.texture.TextureMap
import net.minecraft.client.resources.model.ModelResourceLocation
import net.minecraft.util.ResourceLocation
import net.minecraftforge.client.event.TextureStitchEvent
import net.minecraftforge.client.model.IModel

View File

@@ -5,8 +5,8 @@ import net.minecraft.client.resources.IResourcePack
import net.minecraft.client.resources.data.IMetadataSection
import net.minecraft.client.resources.data.IMetadataSerializer
import net.minecraft.client.resources.data.PackMetadataSection
import net.minecraft.util.ChatComponentText
import net.minecraft.util.ResourceLocation
import net.minecraft.util.text.TextComponentString
import net.minecraftforge.fml.client.FMLClientHandler
import java.io.InputStream
import java.util.*
@@ -28,7 +28,7 @@ class GeneratorPack(val name: String, vararg val generators: GeneratorBase) : IR
override fun getPackImage() = null
override fun getResourceDomains() = HashSet(generators.map { it.domain })
override fun <T: IMetadataSection> getPackMetadata(serializer: IMetadataSerializer?, type: String?) =
if (type == "pack") PackMetadataSection(ChatComponentText("Generated resources"), 1) as? T else null
if (type == "pack") PackMetadataSection(TextComponentString("Generated resources"), 1) as? T else null
override fun resourceExists(location: ResourceLocation?): Boolean =
if (location == null) false

View File

@@ -5,16 +5,15 @@ import mods.octarinecore.common.Double3
import mods.octarinecore.common.Int3
import net.minecraft.client.renderer.texture.TextureAtlasSprite
import net.minecraft.client.renderer.texture.TextureMap
import net.minecraft.util.BlockPos
import net.minecraft.util.MathHelper
import net.minecraft.util.ResourceLocation
import net.minecraft.util.math.BlockPos
import net.minecraft.util.math.MathHelper
import net.minecraft.world.World
import net.minecraft.world.gen.NoiseGeneratorSimplex
import net.minecraftforge.client.event.TextureStitchEvent
import net.minecraftforge.common.MinecraftForge
import net.minecraftforge.event.world.WorldEvent
import net.minecraftforge.fml.client.event.ConfigChangedEvent
import net.minecraftforge.fml.common.FMLCommonHandler
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import java.util.*