Compare commits
2 Commits
e88c2ba9b0
...
e2115397fe
Author | SHA1 | Date | |
---|---|---|---|
e2115397fe | |||
90da43ec49 |
@ -4,6 +4,7 @@ import com.mojang.blaze3d.vertex.PoseStack
|
||||
import net.minecraft.client.Camera
|
||||
import net.neoforged.neoforge.client.event.RenderLevelStageEvent
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.render.DynamicBufferSource
|
||||
|
||||
abstract class AndroidActiveFeature(type: AndroidFeatureType<*>, android: MatteryPlayer) : AndroidSwitchableFeature(type, android) {
|
||||
/**
|
||||
@ -22,5 +23,5 @@ abstract class AndroidActiveFeature(type: AndroidFeatureType<*>, android: Matter
|
||||
*
|
||||
* pose stack has pose pushed already
|
||||
*/
|
||||
abstract fun renderPreview(poseStack: PoseStack, camera: Camera)
|
||||
abstract fun renderPreview(poseStack: PoseStack, camera: Camera, bufferSource: DynamicBufferSource)
|
||||
}
|
||||
|
@ -8,7 +8,6 @@ import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.core.Vec3i
|
||||
import net.minecraft.network.protocol.game.ClientboundSoundEntityPacket
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.sounds.SoundEvents
|
||||
import net.minecraft.sounds.SoundSource
|
||||
@ -323,7 +322,7 @@ class EnderTeleporterFeature(capability: MatteryPlayer) : AndroidActiveFeature(A
|
||||
override val previewRenderStage: RenderLevelStageEvent.Stage
|
||||
get() = RenderLevelStageEvent.Stage.AFTER_PARTICLES
|
||||
|
||||
override fun renderPreview(poseStack: PoseStack, camera: Camera) {
|
||||
override fun renderPreview(poseStack: PoseStack, camera: Camera, bufferSource: DynamicBufferSource) {
|
||||
if (!canUse()) return
|
||||
val (pos, phasedBlocks) = trace()
|
||||
|
||||
@ -350,7 +349,7 @@ class EnderTeleporterFeature(capability: MatteryPlayer) : AndroidActiveFeature(A
|
||||
if (phasedBlocks.isNotEmpty()) {
|
||||
poseStack.popPose()
|
||||
val collisionContext = CollisionContext.of(ply)
|
||||
val builder = source.getBuffer(linesIgnoreZRenderType)
|
||||
val builder = bufferSource.getBuffer(linesIgnoreZRenderType)
|
||||
|
||||
for (blockPos in phasedBlocks) {
|
||||
val blockState = ply.level().getBlockState(blockPos)
|
||||
@ -367,7 +366,7 @@ class EnderTeleporterFeature(capability: MatteryPlayer) : AndroidActiveFeature(A
|
||||
)
|
||||
}
|
||||
|
||||
source.endBatch(linesIgnoreZRenderType)
|
||||
bufferSource.endBatch(linesIgnoreZRenderType)
|
||||
}
|
||||
|
||||
RenderSystem.enableDepthTest()
|
||||
@ -387,10 +386,6 @@ class EnderTeleporterFeature(capability: MatteryPlayer) : AndroidActiveFeature(A
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val source by lazy {
|
||||
DynamicBufferSource(maximalInitialBufferSize = 256)
|
||||
}
|
||||
|
||||
private val SHAPE_CHECK_NOT_FENCE = Block.box(6.0, 17.0, 6.0, 10.0, 31.0, 10.0)
|
||||
private val SHAPE_CHECK_SUPPORT_PLAYER = Block.box(6.0, 0.0, 6.0, 10.0, 16.0, 10.0)
|
||||
|
||||
|
@ -14,6 +14,7 @@ import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.render.Widgets18
|
||||
import ru.dbotthepony.mc.otm.client.render.is3DContext
|
||||
import ru.dbotthepony.kommons.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.client.render.DynamicBufferSource
|
||||
import ru.dbotthepony.mc.otm.network.ActivateAndroidFeaturePacket
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@ -83,7 +84,7 @@ object AndroidAbilityKeyMapping : KeyMapping("key.otm.android_ability", KeyConfl
|
||||
try {
|
||||
is3DContext = true
|
||||
event.poseStack.pushPose()
|
||||
feature.renderPreview(event.poseStack, event.camera)
|
||||
feature.renderPreview(event.poseStack, event.camera, DynamicBufferSource.WORLD)
|
||||
} finally {
|
||||
is3DContext = false
|
||||
event.poseStack.popPose()
|
||||
|
@ -182,78 +182,85 @@ sealed class AbstractMatterySprite : IGUIRenderable, IUVCoords {
|
||||
type.toActualNetwork(this, buff)
|
||||
}
|
||||
|
||||
val renderTypeNoDepth by lazy {
|
||||
noDepthCache.computeIfAbsent(texture) {
|
||||
val builder = RenderType.CompositeState.builder()
|
||||
private inner class ClientData {
|
||||
val renderTypeNoDepth by lazy {
|
||||
noDepthCache.computeIfAbsent(texture) {
|
||||
val builder = RenderType.CompositeState.builder()
|
||||
|
||||
builder.setTextureState(RenderStateShard.TextureStateShard(it, false, false))
|
||||
builder.setShaderState(RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexColorShader))
|
||||
builder.setDepthTestState(RenderStateShard.DepthTestStateShard("always", GL_ALWAYS))
|
||||
builder.setTransparencyState(RenderStateShard.TransparencyStateShard("normal_blend", {
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
}, {
|
||||
RenderSystem.disableBlend()
|
||||
}))
|
||||
builder.setTextureState(RenderStateShard.TextureStateShard(it, false, false))
|
||||
builder.setShaderState(RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexColorShader))
|
||||
builder.setDepthTestState(RenderStateShard.DepthTestStateShard("always", GL_ALWAYS))
|
||||
builder.setTransparencyState(RenderStateShard.TransparencyStateShard("normal_blend", {
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
}, {
|
||||
RenderSystem.disableBlend()
|
||||
}))
|
||||
|
||||
@Suppress("INACCESSIBLE_TYPE")
|
||||
RenderType.create("otm_gui_element_no_depth",
|
||||
DefaultVertexFormat.POSITION_TEX_COLOR,
|
||||
VertexFormat.Mode.QUADS,
|
||||
2048,
|
||||
false,
|
||||
false,
|
||||
builder.createCompositeState(false)) as RenderType
|
||||
@Suppress("INACCESSIBLE_TYPE")
|
||||
RenderType.create("otm_gui_element_no_depth",
|
||||
DefaultVertexFormat.POSITION_TEX_COLOR,
|
||||
VertexFormat.Mode.QUADS,
|
||||
2048,
|
||||
false,
|
||||
false,
|
||||
builder.createCompositeState(false)) as RenderType
|
||||
}
|
||||
}
|
||||
|
||||
val renderTypeDepth by lazy {
|
||||
depthCache.computeIfAbsent(texture) {
|
||||
val builder = RenderType.CompositeState.builder()
|
||||
|
||||
builder.setTextureState(RenderStateShard.TextureStateShard(it, false, false))
|
||||
builder.setShaderState(RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexColorShader))
|
||||
builder.setTransparencyState(RenderStateShard.TransparencyStateShard("normal_blend", {
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
}, {
|
||||
RenderSystem.disableBlend()
|
||||
}))
|
||||
|
||||
@Suppress("INACCESSIBLE_TYPE")
|
||||
RenderType.create("otm_gui_element_depth",
|
||||
DefaultVertexFormat.POSITION_TEX_COLOR,
|
||||
VertexFormat.Mode.QUADS,
|
||||
2048,
|
||||
false,
|
||||
false,
|
||||
builder.createCompositeState(false)) as RenderType
|
||||
}
|
||||
}
|
||||
|
||||
val renderTypeWorld by lazy {
|
||||
worldCache.computeIfAbsent(texture) {
|
||||
val builder = RenderType.CompositeState.builder()
|
||||
|
||||
builder.setTextureState(RenderStateShard.TextureStateShard(it, false, false))
|
||||
builder.setShaderState(RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexColorShader))
|
||||
builder.setTransparencyState(RenderStateShard.TransparencyStateShard("normal_blend", {
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
}, {
|
||||
RenderSystem.disableBlend()
|
||||
}))
|
||||
|
||||
@Suppress("INACCESSIBLE_TYPE")
|
||||
RenderType.create("otm_gui_element_world",
|
||||
DefaultVertexFormat.POSITION_TEX_COLOR,
|
||||
VertexFormat.Mode.QUADS,
|
||||
8192,
|
||||
false,
|
||||
false,
|
||||
builder.createCompositeState(false)) as RenderType
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val renderTypeDepth by lazy {
|
||||
depthCache.computeIfAbsent(texture) {
|
||||
val builder = RenderType.CompositeState.builder()
|
||||
|
||||
builder.setTextureState(RenderStateShard.TextureStateShard(it, false, false))
|
||||
builder.setShaderState(RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexColorShader))
|
||||
builder.setTransparencyState(RenderStateShard.TransparencyStateShard("normal_blend", {
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
}, {
|
||||
RenderSystem.disableBlend()
|
||||
}))
|
||||
|
||||
@Suppress("INACCESSIBLE_TYPE")
|
||||
RenderType.create("otm_gui_element_depth",
|
||||
DefaultVertexFormat.POSITION_TEX_COLOR,
|
||||
VertexFormat.Mode.QUADS,
|
||||
2048,
|
||||
false,
|
||||
false,
|
||||
builder.createCompositeState(false)) as RenderType
|
||||
}
|
||||
}
|
||||
|
||||
val renderTypeWorld by lazy {
|
||||
worldCache.computeIfAbsent(texture) {
|
||||
val builder = RenderType.CompositeState.builder()
|
||||
|
||||
builder.setTextureState(RenderStateShard.TextureStateShard(it, false, false))
|
||||
builder.setShaderState(RenderStateShard.ShaderStateShard(GameRenderer::getPositionTexColorShader))
|
||||
builder.setTransparencyState(RenderStateShard.TransparencyStateShard("normal_blend", {
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
}, {
|
||||
RenderSystem.disableBlend()
|
||||
}))
|
||||
|
||||
@Suppress("INACCESSIBLE_TYPE")
|
||||
RenderType.create("otm_gui_element_world",
|
||||
DefaultVertexFormat.POSITION_TEX_COLOR,
|
||||
VertexFormat.Mode.QUADS,
|
||||
8192,
|
||||
false,
|
||||
false,
|
||||
builder.createCompositeState(false)) as RenderType
|
||||
}
|
||||
}
|
||||
private val clientData by lazy { ClientData() }
|
||||
val renderTypeNoDepth get() = clientData.renderTypeNoDepth
|
||||
val renderTypeDepth get() = clientData.renderTypeDepth
|
||||
val renderTypeWorld get() = clientData.renderTypeWorld
|
||||
|
||||
companion object {
|
||||
private val noDepthCache = ConcurrentHashMap<ResourceLocation, RenderType>()
|
||||
|
Loading…
Reference in New Issue
Block a user