From 2423f60b15bde330bec7ecf4af0b08f4cb68bd71 Mon Sep 17 00:00:00 2001 From: TBPig <147127248+TBPig@users.noreply.github.com> Date: Wed, 24 Dec 2025 20:24:49 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E7=94=B5=E5=8A=A8=E9=99=84=E9=AD=94?= =?UTF-8?q?=E5=8F=B0=E9=9C=80=E6=B1=82=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/assets/anvilcraft_pigsplus/lang/en_ud.json | 1 + .../resources/assets/anvilcraft_pigsplus/lang/en_us.json | 1 + .../block/entity/ElectricEnchantingTableBlockEntity.java | 3 +++ .../java/dev/anvilcraft/pigsplus/data/lang/LangHandler.java | 1 + .../jade/provider/ElectricEnchantingTableProvider.java | 6 ++++++ .../resources/assets/anvilcraft_pigsplus/lang/zh_cn.json | 1 + 6 files changed, 13 insertions(+) diff --git a/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_ud.json b/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_ud.json index 817a26d7..2206fb0c 100644 --- a/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_ud.json +++ b/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_ud.json @@ -60,5 +60,6 @@ "jei.anvilcraft.pigsplus.info.spiritual_component": "˙ʇuǝuodɯoƆ ɯnıpǝW ǝuo ʇsoɯ ʇɐ ǝʇɐɹǝuǝb oʇ ǝɔuɐɥɔ %0ᄅ ɐ sǝpıʌoɹd ʇuǝɯʇuɐɥɔuǝ ɥɔɐǝ 'pǝʎoɹʇsǝp sı ʇuǝuodɯoƆ ıɹnʞɐɹɐʞ ɐ uǝɥM", "tooltip.anvilcraft.pigsplus.enchanted_generator.max_power_value": "Mʞ %d :uoıʇdɯnsuoɔ ɹǝʍod xɐW", "tooltip.anvilcraft.pigsplus.enchanted_generator.power_rate": "%s :ǝʇɐɹ uoıʇdɯnsuoɔ ɹǝʍoԀ", + "tooltip.anvilcraft.pigsplus.enchanted_generator.previous_energy_consumption": "%d :uoıʇdɯnsuoɔ ʎbɹǝuǝ ɯǝʇı snoıʌǝɹԀ", "tooltip.anvilcraft.pigsplus.enchanted_generator.time": "%s :ǝɯıʇ buıuıɐɯǝᴚ" } \ No newline at end of file diff --git a/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_us.json b/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_us.json index cbadbde5..813dad7d 100644 --- a/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_us.json +++ b/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_us.json @@ -60,5 +60,6 @@ "jei.anvilcraft.pigsplus.info.spiritual_component": "When a Karakuri Component is destroyed, each enchantment provides a 20% chance to generate at most one Medium Component.", "tooltip.anvilcraft.pigsplus.enchanted_generator.max_power_value": "Max power consumption: %d kW", "tooltip.anvilcraft.pigsplus.enchanted_generator.power_rate": "Power consumption rate: %s", + "tooltip.anvilcraft.pigsplus.enchanted_generator.previous_energy_consumption": "Previous item energy consumption: %d", "tooltip.anvilcraft.pigsplus.enchanted_generator.time": "Remaining time: %s" } \ No newline at end of file diff --git a/src/main/java/dev/anvilcraft/pigsplus/block/entity/ElectricEnchantingTableBlockEntity.java b/src/main/java/dev/anvilcraft/pigsplus/block/entity/ElectricEnchantingTableBlockEntity.java index 579c6a4b..7625961e 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/block/entity/ElectricEnchantingTableBlockEntity.java +++ b/src/main/java/dev/anvilcraft/pigsplus/block/entity/ElectricEnchantingTableBlockEntity.java @@ -54,6 +54,8 @@ public class ElectricEnchantingTableBlockEntity extends BlockEntity private int powerValue = 0; @Getter private double powerRate = 1; + @Getter + private int prevPowerValue = 0; private int signalCache = 0; @Getter private final FilteredItemStackHandler itemHandler = new FilteredItemStackHandler(3) { @@ -176,6 +178,7 @@ private void moveItemToTransformingSlot() { enchantments = getEnchantment(); int needPower = CalcPowerValue(); + prevPowerValue = needPower; if (needPower > maxPowerValue | needPower <= 0) { dropItemStack(stack); return; diff --git a/src/main/java/dev/anvilcraft/pigsplus/data/lang/LangHandler.java b/src/main/java/dev/anvilcraft/pigsplus/data/lang/LangHandler.java index d4e674ea..1ac711a8 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/data/lang/LangHandler.java +++ b/src/main/java/dev/anvilcraft/pigsplus/data/lang/LangHandler.java @@ -22,6 +22,7 @@ public static void init(RegistrateLangProvider provider) { provider.add("tooltip.anvilcraft.pigsplus.enchanted_generator.time", "Remaining time: %s"); provider.add("tooltip.anvilcraft.pigsplus.enchanted_generator.max_power_value", "Max power consumption: %d kW"); provider.add("tooltip.anvilcraft.pigsplus.enchanted_generator.power_rate", "Power consumption rate: %s"); + provider.add("tooltip.anvilcraft.pigsplus.enchanted_generator.previous_energy_consumption", "Previous item energy consumption: %d"); provider.add("config.jade.plugin_anvilcraft_pigsplus.electric_enchanting_table", "Electric Enchanting Table"); provider.add("config.jade.plugin_anvilcraft_pigsplus.enchanted_generator", "Enchanted Generator"); diff --git a/src/main/java/dev/anvilcraft/pigsplus/integration/jade/provider/ElectricEnchantingTableProvider.java b/src/main/java/dev/anvilcraft/pigsplus/integration/jade/provider/ElectricEnchantingTableProvider.java index ffc77ebf..5145e0cd 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/integration/jade/provider/ElectricEnchantingTableProvider.java +++ b/src/main/java/dev/anvilcraft/pigsplus/integration/jade/provider/ElectricEnchantingTableProvider.java @@ -33,6 +33,11 @@ public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfi "tooltip.anvilcraft.pigsplus.enchanted_generator.power_rate", String.format("%.3f", serverData.getDouble("powerRate")))); } + if (serverData.contains("prevPowerValue")) { + tooltip.add(Component.translatable( + "tooltip.anvilcraft.pigsplus.enchanted_generator.previous_energy_consumption", + serverData.getInt("prevPowerValue"))); + } } @@ -42,6 +47,7 @@ public void appendServerData(CompoundTag tag, BlockAccessor accessor) { tag.putInt("time", entity.getTime()); tag.putInt("maxPowerValue", entity.getMaxPowerValue()); tag.putDouble("powerRate", entity.getPowerRate()); + tag.putInt("prevPowerValue", entity.getPrevPowerValue()); } } diff --git a/src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json b/src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json index 5c9b15af..cfa5928e 100644 --- a/src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json +++ b/src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json @@ -60,5 +60,6 @@ "jei.anvilcraft.pigsplus.info.spiritual_component": "携带附魔的机巧部件被摧毁时,每条附魔提供20%的概率,生成最多一个灵媒部件", "tooltip.anvilcraft.pigsplus.enchanted_generator.max_power_value": "耗电上限: %d kW", "tooltip.anvilcraft.pigsplus.enchanted_generator.power_rate": "耗能率: %s", + "tooltip.anvilcraft.pigsplus.enchanted_generator.previous_energy_consumption": "上一次附魔的能量消耗: %d", "tooltip.anvilcraft.pigsplus.enchanted_generator.time": "剩余时间: %s" } \ No newline at end of file From 5f9234230e0f264cc1b6bfc7756b2f8dae39ab2a Mon Sep 17 00:00:00 2001 From: TBPig <147127248+TBPig@users.noreply.github.com> Date: Thu, 25 Dec 2025 21:09:41 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=8F=AF=E8=B0=83=E5=BC=8F=E8=83=BD?= =?UTF-8?q?=E9=87=8F=E8=BD=AC=E6=8D=A2=E5=99=A8=E5=BA=8F=E5=88=97=E5=8F=B7?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/AdjustablePowerConverterBlockEntity.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/dev/anvilcraft/pigsplus/block/entity/AdjustablePowerConverterBlockEntity.java b/src/main/java/dev/anvilcraft/pigsplus/block/entity/AdjustablePowerConverterBlockEntity.java index eeec6fdf..138810ea 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/block/entity/AdjustablePowerConverterBlockEntity.java +++ b/src/main/java/dev/anvilcraft/pigsplus/block/entity/AdjustablePowerConverterBlockEntity.java @@ -41,17 +41,17 @@ public AdjustablePowerConverterBlockEntity(BlockEntityType type, BlockPos pos } @Override - protected void saveAdditional(CompoundTag tag, HolderLookup.Provider registries) { - super.saveAdditional(tag, registries); - tag.putInt("feEnergy", feEnergy.getEnergyStored()); + protected void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) { + super.saveAdditional(tag, provider); + tag.put("feEnergy", feEnergy.serializeNBT(provider)); tag.putInt("power", power); tag.putInt("powerTarget", powerTarget); } @Override - public void loadAdditional(CompoundTag tag, HolderLookup.Provider registries) { - super.loadAdditional(tag, registries); - feEnergy.receiveEnergy(tag.getInt("feEnergy"), false); + public void loadAdditional(CompoundTag tag, HolderLookup.Provider provider) { + super.loadAdditional(tag, provider); + feEnergy.deserializeNBT(provider, tag.getCompound("feEnergy")); power = tag.getInt("power"); powerTarget = tag.getInt("powerTarget"); } From 8d812d2b6a36e08aa39891489b68308af5545376 Mon Sep 17 00:00:00 2001 From: TBPig <147127248+TBPig@users.noreply.github.com> Date: Thu, 25 Dec 2025 22:44:54 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=94=B5=E5=8A=9B=E9=99=84=E9=AD=94?= =?UTF-8?q?=E5=8F=B0=E5=B9=B3=E8=A1=A1=E6=80=A7=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../anvilcraft_pigsplus/lang/en_ud.json | 4 +- .../anvilcraft_pigsplus/lang/en_us.json | 4 +- .../block/ElectricEnchantingTableBlock.java | 28 ++++++++++++ .../ElectricEnchantingTableBlockEntity.java | 43 ++++++++----------- .../pigsplus/config/AddonServerConfig.java | 22 ++++------ .../anvilcraft/pigsplus/util/BlockUtil.java | 34 +++++++++------ .../pigsplus/util/ChiseledBookShelfUtil.java | 16 +++---- .../power/electric_enchanting_table.json | 9 +--- .../anvilcraft_pigsplus/lang/zh_cn.json | 4 +- 9 files changed, 88 insertions(+), 76 deletions(-) diff --git a/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_ud.json b/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_ud.json index 2206fb0c..f08cb1d1 100644 --- a/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_ud.json +++ b/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_ud.json @@ -6,9 +6,7 @@ "anvilcraft_pigsplus.configuration.electric_enchanting_table.base_power_consumption_limit.tooltip": "ǝןqɐ⟘ buıʇuɐɥɔuƎ ɔıɹʇɔǝןƎ ɹoɟ ʇıɯıן uoıʇdɯnsuoɔ ɹǝʍod ǝsɐᗺ", "anvilcraft_pigsplus.configuration.electric_enchanting_table.button": "ǝןqɐ⟘ buıʇuɐɥɔuƎ ɔıɹʇɔǝןƎ", "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate": "ǝʇɐᴚ ɹǝʍoԀ ǝsɐǝɹɔǝᗡ", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate.tooltip": "ɟןǝɥSʞooq ɹǝd ǝsɐǝɹɔǝp ǝʇɐɹ uoıʇdɯnsuoɔ ɹǝʍoԀ", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_addition": "uoıʇıppⱯ ɹǝʍoԀ", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_addition.tooltip": "ǝɹoɔ ɹǝd ǝsɐǝɹɔuı ʇıɯıן uoıʇdɯnsuoɔ ɹǝʍoԀ", + "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate.tooltip": "ɹǝʍoԀʇuɐɥɔuǝ ɹǝd ǝsɐǝɹɔǝp ǝʇɐɹ uoıʇdɯnsuoɔ ɹǝʍoԀ", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per2_level": "ןǝʌǝꞀ ᄅɹǝԀ ɹǝʍoԀ", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per2_level.tooltip": "ןǝʌǝꞀ ǝɔuǝıɹǝdxƎ uo pǝsɐᗺ ʇuǝıɔıɟɟǝoƆ uoıʇdɯnsuoƆ ɹǝʍoԀ ɔıʇɐɹpɐnὉ", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per_level": "ןǝʌǝꞀ ɹǝԀ ɹǝʍoԀ", diff --git a/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_us.json b/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_us.json index 813dad7d..0ada3e43 100644 --- a/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_us.json +++ b/src/generated/resources/assets/anvilcraft_pigsplus/lang/en_us.json @@ -6,9 +6,7 @@ "anvilcraft_pigsplus.configuration.electric_enchanting_table.base_power_consumption_limit.tooltip": "Base power consumption limit for Electric Enchanting Table", "anvilcraft_pigsplus.configuration.electric_enchanting_table.button": "Electric Enchanting Table", "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate": "Decrease Power Rate", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate.tooltip": "Power consumption rate decrease per bookShelf", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_addition": "Power Addition", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_addition.tooltip": "Power consumption limit increase per core", + "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate.tooltip": "Power consumption rate decrease per enchantPower", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per2_level": "Power Per2 Level", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per2_level.tooltip": "Quadratic Power Consumption Coefficient Based on Experience Level", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per_level": "Power Per Level", diff --git a/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java b/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java index b7787322..feaa305a 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java +++ b/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java @@ -7,6 +7,7 @@ import dev.dubhe.anvilcraft.api.itemhandler.FilteredItemStackHandler; import dev.dubhe.anvilcraft.api.power.IPowerComponent; import net.minecraft.core.BlockPos; +import net.minecraft.core.particles.ParticleTypes; import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvents; import net.minecraft.sounds.SoundSource; @@ -20,6 +21,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BaseEntityBlock; import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.EnchantingTableBlock; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; @@ -32,11 +34,18 @@ import net.minecraft.world.phys.Vec3; import javax.annotation.Nullable; +import java.util.List; public class ElectricEnchantingTableBlock extends BaseEntityBlock implements IHammerRemovable { public static final BooleanProperty POWERED = BlockStateProperties.POWERED; public static final BooleanProperty OVERLOAD = IPowerComponent.OVERLOAD; + public static final List BOOKSHELF_OFFSETS = + BlockPos.betweenClosedStream(-2, 0, -2, 2, 1, 2) + .filter((blockPos) -> Math.abs(blockPos.getX()) == 2 || Math.abs(blockPos.getZ()) == 2) + .map(BlockPos::immutable) + .toList(); + public ElectricEnchantingTableBlock(Properties properties) { super(properties); registerDefaultState(getStateDefinition() @@ -44,6 +53,7 @@ public ElectricEnchantingTableBlock(Properties properties) { .setValue(POWERED, false) .setValue(OVERLOAD, true)); } + @Override protected MapCodec codec() { return simpleCodec(ElectricEnchantingTableBlock::new); @@ -91,6 +101,24 @@ protected void createBlockStateDefinition(StateDefinition.Builder maxPowerValue | needPower <= 0) { dropItemStack(stack); @@ -188,23 +181,25 @@ private void moveItemToTransformingSlot() { time = CONFIG.electricEnchantingTable.workTick; } - private int calcMaxPowerValue() { - int basePowerConsumptionLimit = CONFIG.electricEnchantingTable.basePowerConsumptionLimit; - if (level == null) return basePowerConsumptionLimit; - int coreCount = BlockUtil.countBlocks(level, getBlockPos(), 2, ModBlocks.MAGNETO_ELECTRIC_CORE_BLOCK); - return CONFIG.electricEnchantingTable.powerAddition * coreCount + basePowerConsumptionLimit; - } - private double calcPowerRate() { + protected double calcPowerRate() { if (level == null) return 0; - int bookshelfCount = BlockUtil.countBlocks(level, getBlockPos(), 2, Blocks.BOOKSHELF); - return Math.pow(1 - CONFIG.electricEnchantingTable.decreasePowerRate, bookshelfCount); + float enchantPower = 0; + for (BlockPos blockPos : ElectricEnchantingTableBlock.BOOKSHELF_OFFSETS) { + BlockPos bookshelfPos = getBlockPos().offset(blockPos); + enchantPower += level.getBlockState(bookshelfPos).getEnchantPowerBonus(level, bookshelfPos); + } + return Math.pow(1 - CONFIG.electricEnchantingTable.decreasePowerRate, enchantPower); } - private Map, Integer> getEnchantment() { + protected Map, Integer> getEnchantment() { Map, Integer> enchantments = new HashMap<>(); if (level == null) return enchantments; - List>> enchants = ChiseledBookShelfUtil.countEnchantmentsInArea(level, getBlockPos(), 2); + List>> enchants = ChiseledBookShelfUtil.countEnchantmentsInArea( + level, + getBlockPos(), + ElectricEnchantingTableBlock.BOOKSHELF_OFFSETS + ); // 遍历所有附魔并保留最高等级 for (Object2IntMap.Entry> enchantment : enchants) { @@ -215,7 +210,7 @@ private Map, Integer> getEnchantment() { return enchantments; } - private int CalcPowerValue() { + protected int CalcCostPowerValue() { int xpLevelCost = 0; for (Map.Entry, Integer> entry : enchantments.entrySet()) { Holder enchantmentType = entry.getKey(); @@ -234,7 +229,7 @@ private int CalcPowerValue() { return (int) Math.ceil(powerFromEnchantments * powerRate); } - private void moveItemToTransformedOverSlot() { + protected void moveItemToTransformedOverSlot() { powerValue = 0; ItemStack stack = itemHandler.getStackInSlot(1).copy(); if (stack.isEmpty()) return; @@ -255,7 +250,7 @@ private void moveItemToTransformedOverSlot() { } } - private ItemStack enchant(ItemStack stack) { + protected ItemStack enchant(ItemStack stack) { ItemStack result = stack.copy(); if (result.is(Items.BOOK)) result = stack.transmuteCopy(Items.ENCHANTED_BOOK); diff --git a/src/main/java/dev/anvilcraft/pigsplus/config/AddonServerConfig.java b/src/main/java/dev/anvilcraft/pigsplus/config/AddonServerConfig.java index 1472feb4..59da17fc 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/config/AddonServerConfig.java +++ b/src/main/java/dev/anvilcraft/pigsplus/config/AddonServerConfig.java @@ -9,7 +9,6 @@ @Config(name = AnvilCraftPigsPlus.MOD_ID, type = ModConfig.Type.SERVER) public class AddonServerConfig { - // TODO:修复config不完全问题 // 自动皇家锻造台 @Comment("Maximum cooldown time of auto royal smithing table (in ticks)") @BoundedDiscrete(min = 1, max = 80) @@ -19,15 +18,10 @@ public class AddonServerConfig { @CollapsibleObject public ElectricEnchantingTable electricEnchantingTable = new ElectricEnchantingTable(); - // 附魔发电机 - @CollapsibleObject - public EnchantedGenerator enchantedGenerator = new EnchantedGenerator(); - - public static class ElectricEnchantingTable { @Comment("Base power consumption limit for Electric Enchanting Table") @BoundedDiscrete(min = 1, max = 32768) - public int basePowerConsumptionLimit = 1024; + public int basePowerConsumptionLimit = 8192; @Comment("Linear Power Consumption Coefficient Based on Experience Level") @BoundedDiscrete(min = 1, max = 2048) @@ -39,17 +33,17 @@ public static class ElectricEnchantingTable { @Comment("Work time for Electric Enchanting Table") @BoundedDiscrete(min = 1, max = 6000) - public int workTick = 200; + public int workTick = 100; - @Comment("Power consumption rate decrease per bookShelf") + @Comment("Power consumption rate decrease per enchantPower") @BoundedDiscrete(min = 0, max = 1) - public double decreasePowerRate = 0.02; - - @Comment("Power consumption limit increase per core") - @BoundedDiscrete(min = 1, max = 16384) - public int powerAddition = 256; + public double decreasePowerRate = 0.06; } + // 附魔发电机 + @CollapsibleObject + public EnchantedGenerator enchantedGenerator = new EnchantedGenerator(); + public static class EnchantedGenerator { @Comment("Maximum power for Overclocking Enchanted Generator") @BoundedDiscrete(min = 0, max = 128000000) diff --git a/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java b/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java index b1ead35e..f645f010 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java +++ b/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java @@ -1,27 +1,35 @@ package dev.anvilcraft.pigsplus.util; -import dev.dubhe.anvilcraft.init.block.ModBlocks; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; +import java.util.List; + public class BlockUtil { - public static int countBlocks(Level level, BlockPos blockPos, int distance, Block target) { + public static int countBlocks(Level level, BlockPos blockPos, List positions, Block target) { int count = 0; - BlockPos.MutableBlockPos mpos = new BlockPos.MutableBlockPos(); - for (int i = -distance; i <= distance; i++) { - for (int j = -distance; j <= distance; j++) { - for (int k = -distance; k <= distance; k++) { - mpos.set(blockPos).move(i, j, k); - if (level.isOutsideBuildHeight(mpos)) continue; - if (level.getBlockState(mpos).is(target)) count++; - } - } + for (BlockPos pos : positions) { + BlockPos targetPos = blockPos.offset(pos); + if (level.isOutsideBuildHeight(targetPos)) continue; + if (level.getBlockState(targetPos).is(target)) count++; } return count; } - public static int countBlocks(Level level, BlockPos blockPos, int distance, Holder target) { - return countBlocks(level, blockPos, distance, target.value()); + public static int countBlocks(Level level, BlockPos blockPos, List positions, Holder target) { + return countBlocks(level, blockPos, positions, target.value()); + } + + public static int countBlocks(Level level, BlockPos blockPos, List positions, TagKey targets) { + int count = 0; + for (BlockPos pos : positions) { + BlockPos targetPos = blockPos.offset(pos); + if (level.isOutsideBuildHeight(targetPos)) continue; + if (level.getBlockState(targetPos).is(targets)) count++; + } + return count; } } diff --git a/src/main/java/dev/anvilcraft/pigsplus/util/ChiseledBookShelfUtil.java b/src/main/java/dev/anvilcraft/pigsplus/util/ChiseledBookShelfUtil.java index d53c2db0..a70ec4b9 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/util/ChiseledBookShelfUtil.java +++ b/src/main/java/dev/anvilcraft/pigsplus/util/ChiseledBookShelfUtil.java @@ -73,16 +73,14 @@ public static int countEnchantmentLevelsInItem(ItemStack itemStack) { /** * 统计这个区域内的所有雕纹书架中有哪些附魔 */ - public static List>> countEnchantmentsInArea(Level level, BlockPos blockPos, int distance) { + public static List>> countEnchantmentsInArea( + Level level, + BlockPos blockPos, + List positions + ) { List>> enchantments = new ArrayList<>(); - BlockPos.MutableBlockPos mpos = new BlockPos.MutableBlockPos(); - for (int i = -distance; i <= distance; i++) { - for (int j = -distance; j <= distance; j++) { - for (int k = -distance; k <= distance; k++) { - mpos.set(blockPos).move(i, j, k); - enchantments.addAll(countEnchantmentsInBlock(level, mpos)); - } - } + for (BlockPos pos : positions) { + enchantments.addAll(countEnchantmentsInBlock(level, blockPos.offset(pos))); } return enchantments; } diff --git a/src/main/resources/assets/anvilcraft_patchouli/patchouli_books/guide/en_us/entries/power/electric_enchanting_table.json b/src/main/resources/assets/anvilcraft_patchouli/patchouli_books/guide/en_us/entries/power/electric_enchanting_table.json index 3d9f6073..0fff09ad 100644 --- a/src/main/resources/assets/anvilcraft_patchouli/patchouli_books/guide/en_us/entries/power/electric_enchanting_table.json +++ b/src/main/resources/assets/anvilcraft_patchouli/patchouli_books/guide/en_us/entries/power/electric_enchanting_table.json @@ -10,7 +10,7 @@ "type": "patchouli:crafting", "anchor": "electric_enchanting_table", "recipe": "anvilcraft_pigsplus:electric_enchanting_table", - "text": "基础最大耗电量1024kW $(br)工作范围:以自己为中心5x5x5 $(li)工作时间:$(thing)10s$() $(li)可以识别工作范围内的,雕纹书架上的,附魔书的所有附魔 $(li)同种附魔取最高等级" + "text": "最大耗电量8192kW $(li)工作时间:$(thing)5s$() $(li)检测范围与附魔台相同 $(li)可以识别检测范围内的,雕纹书架上的,附魔书的所有附魔 $(li)同种附魔取最高等级" }, { "type": "patchouli:text", @@ -20,12 +20,7 @@ { "type": "patchouli:spotlight", "item": "minecraft:bookshelf", - "text": "工作范围内的每个$(item)书架$()可以减少$(thing)2%%$()耗电需求 $(li)乘算叠加" - }, - { - "type": "patchouli:spotlight", - "item": "anvilcraft:magnetoelectric_core", - "text": "工作范围内的每个$(item)磁电核心$()可以增加$(thing)256kW$()最大耗电量" + "text": "检测范围内的每个$(item)书架$()可以减少$(thing)6%%$()耗电需求 $(li)乘算叠加" } ] } diff --git a/src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json b/src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json index cfa5928e..dc84be7a 100644 --- a/src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json +++ b/src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json @@ -6,9 +6,7 @@ "anvilcraft_pigsplus.configuration.electric_enchanting_table.base_power_consumption_limit.tooltip": "电力附魔台的基础能耗上限", "anvilcraft_pigsplus.configuration.electric_enchanting_table.button": "电力附魔台", "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate": "Decrease Power Rate", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate.tooltip": "每个书架提供的节能率", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_addition": "Power Addition", - "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_addition.tooltip": "每个磁电核心提供的耗能上限", + "anvilcraft_pigsplus.configuration.electric_enchanting_table.decrease_power_rate.tooltip": "每个附魔能量提供的节能率", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per2_level": "Power Per2 Level", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per2_level.tooltip": "基于经验等级消耗的平方增长系数", "anvilcraft_pigsplus.configuration.electric_enchanting_table.power_per_level": "Power Per Level", From 5b0b5a3519f58b07dd44fe07534888abbc6759ca Mon Sep 17 00:00:00 2001 From: TBPig <147127248+TBPig@users.noreply.github.com> Date: Thu, 25 Dec 2025 22:49:20 +0800 Subject: [PATCH 4/6] Style --- .../block/ElectricEnchantingTableBlock.java | 1 - .../anvilcraft/pigsplus/util/BlockUtil.java | 35 ------------------- 2 files changed, 36 deletions(-) delete mode 100644 src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java diff --git a/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java b/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java index feaa305a..ca5a16cc 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java +++ b/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java @@ -21,7 +21,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.BaseEntityBlock; import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.EnchantingTableBlock; import net.minecraft.world.level.block.RenderShape; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityTicker; diff --git a/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java b/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java deleted file mode 100644 index f645f010..00000000 --- a/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java +++ /dev/null @@ -1,35 +0,0 @@ -package dev.anvilcraft.pigsplus.util; - -import net.minecraft.core.BlockPos; -import net.minecraft.core.Holder; -import net.minecraft.tags.BlockTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Block; - -import java.util.List; - -public class BlockUtil { - public static int countBlocks(Level level, BlockPos blockPos, List positions, Block target) { - int count = 0; - for (BlockPos pos : positions) { - BlockPos targetPos = blockPos.offset(pos); - if (level.isOutsideBuildHeight(targetPos)) continue; - if (level.getBlockState(targetPos).is(target)) count++; - } - return count; - } - public static int countBlocks(Level level, BlockPos blockPos, List positions, Holder target) { - return countBlocks(level, blockPos, positions, target.value()); - } - - public static int countBlocks(Level level, BlockPos blockPos, List positions, TagKey targets) { - int count = 0; - for (BlockPos pos : positions) { - BlockPos targetPos = blockPos.offset(pos); - if (level.isOutsideBuildHeight(targetPos)) continue; - if (level.getBlockState(targetPos).is(targets)) count++; - } - return count; - } -} From 491c1ffca0095c2f088ce4a17a661e21a00556cf Mon Sep 17 00:00:00 2001 From: TBPig <147127248+TBPig@users.noreply.github.com> Date: Thu, 25 Dec 2025 23:00:50 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=A4=E7=A7=8D?= =?UTF-8?q?=E9=83=A8=E4=BB=B6=E8=8E=B7=E5=8F=96=E6=88=90=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recipe/time_warp/ender_component.json | 14 ++------------ .../pigsplus/data/recipe/RecipeHandler.java | 8 +++----- .../pigsplus/item/KarakuriComponentItem.java | 2 +- .../util/EnderComponentConversionUtil.java | 2 +- .../en_us/entries/smithing/pigs_materials.json | 4 ++-- 5 files changed, 9 insertions(+), 21 deletions(-) diff --git a/src/generated/resources/data/anvilcraft/recipe/time_warp/ender_component.json b/src/generated/resources/data/anvilcraft/recipe/time_warp/ender_component.json index 8f7669f4..5c333d6b 100644 --- a/src/generated/resources/data/anvilcraft/recipe/time_warp/ender_component.json +++ b/src/generated/resources/data/anvilcraft/recipe/time_warp/ender_component.json @@ -2,27 +2,17 @@ "type": "anvilcraft:time_warp", "ingredients": [ { - "items": "anvilcraft_pigsplus:karakuri_component" - }, - { + "count": 6, "items": "minecraft:ender_pearl" }, { - "count": 3, + "count": 18, "items": "minecraft:end_stone" } ], "results": [ { - "count": { - "type": "minecraft:binomial", - "n": 1.0, - "p": 0.2 - }, "id": "anvilcraft_pigsplus:ender_component" - }, - { - "id": "anvilcraft:levitation_powder" } ] } \ No newline at end of file diff --git a/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java b/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java index 94308019..fe25ae90 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java +++ b/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java @@ -30,11 +30,9 @@ public static void init(RegistrateRecipeProvider provider) { .save(provider); TimeWarpRecipe.builder() - .requires(AddonItems.KARAKURI_COMPONENT) - .requires(Items.ENDER_PEARL) - .requires(Items.END_STONE,3) - .result(AddonItems.ENDER_COMPONENT,0.2f) - .result(ModItems.LEVITATION_POWDER) + .requires(Items.ENDER_PEARL,6) + .requires(Items.END_STONE,18) + .result(AddonItems.ENDER_COMPONENT) .save(provider); } } diff --git a/src/main/java/dev/anvilcraft/pigsplus/item/KarakuriComponentItem.java b/src/main/java/dev/anvilcraft/pigsplus/item/KarakuriComponentItem.java index 53c49031..5e049429 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/item/KarakuriComponentItem.java +++ b/src/main/java/dev/anvilcraft/pigsplus/item/KarakuriComponentItem.java @@ -31,7 +31,7 @@ public void onDestroyed(ItemEntity itemEntity, DamageSource damageSource) { if (itemEnchantments == null || itemEnchantments.isEmpty()) return; List> enchantments = itemEnchantments.keySet().stream().toList(); - float probability = 0.2f * Mth.clamp(enchantments.size(), 0, 5); + float probability = 0.25f * Mth.clamp(enchantments.size(), 0, 5); int count = MathUtil.getCount(probability, itemStack.getCount(), level); diff --git a/src/main/java/dev/anvilcraft/pigsplus/util/EnderComponentConversionUtil.java b/src/main/java/dev/anvilcraft/pigsplus/util/EnderComponentConversionUtil.java index 3d36187b..257f705e 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/util/EnderComponentConversionUtil.java +++ b/src/main/java/dev/anvilcraft/pigsplus/util/EnderComponentConversionUtil.java @@ -1,5 +1,5 @@ package dev.anvilcraft.pigsplus.util; public class EnderComponentConversionUtil { - public static final float ConversionChance = 0.2f; + public static final float ConversionChance = 0.5f; } diff --git a/src/main/resources/assets/anvilcraft_patchouli/patchouli_books/guide/en_us/entries/smithing/pigs_materials.json b/src/main/resources/assets/anvilcraft_patchouli/patchouli_books/guide/en_us/entries/smithing/pigs_materials.json index f5ee0ff9..4a6eecec 100644 --- a/src/main/resources/assets/anvilcraft_patchouli/patchouli_books/guide/en_us/entries/smithing/pigs_materials.json +++ b/src/main/resources/assets/anvilcraft_patchouli/patchouli_books/guide/en_us/entries/smithing/pigs_materials.json @@ -15,12 +15,12 @@ "type": "patchouli:spotlight", "item": "anvilcraft_pigsplus:spiritual_component", "link_recipe": true, - "text": "携带$(thing)附魔$()的$(item)机巧部件$()被摧毁时,每条附魔提供20%%的概率,生成最多一个$(item)灵媒部件$() $(p)$(#888888)机魂大悦$()" + "text": "携带$(thing)附魔$()的$(item)机巧部件$()被摧毁时,每条附魔提供25%%的概率,生成最多一个$(item)灵媒部件$() $(p)$(#888888)机魂大悦$()" }, { "type": "anvilcraft:time_warp", "recipe": "anvilcraft:time_warp/ender_component", - "text": "只有20%%成功合成率 $(li)将$(item)机巧部件$()丢入末地传送门,同样有20%%概率获得 $(p)$(#888888)蕴涵传送之力$()" + "text": "也可以将$(item)机巧部件$()丢入末地传送门,有50%%概率获得 $(p)$(#888888)蕴涵传送之力$()" } ] } \ No newline at end of file From 4f1d218348f0f6b4bba38eb059b8faafbbde8192 Mon Sep 17 00:00:00 2001 From: TBPig <147127248+TBPig@users.noreply.github.com> Date: Fri, 26 Dec 2025 08:48:01 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=BD=AC=E6=8D=A2?= =?UTF-8?q?=E5=99=A8=E8=99=9A=E7=A9=BA=E7=94=9F=E7=94=B5bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdjustablePowerConverterBlockEntity.java | 21 +++++++++++++++---- .../pigsplus/data/recipe/RecipeHandler.java | 1 - 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/java/dev/anvilcraft/pigsplus/block/entity/AdjustablePowerConverterBlockEntity.java b/src/main/java/dev/anvilcraft/pigsplus/block/entity/AdjustablePowerConverterBlockEntity.java index 138810ea..f0496cf0 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/block/entity/AdjustablePowerConverterBlockEntity.java +++ b/src/main/java/dev/anvilcraft/pigsplus/block/entity/AdjustablePowerConverterBlockEntity.java @@ -24,14 +24,16 @@ import net.neoforged.neoforge.energy.EnergyStorage; import org.jetbrains.annotations.Nullable; +import java.util.Objects; + @Getter public class AdjustablePowerConverterBlockEntity extends BlockEntity implements IPowerConsumer, IPowerProducer, MenuProvider { private PowerGrid grid = null; private int power = 0; - @Setter private int powerTarget = 16; - + @Setter + private int cooldown = 40; private int time = 0; public final EnergyStorage feEnergy = new EnergyStorage(128000000); @@ -40,6 +42,7 @@ public AdjustablePowerConverterBlockEntity(BlockEntityType type, BlockPos pos super(type, pos, blockState); } + @Override protected void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) { super.saveAdditional(tag, provider); @@ -51,7 +54,7 @@ protected void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) { @Override public void loadAdditional(CompoundTag tag, HolderLookup.Provider provider) { super.loadAdditional(tag, provider); - feEnergy.deserializeNBT(provider, tag.getCompound("feEnergy")); + feEnergy.deserializeNBT(provider, Objects.requireNonNull(tag.get("feEnergy"))); power = tag.getInt("power"); powerTarget = tag.getInt("powerTarget"); } @@ -133,6 +136,11 @@ private void kw2fe() { return; } + // 没有这个代码,就会虚空生电一小段时间 + if (cooldown > 0) { + cooldown--; + return; + } int feConverted = -power * AnvilCraft.CONFIG.powerConverter.powerConverterEfficiency; feEnergy.receiveEnergy(feConverted, false); } @@ -142,10 +150,15 @@ public Component getDisplayName() { return AddonBlocks.ADJUSTABLE_POWER_CONVERTER.get().getName(); } + public void setTarget(int powerTarget) { + this.powerTarget = powerTarget; + this.cooldown = 40; + } + @Override public @Nullable AbstractContainerMenu createMenu(int i, Inventory inventory, Player player) { if (player.isSpectator()) return null; - return new SliderMenu(i, this::setPowerTarget); + return new SliderMenu(i, this::setTarget); } public EnergyStorage getEnergyStorage() { diff --git a/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java b/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java index fe25ae90..0938aac5 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java +++ b/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java @@ -3,7 +3,6 @@ import com.tterrag.registrate.providers.RegistrateRecipeProvider; import dev.anvilcraft.pigsplus.init.AddonBlocks; import dev.anvilcraft.pigsplus.init.AddonItems; -import dev.dubhe.anvilcraft.init.item.ModItems; import dev.dubhe.anvilcraft.recipe.anvil.wrap.ItemInjectRecipe; import dev.dubhe.anvilcraft.recipe.anvil.wrap.TimeWarpRecipe; import dev.dubhe.anvilcraft.recipe.mineral.MineralFountainRecipe;