Skip to content

Commit

Permalink
Added quantum computer ui and added conditional recipes if mega is lo…
Browse files Browse the repository at this point in the history
…aded
  • Loading branch information
pedroksl committed Sep 10, 2024
1 parent a0bba06 commit 877f226
Show file tree
Hide file tree
Showing 14 changed files with 760 additions and 15 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ loader_version_range=[4,)
mod_id=advanced_ae
mod_name=Advanced AE
mod_license=LGPL-3.0
mod_version=0.4.2-1.21.1
mod_version=0.4.3-1.21.1
mod_group_id=net.pedroksl.advanced_ae
mod_authors=Pedroksl
mod_description=This mod aims to expand on the added capabilities of Extended AE.
Expand Down
20 changes: 16 additions & 4 deletions src/main/java/net/pedroksl/advanced_ae/AAEConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,16 @@ public int getQuantumComputerMaxSize() {
return common.quantumComputerMaxSize.get();
}

public int getQuantumComputerAcceleratorThreads() {
return common.quantumComputerAcceleratorThreads.get();
}

public int getQuantumComputerMaxMultiThreaders() {
return common.quantumComputerMaxMultiThreaders.get();
}

public int getQuantumComputermaxDataEntanglers() {
return common.quantumComputermaxDataEntanglers.get();
return common.quantumComputerMaxDataEntanglers.get();
}

public int getQuantumComputerMultiThreaderMultiplication() {
Expand Down Expand Up @@ -66,8 +70,9 @@ private static class CommonConfig {
private final ModConfigSpec spec;

public final ModConfigSpec.IntValue quantumComputerMaxSize;
public final ModConfigSpec.IntValue quantumComputerAcceleratorThreads;
public final ModConfigSpec.IntValue quantumComputerMaxMultiThreaders;
public final ModConfigSpec.IntValue quantumComputermaxDataEntanglers;
public final ModConfigSpec.IntValue quantumComputerMaxDataEntanglers;
public final ModConfigSpec.IntValue quantumComputerMultiThreaderMultiplication;
public final ModConfigSpec.IntValue quantumComputerDataEntanglerMultiplication;

Expand All @@ -80,16 +85,23 @@ public CommonConfig() {
"quantumComputerMaxSize",
5,
5,
16,
12,
"Define the maximum dimensions of the Quantum Computer Multiblock.");
quantumComputerAcceleratorThreads = define(
builder,
"quantumComputerAcceleratorThreads",
8,
4,
16,
"Define the maximum amount of multi threaders per Quantum Computer Multiblock.");
quantumComputerMaxMultiThreaders = define(
builder,
"quantumComputerMaxMultiThreaders",
1,
0,
2,
"Define the maximum amount of multi threaders per Quantum Computer Multiblock.");
quantumComputermaxDataEntanglers = define(
quantumComputerMaxDataEntanglers = define(
builder,
"quantumComputermaxDataEntanglers",
1,
Expand Down
8 changes: 4 additions & 4 deletions src/main/java/net/pedroksl/advanced_ae/client/AAEClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@
import net.neoforged.neoforge.client.event.RegisterColorHandlersEvent;
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
import net.pedroksl.advanced_ae.AdvancedAE;
import net.pedroksl.advanced_ae.client.gui.AdvPatternEncoderScreen;
import net.pedroksl.advanced_ae.client.gui.AdvPatternProviderScreen;
import net.pedroksl.advanced_ae.client.gui.ReactionChamberScreen;
import net.pedroksl.advanced_ae.client.gui.SmallAdvPatternProviderScreen;
import net.pedroksl.advanced_ae.client.gui.*;
import net.pedroksl.advanced_ae.client.gui.config.OutputDirectionScreen;
import net.pedroksl.advanced_ae.client.renderer.AAECraftingUnitModelProvider;
import net.pedroksl.advanced_ae.client.renderer.ReactionChamberTESR;
Expand All @@ -36,6 +33,9 @@ public AAEClient(IEventBus eventBus) {
}

private static void initScreens(RegisterMenuScreensEvent event) {
InitScreens.register(
event, AAEMenus.QUANTUM_COMPUTER, QuantumComputerScreen::new, "/screens/quantum_computer.json");

InitScreens.register(
event,
AAEMenus.ADV_PATTERN_PROVIDER,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package net.pedroksl.advanced_ae.client.gui;

import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Inventory;
import net.pedroksl.advanced_ae.gui.quantumcomputer.AdvCpuSelectionList;
import net.pedroksl.advanced_ae.gui.quantumcomputer.QuantumComputerMenu;

import appeng.client.gui.me.crafting.CraftingCPUScreen;
import appeng.client.gui.style.ScreenStyle;
import appeng.client.gui.widgets.Scrollbar;

public class QuantumComputerScreen extends CraftingCPUScreen<QuantumComputerMenu> {
public QuantumComputerScreen(
QuantumComputerMenu menu, Inventory playerInventory, Component title, ScreenStyle style) {
super(menu, playerInventory, title, style);

var scrollbar = widgets.addScrollBar("selectCpuScrollbar", Scrollbar.BIG);
widgets.add("selectCpuList", new AdvCpuSelectionList(menu, scrollbar, style));
}

@Override
protected Component getGuiDisplayName(Component in) {
return in; // the cpu name is on the button
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,13 @@
import net.minecraft.world.level.block.state.properties.BooleanProperty;
import net.minecraft.world.level.block.state.properties.IntegerProperty;
import net.minecraft.world.phys.BlockHitResult;
import net.pedroksl.advanced_ae.common.definitions.AAEMenus;
import net.pedroksl.advanced_ae.common.entities.AdvCraftingBlockEntity;

import appeng.block.AEBaseEntityBlock;
import appeng.block.crafting.ICraftingUnitType;
import appeng.blockentity.crafting.CraftingBlockEntity;
import appeng.menu.MenuOpener;
import appeng.menu.locator.MenuLocators;
import appeng.menu.me.crafting.CraftingCPUMenu;

public abstract class AAEAbstractCraftingUnitBlock<T extends AdvCraftingBlockEntity> extends AEBaseEntityBlock<T> {
public static final BooleanProperty FORMED = BooleanProperty.create("formed");
Expand Down Expand Up @@ -105,9 +104,9 @@ public void onRemove(BlockState state, Level level, BlockPos pos, BlockState new
@Override
protected InteractionResult useWithoutItem(
BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) {
if (level.getBlockEntity(pos) instanceof CraftingBlockEntity be && be.isFormed() && be.isActive()) {
if (level.getBlockEntity(pos) instanceof AdvCraftingBlockEntity be && be.isFormed() && be.isActive()) {
if (!level.isClientSide()) {
MenuOpener.open(CraftingCPUMenu.TYPE, player, MenuLocators.forBlockEntity(be));
MenuOpener.open(AAEMenus.QUANTUM_COMPUTER, player, MenuLocators.forBlockEntity(be));
}

return InteractionResult.sidedSuccess(level.isClientSide());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public int getStorageMultiplier() {
@Override
public int getAcceleratorThreads() {
return switch (this) {
case QUANTUM_ACCELERATOR, QUANTUM_CORE -> 8;
case QUANTUM_ACCELERATOR, QUANTUM_CORE -> AAEConfig.instance().getQuantumComputerAcceleratorThreads();
default -> 0;
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
import net.minecraft.world.inventory.MenuType;
import net.neoforged.neoforge.registries.DeferredRegister;
import net.pedroksl.advanced_ae.AdvancedAE;
import net.pedroksl.advanced_ae.common.entities.AdvCraftingBlockEntity;
import net.pedroksl.advanced_ae.common.entities.ReactionChamberEntity;
import net.pedroksl.advanced_ae.common.inventory.AdvPatternEncoderHost;
import net.pedroksl.advanced_ae.common.logic.AdvPatternProviderLogicHost;
import net.pedroksl.advanced_ae.gui.advpatternprovider.AdvPatternProviderMenu;
import net.pedroksl.advanced_ae.gui.advpatternprovider.SmallAdvPatternProviderMenu;
import net.pedroksl.advanced_ae.gui.config.OutputDirectionMenu;
import net.pedroksl.advanced_ae.gui.patternencoder.AdvPatternEncoderContainer;
import net.pedroksl.advanced_ae.gui.quantumcomputer.QuantumComputerMenu;
import net.pedroksl.advanced_ae.gui.reactionchamber.ReactionChamberMenu;

import appeng.api.storage.ISubMenuHost;
Expand All @@ -20,6 +22,9 @@
public class AAEMenus {
public static final DeferredRegister<MenuType<?>> DR = DeferredRegister.create(Registries.MENU, AdvancedAE.MOD_ID);

public static final MenuType<QuantumComputerMenu> QUANTUM_COMPUTER =
create("quantum_computer", QuantumComputerMenu::new, AdvCraftingBlockEntity.class);

public static final MenuType<AdvPatternProviderMenu> ADV_PATTERN_PROVIDER =
create("adv_pattern_provider", AdvPatternProviderMenu::new, AdvPatternProviderLogicHost.class);
public static final MenuType<SmallAdvPatternProviderMenu> SMALL_ADV_PATTERN_PROVIDER =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,15 @@ protected void buildRecipes(@NotNull RecipeOutput c) {
.define('U', AAEBlocks.QUANTUM_UNIT)
.unlockedBy("hasItem", has(AEItems.SINGULARITY))
.save(c, AdvancedAE.makeId("quantumaccel"));
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, AAEBlocks.QUANTUM_STORAGE_128M)
.pattern("ECE")
.pattern("CUC")
.pattern("ECE")
.define('E', AAEItems.SHATTERED_SINGULARITY)
.define('C', MEGAItems.BULK_CELL_COMPONENT)
.define('U', AAEBlocks.QUANTUM_UNIT)
.unlockedBy("hasItem", has(AEItems.SINGULARITY))
.save(Addons.MEGACELLS.conditionalRecipe(c), AdvancedAE.makeId("megaquantumstorage128"));
ShapedRecipeBuilder.shaped(RecipeCategory.MISC, AAEBlocks.QUANTUM_STORAGE_128M)
.pattern("ECE")
.pattern("CUC")
Expand All @@ -151,7 +160,7 @@ protected void buildRecipes(@NotNull RecipeOutput c) {
.define('C', AEItems.CELL_COMPONENT_256K)
.define('U', AAEBlocks.QUANTUM_UNIT)
.unlockedBy("hasItem", has(AEItems.SINGULARITY))
.save(c, AdvancedAE.makeId("quantumstorage128"));
.save(Addons.MEGACELLS.notConditionalRecipe(c), AdvancedAE.makeId("quantumstorage128"));
ShapelessRecipeBuilder.shapeless(RecipeCategory.MISC, AAEBlocks.QUANTUM_STORAGE_256M)
.requires(AAEItems.SHATTERED_SINGULARITY)
.requires(AAEBlocks.QUANTUM_STORAGE_128M)
Expand Down
Loading

0 comments on commit 877f226

Please sign in to comment.