mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@ab7bc3f Remove javadoc that doesn't apply to Paper (#9206) PaperMC/Paper@57fdc66 Undeprecate Server#getMap (#9185) PaperMC/Paper@f8603a4 Avoid Lazy Initialization for Enum Fields (#9210) PaperMC/Paper@5b66d33 Call EntityChangeBlockEvent for frogs egg (#9213) PaperMC/Paper@4ba5aac More accurate isInOpenWater impl (#9194) PaperMC/Paper@a61b484 Fix MC-224454 (#9195) PaperMC/Paper@b681760 Fix note block sound property on player heads (#9158) PaperMC/Paper@bcd8dc2 Use the spigot config for mangrove propagule / torchflower growth (#8597)
69 lines
4.9 KiB
Diff
69 lines
4.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
|
Date: Wed, 17 Mar 2021 14:54:43 -0500
|
|
Subject: [PATCH] Configurable ravager griefable blocks list
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
|
index d67171c3b7d53a91ac9761385646cf9b7b474362..6798e9b616a3357ce68728395cb43344b9e16889 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
|
@@ -205,7 +205,7 @@ public class Ravager extends Raider {
|
|
BlockState iblockdata = this.level.getBlockState(blockposition);
|
|
Block block = iblockdata.getBlock();
|
|
|
|
- if (block instanceof LeavesBlock && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper
|
|
+ if (this.level.purpurConfig.ravagerGriefableBlocks.contains(block) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) { // CraftBukkit // Paper
|
|
flag = this.level.destroyBlock(blockposition, true, this) || flag;
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/CropBlock.java b/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
|
index d78cb69c6b3fdc0883613c5cc53a38a7d31c0b76..de002217833c8677a305bf6abff590fc41b99a37 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/CropBlock.java
|
|
@@ -168,7 +168,7 @@ public class CropBlock extends BushBlock implements BonemealableBlock {
|
|
@Override
|
|
public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) {
|
|
if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper
|
|
- if (entity instanceof Ravager && !CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))).isCancelled()) { // CraftBukkit // Purpur
|
|
+ if (entity instanceof Ravager && world.purpurConfig.ravagerGriefableBlocks.contains(world.getBlockState(pos).getBlock()) && !CraftEventFactory.callEntityChangeBlockEvent(entity, pos, Blocks.AIR.defaultBlockState(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.RULE_MOBGRIEFING))).isCancelled()) { // CraftBukkit // Purpur
|
|
world.destroyBlock(pos, true, entity);
|
|
}
|
|
|
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
index c7752f41ea30ccac924adcd093f9a946c794f2dc..60f4c0e3d26e7ed73e67ff145b7603fded801705 100644
|
|
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
@@ -1705,6 +1705,7 @@ public class PurpurWorldConfig {
|
|
public double ravagerMaxHealth = 100.0D;
|
|
public boolean ravagerBypassMobGriefing = false;
|
|
public boolean ravagerTakeDamageFromWater = false;
|
|
+ public List<Block> ravagerGriefableBlocks = new ArrayList<>();
|
|
private void ravagerSettings() {
|
|
ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable);
|
|
ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater);
|
|
@@ -1717,6 +1718,23 @@ public class PurpurWorldConfig {
|
|
ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth);
|
|
ravagerBypassMobGriefing = getBoolean("mobs.ravager.bypass-mob-griefing", ravagerBypassMobGriefing);
|
|
ravagerTakeDamageFromWater = getBoolean("mobs.ravager.takes-damage-from-water", ravagerTakeDamageFromWater);
|
|
+ getList("mobs.ravager.griefable-blocks", new ArrayList<String>(){{
|
|
+ add("minecraft:oak_leaves");
|
|
+ add("minecraft:spruce_leaves");
|
|
+ add("minecraft:birch_leaves");
|
|
+ add("minecraft:jungle_leaves");
|
|
+ add("minecraft:acacia_leaves");
|
|
+ add("minecraft:dark_oak_leaves");
|
|
+ add("minecraft:beetroots");
|
|
+ add("minecraft:carrots");
|
|
+ add("minecraft:potatoes");
|
|
+ add("minecraft:wheat");
|
|
+ }}).forEach(key -> {
|
|
+ Block block = BuiltInRegistries.BLOCK.get(new ResourceLocation(key.toString()));
|
|
+ if (!block.defaultBlockState().isAir()) {
|
|
+ ravagerGriefableBlocks.add(block);
|
|
+ }
|
|
+ });
|
|
}
|
|
|
|
public boolean salmonRidable = false;
|