Skip to content

Commit f841887

Browse files
committed
Replace direct redstone output with detector cover
1 parent 43c6ce9 commit f841887

File tree

7 files changed

+99
-12
lines changed

7 files changed

+99
-12
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"block.monilabs.prismatic_focus": "snɔoℲ ɔıʇɐɯsıɹԀ",
66
"config.jade.plugin_monilabs.color_info": "oɟuI ɹoןoƆ ǝןqıɔnɹƆ ɔıʇɐɯsıɹԀ",
77
"gtceu.prismatic_crucible": "ǝןqıɔnɹƆ ɔıʇɐɯsıɹԀ",
8+
"item.monilabs.chroma_detector_cover": "ɹǝʌoƆ ɹoʇɔǝʇǝᗡ ɐɯoɹɥƆ",
89
"itemGroup.monilabs.creative_tab": "sqɐꞀ ıuoW",
910
"monilabs.prismatic.color_name.azure": "ɹ§ǝɹnzⱯ6§",
1011
"monilabs.prismatic.color_name.blue": "ɹ§ǝnןᗺƖ§",

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
"block.monilabs.prismatic_focus": "Prismatic Focus",
66
"config.jade.plugin_monilabs.color_info": "Prismatic Crucible Color Info",
77
"gtceu.prismatic_crucible": "Prismatic Crucible",
8+
"item.monilabs.chroma_detector_cover": "Chroma Detector Cover",
89
"itemGroup.monilabs.creative_tab": "Moni Labs",
910
"monilabs.prismatic.color_name.azure": "§9Azure§r",
1011
"monilabs.prismatic.color_name.blue": "§1Blue§r",

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package net.neganote.monilabs;
22

33
import com.gregtechceu.gtceu.api.GTCEuAPI;
4+
import com.gregtechceu.gtceu.api.cover.CoverDefinition;
45
import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialEvent;
56
import com.gregtechceu.gtceu.api.data.chemical.material.event.MaterialRegistryEvent;
67
import com.gregtechceu.gtceu.api.data.chemical.material.event.PostMaterialEvent;
@@ -21,6 +22,7 @@
2122
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
2223
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
2324
import net.neganote.monilabs.common.block.MoniBlocks;
25+
import net.neganote.monilabs.common.cover.MoniCovers;
2426
import net.neganote.monilabs.common.item.MoniItems;
2527
import net.neganote.monilabs.common.machine.MoniMachines;
2628
import net.neganote.monilabs.data.MoniDataGen;
@@ -41,7 +43,7 @@ public class MoniLabs {
4143
builder -> builder
4244
.displayItems(new GTCreativeModeTabs.RegistrateDisplayItemsGenerator(MoniLabs.MOD_ID, REGISTRATE))
4345
.title(REGISTRATE.addLang("itemGroup", MoniLabs.id("creative_tab"), "Moni Labs"))
44-
.icon(GTItems.ADVANCED_CIRCUIT_BOARD::asStack) // TODO: come up with own icon
46+
.icon(GTItems.ADVANCED_CIRCUIT_BOARD::asStack)
4547
.build())
4648
.register();
4749

@@ -56,6 +58,7 @@ public MoniLabs() {
5658
modEventBus.addListener(this::modifyMaterials);
5759
modEventBus.addGenericListener(GTRecipeType.class, this::registerRecipeTypes);
5860
modEventBus.addGenericListener(MachineDefinition.class, this::registerMachines);
61+
modEventBus.addGenericListener(CoverDefinition.class, this::registerCovers);
5962

6063
// Most other events are fired on Forge's bus.
6164
// If we want to use annotations to register event listeners,
@@ -108,4 +111,8 @@ private void registerRecipeTypes(GTCEuAPI.RegisterEvent<ResourceLocation, GTReci
108111
private void registerMachines(GTCEuAPI.RegisterEvent<ResourceLocation, MachineDefinition> event) {
109112
MoniMachines.init();
110113
}
114+
115+
private void registerCovers(GTCEuAPI.RegisterEvent<ResourceLocation, CoverDefinition> event) {
116+
MoniCovers.init();
117+
}
111118
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package net.neganote.monilabs.common.cover;
2+
3+
import com.gregtechceu.gtceu.GTCEu;
4+
import com.gregtechceu.gtceu.api.cover.CoverDefinition;
5+
import com.gregtechceu.gtceu.api.item.ComponentItem;
6+
import com.gregtechceu.gtceu.api.registry.GTRegistries;
7+
import com.gregtechceu.gtceu.client.renderer.cover.ICoverRenderer;
8+
import com.gregtechceu.gtceu.client.renderer.cover.SimpleCoverRenderer;
9+
import com.gregtechceu.gtceu.common.item.CoverPlaceBehavior;
10+
11+
import net.neganote.monilabs.MoniLabs;
12+
import net.neganote.monilabs.common.cover.detector.ChromaDetectorCover;
13+
import net.neganote.monilabs.common.item.MoniItems;
14+
15+
import com.tterrag.registrate.util.entry.ItemEntry;
16+
17+
import static net.neganote.monilabs.MoniLabs.REGISTRATE;
18+
19+
@SuppressWarnings("unused")
20+
public class MoniCovers {
21+
22+
public final static CoverDefinition CHROMA_DETECTOR_COVER = register("chroma_detector", ChromaDetectorCover::new,
23+
new SimpleCoverRenderer(GTCEu.id("block/cover/overlay_energy_detector")));
24+
// TODO: replace with our own overlay
25+
26+
public static ItemEntry<ComponentItem> CHROMA_DETECTOR_ITEM = REGISTRATE
27+
.item("chroma_detector_cover", ComponentItem::create)
28+
.lang("Chroma Detector Cover")
29+
.onRegister(MoniItems.attach(new CoverPlaceBehavior(CHROMA_DETECTOR_COVER)))
30+
.register();
31+
32+
public static CoverDefinition register(String id, CoverDefinition.CoverBehaviourProvider behaviorCreator,
33+
ICoverRenderer coverRenderer) {
34+
var definition = new CoverDefinition(MoniLabs.id(id), behaviorCreator, coverRenderer);
35+
GTRegistries.COVERS.register(MoniLabs.id(id), definition);
36+
return definition;
37+
}
38+
39+
public static void init() {}
40+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package net.neganote.monilabs.common.cover.detector;
2+
3+
import com.gregtechceu.gtceu.api.capability.GTCapabilityHelper;
4+
import com.gregtechceu.gtceu.api.capability.IControllable;
5+
import com.gregtechceu.gtceu.api.capability.ICoverable;
6+
import com.gregtechceu.gtceu.api.cover.CoverDefinition;
7+
import com.gregtechceu.gtceu.common.cover.detector.DetectorCover;
8+
9+
import net.minecraft.core.Direction;
10+
import net.minecraft.server.level.ServerPlayer;
11+
import net.minecraft.world.item.ItemStack;
12+
import net.neganote.monilabs.common.machine.multiblock.PrismaticCrucibleMachine;
13+
14+
import org.jetbrains.annotations.NotNull;
15+
16+
public class ChromaDetectorCover extends DetectorCover {
17+
18+
public ChromaDetectorCover(CoverDefinition definition, ICoverable coverHolder, Direction attachedSide) {
19+
super(definition, coverHolder, attachedSide);
20+
}
21+
22+
@Override
23+
public boolean canAttach() {
24+
IControllable controllable = GTCapabilityHelper.getControllable(coverHolder.getLevel(), coverHolder.getPos(),
25+
attachedSide);
26+
return super.canAttach() && controllable instanceof PrismaticCrucibleMachine;
27+
}
28+
29+
@Override
30+
protected void update() {
31+
IControllable controllable = GTCapabilityHelper.getControllable(coverHolder.getLevel(), coverHolder.getPos(),
32+
attachedSide);
33+
if (controllable instanceof PrismaticCrucibleMachine machine) {
34+
setRedstoneSignalOutput(machine.isFormed() ? machine.getColorState().key + 1 : 0);
35+
}
36+
}
37+
38+
@Override
39+
public void onAttached(@NotNull ItemStack itemStack, @NotNull ServerPlayer player) {
40+
super.onAttached(itemStack, player);
41+
IControllable controllable = GTCapabilityHelper.getControllable(coverHolder.getLevel(), coverHolder.getPos(),
42+
attachedSide);
43+
if (controllable instanceof PrismaticCrucibleMachine machine) {
44+
setRedstoneSignalOutput(machine.isFormed() ? machine.getColorState().key + 1 : 0);
45+
}
46+
}
47+
}

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

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.neganote.monilabs.common.machine.multiblock;
22

3+
import com.gregtechceu.gtceu.api.cover.CoverBehavior;
34
import com.gregtechceu.gtceu.api.machine.IMachineBlockEntity;
45
import com.gregtechceu.gtceu.api.machine.multiblock.WorkableElectricMultiblockMachine;
56
import com.gregtechceu.gtceu.api.pattern.util.RelativeDirection;
@@ -18,7 +19,6 @@
1819

1920
import lombok.Getter;
2021
import org.jetbrains.annotations.NotNull;
21-
import org.jetbrains.annotations.Nullable;
2222

2323
import java.util.Arrays;
2424
import java.util.HashSet;
@@ -102,15 +102,6 @@ public void setActiveRecipeType(int activeRecipeType) {
102102
}
103103
}
104104

105-
@Override
106-
public int getOutputSignal(@Nullable Direction side) {
107-
if (!isFormed()) {
108-
return 0;
109-
} else {
110-
return color.key + 1;
111-
}
112-
}
113-
114105
@Override
115106
public void afterWorking() {
116107
super.afterWorking();
@@ -149,7 +140,7 @@ public void afterWorking() {
149140
private void changeColorState(Color newColor) {
150141
color = newColor;
151142
this.notifiableChromaContainer.setColor(newColor);
152-
updateSignal();
143+
getCoverContainer().getCovers().forEach((CoverBehavior::onChanged));
153144
}
154145

155146
@Override
492 Bytes
Loading

0 commit comments

Comments
 (0)