Dome, Panel Settings

This commit is contained in:
Kam committed 2026-02-20 18:16:52 -05:00
1 parent 14545818bd
commit f620e820e8
16 files changed
+752 -146

No files matched your search

@@ -30,6 +30,7 @@ import net.minecraft.util.MathHelper;
import net.minecraft.util.StatCollector;
import net.minecraft.village.MerchantRecipeList;
import net.minecraftforge.event.entity.EntityJoinWorldEvent;
import kamkeel.npcs.entity.EntityEnergyBarrier;
import net.minecraftforge.event.entity.living.LivingAttackEvent;
import net.minecraftforge.event.entity.living.LivingDeathEvent;
import net.minecraftforge.event.entity.living.LivingEvent;
@@ -151,6 +152,52 @@ public class ServerEventsHandler {
}
}
@SubscribeEvent
public void barrierDamageProtection(LivingAttackEvent event) {
if (event.entityLiving == null || event.entityLiving.worldObj == null || event.entityLiving.worldObj.isRemote)
return;
EntityEnergyBarrier barrier = EntityEnergyBarrier.getProtectingBarrier(event.entityLiving);
if (barrier != null && barrier.isDamageFromOutside(event.source)) {
// Redirect the damage to the barrier instead of preventing it
barrier.absorbDamage(event.ammount);
event.setCanceled(true);
}
}
@SubscribeEvent
public void domeItemBlacklist(PlayerInteractEvent event) {
if (event.action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK) return;
EntityPlayer player = event.entityPlayer;
if (player == null || player.worldObj == null || player.worldObj.isRemote) return;
ItemStack held = player.getHeldItem();
if (held == null) return;
String itemId = net.minecraft.item.Item.itemRegistry.getNameForObject(held.getItem());
if (itemId == null) return;
String[] blacklist = noppes.npcs.config.ConfigEnergy.DomeItemBlacklist;
if (blacklist == null) return;
boolean blacklisted = false;
for (String banned : blacklist) {
if (banned.equals(itemId)) {
blacklisted = true;
break;
}
}
if (!blacklisted) return;
List<EntityEnergyBarrier> barriers = EntityEnergyBarrier.getActiveBarriers(player.worldObj);
for (EntityEnergyBarrier barrier : barriers) {
if (barrier instanceof kamkeel.npcs.entity.EntityEnergyDome && barrier.isEntityInside(player)) {
event.setCanceled(true);
return;
}
}
}
@SubscribeEvent
public void partyDamagedEvent(LivingAttackEvent event) {
if (!(event.source != null && event.source.getEntity() instanceof EntityPlayer) || !(event.entityLiving instanceof EntityPlayer) || FMLCommonHandler.instance().getEffectiveSide().isClient())