mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 15:08:27 +02:00
4cdbb0c86c
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 Bukkit Changes: 044d4ee9 SPIGOT-7283, SPIGOT-7318: Add AsyncStructureGenerateEvent and BlockState cloning 57b73d57 PR-913: Deprecate Projectile#doesBounce() and #setBounce() 43373c44 PR-904: Update FeatureFlag for 1.20.2 a7bbbf0c PR-911: Expand DataPack API with 1.20.2 pack version methods 0341e3a0 SPIGOT-7489: Add TeleportDuration to Display Entity bcd8d2aa PR-912: Update Minecraft Wiki URLs CraftBukkit Changes: 99aafc222 Increase outdated build delay dab849f08 SPIGOT-7283, SPIGOT-7318: Add AsyncStructureGenerateEvent and BlockState cloning 041b29ae3 Upgrade specialsource-maven-plugin 851a32cff PR-1263: Remove unused implementation of AbstractProjectile#doesBounce() and #setBounce() 251af0da3 PR-1261: Expand DataPack API with 1.20.2 pack version methods 46e4ba627 Upgrade specialsource-maven-plugin df3738a24 SPIGOT-7489: Add TeleportDuration to Display Entity 8d0fea457 PR-1262: Update Minecraft Wiki URLs e62905aab SPIGOT-7490: Fix entity equipment updates Spigot Changes: a0f3d486 Rebuild patches
108 lines
5.3 KiB
Diff
108 lines
5.3 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Thu, 19 Aug 2021 18:45:42 -0700
|
|
Subject: [PATCH] Configurable sculk sensor listener range
|
|
|
|
== AT ==
|
|
public-f net.minecraft.world.level.gameevent.vibrations.VibrationListener listenerRange
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/CalibratedSculkSensorBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/CalibratedSculkSensorBlockEntity.java
|
|
index a18589425006ccabd87b76a9827ab516040009bb..fb1c47a17c2fe3807ed54fd2b2bb17c2fe28b901 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/entity/CalibratedSculkSensorBlockEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/CalibratedSculkSensorBlockEntity.java
|
|
@@ -19,6 +19,12 @@ public class CalibratedSculkSensorBlockEntity extends SculkSensorBlockEntity {
|
|
public VibrationSystem.User createVibrationUser() {
|
|
return new CalibratedSculkSensorBlockEntity.VibrationUser(this.getBlockPos());
|
|
}
|
|
+ // Paper start
|
|
+ @Override
|
|
+ protected void saveRangeOverride(final net.minecraft.nbt.CompoundTag nbt) {
|
|
+ if (this.rangeOverride != null && this.rangeOverride != 16) nbt.putInt(PAPER_LISTENER_RANGE_NBT_KEY, this.rangeOverride); // only save if it's different from the default
|
|
+ }
|
|
+ // Paper end
|
|
|
|
protected class VibrationUser extends SculkSensorBlockEntity.VibrationUser {
|
|
public VibrationUser(BlockPos pos) {
|
|
@@ -27,6 +33,7 @@ public class CalibratedSculkSensorBlockEntity extends SculkSensorBlockEntity {
|
|
|
|
@Override
|
|
public int getListenerRadius() {
|
|
+ if (CalibratedSculkSensorBlockEntity.this.rangeOverride != null) return CalibratedSculkSensorBlockEntity.this.rangeOverride; // Paper
|
|
return 16;
|
|
}
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
|
|
index a6c226da995eecc323d69a3eff1f8d202410e069..5d3740875de337e24fdba28305f61e96d01c457f 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
|
|
@@ -24,6 +24,7 @@ public class SculkSensorBlockEntity extends BlockEntity implements GameEventList
|
|
private final VibrationSystem.Listener vibrationListener;
|
|
private final VibrationSystem.User vibrationUser = this.createVibrationUser();
|
|
public int lastVibrationFrequency;
|
|
+ @Nullable public Integer rangeOverride = null; // Paper
|
|
|
|
protected SculkSensorBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
|
super(type, pos, state);
|
|
@@ -48,9 +49,17 @@ public class SculkSensorBlockEntity extends BlockEntity implements GameEventList
|
|
this.vibrationData = listener;
|
|
});
|
|
}
|
|
+ // Paper start
|
|
+ if (nbt.contains(PAPER_LISTENER_RANGE_NBT_KEY)) {
|
|
+ this.rangeOverride = nbt.getInt(PAPER_LISTENER_RANGE_NBT_KEY);
|
|
+ } else {
|
|
+ this.rangeOverride = null;
|
|
+ }
|
|
+ // Paper end
|
|
|
|
}
|
|
|
|
+ protected static final String PAPER_LISTENER_RANGE_NBT_KEY = "Paper.ListenerRange"; // Paper
|
|
@Override
|
|
protected void saveAdditional(CompoundTag nbt) {
|
|
super.saveAdditional(nbt);
|
|
@@ -58,7 +67,13 @@ public class SculkSensorBlockEntity extends BlockEntity implements GameEventList
|
|
VibrationSystem.Data.CODEC.encodeStart(NbtOps.INSTANCE, this.vibrationData).resultOrPartial(LOGGER::error).ifPresent((listenerNbt) -> {
|
|
nbt.put("listener", listenerNbt);
|
|
});
|
|
+ this.saveRangeOverride(nbt); // Paper
|
|
+ }
|
|
+ // Paper start
|
|
+ protected void saveRangeOverride(CompoundTag nbt) {
|
|
+ if (this.rangeOverride != null && this.rangeOverride != VibrationUser.LISTENER_RANGE) nbt.putInt(PAPER_LISTENER_RANGE_NBT_KEY, this.rangeOverride); // only save if it's different from the default
|
|
}
|
|
+ // Paper end
|
|
|
|
@Override
|
|
public VibrationSystem.Data getVibrationData() {
|
|
@@ -95,6 +110,7 @@ public class SculkSensorBlockEntity extends BlockEntity implements GameEventList
|
|
|
|
@Override
|
|
public int getListenerRadius() {
|
|
+ if (SculkSensorBlockEntity.this.rangeOverride != null) return SculkSensorBlockEntity.this.rangeOverride; // Paper
|
|
return 8;
|
|
}
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftSculkSensor.java b/src/main/java/org/bukkit/craftbukkit/block/CraftSculkSensor.java
|
|
index 7e4cef6ce439d3fdf148b456120f29dbc1efb432..40578b3f8374ee9c754c743ab263f80deeee5a36 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftSculkSensor.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftSculkSensor.java
|
|
@@ -30,4 +30,17 @@ public class CraftSculkSensor<T extends SculkSensorBlockEntity> extends CraftBlo
|
|
public CraftSculkSensor<T> copy() {
|
|
return new CraftSculkSensor<>(this);
|
|
}
|
|
+
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public int getListenerRange() {
|
|
+ return this.getSnapshot().getListener().getListenerRadius();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public void setListenerRange(int range) {
|
|
+ Preconditions.checkArgument(range > 0, "Vibration listener range must be greater than 0");
|
|
+ this.getSnapshot().rangeOverride = range;
|
|
+ }
|
|
+ // Paper end
|
|
}
|