geforkt von Mirrors/Paper
a2a9ffe3b9
Where I blocked movement did not consider velocity buildup, which I assume then "unleashes" if something was really trying to push that entity, and moves it a very large distance. Additionally, this method was completely misnamed, as movementTick is more "doLotsOfTickThings", and ended up breaking AI too, which the whole point of temporary wake ups was to let AI run to trigger new immunity. Also fixed numerous behavioral rules for Immunity to improve vanilla gameplay, suchas bees that are angry or moving towards a flower or hive, any insentient that is targetting any enemy (Accidently made it any player), and included flying mobs such as phantoms by reducing the type check to insentient instead of Creature. Also improved inWater immunity to consider if the mob is movable by water or not.
67 Zeilen
3.6 KiB
Diff
67 Zeilen
3.6 KiB
Diff
From ec37e008320c5c1c3c76ec1e8eb6b1117993a89e Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
|
Date: Fri, 7 Feb 2020 14:36:56 -0600
|
|
Subject: [PATCH] Add option to nerf pigmen from nether portals
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index bce502181f..7d408542e7 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -653,4 +653,9 @@ public class PaperWorldConfig {
|
|
disableHopperMoveEvents = getBoolean("hopper.disable-move-event", disableHopperMoveEvents);
|
|
log("Hopper Move Item Events: " + (disableHopperMoveEvents ? "disabled" : "enabled"));
|
|
}
|
|
+
|
|
+ public boolean nerfNetherPortalPigmen = false;
|
|
+ private void nerfNetherPortalPigmen() {
|
|
+ nerfNetherPortalPigmen = getBoolean("game-mechanics.nerf-pigmen-from-nether-portals", nerfNetherPortalPigmen);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/BlockPortal.java b/src/main/java/net/minecraft/server/BlockPortal.java
|
|
index 2dc3ab4cfa..09c7c13183 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockPortal.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockPortal.java
|
|
@@ -45,6 +45,8 @@ public class BlockPortal extends Block {
|
|
Entity entity = EntityTypes.ZOMBIE_PIGMAN.spawnCreature(worldserver, (NBTTagCompound) null, (IChatBaseComponent) null, (EntityHuman) null, blockposition.up(), EnumMobSpawn.STRUCTURE, false, false, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NETHER_PORTAL);
|
|
|
|
if (entity != null) {
|
|
+ entity.fromNetherPortal = true; // Paper
|
|
+ if (worldserver.paperConfig.nerfNetherPortalPigmen) ((EntityInsentient) entity).aware = false; // Paper
|
|
entity.portalCooldown = entity.ba();
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index d81ae00fb4..c4879ac569 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -194,6 +194,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
public long activatedTick = Integer.MIN_VALUE;
|
|
public boolean isTemporarilyActive = false; // Paper
|
|
public boolean spawnedViaMobSpawner; // Paper - Yes this name is similar to above, upstream took the better one
|
|
+ public boolean fromNetherPortal; // Paper
|
|
protected int numCollisions = 0; // Paper
|
|
public void inactiveTick() { }
|
|
// Spigot end
|
|
@@ -1644,6 +1645,9 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
if (spawnedViaMobSpawner) {
|
|
nbttagcompound.setBoolean("Paper.FromMobSpawner", true);
|
|
}
|
|
+ if (fromNetherPortal) {
|
|
+ nbttagcompound.setBoolean("Paper.FromNetherPortal", true);
|
|
+ }
|
|
// Paper end
|
|
return nbttagcompound;
|
|
} catch (Throwable throwable) {
|
|
@@ -1766,6 +1770,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
}
|
|
|
|
spawnedViaMobSpawner = nbttagcompound.getBoolean("Paper.FromMobSpawner"); // Restore entity's from mob spawner status
|
|
+ fromNetherPortal = nbttagcompound.getBoolean("Paper.FromNetherPortal");
|
|
if (nbttagcompound.hasKey("Paper.SpawnReason")) {
|
|
String spawnReasonName = nbttagcompound.getString("Paper.SpawnReason");
|
|
try {
|
|
--
|
|
2.25.1
|
|
|