Skip to content

Commit e7d2221

Browse files
committed
Start adding recipe types, crashes with kubejs
1 parent 6493f4f commit e7d2221

File tree

11 files changed

+183
-52
lines changed

11 files changed

+183
-52
lines changed

src/generated/resources/assets/monilabs/lang/en_ud.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,8 @@
1414
"monilabs.prismatic.color_name.red": "pǝᴚ",
1515
"monilabs.prismatic.color_name.turquoise": "ǝsıonbɹn⟘",
1616
"monilabs.prismatic.color_name.yellow": "ʍoןןǝʎ",
17-
"monilabs.prismatic.current_mode": "ǝpoɯ %s uı ʎןʇuǝɹɹnƆ"
17+
"monilabs.prismatic.current_color": "%s ɟo ɹoןoɔ ɐ sɐɥ ʎןʇuǝɹɹnƆ",
18+
"monilabs.prismatic.current_mode": "%s sɹoןoɔ sǝbuɐɥƆ",
19+
"monilabs.prismatic.mode_name.deterministic": "ʎןןɐɔıʇsıuıɯɹǝʇǝp",
20+
"monilabs.prismatic.mode_name.random": "ʎןɯopuɐɹ"
1821
}

src/generated/resources/assets/monilabs/lang/en_us.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,5 +14,8 @@
1414
"monilabs.prismatic.color_name.red": "Red",
1515
"monilabs.prismatic.color_name.turquoise": "Turquoise",
1616
"monilabs.prismatic.color_name.yellow": "Yellow",
17-
"monilabs.prismatic.current_mode": "Currently in %s mode"
17+
"monilabs.prismatic.current_color": "Currently has a color of %s",
18+
"monilabs.prismatic.current_mode": "Changes colors %s",
19+
"monilabs.prismatic.mode_name.deterministic": "deterministically",
20+
"monilabs.prismatic.mode_name.random": "randomly"
1821
}

src/main/java/net/neganote/monilabs/MoniLabsGTAddon.java

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,14 @@
22

33
import com.gregtechceu.gtceu.api.addon.GTAddon;
44
import com.gregtechceu.gtceu.api.addon.IGTAddon;
5+
import com.gregtechceu.gtceu.api.addon.events.KJSRecipeKeyEvent;
56
import com.gregtechceu.gtceu.api.registry.registrate.GTRegistrate;
7+
import com.gregtechceu.gtceu.integration.kjs.recipe.components.ContentJS;
8+
import com.mojang.datafixers.util.Pair;
9+
import dev.latvian.mods.kubejs.recipe.component.NumberComponent;
610
import net.minecraft.data.recipes.FinishedRecipe;
11+
import net.neganote.monilabs.capability.recipe.MoniRecipeCapabilities;
12+
import net.neganote.monilabs.gtbridge.MoniRecipes;
713

814
import java.util.function.Consumer;
915

@@ -32,18 +38,26 @@ public void registerTagPrefixes() {
3238

3339
@Override
3440
public void addRecipes(Consumer<FinishedRecipe> provider) {
35-
//CustomRecipes.init(provider);
41+
MoniRecipes.init(provider);
3642
}
37-
38-
// If you have custom ingredient types, uncomment this & change to match your capability.
39-
// KubeJS WILL REMOVE YOUR RECIPES IF THESE ARE NOT REGISTERED.
40-
/*
41-
public static final ContentJS<Double> PRESSURE_IN = new ContentJS<>(NumberComponent.ANY_DOUBLE, GregitasRecipeCapabilities.PRESSURE, false);
42-
public static final ContentJS<Double> PRESSURE_OUT = new ContentJS<>(NumberComponent.ANY_DOUBLE, GregitasRecipeCapabilities.PRESSURE, true);
43+
44+
@Override
45+
public void registerRecipeCapabilities() {
46+
MoniRecipeCapabilities.init();
47+
}
48+
49+
public static NumberComponent.IntRange COLOR_RANGE = new NumberComponent.IntRange(0, 11);
50+
public static final ContentJS<Integer> COLOR_IN = new ContentJS<>(COLOR_RANGE, MoniRecipeCapabilities.COLOR, false);
51+
public static final ContentJS<Integer> COLOR_OUT = new ContentJS<>(COLOR_RANGE, MoniRecipeCapabilities.COLOR, true);
52+
53+
public static NumberComponent.IntRange PRISMATIC_MODE_RANGE = new NumberComponent.IntRange(0, 2);
54+
public static final ContentJS<Integer> PRISMATIC_MODE_IN = new ContentJS<>(PRISMATIC_MODE_RANGE, MoniRecipeCapabilities.PRISMATIC_MODE, false);
55+
public static final ContentJS<Integer> PRISMATIC_MODE_OUT = new ContentJS<>(PRISMATIC_MODE_RANGE, MoniRecipeCapabilities.PRISMATIC_MODE, true);
4356

4457
@Override
4558
public void registerRecipeKeys(KJSRecipeKeyEvent event) {
46-
event.registerKey(CustomRecipeCapabilities.PRESSURE, Pair.of(PRESSURE_IN, PRESSURE_OUT));
59+
event.registerKey(MoniRecipeCapabilities.COLOR, Pair.of(COLOR_IN, COLOR_OUT));
60+
event.registerKey(MoniRecipeCapabilities.PRISMATIC_MODE, Pair.of(PRISMATIC_MODE_IN, PRISMATIC_MODE_OUT));
4761
}
48-
*/
62+
4963
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.neganote.monilabs.capability.recipe;
2+
3+
import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability;
4+
import com.gregtechceu.gtceu.api.recipe.content.SerializerInteger;
5+
6+
public class ColorRecipeCapability extends RecipeCapability<Integer> {
7+
public final static ColorRecipeCapability CAP = new ColorRecipeCapability();
8+
9+
protected ColorRecipeCapability() {
10+
super("color", 0xFFFFFFFF, true, 10, SerializerInteger.INSTANCE);
11+
}
12+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package net.neganote.monilabs.capability.recipe;
2+
3+
import com.gregtechceu.gtceu.api.registry.GTRegistries;
4+
5+
public class MoniRecipeCapabilities {
6+
public static final ColorRecipeCapability COLOR = ColorRecipeCapability.CAP;
7+
public static final PrismaticModeRecipeCapability PRISMATIC_MODE = PrismaticModeRecipeCapability.CAP;
8+
9+
public static void init() {
10+
GTRegistries.RECIPE_CAPABILITIES.register(COLOR.name, COLOR);
11+
GTRegistries.RECIPE_CAPABILITIES.register(PRISMATIC_MODE.name, PRISMATIC_MODE);
12+
}
13+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package net.neganote.monilabs.capability.recipe;
2+
3+
import com.gregtechceu.gtceu.api.capability.recipe.RecipeCapability;
4+
import com.gregtechceu.gtceu.api.recipe.content.SerializerInteger;
5+
6+
public class PrismaticModeRecipeCapability extends RecipeCapability<Integer> {
7+
public static PrismaticModeRecipeCapability CAP = new PrismaticModeRecipeCapability();
8+
9+
protected PrismaticModeRecipeCapability() {
10+
super("prismatic_mode", 0xFFFFFFFF, true, 11, SerializerInteger.INSTANCE);
11+
}
12+
}

src/main/java/net/neganote/monilabs/common/machine/multiblock/PrismaticCrucibleMachine.java

Lines changed: 73 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -10,69 +10,69 @@
1010
@ParametersAreNonnullByDefault
1111
@SuppressWarnings("unused")
1212
public class PrismaticCrucibleMachine extends WorkableElectricMultiblockMachine {
13-
private ColorState color;
13+
private Color color;
14+
private PrismaticMode mode;
1415
public PrismaticCrucibleMachine(IMachineBlockEntity holder, Object... args) {
1516
super(holder, args);
1617
}
1718

1819
@Override
1920
public void addDisplayText(List<Component> textList) {
2021
super.addDisplayText(textList);
21-
textList.add(Component.translatable("monilabs.prismatic.current_mode", Component.translatable(color.nameKey)));
22+
textList.add(Component.translatable("monilabs.prismatic.current_color", Component.translatable(color.nameKey)));
23+
textList.add(Component.translatable("monilabs.prismatic.current_mode", Component.translatable(mode.nameKey)));
2224
}
2325

2426
@Override
2527
public void onStructureFormed() {
2628
super.onStructureFormed();
27-
color = ColorState.RED;
29+
color = Color.RED;
30+
mode = PrismaticMode.DETERMINISTIC;
2831
}
2932

30-
private void changeColorState(ColorState newColor) {
33+
private void changeColorState(Color newColor) {
3134
color = newColor;
3235
}
3336

34-
public ColorState getColorState() {
37+
public Color getColorState() {
3538
return color;
3639
}
3740

38-
public static ColorState getRandomColor() {
39-
int rand = (int) Math.floor(Math.random() * 16.0);
40-
return switch (rand) {
41-
case 1:
42-
yield ColorState.ORANGE;
43-
case 2:
44-
yield ColorState.YELLOW;
45-
case 3:
46-
yield ColorState.LIME;
47-
case 4:
48-
yield ColorState.GREEN;
49-
case 5:
50-
yield ColorState.TEAL;
51-
case 6:
52-
yield ColorState.CYAN;
53-
case 7:
54-
yield ColorState.AZURE;
55-
case 8:
56-
yield ColorState.BLUE;
57-
case 9:
58-
yield ColorState.INDIGO;
59-
case 10:
60-
yield ColorState.MAGENTA;
61-
case 11:
62-
yield ColorState.PINK;
63-
case 0:
64-
default:
65-
yield ColorState.RED;
66-
};
41+
private void changeMode(PrismaticMode newMode) {
42+
mode = newMode;
6743
}
6844

69-
public enum WorkingMode {
70-
DETERMINISTIC,
71-
RANDOM_WITH_LIST,
72-
FULL_RANDOM
45+
public PrismaticMode getCurrentMode() {
46+
return mode;
7347
}
7448

75-
public enum ColorState {
49+
public enum PrismaticMode {
50+
DETERMINISTIC(1, "monilabs.prismatic.mode_name.deterministic"),
51+
RANDOM_WITH_LIST(2, "monilabs.prismatic.mode_name.random"),
52+
FULL_RANDOM(3, "monilabs.prismatic.mode_name.random");
53+
54+
public final int key;
55+
public final String nameKey;
56+
57+
PrismaticMode(int key, String nameKey) {
58+
this.key = key;
59+
this.nameKey = nameKey;
60+
}
61+
62+
public static PrismaticMode getModeFromKey(int key) {
63+
return switch (key) {
64+
case 1:
65+
yield PrismaticMode.RANDOM_WITH_LIST;
66+
case 2:
67+
yield PrismaticMode.FULL_RANDOM;
68+
case 0:
69+
default:
70+
yield PrismaticMode.DETERMINISTIC;
71+
};
72+
}
73+
}
74+
75+
public enum Color {
7676
RED(0, "monilabs.prismatic.color_name.red"),
7777
ORANGE(1, "monilabs.prismatic.color_name.orange"),
7878
YELLOW(2, "monilabs.prismatic.color_name.yellow"),
@@ -89,9 +89,42 @@ public enum ColorState {
8989
public final String nameKey;
9090
public final int modulus;
9191

92-
ColorState(int modulus, String nameKey) {
92+
Color(int modulus, String nameKey) {
9393
this.modulus = modulus;
9494
this.nameKey = nameKey;
9595
}
96+
97+
public static Color getColorFromModulus(int modulus) {
98+
return switch (modulus) {
99+
case 1:
100+
yield Color.ORANGE;
101+
case 2:
102+
yield Color.YELLOW;
103+
case 3:
104+
yield Color.LIME;
105+
case 4:
106+
yield Color.GREEN;
107+
case 5:
108+
yield Color.TEAL;
109+
case 6:
110+
yield Color.CYAN;
111+
case 7:
112+
yield Color.AZURE;
113+
case 8:
114+
yield Color.BLUE;
115+
case 9:
116+
yield Color.INDIGO;
117+
case 10:
118+
yield Color.MAGENTA;
119+
case 11:
120+
yield Color.PINK;
121+
case 0:
122+
default:
123+
yield Color.RED;
124+
};
125+
}
126+
public static Color getRandomColor() {
127+
return getColorFromModulus((int) Math.floor(Math.random() * 16.0));
128+
}
96129
}
97130
}

src/main/java/net/neganote/monilabs/data/MoniMachines.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.gregtechceu.gtceu.api.pattern.FactoryBlockPattern;
66
import net.neganote.monilabs.MoniLabs;
77
import net.neganote.monilabs.common.machine.multiblock.PrismaticCrucibleMachine;
8+
import net.neganote.monilabs.gtbridge.MoniRecipeTypes;
89

910
import static com.gregtechceu.gtceu.api.pattern.Predicates.*;
1011
import static net.neganote.monilabs.MoniLabs.REGISTRATE;
@@ -20,6 +21,7 @@ public class MoniMachines {
2021
.multiblock("prismatic_crucible", PrismaticCrucibleMachine::new)
2122
.appearanceBlock(MoniBlocks.PRISMATIC_CASING)
2223
.rotationState(RotationState.NON_Y_AXIS)
24+
.recipeType(MoniRecipeTypes.PRISMATIC_CRUCIBLE_RECIPES)
2325
.pattern(definition -> FactoryBlockPattern.start()
2426
.aisle("CCC", "CCC", "CCC")
2527
.aisle("CCC", "C#C", "C#C")

src/main/java/net/neganote/monilabs/data/lang/MoniLangHandler.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
public class MoniLangHandler {
66
public static void init(RegistrateLangProvider provider) {
7-
provider.add("monilabs.prismatic.current_mode", "Currently in %s mode");
7+
provider.add("monilabs.prismatic.current_color", "Currently has a color of %s");
88
provider.add("monilabs.prismatic.color_name.red", "Red");
99
provider.add("monilabs.prismatic.color_name.orange", "Orange");
1010
provider.add("monilabs.prismatic.color_name.yellow", "Yellow");
@@ -17,5 +17,9 @@ public static void init(RegistrateLangProvider provider) {
1717
provider.add("monilabs.prismatic.color_name.indigo", "Indigo");
1818
provider.add("monilabs.prismatic.color_name.magenta", "Magenta");
1919
provider.add("monilabs.prismatic.color_name.pink", "Pink");
20+
21+
provider.add("monilabs.prismatic.current_mode", "Changes colors %s");
22+
provider.add("monilabs.prismatic.mode_name.deterministic", "deterministically");
23+
provider.add("monilabs.prismatic.mode_name.random", "randomly");
2024
}
2125
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package net.neganote.monilabs.gtbridge;
2+
3+
import com.gregtechceu.gtceu.api.capability.recipe.IO;
4+
import com.gregtechceu.gtceu.api.gui.GuiTextures;
5+
import com.gregtechceu.gtceu.api.recipe.GTRecipeType;
6+
import com.gregtechceu.gtceu.common.data.GTRecipeTypes;
7+
import com.lowdragmc.lowdraglib.gui.texture.ProgressTexture;
8+
9+
import static net.neganote.monilabs.capability.recipe.MoniRecipeCapabilities.COLOR;
10+
import static net.neganote.monilabs.capability.recipe.MoniRecipeCapabilities.PRISMATIC_MODE;
11+
12+
public class MoniRecipeTypes {
13+
public static final GTRecipeType PRISMATIC_CRUCIBLE_RECIPES = GTRecipeTypes
14+
.register("prismatic_crucible", GTRecipeTypes.MULTIBLOCK)
15+
.setMaxIOSize(3, 3, 1, 1)
16+
.setMaxSize(IO.IN, COLOR, 1)
17+
.setMaxSize(IO.OUT, COLOR, 1)
18+
.setMaxSize(IO.OUT, PRISMATIC_MODE, 1)
19+
.setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, ProgressTexture.FillDirection.LEFT_TO_RIGHT);
20+
21+
public static void init() {
22+
}
23+
}

0 commit comments

Comments
 (0)