diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt index a75c50d42..74b3e4eeb 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/Tags.kt @@ -253,6 +253,10 @@ fun addTags(tagsProvider: TagsProvider) { MBlocks.BLACK_HOLE, ) + tagsProvider.guardedByPiglins.add( + MBlockTags.CARGO_CRATES, + ) + tagsProvider.androidImmuneEffects.add( MobEffects.CONDUIT_POWER, MobEffects.HEAL, diff --git a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt index a09ae7255..636f88fa5 100644 --- a/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt +++ b/src/data/kotlin/ru/dbotthepony/mc/otm/datagen/tags/TagsProvider.kt @@ -182,6 +182,7 @@ class TagsProvider(private val event: GatherDataEvent) { val witherImmune = blocks.Appender(BlockTags.WITHER_IMMUNE) val dragonImmune = blocks.Appender(BlockTags.DRAGON_IMMUNE) + val guardedByPiglins = blocks.Appender(BlockTags.GUARDED_BY_PIGLINS) fun stoneOre(key: String, block: Block): TagsProvider { ore(key, block) diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/entity/MinecartCargoCrate.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/entity/MinecartCargoCrate.kt index 4ef8947d7..8e55da5e9 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/entity/MinecartCargoCrate.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/entity/MinecartCargoCrate.kt @@ -6,7 +6,9 @@ import net.minecraft.network.syncher.EntityDataSerializers import net.minecraft.network.syncher.SynchedEntityData import net.minecraft.sounds.SoundSource import net.minecraft.world.entity.EntityType +import net.minecraft.world.entity.monster.piglin.PiglinAi import net.minecraft.world.entity.player.Inventory +import net.minecraft.world.entity.player.Player import net.minecraft.world.entity.vehicle.AbstractMinecartContainer import net.minecraft.world.inventory.AbstractContainerMenu import net.minecraft.world.item.DyeColor @@ -81,19 +83,20 @@ class MinecartCargoCrate( var interactingPlayers by entityData.delegate(INTERACTING_PLAYERS) - fun onPlayerOpen() { + fun onPlayerOpen(player: Player) { if (isRemoved) return if (interactingPlayers++ == 0) { if (!isRemoved) { level().playSound(null, this, MSoundEvents.CARGO_CRATE_OPEN, SoundSource.BLOCKS, 1f, 0.8f + level().random.nextFloat() * 0.2f) - level().gameEvent(GameEvent.CONTAINER_OPEN, position, GameEvent.Context.of(this)) + this.gameEvent(GameEvent.CONTAINER_OPEN, player) + PiglinAi.angerNearbyPiglins(player, true) } } } - fun onPlayerClose() { + fun onPlayerClose(player: Player) { if (interactingPlayers <= 0) return diff --git a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/MinecartCargoCrateMenu.kt b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/MinecartCargoCrateMenu.kt index 7ce6c9f23..b4aa8d957 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/MinecartCargoCrateMenu.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/menu/decorative/MinecartCargoCrateMenu.kt @@ -27,7 +27,7 @@ class MinecartCargoCrateMenu( init { if (trackedPlayerOpen) { - cart?.onPlayerOpen() + cart?.onPlayerOpen(inventory.player) } addStorageSlot(storageSlots) @@ -38,7 +38,7 @@ class MinecartCargoCrateMenu( super.removed(p_38940_) if (trackedPlayerOpen) { - cart?.onPlayerClose() + cart?.onPlayerClose(inventory.player) } }