diff options
author | NotAPenguin <michiel.vandeginste@gmail.com> | 2024-09-02 23:17:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-02 23:17:17 +0200 |
commit | 1b820de08a05070909a267e17f033fcf58ac8710 (patch) | |
tree | 02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/gregtech/api/util/GT_SpawnEventHandler.java | |
parent | afd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff) | |
download | GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2 GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip |
The Great Renaming (#3014)
* move kekztech to a single root dir
* move detrav to a single root dir
* move gtnh-lanthanides to a single root dir
* move tectech and delete some gross reflection in gt++
* remove more reflection inside gt5u
* delete more reflection in gt++
* fix imports
* move bartworks and bwcrossmod
* fix proxies
* move galactigreg and ggfab
* move gtneioreplugin
* try to fix gt++ bee loader
* apply the rename rules to BW
* apply rename rules to bwcrossmod
* apply rename rules to detrav scanner mod
* apply rename rules to galacticgreg
* apply rename rules to ggfab
* apply rename rules to goodgenerator
* apply rename rules to gtnh-lanthanides
* apply rename rules to gt++
* apply rename rules to kekztech
* apply rename rules to kubatech
* apply rename rules to tectech
* apply rename rules to gt
apply the rename rules to gt
* fix tt import
* fix mui hopefully
* fix coremod except intergalactic
* rename assline recipe class
* fix a class name i stumbled on
* rename StructureUtility to GTStructureUtility to prevent conflict with structurelib
* temporary rename of GTTooltipDataCache to old name
* fix gt client/server proxy names
Diffstat (limited to 'src/main/java/gregtech/api/util/GT_SpawnEventHandler.java')
-rw-r--r-- | src/main/java/gregtech/api/util/GT_SpawnEventHandler.java | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/src/main/java/gregtech/api/util/GT_SpawnEventHandler.java b/src/main/java/gregtech/api/util/GT_SpawnEventHandler.java deleted file mode 100644 index ebdba1144b..0000000000 --- a/src/main/java/gregtech/api/util/GT_SpawnEventHandler.java +++ /dev/null @@ -1,81 +0,0 @@ -package gregtech.api.util; - -import java.util.List; -import java.util.concurrent.CopyOnWriteArrayList; - -import net.minecraft.entity.EnumCreatureType; -import net.minecraft.entity.monster.EntitySlime; -import net.minecraft.tileentity.TileEntity; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.event.entity.living.LivingSpawnEvent.CheckSpawn; - -import cpw.mods.fml.common.eventhandler.Event; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import gregtech.api.enums.GT_Values; -import gregtech.api.metatileentity.BaseMetaTileEntity; -import gregtech.common.tileentities.machines.basic.GT_MetaTileEntity_MonsterRepellent; - -public class GT_SpawnEventHandler { - - public static volatile List<int[]> mobReps = new CopyOnWriteArrayList<>(); - // Future Optimiztation ideas, if this isn't sufficient - // 1: Keep a weakref list of mob repellents so we already have the tile - // 2: Have the tick method update a HashMap of (int[], range) so we don't have to load the tile at all - - public GT_SpawnEventHandler() { - MinecraftForge.EVENT_BUS.register(this); - } - - // Range of a powered repellent - public static int getPoweredRepellentRange(int aTier) { - return 16 + (48 * aTier); - } - - // Range of an unpowered repellent - public static int getUnpoweredRepellentRange(int aTier) { - return 4 + (12 * aTier); - } - - @SubscribeEvent - public void denyMobSpawn(CheckSpawn event) { - if (event.getResult() == Event.Result.DENY) return; - - if (event.entityLiving instanceof EntitySlime slime && !slime.hasCustomNameTag() - && event.getResult() == Event.Result.ALLOW) { - event.setResult(Event.Result.DEFAULT); - } - - if (event.getResult() == Event.Result.ALLOW) { - return; - } - - if (event.entityLiving.isCreatureType(EnumCreatureType.monster, false)) { - final double maxRangeCheck = Math.pow(getPoweredRepellentRange(GT_Values.V.length - 1), 2); - for (int[] rep : mobReps) { - if (rep[3] == event.entity.worldObj.provider.dimensionId) { - // If the chunk isn't loaded, we ignore this Repellent - if (!event.entity.worldObj.blockExists(rep[0], rep[1], rep[2])) continue; - final double dx = rep[0] + 0.5F - event.entity.posX; - final double dy = rep[1] + 0.5F - event.entity.posY; - final double dz = rep[2] + 0.5F - event.entity.posZ; - - final double check = (dx * dx + dz * dz + dy * dy); - // Fail early if outside of max range - if (check > maxRangeCheck) continue; - - final TileEntity tTile = event.entity.worldObj.getTileEntity(rep[0], rep[1], rep[2]); - if (tTile instanceof BaseMetaTileEntity metaTile - && metaTile.getMetaTileEntity() instanceof GT_MetaTileEntity_MonsterRepellent repellent - && check <= Math.pow(repellent.mRange, 2)) { - if (event.entityLiving instanceof EntitySlime slime) { - slime.setCustomNameTag("DoNotSpawnSlimes"); - } - event.setResult(Event.Result.DENY); - // We're already DENYing it. No reason to keep checking - return; - } - } - } - } - } -} |