More backporting
This commit is contained in:
parent
2a117a540e
commit
7b415fbce3
@ -23,10 +23,10 @@ jei_version=12.4.0.22
|
||||
jupiter_version=5.9.2
|
||||
curios_version=4440173
|
||||
cosmetic_armor_reworked_id=4439659
|
||||
ad_astra_id=4594155
|
||||
botarium_id=4594094
|
||||
resourceful_lib_id=4598948
|
||||
resourceful_config_id=4576455
|
||||
ad_astra_id=4452072
|
||||
botarium_id=4416456
|
||||
resourceful_lib_id=4378849
|
||||
resourceful_config_id=4441381
|
||||
jade_id=4434045
|
||||
configured_id=4462894
|
||||
|
||||
|
@ -1,55 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.datagen
|
||||
|
||||
import net.minecraft.core.RegistrySetBuilder
|
||||
import net.minecraft.core.registries.Registries
|
||||
import net.minecraft.data.worldgen.BootstapContext
|
||||
import net.minecraft.tags.DamageTypeTags
|
||||
import net.minecraft.world.damagesource.DamageScaling
|
||||
import net.minecraft.world.damagesource.DamageType
|
||||
import net.minecraftforge.common.data.DatapackBuiltinEntriesProvider
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.datagen.tags.TagsProvider
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
|
||||
fun registerDamageTypes(context: BootstapContext<DamageType>) {
|
||||
context.register(MDamageTypes.EXOPACK_PROBE, DamageType("otm_exopack_probe", DamageScaling.NEVER, 4.0f))
|
||||
context.register(MDamageTypes.BECOME_ANDROID, DamageType("otm_become_android", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.BECOME_HUMANE, DamageType("otm_become_humane", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.EVENT_HORIZON, DamageType("otm_event_horizon", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.HAWKING_RADIATION, DamageType("otm_hawking_radiation", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.EMP, DamageType("otm_emp", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.SHOCKWAVE, DamageType("otm_shockwave", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.PLASMA, DamageType("otm_plasma", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.COSMIC_RAYS, DamageType("otm_cosmic_rays", DamageScaling.NEVER, 0f))
|
||||
context.register(MDamageTypes.EXPLOSIVE_HAMMER, DamageType("otm_explosive_hammer", DamageScaling.NEVER, 0.1f))
|
||||
context.register(MDamageTypes.HAMMER_NAIL, DamageType("otm_hammer_nail", DamageScaling.NEVER, 0.1f))
|
||||
context.register(MDamageTypes.ANDROID_DISCHARGE, DamageType("otm_android_discharge", DamageScaling.NEVER, 4.0f))
|
||||
}
|
||||
|
||||
fun registerDamageTypeTags(provider: TagsProvider.Delegate<DamageType>) {
|
||||
val ignoreArmor = provider.Appender(DamageTypeTags.BYPASSES_ARMOR)
|
||||
val ignoreMagic = provider.Appender(DamageTypeTags.BYPASSES_ENCHANTMENTS)
|
||||
val ignoreInvl = provider.Appender(DamageTypeTags.BYPASSES_INVULNERABILITY)
|
||||
|
||||
ignoreArmor
|
||||
.add(MDamageTypes.EXOPACK_PROBE)
|
||||
.add(MDamageTypes.BECOME_ANDROID)
|
||||
.add(MDamageTypes.BECOME_HUMANE)
|
||||
.add(MDamageTypes.EVENT_HORIZON)
|
||||
.add(MDamageTypes.EMP)
|
||||
.add(MDamageTypes.SHOCKWAVE)
|
||||
.add(MDamageTypes.COSMIC_RAYS)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
|
||||
ignoreMagic
|
||||
.add(MDamageTypes.EXOPACK_PROBE)
|
||||
.add(MDamageTypes.BECOME_ANDROID)
|
||||
.add(MDamageTypes.BECOME_HUMANE)
|
||||
.add(MDamageTypes.COSMIC_RAYS)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
|
||||
ignoreInvl
|
||||
.add(MDamageTypes.BECOME_HUMANE)
|
||||
.add(MDamageTypes.BECOME_ANDROID)
|
||||
.add(MDamageTypes.ANDROID_DISCHARGE)
|
||||
}
|
@ -521,14 +521,11 @@ object DataGen {
|
||||
event.generator.addProvider(event.includeServer(), matterData)
|
||||
|
||||
val registrySetBuilder = RegistrySetBuilder()
|
||||
.add(Registries.DAMAGE_TYPE, ::registerDamageTypes)
|
||||
.add(Registries.CONFIGURED_FEATURE, ::registerConfiguredFeatures)
|
||||
.add(Registries.PLACED_FEATURE, ::registerPlacedFeatures)
|
||||
|
||||
event.generator.addProvider(event.includeServer(), DatapackBuiltinEntriesProvider(event.generator.packOutput, event.lookupProvider, registrySetBuilder, setOf(MOD_ID)))
|
||||
|
||||
registerDamageTypeTags(tagsProvider.damageTypes)
|
||||
|
||||
AddEnglishLanguage(languageProvider)
|
||||
AddRussianLanguage(languageProvider)
|
||||
|
||||
|
@ -30,7 +30,7 @@ open class AndroidFeatureType<T : AndroidFeature> {
|
||||
}
|
||||
|
||||
open val displayContents: ComponentContents by lazy {
|
||||
TranslatableContents(displayId, null, arrayOf())
|
||||
TranslatableContents(displayId)
|
||||
}
|
||||
|
||||
open val displayName: Component by lazy {
|
||||
|
@ -32,7 +32,7 @@ import ru.dbotthepony.mc.otm.onceServer
|
||||
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MSoundEvents
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.registry.ShockwaveDamageSource
|
||||
import ru.dbotthepony.mc.otm.triggers.ShockwaveDamageMobTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.ShockwaveTrigger
|
||||
import kotlin.math.pow
|
||||
@ -121,7 +121,7 @@ class ShockwaveFeature(capability: MatteryPlayerCapability) : AndroidSwitchableF
|
||||
seen.add(entity)
|
||||
val multiplier = (1.0 - distanceMultiplier).pow(0.5)
|
||||
|
||||
val source = MatteryDamageSource(ply.level.registryAccess().damageType(MDamageTypes.SHOCKWAVE), ply)
|
||||
val source = ShockwaveDamageSource(ply)
|
||||
val damage = multiplier.toFloat() * AndroidConfig.Shockwave.DAMAGE.toFloat() * AndroidConfig.Shockwave.WARDEN_DAMAGE_MULT.toFloat()
|
||||
entity.hurt(source, damage)
|
||||
entity.deltaMovement += (entity.position - ply.position).normalize() * (multiplier * 3.0)
|
||||
@ -137,7 +137,7 @@ class ShockwaveFeature(capability: MatteryPlayerCapability) : AndroidSwitchableF
|
||||
|
||||
// don't hurt items, arrows, etc etc
|
||||
if (entity is LivingEntity) {
|
||||
val source = MatteryDamageSource(ply.level.registryAccess().damageType(MDamageTypes.SHOCKWAVE), ply)
|
||||
val source = ShockwaveDamageSource(ply)
|
||||
val damage = multiplier.toFloat() * AndroidConfig.Shockwave.DAMAGE.toFloat()
|
||||
entity.hurt(source, damage)
|
||||
entity.deltaMovement += (entity.position - ply.position).normalize() * (multiplier * 3.0)
|
||||
|
@ -11,6 +11,7 @@ import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.TooltipFlag
|
||||
import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.Level
|
||||
import net.minecraft.world.level.LevelAccessor
|
||||
import net.minecraft.world.level.block.BasePressurePlateBlock
|
||||
import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.SoundType
|
||||
@ -21,7 +22,7 @@ import net.minecraft.world.level.material.Material
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.get
|
||||
|
||||
class TritaniumPressurePlate(color: DyeColor?) : BasePressurePlateBlock(Properties.of(Material.METAL, color ?: DyeColor.LIGHT_BLUE).sound(SoundType.METAL).explosionResistance(80f).noOcclusion().destroyTime(3f).requiresCorrectToolForDrops(), BlockSetType.IRON) {
|
||||
class TritaniumPressurePlate(color: DyeColor?) : BasePressurePlateBlock(Properties.of(Material.METAL, color ?: DyeColor.LIGHT_BLUE).sound(SoundType.METAL).explosionResistance(80f).noOcclusion().destroyTime(3f).requiresCorrectToolForDrops()) {
|
||||
override fun appendHoverText(
|
||||
p_49816_: ItemStack,
|
||||
p_49817_: BlockGetter?,
|
||||
@ -42,6 +43,14 @@ class TritaniumPressurePlate(color: DyeColor?) : BasePressurePlateBlock(Properti
|
||||
p_49915_.add(BlockStateProperties.POWERED)
|
||||
}
|
||||
|
||||
override fun playOnSound(level: LevelAccessor, pos: BlockPos) {
|
||||
level.playSound(null, pos, SoundEvents.METAL_PRESSURE_PLATE_CLICK_ON, SoundSource.BLOCKS, 0.3f, 0.9f)
|
||||
}
|
||||
|
||||
override fun playOffSound(level: LevelAccessor, pos: BlockPos) {
|
||||
level.playSound(null, pos, SoundEvents.METAL_PRESSURE_PLATE_CLICK_OFF, SoundSource.BLOCKS, 0.3f, 0.9f)
|
||||
}
|
||||
|
||||
override fun getSignalStrength(level: Level, pos: BlockPos): Int {
|
||||
if (level.getEntitiesOfClass(ServerPlayer::class.java, TOUCH_AABB.move(pos)).isNotEmpty()) {
|
||||
return 15
|
||||
|
@ -9,7 +9,6 @@ import net.minecraft.server.level.ServerPlayer
|
||||
import net.minecraft.world.entity.Entity
|
||||
import net.minecraft.world.entity.EquipmentSlot
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.boss.wither.WitherBoss
|
||||
import net.minecraft.world.entity.item.ItemEntity
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraft.world.level.Level
|
||||
@ -20,13 +19,11 @@ import net.minecraft.world.level.levelgen.structure.BoundingBox
|
||||
import net.minecraft.world.phys.AABB
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import net.minecraftforge.common.Tags
|
||||
import net.minecraftforge.registries.ForgeRegistries
|
||||
import ru.dbotthepony.mc.otm.block.BlackHoleBlock
|
||||
import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity
|
||||
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
|
||||
import ru.dbotthepony.mc.otm.block.entity.blackhole.ExplosionQueue.Companion.queueForLevel
|
||||
import ru.dbotthepony.mc.otm.config.ServerConfig
|
||||
import ru.dbotthepony.mc.otm.core.damageType
|
||||
import ru.dbotthepony.mc.otm.core.getExplosionResistance
|
||||
import ru.dbotthepony.mc.otm.core.gracefulBlockBreak
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
@ -39,7 +36,6 @@ import ru.dbotthepony.mc.otm.core.nbt.map
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
import ru.dbotthepony.mc.otm.matter.MatterManager
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.triggers.BlackHoleTrigger
|
||||
import kotlin.math.pow
|
||||
import kotlin.math.roundToInt
|
||||
@ -121,7 +117,7 @@ class BlackHoleBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Mattery
|
||||
} else {
|
||||
level.explode(
|
||||
null,
|
||||
MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.HAWKING_RADIATION)),
|
||||
MDamageTypes.HAWKING_RADIATION,
|
||||
null,
|
||||
blockPos.x + 0.5,
|
||||
blockPos.y + 0.5,
|
||||
@ -240,7 +236,7 @@ class BlackHoleBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Mattery
|
||||
}
|
||||
|
||||
if (distance < gravitationStrength + 1.0) {
|
||||
val source = MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EVENT_HORIZON))
|
||||
val source = MDamageTypes.EVENT_HORIZON
|
||||
val damage = (gravitationStrength / distance).toFloat()
|
||||
|
||||
if (living is Player) {
|
||||
@ -258,7 +254,7 @@ class BlackHoleBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Mattery
|
||||
setDeltaMovement(item, center, distance)
|
||||
|
||||
if (distance < gravitationStrength + 1) {
|
||||
if (item.hurt(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EVENT_HORIZON)), (gravitationStrength / distance).toFloat()) && item.isRemoved) {
|
||||
if (item.hurt(MDamageTypes.EVENT_HORIZON, (gravitationStrength / distance).toFloat()) && item.isRemoved) {
|
||||
if (item.item.item === MItems.GRAVITATIONAL_DISRUPTOR) {
|
||||
collapse()
|
||||
} else {
|
||||
|
@ -6,7 +6,6 @@ import net.minecraft.nbt.DoubleTag
|
||||
import net.minecraft.nbt.ListTag
|
||||
import net.minecraft.nbt.Tag
|
||||
import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.util.datafix.DataFixTypes
|
||||
import net.minecraft.world.level.BlockGetter
|
||||
import net.minecraft.world.level.Explosion
|
||||
import net.minecraft.world.level.ExplosionDamageCalculator
|
||||
@ -32,8 +31,6 @@ import ru.dbotthepony.mc.otm.core.math.rotateAroundAxis
|
||||
import ru.dbotthepony.mc.otm.core.math.up
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
import kotlin.collections.HashMap
|
||||
@ -539,7 +536,7 @@ private data class QueuedExplosion(val x: Double, val y: Double, val z: Double,
|
||||
fun explode(level: Level) {
|
||||
level.explode(
|
||||
null,
|
||||
MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.HAWKING_RADIATION)),
|
||||
MDamageTypes.HAWKING_RADIATION,
|
||||
BlackHoleExplosionDamageCalculator,
|
||||
x,
|
||||
y,
|
||||
|
@ -128,7 +128,7 @@ class PoweredFurnaceBlockEntity(
|
||||
|
||||
return JobContainer.success(
|
||||
ItemJob(
|
||||
recipe.getResultItem(level.registryAccess()).copyWithCount(toProcess),
|
||||
recipe.getResultItem().copyWithCount(toProcess),
|
||||
recipe.workTime * MachinesConfig.PLATE_PRESS.workTimeMultiplier,
|
||||
MachinesConfig.PLATE_PRESS.energyConsumption * toProcess,
|
||||
experience = recipe.experience.sample(level.random) * toProcess))
|
||||
|
@ -114,7 +114,6 @@ import ru.dbotthepony.mc.otm.registry.AndroidFeatures
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.triggers.AndroidResearchTrigger
|
||||
import ru.dbotthepony.mc.otm.triggers.AndroidTravelUnderwater
|
||||
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidDeathTrigger
|
||||
@ -532,7 +531,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
return JobContainer.noItem()
|
||||
} else {
|
||||
val actual = recipe.get()
|
||||
val item = actual.value.assemble(input, level.registryAccess())
|
||||
val item = actual.value.assemble(input)
|
||||
input[0].shrink(1)
|
||||
input.setChanged(0)
|
||||
return JobContainer.success(ItemJob(item, actual.value.cookingTime.toDouble(), ExopackConfig.FURNACE_POWER_CONSUMPTION, actual.value.experience))
|
||||
@ -685,7 +684,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
becomeAndroid()
|
||||
|
||||
if (!ply.abilities.invulnerable)
|
||||
ply.hurt(MatteryDamageSource(ply.level.registryAccess().damageType(MDamageTypes.BECOME_ANDROID)), ply.maxHealth * 2)
|
||||
ply.hurt(MDamageTypes.BECOME_ANDROID, ply.maxHealth * 2)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -747,7 +746,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
becomeHumane()
|
||||
|
||||
if (!ply.abilities.invulnerable)
|
||||
ply.hurt(MatteryDamageSource(ply.level.registryAccess().damageType(MDamageTypes.BECOME_HUMANE)), ply.maxHealth * 2)
|
||||
ply.hurt(MDamageTypes.BECOME_HUMANE, ply.maxHealth * 2)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1272,7 +1271,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
||||
}
|
||||
|
||||
if (androidEnergy.batteryLevel <= Decimal.TEN) {
|
||||
if (--nextDischargeHurt <= 0 && ply.hurt(DamageSource(ply.level.registryAccess().damageType(MDamageTypes.ANDROID_DISCHARGE)), 1f)) {
|
||||
if (--nextDischargeHurt <= 0 && ply.hurt(MDamageTypes.ANDROID_DISCHARGE, 1f)) {
|
||||
nextDischargeHurt = 20
|
||||
}
|
||||
|
||||
|
@ -107,13 +107,14 @@ class MGUIGraphics(val pose: PoseStack) {
|
||||
RenderSystem.setShader { GameRenderer.getPositionColorShader() }
|
||||
bufferbuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR)
|
||||
val matrix4f = pose.last().pose()
|
||||
val colorEvent = ForgeHooksClient.onRenderTooltipColor(itemStack, pose, x, y, preEvent.font, mapped)
|
||||
|
||||
TooltipRenderUtil.renderTooltipBackground(GuiComponent::fillGradient, matrix4f, bufferbuilder, x, y, i, j, 400, colorEvent.backgroundStart, colorEvent.backgroundEnd, colorEvent.borderStart, colorEvent.borderEnd)
|
||||
TooltipRenderUtil.renderTooltipBackground(GuiComponent::fillGradient, matrix4f, bufferbuilder, x, y, i, j, 400)
|
||||
RenderSystem.enableDepthTest()
|
||||
RenderSystem.disableTexture()
|
||||
RenderSystem.enableBlend()
|
||||
RenderSystem.defaultBlendFunc()
|
||||
BufferUploader.drawWithShader(bufferbuilder.end())
|
||||
RenderSystem.disableBlend()
|
||||
RenderSystem.enableTexture()
|
||||
|
||||
pose.translate(0.0f, 0.0f, 400.0f)
|
||||
var yCurrent = y
|
||||
@ -152,7 +153,7 @@ class MGUIGraphics(val pose: PoseStack) {
|
||||
scale: Float = 1f,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
drawShadow: Boolean = false,
|
||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
||||
displayMode: Boolean = false,
|
||||
packedLightCoords: Int = 15728880,
|
||||
effectColor: Int = 0,
|
||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||
@ -202,7 +203,7 @@ class MGUIGraphics(val pose: PoseStack) {
|
||||
scale: Float = 1f,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
drawShadow: Boolean = false,
|
||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
||||
displayMode: Boolean = false,
|
||||
packedLightCoords: Int = 15728880,
|
||||
effectColor: Int = 0,
|
||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||
@ -252,7 +253,7 @@ class MGUIGraphics(val pose: PoseStack) {
|
||||
scale: Float = 1f,
|
||||
color: RGBAColor = RGBAColor.WHITE,
|
||||
drawShadow: Boolean = false,
|
||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
||||
displayMode: Boolean = false,
|
||||
packedLightCoords: Int = 15728880,
|
||||
effectColor: Int = 0,
|
||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||
|
@ -34,11 +34,11 @@ open class EditBoxPanel<out S : Screen>(
|
||||
}
|
||||
|
||||
override fun configureNew(widget: EditBox, recreation: Boolean) {
|
||||
widget.isFocused = isFocusedThis
|
||||
widget.changeFocus(isFocusedThis)
|
||||
}
|
||||
|
||||
override fun onFocusChanged() {
|
||||
widget?.isFocused = isFocusedThis
|
||||
widget?.changeFocus(isFocusedThis)
|
||||
}
|
||||
|
||||
override fun mouseClickedInner(x: Double, y: Double, button: Int): Boolean {
|
||||
@ -49,7 +49,7 @@ open class EditBoxPanel<out S : Screen>(
|
||||
|
||||
override fun keyPressedInternal(key: Int, scancode: Int, mods: Int): Boolean {
|
||||
if (key == InputConstants.KEY_ESCAPE && widget?.isActive == true) {
|
||||
widget?.isFocused = false
|
||||
widget?.changeFocus(false)
|
||||
return true
|
||||
}
|
||||
|
||||
|
@ -32,7 +32,7 @@ abstract class AbstractSlotPanel<out S : MatteryScreen<*>> @JvmOverloads constru
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader)
|
||||
|
||||
if (!itemstack.isEmpty) {
|
||||
screen.renderItemStack(graphics, itemstack, countOverride)
|
||||
screen.renderItemStack(absoluteX + 1, absoluteY + 1, itemstack, countOverride)
|
||||
clearDepth(graphics)
|
||||
}
|
||||
|
||||
|
@ -42,7 +42,7 @@ abstract class UserFilteredSlotPanel<out S : MatteryScreen<*>, out T : Slot>(
|
||||
if (slotFilter !== Items.AIR) {
|
||||
val itemStack = ItemStack(slotFilter!!, 1)
|
||||
|
||||
screen.renderItemStack(graphics, itemStack, null)
|
||||
screen.renderItemStack(absoluteX + 1, absoluteY + 1, itemStack, null)
|
||||
clearDepth(graphics)
|
||||
|
||||
graphics.renderRect(0f, 0f, width, height, color = SLOT_FILTER_COLOR)
|
||||
|
@ -314,7 +314,7 @@ private class AndroidResearchButton(
|
||||
val stack = graphics.pose
|
||||
stack.pushPose()
|
||||
stack.translate(1f, 1f, 0f)
|
||||
screen.renderItemStack(graphics, itemstack)
|
||||
screen.renderItemStack(absoluteX + 1, absoluteY + 1, itemstack)
|
||||
stack.popPose()
|
||||
|
||||
clearDepth(graphics)
|
||||
|
@ -4,17 +4,15 @@ import earth.terrarium.ad_astra.AdAstra
|
||||
import earth.terrarium.ad_astra.common.data.Planet
|
||||
import earth.terrarium.ad_astra.common.data.PlanetData
|
||||
import earth.terrarium.ad_astra.common.item.armor.SpaceSuit
|
||||
import earth.terrarium.ad_astra.common.registry.ModDamageSources
|
||||
import earth.terrarium.ad_astra.common.registry.ModDamageSource
|
||||
import net.minecraft.world.entity.player.Player
|
||||
import net.minecraftforge.event.entity.living.LivingHurtEvent
|
||||
import net.minecraftforge.fml.ModList
|
||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.config.ServerCompatConfig
|
||||
import ru.dbotthepony.mc.otm.core.damageType
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.CosmicRaysDamageSource
|
||||
import ru.dbotthepony.mc.otm.registry.MItems
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
|
||||
val isAdAstraLoaded by lazy {
|
||||
ModList.get().isLoaded(AdAstra.MOD_ID)
|
||||
@ -28,7 +26,7 @@ fun onDamageEvent(event: LivingHurtEvent) {
|
||||
if (ServerCompatConfig.AdAstra.ANDROIDS_DO_NOT_NEED_OXYGEN) {
|
||||
if (ply.matteryPlayer?.isAndroid != true) return
|
||||
|
||||
if (event.source.`is`(ModDamageSources.OXYGEN)) {
|
||||
if (event.source == ModDamageSource.OXYGEN) {
|
||||
event.amount = 0f
|
||||
event.isCanceled = true
|
||||
}
|
||||
@ -52,7 +50,7 @@ fun onMatteryTick(event: MatteryPlayerCapability.PostTick) {
|
||||
val yesTritanium = yesTritanium0 + yesTritanium1
|
||||
|
||||
if (rand.nextDouble() <= (noSpacesuits - yesTritanium) * ServerCompatConfig.AdAstra.ANDROID_COSMIC_RAYS_CHANCE) {
|
||||
event.player.hurt(MatteryDamageSource(event.level.registryAccess().damageType(MDamageTypes.COSMIC_RAYS)), 1f)
|
||||
event.player.hurt(CosmicRaysDamageSource(), 1f)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ fun <V : Any> Codec<V>.fromNetwork(buff: FriendlyByteBuf): V {
|
||||
}
|
||||
|
||||
// 1.19 being 1.19
|
||||
fun TranslatableComponent(key: String, vararg values: Any): MutableComponent = MutableComponent.create(TranslatableContents(key, null, values))
|
||||
fun TranslatableComponent(key: String, vararg values: Any): MutableComponent = MutableComponent.create(TranslatableContents(key, *values))
|
||||
fun TextComponent(value: String): MutableComponent = MutableComponent.create(LiteralContents(value))
|
||||
|
||||
fun <T> IForgeRegistry<T>.getKeyNullable(value: T): ResourceLocation? {
|
||||
|
@ -12,10 +12,9 @@ import net.minecraft.world.phys.BlockHitResult
|
||||
import net.minecraft.world.phys.EntityHitResult
|
||||
import net.minecraft.world.phys.HitResult
|
||||
import net.minecraftforge.event.ForgeEventFactory
|
||||
import ru.dbotthepony.mc.otm.core.damageType
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MEntityTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.registry.PlasmaDamageSource
|
||||
|
||||
class PlasmaProjectile(level: Level) : Projectile(MEntityTypes.PLASMA as EntityType<out Projectile>, level) {
|
||||
var inflictor: ItemStack? = null
|
||||
@ -38,7 +37,7 @@ class PlasmaProjectile(level: Level) : Projectile(MEntityTypes.PLASMA as EntityT
|
||||
super.onHitEntity(p_37259_)
|
||||
|
||||
if (!level.isClientSide) {
|
||||
p_37259_.entity.hurt(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.PLASMA), owner, inflictor), damage)
|
||||
p_37259_.entity.hurt(PlasmaDamageSource(owner, inflictor), damage)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,8 +24,8 @@ import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.config.ItemsConfig
|
||||
import ru.dbotthepony.mc.otm.core.*
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.registry.EMPDamageSource
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.runIfClient
|
||||
import kotlin.math.roundToInt
|
||||
|
||||
@ -171,7 +171,7 @@ class CrudeBatteryItem : BatteryItem(ItemsConfig.Batteries.CRUDE) {
|
||||
mattery.androidEnergy.item = copyStack
|
||||
|
||||
val extraDamageMult = level.random.nextFloat()
|
||||
player.hurt(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EMP), inflictor = itemStack), 1.5f + extraDamageMult * 3.5f)
|
||||
player.hurt(EMPDamageSource(inflictor = itemStack), 1.5f + extraDamageMult * 3.5f)
|
||||
|
||||
val debuffDuration = 100 + (100 * (1f - extraDamageMult)).roundToInt()
|
||||
player.addEffect(MobEffectInstance(MobEffects.BLINDNESS, debuffDuration), player)
|
||||
|
@ -7,6 +7,7 @@ import net.minecraft.server.level.ServerLevel
|
||||
import net.minecraft.world.Container
|
||||
import net.minecraft.world.InteractionHand
|
||||
import net.minecraft.world.InteractionResult
|
||||
import net.minecraft.world.damagesource.DamageSource
|
||||
import net.minecraft.world.entity.vehicle.AbstractMinecart
|
||||
import net.minecraft.world.entity.vehicle.MinecartChest
|
||||
import net.minecraft.world.item.*
|
||||
@ -155,7 +156,7 @@ class ChestUpgraderItem : Item(Properties().stacksTo(1)) {
|
||||
}
|
||||
cart.clearContent()
|
||||
|
||||
(cart as AbstractMinecart).destroy(cart.damageSources().generic())
|
||||
(cart as AbstractMinecart).destroy(DamageSource.GENERIC)
|
||||
level.addFreshEntity(newCart)
|
||||
level.gameEvent(GameEvent.ENTITY_PLACE, event.pos, GameEvent.Context.of(event.entity, level.getBlockState(event.pos.below())))
|
||||
|
||||
|
@ -13,9 +13,8 @@ import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.onceServer
|
||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.client.minecraft
|
||||
import ru.dbotthepony.mc.otm.core.damageType
|
||||
import ru.dbotthepony.mc.otm.registry.ExopackDamageSource
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.runIfClient
|
||||
|
||||
class ExopackProbeItem : Item(Properties().stacksTo(1).rarity(Rarity.EPIC)) {
|
||||
@ -66,7 +65,7 @@ class ExopackProbeItem : Item(Properties().stacksTo(1).rarity(Rarity.EPIC)) {
|
||||
|
||||
player.displayClientMessage(TranslatableComponent("otm.exopack.granted1").withStyle(ChatFormatting.GRAY), false)
|
||||
player.displayClientMessage(TranslatableComponent("otm.exopack.granted2").withStyle(ChatFormatting.GRAY), false)
|
||||
player.hurt(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EXOPACK_PROBE), inflictor = copy), 10f)
|
||||
player.hurt(ExopackDamageSource(inflictor = copy), 10f)
|
||||
|
||||
for (i in 3 .. 7) {
|
||||
onceServer((i - 1) * 100) {
|
||||
|
@ -39,8 +39,9 @@ import ru.dbotthepony.mc.otm.config.ToolsConfig
|
||||
import ru.dbotthepony.mc.otm.core.*
|
||||
import ru.dbotthepony.mc.otm.core.math.*
|
||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||
import ru.dbotthepony.mc.otm.registry.ExplosiveHammerDamageSource
|
||||
import ru.dbotthepony.mc.otm.registry.HammerNailDamageSource
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
import ru.dbotthepony.mc.otm.triggers.NailedEntityTrigger
|
||||
import java.util.function.Predicate
|
||||
|
||||
@ -123,14 +124,14 @@ class ExplosiveHammerItem(durability: Int = 512) : Item(Properties().stacksTo(1)
|
||||
if (player.random.nextDouble() <= ToolsConfig.ExplosiveHammer.FLY_OFF_DAMAGE_CHANCE) {
|
||||
player.invulnerableTime = 0
|
||||
val dmg = ToolsConfig.ExplosiveHammer.FLY_OFF_MIN_DAMAGE + player.random.nextDouble() * (ToolsConfig.ExplosiveHammer.FLY_OFF_MAX_DAMAGE - ToolsConfig.ExplosiveHammer.FLY_OFF_MIN_DAMAGE)
|
||||
player.hurt(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EXPLOSIVE_HAMMER), inflictor = copy), dmg.toFloat())
|
||||
player.hurt(ExplosiveHammerDamageSource(inflictor = copy), dmg.toFloat())
|
||||
}
|
||||
|
||||
itemStack.shrink(itemStack.count)
|
||||
} else if (player.random.nextDouble() <= ToolsConfig.ExplosiveHammer.SELF_HARM_CHANCE) {
|
||||
player.invulnerableTime = 0
|
||||
val dmg = ToolsConfig.ExplosiveHammer.SELF_HARM_MIN_DAMAGE + player.random.nextDouble() * (ToolsConfig.ExplosiveHammer.SELF_HARM_MAX_DAMAGE - ToolsConfig.ExplosiveHammer.SELF_HARM_MIN_DAMAGE)
|
||||
player.hurt(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EXPLOSIVE_HAMMER), inflictor = copy), dmg.toFloat())
|
||||
player.hurt(ExplosiveHammerDamageSource(inflictor = copy), dmg.toFloat())
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -205,7 +206,7 @@ class ExplosiveHammerItem(durability: Int = 512) : Item(Properties().stacksTo(1)
|
||||
|
||||
val rayBox = aabb.move(rayPos)
|
||||
val entities = level.getEntities(null, rayBox) { it is LivingEntity && it.isAlive && !it.isSpectator && hitEntities.add(it) } as List<LivingEntity>
|
||||
val damageSource = MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.HAMMER_NAIL), attacker, itemStack)
|
||||
val damageSource = HammerNailDamageSource(attacker, itemStack)
|
||||
|
||||
for (it in entities) {
|
||||
val damage = canTravel * ToolsConfig.ExplosiveHammer.TRAVEL_DAMAGE_MULT
|
||||
@ -257,12 +258,12 @@ class ExplosiveHammerItem(durability: Int = 512) : Item(Properties().stacksTo(1)
|
||||
if (attacker.random.nextDouble() <= ToolsConfig.ExplosiveHammer.FLY_OFF_DAMAGE_CHANCE) {
|
||||
attacker.invulnerableTime = 0
|
||||
val dmg = ToolsConfig.ExplosiveHammer.FLY_OFF_MIN_DAMAGE + attacker.random.nextDouble() * (ToolsConfig.ExplosiveHammer.FLY_OFF_MAX_DAMAGE - ToolsConfig.ExplosiveHammer.FLY_OFF_MIN_DAMAGE)
|
||||
attacker.hurt(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EXPLOSIVE_HAMMER), inflictor = copy), dmg.toFloat())
|
||||
attacker.hurt(ExplosiveHammerDamageSource(inflictor = copy), dmg.toFloat())
|
||||
}
|
||||
} else if (attacker.random.nextDouble() <= ToolsConfig.ExplosiveHammer.SELF_HARM_CHANCE) {
|
||||
attacker.invulnerableTime = 0
|
||||
val dmg = ToolsConfig.ExplosiveHammer.SELF_HARM_MIN_DAMAGE + attacker.random.nextDouble() * (ToolsConfig.ExplosiveHammer.SELF_HARM_MAX_DAMAGE - ToolsConfig.ExplosiveHammer.SELF_HARM_MIN_DAMAGE)
|
||||
attacker.hurt(MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EXPLOSIVE_HAMMER), inflictor = copy), dmg.toFloat())
|
||||
attacker.hurt(ExplosiveHammerDamageSource(inflictor = copy), dmg.toFloat())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import net.minecraft.ChatFormatting
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.nbt.CompoundTag
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.tags.BlockTags
|
||||
import net.minecraft.world.entity.EquipmentSlot
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.entity.ai.attributes.Attribute
|
||||
@ -40,12 +39,12 @@ import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
||||
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
import ru.dbotthepony.mc.otm.core.damageType
|
||||
import ru.dbotthepony.mc.otm.core.math.defineDecimal
|
||||
import ru.dbotthepony.mc.otm.core.ifPresentK
|
||||
import ru.dbotthepony.mc.otm.core.math.nextVariance
|
||||
import ru.dbotthepony.mc.otm.core.orNull
|
||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
||||
import ru.dbotthepony.mc.otm.registry.EMPDamageSource
|
||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||
|
||||
@ -108,7 +107,7 @@ class EnergySwordItem : Item(Properties().stacksTo(1).rarity(Rarity.RARE)), Vani
|
||||
victim.matteryPlayer?.let {
|
||||
if (it.isAndroid) {
|
||||
victim.invulnerableTime = 0
|
||||
victim.hurt(MatteryDamageSource(attacker.level.registryAccess().damageType(MDamageTypes.EMP), attacker, itemStack), 8f)
|
||||
victim.hurt(EMPDamageSource(attacker, itemStack), 8f)
|
||||
}
|
||||
}
|
||||
|
||||
@ -121,7 +120,7 @@ class EnergySwordItem : Item(Properties().stacksTo(1).rarity(Rarity.RARE)), Vani
|
||||
victim.matteryPlayer?.let {
|
||||
if (it.isAndroid && it.androidEnergy.extractEnergyExact(ENERGY_ZAP, false)) {
|
||||
it.androidEnergy.extractEnergy(attacker.level.random.nextVariance(ENERGY_ZAP_VARIANCE), false)
|
||||
victim.hurt(MatteryDamageSource(attacker.level.registryAccess().damageType(MDamageTypes.EMP), attacker, itemStack), 8f)
|
||||
victim.hurt(EMPDamageSource(attacker, itemStack), 8f)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -45,7 +45,7 @@ import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.item.crafting.Ingredient
|
||||
import net.minecraft.world.item.crafting.Recipe
|
||||
import net.minecraft.world.item.crafting.RecipeType
|
||||
import net.minecraft.world.item.crafting.SmithingTransformRecipe
|
||||
import net.minecraft.world.item.crafting.UpgradeRecipe
|
||||
import net.minecraft.world.level.ItemLike
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities
|
||||
import net.minecraftforge.common.crafting.IShapedRecipe
|
||||
@ -451,13 +451,13 @@ object MatterManager {
|
||||
stream = stream.filter { it.value.ingredients.stream().flatMap { it.items.stream() }.noneMatch { it.isDamageableItem } }
|
||||
}
|
||||
|
||||
stream.filter { it.value.getResultItem(server.registryAccess()).isNotEmpty }.map {
|
||||
stream.filter { it.value.getResultItem().isNotEmpty }.map {
|
||||
try {
|
||||
ResolvedRecipe(
|
||||
it.value.ingredients.stream()
|
||||
.filter { !it.isActuallyEmpty }
|
||||
.map { it.items.stream().filter { it.isNotEmpty }.map(::RecipeEntry) },
|
||||
ImmutableStack(it.value.getResultItem(server.registryAccess())),
|
||||
ImmutableStack(it.value.getResultItem()),
|
||||
isCritical = isCritical,
|
||||
name = it.id,
|
||||
allowBacktrack = allowBacktrack
|
||||
@ -500,7 +500,7 @@ object MatterManager {
|
||||
stream.map {
|
||||
try {
|
||||
// avoid reality snap when recipe has no output
|
||||
val resultItem = it.value.getResultItem(server.registryAccess())
|
||||
val resultItem = it.value.getResultItem()
|
||||
|
||||
if (resultItem.isEmpty) {
|
||||
null
|
||||
@ -549,7 +549,7 @@ object MatterManager {
|
||||
for (item in it.value.ingredients[c].items) {
|
||||
container[c] = item
|
||||
|
||||
if (!it.value.assemble(container, server.registryAccess()).isEmpty) {
|
||||
if (!it.value.assemble(container).isEmpty) {
|
||||
val residue = it.value.getRemainingItems(container)
|
||||
|
||||
val thisResidue = residue[c]
|
||||
@ -604,13 +604,13 @@ object MatterManager {
|
||||
val allowBacktrack = data["allow_backtrack"]?.asBoolean ?: true
|
||||
|
||||
var stream = server.recipeManager.byType(findRecipeType).values.stream().filter { !it.value.isIncomplete }
|
||||
stream = stream.filter { it.value is SmithingTransformRecipe }
|
||||
stream = stream.filter { it.value is UpgradeRecipe }
|
||||
|
||||
stream.filter { it.value.getResultItem(server.registryAccess()).isNotEmpty }.map {
|
||||
stream.filter { it.value.getResultItem().isNotEmpty }.map {
|
||||
try {
|
||||
val ingredients = ArrayList<Ingredient>()
|
||||
|
||||
val recipe = it.value as SmithingTransformRecipe
|
||||
val recipe = it.value as UpgradeRecipe
|
||||
|
||||
ingredients.add(recipe.base)
|
||||
ingredients.add(recipe.addition)
|
||||
@ -619,7 +619,7 @@ object MatterManager {
|
||||
ingredients.stream()
|
||||
.filter { !it.isActuallyEmpty }
|
||||
.map { it.items.stream().filter { it.isNotEmpty }.map(::RecipeEntry) },
|
||||
ImmutableStack(it.value.getResultItem(server.registryAccess())),
|
||||
ImmutableStack(it.value.resultItem),
|
||||
isCritical = isCritical,
|
||||
name = it.id,
|
||||
allowBacktrack = allowBacktrack
|
||||
|
@ -68,11 +68,11 @@ abstract class MatteryCookingRecipe(
|
||||
|
||||
override fun isIncomplete(): Boolean = input.isActuallyEmpty || output.isActuallyEmpty
|
||||
|
||||
override fun assemble(container: Container, registry: RegistryAccess): ItemStack = outputStack.copy()
|
||||
override fun assemble(container: Container): ItemStack = outputStack.copy()
|
||||
|
||||
override fun canCraftInDimensions(width: Int, height: Int): Boolean = true
|
||||
|
||||
override fun getResultItem(registry: RegistryAccess): ItemStack = outputStack
|
||||
override fun getResultItem(): ItemStack = outputStack
|
||||
|
||||
abstract fun toFinished(): FinishedRecipe
|
||||
}
|
||||
|
222
src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt
Normal file
222
src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt
Normal file
@ -0,0 +1,222 @@
|
||||
package ru.dbotthepony.mc.otm.registry
|
||||
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.damagesource.DamageSource
|
||||
import net.minecraft.world.entity.Entity
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
|
||||
class ImmutableDamageSource(private val parent: DamageSource) : DamageSource(parent.msgId) {
|
||||
override fun equals(other: Any?): Boolean {
|
||||
return parent == other
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return parent.hashCode()
|
||||
}
|
||||
|
||||
override fun toString(): String {
|
||||
return parent.toString()
|
||||
}
|
||||
|
||||
override fun isProjectile(): Boolean {
|
||||
return parent.isProjectile
|
||||
}
|
||||
|
||||
override fun setProjectile(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun isExplosion(): Boolean {
|
||||
return parent.isExplosion
|
||||
}
|
||||
|
||||
override fun setExplosion(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun isBypassArmor(): Boolean {
|
||||
return parent.isBypassArmor
|
||||
}
|
||||
|
||||
override fun isDamageHelmet(): Boolean {
|
||||
return parent.isDamageHelmet
|
||||
}
|
||||
|
||||
override fun getFoodExhaustion(): Float {
|
||||
return parent.foodExhaustion
|
||||
}
|
||||
|
||||
override fun isBypassInvul(): Boolean {
|
||||
return parent.isBypassInvul
|
||||
}
|
||||
|
||||
override fun isBypassMagic(): Boolean {
|
||||
return parent.isBypassMagic
|
||||
}
|
||||
|
||||
override fun getDirectEntity(): Entity? {
|
||||
return parent.directEntity
|
||||
}
|
||||
|
||||
override fun getEntity(): Entity? {
|
||||
return parent.entity
|
||||
}
|
||||
|
||||
override fun bypassArmor(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun damageHelmet(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun bypassInvul(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun bypassMagic(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun setIsFire(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun setNoAggro(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun getLocalizedDeathMessage(p_19343_: LivingEntity): Component {
|
||||
return super.getLocalizedDeathMessage(p_19343_)
|
||||
}
|
||||
|
||||
override fun isFire(): Boolean {
|
||||
return parent.isFire
|
||||
}
|
||||
|
||||
override fun isNoAggro(): Boolean {
|
||||
return parent.isNoAggro
|
||||
}
|
||||
|
||||
override fun getMsgId(): String {
|
||||
return parent.getMsgId()
|
||||
}
|
||||
|
||||
override fun setScalesWithDifficulty(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun scalesWithDifficulty(): Boolean {
|
||||
return parent.scalesWithDifficulty()
|
||||
}
|
||||
|
||||
override fun isMagic(): Boolean {
|
||||
return parent.isMagic
|
||||
}
|
||||
|
||||
override fun setMagic(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun isFall(): Boolean {
|
||||
return parent.isFall
|
||||
}
|
||||
|
||||
override fun setIsFall(): DamageSource {
|
||||
throw UnsupportedOperationException()
|
||||
}
|
||||
|
||||
override fun isCreativePlayer(): Boolean {
|
||||
return parent.isCreativePlayer
|
||||
}
|
||||
|
||||
override fun getSourcePosition(): Vec3? {
|
||||
return parent.sourcePosition
|
||||
}
|
||||
}
|
||||
|
||||
abstract class MatteryDamageSource(name: String, private val entity: Entity? = null, val inflictor: ItemStack? = null) : DamageSource(name) {
|
||||
override fun getLocalizedDeathMessage(victim: LivingEntity): Component {
|
||||
val itemStack = inflictor ?: (entity as LivingEntity?)?.mainHandItem ?: ItemStack.EMPTY
|
||||
|
||||
if (!itemStack.isEmpty && itemStack.hasCustomHoverName()) {
|
||||
return TranslatableComponent("death.attack.$msgId.player.item", victim.displayName, entity!!.displayName, itemStack.displayName)
|
||||
}
|
||||
|
||||
if (entity != null) {
|
||||
return TranslatableComponent("death.attack.$msgId.player", victim.displayName, entity.displayName)
|
||||
}
|
||||
|
||||
return TranslatableComponent("death.attack.$msgId", victim.displayName)
|
||||
}
|
||||
|
||||
final override fun getEntity(): Entity? {
|
||||
return entity
|
||||
}
|
||||
}
|
||||
|
||||
class EMPDamageSource(entity: Entity? = null, inflictor: ItemStack? = null) : MatteryDamageSource(MRegistry.DAMAGE_EMP_NAME, entity, inflictor) {
|
||||
init {
|
||||
bypassArmor()
|
||||
bypassMagic()
|
||||
}
|
||||
|
||||
override fun scalesWithDifficulty(): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class ExopackDamageSource(entity: Entity? = null, inflictor: ItemStack? = null) : MatteryDamageSource(MRegistry.DAMAGE_EXOPACK_PROBE_ID, entity, inflictor) {
|
||||
init {
|
||||
bypassArmor()
|
||||
bypassMagic()
|
||||
bypassEnchantments()
|
||||
}
|
||||
|
||||
override fun scalesWithDifficulty(): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class CosmicRaysDamageSource(entity: Entity? = null, inflictor: ItemStack? = null) : MatteryDamageSource(MRegistry.DAMAGE_COSMIC_RAYS_NAME, entity, inflictor) {
|
||||
init {
|
||||
bypassArmor()
|
||||
bypassMagic()
|
||||
bypassEnchantments()
|
||||
}
|
||||
|
||||
override fun scalesWithDifficulty(): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class ExplosiveHammerDamageSource(entity: Entity? = null, inflictor: ItemStack? = null) : MatteryDamageSource(MRegistry.DAMAGE_EXPLOSIVE_HAMMER_NAME, entity, inflictor) {
|
||||
override fun scalesWithDifficulty(): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class ShockwaveDamageSource(entity: Entity? = null, inflictor: ItemStack? = null) : MatteryDamageSource(MRegistry.DAMAGE_SHOCKWAVE_NAME, entity, inflictor) {
|
||||
init {
|
||||
bypassArmor()
|
||||
}
|
||||
|
||||
override fun scalesWithDifficulty(): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class PlasmaDamageSource(entity: Entity? = null, inflictor: ItemStack? = null) : MatteryDamageSource(MRegistry.DAMAGE_PLASMA_NAME, entity, inflictor) {
|
||||
override fun scalesWithDifficulty(): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
class HammerNailDamageSource(entity: Entity? = null, inflictor: ItemStack? = null) : MatteryDamageSource(MRegistry.DAMAGE_HAMMER_NAIL_NAME, entity, inflictor) {
|
||||
override fun scalesWithDifficulty(): Boolean {
|
||||
return false
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package ru.dbotthepony.mc.otm.registry
|
||||
import net.minecraft.ChatFormatting
|
||||
import net.minecraft.core.BlockPos
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.sounds.SoundEvents
|
||||
import net.minecraft.util.valueproviders.UniformInt
|
||||
import net.minecraft.world.entity.Entity
|
||||
import net.minecraft.world.entity.EntityType
|
||||
@ -25,11 +26,8 @@ import net.minecraft.world.level.block.TrapDoorBlock
|
||||
import net.minecraft.world.level.block.WallBlock
|
||||
import net.minecraft.world.level.block.state.BlockBehaviour
|
||||
import net.minecraft.world.level.block.state.BlockState
|
||||
import net.minecraft.world.level.block.state.properties.BlockSetType
|
||||
import net.minecraft.world.level.block.state.properties.NoteBlockInstrument
|
||||
import net.minecraft.world.level.material.Material
|
||||
import net.minecraft.world.level.material.MaterialColor
|
||||
import net.minecraft.world.level.material.PushReaction
|
||||
import net.minecraftforge.eventbus.api.IEventBus
|
||||
import net.minecraftforge.registries.DeferredRegister
|
||||
import net.minecraftforge.registries.ForgeRegistries
|
||||
@ -229,7 +227,7 @@ object MBlocks {
|
||||
.noOcclusion()
|
||||
.destroyTime(3f)
|
||||
.requiresCorrectToolForDrops(),
|
||||
BlockSetType.IRON
|
||||
SoundEvents.IRON_DOOR_CLOSE, SoundEvents.IRON_DOOR_OPEN
|
||||
) {
|
||||
override fun appendHoverText(
|
||||
p_49816_: ItemStack,
|
||||
@ -264,7 +262,7 @@ object MBlocks {
|
||||
.noOcclusion().destroyTime(3f)
|
||||
.requiresCorrectToolForDrops()
|
||||
.isValidSpawn { _: BlockState, _: BlockGetter, _: BlockPos, _: EntityType<*>? -> false },
|
||||
BlockSetType.IRON
|
||||
SoundEvents.IRON_DOOR_CLOSE, SoundEvents.IRON_DOOR_OPEN
|
||||
) {
|
||||
override fun appendHoverText(
|
||||
p_49816_: ItemStack,
|
||||
|
@ -3,16 +3,16 @@ package ru.dbotthepony.mc.otm.registry
|
||||
import net.minecraft.world.damagesource.DamageSource
|
||||
|
||||
object MDamageTypes {
|
||||
val BECOME_ANDROID = DamageSource("become_android")
|
||||
val BECOME_HUMANE = DamageSource("become_humane")
|
||||
val EVENT_HORIZON = DamageSource("event_horizon")
|
||||
val HAWKING_RADIATION = DamageSource("hawking_radiation")
|
||||
val EXOPACK_PROBE = DamageSource("exopack_probe")
|
||||
val EMP = DamageSource("emp")
|
||||
val SHOCKWAVE = DamageSource("shockwave")
|
||||
val PLASMA = DamageSource("plasma")
|
||||
val COSMIC_RAYS = DamageSource("cosmic_rays")
|
||||
val EXPLOSIVE_HAMMER = DamageSource("explosive_hammer")
|
||||
val HAMMER_NAIL = DamageSource("hammer_nail")
|
||||
val ANDROID_DISCHARGE = DamageSource("android_discharge")
|
||||
val BECOME_ANDROID = ImmutableDamageSource(DamageSource("become_android").bypassArmor().bypassInvul().bypassMagic().bypassEnchantments())
|
||||
val BECOME_HUMANE = ImmutableDamageSource(DamageSource("become_humane").bypassArmor().bypassInvul().bypassMagic().bypassEnchantments())
|
||||
val EVENT_HORIZON = ImmutableDamageSource(DamageSource("event_horizon").bypassArmor())
|
||||
val HAWKING_RADIATION = ImmutableDamageSource(DamageSource("hawking_radiation").bypassArmor())
|
||||
val EXOPACK_PROBE = ImmutableDamageSource(DamageSource("exopack_probe").bypassArmor().bypassMagic().bypassEnchantments())
|
||||
val EMP = ImmutableDamageSource(DamageSource("emp").bypassArmor())
|
||||
val SHOCKWAVE = ImmutableDamageSource(DamageSource("shockwave").bypassArmor())
|
||||
val PLASMA = ImmutableDamageSource(DamageSource("plasma"))
|
||||
val COSMIC_RAYS = ImmutableDamageSource(DamageSource("cosmic_rays").bypassArmor().bypassMagic().bypassEnchantments())
|
||||
val EXPLOSIVE_HAMMER = ImmutableDamageSource(DamageSource("explosive_hammer"))
|
||||
val HAMMER_NAIL = ImmutableDamageSource(DamageSource("hammer_nail"))
|
||||
val ANDROID_DISCHARGE = ImmutableDamageSource(DamageSource("android_discharge").bypassArmor().bypassInvul().bypassMagic().bypassEnchantments())
|
||||
}
|
||||
|
@ -221,6 +221,18 @@ object MRegistry {
|
||||
WallBlock(BlockBehaviour.Properties.copy(TRITANIUM_STRIPED_BLOCK.getBlock(colorA, colorB)))
|
||||
})
|
||||
|
||||
const val DAMAGE_BECOME_ANDROID_ID = "otm_become_android"
|
||||
const val DAMAGE_BECOME_HUMANE_ID = "otm_become_humane"
|
||||
const val DAMAGE_EVENT_HORIZON_ID = "otm_event_horizon"
|
||||
const val DAMAGE_HAWKING_RADIATION_ID = "otm_hawking_radiation"
|
||||
const val DAMAGE_EXOPACK_PROBE_ID = "otm_exopack_probe"
|
||||
const val DAMAGE_EMP_NAME = "otm_emp"
|
||||
const val DAMAGE_SHOCKWAVE_NAME = "otm_shockwave"
|
||||
const val DAMAGE_PLASMA_NAME = "otm_plasma"
|
||||
const val DAMAGE_COSMIC_RAYS_NAME = "otm_cosmic_rays"
|
||||
const val DAMAGE_EXPLOSIVE_HAMMER_NAME = "otm_explosive_hammer"
|
||||
const val DAMAGE_HAMMER_NAIL_NAME = "otm_hammer_nail"
|
||||
|
||||
private fun registerEvent(event: RegisterEvent) {
|
||||
// mojang moment
|
||||
|
||||
|
@ -1,35 +0,0 @@
|
||||
package ru.dbotthepony.mc.otm.registry
|
||||
|
||||
import net.minecraft.core.Holder
|
||||
import net.minecraft.network.chat.Component
|
||||
import net.minecraft.world.damagesource.DamageSource
|
||||
import net.minecraft.world.damagesource.DamageType
|
||||
import net.minecraft.world.entity.Entity
|
||||
import net.minecraft.world.entity.LivingEntity
|
||||
import net.minecraft.world.item.ItemStack
|
||||
import net.minecraft.world.phys.Vec3
|
||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
||||
|
||||
class MatteryDamageSource(
|
||||
type: Holder<DamageType>,
|
||||
entity: Entity? = null,
|
||||
inflictor: ItemStack? = null,
|
||||
entityInflictor: Entity? = null,
|
||||
pos: Vec3? = null
|
||||
) : DamageSource(type, entity, entityInflictor, pos) {
|
||||
val inflictor = inflictor?.copy()
|
||||
|
||||
override fun getLocalizedDeathMessage(victim: LivingEntity): Component {
|
||||
val itemStack = inflictor ?: (entity as? LivingEntity)?.mainHandItem ?: ItemStack.EMPTY
|
||||
|
||||
if (!itemStack.isEmpty && itemStack.hasCustomHoverName()) {
|
||||
return TranslatableComponent("death.attack.$msgId.player.item", victim.displayName, entity!!.displayName, itemStack.displayName)
|
||||
}
|
||||
|
||||
if (entity != null) {
|
||||
return TranslatableComponent("death.attack.$msgId.player", victim.displayName, entity!!.displayName)
|
||||
}
|
||||
|
||||
return TranslatableComponent("death.attack.$msgId", victim.displayName)
|
||||
}
|
||||
}
|
@ -190,3 +190,10 @@ public net.minecraft.advancements.critereon.DamagePredicate f_24903_ # dealtDama
|
||||
public net.minecraft.advancements.critereon.DamagePredicate f_24905_ # sourceEntity
|
||||
public net.minecraft.advancements.critereon.DamagePredicate f_24904_ # takenDamage
|
||||
public net.minecraft.advancements.critereon.DamagePredicate f_24907_ # type
|
||||
|
||||
public net.minecraft.world.item.crafting.UpgradeRecipe f_44519_ # addition
|
||||
public net.minecraft.world.item.crafting.UpgradeRecipe f_44518_ # base
|
||||
public net.minecraft.world.item.crafting.UpgradeRecipe f_44521_ # id
|
||||
public net.minecraft.world.item.crafting.UpgradeRecipe f_44520_ # result
|
||||
|
||||
public net.minecraft.client.gui.components.AbstractWidget m_93696_()Z # isFocused
|
||||
|
Loading…
Reference in New Issue
Block a user