geforkt von Mirrors/Paper
b62dfa0bf9
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 39ce5d3a SPIGOT-4399: ItemMeta.equals broken with AttributeModifiers CraftBukkit Changes:1cf8b5dc
SPIGOT-4400: Populators running on existing chunks116cb9a1
SPIGOT-4399: Add attribute modifier equality test5ee1c18a
SPIGOT-4398: Set ASM7_EXPERIMENTAL flag
123 Zeilen
4.6 KiB
Diff
123 Zeilen
4.6 KiB
Diff
From 74c0ccbb939db48c2e3c10af810630132b2d7d74 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
|
Date: Fri, 24 Aug 2018 11:50:26 -0500
|
|
Subject: [PATCH] Add More Creeper API
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/EntityCreeper.java b/src/main/java/net/minecraft/server/EntityCreeper.java
|
|
index 19022b6e24..e070e7b2d2 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityCreeper.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityCreeper.java
|
|
@@ -14,7 +14,7 @@ public class EntityCreeper extends EntityMonster {
|
|
private static final DataWatcherObject<Boolean> b = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.i);
|
|
private static final DataWatcherObject<Boolean> c = DataWatcher.a(EntityCreeper.class, DataWatcherRegistry.i);private static final DataWatcherObject<Boolean> isIgnitedDW = c; // Paper OBFHELPER
|
|
private int bC;
|
|
- private int fuseTicks;
|
|
+ public int fuseTicks; // Paper - public
|
|
public int maxFuseTicks = 30;
|
|
public int explosionRadius = 3;
|
|
private int bG;
|
|
@@ -92,9 +92,12 @@ public class EntityCreeper extends EntityMonster {
|
|
public void tick() {
|
|
if (this.isAlive()) {
|
|
this.bC = this.fuseTicks;
|
|
- if (this.isIgnited()) {
|
|
- this.a(1);
|
|
- }
|
|
+ // Paper start - This is no longer needed as the state is being set in setIgnited() now.
|
|
+ // Ensures the CreeperIgniteEvent is not spammed every tick
|
|
+ //if (this.isIgnited()) {
|
|
+ // this.a(1);
|
|
+ //}
|
|
+ // Paper end
|
|
|
|
int i = this.dz();
|
|
|
|
@@ -102,7 +105,7 @@ public class EntityCreeper extends EntityMonster {
|
|
this.a(SoundEffects.ENTITY_CREEPER_PRIMED, 1.0F, 0.5F);
|
|
}
|
|
|
|
- this.fuseTicks += i;
|
|
+ this.fuseTicks += this.isIgnited() ? 1 : i; // Paper - workaround now that we aren't letting it get re-set every tick - GH-1389
|
|
if (this.fuseTicks < 0) {
|
|
this.fuseTicks = 0;
|
|
}
|
|
@@ -151,12 +154,21 @@ public class EntityCreeper extends EntityMonster {
|
|
return LootTables.x;
|
|
}
|
|
|
|
+ public int getState() { return dz(); } // Paper - OBFHELPER
|
|
public int dz() {
|
|
return ((Integer) this.datawatcher.get(EntityCreeper.a)).intValue();
|
|
}
|
|
|
|
+ public void setState(int state) { a(state); } // Paper - OBFHELPER
|
|
public void a(int i) {
|
|
- this.datawatcher.set(EntityCreeper.a, Integer.valueOf(i));
|
|
+ // Paper start
|
|
+ if (getState() != i) {
|
|
+ com.destroystokyo.paper.event.entity.CreeperIgniteEvent event = new com.destroystokyo.paper.event.entity.CreeperIgniteEvent((org.bukkit.entity.Creeper) getBukkitEntity(), i == 1);
|
|
+ if (event.callEvent()) {
|
|
+ this.datawatcher.set(EntityCreeper.a, event.isIgnited() ? 1 : -1);
|
|
+ }
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
public void onLightningStrike(EntityLightning entitylightning) {
|
|
@@ -190,6 +202,7 @@ public class EntityCreeper extends EntityMonster {
|
|
return super.a(entityhuman, enumhand);
|
|
}
|
|
|
|
+ public void explode() { this.dE(); } // Paper - OBFHELPER
|
|
private void dE() {
|
|
if (!this.world.isClientSide) {
|
|
boolean flag = this.world.getGameRules().getBoolean("mobGriefing");
|
|
@@ -241,8 +254,15 @@ public class EntityCreeper extends EntityMonster {
|
|
return ((Boolean) this.datawatcher.get(EntityCreeper.c)).booleanValue();
|
|
}
|
|
|
|
+ // Paper start
|
|
+ public void setIgnited(boolean ignited) {
|
|
+ this.datawatcher.set(EntityCreeper.c, ignited);
|
|
+ setState(ignited ? 1 : -1);
|
|
+ }
|
|
+
|
|
public void dB() {
|
|
- this.datawatcher.set(EntityCreeper.c, Boolean.valueOf(true));
|
|
+ setIgnited(true);
|
|
+ // Paper end
|
|
}
|
|
|
|
public boolean canCauseHeadDrop() {
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java
|
|
index ffebb54caa..ab2b20a0d4 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftCreeper.java
|
|
@@ -76,4 +76,22 @@ public class CraftCreeper extends CraftMonster implements Creeper {
|
|
public EntityType getType() {
|
|
return EntityType.CREEPER;
|
|
}
|
|
+
|
|
+ // Paper start
|
|
+ public void setIgnited(boolean ignited) {
|
|
+ getHandle().setIgnited(ignited);
|
|
+ }
|
|
+
|
|
+ public boolean isIgnited() {
|
|
+ return getHandle().isIgnited();
|
|
+ }
|
|
+
|
|
+ public int getFuseTicks() {
|
|
+ return getHandle().fuseTicks;
|
|
+ }
|
|
+
|
|
+ public void explode() {
|
|
+ getHandle().explode();
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
--
|
|
2.19.0
|
|
|