aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/util/GT_SpawnEventHandler.java
diff options
context:
space:
mode:
authorNotAPenguin <michiel.vandeginste@gmail.com>2024-09-02 23:17:17 +0200
committerGitHub <noreply@github.com>2024-09-02 23:17:17 +0200
commit1b820de08a05070909a267e17f033fcf58ac8710 (patch)
tree02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/gregtech/api/util/GT_SpawnEventHandler.java
parentafd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff)
downloadGT5-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.java81
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;
- }
- }
- }
- }
- }
-}