From 86347f3373f0b8ca8dcf4e58668853d5d6be133b Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Thu, 15 Sep 2022 22:29:27 +0700 Subject: [PATCH] Prevent phantoms spawn by androids --- .../mc/otm/OverdriveThatMatters.java | 1 + .../otm/capability/MatteryPlayerCapability.kt | 22 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java index be8672397..b96907658 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java +++ b/src/main/java/ru/dbotthepony/mc/otm/OverdriveThatMatters.java @@ -109,6 +109,7 @@ public final class OverdriveThatMatters { EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onPlayerCloneEvent); EVENT_BUS.addListener(EventPriority.LOW, MatteryPlayerCapability.Companion::onPickupEvent); EVENT_BUS.addListener(EventPriority.HIGHEST, MatteryPlayerCapability.Companion::onLivingDrops); + EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::canEntitySpawn); EVENT_BUS.addListener(EventPriority.LOW, MatterDataKt::serverStartData); EVENT_BUS.addListener(EventPriority.NORMAL, MatterRegistryKt::onPlayerJoin); 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 14cddff5a..23a47eae5 100644 --- a/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt +++ b/src/main/kotlin/ru/dbotthepony/mc/otm/capability/MatteryPlayerCapability.kt @@ -14,7 +14,9 @@ import net.minecraft.world.effect.MobEffect import net.minecraft.world.effect.MobEffects import net.minecraft.world.entity.Entity import net.minecraft.world.entity.LivingEntity +import net.minecraft.world.entity.MobSpawnType import net.minecraft.world.entity.item.ItemEntity +import net.minecraft.world.entity.monster.Phantom import net.minecraft.world.entity.player.Player import net.minecraft.world.item.ItemStack import net.minecraft.world.item.enchantment.EnchantmentHelper.hasVanishingCurse @@ -28,9 +30,12 @@ import net.minecraftforge.event.TickEvent import net.minecraftforge.event.TickEvent.PlayerTickEvent import net.minecraftforge.event.entity.living.LivingDeathEvent import net.minecraftforge.event.entity.living.LivingDropsEvent +import net.minecraftforge.event.entity.living.LivingEvent import net.minecraftforge.event.entity.living.LivingHurtEvent +import net.minecraftforge.event.entity.living.LivingSpawnEvent import net.minecraftforge.event.entity.player.EntityItemPickupEvent import net.minecraftforge.event.entity.player.PlayerEvent +import net.minecraftforge.eventbus.api.Event import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent import org.apache.commons.lang3.mutable.MutableInt import org.apache.logging.log4j.LogManager @@ -809,6 +814,23 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, INBTSerial event.item.item.count = leftover.count } + fun canEntitySpawn(event: LivingSpawnEvent.CheckSpawn) { + if (event.spawnReason == MobSpawnType.NATURAL && event.entity is Phantom) { + for (ply in event.entity.level.players()) { + if (ply.matteryPlayer?.isAndroid == true) { + if ( + ply.position.y in event.y - 36.0 .. event.y - 19.0 && + ply.position.x in event.x - 12.0 .. event.x + 12.0 && + ply.position.z in event.z - 12.0 .. event.z + 12.0 + ) { + event.result = Event.Result.DENY + return + } + } + } + } + } + val DEFAULT_MAX_ANDROID_POWER = ImpreciseFraction(60000) } }