e886d8118e
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing
90 lines
3.9 KiB
Diff
90 lines
3.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Wed, 24 Jun 2020 12:39:08 -0600
|
|
Subject: [PATCH] Beacon API - custom effect ranges
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java
|
|
index c6b7bc3dc1445269c1562c308b386ce480d70ef3..f97b27a4751d1fc3287de8dba384ab5639b832b8 100644
|
|
--- a/src/main/java/net/minecraft/server/TileEntityBeacon.java
|
|
+++ b/src/main/java/net/minecraft/server/TileEntityBeacon.java
|
|
@@ -45,6 +45,26 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic
|
|
return (hasSecondaryEffect()) ? CraftPotionUtil.toBukkit(new MobEffect(this.secondaryEffect, getLevel(), getAmplification(), true, true)) : null;
|
|
}
|
|
// CraftBukkit end
|
|
+ // Paper start - add field/methods for custom range
|
|
+ private final String PAPER_RANGE_TAG = "Paper.Range";
|
|
+ private double effectRange = -1;
|
|
+
|
|
+ public double getEffectRange() {
|
|
+ if (this.effectRange < 0) {
|
|
+ return this.levels * 10 + 10;
|
|
+ } else {
|
|
+ return effectRange;
|
|
+ }
|
|
+ }
|
|
+
|
|
+ public void setEffectRange(double range) {
|
|
+ this.effectRange = range;
|
|
+ }
|
|
+
|
|
+ public void resetEffectRange() {
|
|
+ this.effectRange = -1;
|
|
+ }
|
|
+ // Paper end
|
|
|
|
public TileEntityBeacon() {
|
|
super(TileEntityTypes.BEACON);
|
|
@@ -235,7 +255,8 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic
|
|
|
|
public List getHumansInRange() {
|
|
{
|
|
- double d0 = (double) (this.levels * 10 + 10);
|
|
+ // Paper - custom beacon ranges
|
|
+ double d0 = this.getEffectRange();
|
|
|
|
AxisAlignedBB axisalignedbb = (new AxisAlignedBB(this.position)).g(d0).b(0.0D, (double) this.world.getBuildHeight(), 0.0D);
|
|
List<EntityHuman> list = this.world.a(EntityHuman.class, axisalignedbb);
|
|
@@ -336,6 +357,9 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic
|
|
this.secondaryEffect = MobEffectList.fromId(nbttagcompound.getInt("Secondary"));
|
|
this.levels = nbttagcompound.getInt("Levels"); // SPIGOT-5053, use where available
|
|
// CraftBukkit end
|
|
+ // Paper
|
|
+ this.effectRange = nbttagcompound.hasKeyOfType(PAPER_RANGE_TAG, 6) ? nbttagcompound.getDouble(PAPER_RANGE_TAG) : -1;
|
|
+
|
|
if (nbttagcompound.hasKeyOfType("CustomName", 8)) {
|
|
this.customName = IChatBaseComponent.ChatSerializer.a(nbttagcompound.getString("CustomName"));
|
|
}
|
|
@@ -352,6 +376,8 @@ public class TileEntityBeacon extends TileEntity implements ITileInventory, ITic
|
|
if (this.customName != null) {
|
|
nbttagcompound.setString("CustomName", IChatBaseComponent.ChatSerializer.a(this.customName));
|
|
}
|
|
+ // Paper
|
|
+ nbttagcompound.setDouble(PAPER_RANGE_TAG, this.effectRange);
|
|
|
|
this.chestLock.a(nbttagcompound);
|
|
return nbttagcompound;
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java
|
|
index 21ebceafbf27125761aa08cfe0785f6f05c77592..51efea5262b80b7cee917b1bdaf22e4b741d5e03 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBeacon.java
|
|
@@ -95,4 +95,19 @@ public class CraftBeacon extends CraftBlockEntityState<TileEntityBeacon> impleme
|
|
public void setLock(String key) {
|
|
this.getSnapshot().chestLock = (key == null) ? ChestLock.a : new ChestLock(key);
|
|
}
|
|
+
|
|
+ @Override
|
|
+ public double getEffectRange() {
|
|
+ return this.getSnapshot().getEffectRange();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setEffectRange(double range) {
|
|
+ this.getSnapshot().setEffectRange(range);
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void resetEffectRange() {
|
|
+ this.getSnapshot().resetEffectRange();
|
|
+ }
|
|
}
|