mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-19 09:27:43 +01:00
Phantoms burn in light
This commit is contained in:
104
patches/server/0113-Phantoms-burn-in-light.patch
Normal file
104
patches/server/0113-Phantoms-burn-in-light.patch
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: draycia <lonelyyordle@gmail.com>
|
||||||
|
Date: Sun, 12 Apr 2020 20:41:59 -0700
|
||||||
|
Subject: [PATCH] Phantoms burn in light
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/EntityPhantom.java b/src/main/java/net/minecraft/server/EntityPhantom.java
|
||||||
|
index ec09ec241..24ad3a4ae 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/EntityPhantom.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/EntityPhantom.java
|
||||||
|
@@ -13,6 +13,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||||
|
private BlockPosition d; public void setHome(BlockPosition home) { this.d = home; } public BlockPosition getHome() { return this.d; } // Purpur - OBFHELPER
|
||||||
|
private EntityPhantom.AttackPhase bv; public AttackPhase getAttackPhase() { return this.bv; } // Purpur - OBFHELPER
|
||||||
|
private Vec3D crystalPosition; // Purpur
|
||||||
|
+ private static final RecipeItemStack TORCH = RecipeItemStack.a(Items.torch(), Items.redstoneTorch(), Items.soulTorch()); // Purpur
|
||||||
|
|
||||||
|
public EntityPhantom(EntityTypes<? extends EntityPhantom> entitytypes, World world) {
|
||||||
|
super(entitytypes, world);
|
||||||
|
@@ -125,7 +126,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void movementTick() {
|
||||||
|
- if (this.isAlive() && this.eH()) {
|
||||||
|
+ if (this.isAlive() && ((world.purpurConfig.phantomBurnInDaylight && this.isInDaylight()) || (world.purpurConfig.phantomBurnInLight > 0 && world.getLightLevel(new BlockPosition(this)) >= world.purpurConfig.phantomBurnInLight))) { // Purpur
|
||||||
|
this.setOnFire(8);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -374,7 +375,7 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||||
|
} else {
|
||||||
|
this.c = 60;
|
||||||
|
List<EntityHuman> list = EntityPhantom.this.world.a(this.b, (EntityLiving) EntityPhantom.this, EntityPhantom.this.getBoundingBox().grow(16.0D, 64.0D, 16.0D));
|
||||||
|
-
|
||||||
|
+ if (world.purpurConfig.phantomIgnorePlayersWithTorch) list.removeIf(human -> TORCH.test(human.getItemInHand(EnumHand.MAIN_HAND)) || TORCH.test(human.getItemInHand(EnumHand.OFF_HAND)));// Purpur
|
||||||
|
if (!list.isEmpty()) {
|
||||||
|
list.sort(Comparator.comparing(Entity::locY).reversed());
|
||||||
|
Iterator iterator = list.iterator();
|
||||||
|
@@ -473,6 +474,12 @@ public class EntityPhantom extends EntityFlying implements IMonster {
|
||||||
|
return false;
|
||||||
|
} else if (entityliving instanceof EntityHuman && (((EntityHuman) entityliving).isSpectator() || ((EntityHuman) entityliving).isCreative())) {
|
||||||
|
return false;
|
||||||
|
+ // Purpur start
|
||||||
|
+ } else if (world.purpurConfig.phantomBurnInLight > 0 && world.getLightLevel(new BlockPosition(EntityPhantom.this)) >= world.purpurConfig.phantomBurnInLight) {
|
||||||
|
+ return false;
|
||||||
|
+ } else if (world.purpurConfig.phantomIgnorePlayersWithTorch && (TORCH.test(entityliving.getItemInHand(EnumHand.MAIN_HAND)) || TORCH.test(entityliving.getItemInHand(EnumHand.OFF_HAND)))) {
|
||||||
|
+ return false;
|
||||||
|
+ // Purpur end
|
||||||
|
} else if (!this.a()) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/Items.java b/src/main/java/net/minecraft/server/Items.java
|
||||||
|
index b5305eaa9..8c9582f5b 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/Items.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/Items.java
|
||||||
|
@@ -173,7 +173,7 @@ public class Items {
|
||||||
|
public static final Item cm = a(Blocks.BOOKSHELF, CreativeModeTab.b);
|
||||||
|
public static final Item cn = a(Blocks.MOSSY_COBBLESTONE, CreativeModeTab.b);
|
||||||
|
public static final Item co = a(Blocks.OBSIDIAN, CreativeModeTab.b);
|
||||||
|
- public static final Item cp = a((ItemBlock) (new ItemBlockWallable(Blocks.TORCH, Blocks.WALL_TORCH, (new Item.Info()).a(CreativeModeTab.c))));
|
||||||
|
+ public static final Item cp = a((ItemBlock) (new ItemBlockWallable(Blocks.TORCH, Blocks.WALL_TORCH, (new Item.Info()).a(CreativeModeTab.c)))); public static final Item torch() { return cp; } // Purpur - OBFHELPER
|
||||||
|
public static final Item cq = a(Blocks.END_ROD, CreativeModeTab.c);
|
||||||
|
public static final Item cr = a(Blocks.CHORUS_PLANT, CreativeModeTab.c);
|
||||||
|
public static final Item cs = a(Blocks.CHORUS_FLOWER, CreativeModeTab.c);
|
||||||
|
@@ -203,7 +203,7 @@ public class Items {
|
||||||
|
public static final Item cQ = a(Blocks.WARPED_PRESSURE_PLATE, CreativeModeTab.d);
|
||||||
|
public static final Item cR = a(Blocks.POLISHED_BLACKSTONE_PRESSURE_PLATE, CreativeModeTab.d);
|
||||||
|
public static final Item cS = a(Blocks.REDSTONE_ORE, CreativeModeTab.b);
|
||||||
|
- public static final Item cT = a((ItemBlock) (new ItemBlockWallable(Blocks.REDSTONE_TORCH, Blocks.REDSTONE_WALL_TORCH, (new Item.Info()).a(CreativeModeTab.d))));
|
||||||
|
+ public static final Item cT = a((ItemBlock) (new ItemBlockWallable(Blocks.REDSTONE_TORCH, Blocks.REDSTONE_WALL_TORCH, (new Item.Info()).a(CreativeModeTab.d)))); public static final Item redstoneTorch() { return cT; } // Purpur - OBFHELPER
|
||||||
|
public static final Item cU = a(Blocks.SNOW, CreativeModeTab.c);
|
||||||
|
public static final Item cV = a(Blocks.ICE, CreativeModeTab.b);
|
||||||
|
public static final Item cW = a(Blocks.SNOW_BLOCK, CreativeModeTab.b);
|
||||||
|
@@ -225,7 +225,7 @@ public class Items {
|
||||||
|
public static final Item dm = a(Blocks.SOUL_SOIL, CreativeModeTab.b);
|
||||||
|
public static final Item dn = a(Blocks.BASALT, CreativeModeTab.b);
|
||||||
|
public static final Item do_ = a(Blocks.cP, CreativeModeTab.b);
|
||||||
|
- public static final Item dp = a((ItemBlock) (new ItemBlockWallable(Blocks.SOUL_TORCH, Blocks.SOUL_WALL_TORCH, (new Item.Info()).a(CreativeModeTab.c))));
|
||||||
|
+ public static final Item dp = a((ItemBlock) (new ItemBlockWallable(Blocks.SOUL_TORCH, Blocks.SOUL_WALL_TORCH, (new Item.Info()).a(CreativeModeTab.c)))); public static final Item soulTorch() { return dp; } // Purpur - OBFHELPER
|
||||||
|
public static final Item dq = a(Blocks.GLOWSTONE, CreativeModeTab.b);
|
||||||
|
public static final Item dr = a(Blocks.JACK_O_LANTERN, CreativeModeTab.b);
|
||||||
|
public static final Item ds = a(Blocks.OAK_TRAPDOOR, CreativeModeTab.d);
|
||||||
|
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||||
|
index f7be1373c..44abaaacc 100644
|
||||||
|
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||||
|
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||||
|
@@ -507,6 +507,9 @@ public class PurpurWorldConfig {
|
||||||
|
public int phantomSpawnOverheadRadius = 10;
|
||||||
|
public int phantomSpawnMinPerAttempt = 1;
|
||||||
|
public int phantomSpawnMaxPerAttempt = -1;
|
||||||
|
+ public int phantomBurnInLight = 0;
|
||||||
|
+ public boolean phantomIgnorePlayersWithTorch = false;
|
||||||
|
+ public boolean phantomBurnInDaylight = true;
|
||||||
|
private void phantomSettings() {
|
||||||
|
phantomAttackedByCrystalRadius = getDouble("mobs.phantom.attacked-by-crystal-range", phantomAttackedByCrystalRadius);
|
||||||
|
phantomAttackedByCrystalDamage = (float) getDouble("mobs.phantom.attacked-by-crystal-damage", phantomAttackedByCrystalDamage);
|
||||||
|
@@ -523,6 +526,9 @@ public class PurpurWorldConfig {
|
||||||
|
phantomSpawnOverheadRadius = getInt("mobs.phantom.spawn.overhead.radius", phantomSpawnOverheadRadius);
|
||||||
|
phantomSpawnMinPerAttempt = getInt("mobs.phantom.spawn.per-attempt.min", phantomSpawnMinPerAttempt);
|
||||||
|
phantomSpawnMaxPerAttempt = getInt("mobs.phantom.spawn.per-attempt.max", phantomSpawnMaxPerAttempt);
|
||||||
|
+ phantomBurnInLight = getInt("mobs.phantom.burn-in-light", phantomBurnInLight);
|
||||||
|
+ phantomBurnInDaylight = getBoolean("mobs.phantom.burn-in-daylight", phantomBurnInDaylight);
|
||||||
|
+ phantomIgnorePlayersWithTorch = getBoolean("mobs.phantom.ignore-players-with-torch", phantomIgnorePlayersWithTorch);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean pigRidable = false;
|
||||||
Reference in New Issue
Block a user