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
|
jupiter_version=5.9.2
|
||||||
curios_version=4440173
|
curios_version=4440173
|
||||||
cosmetic_armor_reworked_id=4439659
|
cosmetic_armor_reworked_id=4439659
|
||||||
ad_astra_id=4594155
|
ad_astra_id=4452072
|
||||||
botarium_id=4594094
|
botarium_id=4416456
|
||||||
resourceful_lib_id=4598948
|
resourceful_lib_id=4378849
|
||||||
resourceful_config_id=4576455
|
resourceful_config_id=4441381
|
||||||
jade_id=4434045
|
jade_id=4434045
|
||||||
configured_id=4462894
|
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)
|
event.generator.addProvider(event.includeServer(), matterData)
|
||||||
|
|
||||||
val registrySetBuilder = RegistrySetBuilder()
|
val registrySetBuilder = RegistrySetBuilder()
|
||||||
.add(Registries.DAMAGE_TYPE, ::registerDamageTypes)
|
|
||||||
.add(Registries.CONFIGURED_FEATURE, ::registerConfiguredFeatures)
|
.add(Registries.CONFIGURED_FEATURE, ::registerConfiguredFeatures)
|
||||||
.add(Registries.PLACED_FEATURE, ::registerPlacedFeatures)
|
.add(Registries.PLACED_FEATURE, ::registerPlacedFeatures)
|
||||||
|
|
||||||
event.generator.addProvider(event.includeServer(), DatapackBuiltinEntriesProvider(event.generator.packOutput, event.lookupProvider, registrySetBuilder, setOf(MOD_ID)))
|
event.generator.addProvider(event.includeServer(), DatapackBuiltinEntriesProvider(event.generator.packOutput, event.lookupProvider, registrySetBuilder, setOf(MOD_ID)))
|
||||||
|
|
||||||
registerDamageTypeTags(tagsProvider.damageTypes)
|
|
||||||
|
|
||||||
AddEnglishLanguage(languageProvider)
|
AddEnglishLanguage(languageProvider)
|
||||||
AddRussianLanguage(languageProvider)
|
AddRussianLanguage(languageProvider)
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ open class AndroidFeatureType<T : AndroidFeature> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
open val displayContents: ComponentContents by lazy {
|
open val displayContents: ComponentContents by lazy {
|
||||||
TranslatableContents(displayId, null, arrayOf())
|
TranslatableContents(displayId)
|
||||||
}
|
}
|
||||||
|
|
||||||
open val displayName: Component by lazy {
|
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.AndroidFeatures
|
||||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MSoundEvents
|
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.ShockwaveDamageMobTrigger
|
||||||
import ru.dbotthepony.mc.otm.triggers.ShockwaveTrigger
|
import ru.dbotthepony.mc.otm.triggers.ShockwaveTrigger
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
@ -121,7 +121,7 @@ class ShockwaveFeature(capability: MatteryPlayerCapability) : AndroidSwitchableF
|
|||||||
seen.add(entity)
|
seen.add(entity)
|
||||||
val multiplier = (1.0 - distanceMultiplier).pow(0.5)
|
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()
|
val damage = multiplier.toFloat() * AndroidConfig.Shockwave.DAMAGE.toFloat() * AndroidConfig.Shockwave.WARDEN_DAMAGE_MULT.toFloat()
|
||||||
entity.hurt(source, damage)
|
entity.hurt(source, damage)
|
||||||
entity.deltaMovement += (entity.position - ply.position).normalize() * (multiplier * 3.0)
|
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
|
// don't hurt items, arrows, etc etc
|
||||||
if (entity is LivingEntity) {
|
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()
|
val damage = multiplier.toFloat() * AndroidConfig.Shockwave.DAMAGE.toFloat()
|
||||||
entity.hurt(source, damage)
|
entity.hurt(source, damage)
|
||||||
entity.deltaMovement += (entity.position - ply.position).normalize() * (multiplier * 3.0)
|
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.item.TooltipFlag
|
||||||
import net.minecraft.world.level.BlockGetter
|
import net.minecraft.world.level.BlockGetter
|
||||||
import net.minecraft.world.level.Level
|
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.BasePressurePlateBlock
|
||||||
import net.minecraft.world.level.block.Block
|
import net.minecraft.world.level.block.Block
|
||||||
import net.minecraft.world.level.block.SoundType
|
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.TranslatableComponent
|
||||||
import ru.dbotthepony.mc.otm.core.get
|
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(
|
override fun appendHoverText(
|
||||||
p_49816_: ItemStack,
|
p_49816_: ItemStack,
|
||||||
p_49817_: BlockGetter?,
|
p_49817_: BlockGetter?,
|
||||||
@ -42,6 +43,14 @@ class TritaniumPressurePlate(color: DyeColor?) : BasePressurePlateBlock(Properti
|
|||||||
p_49915_.add(BlockStateProperties.POWERED)
|
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 {
|
override fun getSignalStrength(level: Level, pos: BlockPos): Int {
|
||||||
if (level.getEntitiesOfClass(ServerPlayer::class.java, TOUCH_AABB.move(pos)).isNotEmpty()) {
|
if (level.getEntitiesOfClass(ServerPlayer::class.java, TOUCH_AABB.move(pos)).isNotEmpty()) {
|
||||||
return 15
|
return 15
|
||||||
|
@ -9,7 +9,6 @@ import net.minecraft.server.level.ServerPlayer
|
|||||||
import net.minecraft.world.entity.Entity
|
import net.minecraft.world.entity.Entity
|
||||||
import net.minecraft.world.entity.EquipmentSlot
|
import net.minecraft.world.entity.EquipmentSlot
|
||||||
import net.minecraft.world.entity.LivingEntity
|
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.item.ItemEntity
|
||||||
import net.minecraft.world.entity.player.Player
|
import net.minecraft.world.entity.player.Player
|
||||||
import net.minecraft.world.level.Level
|
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.AABB
|
||||||
import net.minecraft.world.phys.Vec3
|
import net.minecraft.world.phys.Vec3
|
||||||
import net.minecraftforge.common.Tags
|
import net.minecraftforge.common.Tags
|
||||||
import net.minecraftforge.registries.ForgeRegistries
|
|
||||||
import ru.dbotthepony.mc.otm.block.BlackHoleBlock
|
import ru.dbotthepony.mc.otm.block.BlackHoleBlock
|
||||||
import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.tech.GravitationStabilizerBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
|
import ru.dbotthepony.mc.otm.block.entity.MatteryBlockEntity
|
||||||
import ru.dbotthepony.mc.otm.block.entity.blackhole.ExplosionQueue.Companion.queueForLevel
|
import ru.dbotthepony.mc.otm.block.entity.blackhole.ExplosionQueue.Companion.queueForLevel
|
||||||
import ru.dbotthepony.mc.otm.config.ServerConfig
|
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.getExplosionResistance
|
||||||
import ru.dbotthepony.mc.otm.core.gracefulBlockBreak
|
import ru.dbotthepony.mc.otm.core.gracefulBlockBreak
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
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.core.nbt.set
|
||||||
import ru.dbotthepony.mc.otm.matter.MatterManager
|
import ru.dbotthepony.mc.otm.matter.MatterManager
|
||||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
|
||||||
import ru.dbotthepony.mc.otm.triggers.BlackHoleTrigger
|
import ru.dbotthepony.mc.otm.triggers.BlackHoleTrigger
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
@ -121,7 +117,7 @@ class BlackHoleBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Mattery
|
|||||||
} else {
|
} else {
|
||||||
level.explode(
|
level.explode(
|
||||||
null,
|
null,
|
||||||
MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.HAWKING_RADIATION)),
|
MDamageTypes.HAWKING_RADIATION,
|
||||||
null,
|
null,
|
||||||
blockPos.x + 0.5,
|
blockPos.x + 0.5,
|
||||||
blockPos.y + 0.5,
|
blockPos.y + 0.5,
|
||||||
@ -240,7 +236,7 @@ class BlackHoleBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Mattery
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (distance < gravitationStrength + 1.0) {
|
if (distance < gravitationStrength + 1.0) {
|
||||||
val source = MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.EVENT_HORIZON))
|
val source = MDamageTypes.EVENT_HORIZON
|
||||||
val damage = (gravitationStrength / distance).toFloat()
|
val damage = (gravitationStrength / distance).toFloat()
|
||||||
|
|
||||||
if (living is Player) {
|
if (living is Player) {
|
||||||
@ -258,7 +254,7 @@ class BlackHoleBlockEntity(p_155229_: BlockPos, p_155230_: BlockState) : Mattery
|
|||||||
setDeltaMovement(item, center, distance)
|
setDeltaMovement(item, center, distance)
|
||||||
|
|
||||||
if (distance < gravitationStrength + 1) {
|
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) {
|
if (item.item.item === MItems.GRAVITATIONAL_DISRUPTOR) {
|
||||||
collapse()
|
collapse()
|
||||||
} else {
|
} else {
|
||||||
|
@ -6,7 +6,6 @@ import net.minecraft.nbt.DoubleTag
|
|||||||
import net.minecraft.nbt.ListTag
|
import net.minecraft.nbt.ListTag
|
||||||
import net.minecraft.nbt.Tag
|
import net.minecraft.nbt.Tag
|
||||||
import net.minecraft.server.level.ServerLevel
|
import net.minecraft.server.level.ServerLevel
|
||||||
import net.minecraft.util.datafix.DataFixTypes
|
|
||||||
import net.minecraft.world.level.BlockGetter
|
import net.minecraft.world.level.BlockGetter
|
||||||
import net.minecraft.world.level.Explosion
|
import net.minecraft.world.level.Explosion
|
||||||
import net.minecraft.world.level.ExplosionDamageCalculator
|
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.math.up
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
import ru.dbotthepony.mc.otm.core.nbt.set
|
||||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
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 java.util.*
|
||||||
import kotlin.collections.ArrayList
|
import kotlin.collections.ArrayList
|
||||||
import kotlin.collections.HashMap
|
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) {
|
fun explode(level: Level) {
|
||||||
level.explode(
|
level.explode(
|
||||||
null,
|
null,
|
||||||
MatteryDamageSource(level.registryAccess().damageType(MDamageTypes.HAWKING_RADIATION)),
|
MDamageTypes.HAWKING_RADIATION,
|
||||||
BlackHoleExplosionDamageCalculator,
|
BlackHoleExplosionDamageCalculator,
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
|
@ -128,7 +128,7 @@ class PoweredFurnaceBlockEntity(
|
|||||||
|
|
||||||
return JobContainer.success(
|
return JobContainer.success(
|
||||||
ItemJob(
|
ItemJob(
|
||||||
recipe.getResultItem(level.registryAccess()).copyWithCount(toProcess),
|
recipe.getResultItem().copyWithCount(toProcess),
|
||||||
recipe.workTime * MachinesConfig.PLATE_PRESS.workTimeMultiplier,
|
recipe.workTime * MachinesConfig.PLATE_PRESS.workTimeMultiplier,
|
||||||
MachinesConfig.PLATE_PRESS.energyConsumption * toProcess,
|
MachinesConfig.PLATE_PRESS.energyConsumption * toProcess,
|
||||||
experience = recipe.experience.sample(level.random) * 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.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MItems
|
import ru.dbotthepony.mc.otm.registry.MItems
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
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.AndroidResearchTrigger
|
||||||
import ru.dbotthepony.mc.otm.triggers.AndroidTravelUnderwater
|
import ru.dbotthepony.mc.otm.triggers.AndroidTravelUnderwater
|
||||||
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidDeathTrigger
|
import ru.dbotthepony.mc.otm.triggers.BecomeAndroidDeathTrigger
|
||||||
@ -532,7 +531,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial
|
|||||||
return JobContainer.noItem()
|
return JobContainer.noItem()
|
||||||
} else {
|
} else {
|
||||||
val actual = recipe.get()
|
val actual = recipe.get()
|
||||||
val item = actual.value.assemble(input, level.registryAccess())
|
val item = actual.value.assemble(input)
|
||||||
input[0].shrink(1)
|
input[0].shrink(1)
|
||||||
input.setChanged(0)
|
input.setChanged(0)
|
||||||
return JobContainer.success(ItemJob(item, actual.value.cookingTime.toDouble(), ExopackConfig.FURNACE_POWER_CONSUMPTION, actual.value.experience))
|
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()
|
becomeAndroid()
|
||||||
|
|
||||||
if (!ply.abilities.invulnerable)
|
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()
|
becomeHumane()
|
||||||
|
|
||||||
if (!ply.abilities.invulnerable)
|
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 (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
|
nextDischargeHurt = 20
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -107,13 +107,14 @@ class MGUIGraphics(val pose: PoseStack) {
|
|||||||
RenderSystem.setShader { GameRenderer.getPositionColorShader() }
|
RenderSystem.setShader { GameRenderer.getPositionColorShader() }
|
||||||
bufferbuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR)
|
bufferbuilder.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_COLOR)
|
||||||
val matrix4f = pose.last().pose()
|
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)
|
||||||
|
|
||||||
TooltipRenderUtil.renderTooltipBackground(GuiComponent::fillGradient, matrix4f, bufferbuilder, x, y, i, j, 400, colorEvent.backgroundStart, colorEvent.backgroundEnd, colorEvent.borderStart, colorEvent.borderEnd)
|
|
||||||
RenderSystem.enableDepthTest()
|
RenderSystem.enableDepthTest()
|
||||||
|
RenderSystem.disableTexture()
|
||||||
RenderSystem.enableBlend()
|
RenderSystem.enableBlend()
|
||||||
RenderSystem.defaultBlendFunc()
|
RenderSystem.defaultBlendFunc()
|
||||||
BufferUploader.drawWithShader(bufferbuilder.end())
|
BufferUploader.drawWithShader(bufferbuilder.end())
|
||||||
|
RenderSystem.disableBlend()
|
||||||
|
RenderSystem.enableTexture()
|
||||||
|
|
||||||
pose.translate(0.0f, 0.0f, 400.0f)
|
pose.translate(0.0f, 0.0f, 400.0f)
|
||||||
var yCurrent = y
|
var yCurrent = y
|
||||||
@ -152,7 +153,7 @@ class MGUIGraphics(val pose: PoseStack) {
|
|||||||
scale: Float = 1f,
|
scale: Float = 1f,
|
||||||
color: RGBAColor = RGBAColor.WHITE,
|
color: RGBAColor = RGBAColor.WHITE,
|
||||||
drawShadow: Boolean = false,
|
drawShadow: Boolean = false,
|
||||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
displayMode: Boolean = false,
|
||||||
packedLightCoords: Int = 15728880,
|
packedLightCoords: Int = 15728880,
|
||||||
effectColor: Int = 0,
|
effectColor: Int = 0,
|
||||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||||
@ -202,7 +203,7 @@ class MGUIGraphics(val pose: PoseStack) {
|
|||||||
scale: Float = 1f,
|
scale: Float = 1f,
|
||||||
color: RGBAColor = RGBAColor.WHITE,
|
color: RGBAColor = RGBAColor.WHITE,
|
||||||
drawShadow: Boolean = false,
|
drawShadow: Boolean = false,
|
||||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
displayMode: Boolean = false,
|
||||||
packedLightCoords: Int = 15728880,
|
packedLightCoords: Int = 15728880,
|
||||||
effectColor: Int = 0,
|
effectColor: Int = 0,
|
||||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||||
@ -252,7 +253,7 @@ class MGUIGraphics(val pose: PoseStack) {
|
|||||||
scale: Float = 1f,
|
scale: Float = 1f,
|
||||||
color: RGBAColor = RGBAColor.WHITE,
|
color: RGBAColor = RGBAColor.WHITE,
|
||||||
drawShadow: Boolean = false,
|
drawShadow: Boolean = false,
|
||||||
displayMode: Font.DisplayMode = Font.DisplayMode.NORMAL,
|
displayMode: Boolean = false,
|
||||||
packedLightCoords: Int = 15728880,
|
packedLightCoords: Int = 15728880,
|
||||||
effectColor: Int = 0,
|
effectColor: Int = 0,
|
||||||
shadowColor: RGBAColor = RGBAColor.BLACK,
|
shadowColor: RGBAColor = RGBAColor.BLACK,
|
||||||
|
@ -34,11 +34,11 @@ open class EditBoxPanel<out S : Screen>(
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun configureNew(widget: EditBox, recreation: Boolean) {
|
override fun configureNew(widget: EditBox, recreation: Boolean) {
|
||||||
widget.isFocused = isFocusedThis
|
widget.changeFocus(isFocusedThis)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onFocusChanged() {
|
override fun onFocusChanged() {
|
||||||
widget?.isFocused = isFocusedThis
|
widget?.changeFocus(isFocusedThis)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun mouseClickedInner(x: Double, y: Double, button: Int): Boolean {
|
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 {
|
override fun keyPressedInternal(key: Int, scancode: Int, mods: Int): Boolean {
|
||||||
if (key == InputConstants.KEY_ESCAPE && widget?.isActive == true) {
|
if (key == InputConstants.KEY_ESCAPE && widget?.isActive == true) {
|
||||||
widget?.isFocused = false
|
widget?.changeFocus(false)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ abstract class AbstractSlotPanel<out S : MatteryScreen<*>> @JvmOverloads constru
|
|||||||
RenderSystem.setShader(GameRenderer::getPositionTexShader)
|
RenderSystem.setShader(GameRenderer::getPositionTexShader)
|
||||||
|
|
||||||
if (!itemstack.isEmpty) {
|
if (!itemstack.isEmpty) {
|
||||||
screen.renderItemStack(graphics, itemstack, countOverride)
|
screen.renderItemStack(absoluteX + 1, absoluteY + 1, itemstack, countOverride)
|
||||||
clearDepth(graphics)
|
clearDepth(graphics)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ abstract class UserFilteredSlotPanel<out S : MatteryScreen<*>, out T : Slot>(
|
|||||||
if (slotFilter !== Items.AIR) {
|
if (slotFilter !== Items.AIR) {
|
||||||
val itemStack = ItemStack(slotFilter!!, 1)
|
val itemStack = ItemStack(slotFilter!!, 1)
|
||||||
|
|
||||||
screen.renderItemStack(graphics, itemStack, null)
|
screen.renderItemStack(absoluteX + 1, absoluteY + 1, itemStack, null)
|
||||||
clearDepth(graphics)
|
clearDepth(graphics)
|
||||||
|
|
||||||
graphics.renderRect(0f, 0f, width, height, color = SLOT_FILTER_COLOR)
|
graphics.renderRect(0f, 0f, width, height, color = SLOT_FILTER_COLOR)
|
||||||
|
@ -314,7 +314,7 @@ private class AndroidResearchButton(
|
|||||||
val stack = graphics.pose
|
val stack = graphics.pose
|
||||||
stack.pushPose()
|
stack.pushPose()
|
||||||
stack.translate(1f, 1f, 0f)
|
stack.translate(1f, 1f, 0f)
|
||||||
screen.renderItemStack(graphics, itemstack)
|
screen.renderItemStack(absoluteX + 1, absoluteY + 1, itemstack)
|
||||||
stack.popPose()
|
stack.popPose()
|
||||||
|
|
||||||
clearDepth(graphics)
|
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.Planet
|
||||||
import earth.terrarium.ad_astra.common.data.PlanetData
|
import earth.terrarium.ad_astra.common.data.PlanetData
|
||||||
import earth.terrarium.ad_astra.common.item.armor.SpaceSuit
|
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.minecraft.world.entity.player.Player
|
||||||
import net.minecraftforge.event.entity.living.LivingHurtEvent
|
import net.minecraftforge.event.entity.living.LivingHurtEvent
|
||||||
import net.minecraftforge.fml.ModList
|
import net.minecraftforge.fml.ModList
|
||||||
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.config.ServerCompatConfig
|
import ru.dbotthepony.mc.otm.config.ServerCompatConfig
|
||||||
import ru.dbotthepony.mc.otm.core.damageType
|
import ru.dbotthepony.mc.otm.registry.CosmicRaysDamageSource
|
||||||
import ru.dbotthepony.mc.otm.registry.MDamageTypes
|
|
||||||
import ru.dbotthepony.mc.otm.registry.MItems
|
import ru.dbotthepony.mc.otm.registry.MItems
|
||||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
|
||||||
|
|
||||||
val isAdAstraLoaded by lazy {
|
val isAdAstraLoaded by lazy {
|
||||||
ModList.get().isLoaded(AdAstra.MOD_ID)
|
ModList.get().isLoaded(AdAstra.MOD_ID)
|
||||||
@ -28,7 +26,7 @@ fun onDamageEvent(event: LivingHurtEvent) {
|
|||||||
if (ServerCompatConfig.AdAstra.ANDROIDS_DO_NOT_NEED_OXYGEN) {
|
if (ServerCompatConfig.AdAstra.ANDROIDS_DO_NOT_NEED_OXYGEN) {
|
||||||
if (ply.matteryPlayer?.isAndroid != true) return
|
if (ply.matteryPlayer?.isAndroid != true) return
|
||||||
|
|
||||||
if (event.source.`is`(ModDamageSources.OXYGEN)) {
|
if (event.source == ModDamageSource.OXYGEN) {
|
||||||
event.amount = 0f
|
event.amount = 0f
|
||||||
event.isCanceled = true
|
event.isCanceled = true
|
||||||
}
|
}
|
||||||
@ -52,7 +50,7 @@ fun onMatteryTick(event: MatteryPlayerCapability.PostTick) {
|
|||||||
val yesTritanium = yesTritanium0 + yesTritanium1
|
val yesTritanium = yesTritanium0 + yesTritanium1
|
||||||
|
|
||||||
if (rand.nextDouble() <= (noSpacesuits - yesTritanium) * ServerCompatConfig.AdAstra.ANDROID_COSMIC_RAYS_CHANCE) {
|
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
|
// 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 TextComponent(value: String): MutableComponent = MutableComponent.create(LiteralContents(value))
|
||||||
|
|
||||||
fun <T> IForgeRegistry<T>.getKeyNullable(value: T): ResourceLocation? {
|
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.EntityHitResult
|
||||||
import net.minecraft.world.phys.HitResult
|
import net.minecraft.world.phys.HitResult
|
||||||
import net.minecraftforge.event.ForgeEventFactory
|
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.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MEntityTypes
|
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) {
|
class PlasmaProjectile(level: Level) : Projectile(MEntityTypes.PLASMA as EntityType<out Projectile>, level) {
|
||||||
var inflictor: ItemStack? = null
|
var inflictor: ItemStack? = null
|
||||||
@ -38,7 +37,7 @@ class PlasmaProjectile(level: Level) : Projectile(MEntityTypes.PLASMA as EntityT
|
|||||||
super.onHitEntity(p_37259_)
|
super.onHitEntity(p_37259_)
|
||||||
|
|
||||||
if (!level.isClientSide) {
|
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.config.ItemsConfig
|
||||||
import ru.dbotthepony.mc.otm.core.*
|
import ru.dbotthepony.mc.otm.core.*
|
||||||
import ru.dbotthepony.mc.otm.core.math.Decimal
|
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.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
|
||||||
import ru.dbotthepony.mc.otm.runIfClient
|
import ru.dbotthepony.mc.otm.runIfClient
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
@ -171,7 +171,7 @@ class CrudeBatteryItem : BatteryItem(ItemsConfig.Batteries.CRUDE) {
|
|||||||
mattery.androidEnergy.item = copyStack
|
mattery.androidEnergy.item = copyStack
|
||||||
|
|
||||||
val extraDamageMult = level.random.nextFloat()
|
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()
|
val debuffDuration = 100 + (100 * (1f - extraDamageMult)).roundToInt()
|
||||||
player.addEffect(MobEffectInstance(MobEffects.BLINDNESS, debuffDuration), player)
|
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.Container
|
||||||
import net.minecraft.world.InteractionHand
|
import net.minecraft.world.InteractionHand
|
||||||
import net.minecraft.world.InteractionResult
|
import net.minecraft.world.InteractionResult
|
||||||
|
import net.minecraft.world.damagesource.DamageSource
|
||||||
import net.minecraft.world.entity.vehicle.AbstractMinecart
|
import net.minecraft.world.entity.vehicle.AbstractMinecart
|
||||||
import net.minecraft.world.entity.vehicle.MinecartChest
|
import net.minecraft.world.entity.vehicle.MinecartChest
|
||||||
import net.minecraft.world.item.*
|
import net.minecraft.world.item.*
|
||||||
@ -155,7 +156,7 @@ class ChestUpgraderItem : Item(Properties().stacksTo(1)) {
|
|||||||
}
|
}
|
||||||
cart.clearContent()
|
cart.clearContent()
|
||||||
|
|
||||||
(cart as AbstractMinecart).destroy(cart.damageSources().generic())
|
(cart as AbstractMinecart).destroy(DamageSource.GENERIC)
|
||||||
level.addFreshEntity(newCart)
|
level.addFreshEntity(newCart)
|
||||||
level.gameEvent(GameEvent.ENTITY_PLACE, event.pos, GameEvent.Context.of(event.entity, level.getBlockState(event.pos.below())))
|
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.onceServer
|
||||||
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
import ru.dbotthepony.mc.otm.capability.matteryPlayer
|
||||||
import ru.dbotthepony.mc.otm.client.minecraft
|
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.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
|
||||||
import ru.dbotthepony.mc.otm.runIfClient
|
import ru.dbotthepony.mc.otm.runIfClient
|
||||||
|
|
||||||
class ExopackProbeItem : Item(Properties().stacksTo(1).rarity(Rarity.EPIC)) {
|
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.granted1").withStyle(ChatFormatting.GRAY), false)
|
||||||
player.displayClientMessage(TranslatableComponent("otm.exopack.granted2").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) {
|
for (i in 3 .. 7) {
|
||||||
onceServer((i - 1) * 100) {
|
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.*
|
||||||
import ru.dbotthepony.mc.otm.core.math.*
|
import ru.dbotthepony.mc.otm.core.math.*
|
||||||
import ru.dbotthepony.mc.otm.core.nbt.set
|
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.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
|
||||||
import ru.dbotthepony.mc.otm.triggers.NailedEntityTrigger
|
import ru.dbotthepony.mc.otm.triggers.NailedEntityTrigger
|
||||||
import java.util.function.Predicate
|
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) {
|
if (player.random.nextDouble() <= ToolsConfig.ExplosiveHammer.FLY_OFF_DAMAGE_CHANCE) {
|
||||||
player.invulnerableTime = 0
|
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)
|
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)
|
itemStack.shrink(itemStack.count)
|
||||||
} else if (player.random.nextDouble() <= ToolsConfig.ExplosiveHammer.SELF_HARM_CHANCE) {
|
} else if (player.random.nextDouble() <= ToolsConfig.ExplosiveHammer.SELF_HARM_CHANCE) {
|
||||||
player.invulnerableTime = 0
|
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)
|
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 rayBox = aabb.move(rayPos)
|
||||||
val entities = level.getEntities(null, rayBox) { it is LivingEntity && it.isAlive && !it.isSpectator && hitEntities.add(it) } as List<LivingEntity>
|
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) {
|
for (it in entities) {
|
||||||
val damage = canTravel * ToolsConfig.ExplosiveHammer.TRAVEL_DAMAGE_MULT
|
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) {
|
if (attacker.random.nextDouble() <= ToolsConfig.ExplosiveHammer.FLY_OFF_DAMAGE_CHANCE) {
|
||||||
attacker.invulnerableTime = 0
|
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)
|
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) {
|
} else if (attacker.random.nextDouble() <= ToolsConfig.ExplosiveHammer.SELF_HARM_CHANCE) {
|
||||||
attacker.invulnerableTime = 0
|
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)
|
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.core.BlockPos
|
||||||
import net.minecraft.nbt.CompoundTag
|
import net.minecraft.nbt.CompoundTag
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
import net.minecraft.tags.BlockTags
|
|
||||||
import net.minecraft.world.entity.EquipmentSlot
|
import net.minecraft.world.entity.EquipmentSlot
|
||||||
import net.minecraft.world.entity.LivingEntity
|
import net.minecraft.world.entity.LivingEntity
|
||||||
import net.minecraft.world.entity.ai.attributes.Attribute
|
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.Decimal
|
||||||
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
import ru.dbotthepony.mc.otm.core.math.DecimalConfigValue
|
||||||
import ru.dbotthepony.mc.otm.core.TranslatableComponent
|
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.math.defineDecimal
|
||||||
import ru.dbotthepony.mc.otm.core.ifPresentK
|
import ru.dbotthepony.mc.otm.core.ifPresentK
|
||||||
import ru.dbotthepony.mc.otm.core.math.nextVariance
|
import ru.dbotthepony.mc.otm.core.math.nextVariance
|
||||||
import ru.dbotthepony.mc.otm.core.orNull
|
import ru.dbotthepony.mc.otm.core.orNull
|
||||||
import ru.dbotthepony.mc.otm.core.util.WriteOnce
|
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.MDamageTypes
|
||||||
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
import ru.dbotthepony.mc.otm.registry.MatteryDamageSource
|
||||||
|
|
||||||
@ -108,7 +107,7 @@ class EnergySwordItem : Item(Properties().stacksTo(1).rarity(Rarity.RARE)), Vani
|
|||||||
victim.matteryPlayer?.let {
|
victim.matteryPlayer?.let {
|
||||||
if (it.isAndroid) {
|
if (it.isAndroid) {
|
||||||
victim.invulnerableTime = 0
|
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 {
|
victim.matteryPlayer?.let {
|
||||||
if (it.isAndroid && it.androidEnergy.extractEnergyExact(ENERGY_ZAP, false)) {
|
if (it.isAndroid && it.androidEnergy.extractEnergyExact(ENERGY_ZAP, false)) {
|
||||||
it.androidEnergy.extractEnergy(attacker.level.random.nextVariance(ENERGY_ZAP_VARIANCE), 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.Ingredient
|
||||||
import net.minecraft.world.item.crafting.Recipe
|
import net.minecraft.world.item.crafting.Recipe
|
||||||
import net.minecraft.world.item.crafting.RecipeType
|
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.minecraft.world.level.ItemLike
|
||||||
import net.minecraftforge.common.capabilities.ForgeCapabilities
|
import net.minecraftforge.common.capabilities.ForgeCapabilities
|
||||||
import net.minecraftforge.common.crafting.IShapedRecipe
|
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 = 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 {
|
try {
|
||||||
ResolvedRecipe(
|
ResolvedRecipe(
|
||||||
it.value.ingredients.stream()
|
it.value.ingredients.stream()
|
||||||
.filter { !it.isActuallyEmpty }
|
.filter { !it.isActuallyEmpty }
|
||||||
.map { it.items.stream().filter { it.isNotEmpty }.map(::RecipeEntry) },
|
.map { it.items.stream().filter { it.isNotEmpty }.map(::RecipeEntry) },
|
||||||
ImmutableStack(it.value.getResultItem(server.registryAccess())),
|
ImmutableStack(it.value.getResultItem()),
|
||||||
isCritical = isCritical,
|
isCritical = isCritical,
|
||||||
name = it.id,
|
name = it.id,
|
||||||
allowBacktrack = allowBacktrack
|
allowBacktrack = allowBacktrack
|
||||||
@ -500,7 +500,7 @@ object MatterManager {
|
|||||||
stream.map {
|
stream.map {
|
||||||
try {
|
try {
|
||||||
// avoid reality snap when recipe has no output
|
// avoid reality snap when recipe has no output
|
||||||
val resultItem = it.value.getResultItem(server.registryAccess())
|
val resultItem = it.value.getResultItem()
|
||||||
|
|
||||||
if (resultItem.isEmpty) {
|
if (resultItem.isEmpty) {
|
||||||
null
|
null
|
||||||
@ -549,7 +549,7 @@ object MatterManager {
|
|||||||
for (item in it.value.ingredients[c].items) {
|
for (item in it.value.ingredients[c].items) {
|
||||||
container[c] = item
|
container[c] = item
|
||||||
|
|
||||||
if (!it.value.assemble(container, server.registryAccess()).isEmpty) {
|
if (!it.value.assemble(container).isEmpty) {
|
||||||
val residue = it.value.getRemainingItems(container)
|
val residue = it.value.getRemainingItems(container)
|
||||||
|
|
||||||
val thisResidue = residue[c]
|
val thisResidue = residue[c]
|
||||||
@ -604,13 +604,13 @@ object MatterManager {
|
|||||||
val allowBacktrack = data["allow_backtrack"]?.asBoolean ?: true
|
val allowBacktrack = data["allow_backtrack"]?.asBoolean ?: true
|
||||||
|
|
||||||
var stream = server.recipeManager.byType(findRecipeType).values.stream().filter { !it.value.isIncomplete }
|
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 {
|
try {
|
||||||
val ingredients = ArrayList<Ingredient>()
|
val ingredients = ArrayList<Ingredient>()
|
||||||
|
|
||||||
val recipe = it.value as SmithingTransformRecipe
|
val recipe = it.value as UpgradeRecipe
|
||||||
|
|
||||||
ingredients.add(recipe.base)
|
ingredients.add(recipe.base)
|
||||||
ingredients.add(recipe.addition)
|
ingredients.add(recipe.addition)
|
||||||
@ -619,7 +619,7 @@ object MatterManager {
|
|||||||
ingredients.stream()
|
ingredients.stream()
|
||||||
.filter { !it.isActuallyEmpty }
|
.filter { !it.isActuallyEmpty }
|
||||||
.map { it.items.stream().filter { it.isNotEmpty }.map(::RecipeEntry) },
|
.map { it.items.stream().filter { it.isNotEmpty }.map(::RecipeEntry) },
|
||||||
ImmutableStack(it.value.getResultItem(server.registryAccess())),
|
ImmutableStack(it.value.resultItem),
|
||||||
isCritical = isCritical,
|
isCritical = isCritical,
|
||||||
name = it.id,
|
name = it.id,
|
||||||
allowBacktrack = allowBacktrack
|
allowBacktrack = allowBacktrack
|
||||||
|
@ -68,11 +68,11 @@ abstract class MatteryCookingRecipe(
|
|||||||
|
|
||||||
override fun isIncomplete(): Boolean = input.isActuallyEmpty || output.isActuallyEmpty
|
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 canCraftInDimensions(width: Int, height: Int): Boolean = true
|
||||||
|
|
||||||
override fun getResultItem(registry: RegistryAccess): ItemStack = outputStack
|
override fun getResultItem(): ItemStack = outputStack
|
||||||
|
|
||||||
abstract fun toFinished(): FinishedRecipe
|
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.ChatFormatting
|
||||||
import net.minecraft.core.BlockPos
|
import net.minecraft.core.BlockPos
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
|
import net.minecraft.sounds.SoundEvents
|
||||||
import net.minecraft.util.valueproviders.UniformInt
|
import net.minecraft.util.valueproviders.UniformInt
|
||||||
import net.minecraft.world.entity.Entity
|
import net.minecraft.world.entity.Entity
|
||||||
import net.minecraft.world.entity.EntityType
|
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.WallBlock
|
||||||
import net.minecraft.world.level.block.state.BlockBehaviour
|
import net.minecraft.world.level.block.state.BlockBehaviour
|
||||||
import net.minecraft.world.level.block.state.BlockState
|
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.Material
|
||||||
import net.minecraft.world.level.material.MaterialColor
|
import net.minecraft.world.level.material.MaterialColor
|
||||||
import net.minecraft.world.level.material.PushReaction
|
|
||||||
import net.minecraftforge.eventbus.api.IEventBus
|
import net.minecraftforge.eventbus.api.IEventBus
|
||||||
import net.minecraftforge.registries.DeferredRegister
|
import net.minecraftforge.registries.DeferredRegister
|
||||||
import net.minecraftforge.registries.ForgeRegistries
|
import net.minecraftforge.registries.ForgeRegistries
|
||||||
@ -229,7 +227,7 @@ object MBlocks {
|
|||||||
.noOcclusion()
|
.noOcclusion()
|
||||||
.destroyTime(3f)
|
.destroyTime(3f)
|
||||||
.requiresCorrectToolForDrops(),
|
.requiresCorrectToolForDrops(),
|
||||||
BlockSetType.IRON
|
SoundEvents.IRON_DOOR_CLOSE, SoundEvents.IRON_DOOR_OPEN
|
||||||
) {
|
) {
|
||||||
override fun appendHoverText(
|
override fun appendHoverText(
|
||||||
p_49816_: ItemStack,
|
p_49816_: ItemStack,
|
||||||
@ -264,7 +262,7 @@ object MBlocks {
|
|||||||
.noOcclusion().destroyTime(3f)
|
.noOcclusion().destroyTime(3f)
|
||||||
.requiresCorrectToolForDrops()
|
.requiresCorrectToolForDrops()
|
||||||
.isValidSpawn { _: BlockState, _: BlockGetter, _: BlockPos, _: EntityType<*>? -> false },
|
.isValidSpawn { _: BlockState, _: BlockGetter, _: BlockPos, _: EntityType<*>? -> false },
|
||||||
BlockSetType.IRON
|
SoundEvents.IRON_DOOR_CLOSE, SoundEvents.IRON_DOOR_OPEN
|
||||||
) {
|
) {
|
||||||
override fun appendHoverText(
|
override fun appendHoverText(
|
||||||
p_49816_: ItemStack,
|
p_49816_: ItemStack,
|
||||||
|
@ -3,16 +3,16 @@ package ru.dbotthepony.mc.otm.registry
|
|||||||
import net.minecraft.world.damagesource.DamageSource
|
import net.minecraft.world.damagesource.DamageSource
|
||||||
|
|
||||||
object MDamageTypes {
|
object MDamageTypes {
|
||||||
val BECOME_ANDROID = DamageSource("become_android")
|
val BECOME_ANDROID = ImmutableDamageSource(DamageSource("become_android").bypassArmor().bypassInvul().bypassMagic().bypassEnchantments())
|
||||||
val BECOME_HUMANE = DamageSource("become_humane")
|
val BECOME_HUMANE = ImmutableDamageSource(DamageSource("become_humane").bypassArmor().bypassInvul().bypassMagic().bypassEnchantments())
|
||||||
val EVENT_HORIZON = DamageSource("event_horizon")
|
val EVENT_HORIZON = ImmutableDamageSource(DamageSource("event_horizon").bypassArmor())
|
||||||
val HAWKING_RADIATION = DamageSource("hawking_radiation")
|
val HAWKING_RADIATION = ImmutableDamageSource(DamageSource("hawking_radiation").bypassArmor())
|
||||||
val EXOPACK_PROBE = DamageSource("exopack_probe")
|
val EXOPACK_PROBE = ImmutableDamageSource(DamageSource("exopack_probe").bypassArmor().bypassMagic().bypassEnchantments())
|
||||||
val EMP = DamageSource("emp")
|
val EMP = ImmutableDamageSource(DamageSource("emp").bypassArmor())
|
||||||
val SHOCKWAVE = DamageSource("shockwave")
|
val SHOCKWAVE = ImmutableDamageSource(DamageSource("shockwave").bypassArmor())
|
||||||
val PLASMA = DamageSource("plasma")
|
val PLASMA = ImmutableDamageSource(DamageSource("plasma"))
|
||||||
val COSMIC_RAYS = DamageSource("cosmic_rays")
|
val COSMIC_RAYS = ImmutableDamageSource(DamageSource("cosmic_rays").bypassArmor().bypassMagic().bypassEnchantments())
|
||||||
val EXPLOSIVE_HAMMER = DamageSource("explosive_hammer")
|
val EXPLOSIVE_HAMMER = ImmutableDamageSource(DamageSource("explosive_hammer"))
|
||||||
val HAMMER_NAIL = DamageSource("hammer_nail")
|
val HAMMER_NAIL = ImmutableDamageSource(DamageSource("hammer_nail"))
|
||||||
val ANDROID_DISCHARGE = DamageSource("android_discharge")
|
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)))
|
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) {
|
private fun registerEvent(event: RegisterEvent) {
|
||||||
// mojang moment
|
// 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_24905_ # sourceEntity
|
||||||
public net.minecraft.advancements.critereon.DamagePredicate f_24904_ # takenDamage
|
public net.minecraft.advancements.critereon.DamagePredicate f_24904_ # takenDamage
|
||||||
public net.minecraft.advancements.critereon.DamagePredicate f_24907_ # type
|
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