Skip to content

Commit c0dc535

Browse files
committed
started working on research effect creatuib widget and first research has been created
1 parent 798295d commit c0dc535

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1025
-162
lines changed

src/main/java/com/portingdeadmods/researchd/ResearchdClient.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,16 @@
22

33
import com.portingdeadmods.researchd.api.client.editor.ClientResearch;
44
import com.portingdeadmods.researchd.api.client.ClientResearchIcon;
5+
import com.portingdeadmods.researchd.api.client.editor.ClientResearchEffectType;
56
import com.portingdeadmods.researchd.api.client.editor.ClientResearchMethodType;
67
import com.portingdeadmods.researchd.api.research.RegistryDisplay;
78
import com.portingdeadmods.researchd.api.research.ResearchIcon;
89
import com.portingdeadmods.researchd.api.research.effects.ResearchEffect;
910
import com.portingdeadmods.researchd.api.research.methods.ResearchMethod;
1011
import com.portingdeadmods.researchd.api.research.packs.ResearchPack;
12+
import com.portingdeadmods.researchd.api.team.ResearchQueue;
1113
import com.portingdeadmods.researchd.client.ResearchdKeybinds;
14+
import com.portingdeadmods.researchd.client.impl.effects.types.ClientDimensionUnlockEffectType;
1215
import com.portingdeadmods.researchd.client.impl.icons.ClientItemResearchIcon;
1316
import com.portingdeadmods.researchd.client.impl.SimpleClientResearch;
1417
import com.portingdeadmods.researchd.client.impl.effects.*;
@@ -61,6 +64,7 @@ public final class ResearchdClient {
6164
public static final Map<ResourceLocation, ClientResearch> CLIENT_RESEARCHES = new HashMap<>();
6265
public static final Map<ResourceLocation, ClientResearchMethodType> CLIENT_RESEARCH_METHOD_TYPES = new HashMap<>();
6366
public static final ModelResourceLocation RESEARCH_LAB_MODEL = ModelResourceLocation.standalone(Researchd.rl("block/research_lab"));
67+
public static final Map<ResourceLocation, ClientResearchEffectType> CLIENT_RESEARCH_EFFECT_TYPES = new HashMap<>();
6468

6569
public ResearchdClient(IEventBus eventBus, ModContainer modContainer) {
6670
eventBus.addListener(this::registerKeybinds);
@@ -100,6 +104,8 @@ private void clientSetup(FMLClientSetupEvent event) {
100104
CLIENT_RESEARCH_METHOD_TYPES.put(ConsumePackResearchMethod.ID, ClientConsumePackResearchMethodType.INSTANCE);
101105
CLIENT_RESEARCH_METHOD_TYPES.put(CheckItemPresenceResearchMethod.ID, ClientCheckItemPresenceMethodType.INSTANCE);
102106

107+
CLIENT_RESEARCH_EFFECT_TYPES.put(ClientDimensionUnlockEffectType.ID, ClientDimensionUnlockEffectType.INSTANCE);
108+
103109
ItemBlockRenderTypes.setRenderLayer(ResearchdBlocks.RESEARCH_LAB_CONTROLLER.get(), RenderType.solid()); // Should fiddle with render types till it works ngl
104110
});
105111
}

src/main/java/com/portingdeadmods/researchd/api/client/RememberingLinearLayout.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,5 +83,4 @@ public String toString() {
8383
"widgets=" + widgets + ']';
8484
}
8585

86-
8786
}

src/main/java/com/portingdeadmods/researchd/api/client/editor/ClientResearch.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,16 @@
55
import com.portingdeadmods.researchd.client.screens.lib.widgets.PopupWidget;
66
import com.portingdeadmods.researchd.client.screens.research.ResearchScreen;
77
import com.portingdeadmods.researchd.client.screens.research.widgets.PDLButton;
8+
import net.minecraft.resources.ResourceLocation;
89
import org.jetbrains.annotations.Nullable;
910

1011
public interface ClientResearch {
1112
void buildLayout(RememberingLinearLayout layout, Context context);
1213

1314
Research createResearch(RememberingLinearLayout layout);
1415

16+
ResourceLocation createId(RememberingLinearLayout layout);
17+
1518
record Context(PDLButton createButton, ResearchScreen parentScreen, @Nullable PopupWidget parentPopupWidget, int widgetWidth,
1619
int widgetHeight, int innerWidth, int innerHeight, int padding) implements ClientDataCreationContext {
1720
@Override
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.portingdeadmods.researchd.api.client.editor;
2+
3+
import com.portingdeadmods.researchd.ResearchdClient;
4+
import com.portingdeadmods.researchd.api.client.RememberingLinearLayout;
5+
import com.portingdeadmods.researchd.api.research.effects.ResearchEffect;
6+
import com.portingdeadmods.researchd.api.research.effects.ResearchEffectType;
7+
import com.portingdeadmods.researchd.api.research.methods.ResearchMethod;
8+
import com.portingdeadmods.researchd.api.research.methods.ResearchMethodType;
9+
import com.portingdeadmods.researchd.client.screens.lib.widgets.PopupWidget;
10+
import com.portingdeadmods.researchd.client.screens.research.ResearchScreen;
11+
import com.portingdeadmods.researchd.client.screens.research.widgets.PDLButton;
12+
import org.jetbrains.annotations.Nullable;
13+
14+
public interface ClientResearchEffectType {
15+
default int getHeight() {
16+
return 128;
17+
}
18+
19+
ResearchEffectType type();
20+
21+
void buildLayout(RememberingLinearLayout layout, ClientResearchEffectType.Context context);
22+
23+
ResearchEffect createResearchEffect(RememberingLinearLayout layout);
24+
25+
static ClientResearchEffectType getClientEffectType(ResearchEffectType effectType) {
26+
return ResearchdClient.CLIENT_RESEARCH_EFFECT_TYPES.get(effectType.id());
27+
}
28+
29+
record Context(PDLButton createButton, ResearchScreen parentScreen, @Nullable PopupWidget parentPopupWidget, int widgetWidth,
30+
int widgetHeight, int innerWidth, int innerHeight, int padding) implements ClientDataCreationContext {
31+
@Override
32+
public boolean isCreateButtonActive() {
33+
return createButton.active;
34+
}
35+
36+
@Override
37+
public void setCreateButtonActive(boolean active) {
38+
this.createButton.active = active;
39+
}
40+
}
41+
}

src/main/java/com/portingdeadmods/researchd/api/client/editor/ClientResearchMethodType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ default int getHeight() {
1818

1919
void buildLayout(RememberingLinearLayout layout, ClientResearchMethodType.Context context);
2020

21-
ResearchMethod createResearchMethod(RememberingLinearLayout layout);
21+
ResearchMethod createResearchEffect(RememberingLinearLayout layout);
2222

2323
static ClientResearchMethodType getClientMethodType(ResearchMethodType methodType) {
2424
return ResearchdClient.CLIENT_RESEARCH_METHOD_TYPES.get(methodType.id());

src/main/java/com/portingdeadmods/researchd/api/research/effects/ResearchEffectType.java

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,17 @@
66
import net.minecraft.network.chat.Component;
77
import net.minecraft.resources.ResourceLocation;
88

9-
public record ResearchEffectType(ResourceLocation id, ResearchIcon icon) {
9+
public record ResearchEffectType(ResourceLocation id, ResearchIcon icon, boolean parentType) {
1010
public Component getName() {
1111
return Utils.registryTranslation(ResearchdRegistries.RESEARCH_EFFECT_TYPE, this);
1212
}
1313

14-
public static ResearchEffectType simple(ResourceLocation id, ResearchIcon icon) {
15-
return new ResearchEffectType(id, icon);
14+
public static ResearchEffectType single(ResourceLocation id, ResearchIcon icon) {
15+
return new ResearchEffectType(id, icon, false);
1616
}
17+
18+
public static ResearchEffectType multiple(ResourceLocation id, ResearchIcon icon) {
19+
return new ResearchEffectType(id, icon, true);
20+
}
21+
1722
}

src/main/java/com/portingdeadmods/researchd/client/impl/SimpleClientResearch.java

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package com.portingdeadmods.researchd.client.impl;
22

3+
import com.portingdeadmods.researchd.Researchd;
34
import com.portingdeadmods.researchd.api.client.editor.ClientResearch;
45
import com.portingdeadmods.researchd.api.client.RememberingLinearLayout;
56
import com.portingdeadmods.researchd.api.research.Research;
67
import com.portingdeadmods.researchd.client.screens.editor.widgets.ItemSelectorWidget;
8+
import com.portingdeadmods.researchd.client.screens.editor.widgets.ResearchEffectSelectionWidget;
79
import com.portingdeadmods.researchd.client.screens.editor.widgets.ResearchMethodSelectionWidget;
810
import com.portingdeadmods.researchd.client.screens.editor.widgets.ResearchSelectorListWidget;
911
import com.portingdeadmods.researchd.client.screens.lib.widgets.PopupWidget;
1012
import com.portingdeadmods.researchd.impl.research.SimpleResearch;
13+
import com.portingdeadmods.researchd.impl.research.effect.EmptyResearchEffect;
1114
import com.portingdeadmods.researchd.impl.utils.DisplayImpl;
1215
import com.portingdeadmods.researchd.resources.contents.ResearchdResearchPages;
1316
import com.portingdeadmods.researchd.utils.ClientEditorHelper;
@@ -17,6 +20,8 @@
1720
import net.minecraft.client.gui.components.StringWidget;
1821
import net.minecraft.network.chat.CommonComponents;
1922
import net.minecraft.network.chat.Component;
23+
import net.minecraft.resources.ResourceLocation;
24+
import oshi.hardware.Display;
2025

2126
import java.util.Collections;
2227

@@ -36,6 +41,13 @@ public void buildLayout(RememberingLinearLayout layout, Context context) {
3641
layout.addWidget("requires_parents", Checkbox.builder(Component.literal("Requires Parents"), PopupWidget.getFont()).build());
3742
layout.addWidget(null, new StringWidget(Component.literal("Method:"), PopupWidget.getFont()));
3843
layout.addWidget("method", new ResearchMethodSelectionWidget(context.parentPopupWidget(), 0, 0, context.innerWidth() - 4, 32, CommonComponents.EMPTY));
44+
layout.addWidget(null, new StringWidget(Component.literal("Effect:"), PopupWidget.getFont()));
45+
layout.addWidget("effect", new ResearchEffectSelectionWidget(context.parentPopupWidget(), 0, 0, context.innerWidth() - 4, 32, CommonComponents.EMPTY));
46+
}
47+
48+
@Override
49+
public ResourceLocation createId(RememberingLinearLayout layout) {
50+
return Researchd.rl("test");
3951
}
4052

4153
@SuppressWarnings("DataFlowIssue")
@@ -48,11 +60,12 @@ public Research createResearch(RememberingLinearLayout layout) {
4860
return new SimpleResearch(
4961
layout.getChild("icon", ItemSelectorWidget.class).createIcon(),
5062
layout.getChild("method", ResearchMethodSelectionWidget.class).getMethod(),
51-
null,
63+
layout.getChild("effect", ResearchEffectSelectionWidget.class).getEffect(),
5264
layout.getChild("parents_selector", ResearchSelectorListWidget.class).getResearches(),
5365
layout.getChild("requires_parents", Checkbox.class).selected(),
5466
ResearchdResearchPages.DEFAULT, // TODO: Research Page into editor
55-
null
67+
DisplayImpl.EMPTY
5668
);
5769
}
70+
5871
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package com.portingdeadmods.researchd.client.impl.effects.types;
2+
3+
import com.portingdeadmods.researchd.Researchd;
4+
import com.portingdeadmods.researchd.api.client.RememberingLinearLayout;
5+
import com.portingdeadmods.researchd.api.client.editor.ClientResearchEffectType;
6+
import com.portingdeadmods.researchd.api.research.effects.ResearchEffect;
7+
import com.portingdeadmods.researchd.api.research.effects.ResearchEffectType;
8+
import com.portingdeadmods.researchd.client.screens.editor.widgets.RegistryVerifyEditBox;
9+
import com.portingdeadmods.researchd.client.screens.lib.widgets.BackgroundEditBox;
10+
import com.portingdeadmods.researchd.client.screens.lib.widgets.PopupWidget;
11+
import com.portingdeadmods.researchd.impl.research.effect.DimensionUnlockEffect;
12+
import com.portingdeadmods.researchd.registries.ResearchEffectTypes;
13+
import net.minecraft.client.Minecraft;
14+
import net.minecraft.core.Registry;
15+
import net.minecraft.core.registries.BuiltInRegistries;
16+
import net.minecraft.core.registries.Registries;
17+
import net.minecraft.network.chat.CommonComponents;
18+
import net.minecraft.resources.ResourceLocation;
19+
import net.minecraft.world.entity.vehicle.Minecart;
20+
import net.minecraft.world.level.Level;
21+
22+
public class ClientDimensionUnlockEffectType implements ClientResearchEffectType {
23+
public static final ResourceLocation ID = Researchd.rl("dimension_unlock");
24+
public static final ClientDimensionUnlockEffectType INSTANCE = new ClientDimensionUnlockEffectType();
25+
26+
@Override
27+
public ResearchEffectType type() {
28+
return ResearchEffectTypes.DIMENSION_UNLOCK.get();
29+
}
30+
31+
@Override
32+
public void buildLayout(RememberingLinearLayout layout, Context context) {
33+
Registry<?> registry = Minecraft.getInstance().level.registryAccess().registryOrThrow(Registries.DIMENSION_TYPE);
34+
layout.addWidget("id_edit_box", new RegistryVerifyEditBox(PopupWidget.getFont(), registry, context.innerWidth() - 8, 16, CommonComponents.EMPTY));
35+
}
36+
37+
@Override
38+
public ResearchEffect createResearchEffect(RememberingLinearLayout layout) {
39+
return new DimensionUnlockEffect(ResourceLocation.parse(layout.getChild("id_edit_box", BackgroundEditBox.class).getValue()), ResourceLocation.withDefaultNamespace(""));
40+
}
41+
}

src/main/java/com/portingdeadmods/researchd/client/impl/methods/types/ClientCheckItemPresenceMethodType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public ResearchMethodType type() {
1919
}
2020

2121
@Override
22-
public ResearchMethod createResearchMethod(RememberingLinearLayout layout) {
22+
public ResearchMethod createResearchEffect(RememberingLinearLayout layout) {
2323
return new CheckItemPresenceResearchMethod(
2424
layout.getChild("item_selector", ItemSelectorWidget.class).createIngredient(),
2525
Integer.parseInt(layout.getChild("count", EditBox.class).getValue())

src/main/java/com/portingdeadmods/researchd/client/impl/methods/types/ClientConsumeItemResearchMethodType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ private boolean isValid(String newVal) {
4646
}
4747

4848
@Override
49-
public ResearchMethod createResearchMethod(RememberingLinearLayout layout) {
49+
public ResearchMethod createResearchEffect(RememberingLinearLayout layout) {
5050
return new ConsumeItemResearchMethod(
5151
layout.getChild("item_selector", ItemSelectorWidget.class).createIngredient(),
5252
Integer.parseInt(layout.getChild("count", EditBox.class).getValue())

0 commit comments

Comments
 (0)