mirror of
https://github.com/PaperMC/Paper.git
synced 2025-01-01 05:47:45 +01:00
Configurable sculk sensor listener range
== AT == public-f net.minecraft.world.level.gameevent.vibrations.VibrationListener listenerRange
This commit is contained in:
parent
2a974d288d
commit
c21f27243d
@ -0,0 +1,23 @@
|
|||||||
|
--- a/net/minecraft/world/level/block/entity/CalibratedSculkSensorBlockEntity.java
|
||||||
|
+++ b/net/minecraft/world/level/block/entity/CalibratedSculkSensorBlockEntity.java
|
||||||
|
@@ -20,6 +20,12 @@
|
||||||
|
public VibrationSystem.User createVibrationUser() {
|
||||||
|
return new CalibratedSculkSensorBlockEntity.VibrationUser(this.getBlockPos());
|
||||||
|
}
|
||||||
|
+ // Paper start - Configurable sculk sensor listener range
|
||||||
|
+ @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 - Configurable sculk sensor listener range
|
||||||
|
|
||||||
|
protected class VibrationUser extends SculkSensorBlockEntity.VibrationUser {
|
||||||
|
public VibrationUser(final BlockPos pos) {
|
||||||
|
@@ -28,6 +34,7 @@
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getListenerRadius() {
|
||||||
|
+ if (CalibratedSculkSensorBlockEntity.this.rangeOverride != null) return CalibratedSculkSensorBlockEntity.this.rangeOverride; // Paper - Configurable sculk sensor listener range
|
||||||
|
return 16;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,49 @@
|
|||||||
|
--- a/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
|
||||||
|
+++ b/net/minecraft/world/level/block/entity/SculkSensorBlockEntity.java
|
||||||
|
@@ -26,6 +26,7 @@
|
||||||
|
private final VibrationSystem.Listener vibrationListener;
|
||||||
|
private final VibrationSystem.User vibrationUser = this.createVibrationUser();
|
||||||
|
public int lastVibrationFrequency;
|
||||||
|
+ @Nullable public Integer rangeOverride = null; // Paper - Configurable sculk sensor listener range
|
||||||
|
|
||||||
|
protected SculkSensorBlockEntity(BlockEntityType<?> type, BlockPos pos, BlockState state) {
|
||||||
|
super(type, pos, state);
|
||||||
|
@@ -52,8 +53,16 @@
|
||||||
|
.resultOrPartial(string -> LOGGER.error("Failed to parse vibration listener for Sculk Sensor: '{}'", string))
|
||||||
|
.ifPresent(listener -> this.vibrationData = listener);
|
||||||
|
}
|
||||||
|
+ // Paper start - Configurable sculk sensor listener range
|
||||||
|
+ if (nbt.contains(PAPER_LISTENER_RANGE_NBT_KEY)) {
|
||||||
|
+ this.rangeOverride = nbt.getInt(PAPER_LISTENER_RANGE_NBT_KEY);
|
||||||
|
+ } else {
|
||||||
|
+ this.rangeOverride = null;
|
||||||
|
+ }
|
||||||
|
+ // Paper end - Configurable sculk sensor listener range
|
||||||
|
}
|
||||||
|
|
||||||
|
+ protected static final String PAPER_LISTENER_RANGE_NBT_KEY = "Paper.ListenerRange"; // Paper - Configurable sculk sensor listener range
|
||||||
|
@Override
|
||||||
|
protected void saveAdditional(CompoundTag nbt, HolderLookup.Provider registries) {
|
||||||
|
super.saveAdditional(nbt, registries);
|
||||||
|
@@ -63,7 +72,13 @@
|
||||||
|
.encodeStart(registryOps, this.vibrationData)
|
||||||
|
.resultOrPartial(string -> LOGGER.error("Failed to encode vibration listener for Sculk Sensor: '{}'", string))
|
||||||
|
.ifPresent(listenerNbt -> nbt.put("listener", listenerNbt));
|
||||||
|
+ this.saveRangeOverride(nbt); // Paper - Configurable sculk sensor listener range
|
||||||
|
}
|
||||||
|
+ // Paper start - Configurable sculk sensor listener range
|
||||||
|
+ 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 - Configurable sculk sensor listener range
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public VibrationSystem.Data getVibrationData() {
|
||||||
|
@@ -100,6 +115,7 @@
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getListenerRadius() {
|
||||||
|
+ if (SculkSensorBlockEntity.this.rangeOverride != null) return SculkSensorBlockEntity.this.rangeOverride; // Paper - Configurable sculk sensor listener range
|
||||||
|
return 8;
|
||||||
|
}
|
||||||
|
|
@ -36,4 +36,17 @@ public class CraftSculkSensor<T extends SculkSensorBlockEntity> extends CraftBlo
|
|||||||
public CraftSculkSensor<T> copy(Location location) {
|
public CraftSculkSensor<T> copy(Location location) {
|
||||||
return new CraftSculkSensor<>(this, location);
|
return new CraftSculkSensor<>(this, location);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 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
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user