More backporting
This commit is contained in:
parent
3fc9435259
commit
09f4db3fa9
@ -18,7 +18,7 @@ private fun nothingOrNumber(input: Int): String {
|
||||
return (input - 1).toString()
|
||||
}
|
||||
|
||||
open class BatteryBankProvider(event: GatherDataEvent) : BlockStateProvider(event.generator.packOutput, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
open class BatteryBankProvider(event: GatherDataEvent) : BlockStateProvider(event.generator, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
protected var block = "battery_bank"
|
||||
protected var batteryPath = "block/battery/battery"
|
||||
protected var registry: Block = MBlocks.BATTERY_BANK
|
||||
|
@ -3,31 +3,29 @@ package ru.dbotthepony.mc.otm.android
|
||||
import com.google.gson.JsonObject
|
||||
import it.unimi.dsi.fastutil.objects.ObjectArraySet
|
||||
import net.minecraft.data.CachedOutput
|
||||
import net.minecraft.data.DataGenerator
|
||||
import net.minecraft.data.DataProvider
|
||||
import net.minecraft.data.PackOutput
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.core.toJson
|
||||
import ru.dbotthepony.mc.otm.core.toJsonStrict
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import java.util.Collections
|
||||
import java.util.LinkedList
|
||||
import java.util.concurrent.CompletableFuture
|
||||
import java.util.function.Consumer
|
||||
|
||||
@Suppress("unused")
|
||||
open class AndroidResearchDataProvider() : DataProvider {
|
||||
var pathProvider: PackOutput.PathProvider by WriteOnce("You need to call bindPackOutput before registering this data provider")
|
||||
var pathProvider: DataGenerator.PathProvider by WriteOnce("You need to call bindPackOutput before registering this data provider")
|
||||
private set
|
||||
|
||||
constructor(output: PackOutput) : this() {
|
||||
constructor(output: DataGenerator) : this() {
|
||||
bindPackOutput(output)
|
||||
}
|
||||
|
||||
constructor(event: GatherDataEvent) : this(event.generator.packOutput)
|
||||
constructor(event: GatherDataEvent) : this(event.generator)
|
||||
|
||||
fun bindPackOutput(output: PackOutput) {
|
||||
pathProvider = output.createPathProvider(PackOutput.Target.DATA_PACK, AndroidResearchManager.DIRECTORY)
|
||||
fun bindPackOutput(output: DataGenerator) {
|
||||
pathProvider = output.createPathProvider(DataGenerator.Target.DATA_PACK, AndroidResearchManager.DIRECTORY)
|
||||
}
|
||||
|
||||
protected val callbacks = LinkedList<(Consumer<AndroidResearchType>) -> Unit>()
|
||||
@ -52,14 +50,13 @@ open class AndroidResearchDataProvider() : DataProvider {
|
||||
return this
|
||||
}
|
||||
|
||||
final override fun run(output: CachedOutput): CompletableFuture<*> {
|
||||
final override fun run(output: CachedOutput) {
|
||||
val set = ObjectArraySet<ResourceLocation>()
|
||||
val added = LinkedList<AndroidResearchType>()
|
||||
val futures = ArrayList<CompletableFuture<*>>()
|
||||
|
||||
addEverything {
|
||||
if (set.add(it.id)) {
|
||||
futures.add(DataProvider.saveStable(output, AndroidResearchType.CODEC.toJsonStrict(it).also { (it as JsonObject).remove("id") }, pathProvider.json(it.id)))
|
||||
DataProvider.saveStable(output, AndroidResearchType.CODEC.toJsonStrict(it).also { (it as JsonObject).remove("id") }, pathProvider.json(it.id))
|
||||
AndroidResearchManager.put(it)
|
||||
added.add(it)
|
||||
} else {
|
||||
@ -71,8 +68,6 @@ open class AndroidResearchDataProvider() : DataProvider {
|
||||
value.validate()
|
||||
generated.add(value)
|
||||
}
|
||||
|
||||
return CompletableFuture.allOf(*futures.toTypedArray())
|
||||
}
|
||||
|
||||
override fun getName(): String {
|
||||
|
@ -36,7 +36,6 @@ import ru.dbotthepony.mc.otm.client.render.linesIgnoreZRenderType
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.sprite
|
||||
import ru.dbotthepony.mc.otm.config.AndroidConfig
|
||||
import ru.dbotthepony.mc.otm.core.genericPositions
|
||||
import ru.dbotthepony.mc.otm.core.holder
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.math.Vector
|
||||
import ru.dbotthepony.mc.otm.core.math.asVector
|
||||
@ -301,7 +300,7 @@ class EnderTeleporterFeature(capability: MatteryPlayerCapability) : AndroidActiv
|
||||
val event = ForgeEventFactory.onEnderTeleport(ply, blockPos.x + 0.5, blockPos.y.toDouble(), blockPos.z + 0.5)
|
||||
|
||||
if (event.isCanceled) {
|
||||
(ply as ServerPlayer).connection.send(ClientboundSoundEntityPacket(SoundEvents.ITEM_BREAK.holder, SoundSource.PLAYERS, ply, 0.3f, 0.5f, ply.level.random.nextLong()))
|
||||
(ply as ServerPlayer).connection.send(ClientboundSoundEntityPacket(SoundEvents.ITEM_BREAK, SoundSource.PLAYERS, ply, 0.3f, 0.5f, ply.level.random.nextLong()))
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -17,6 +17,7 @@ import ru.dbotthepony.mc.otm.capability.energy.WorkerEnergyStorage
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.config.MachinesConfig
|
||||
import ru.dbotthepony.mc.otm.core.getEntitiesInEllipsoid
|
||||
import ru.dbotthepony.mc.otm.core.math.center
|
||||
import ru.dbotthepony.mc.otm.menu.tech.AndroidChargerMenu
|
||||
import ru.dbotthepony.mc.otm.registry.MBlockEntities
|
||||
|
||||
|
@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.capability
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.math.Vector4f
|
||||
import it.unimi.dsi.fastutil.ints.IntAVLTreeSet
|
||||
import it.unimi.dsi.fastutil.ints.IntSet
|
||||
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap
|
||||
@ -61,7 +62,6 @@ import net.minecraftforge.network.PacketDistributor
|
||||
import net.minecraftforge.registries.ForgeRegistries
|
||||
import net.minecraftforge.server.command.EnumArgument
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import org.joml.Vector4f
|
||||
import ru.dbotthepony.mc.otm.*
|
||||
import ru.dbotthepony.mc.otm.android.AndroidFeature
|
||||
import ru.dbotthepony.mc.otm.android.AndroidFeatureType
|
||||
@ -1415,9 +1415,9 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
val pos = Vector4f(model.body.x / 16f, model.body.y / 16f, model.body.z / 16f, 1f)
|
||||
val cam = minecraft.gameRenderer.mainCamera.position
|
||||
|
||||
pos.mul(RenderSystem.getProjectionMatrix())
|
||||
pos.mul(poseStack.last().pose())
|
||||
makeSmoke(cam.x + pos.x, cam.y + pos.y, cam.z + pos.z, ply.level.random, ply.level)
|
||||
pos.transform(RenderSystem.getProjectionMatrix())
|
||||
pos.transform(poseStack.last().pose())
|
||||
makeSmoke(cam.x + pos.x(), cam.y + pos.y(), cam.z + pos.z(), ply.level.random, ply.level)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -9,7 +9,6 @@ import it.unimi.dsi.fastutil.objects.ReferenceArraySet
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.RenderType
|
||||
import net.minecraft.client.renderer.Sheets
|
||||
import org.joml.Vector3f
|
||||
|
||||
private fun equals(existing: ImmutableList<RenderType>?, types: Array<out RenderType>): Boolean {
|
||||
if (types.isEmpty()) {
|
||||
|
@ -1,11 +1,11 @@
|
||||
package ru.dbotthepony.mc.otm.client.render
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.math.Matrix4f
|
||||
import net.minecraft.client.gui.Font
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.util.FormattedCharSequence
|
||||
import org.joml.Matrix4f
|
||||
import ru.dbotthepony.mc.otm.core.FloatSupplier
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.math.component1
|
||||
|
@ -5,12 +5,12 @@ import com.mojang.blaze3d.platform.GlConst
|
||||
import com.mojang.blaze3d.platform.GlStateManager
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.*
|
||||
import com.mojang.math.Matrix4f
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.renderer.FogRenderer
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.world.level.levelgen.XoroshiroRandomSource
|
||||
import net.minecraft.world.level.material.FogType
|
||||
import org.joml.Matrix4f
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
|
@ -6,9 +6,6 @@ import com.mojang.blaze3d.vertex.VertexConsumer
|
||||
import com.mojang.math.Matrix4f
|
||||
import com.mojang.math.Vector3f
|
||||
import net.minecraft.core.Vec3i
|
||||
import org.joml.Matrix4f
|
||||
import org.joml.Quaternionf
|
||||
import org.joml.Vector3f
|
||||
import ru.dbotthepony.mc.otm.core.math.IAngle
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.math.Vector
|
||||
@ -36,7 +33,7 @@ fun PoseStack.translate(vector: Vector3f) = translate(vector.x(), vector.y(), ve
|
||||
fun PoseStack.rotateAroundPoint(point: Vector, axis: Vector, rotation: Float, isDegrees: Boolean = false) {
|
||||
val last = last()
|
||||
last.pose().rotateAroundPoint(point, axis, rotation, isDegrees)
|
||||
last.normal().rotate(axis.rotateAroundThis(rotation, isDegrees))
|
||||
last.normal().mul(axis.rotateAroundThis(rotation, isDegrees))
|
||||
}
|
||||
|
||||
fun PoseStack.rotateAroundPoint(point: Vector, rotation: IAngle) {
|
||||
@ -48,7 +45,7 @@ fun PoseStack.rotateAroundPoint(point: Vector, rotation: IAngle) {
|
||||
fun PoseStack.rotateAroundPoint(point: Vector3f, axis: Vector, rotation: Float, isDegrees: Boolean = false) {
|
||||
val last = last()
|
||||
last.pose().rotateAroundPoint(point, axis, rotation, isDegrees)
|
||||
last.normal().rotate(axis.rotateAroundThis(rotation, isDegrees))
|
||||
last.normal().mul(axis.rotateAroundThis(rotation, isDegrees))
|
||||
}
|
||||
|
||||
fun PoseStack.rotateAroundPoint(point: Vector3f, rotation: IAngle) {
|
||||
@ -57,10 +54,11 @@ fun PoseStack.rotateAroundPoint(point: Vector3f, rotation: IAngle) {
|
||||
// last.normal().mul(rotation.forward().rotateAroundThis(rotation))
|
||||
}
|
||||
|
||||
fun PoseStack.rotateAround(rotationMatrix: Quaternionf, x: Float, y: Float, z: Float) {
|
||||
fun PoseStack.rotateAround(axis: Vector3f, radians: Float) {
|
||||
val q = axis.rotation(radians)
|
||||
val pose = last
|
||||
pose.pose.rotateAround(rotationMatrix, x, y, z)
|
||||
pose.normal().rotate(rotationMatrix)
|
||||
pose.pose.multiply(q)
|
||||
pose.normal().mul(q)
|
||||
}
|
||||
|
||||
fun PoseStack.translation(): Vector3f {
|
||||
|
@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.client.render
|
||||
import com.mojang.blaze3d.platform.GlStateManager
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.*
|
||||
import com.mojang.math.Matrix4f
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.client.renderer.RenderStateShard
|
||||
import net.minecraft.client.renderer.RenderStateShard.LineStateShard
|
||||
@ -11,7 +12,6 @@ import net.minecraft.client.renderer.ShaderInstance
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.server.packs.resources.ResourceProvider
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import org.joml.Matrix4f
|
||||
import org.lwjgl.opengl.GL11.GL_ALWAYS
|
||||
import org.lwjgl.opengl.GL11.GL_LESS
|
||||
import ru.dbotthepony.mc.otm.OverdriveThatMatters
|
||||
@ -92,6 +92,7 @@ fun renderRect(
|
||||
tess.end()
|
||||
}
|
||||
|
||||
@OptIn(ExperimentalStdlibApi::class)
|
||||
@Suppress("NAME_SHADOWING")
|
||||
fun renderCheckerboard(
|
||||
matrix: Matrix4f,
|
||||
|
@ -17,6 +17,7 @@ import ru.dbotthepony.mc.otm.block.entity.tech.BatteryBankBlockEntity
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.sprites.AbstractMatterySprite
|
||||
import ru.dbotthepony.mc.otm.client.render.DynamicBufferSource
|
||||
import ru.dbotthepony.mc.otm.client.render.translate
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.MatterGaugePanel
|
||||
import ru.dbotthepony.mc.otm.client.screen.widget.PowerGaugePanel
|
||||
import ru.dbotthepony.mc.otm.core.immutableList
|
||||
|
@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.client.render.blockentity
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.*
|
||||
import com.mojang.math.Matrix4f
|
||||
import net.minecraft.client.Minecraft
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
@ -9,7 +10,6 @@ import net.minecraft.client.renderer.blockentity.BeaconRenderer
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import org.joml.Matrix4f
|
||||
import org.lwjgl.opengl.GL30
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity
|
||||
@ -25,6 +25,7 @@ import ru.dbotthepony.mc.otm.core.math.VECTOR_UP
|
||||
import ru.dbotthepony.mc.otm.core.math.Vector
|
||||
import ru.dbotthepony.mc.otm.core.math.asMutableAngle
|
||||
import ru.dbotthepony.mc.otm.core.math.asVector
|
||||
import ru.dbotthepony.mc.otm.core.math.length
|
||||
import ru.dbotthepony.mc.otm.core.math.minus
|
||||
import ru.dbotthepony.mc.otm.core.math.rotateAroundAxis
|
||||
import ru.dbotthepony.mc.otm.core.math.times
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.render.blockentity
|
||||
|
||||
import com.mojang.blaze3d.vertex.*
|
||||
import com.mojang.math.Axis
|
||||
import com.mojang.math.Vector3f
|
||||
import net.minecraft.client.renderer.*
|
||||
import net.minecraft.client.renderer.block.model.ItemTransforms
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
|
||||
@ -19,7 +19,9 @@ import net.minecraftforge.fluids.capability.IFluidHandler
|
||||
import ru.dbotthepony.mc.otm.block.entity.decorative.FluidTankBlockEntity
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.client.render.rotateAround
|
||||
import ru.dbotthepony.mc.otm.client.render.translate
|
||||
import ru.dbotthepony.mc.otm.core.ifPresentK
|
||||
import ru.dbotthepony.mc.otm.core.math.PIf
|
||||
import ru.dbotthepony.mc.otm.core.math.RGBAColor
|
||||
import ru.dbotthepony.mc.otm.core.math.linearInterpolation
|
||||
import ru.dbotthepony.mc.otm.registry.MBlocks
|
||||
@ -107,7 +109,7 @@ class FluidTankRenderer(private val context: BlockEntityRendererProvider.Context
|
||||
poseStack.pushPose()
|
||||
|
||||
poseStack.translate(0.5, 0.0, 0.5)
|
||||
poseStack.rotateAround(Axis.YP.rotationDegrees(i * 90.0f), 0.0f, 1.0f, 0.0f)
|
||||
poseStack.rotateAround(Vector3f.YP, PIf / 2f * i)
|
||||
poseStack.translate(-0.5f, 0f, fluidWidth * .5f)
|
||||
|
||||
val matrix = poseStack.last().pose()
|
||||
|
@ -2,6 +2,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.render.blockentity
|
||||
|
||||
import com.mojang.blaze3d.vertex.*
|
||||
import com.mojang.math.Matrix4f
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.RenderType
|
||||
import net.minecraft.client.renderer.blockentity.BeaconRenderer
|
||||
@ -9,7 +10,6 @@ import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture
|
||||
import net.minecraft.core.Direction
|
||||
import org.joml.Matrix4f
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.block.BlackHoleBlock
|
||||
import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.render.blockentity
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.math.Axis
|
||||
import com.mojang.math.Vector3f
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.block.model.ItemTransforms
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
|
||||
@ -29,8 +29,8 @@ class MatterReconstructorRenderer(private val context: BlockEntityRendererProvid
|
||||
pose.translate(0.5, 0.6, 0.5)
|
||||
pose.scale(0.5f, 0.5f, 0.5f)
|
||||
|
||||
pose.mulPose(Axis.XP.rotationDegrees(90f))
|
||||
pose.mulPose(Axis.ZP.rotationDegrees(tile.blockRotation.back.toYRot()))
|
||||
pose.mulPose(Vector3f.XP.rotationDegrees(90f))
|
||||
pose.mulPose(Vector3f.ZP.rotationDegrees(tile.blockRotation.back.toYRot()))
|
||||
|
||||
context.itemRenderer.renderStatic(item, ItemTransforms.TransformType.FIXED, packedLight, packedOverlay, pose, DynamicBufferSource.WORLD, tile.blockPos.asLong().toInt())
|
||||
|
||||
|
@ -4,13 +4,13 @@ import com.mojang.blaze3d.platform.GlStateManager.DestFactor
|
||||
import com.mojang.blaze3d.platform.GlStateManager.SourceFactor
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.math.Vector3f
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.block.model.ItemTransforms
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider
|
||||
import net.minecraft.core.particles.DustParticleOptions
|
||||
import net.minecraft.world.level.levelgen.XoroshiroRandomSource
|
||||
import org.joml.Vector3f
|
||||
import org.lwjgl.opengl.GL14.glBlendColor
|
||||
import ru.dbotthepony.mc.otm.block.entity.WorkerState
|
||||
import ru.dbotthepony.mc.otm.block.entity.matter.MatterReplicatorBlockEntity
|
||||
|
@ -3,7 +3,7 @@ package ru.dbotthepony.mc.otm.client.render.blockentity
|
||||
import com.mojang.blaze3d.platform.GlStateManager
|
||||
import com.mojang.blaze3d.systems.RenderSystem
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.math.Axis
|
||||
import com.mojang.math.Vector3f
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.block.model.ItemTransforms
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer
|
||||
@ -36,8 +36,8 @@ class MatterScannerRenderer(private val context: BlockEntityRendererProvider.Con
|
||||
pose.translate(0.5, 0.5, 0.5)
|
||||
pose.scale(0.5f, 0.5f, 0.5f)
|
||||
|
||||
pose.mulPose(Axis.XP.rotationDegrees(90f))
|
||||
pose.mulPose(Axis.ZP.rotationDegrees(tile.blockRotation.back.toYRot()))
|
||||
pose.mulPose(Vector3f.XP.rotationDegrees(90f))
|
||||
pose.mulPose(Vector3f.ZP.rotationDegrees(tile.blockRotation.back.toYRot()))
|
||||
|
||||
context.itemRenderer.renderStatic(
|
||||
item,
|
||||
|
@ -1,7 +1,7 @@
|
||||
package ru.dbotthepony.mc.otm.client.render.entity
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import com.mojang.math.Axis
|
||||
import com.mojang.math.Vector3f
|
||||
import net.minecraft.client.renderer.MultiBufferSource
|
||||
import net.minecraft.client.renderer.RenderType
|
||||
import net.minecraft.client.renderer.entity.EntityRenderer
|
||||
@ -27,7 +27,7 @@ class PlasmaProjectileRenderer(context: EntityRendererProvider.Context) : Entity
|
||||
poseStack.pushPose()
|
||||
|
||||
poseStack.mulPose(entityRenderDispatcher.cameraOrientation())
|
||||
poseStack.mulPose(Axis.YP.rotationDegrees(180f))
|
||||
poseStack.mulPose(Vector3f.YP.rotationDegrees(180f))
|
||||
poseStack.scale(.3f, .3f, .3f)
|
||||
|
||||
val matrix = poseStack.last().pose()
|
||||
|
@ -12,7 +12,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap
|
||||
import net.minecraft.client.gui.screens.Screen
|
||||
import net.minecraft.client.renderer.GameRenderer
|
||||
import net.minecraft.network.chat.Component
|
||||
import org.joml.Vector2i
|
||||
import ru.dbotthepony.mc.otm.client.render.MGUIGraphics
|
||||
import ru.dbotthepony.mc.otm.client.isCtrlDown
|
||||
import ru.dbotthepony.mc.otm.client.isShiftDown
|
||||
@ -21,6 +20,7 @@ import ru.dbotthepony.mc.otm.client.playGuiClickSound
|
||||
import ru.dbotthepony.mc.otm.client.render.DynamicBufferSource
|
||||
import ru.dbotthepony.mc.otm.client.render.RenderGravity
|
||||
import ru.dbotthepony.mc.otm.client.render.tesselator
|
||||
import ru.dbotthepony.mc.otm.client.render.translate
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.DockProperty
|
||||
import ru.dbotthepony.mc.otm.client.screen.panels.EditablePanel
|
||||
import ru.dbotthepony.mc.otm.core.TextComponent
|
||||
@ -32,6 +32,8 @@ import ru.dbotthepony.mc.otm.milliTime
|
||||
import java.util.function.Predicate
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
data class Vector2i(val x: Int, val y: Int)
|
||||
|
||||
open class TextInputPanel<out S : Screen>(
|
||||
screen: S,
|
||||
parent: EditablePanel<*>?,
|
||||
|
@ -80,6 +80,3 @@ val Fluid.registryName get() = ForgeRegistries.FLUIDS.getKeyNullable(this)
|
||||
val Block.registryName get() = ForgeRegistries.BLOCKS.getKeyNullable(this)
|
||||
|
||||
fun FriendlyByteBuf.writeRegistryId(value: Item) = writeRegistryId(ForgeRegistries.ITEMS, value)
|
||||
|
||||
// 1.19.3 lol
|
||||
inline val SoundEvent.holder get() = ForgeRegistries.SOUND_EVENTS.getHolder(this).orElse(null) ?: throw NoSuchElementException("$this is missing from ${ForgeRegistries.SOUND_EVENTS}")
|
||||
|
@ -1,24 +1,20 @@
|
||||
package ru.dbotthepony.mc.otm.core.math
|
||||
|
||||
import com.mojang.blaze3d.vertex.PoseStack
|
||||
import it.unimi.dsi.fastutil.ints.IntSpliterators
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap
|
||||
import com.mojang.math.Matrix3f
|
||||
import com.mojang.math.Matrix4f
|
||||
import com.mojang.math.Quaternion
|
||||
import com.mojang.math.Vector3f
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.core.Direction
|
||||
import net.minecraft.core.Vec3i
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import org.joml.AxisAngle4f
|
||||
import org.joml.Matrix3f
|
||||
import org.joml.Matrix4f
|
||||
import org.joml.Quaternionf
|
||||
import org.joml.Vector3f
|
||||
import ru.dbotthepony.mc.otm.client.render.translate
|
||||
import ru.dbotthepony.mc.otm.core.collect.filter
|
||||
import ru.dbotthepony.mc.otm.core.collect.flatMap
|
||||
import ru.dbotthepony.mc.otm.core.collect.map
|
||||
import java.lang.ref.SoftReference
|
||||
import java.util.stream.Stream
|
||||
import java.util.stream.StreamSupport
|
||||
import kotlin.math.*
|
||||
import ru.dbotthepony.mc.otm.core.math.set
|
||||
|
||||
typealias Vector = Vec3
|
||||
|
||||
@ -45,6 +41,8 @@ fun Vector.asMutableAngle(): MutableAngle {
|
||||
return MutableAngle(asin(norm.y), atan2(norm.x, norm.z))
|
||||
}
|
||||
|
||||
fun Vector3f.length() = sqrt(x() * x() + y() * y() + z() * z())
|
||||
|
||||
fun Vector3f.asAngle(): Angle {
|
||||
val len = length().toDouble()
|
||||
val norm = Vector(x() / len, y() / len, z() / len)
|
||||
@ -57,20 +55,10 @@ fun Vector3f.asMutableAngle(): MutableAngle {
|
||||
return MutableAngle(asin(norm.y), atan2(norm.x, norm.z))
|
||||
}
|
||||
|
||||
fun Vector3f.rotation(radians: Float): Quaternionf {
|
||||
return Quaternionf(AxisAngle4f(radians, x, y, z))
|
||||
}
|
||||
|
||||
fun Vector3f.rotationDegrees(degrees: Float): Quaternionf {
|
||||
return rotation(toRadians(degrees))
|
||||
}
|
||||
|
||||
operator fun Vector3f.unaryMinus(): Vector3f {
|
||||
return Vector3f(-x, -y, -z)
|
||||
return Vector3f(-x(), -y(), -z())
|
||||
}
|
||||
|
||||
operator fun Vector3f.times(v: Float): Vector3f = Vector3f(v).mul(v)
|
||||
|
||||
operator fun Vector3f.component1() = x()
|
||||
operator fun Vector3f.component2() = y()
|
||||
operator fun Vector3f.component3() = z()
|
||||
@ -79,6 +67,8 @@ operator fun Vec3i.component1() = x
|
||||
operator fun Vec3i.component2() = y
|
||||
operator fun Vec3i.component3() = z
|
||||
|
||||
inline val Vec3i.center get() = Vector(x + 0.5, y + 0.5, z + 0.5)
|
||||
|
||||
fun Vec3i.toDoubleVector() = Vector(x.toDouble(), y.toDouble(), z.toDouble())
|
||||
|
||||
fun shortestDistanceBetween(a: Collection<Vector>, b: Collection<Vector>): Double {
|
||||
@ -144,14 +134,8 @@ fun Vector.asVector3f(): Vector3f {
|
||||
return Vector3f(x.toFloat(), y.toFloat(), z.toFloat())
|
||||
}
|
||||
|
||||
fun Quaternion(vec: Vector, rotation: Float, isDegrees: Boolean = false): Quaternionf {
|
||||
// TODO: 1.19.3
|
||||
return Quaternionf(AxisAngle4f(if (isDegrees) toRadians(rotation) else rotation, vec.x.toFloat(), vec.y.toFloat(), vec.z.toFloat()))
|
||||
}
|
||||
|
||||
fun AxisAngle4f(vec: Vector, rotation: Float, isDegrees: Boolean = false): AxisAngle4f {
|
||||
// TODO: 1.19.3
|
||||
return AxisAngle4f(if (isDegrees) toRadians(rotation) else rotation, vec.x.toFloat(), vec.y.toFloat(), vec.z.toFloat())
|
||||
fun Quaternion(vec: Vector, rotation: Float, isDegrees: Boolean = false): Quaternion {
|
||||
return Quaternion(vec.asVector3f(), rotation, isDegrees)
|
||||
}
|
||||
|
||||
fun Vector(x: Double): Vector {
|
||||
@ -162,24 +146,17 @@ fun Vector(x: Double, y: Double): Vector {
|
||||
return Vector(x, y, 0.0)
|
||||
}
|
||||
|
||||
fun Vector.rotate(q: Quaternionf): Vector {
|
||||
// TODO: 1.19.3
|
||||
val quaternion = Quaternionf(q)
|
||||
quaternion.mul(rotateAroundThis())
|
||||
val quaternion1 = Quaternionf(q)
|
||||
quaternion1.conjugate()
|
||||
fun Vector.rotate(q: Quaternion): Vector {
|
||||
val quaternion = Quaternion(q)
|
||||
quaternion.mul(Quaternion(x.toFloat(), y.toFloat(), z.toFloat(), 0.0f))
|
||||
val quaternion1 = Quaternion(q)
|
||||
quaternion1.conj()
|
||||
quaternion.mul(quaternion1)
|
||||
return Vector(quaternion.x.toDouble(), quaternion.y.toDouble(), quaternion.z.toDouble())
|
||||
return Vector(quaternion.i().toDouble(), quaternion.j().toDouble(), quaternion.k().toDouble())
|
||||
}
|
||||
|
||||
fun Vector.rotateAroundThis(rotation: Float, isDegrees: Boolean = false): Quaternionf {
|
||||
// TODO: 1.19.3
|
||||
return Quaternionf(AxisAngle4f(if (isDegrees) toRadians(rotation) else rotation, x.toFloat(), y.toFloat(), z.toFloat()))
|
||||
}
|
||||
|
||||
fun Vector.rotateAroundThis(): Quaternionf {
|
||||
// TODO: 1.19.3
|
||||
return Quaternionf(AxisAngle4f(0f, x.toFloat(), y.toFloat(), z.toFloat()))
|
||||
fun Vector.rotateAroundThis(rotation: Float, isDegrees: Boolean = false): Quaternion {
|
||||
return Quaternion(this, rotation, isDegrees)
|
||||
}
|
||||
|
||||
fun Vector.asMatrix(): Matrix3f {
|
||||
@ -221,13 +198,13 @@ interface IAngle {
|
||||
val s = sin(roll).toFloat()
|
||||
val c = cos(roll).toFloat()
|
||||
|
||||
it[0, 0] = 1f
|
||||
it.mset(0, 0, 1f)
|
||||
|
||||
it[1, 1] = c
|
||||
it[2, 1] = -s
|
||||
it.mset(1, 1, c)
|
||||
it.mset(2, 1, -s)
|
||||
|
||||
it[1, 2] = s
|
||||
it[2, 2] = c
|
||||
it.mset(1, 2, s)
|
||||
it.mset(2, 2, c)
|
||||
}
|
||||
}
|
||||
|
||||
@ -240,13 +217,13 @@ interface IAngle {
|
||||
val s = sin(pitch).toFloat()
|
||||
val c = cos(pitch).toFloat()
|
||||
|
||||
it[0, 0] = c
|
||||
it[1, 0] = -s
|
||||
it.mset(0, 0, c)
|
||||
it.mset(1, 0, -s)
|
||||
|
||||
it[0, 1] = s
|
||||
it[1, 1] = c
|
||||
it.mset(0, 1, s)
|
||||
it.mset(1, 1, c)
|
||||
|
||||
it[2, 2] = 1f
|
||||
it.mset(2, 2, 1f)
|
||||
}
|
||||
}
|
||||
|
||||
@ -259,13 +236,13 @@ interface IAngle {
|
||||
val s = sin(yaw).toFloat()
|
||||
val c = cos(yaw).toFloat()
|
||||
|
||||
it[0, 0,] = c
|
||||
it[2, 0,] = s
|
||||
it.mset(0, 0, c)
|
||||
it.mset(2, 0, s)
|
||||
|
||||
it[0, 2,] = -s
|
||||
it[2, 2,] = c
|
||||
it.mset(0, 2, -s)
|
||||
it.mset(2, 2, c)
|
||||
|
||||
it[1, 1,] = 1f
|
||||
it.mset(1, 1, 1f)
|
||||
}
|
||||
}
|
||||
|
||||
@ -513,17 +490,17 @@ fun angleDifferenceDeg(angle1: Float, angle2: Float): Float {
|
||||
|
||||
// 1.19.3 stuff
|
||||
fun PoseStack.rotateY(rotation: Float): PoseStack {
|
||||
mulPose(Quaternionf(AxisAngle4f(rotation, 0f, 1f, 0f)))
|
||||
mulPose(Vector3f.YP.rotation(rotation))
|
||||
return this
|
||||
}
|
||||
|
||||
fun PoseStack.rotateX(rotation: Float): PoseStack {
|
||||
mulPose(Quaternionf(AxisAngle4f(rotation, 1f, 0f, 0f)))
|
||||
mulPose(Vector3f.XP.rotation(rotation))
|
||||
return this
|
||||
}
|
||||
|
||||
fun PoseStack.rotateZ(rotation: Float): PoseStack {
|
||||
mulPose(Quaternionf(AxisAngle4f(rotation, 0f, 0f, 1f)))
|
||||
mulPose(Vector3f.ZP.rotation(rotation))
|
||||
return this
|
||||
}
|
||||
|
||||
@ -627,17 +604,17 @@ fun PoseStack.rotateWithBlockFacing(rotation: BlockRotation): PoseStack {
|
||||
}
|
||||
|
||||
fun PoseStack.rotateYDegrees(rotation: Float): PoseStack {
|
||||
mulPose(Quaternionf(AxisAngle4f(toRadians(rotation), 0f, 1f, 0f)))
|
||||
mulPose(Vector3f.YP.rotationDegrees(rotation))
|
||||
return this
|
||||
}
|
||||
|
||||
fun PoseStack.rotateXDegrees(rotation: Float): PoseStack {
|
||||
mulPose(Quaternionf(AxisAngle4f(toRadians(rotation), 1f, 0f, 0f)))
|
||||
mulPose(Vector3f.XP.rotationDegrees(rotation))
|
||||
return this
|
||||
}
|
||||
|
||||
fun PoseStack.rotateZDegrees(rotation: Float): PoseStack {
|
||||
mulPose(Quaternionf(AxisAngle4f(toRadians(rotation), 0f, 0f, 1f)))
|
||||
mulPose(Vector3f.ZP.rotationDegrees(rotation))
|
||||
return this
|
||||
}
|
||||
|
||||
|
@ -3,20 +3,13 @@
|
||||
|
||||
package ru.dbotthepony.mc.otm.core.math
|
||||
|
||||
import org.joml.Matrix3f
|
||||
import org.joml.Matrix4f
|
||||
import org.joml.Vector3f
|
||||
import org.joml.Vector4f
|
||||
import ru.dbotthepony.mc.otm.core.math.IAngle
|
||||
import ru.dbotthepony.mc.otm.core.math.Vector
|
||||
import ru.dbotthepony.mc.otm.core.math.asVector3f
|
||||
import ru.dbotthepony.mc.otm.core.math.rotateAroundThis
|
||||
import ru.dbotthepony.mc.otm.core.math.rotation
|
||||
import ru.dbotthepony.mc.otm.core.math.rotationDegrees
|
||||
import ru.dbotthepony.mc.otm.core.math.unaryMinus
|
||||
import com.mojang.math.Matrix3f
|
||||
import com.mojang.math.Matrix4f
|
||||
import com.mojang.math.Vector3f
|
||||
import com.mojang.math.Vector4f
|
||||
|
||||
fun Matrix4f.rotate(angle: IAngle): Matrix4f {
|
||||
mul(angle.rotationXYZW())
|
||||
multiply(angle.rotationXYZW())
|
||||
return this
|
||||
}
|
||||
|
||||
@ -27,56 +20,160 @@ fun Matrix4f.translate(vector: Vector) {
|
||||
fun Matrix4f.rotateAroundPoint(point: Vector, axis: Vector, rotation: Float, isDegrees: Boolean = false) {
|
||||
val p = point.asVector3f()
|
||||
translate(-p)
|
||||
rotation(axis.rotateAroundThis(rotation, isDegrees)) // TODO: 1.19.3
|
||||
translate(p)
|
||||
multiply(axis.rotateAroundThis(rotation, isDegrees))
|
||||
translate(-p)
|
||||
}
|
||||
|
||||
fun Matrix4f.rotateAroundPoint(point: Vector, axis: Vector3f, rotation: Float, isDegrees: Boolean = false) {
|
||||
val p = point.asVector3f()
|
||||
translate(-p)
|
||||
rotation(if (isDegrees) axis.rotationDegrees(rotation) else axis.rotation(rotation)) // TODO: 1.19.3
|
||||
translate(p)
|
||||
multiply(if (isDegrees) axis.rotationDegrees(rotation) else axis.rotation(rotation))
|
||||
translate(-p)
|
||||
}
|
||||
|
||||
fun Matrix4f.rotateAroundPoint(point: Vector, rotation: IAngle) {
|
||||
val p = point.asVector3f()
|
||||
translate(-p)
|
||||
mul(rotation.rotationXYZW())
|
||||
translate(p)
|
||||
multiply(rotation.rotationXYZW())
|
||||
translate(-p)
|
||||
}
|
||||
|
||||
fun Matrix4f.rotateAroundPoint(point: Vector3f, axis: Vector, rotation: Float, isDegrees: Boolean = false) {
|
||||
translate(-point)
|
||||
rotation(axis.rotateAroundThis(rotation, isDegrees)) // TODO: 1.19.3
|
||||
translate(point)
|
||||
multiply(axis.rotateAroundThis(rotation, isDegrees))
|
||||
translate(-point)
|
||||
}
|
||||
|
||||
fun Matrix4f.rotateAroundPoint(point: Vector3f, rotation: IAngle) {
|
||||
translate(-point)
|
||||
mul(rotation.rotationXYZW())
|
||||
translate(point)
|
||||
multiply(rotation.rotationXYZW())
|
||||
translate(-point)
|
||||
}
|
||||
|
||||
fun Matrix4f.rotateAroundPoint(point: Vector3f, axis: Vector3f, rotation: Float, isDegrees: Boolean = false) {
|
||||
translate(-point)
|
||||
rotation(if (isDegrees) axis.rotationDegrees(rotation) else axis.rotation(rotation)) // TODO: 1.19.3
|
||||
translate(point)
|
||||
multiply(if (isDegrees) axis.rotationDegrees(rotation) else axis.rotation(rotation))
|
||||
translate(-point)
|
||||
}
|
||||
|
||||
// 1.19.3 <-> 1.19.2 behavior
|
||||
// mojang decided it is a good idea to make their matrices row-major
|
||||
// when basically everyone else (well, aside from thing nobody uses, what is it called, uuuuuuuugh directx i think)
|
||||
// uses column-major matrices
|
||||
operator fun Matrix4f.get(column: Int, row: Int): Float {
|
||||
require(row in 0 .. 3) { "Invalid row: $row" }
|
||||
require(column in 0 .. 3) { "Invalid column: $column" }
|
||||
|
||||
return when (val index = row or (column shl 2)) {
|
||||
0 or (0 shl 2) -> m00
|
||||
1 or (0 shl 2) -> m10
|
||||
2 or (0 shl 2) -> m20
|
||||
3 or (0 shl 2) -> m30
|
||||
0 or (1 shl 2) -> m01
|
||||
1 or (1 shl 2) -> m11
|
||||
2 or (1 shl 2) -> m21
|
||||
3 or (1 shl 2) -> m31
|
||||
0 or (2 shl 2) -> m02
|
||||
1 or (2 shl 2) -> m12
|
||||
2 or (2 shl 2) -> m22
|
||||
3 or (2 shl 2) -> m32
|
||||
0 or (3 shl 2) -> m03
|
||||
1 or (3 shl 2) -> m13
|
||||
2 or (3 shl 2) -> m23
|
||||
3 or (3 shl 2) -> m33
|
||||
else -> throw IllegalStateException("$index")
|
||||
}
|
||||
}
|
||||
|
||||
operator fun Matrix4f.set(column: Int, row: Int, value: Float) {
|
||||
require(row in 0 .. 3) { "Invalid row: $row" }
|
||||
require(column in 0 .. 3) { "Invalid column: $column" }
|
||||
|
||||
when (val index = row or (column shl 2)) {
|
||||
0 or (0 shl 2) -> m00 = value
|
||||
1 or (0 shl 2) -> m10 = value
|
||||
2 or (0 shl 2) -> m20 = value
|
||||
3 or (0 shl 2) -> m30 = value
|
||||
0 or (1 shl 2) -> m01 = value
|
||||
1 or (1 shl 2) -> m11 = value
|
||||
2 or (1 shl 2) -> m21 = value
|
||||
3 or (1 shl 2) -> m31 = value
|
||||
0 or (2 shl 2) -> m02 = value
|
||||
1 or (2 shl 2) -> m12 = value
|
||||
2 or (2 shl 2) -> m22 = value
|
||||
3 or (2 shl 2) -> m32 = value
|
||||
0 or (3 shl 2) -> m03 = value
|
||||
1 or (3 shl 2) -> m13 = value
|
||||
2 or (3 shl 2) -> m23 = value
|
||||
3 or (3 shl 2) -> m33 = value
|
||||
else -> throw IllegalStateException("$index")
|
||||
}
|
||||
}
|
||||
|
||||
operator fun Matrix3f.get(column: Int, row: Int): Float {
|
||||
require(row in 0 .. 2) { "Invalid row: $row" }
|
||||
require(column in 0 .. 2) { "Invalid column: $column" }
|
||||
|
||||
return when (val index = row or (column shl 2)) {
|
||||
0 or (0 shl 2) -> m00
|
||||
1 or (0 shl 2) -> m10
|
||||
2 or (0 shl 2) -> m20
|
||||
0 or (1 shl 2) -> m01
|
||||
1 or (1 shl 2) -> m11
|
||||
2 or (1 shl 2) -> m21
|
||||
0 or (2 shl 2) -> m02
|
||||
1 or (2 shl 2) -> m12
|
||||
2 or (2 shl 2) -> m22
|
||||
else -> throw IllegalStateException("$index")
|
||||
}
|
||||
}
|
||||
|
||||
fun Matrix3f.mset(column: Int, row: Int, value: Float) {
|
||||
require(row in 0 .. 2) { "Invalid row: $row" }
|
||||
require(column in 0 .. 2) { "Invalid column: $column" }
|
||||
|
||||
when (val index = row or (column shl 2)) {
|
||||
0 or (0 shl 2) -> m00 = value
|
||||
1 or (0 shl 2) -> m10 = value
|
||||
2 or (0 shl 2) -> m20 = value
|
||||
0 or (1 shl 2) -> m01 = value
|
||||
1 or (1 shl 2) -> m11 = value
|
||||
2 or (1 shl 2) -> m21 = value
|
||||
0 or (2 shl 2) -> m02 = value
|
||||
1 or (2 shl 2) -> m12 = value
|
||||
2 or (2 shl 2) -> m22 = value
|
||||
else -> throw IllegalStateException("$index")
|
||||
}
|
||||
}
|
||||
|
||||
fun Matrix4f.identity() = setIdentity()
|
||||
fun Matrix3f.identity() = setIdentity()
|
||||
|
||||
fun Matrix4f.identityFast() {
|
||||
m00 = 1.0F
|
||||
m11 = 1.0F
|
||||
m22 = 1.0F
|
||||
m33 = 1.0F
|
||||
}
|
||||
|
||||
fun Matrix3f.identityFast() {
|
||||
m00 = 1.0F
|
||||
m11 = 1.0F
|
||||
m22 = 1.0F
|
||||
}
|
||||
|
||||
fun Matrix3f.toMatrix4f(): Matrix4f {
|
||||
val result = Matrix4f()
|
||||
|
||||
result.zero()
|
||||
|
||||
result.m00(this.m00)
|
||||
result.m10(this.m10)
|
||||
result.m20(this.m20)
|
||||
result.m01(this.m01)
|
||||
result.m11(this.m11)
|
||||
result.m21(this.m21)
|
||||
result.m02(this.m02)
|
||||
result.m12(this.m12)
|
||||
result.m22(this.m22)
|
||||
result.m00 = this.m00
|
||||
result.m10 = this.m10
|
||||
result.m20 = this.m20
|
||||
result.m01 = this.m01
|
||||
result.m11 = this.m11
|
||||
result.m21 = this.m21
|
||||
result.m02 = this.m02
|
||||
result.m12 = this.m12
|
||||
result.m22 = this.m22
|
||||
|
||||
return result
|
||||
}
|
||||
|
@ -91,7 +91,7 @@ class ExplosiveHammerItem(durability: Int = 512) : Item(Properties().stacksTo(1)
|
||||
|
||||
val (ex, ey, ez) = Vector.atCenterOf(player.blockPosition())
|
||||
|
||||
val exp = Explosion(player.level, player, ex, ey, ez, 1f, false, if (ToolsConfig.ExplosiveHammer.EXPLOSION_DAMAGE_BLOCKS) Explosion.BlockInteraction.DESTROY_WITH_DECAY else Explosion.BlockInteraction.KEEP)
|
||||
val exp = Explosion(player.level, player, ex, ey, ez, 1f, false, if (ToolsConfig.ExplosiveHammer.EXPLOSION_DAMAGE_BLOCKS) Explosion.BlockInteraction.BREAK else Explosion.BlockInteraction.NONE)
|
||||
exp.explode()
|
||||
exp.finalizeExplosion(true)
|
||||
|
||||
|
@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.matter
|
||||
|
||||
import com.mojang.datafixers.util.Either
|
||||
import net.minecraft.data.CachedOutput
|
||||
import net.minecraft.data.DataGenerator
|
||||
import net.minecraft.data.DataProvider
|
||||
import net.minecraft.resources.ResourceLocation
|
||||
import net.minecraft.tags.TagKey
|
||||
@ -21,17 +22,17 @@ import kotlin.collections.LinkedHashMap
|
||||
|
||||
@Suppress("FunctionName", "unused")
|
||||
open class MatterDataProvider(val modid: String? = null) : DataProvider {
|
||||
var pathProvider: PackOutput.PathProvider by WriteOnce("You need to call bindPackOutput before registering this data provider")
|
||||
var pathProvider: DataGenerator.PathProvider by WriteOnce("You need to call bindPackOutput before registering this data provider")
|
||||
private set
|
||||
|
||||
constructor(output: PackOutput, modid: String? = null) : this(modid) {
|
||||
constructor(output: DataGenerator, modid: String? = null) : this(modid) {
|
||||
bindPackOutput(output)
|
||||
}
|
||||
|
||||
constructor(event: GatherDataEvent) : this(event.generator.packOutput, event.modContainer.namespace)
|
||||
constructor(event: GatherDataEvent) : this(event.generator, event.modContainer.namespace)
|
||||
|
||||
fun bindPackOutput(output: PackOutput) {
|
||||
pathProvider = output.createPathProvider(PackOutput.Target.DATA_PACK, MatterManager.MATTER_DIRECTORY)
|
||||
fun bindPackOutput(output: DataGenerator) {
|
||||
pathProvider = output.createPathProvider(DataGenerator.Target.DATA_PACK, MatterManager.MATTER_DIRECTORY)
|
||||
}
|
||||
|
||||
protected val actions = LinkedHashMap<ResourceLocation, AbstractRegistryAction>()
|
||||
@ -1255,17 +1256,13 @@ open class MatterDataProvider(val modid: String? = null) : DataProvider {
|
||||
protected val added = ArrayList<AbstractRegistryAction>()
|
||||
val addedView: List<AbstractRegistryAction> = Collections.unmodifiableList(added)
|
||||
|
||||
final override fun run(output: CachedOutput): CompletableFuture<*> {
|
||||
final override fun run(output: CachedOutput) {
|
||||
addActions()
|
||||
|
||||
val promises = ArrayList<CompletableFuture<*>>()
|
||||
|
||||
for ((key, value) in actions) {
|
||||
promises.add(DataProvider.saveStable(output, AbstractRegistryAction.CODEC.toJsonStrict(value), pathProvider.json(key)))
|
||||
DataProvider.saveStable(output, AbstractRegistryAction.CODEC.toJsonStrict(value), pathProvider.json(key))
|
||||
added.add(value)
|
||||
}
|
||||
|
||||
return CompletableFuture.allOf(*promises.toTypedArray())
|
||||
}
|
||||
|
||||
override fun getName(): String {
|
||||
|
@ -39,7 +39,7 @@ public net.minecraft.client.gui.GuiComponent m_93179_(Lcom/mojang/blaze3d/vertex
|
||||
|
||||
public net.minecraft.world.item.BlockItem f_150696_ # BLOCK_ENTITY_TAG
|
||||
|
||||
public net.minecraft.client.gui.screens.InBedChatScreen f_263129_ # leaveBedButton
|
||||
public net.minecraft.client.gui.screens.InBedChatScreen f_242488_ # leaveBedButton
|
||||
|
||||
public net.minecraft.world.inventory.AbstractContainerMenu f_182405_ # stateId
|
||||
|
||||
@ -57,6 +57,33 @@ protected net.minecraft.client.resources.TextureAtlasHolder f_118884_ # textureA
|
||||
|
||||
public net.minecraft.client.renderer.RenderStateShard f_110133_ # name
|
||||
|
||||
public com.mojang.math.Matrix4f f_27603_ # m00
|
||||
public com.mojang.math.Matrix4f f_27604_ # m01
|
||||
public com.mojang.math.Matrix4f f_27605_ # m02
|
||||
public com.mojang.math.Matrix4f f_27606_ # m03
|
||||
public com.mojang.math.Matrix4f f_27607_ # m10
|
||||
public com.mojang.math.Matrix4f f_27608_ # m11
|
||||
public com.mojang.math.Matrix4f f_27609_ # m12
|
||||
public com.mojang.math.Matrix4f f_27610_ # m13
|
||||
public com.mojang.math.Matrix4f f_27611_ # m20
|
||||
public com.mojang.math.Matrix4f f_27612_ # m21
|
||||
public com.mojang.math.Matrix4f f_27613_ # m22
|
||||
public com.mojang.math.Matrix4f f_27614_ # m23
|
||||
public com.mojang.math.Matrix4f f_27615_ # m30
|
||||
public com.mojang.math.Matrix4f f_27616_ # m31
|
||||
public com.mojang.math.Matrix4f f_27617_ # m32
|
||||
public com.mojang.math.Matrix4f f_27618_ # m33
|
||||
|
||||
public com.mojang.math.Matrix3f f_8134_ # m00
|
||||
public com.mojang.math.Matrix3f f_8135_ # m01
|
||||
public com.mojang.math.Matrix3f f_8136_ # m02
|
||||
public com.mojang.math.Matrix3f f_8137_ # m10
|
||||
public com.mojang.math.Matrix3f f_8138_ # m11
|
||||
public com.mojang.math.Matrix3f f_8139_ # m12
|
||||
public com.mojang.math.Matrix3f f_8140_ # m20
|
||||
public com.mojang.math.Matrix3f f_8141_ # m21
|
||||
public com.mojang.math.Matrix3f f_8142_ # m22
|
||||
|
||||
public-f net.minecraft.world.inventory.Slot f_40220_ # x
|
||||
public-f net.minecraft.world.inventory.Slot f_40221_ # y
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user