From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: peaches94 Date: Sun, 10 Jul 2022 15:44:38 -0500 Subject: [PATCH] Reduce sensor work Original code by Bloom-host, licensed under GNU General Public License v3.0 You can find the original code on https://github.com/Bloom-host/Petal this patch is focused around the sensors used for ai delete the line of sight cache less often and use a faster nearby comparison diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java index f23829690d2be20af50256e4d985e3e342415d54..995fc228430ac6c8af8654aa1137c7f66668f622 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java @@ -1026,20 +1026,22 @@ public abstract class LivingEntity extends Entity { } if (entity != null) { - ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); + // petal start - only do itemstack lookup if we need to + //ItemStack itemstack = this.getItemBySlot(EquipmentSlot.HEAD); EntityType entitytypes = entity.getType(); // Purpur start - if (entitytypes == EntityType.SKELETON && itemstack.is(Items.SKELETON_SKULL)) { + if (entitytypes == EntityType.SKELETON && this.getItemBySlot(EquipmentSlot.HEAD).is(Items.SKELETON_SKULL)) { d0 *= entity.level.purpurConfig.skeletonHeadVisibilityPercent; } - else if (entitytypes == EntityType.ZOMBIE && itemstack.is(Items.ZOMBIE_HEAD)) { + else if (entitytypes == EntityType.ZOMBIE && this.getItemBySlot(EquipmentSlot.HEAD).is(Items.ZOMBIE_HEAD)) { d0 *= entity.level.purpurConfig.zombieHeadVisibilityPercent; } - else if (entitytypes == EntityType.CREEPER && itemstack.is(Items.CREEPER_HEAD)) { + else if (entitytypes == EntityType.CREEPER && this.getItemBySlot(EquipmentSlot.HEAD).is(Items.CREEPER_HEAD)) { d0 *= entity.level.purpurConfig.creeperHeadVisibilityPercent; } // Purpur end + // petal end // Purpur start if (entity instanceof LivingEntity entityliving) { diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java index bc18c166ca776b0ef6e816eb034e410c391258b6..e68533ff29c882e955c150130e3260584cc250b0 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -884,10 +884,10 @@ public abstract class Mob extends LivingEntity { return; } // Paper end + int i = this.level.getServer().getTickCount() + this.getId(); // petal - move up //this.level.getProfiler().push("sensing"); // Purpur - this.sensing.tick(); + if (i % 10 == 0) this.sensing.tick(); // petal - only refresh line of sight cache every half second //this.level.getProfiler().pop(); // Purpur - int i = this.level.getServer().getTickCount() + this.getId(); if (i % 2 != 0 && this.tickCount > 1) { //this.level.getProfiler().push("targetSelector"); // Purpur