Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
65597df
commit 3a91f65
Showing
1 changed file
with
104 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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; |