diff --git a/gradle.properties b/gradle.properties index 26f8720c1..d287adf01 100644 --- a/gradle.properties +++ b/gradle.properties @@ -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 diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DamageTypes.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DamageTypes.kt deleted file mode 100644 index 525fbf309..000000000 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DamageTypes.kt +++ /dev/null @@ -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) { - 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) { - 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) -} diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt index 29d749ca5..04d2f80eb 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/DataGen.kt @@ -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) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidFeatureType.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidFeatureType.kt index 4a3da406a..1203326ed 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidFeatureType.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/AndroidFeatureType.kt @@ -30,7 +30,7 @@ open class AndroidFeatureType { } open val displayContents: ComponentContents by lazy { - TranslatableContents(displayId, null, arrayOf()) + TranslatableContents(displayId) } open val displayName: Component by lazy { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ShockwaveFeature.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ShockwaveFeature.kt index a95c85975..a6c8437a2 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ShockwaveFeature.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/android/feature/ShockwaveFeature.kt @@ -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) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumPressurePlate.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumPressurePlate.kt index 75fbde496..2fecb3d4c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumPressurePlate.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/decorative/TritaniumPressurePlate.kt @@ -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 diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt index a1e304372..b20cbcc60 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/BlackHoleBlockEntity.kt @@ -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 { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/Explosions.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/Explosions.kt index 945de031e..3f3b8ba2b 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/Explosions.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/blackhole/Explosions.kt @@ -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, diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/PoweredFurnaceBlockEntity.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/PoweredFurnaceBlockEntity.kt index f24900862..f88b67c25 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/PoweredFurnaceBlockEntity.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/block/entity/tech/PoweredFurnaceBlockEntity.kt @@ -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)) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt index 120b04377..ba7ca02f3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt @@ -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 } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/MGUIGraphics.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/MGUIGraphics.kt index d92ec4d20..e0646fce8 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/MGUIGraphics.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/render/MGUIGraphics.kt @@ -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, diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/EditBoxPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/EditBoxPanel.kt index 5ddbc95f2..c2f003189 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/EditBoxPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/input/EditBoxPanel.kt @@ -34,11 +34,11 @@ open class EditBoxPanel( } 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( 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 } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/slot/AbstractSlotPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/slot/AbstractSlotPanel.kt index 390f880b2..10635cdcc 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/slot/AbstractSlotPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/slot/AbstractSlotPanel.kt @@ -32,7 +32,7 @@ abstract class AbstractSlotPanel> @JvmOverloads constru RenderSystem.setShader(GameRenderer::getPositionTexShader) if (!itemstack.isEmpty) { - screen.renderItemStack(graphics, itemstack, countOverride) + screen.renderItemStack(absoluteX + 1, absoluteY + 1, itemstack, countOverride) clearDepth(graphics) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/slot/UserFilteredSlotPanel.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/slot/UserFilteredSlotPanel.kt index a1a1989f5..820ce2a0a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/slot/UserFilteredSlotPanel.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/panels/slot/UserFilteredSlotPanel.kt @@ -42,7 +42,7 @@ abstract class UserFilteredSlotPanel, 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) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/AndroidStationScreen.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/AndroidStationScreen.kt index 989e501af..97e36e7eb 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/AndroidStationScreen.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/client/screen/tech/AndroidStationScreen.kt @@ -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) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/adastra/AdAstraCompat.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/adastra/AdAstraCompat.kt index b29c3359e..29c3c79fa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/compat/adastra/AdAstraCompat.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/compat/adastra/AdAstraCompat.kt @@ -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) } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/core/UnOverengineering.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/core/UnOverengineering.kt index 2fbe1ff64..83122b2c1 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/core/UnOverengineering.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/core/UnOverengineering.kt @@ -62,7 +62,7 @@ fun Codec.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 IForgeRegistry.getKeyNullable(value: T): ResourceLocation? { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/entity/PlasmaProjectile.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/entity/PlasmaProjectile.kt index 0e3179247..719b67ca5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/entity/PlasmaProjectile.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/entity/PlasmaProjectile.kt @@ -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, 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) } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/BatteryItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/BatteryItem.kt index 4115d724e..bcbeae5b9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/BatteryItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/BatteryItem.kt @@ -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) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/ChestUpgraderItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/ChestUpgraderItem.kt index 9ecf82023..641910205 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/ChestUpgraderItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/ChestUpgraderItem.kt @@ -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()))) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/ExopackProbeItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/ExopackProbeItem.kt index fd4a6c8a4..899549add 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/ExopackProbeItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/exopack/ExopackProbeItem.kt @@ -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) { diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/tool/ExplosiveHammerItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/tool/ExplosiveHammerItem.kt index 667e35616..017f0ae5a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/tool/ExplosiveHammerItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/tool/ExplosiveHammerItem.kt @@ -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 - 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()) } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/EnergySwordItem.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/EnergySwordItem.kt index 9c1cc83f7..177169b3a 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/EnergySwordItem.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/item/weapon/EnergySwordItem.kt @@ -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) } } } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt index 0ebac3639..40480d309 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/matter/MatterManager.kt @@ -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() - 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 diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt index 22aeea670..198701d4c 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/recipe/MatteryCookingRecipe.kt @@ -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 } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt new file mode 100644 index 000000000..84fd8fc17 --- /dev/null +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/DamageSources.kt @@ -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 + } +} diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt index 4fe772498..ef5561e86 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MBlocks.kt @@ -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, diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDamageTypes.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDamageTypes.kt index 65a92be76..680e58bfa 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDamageTypes.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MDamageTypes.kt @@ -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()) } diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt index 931960ee0..211e305d3 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MRegistry.kt @@ -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 diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MatteryDamageSource.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MatteryDamageSource.kt deleted file mode 100644 index 697463316..000000000 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/registry/MatteryDamageSource.kt +++ /dev/null @@ -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, - 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) - } -} diff --git a/src/main/resources/META-INF/accesstransformer.cfg b/src/main/resources/META-INF/accesstransformer.cfg index bea3566fc..cdac62ced 100644 --- a/src/main/resources/META-INF/accesstransformer.cfg +++ b/src/main/resources/META-INF/accesstransformer.cfg @@ -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