mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-29 15:49:00 +01:00
f100b5d921
A recent commit has been made that caused patches to be out of order, rebuilding
120 lines
No EOL
4.6 KiB
Diff
120 lines
No EOL
4.6 KiB
Diff
From 0000000000000000000000000000000000000000 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
|
|
@@ -0,0 +0,0 @@ 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;
|
|
@@ -0,0 +0,0 @@ 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();
|
|
|
|
@@ -0,0 +0,0 @@ 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;
|
|
}
|
|
@@ -0,0 +0,0 @@ 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) {
|
|
@@ -0,0 +0,0 @@ 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");
|
|
@@ -0,0 +0,0 @@ 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
|
|
@@ -0,0 +0,0 @@ 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
|
|
}
|
|
--
|