Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,11 @@
"item.anvilcraft_pigsplus.chaotic_raw_ore": "ǝɹO ʍɐᴚ ɔıʇoɐɥƆ",
"item.anvilcraft_pigsplus.ender_component": "ʇuǝuodɯoƆ ɹǝpuƎ",
"item.anvilcraft_pigsplus.karakuri_component": "ʇuǝuodɯoƆ ıɹnʞɐɹɐʞ",
"item.anvilcraft_pigsplus.portable_wireless_charger": "ɹǝbɹɐɥƆ ssǝןǝɹıM ǝןqɐʇɹoԀ",
"item.anvilcraft_pigsplus.spiritual_component": "ʇuǝuodɯoƆ ןɐnʇıɹıdS",
"itemGroup.anvilcraft_pigsplus.addon_items": "snןԀ sbıԀ :ʇɟɐɹƆןıʌuⱯ",
"jei.anvilcraft.pigsplus.info.ender_component": "˙ʇuǝuodɯoƆ ɹǝpuƎ ɐ uıɐʇqo oʇ ǝɔuɐɥɔ %0ᄅ ɐ sı ǝɹǝɥʇ 'ןɐʇɹod puƎ ǝɥʇ oʇuı ʇuǝuodɯoƆ ıɹnʞɐɹɐʞ ɐ ʍoɹɥ⟘",
"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",
"jei.anvilcraft.pigsplus.info.ender_component": "˙ʇuǝuodɯoƆ ɹǝpuƎ ɐ uıɐʇqo oʇ ǝɔuɐɥɔ %%ɟ0˙% ɐ sı ǝɹǝɥʇ 'ןɐʇɹod puƎ ǝɥʇ oʇuı ʇuǝuodɯoƆ ıɹnʞɐɹɐʞ ɐ ʍoɹɥ⟘",
"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ıʌǝɹԀ",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,11 @@
"item.anvilcraft_pigsplus.chaotic_raw_ore": "Chaotic Raw Ore",
"item.anvilcraft_pigsplus.ender_component": "Ender Component",
"item.anvilcraft_pigsplus.karakuri_component": "Karakuri Component",
"item.anvilcraft_pigsplus.portable_wireless_charger": "Portable Wireless Charger",
"item.anvilcraft_pigsplus.spiritual_component": "Spiritual Component",
"itemGroup.anvilcraft_pigsplus.addon_items": "AnvilCraft: Pigs Plus",
"jei.anvilcraft.pigsplus.info.ender_component": "Throw a Karakuri Component into the End portal, there is a 20% chance to obtain a Ender Component.",
"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.",
"jei.anvilcraft.pigsplus.info.ender_component": "Throw a Karakuri Component into the End portal, there is a %.0f%% chance to obtain a Ender Component.",
"jei.anvilcraft.pigsplus.info.spiritual_component": "When a Karakuri Component is destroyed, each enchantment provides a %.0f%% 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",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "anvilcraft_pigsplus:item/portable_wireless_charger"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
{
"parent": "minecraft:recipes/root",
"criteria": {
"has_karakuri_component": {
"conditions": {
"items": [
{
"items": "anvilcraft_pigsplus:karakuri_component"
}
]
},
"trigger": "minecraft:inventory_changed"
},
"has_the_recipe": {
"conditions": {
"recipe": "anvilcraft_pigsplus:portable_wireless_charger"
},
"trigger": "minecraft:recipe_unlocked"
}
},
"requirements": [
[
"has_the_recipe",
"has_karakuri_component"
]
],
"rewards": {
"recipes": [
"anvilcraft_pigsplus:portable_wireless_charger"
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"A": {
"item": "anvilcraft:power_converter_big"
},
"B": {
"item": "anvilcraft_pigsplus:karakuri_component"
},
"C": {
"item": "anvilcraft:charger"
},
"S": {
"item": "minecraft:copper_ingot"
}
},
"pattern": [
"SAS",
"SBS",
"SCS"
],
"result": {
"count": 1,
"id": "anvilcraft_pigsplus:portable_wireless_charger"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ public class ElectricEnchantingTableBlockEntity extends BlockEntity
public Map<Holder<Enchantment>, Integer> enchantments = new HashMap<>();
@Getter
private int time = 0;
@Getter
public final int maxPowerValue = CONFIG.electricEnchantingTable.basePowerConsumptionLimit;
private int powerValue = 0;
@Getter
private double powerRate = 1;
Expand Down Expand Up @@ -172,7 +170,7 @@ protected void moveItemToTransformingSlot() {

int needPower = CalcCostPowerValue();
prevPowerValue = needPower;
if (needPower > maxPowerValue | needPower <= 0) {
if (needPower > CONFIG.electricEnchantingTable.basePowerConsumptionLimit | needPower <= 0) {
dropItemStack(stack);
return;
}
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/dev/anvilcraft/pigsplus/data/lang/JeiLang.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ public class JeiLang {
public static void init(RegistrateLangProvider provider) {
provider.add(
"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."
"When a Karakuri Component is destroyed, each enchantment provides a %.0f%% chance to generate at most one Medium Component."
);

provider.add(
"jei.anvilcraft.pigsplus.info.ender_component",
"Throw a Karakuri Component into the End portal, there is a 20% chance to obtain a Ender Component."
"Throw a Karakuri Component into the End portal, there is a %.0f%% chance to obtain a Ender Component."
);


Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package dev.anvilcraft.pigsplus.event;

import dev.anvilcraft.pigsplus.item.PortableWirelessChargerItem;
import net.minecraft.server.level.ServerPlayer;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.neoforge.event.tick.PlayerTickEvent;

@EventBusSubscriber
public class PlayerTickEventListener {

@SubscribeEvent
public static void onPlayerTick(PlayerTickEvent.Post event) {
if (event.getEntity() instanceof ServerPlayer serverPlayer) {
PortableWirelessChargerItem.playerTick(serverPlayer);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@

import static dev.anvilcraft.pigsplus.AnvilCraftPigsPlus.REGISTRATE;

public class AddonBlocks {
public class AddonBlocks {
static {
REGISTRATE.defaultCreativeTab(AddonItemGroups.ADDON_ITEMS.getKey());
}
Expand Down
18 changes: 18 additions & 0 deletions src/main/java/dev/anvilcraft/pigsplus/init/AddonItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@

import com.tterrag.registrate.util.entry.ItemEntry;
import dev.anvilcraft.pigsplus.item.KarakuriComponentItem;
import dev.anvilcraft.pigsplus.item.PortableWirelessChargerItem;
import dev.dubhe.anvilcraft.data.AnvilCraftDatagen;
import dev.dubhe.anvilcraft.init.block.ModBlocks;
import dev.dubhe.anvilcraft.init.item.ModItemTags;
import net.minecraft.data.recipes.RecipeCategory;
import net.minecraft.data.recipes.ShapedRecipeBuilder;
import net.minecraft.data.recipes.ShapelessRecipeBuilder;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
Expand Down Expand Up @@ -47,6 +50,21 @@ public class AddonItems {
.save(provider))
.register();

public static final ItemEntry<PortableWirelessChargerItem> PORTABLE_WIRELESS_CHARGER = REGISTRATE
.item("portable_wireless_charger", PortableWirelessChargerItem::new)
.properties((properties) -> properties.stacksTo(1))
.recipe((ctx, provider) -> ShapedRecipeBuilder.shaped(RecipeCategory.MISC, ctx.get())
.pattern("SAS")
.pattern("SBS")
.pattern("SCS")
.define('S', Items.COPPER_INGOT)
.define('A', ModBlocks.POWER_CONVERTER_BIG)
.define('B', AddonItems.KARAKURI_COMPONENT)
.define('C', ModBlocks.CHARGER)
.unlockedBy(AnvilCraftDatagen.hasItem(AddonItems.KARAKURI_COMPONENT), AnvilCraftDatagen.has(AddonItems.KARAKURI_COMPONENT))
.save(provider))
.register();

public static void register() {
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
import snownee.jade.api.ITooltip;
import snownee.jade.api.config.IPluginConfig;

import static dev.anvilcraft.pigsplus.AnvilCraftPigsPlus.CONFIG;

public enum ElectricEnchantingTableProvider implements IBlockComponentProvider, IServerDataProvider<BlockAccessor> {
INSTANCE;

Expand Down Expand Up @@ -45,7 +47,7 @@ public void appendTooltip(ITooltip tooltip, BlockAccessor accessor, IPluginConfi
public void appendServerData(CompoundTag tag, BlockAccessor accessor) {
if (accessor.getBlockEntity() instanceof ElectricEnchantingTableBlockEntity entity) {
tag.putInt("time", entity.getTime());
tag.putInt("maxPowerValue", entity.getMaxPowerValue());
tag.putInt("maxPowerValue", CONFIG.electricEnchantingTable.basePowerConsumptionLimit);
tag.putDouble("powerRate", entity.getPowerRate());
tag.putInt("prevPowerValue", entity.getPrevPowerValue());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;

import static dev.anvilcraft.pigsplus.item.KarakuriComponentItem.PROBABILITY;
import static dev.anvilcraft.pigsplus.util.EnderComponentConversionUtil.ConversionChance;

@JeiPlugin
public class AddonJeiPlugin implements IModPlugin {

Expand All @@ -20,12 +23,12 @@ public ResourceLocation getPluginUid() {
public void registerRecipes(IRecipeRegistration registration) {
registration.addItemStackInfo(
AddonItems.SPIRITUAL_COMPONENT.asStack(),
Component.translatable("jei.anvilcraft.pigsplus.info.spiritual_component")
Component.translatable("jei.anvilcraft.pigsplus.info.spiritual_component", PROBABILITY*100)
);

registration.addItemStackInfo(
AddonItems.ENDER_COMPONENT.asStack(),
Component.translatable("jei.anvilcraft.pigsplus.info.ender_component")
Component.translatable("jei.anvilcraft.pigsplus.info.ender_component", ConversionChance * 100)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@
import java.util.List;

public class KarakuriComponentItem extends Item {
public static final float PROBABILITY = 0.25f;

public KarakuriComponentItem(Properties properties) {
super(properties);
}
Expand All @@ -31,8 +33,7 @@ public void onDestroyed(ItemEntity itemEntity, DamageSource damageSource) {
if (itemEnchantments == null || itemEnchantments.isEmpty()) return;

List<Holder<Enchantment>> enchantments = itemEnchantments.keySet().stream().toList();
float probability = 0.25f * Mth.clamp(enchantments.size(), 0, 5);

float probability = Mth.clamp(PROBABILITY * enchantments.size(), 0f, 1f);
int count = MathUtil.getCount(probability, itemStack.getCount(), level);

// 生成灵媒部件
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
package dev.anvilcraft.pigsplus.item;

import dev.anvilcraft.pigsplus.init.AddonItems;
import dev.dubhe.anvilcraft.AnvilCraft;
import dev.dubhe.anvilcraft.api.power.DynamicPowerComponent;
import dev.dubhe.anvilcraft.api.power.IDynamicPowerComponentHolder;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.neoforged.neoforge.capabilities.Capabilities;
import net.neoforged.neoforge.energy.IEnergyStorage;

public class PortableWirelessChargerItem extends Item {
public static final DynamicPowerComponent.PowerConsumption CONSUMPTION = new DynamicPowerComponent.PowerConsumption(512);


public PortableWirelessChargerItem(Properties properties) {
super(properties);
}

public static void playerTick(ServerPlayer player) {
refreshPower(player);
chargePlayerItems(player);
}

public static void refreshPower(ServerPlayer player) {
IDynamicPowerComponentHolder holder = IDynamicPowerComponentHolder.of(player);
DynamicPowerComponent powerComponent = holder.anvilcraft$getPowerComponent();
boolean isInInventory = player.getInventory().contains(AddonItems.PORTABLE_WIRELESS_CHARGER.asStack());
if (isInInventory) {
powerComponent.getPowerConsumptions().add(CONSUMPTION);
} else {
powerComponent.getPowerConsumptions().remove(CONSUMPTION);
}
}

public static void chargePlayerItems(ServerPlayer player) {
boolean isInInventory = player.getInventory().contains(AddonItems.PORTABLE_WIRELESS_CHARGER.asStack());
int feEnergy = CONSUMPTION.amount() * AnvilCraft.CONFIG.powerConverter.powerConverterEfficiency;
if (!isInInventory) return;
// 遍历玩家物品栏,尝试为有能量槽的物品充电
for (int i = 0; i < player.getInventory().getContainerSize(); i++) {
ItemStack itemStack = player.getInventory().getItem(i);
if (itemStack.isEmpty()) continue;

IEnergyStorage itemEnergy = itemStack.getCapability(Capabilities.EnergyStorage.ITEM);
if (itemEnergy == null) continue;
if (!itemEnergy.canReceive()) continue;

int receiveEnergy = itemEnergy.receiveEnergy(feEnergy, false);
feEnergy -= receiveEnergy;
if (feEnergy <= 0) break;
}
}


}
5 changes: 3 additions & 2 deletions src/main/resources/assets/anvilcraft_pigsplus/lang/zh_cn.json
Original file line number Diff line number Diff line change
Expand Up @@ -52,10 +52,11 @@
"item.anvilcraft_pigsplus.chaotic_raw_ore": "混沌粗矿",
"item.anvilcraft_pigsplus.ender_component": "末影部件",
"item.anvilcraft_pigsplus.karakuri_component": "机巧部件",
"item.anvilcraft_pigsplus.portable_wireless_charger": "便携无限充电器",
"item.anvilcraft_pigsplus.spiritual_component": "灵媒部件",
"itemGroup.anvilcraft_pigsplus.addon_items": "铁砧工艺:猪+",
"jei.anvilcraft.pigsplus.info.ender_component": "将机巧部件丢入末地传送门,有20%概率获得",
"jei.anvilcraft.pigsplus.info.spiritual_component": "携带附魔的机巧部件被摧毁时,每条附魔提供20%的概率,生成最多一个灵媒部件",
"jei.anvilcraft.pigsplus.info.ender_component": "将机巧部件丢入末地传送门,有%.0f%%概率获得",
"jei.anvilcraft.pigsplus.info.spiritual_component": "携带附魔的机巧部件被摧毁时,每条附魔提供%.0f%%的概率,生成最多一个灵媒部件",
"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",
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.