mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-18 00:47:42 +01:00
161 lines
7.8 KiB
Diff
161 lines
7.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Encode42 <me@encode42.dev>
|
|
Date: Wed, 29 Sep 2021 13:37:57 -0400
|
|
Subject: [PATCH] Config for grindstones
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
|
|
index 5687f492fc76f699e2a388790ca5380d9b8c8d0a..cc229f3e1e9527cbedf929e326731943bb513dae 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/GrindstoneMenu.java
|
|
@@ -135,7 +135,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
|
|
Holder<Enchantment> holder = (Holder) entry.getKey();
|
|
int k = entry.getIntValue();
|
|
|
|
- if (!holder.is(EnchantmentTags.CURSE)) {
|
|
+ if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(holder.value())) { // Purpur
|
|
j += ((Enchantment) holder.value()).getMinCost(k);
|
|
}
|
|
}
|
|
@@ -222,7 +222,7 @@ public class GrindstoneMenu extends AbstractContainerMenu {
|
|
Entry<Holder<Enchantment>> entry = (Entry) iterator.next();
|
|
Holder<Enchantment> holder = (Holder) entry.getKey();
|
|
|
|
- if (!holder.is(EnchantmentTags.CURSE) || itemenchantments_a.getLevel(holder) == 0) {
|
|
+ if (!org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(holder.value()) || itemenchantments_a.getLevel(holder) == 0) { // Purpur
|
|
itemenchantments_a.upgrade(holder, entry.getIntValue());
|
|
}
|
|
}
|
|
@@ -230,10 +230,70 @@ public class GrindstoneMenu extends AbstractContainerMenu {
|
|
});
|
|
}
|
|
|
|
+ // Purpur start
|
|
+ private java.util.List<net.minecraft.core.component.DataComponentType<?>> GRINDSTONE_REMOVE_ATTRIBUTES_REMOVAL_LIST = java.util.List.of(
|
|
+ // DataComponents.MAX_STACK_SIZE,
|
|
+ // DataComponents.DAMAGE,
|
|
+ // DataComponents.BLOCK_STATE,
|
|
+ DataComponents.CUSTOM_DATA,
|
|
+ // DataComponents.MAX_DAMAGE,
|
|
+ // DataComponents.UNBREAKABLE,
|
|
+ // DataComponents.CUSTOM_NAME,
|
|
+ // DataComponents.ITEM_NAME,
|
|
+ // DataComponents.LORE,
|
|
+ // DataComponents.RARITY,
|
|
+ // DataComponents.ENCHANTMENTS,
|
|
+ // DataComponents.CAN_PLACE_ON,
|
|
+ // DataComponents.CAN_BREAK,
|
|
+ DataComponents.ATTRIBUTE_MODIFIERS,
|
|
+ DataComponents.CUSTOM_MODEL_DATA,
|
|
+ // DataComponents.HIDE_ADDITIONAL_TOOLTIP,
|
|
+ // DataComponents.HIDE_TOOLTIP,
|
|
+ // DataComponents.REPAIR_COST,
|
|
+ // DataComponents.CREATIVE_SLOT_LOCK,
|
|
+ // DataComponents.ENCHANTMENT_GLINT_OVERRIDE,
|
|
+ // DataComponents.INTANGIBLE_PROJECTILE,
|
|
+ // DataComponents.FOOD,
|
|
+ // DataComponents.FIRE_RESISTANT,
|
|
+ // DataComponents.TOOL,
|
|
+ // DataComponents.STORED_ENCHANTMENTS,
|
|
+ DataComponents.DYED_COLOR,
|
|
+ // DataComponents.MAP_COLOR,
|
|
+ // DataComponents.MAP_ID,
|
|
+ // DataComponents.MAP_DECORATIONS,
|
|
+ // DataComponents.MAP_POST_PROCESSING,
|
|
+ // DataComponents.CHARGED_PROJECTILES,
|
|
+ // DataComponents.BUNDLE_CONTENTS,
|
|
+ // DataComponents.POTION_CONTENTS,
|
|
+ DataComponents.SUSPICIOUS_STEW_EFFECTS
|
|
+ // DataComponents.WRITABLE_BOOK_CONTENT,
|
|
+ // DataComponents.WRITTEN_BOOK_CONTENT,
|
|
+ // DataComponents.TRIM,
|
|
+ // DataComponents.DEBUG_STICK_STATE,
|
|
+ // DataComponents.ENTITY_DATA,
|
|
+ // DataComponents.BUCKET_ENTITY_DATA,
|
|
+ // DataComponents.BLOCK_ENTITY_DATA,
|
|
+ // DataComponents.INSTRUMENT,
|
|
+ // DataComponents.OMINOUS_BOTTLE_AMPLIFIER,
|
|
+ // DataComponents.RECIPES,
|
|
+ // DataComponents.LODESTONE_TRACKER,
|
|
+ // DataComponents.FIREWORK_EXPLOSION,
|
|
+ // DataComponents.FIREWORKS,
|
|
+ // DataComponents.PROFILE,
|
|
+ // DataComponents.NOTE_BLOCK_SOUND,
|
|
+ // DataComponents.BANNER_PATTERNS,
|
|
+ // DataComponents.BASE_COLOR,
|
|
+ // DataComponents.POT_DECORATIONS,
|
|
+ // DataComponents.CONTAINER,
|
|
+ // DataComponents.BEES,
|
|
+ // DataComponents.LOCK,
|
|
+ // DataComponents.CONTAINER_LOOT,
|
|
+ );
|
|
+ // Purpur end
|
|
private ItemStack removeNonCursesFrom(ItemStack item) {
|
|
ItemEnchantments itemenchantments = EnchantmentHelper.updateEnchantments(item, (itemenchantments_a) -> {
|
|
itemenchantments_a.removeIf((holder) -> {
|
|
- return !holder.is(EnchantmentTags.CURSE);
|
|
+ return !org.purpurmc.purpur.PurpurConfig.grindstoneIgnoredEnchants.contains(holder.value()); // Purpur
|
|
});
|
|
});
|
|
|
|
@@ -248,6 +308,23 @@ public class GrindstoneMenu extends AbstractContainerMenu {
|
|
}
|
|
|
|
item.set(DataComponents.REPAIR_COST, i);
|
|
+
|
|
+ // Purpur start
|
|
+ net.minecraft.core.component.DataComponentPatch.Builder builder = net.minecraft.core.component.DataComponentPatch.builder();
|
|
+ if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveAttributes) {
|
|
+ item.getComponents().forEach(typedDataComponent -> {
|
|
+ if (GRINDSTONE_REMOVE_ATTRIBUTES_REMOVAL_LIST.contains(typedDataComponent.type())) {
|
|
+ builder.remove(typedDataComponent.type());
|
|
+ }
|
|
+ });
|
|
+ }
|
|
+ if (org.purpurmc.purpur.PurpurConfig.grindstoneRemoveDisplay) {
|
|
+ builder.remove(DataComponents.CUSTOM_NAME);
|
|
+ builder.remove(DataComponents.LORE);
|
|
+ }
|
|
+ item.applyComponents(builder.build());
|
|
+ // Purpur end
|
|
+
|
|
return item;
|
|
}
|
|
|
|
diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
index e8dc97694f59cfce67e2fe061868a9f080ef3004..a1e1aad7a1b845e2efd381da0221559443808cf7 100644
|
|
--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
+++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java
|
|
@@ -312,6 +312,9 @@ public class PurpurConfig {
|
|
public static int beeInsideBeeHive = 3;
|
|
public static boolean anvilCumulativeCost = true;
|
|
public static int lightningRodRange = 128;
|
|
+ public static Set<Enchantment> grindstoneIgnoredEnchants = new HashSet<>();
|
|
+ public static boolean grindstoneRemoveAttributes = false;
|
|
+ public static boolean grindstoneRemoveDisplay = false;
|
|
private static void blockSettings() {
|
|
if (version < 3) {
|
|
boolean oldValue = getBoolean("settings.barrel.packed-barrels", true);
|
|
@@ -346,6 +349,21 @@ public class PurpurConfig {
|
|
beeInsideBeeHive = getInt("settings.blocks.beehive.max-bees-inside", beeInsideBeeHive);
|
|
anvilCumulativeCost = getBoolean("settings.blocks.anvil.cumulative-cost", anvilCumulativeCost);
|
|
lightningRodRange = getInt("settings.blocks.lightning_rod.range", lightningRodRange);
|
|
+ ArrayList<String> defaultCurses = new ArrayList<>(){{
|
|
+ add("minecraft:binding_curse");
|
|
+ add("minecraft:vanishing_curse");
|
|
+ }};
|
|
+ if (version < 24 && !getBoolean("settings.blocks.grindstone.ignore-curses", true)) {
|
|
+ defaultCurses.clear();
|
|
+ }
|
|
+ getList("settings.blocks.grindstone.ignored-enchants", defaultCurses).forEach(key -> {
|
|
+ Registry<Enchantment> registry = MinecraftServer.getServer().registryAccess().lookupOrThrow(Registries.ENCHANTMENT);
|
|
+ Enchantment enchantment = registry.getValue(ResourceLocation.parse(key.toString()));
|
|
+ if (enchantment == null) return;
|
|
+ grindstoneIgnoredEnchants.add(enchantment);
|
|
+ });
|
|
+ grindstoneRemoveAttributes = getBoolean("settings.blocks.grindstone.remove-attributes", grindstoneRemoveAttributes);
|
|
+ grindstoneRemoveDisplay = getBoolean("settings.blocks.grindstone.remove-name-and-lore", grindstoneRemoveDisplay);
|
|
}
|
|
|
|
public static boolean allowInapplicableEnchants = false;
|