Skip to content

Commit 854894b

Browse files
author
Circulate233
committed
重写了矿机配方系统
为辉光魔力池的硬编码部分提供本地化key 为计算机的硬编码部分提供本地化key
1 parent 3dc4317 commit 854894b

27 files changed

+1443
-169
lines changed

build.gradle.kts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ plugins {
1313

1414
// Project properties
1515
group = "github.kasuminova.novaeng"
16-
version = "1.22.6"
16+
version = "1.22.7"
1717

1818
// Set the toolchain version to decouple the Java we run Gradle with from the Java used to compile and run the mod
1919
java {
@@ -198,13 +198,15 @@ dependencies {
198198
isTransitive = false
199199
}
200200
annotationProcessor("org.ow2.asm:asm-debug-all:5.2")
201-
annotationProcessor("com.google.guava:guava:30.0-jre")
201+
annotationProcessor("com.google.guava:guava:32.0.1-android")
202202
annotationProcessor("com.google.code.gson:gson:2.8.9")
203203
annotationProcessor (mixin) {
204204
isTransitive = false
205205
}
206206
compileOnlyApi("org.jetbrains:annotations:24.1.0")
207207
annotationProcessor("org.jetbrains:annotations:24.1.0")
208+
compileOnly("org.projectlombok:lombok:1.18.24")
209+
annotationProcessor("org.projectlombok:lombok:1.18.24")
208210

209211
// Performance Test Tool
210212
// runtimeOnly(rfg.deobf("curse.maven:spark-361579:3542217"))

src/main/java/github/kasuminova/novaeng/client/ClientProxy.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package github.kasuminova.novaeng.client;
22

33
import github.kasuminova.mmce.client.renderer.MachineControllerRenderer;
4+
import github.kasuminova.novaeng.NovaEngineeringCore;
45
import github.kasuminova.novaeng.client.book.BookTransformerAppendModifiers;
56
import github.kasuminova.novaeng.client.gui.GuiECalculatorController;
67
import github.kasuminova.novaeng.client.gui.GuiEFabricatorController;
@@ -19,6 +20,7 @@
1920
import github.kasuminova.novaeng.common.CommonProxy;
2021
import github.kasuminova.novaeng.common.command.CommandPacketProfiler;
2122
import github.kasuminova.novaeng.common.command.ExportResearchDataToJson;
23+
import github.kasuminova.novaeng.common.config.NovaEngCoreConfig;
2224
import github.kasuminova.novaeng.common.registry.RegistryBlocks;
2325
import github.kasuminova.novaeng.common.registry.RegistryItems;
2426
import github.kasuminova.novaeng.common.tile.TileHyperNetTerminal;
@@ -38,7 +40,8 @@
3840
import net.minecraftforge.client.ClientCommandHandler;
3941
import net.minecraftforge.client.event.ModelRegistryEvent;
4042
import net.minecraftforge.common.MinecraftForge;
41-
import net.minecraftforge.common.config.Configuration;
43+
import net.minecraftforge.common.config.Config;
44+
import net.minecraftforge.common.config.ConfigManager;
4245
import net.minecraftforge.fml.client.registry.ClientRegistry;
4346
import net.minecraftforge.fml.common.Loader;
4447
import net.minecraftforge.fml.common.Mod;
@@ -47,7 +50,6 @@
4750
import slimeknights.tconstruct.library.book.TinkerBook;
4851

4952
import javax.annotation.Nullable;
50-
import java.io.File;
5153

5254
import static github.kasuminova.novaeng.mixin.NovaEngCoreEarlyMixinLoader.checkJavaVersion;
5355
import static github.kasuminova.novaeng.mixin.NovaEngCoreEarlyMixinLoader.isCleanroomLoader;
@@ -60,18 +62,22 @@ public ClientProxy() {
6062
MinecraftForge.EVENT_BUS.register(this);
6163
}
6264

65+
@Override
66+
public boolean isClient(){
67+
return true;
68+
}
69+
6370
@Override
6471
public void construction() {
6572
super.construction();
6673

67-
var config = new Configuration(new File(Loader.instance().getConfigDir(), "novaeng_core.cfg"));
68-
config.load();
69-
if (config.getBoolean("javaCheck", Configuration.CATEGORY_GENERAL,true,"java1.8.0_51 is bad")) {
74+
ConfigManager.sync(NovaEngineeringCore.MOD_ID, Config.Type.INSTANCE);
75+
76+
if (NovaEngCoreConfig.javaCheck) {
7077
if (!isCleanroomLoader()){
7178
checkJavaVersion();
7279
}
7380
}
74-
config.save();
7581

7682
TitleUtils.setRandomTitle("*Construction*");
7783
}

src/main/java/github/kasuminova/novaeng/common/CommonProxy.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import github.kasuminova.novaeng.common.container.ContainerSingularityCore;
1818
import github.kasuminova.novaeng.common.enchantment.MagicBreaking;
1919
import github.kasuminova.novaeng.common.estorage.EStorageCellHandler;
20+
import github.kasuminova.novaeng.common.handler.DrillHandler;
2021
import github.kasuminova.novaeng.common.handler.ECalculatorEventHandler;
2122
import github.kasuminova.novaeng.common.handler.EFabricatorEventHandler;
2223
import github.kasuminova.novaeng.common.handler.EStorageEventHandler;
@@ -37,6 +38,7 @@
3738
import github.kasuminova.novaeng.common.machine.Drills.ManaOreDrill;
3839
import github.kasuminova.novaeng.common.machine.Drills.MineralExtractor;
3940
import github.kasuminova.novaeng.common.machine.Drills.OrichalcosDrill;
41+
import github.kasuminova.novaeng.common.machine.Drills.SmallOreDrill;
4042
import github.kasuminova.novaeng.common.machine.Drills.VoidMiner;
4143
import github.kasuminova.novaeng.common.machine.GeocentricDrill;
4244
import github.kasuminova.novaeng.common.machine.IllumPool;
@@ -84,6 +86,10 @@ public CommonProxy() {
8486
MinecraftForge.EVENT_BUS.register(new RegistryItems());
8587
}
8688

89+
public boolean isClient(){
90+
return false;
91+
}
92+
8793
public void construction() {
8894
if (Loader.isModLoaded("ecoaeextension")){
8995
throw new RuntimeException(NovaEngCoreEarlyMixinLoader.getString("mod.ecoae.warning"));
@@ -102,6 +108,10 @@ public void preInit() {
102108
MinecraftForge.EVENT_BUS.register(EnchantmentHandler.INSTANCE);
103109
MinecraftForge.EVENT_BUS.register(OreHandler.INSTANCE);
104110

111+
if (NovaEngCoreConfig.SERVER.SpecialMachine) {
112+
MinecraftForge.EVENT_BUS.register(DrillHandler.INSTANCE);
113+
}
114+
105115
if (Loader.isModLoaded("ic2")) {
106116
IntegrationIC2.preInit();
107117
}
@@ -143,6 +153,7 @@ public void init() {
143153
RegistryMachineSpecial.registrySpecialMachine(DifferentWorld.INSTANCE);
144154
RegistryMachineSpecial.registrySpecialMachine(ManaOreDrill.INSTANCE);
145155
RegistryMachineSpecial.registrySpecialMachine(OrichalcosDrill.INSTANCE);
156+
RegistryMachineSpecial.registrySpecialMachine(SmallOreDrill.INSTANCE);
146157
}
147158
}
148159
if (Mods.AE2.isPresent()) {

src/main/java/github/kasuminova/novaeng/common/adapter/astralsorcery/AdapterStarlightInfuser.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import github.kasuminova.mmce.common.event.recipe.RecipeCheckEvent;
88
import github.kasuminova.mmce.common.event.recipe.RecipeEvent;
99
import github.kasuminova.novaeng.common.machine.IllumPool;
10+
import github.kasuminova.novaeng.common.util.Function;
1011
import hellfirepvp.astralsorcery.common.crafting.ItemHandle;
1112
import hellfirepvp.astralsorcery.common.crafting.infusion.AbstractInfusionRecipe;
1213
import hellfirepvp.astralsorcery.common.crafting.infusion.InfusionRecipeRegistry;
@@ -43,12 +44,7 @@ public Collection<MachineRecipe> createRecipesFor(final ResourceLocation owningM
4344
final List<RecipeModifier> modifiers,
4445
final List<ComponentRequirement<?, ?>> additionalRequirements,
4546
final Map<Class<?>, List<IEventHandler<RecipeEvent>>> eventHandlers,
46-
final List<String> recipeTooltips)
47-
{
48-
if (!owningMachineName.equals(IllumPool.REGISTRY_NAME)) {
49-
throw new IllegalArgumentException("AdapterStarlightInfuser only can be used with IllumPool.");
50-
}
51-
47+
final List<String> recipeTooltips) {
5248
int ids = InfusionRecipeRegistry.recipes.size() + InfusionRecipeRegistry.mtRecipes.size();
5349

5450
List<MachineRecipe> recipes = new ArrayList<>();
@@ -62,7 +58,7 @@ public Collection<MachineRecipe> createRecipesFor(final ResourceLocation owningM
6258
}
6359

6460
MachineRecipe recipe = createRecipeShell(
65-
new ResourceLocation("astralsorcery", "infusion_" + incId),
61+
new ResourceLocation("astralsorcery", "infusion_" + incId),
6662
owningMachineName,
6763
20, 0, false);
6864

@@ -115,10 +111,11 @@ public Collection<MachineRecipe> createRecipesFor(final ResourceLocation owningM
115111
if (event.phase != Phase.START) return;
116112
IllumPool.onRecipeTick(event, manaToConsume);
117113
});
118-
recipe.addTooltip("魔力消耗:§b" + manaToConsume);
114+
recipe.addTooltip(Function.getText("novaeng.illum_pool.input.mana", manaToConsume));
119115
addStarlightCatalystHandler(recipe);
120-
recipe.addTooltip("辉光魔力池模式:§b星光");
121-
recipe.addTooltip("消耗 §a1§f 点§e辉光魔力§f可替代 §a25%§f 的§b魔力消耗§f。");
116+
recipe.addTooltip(Function.getText("novaeng.illum_pool.illum_pool.mode",
117+
Function.getText("top.illum_pool.mode.d")));
118+
recipe.addTooltip("novaeng.illum_pool.input.illum");
122119

123120
recipes.add(recipe);
124121
incId++;
@@ -140,11 +137,11 @@ protected static void addStarlightCatalystHandler(final MachineRecipe recipe) {
140137
hasCatalyst = true;
141138
}
142139
if (hasCatalyst) {
143-
event.setFailed("辉光魔力池模式不匹配或缺少物品输入!");
140+
event.setFailed("novaeng.illum_pool.failed.input");
144141
return;
145142
}
146143
if (!controller.hasModifierReplacement(IllumPool.STARLIGHT_CATALYST)) {
147-
event.setFailed("辉光魔力池模式不匹配或缺少物品输入!");
144+
event.setFailed("novaeng.illum_pool.failed.input");
148145
}
149146
});
150147
}

src/main/java/github/kasuminova/novaeng/common/adapter/botania/AdapterBotaniaManaPool.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import github.kasuminova.mmce.common.event.recipe.RecipeCheckEvent;
99
import github.kasuminova.mmce.common.event.recipe.RecipeEvent;
1010
import github.kasuminova.novaeng.common.machine.IllumPool;
11+
import github.kasuminova.novaeng.common.util.Function;
1112
import hellfirepvp.modularmachinery.common.crafting.MachineRecipe;
1213
import hellfirepvp.modularmachinery.common.crafting.adapter.RecipeAdapter;
1314
import hellfirepvp.modularmachinery.common.crafting.helper.ComponentRequirement;
@@ -42,10 +43,6 @@ public Collection<MachineRecipe> createRecipesFor(final ResourceLocation owningM
4243
final List<ComponentRequirement<?, ?>> additionalRequirements,
4344
final Map<Class<?>, List<IEventHandler<RecipeEvent>>> eventHandlers,
4445
final List<String> recipeTooltips) {
45-
if (!owningMachineName.equals(IllumPool.REGISTRY_NAME)) {
46-
throw new IllegalArgumentException("AdapterBotaniaManaPool only can be used with IllumPool.");
47-
}
48-
4946
List<MachineRecipe> recipes = new ArrayList<>();
5047
for (final RecipeManaInfusion infusionRecipe : BotaniaAPI.manaInfusionRecipes) {
5148
MachineRecipe recipe = createRecipeShell(
@@ -82,44 +79,48 @@ public Collection<MachineRecipe> createRecipesFor(final ResourceLocation owningM
8279
if (event.phase != Phase.START) return;
8380
IllumPool.onRecipeTick(event, manaToConsume);
8481
});
85-
recipe.addTooltip("魔力消耗:§b" + manaToConsume);
82+
recipe.addTooltip(Function.getText("novaeng.illum_pool.input.mana",manaToConsume));
8683

8784
// Catalyst
8885
IBlockState catalyst = infusionRecipe.getCatalyst();
8986
if (catalyst == null) {
9087
addDefaultCatalystHandler(recipe);
91-
recipe.addTooltip("辉光魔力池模式:§a普通");
88+
recipe.addTooltip(Function.getText("novaeng.illum_pool.illum_pool.mode",
89+
Function.getText("top.illum_pool.mode.e")));
9290
} else if (catalyst.equals(RecipeManaInfusion.conjurationState)) {
9391
recipe.addRecipeEventHandler(RecipeCheckEvent.class, (IEventHandler<RecipeCheckEvent>) event -> {
9492
if (event.phase != Phase.START) return;
9593
TileMultiblockMachineController controller = event.getController();
9694
if (!controller.hasModifierReplacement(IllumPool.CONJURATION_CATALYST)) {
97-
event.setFailed("辉光魔力池模式不匹配或缺少物品输入!");
95+
event.setFailed("novaeng.illum_pool.failed.input");
9896
}
9997
});
100-
recipe.addTooltip("辉光魔力池模式:§d炼造");
98+
recipe.addTooltip(Function.getText("novaeng.illum_pool.illum_pool.mode",
99+
Function.getText("top.illum_pool.mode.b")));
101100
} else if (catalyst.equals(RecipeManaInfusion.alchemyState)) {
102101
recipe.addRecipeEventHandler(RecipeCheckEvent.class, (IEventHandler<RecipeCheckEvent>) event -> {
103102
if (event.phase != Phase.START) return;
104103
TileMultiblockMachineController controller = event.getController();
105104
if (!controller.hasModifierReplacement(IllumPool.ALCHEMY_CATALYST)) {
106-
event.setFailed("辉光魔力池模式不匹配或缺少物品输入!");
105+
event.setFailed("novaeng.illum_pool.failed.input");
107106
}
108107
});
109-
recipe.addTooltip("辉光魔力池模式:§e炼金");
108+
recipe.addTooltip(Function.getText("novaeng.illum_pool.illum_pool.mode",
109+
Function.getText("top.illum_pool.mode.a")));
110110
} else if (catalyst.equals(ExtraBotanyAPI.dimensionState)) {
111111
recipe.addRecipeEventHandler(RecipeCheckEvent.class, (IEventHandler<RecipeCheckEvent>) event -> {
112112
if (event.phase != Phase.START) return;
113113
TileMultiblockMachineController controller = event.getController();
114114
if (!controller.hasModifierReplacement(IllumPool.DIMENSION_CATALYST)) {
115-
event.setFailed("辉光魔力池模式不匹配或缺少物品输入!");
115+
event.setFailed("novaeng.illum_pool.failed.input");
116116
}
117117
});
118-
recipe.addTooltip("辉光魔力池模式:§5次元");
118+
recipe.addTooltip(Function.getText("novaeng.illum_pool.illum_pool.mode",
119+
Function.getText("top.illum_pool.mode.c")));
119120
} else {
120121
addDefaultCatalystHandler(recipe);
121122
}
122-
recipe.addTooltip("消耗 §a1§f 点§e辉光魔力§f可替代 §a25%§f 的§b魔力消耗§f。");
123+
recipe.addTooltip("novaeng.illum_pool.input.illum");
123124

124125
recipes.add(recipe);
125126
incId++;
@@ -141,11 +142,11 @@ protected static void addDefaultCatalystHandler(final MachineRecipe recipe) {
141142
hasCatalyst = true;
142143
}
143144
if (hasCatalyst) {
144-
event.setFailed("辉光魔力池模式不匹配或缺少物品输入!");
145+
event.setFailed("novaeng.illum_pool.failed.input");
145146
return;
146147
}
147148
if (!controller.hasModifierReplacement(IllumPool.NORMAL_CATALYST)) {
148-
event.setFailed("辉光魔力池模式不匹配或缺少物品输入!");
149+
event.setFailed("novaeng.illum_pool.failed.input");
149150
}
150151
});
151152
}

src/main/java/github/kasuminova/novaeng/common/config/NovaEngCoreConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public static class Client {
3030

3131
@Config.RequiresMcRestart
3232
@Config.Name("爆炸")
33-
public boolean piece = true;
33+
public boolean piece = false;
3434

3535
}
3636

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package github.kasuminova.novaeng.common.handler;
2+
3+
import codechicken.lib.util.ItemUtils;
4+
import crafttweaker.api.item.IItemStack;
5+
import crafttweaker.api.minecraft.CraftTweakerMC;
6+
import hellfirepvp.modularmachinery.common.tiles.base.TileMultiblockMachineController;
7+
import net.minecraft.util.math.BlockPos;
8+
import net.minecraft.world.World;
9+
import net.minecraftforge.event.world.BlockEvent;
10+
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
11+
12+
import static crafttweaker.CraftTweakerAPI.itemUtils;
13+
14+
public class DrillHandler {
15+
public static final DrillHandler INSTANCE = new DrillHandler();
16+
17+
@SubscribeEvent
18+
public void onBlockBreak(BlockEvent.BreakEvent event) {
19+
var world = event.getWorld();
20+
if (world.isRemote) {
21+
return;
22+
}
23+
var tile = world.getTileEntity(event.getPos());
24+
if (!(tile instanceof TileMultiblockMachineController ctrl)) return;
25+
var pos = event.getPos();
26+
var data = ctrl.getCustomDataTag();
27+
for (int i = 0; i < 4; i++) {
28+
var component = data.getByte("additional_component_" + i);
29+
if (component == 1 && !event.getPlayer().isCreative()) {
30+
dropItem(world, pos, itemUtils.getItem("contenttweaker:additional_component_" + i, 0));
31+
}
32+
}
33+
var component = data.getBoolean("additional_component_raw_ore");
34+
if (component && !event.getPlayer().isCreative()) {
35+
dropItem(world, pos, itemUtils.getItem("contenttweaker:additional_component_raw_ore", 0));
36+
}
37+
}
38+
39+
private static void dropItem(World world, BlockPos pos, IItemStack item) {
40+
ItemUtils.dropItem(world, pos, CraftTweakerMC.getItemStack(item));
41+
}
42+
}

src/main/java/github/kasuminova/novaeng/common/handler/OreHandler.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ public class OreHandler {
3838

3939
private OreHandler(){}
4040

41+
public static IItemStack getRawOre(@NotNull ItemStack ore){
42+
return getRawOre(CraftTweakerMC.getIItemStack(ore));
43+
}
44+
4145
@ZenMethod
4246
public static IItemStack getRawOre(@NotNull IItemStack ore){
4347
if (rawOreMap.containsKey(OreKey.getKey(CraftTweakerMC.getItemStack(ore)))){
@@ -47,6 +51,10 @@ public static IItemStack getRawOre(@NotNull IItemStack ore){
4751
}
4852
}
4953

54+
public static IItemStack getOre(@NotNull ItemStack ore){
55+
return getOre(CraftTweakerMC.getIItemStack(ore));
56+
}
57+
5058
@ZenMethod
5159
public static IItemStack getOre(@NotNull IItemStack ore){
5260
if (oreMap.containsKey(OreKey.getKey(CraftTweakerMC.getItemStack(ore)))){

0 commit comments

Comments
 (0)