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..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Ԁ", @@ -60,5 +58,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..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", @@ -60,5 +58,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/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/block/ElectricEnchantingTableBlock.java b/src/main/java/dev/anvilcraft/pigsplus/block/ElectricEnchantingTableBlock.java index b7787322..ca5a16cc 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; @@ -32,11 +33,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 +52,7 @@ public ElectricEnchantingTableBlock(Properties properties) { .setValue(POWERED, false) .setValue(OVERLOAD, true)); } + @Override protected MapCodec codec() { return simpleCodec(ElectricEnchantingTableBlock::new); @@ -91,6 +100,24 @@ protected void createBlockStateDefinition(StateDefinition.Builder type, BlockPos pos super(type, pos, blockState); } + @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, 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/block/entity/ElectricEnchantingTableBlockEntity.java b/src/main/java/dev/anvilcraft/pigsplus/block/entity/ElectricEnchantingTableBlockEntity.java index 579c6a4b..3f914f43 100644 --- a/src/main/java/dev/anvilcraft/pigsplus/block/entity/ElectricEnchantingTableBlockEntity.java +++ b/src/main/java/dev/anvilcraft/pigsplus/block/entity/ElectricEnchantingTableBlockEntity.java @@ -1,7 +1,6 @@ package dev.anvilcraft.pigsplus.block.entity; import dev.anvilcraft.pigsplus.block.ElectricEnchantingTableBlock; -import dev.anvilcraft.pigsplus.util.BlockUtil; import dev.anvilcraft.pigsplus.util.ChiseledBookShelfUtil; import dev.dubhe.anvilcraft.AnvilCraft; import dev.dubhe.anvilcraft.api.IHasDisplayItem; @@ -11,7 +10,6 @@ import dev.dubhe.anvilcraft.api.power.PowerGrid; import dev.dubhe.anvilcraft.block.ChargerBlock; import dev.dubhe.anvilcraft.block.entity.IFilterBlockEntity; -import dev.dubhe.anvilcraft.init.block.ModBlocks; import dev.dubhe.anvilcraft.network.UpdateDisplayItemPacket; import it.unimi.dsi.fastutil.objects.Object2IntMap; import lombok.Getter; @@ -30,7 +28,6 @@ import net.minecraft.world.item.enchantment.EnchantmentHelper; import net.minecraft.world.item.enchantment.ItemEnchantments; import net.minecraft.world.level.Level; -import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; @@ -50,10 +47,12 @@ public class ElectricEnchantingTableBlockEntity extends BlockEntity @Getter private int time = 0; @Getter - private int maxPowerValue = 0; + public final int maxPowerValue = CONFIG.electricEnchantingTable.basePowerConsumptionLimit; 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) { @@ -111,7 +110,6 @@ protected void saveAdditional(CompoundTag tag, HolderLookup.Provider provider) { tag.put("Depository", itemHandler.serializeNBT(provider)); tag.putInt("time", time); tag.putInt("powerValue", powerValue); - tag.putInt("maxPowerValue", maxPowerValue); tag.putDouble("powerRate", powerRate); } @@ -121,7 +119,6 @@ public void loadAdditional(CompoundTag tag, HolderLookup.Provider provider) { itemHandler.deserializeNBT(provider, tag.getCompound("Depository")); time = tag.getInt("time"); powerValue = tag.getInt("powerValue"); - maxPowerValue = tag.getInt("maxPowerValue"); powerRate = tag.getDouble("powerRate"); } @@ -142,7 +139,6 @@ private void dropItemStack(ItemStack stack) { @Override public void gridTick() { if (level == null || level.isClientSide()) return; - maxPowerValue = calcMaxPowerValue(); powerRate = calcPowerRate(); } @@ -165,17 +161,17 @@ public void tick(Level level1, BlockPos blockPos) { } } - private void moveItemToTransformingSlot() { + protected void moveItemToTransformingSlot() { ItemStack stack = itemHandler.getStackInSlot(0).copy(); itemHandler.setStackInSlot(0, ItemStack.EMPTY); if (stack.isEmpty()) return; if (!itemHandler.getStackInSlot(1).isEmpty()) return; - maxPowerValue = calcMaxPowerValue(); powerRate = calcPowerRate(); enchantments = getEnchantment(); - int needPower = CalcPowerValue(); + int needPower = CalcCostPowerValue(); + prevPowerValue = needPower; if (needPower > maxPowerValue | needPower <= 0) { dropItemStack(stack); return; @@ -185,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) { @@ -212,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(); @@ -231,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; @@ -252,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/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/data/recipe/RecipeHandler.java b/src/main/java/dev/anvilcraft/pigsplus/data/recipe/RecipeHandler.java index 94308019..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; @@ -30,11 +29,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/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/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/BlockUtil.java b/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java deleted file mode 100644 index b1ead35e..00000000 --- a/src/main/java/dev/anvilcraft/pigsplus/util/BlockUtil.java +++ /dev/null @@ -1,27 +0,0 @@ -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.world.level.Level; -import net.minecraft.world.level.block.Block; - -public class BlockUtil { - public static int countBlocks(Level level, BlockPos blockPos, int distance, 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++; - } - } - } - return count; - } - public static int countBlocks(Level level, BlockPos blockPos, int distance, Holder target) { - return countBlocks(level, blockPos, distance, target.value()); - } -} 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/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/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_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 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..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", @@ -60,5 +58,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