Skip to content

Commit 4bac717

Browse files
committed
Add Creative Data Multi
1 parent 04aa418 commit 4bac717

File tree

8 files changed

+97
-3
lines changed

8 files changed

+97
-3
lines changed
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
ServerEvents.recipes(event => {
2+
event.recipes.gtceu.creative_data("creative_data_test")
3+
.inputFluids("minecraft:lava 100")
4+
.duration(100)
5+
})

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
{
22
"block.monilabs.chromodynamic_conduction_casing": "buısɐƆ uoıʇɔnpuoƆ ɔıɯɐuʎpoɯoɹɥƆ",
3+
"block.monilabs.creative_data_multi": "ıʇןnW ɐʇɐᗡ ǝʌıʇɐǝɹƆ",
34
"block.monilabs.creative_energy_multi": "uoıʇɐʇS uoıʇɐɔoןsuɐɹ⟘ puɐ uoıʇɐןnɯnɔɔⱯ ʎbɹǝuƎ ǝןoH ʞɔɐןᗺ",
45
"block.monilabs.dimensional_stabilization_netherite_casing": "buısɐƆ ǝʇıɹǝɥʇǝN uoıʇɐzıןıqɐʇS ןɐuoısuǝɯıᗡ",
56
"block.monilabs.omnic_synthesizer": "ɹǝzısǝɥʇuʎS ɔıuɯO",
67
"block.monilabs.prismatic_crucible": "ǝןqıɔnɹƆ ɔıʇɐɯsıɹԀ",
78
"block.monilabs.prismatic_focus": "snɔoℲ ɔıʇɐɯsıɹԀ",
89
"config.jade.plugin_monilabs.color_info": "oɟuI ɹoןoƆ ǝןqıɔnɹƆ ɔıʇɐɯsıɹԀ",
910
"gtceu.bheats": "uoıʇɐןnɯnɔɔⱯ ʎbɹǝuƎ ǝןoH ʞɔɐןᗺ",
11+
"gtceu.creative_data": "uoıʇɐɹǝuǝ⅁ ɐʇɐᗡ ǝʌıʇɐǝɹƆ",
1012
"gtceu.omnic_synthesis": "sısǝɥʇuʎS ɔıuɯO",
1113
"gtceu.prismatic_crucible": "ǝןqıɔnɹƆ ɔıʇɐɯsıɹԀ",
1214
"item.monilabs.chroma_detector_cover": "ɹǝʌoƆ ɹoʇɔǝʇǝᗡ ɐɯoɹɥƆ",

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
{
22
"block.monilabs.chromodynamic_conduction_casing": "Chromodynamic Conduction Casing",
3+
"block.monilabs.creative_data_multi": "Creative Data Multi",
34
"block.monilabs.creative_energy_multi": "Black Hole Energy Accumulation and Translocation Station",
45
"block.monilabs.dimensional_stabilization_netherite_casing": "Dimensional Stabilization Netherite Casing",
56
"block.monilabs.omnic_synthesizer": "Omnic Synthesizer",
67
"block.monilabs.prismatic_crucible": "Prismatic Crucible",
78
"block.monilabs.prismatic_focus": "Prismatic Focus",
89
"config.jade.plugin_monilabs.color_info": "Prismatic Crucible Color Info",
910
"gtceu.bheats": "Black Hole Energy Accumulation",
11+
"gtceu.creative_data": "Creative Data Generation",
1012
"gtceu.omnic_synthesis": "Omnic Synthesis",
1113
"gtceu.prismatic_crucible": "Prismatic Crucible",
1214
"item.monilabs.chroma_detector_cover": "Chroma Detector Cover",

src/main/java/net/neganote/monilabs/common/machine/MoniMachines.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import net.neganote.monilabs.MoniLabs;
1515
import net.neganote.monilabs.client.renderer.PrismaticCrucibleRenderer;
1616
import net.neganote.monilabs.common.block.MoniBlocks;
17+
import net.neganote.monilabs.common.machine.multiblock.CreativeDataMultiMachine;
1718
import net.neganote.monilabs.common.machine.multiblock.CreativeEnergyMultiMachine;
1819
import net.neganote.monilabs.common.machine.multiblock.OmnicSynthesizerMachine;
1920
import net.neganote.monilabs.common.machine.multiblock.PrismaticCrucibleMachine;
@@ -166,5 +167,21 @@ public class MoniMachines {
166167
GTCEu.id("block/multiblock/processing_array"))
167168
.register();
168169

170+
public static MultiblockMachineDefinition CREATIVE_DATA_MULTI = REGISTRATE
171+
.multiblock("creative_data_multi", CreativeDataMultiMachine::new)
172+
.langValue("Creative Data Multi")
173+
.appearanceBlock(MoniBlocks.DIMENSIONAL_STABILIZATION_NETHERITE_CASING)
174+
.rotationState(RotationState.NON_Y_AXIS)
175+
.recipeTypes(MoniRecipeTypes.CREATIVE_DATA_RECIPES)
176+
.pattern(definition -> FactoryBlockPattern.start()
177+
.aisle("N@N")
178+
.where("@", controller(blocks(definition.getBlock())))
179+
.where("N", blocks(MoniBlocks.DIMENSIONAL_STABILIZATION_NETHERITE_CASING.get())
180+
.or(autoAbilities(definition.getRecipeTypes())))
181+
.build())
182+
.workableCasingRenderer(MoniLabs.id("block/dimensional_stabilization_netherite_casing"),
183+
GTCEu.id("block/multiblock/processing_array"))
184+
.register();
185+
169186
public static void init() {}
170187
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package net.neganote.monilabs.common.machine.multiblock;
2+
3+
import com.gregtechceu.gtceu.api.machine.ConditionalSubscriptionHandler;
4+
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity;
5+
import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine;
6+
7+
import net.minecraft.server.level.ServerLevel;
8+
import net.neganote.monilabs.saveddata.CreativeDataAccessSavedData;
9+
10+
import java.util.UUID;
11+
12+
public class CreativeDataMultiMachine extends WorkableElectricMultiblockMachine {
13+
14+
private final ConditionalSubscriptionHandler creativeDataSubscription;
15+
16+
public CreativeDataMultiMachine(IMachineBlockEntity holder, Object... args) {
17+
super(holder, args);
18+
19+
this.creativeDataSubscription = new ConditionalSubscriptionHandler(this, this::tickEnableCreativeData,
20+
this::isSubscriptionActive);
21+
}
22+
23+
@Override
24+
public void onStructureFormed() {
25+
super.onStructureFormed();
26+
creativeDataSubscription.updateSubscription();
27+
}
28+
29+
public void enableCreativeData(boolean enabled) {
30+
UUID ownerUUID = getOwnerUUID();
31+
if (ownerUUID == null) {
32+
ownerUUID = new UUID(0L, 0L);
33+
}
34+
if (getLevel() instanceof ServerLevel serverLevel) {
35+
CreativeDataAccessSavedData savedData = CreativeDataAccessSavedData
36+
.getOrCreate(serverLevel.getServer().overworld());
37+
savedData.setEnabled(ownerUUID, enabled);
38+
}
39+
}
40+
41+
private void tickEnableCreativeData() {
42+
enableCreativeData(isActive() && getRecipeLogic().isWorkingEnabled());
43+
}
44+
45+
private Boolean isSubscriptionActive() {
46+
return isFormed();
47+
}
48+
49+
@Override
50+
public void setWorkingEnabled(boolean isWorkingAllowed) {
51+
super.setWorkingEnabled(isWorkingAllowed);
52+
if (!isWorkingAllowed) {
53+
enableCreativeData(false);
54+
}
55+
}
56+
57+
@Override
58+
public void onStructureInvalid() {
59+
super.onStructureInvalid();
60+
enableCreativeData(false);
61+
creativeDataSubscription.unsubscribe();
62+
}
63+
}

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

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

33
import com.gregtechceu.gtceu.api.machine.ConditionalSubscriptionHandler;
44
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity;
5-
import com.gregtechceu.gtceu.api.machine.multiblock.WorkableMultiblockMachine;
5+
import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine;
66

77
import net.minecraft.server.level.ServerLevel;
88
import net.neganote.monilabs.saveddata.CreativeEnergySavedData;
99

1010
import java.util.UUID;
1111

12-
public class CreativeEnergyMultiMachine extends WorkableMultiblockMachine {
12+
public class CreativeEnergyMultiMachine extends WorkableElectricMultiblockMachine {
1313

1414
private final ConditionalSubscriptionHandler creativeEnergySubscription;
1515

@@ -39,7 +39,7 @@ public void enableCreativeEnergy(boolean enabled) {
3939
}
4040

4141
private void tickEnableCreativeEnergy() {
42-
enableCreativeEnergy(isActive());
42+
enableCreativeEnergy(isActive() && getRecipeLogic().isWorkingEnabled());
4343
}
4444

4545
private Boolean isSubscriptionActive() {

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public static void init(RegistrateLangProvider provider) {
4747
provider.add("gtceu.prismatic_crucible", "Prismatic Crucible");
4848
provider.add("gtceu.omnic_synthesis", "Omnic Synthesis");
4949
provider.add("gtceu.bheats", "Black Hole Energy Accumulation");
50+
provider.add("gtceu.creative_data", "Creative Data Generation");
5051

5152
provider.add("monilabs.tooltip.prismatic.rainbow", "the rainbow");
5253
provider.add("monilabs.tooltip.prismatic.0", "Use the power of %s to transform items!");

src/main/java/net/neganote/monilabs/gtbridge/MoniRecipeTypes.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,5 +96,9 @@ public class MoniRecipeTypes {
9696
.register("bheats", GTRecipeTypes.MULTIBLOCK)
9797
.setMaxIOSize(0, 0, 1, 0);
9898

99+
public static GTRecipeType CREATIVE_DATA_RECIPES = GTRecipeTypes
100+
.register("creative_data", GTRecipeTypes.MULTIBLOCK)
101+
.setMaxIOSize(0, 0, 1, 0);
102+
99103
public static void init() {}
100104
}

0 commit comments

Comments
 (0)