mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-20 09:57:43 +01:00
Fix silk-touch spawners dropping xp and add config for minimal enchantment level (#454)
This commit is contained in:
@@ -30,7 +30,7 @@ index bd52d7d19060b0922c5165a071a5d12123028f79..6322251336a4300649f207efdb4d404d
|
||||
public static final Item CHEST = registerBlock(Blocks.CHEST, CreativeModeTab.TAB_DECORATIONS);
|
||||
public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE, CreativeModeTab.TAB_DECORATIONS);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
|
||||
index b1e04d41de80971a7a1616beb0860226ecc25045..a42375b6789bb0a386103ad826879032f30ed44b 100644
|
||||
index b1e04d41de80971a7a1616beb0860226ecc25045..295ae3877b955978105b756055c21e63cf3b84ab 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java
|
||||
@@ -2,8 +2,16 @@ package net.minecraft.world.level.block;
|
||||
@@ -122,18 +122,26 @@ index b1e04d41de80971a7a1616beb0860226ecc25045..a42375b6789bb0a386103ad826879032
|
||||
+ }
|
||||
+
|
||||
+ private boolean isSilkTouch(Level level, ItemStack stack) {
|
||||
+ return stack != null && level.purpurConfig.silkTouchTools.contains(stack.getItem()) && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, stack) > 0;
|
||||
+ return stack != null && level.purpurConfig.silkTouchTools.contains(stack.getItem()) && EnchantmentHelper.getItemEnchantmentLevel(Enchantments.SILK_TOUCH, stack) >= level.purpurConfig.minimumSilkTouchSpawnerRequire;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
@Override
|
||||
public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack stack) {
|
||||
super.spawnAfterBreak(state, world, pos, stack);
|
||||
@@ -42,6 +115,7 @@ public class SpawnerBlock extends BaseEntityBlock {
|
||||
|
||||
@Override
|
||||
public int getExpDrop(BlockState iblockdata, ServerLevel worldserver, BlockPos blockposition, ItemStack itemstack) {
|
||||
+ if (isSilkTouch(worldserver, itemstack)) return 0; // Purpur
|
||||
int i = 15 + worldserver.random.nextInt(15) + worldserver.random.nextInt(15);
|
||||
|
||||
return i;
|
||||
diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
index 65ca6e4a1c99555842804e5e21415d5f3193d526..6db6885ac937fb62755a2f0ef679ff8f88034a35 100644
|
||||
index 65ca6e4a1c99555842804e5e21415d5f3193d526..342bfb84a98292f50373fc3dd288fe37b9ba2eea 100644
|
||||
--- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java
|
||||
@@ -98,6 +98,29 @@ public class PurpurWorldConfig {
|
||||
@@ -98,6 +98,31 @@ public class PurpurWorldConfig {
|
||||
playerInvulnerableWhileAcceptingResourcePack = getBoolean("gameplay-mechanics.player.invulnerable-while-accepting-resource-pack", playerInvulnerableWhileAcceptingResourcePack);
|
||||
}
|
||||
|
||||
@@ -141,9 +149,11 @@ index 65ca6e4a1c99555842804e5e21415d5f3193d526..6db6885ac937fb62755a2f0ef679ff8f
|
||||
+ public String silkTouchSpawnerName = "Spawner";
|
||||
+ public List<String> silkTouchSpawnerLore = new ArrayList<>();
|
||||
+ public List<Item> silkTouchTools = new ArrayList<>();
|
||||
+ public int minimumSilkTouchSpawnerRequire = 1;
|
||||
+ private void silkTouchSettings() {
|
||||
+ silkTouchEnabled = getBoolean("gameplay-mechanics.silk-touch.enabled", silkTouchEnabled);
|
||||
+ silkTouchSpawnerName = getString("gameplay-mechanics.silk-touch.spawner-name", silkTouchSpawnerName);
|
||||
+ minimumSilkTouchSpawnerRequire = getInt("gameplay-mechanics.silk-touch.minimal-level", minimumSilkTouchSpawnerRequire);
|
||||
+ silkTouchSpawnerLore.clear();
|
||||
+ getList("gameplay-mechanics.silk-touch.spawner-lore", new ArrayList<String>(){{
|
||||
+ add("Spawns a {mob}");
|
||||
|
||||
Reference in New Issue
Block a user