Skip to content

Commit

Permalink
feat: restructured configs and added translations for menu, fixed wir…
Browse files Browse the repository at this point in the history
…eless charger item and fixed gui not opening
  • Loading branch information
GoryMoon committed Dec 31, 2024
1 parent 2207c2d commit dd4eee8
Show file tree
Hide file tree
Showing 16 changed files with 115 additions and 87 deletions.
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
// 1.21.1 2024-12-31T12:30:34.839191732 Languages: en_us for mod: chargers
7d4af7dcd31f87e19a92a45c339a75514bc8149a assets/chargers/lang/en_us.json
// 1.21.1 2024-12-31T14:03:16.750534933 Languages: en_us for mod: chargers
8ff9f0a596be294cd17215c3e52b69ce7b417824 assets/chargers/lang/en_us.json
12 changes: 12 additions & 0 deletions src/generated/resources/assets/chargers/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,18 @@
"chargers.chat.stored.infinite.info": "Power: ∞ FE",
"chargers.chat.stored.info": "Power: %s/%s FE",
"chargers.chat.wireless_charger.info": "Status: %s, Power: %s/%s FE",
"chargers.configuration.chargers": "Chargers",
"chargers.configuration.compat": "Compatability",
"chargers.configuration.curios_compat": "Curios",
"chargers.configuration.max_input": "Max Input",
"chargers.configuration.max_output": "Max Output",
"chargers.configuration.range": "Range",
"chargers.configuration.storage": "Storage",
"chargers.configuration.tier_1": "Charger Tier 1",
"chargers.configuration.tier_2": "Charger Tier 2",
"chargers.configuration.tier_3": "Charger Tier 3",
"chargers.configuration.tier_4": "Charger Tier 4",
"chargers.configuration.wireless": "Wireless Charger",
"chargers.gui.details.in": "In: %s FE/t",
"chargers.gui.details.out": "Out: %s FE/t",
"chargers.gui.energy": "%s/%s FE",
Expand Down
4 changes: 0 additions & 4 deletions src/main/java/se/gory_moon/chargers/ChargersMod.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import net.neoforged.fml.config.ModConfig;
import net.neoforged.neoforge.common.data.ExistingFileHelper;
import net.neoforged.neoforge.data.event.GatherDataEvent;
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent;
import se.gory_moon.chargers.block.BlockRegistry;
import se.gory_moon.chargers.block.entity.BlockEntityRegistry;
import se.gory_moon.chargers.crafting.RecipeSerializers;
Expand All @@ -31,9 +30,7 @@
@Mod(Constants.MOD_ID)
public class ChargersMod {


public ChargersMod(IEventBus modBus, ModContainer container) {

modBus.addListener(this::gatherData);
modBus.addListener(PayloadRegister::onPayloadRegister);
modBus.addListener(CapabilityRegistrationHandler::registerCapabilities);
Expand All @@ -48,7 +45,6 @@ public ChargersMod(IEventBus modBus, ModContainer container) {

RecipeSerializers.RECIPE_SERIALIZER.register(modBus);
container.registerConfig(ModConfig.Type.SERVER, Configs.serverSpec);
container.registerConfig(ModConfig.Type.COMMON, Configs.commonSpec);
}

private void gatherData(GatherDataEvent event) {
Expand Down
9 changes: 9 additions & 0 deletions src/main/java/se/gory_moon/chargers/ChargersModClient.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,23 @@
import net.neoforged.bus.api.IEventBus;
import net.neoforged.fml.ModContainer;
import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.client.event.RegisterMenuScreensEvent;
import net.neoforged.neoforge.client.gui.ConfigurationScreen;
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
import se.gory_moon.chargers.block.entity.BlockEntityRegistry;
import se.gory_moon.chargers.client.ChargerScreen;

@Mod(value = Constants.MOD_ID, dist = Dist.CLIENT)
public class ChargersModClient {

public ChargersModClient(IEventBus modBus, ModContainer container) {
modBus.addListener(this::registerScreens);

// Register the configuration screen
container.registerExtensionPoint(IConfigScreenFactory.class, ConfigurationScreen::new);
}

private void registerScreens(RegisterMenuScreensEvent event) {
event.register(BlockEntityRegistry.CHARGER_MENU.get(), ChargerScreen::new);
}
}
36 changes: 11 additions & 25 deletions src/main/java/se/gory_moon/chargers/Configs.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,10 @@ public class Configs {
public static final Server SERVER;
public static final ModConfigSpec serverSpec;

public static final Common COMMON;
public static final ModConfigSpec commonSpec;

static {
Pair<Server, ModConfigSpec> configSpecPairServer = new ModConfigSpec.Builder().configure(Server::new);
serverSpec = configSpecPairServer.getRight();
SERVER = configSpecPairServer.getLeft();

Pair<Common, ModConfigSpec> configSpecPairCommon = new ModConfigSpec.Builder().configure(Common::new);
commonSpec = configSpecPairCommon.getRight();
COMMON = configSpecPairCommon.getLeft();
}

public static class Server {
Expand All @@ -28,6 +21,8 @@ public static class Server {
public Tier tier4;
public Wireless wireless;

public ModConfigSpec.BooleanValue curiosCompat;

Server(ModConfigSpec.Builder builder) {
builder.comment("Chargers configs")
.push("chargers");
Expand All @@ -51,6 +46,15 @@ public static class Server {
builder.push("wireless");
wireless = new Wireless(builder, 200000, 4000, 4000, 24);
builder.pop(2);

builder.comment("Compat configs")
.push("compat");

curiosCompat = builder
.comment("If the wireless charger should charge curios items")
.define("curios_compat", true);

builder.pop();
}

public static class Tier {
Expand Down Expand Up @@ -107,22 +111,4 @@ protected Wireless(ModConfigSpec.Builder builder, int storage, int in, int out,
}
}
}

public static class Common {
public ModConfigSpec.BooleanValue curiosCompat;

Common(ModConfigSpec.Builder builder) {
builder.comment("Common configs")
.push("common");

builder.comment("Compat configs")
.push("compat");

curiosCompat = builder
.comment("If the wireless charger should charge curios items")
.define("curios_compat", true);

builder.pop(2);
}
}
}
14 changes: 14 additions & 0 deletions src/main/java/se/gory_moon/chargers/LangKeys.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,20 @@ public enum LangKeys {
GUI_DETAILS_OUT("gui.details.out"),
GUI_IO_MORE("gui.io.more"),

CONFIG_CHARGERS("configuration.chargers"),
CONFIG_COMPAT("configuration.compat"),
CONFIG_CURIOS_COMPAT("configuration.curios_compat"),
CONFIG_MAX_INPUT("configuration.max_input"),
CONFIG_MAX_OUTPUT("configuration.max_output"),
CONFIG_STORAGE("configuration.storage"),
CONFIG_RANGE("configuration.range"),

CONFIG_WIRELESS("configuration.wireless"),
CONFIG_TIER_1("configuration.tier_1"),
CONFIG_TIER_2("configuration.tier_2"),
CONFIG_TIER_3("configuration.tier_3"),
CONFIG_TIER_4("configuration.tier_4"),

TOOLTIP_WIRELESS_CHARGER("tooltip.wireless_charger"),

CREATIVE_TAB("itemGroup.chargers.chargers", true),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ public final class BlockEntityRegistry {
).build(null)
);

public static final Supplier<MenuType<ChargerMenu>> CHARGER_CONTAINER = MENU_TYPES.register(
public static final Supplier<MenuType<ChargerMenu>> CHARGER_MENU = MENU_TYPES.register(
Constants.CHARGER_BLOCK,
() -> new MenuType<>(ChargerMenu::new, FeatureFlags.DEFAULT_FLAGS));

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package se.gory_moon.chargers.block.entity;

import it.unimi.dsi.fastutil.Pair;
import net.minecraft.core.BlockPos;
import net.minecraft.core.HolderLookup;
import net.minecraft.nbt.CompoundTag;
Expand All @@ -9,27 +8,18 @@
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
import net.neoforged.neoforge.capabilities.ItemCapability;
import net.neoforged.neoforge.energy.IEnergyStorage;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import se.gory_moon.chargers.compat.bc.BrandonsCoreCompat;
import se.gory_moon.chargers.compat.fn.FluxNetworksCompat;
import se.gory_moon.chargers.inventory.ChargerData;
import se.gory_moon.chargers.power.CustomEnergyStorage;

import java.util.HashMap;
import java.util.Map;

public abstract class EnergyHolderBlockEntity extends BlockEntity {

public static final String STORAGE_TAG = "Storage";

@Nullable
private CustomEnergyStorage storage = null;

private final Map<ItemCapability<IEnergyStorage, Void>, Pair<IEnergyStorage, IEnergyStorage>> compatWrappers = new HashMap<>();

protected final ChargerData energyData = new ChargerData() {
public long get(int index) {
return switch (index) {
Expand Down Expand Up @@ -58,15 +48,6 @@ public EnergyHolderBlockEntity(BlockEntityType<?> blockEntityType, BlockPos pos,

public void setStorage(CustomEnergyStorage storage) {
this.storage = storage;

if (BrandonsCoreCompat.INSTANCE.isLoaded()) {
BrandonsCoreCompat.INSTANCE.createOpWrapper(storage, compatWrappers);
}

if (FluxNetworksCompat.INSTANCE.isLoaded()) {
FluxNetworksCompat.INSTANCE.createFNWrapper(storage, compatWrappers);
}

invalidateCapabilities();
}

Expand Down Expand Up @@ -105,6 +86,7 @@ public ClientboundBlockEntityDataPacket getUpdatePacket() {
CompoundTag tag = new CompoundTag();
saveAdditional(tag, registries);
return tag;
// TODO test this
//return saveWithoutMetadata(registries);
}

Expand Down
16 changes: 16 additions & 0 deletions src/main/java/se/gory_moon/chargers/compat/ChargeCompat.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import net.minecraft.world.item.ItemStack;
import net.neoforged.neoforge.capabilities.Capabilities;
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
import net.neoforged.neoforge.energy.IEnergyStorage;
import se.gory_moon.chargers.compat.bc.BrandonsCoreCompat;
import se.gory_moon.chargers.compat.fn.FluxNetworksCompat;
import se.gory_moon.chargers.compat.industrial.IndustrialForegoingCompat;
import se.gory_moon.chargers.power.CustomEnergyStorage;

Expand All @@ -25,6 +27,20 @@ private int cap(long value) {
return value > Integer.MAX_VALUE ? Integer.MAX_VALUE : (int) value;
}

/**
* Registers capabilities for compatibility with other mods
* @param event The passed event used to register
*/
public static void registerCapabilities(RegisterCapabilitiesEvent event) {
if (BrandonsCoreCompat.INSTANCE.isLoaded()) {
BrandonsCoreCompat.INSTANCE.registerOPCapability(event);
}

if (FluxNetworksCompat.INSTANCE.isLoaded()) {
FluxNetworksCompat.INSTANCE.registerFNCapability(event);
}
}

/**
* Discharge an item into the block storage
*
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/se/gory_moon/chargers/compat/Curios.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ public class Curios {
}

public static boolean isLoaded() {
return loaded && Configs.COMMON.curiosCompat.get();
return loaded && Configs.SERVER.curiosCompat.get();
}

// TODO Curios inventory for gui
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
package se.gory_moon.chargers.compat.bc;

import it.unimi.dsi.fastutil.Pair;
import net.neoforged.fml.ModList;
import net.neoforged.neoforge.capabilities.ItemCapability;
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
import net.neoforged.neoforge.energy.IEnergyStorage;
import org.jetbrains.annotations.NotNull;
import se.gory_moon.chargers.power.CustomEnergyStorage;

import java.util.Map;
import java.util.Optional;

public class BrandonsCoreCompat {
Expand Down Expand Up @@ -84,13 +81,14 @@ public void registerOPCapability(@NotNull RegisterCapabilitiesEvent event) {
* Creates a wrapper around the provided storage, invalidates any previous lazy optionals if available.
*
* @param storage The storage to wrap
* @param compatWrappers The map holding the wrappers
* @return Returns a wrapped energy storage
*/
public void createOpWrapper(CustomEnergyStorage storage, Map<ItemCapability<IEnergyStorage, Void>, Pair<IEnergyStorage, IEnergyStorage>> compatWrappers) {
private IEnergyStorage createOpWrapper(CustomEnergyStorage storage) {
/*if (compatWrappers.containsKey(CapabilityOP.OP)) {
compatWrappers.get(CapabilityOP.OP).second().invalidate();
}
var opWrapper = new OpStorageWrapper(storage);
compatWrappers.put(CapabilityOP.OP, Pair.of(opWrapper, LazyOptional.of(() -> opWrapper)));*/
return null;
}
}
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
package se.gory_moon.chargers.compat.fn;

import it.unimi.dsi.fastutil.Pair;
import net.neoforged.fml.ModList;
import net.neoforged.neoforge.capabilities.ItemCapability;
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
import net.neoforged.neoforge.energy.IEnergyStorage;
import org.jetbrains.annotations.NotNull;
import se.gory_moon.chargers.power.CustomEnergyStorage;

import java.util.Map;

public class FluxNetworksCompat {
public static FluxNetworksCompat INSTANCE = new FluxNetworksCompat();

Expand Down Expand Up @@ -43,13 +39,14 @@ public void registerFNCapability(@NotNull RegisterCapabilitiesEvent event) {
* Creates a wrapper around the provided storage, invalidates any previous lazy optionals if available.
*
* @param storage The storage to wrap
* @param compatWrappers The map holding the wrappers
* @return Returns a wrapped energy storage
*/
public void createFNWrapper(CustomEnergyStorage storage, Map<ItemCapability<IEnergyStorage, Void>, Pair<IEnergyStorage, IEnergyStorage>> compatWrappers) {
private IEnergyStorage createFNWrapper(CustomEnergyStorage storage) {
/*if (compatWrappers.containsKey(FluxCapabilities.FN_ENERGY_STORAGE)) {
compatWrappers.get(FluxCapabilities.FN_ENERGY_STORAGE).second().invalidate();
}
var fnWrapper = new FNStorageWrapper(storage);
compatWrappers.put(FluxCapabilities.FN_ENERGY_STORAGE, Pair.of(fnWrapper, LazyOptional.of(() -> fnWrapper)));*/
return null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,23 +21,41 @@ protected void addTranslations() {
addBlock(BlockRegistry.CHARGER_BLOCK_CREATIVE, "Creative Charger");
addBlock(BlockRegistry.WIRELESS_CHARGER, "Wireless Charger");

add(LangKeys.TOOLTIP_WIRELESS_CHARGER.key(), "Can be disabled with redstone power");
add(LangKeys.CREATIVE_TAB.key(), "Chargers");
add(LangKeys.PACK_DESCRIPTION.key(), "Chargers mod resources");

add(LangKeys.CHAT_WIRELESS_CHARGER_INFO.key(), "Status: %s, Power: %s/%s FE");
add(LangKeys.CHAT_ENABLED.key(), "Enabled");
add(LangKeys.CHAT_DISABLED.key(), "Disabled");
add(LangKeys.CHAT_STORED_INFO.key(), "Power: %s/%s FE");
add(LangKeys.CHAT_STORED_INFINITE_INFO.key(), "Power: ∞ FE");

add(LangKeys.GUI_ENERGY.key(), "%s/%s FE");
add(LangKeys.GUI_ENERGY_INFINITE.key(), "∞ FE");
add(LangKeys.GUI_MAX_IN.key(), "Max In: %s FE/t");
add(LangKeys.GUI_MAX_OUT.key(), "Max Out: %s FE/t");
add(LangKeys.GUI_IO.key(), "I/O: %s FE/t");
add(LangKeys.GUI_IO_MORE.key(), "Hold shift for more I/O details");
add(LangKeys.GUI_DETAILS_IN.key(), "In: %s FE/t");
add(LangKeys.GUI_DETAILS_OUT.key(), "Out: %s FE/t");
add(LangKeys.TOOLTIP_WIRELESS_CHARGER, "Can be disabled with redstone power");
add(LangKeys.CREATIVE_TAB, "Chargers");
add(LangKeys.PACK_DESCRIPTION, "Chargers mod resources");

add(LangKeys.CONFIG_CHARGERS, "Chargers");
add(LangKeys.CONFIG_COMPAT, "Compatability");
add(LangKeys.CONFIG_CURIOS_COMPAT, "Curios");
add(LangKeys.CONFIG_MAX_INPUT, "Max Input");
add(LangKeys.CONFIG_MAX_OUTPUT, "Max Output");
add(LangKeys.CONFIG_STORAGE, "Storage");
add(LangKeys.CONFIG_RANGE, "Range");

add(LangKeys.CONFIG_WIRELESS, "Wireless Charger");
add(LangKeys.CONFIG_TIER_1, "Charger Tier 1");
add(LangKeys.CONFIG_TIER_2, "Charger Tier 2");
add(LangKeys.CONFIG_TIER_3, "Charger Tier 3");
add(LangKeys.CONFIG_TIER_4, "Charger Tier 4");

add(LangKeys.CHAT_WIRELESS_CHARGER_INFO, "Status: %s, Power: %s/%s FE");
add(LangKeys.CHAT_ENABLED, "Enabled");
add(LangKeys.CHAT_DISABLED, "Disabled");
add(LangKeys.CHAT_STORED_INFO, "Power: %s/%s FE");
add(LangKeys.CHAT_STORED_INFINITE_INFO, "Power: ∞ FE");

add(LangKeys.GUI_ENERGY, "%s/%s FE");
add(LangKeys.GUI_ENERGY_INFINITE, "∞ FE");
add(LangKeys.GUI_MAX_IN, "Max In: %s FE/t");
add(LangKeys.GUI_MAX_OUT, "Max Out: %s FE/t");
add(LangKeys.GUI_IO, "I/O: %s FE/t");
add(LangKeys.GUI_IO_MORE, "Hold shift for more I/O details");
add(LangKeys.GUI_DETAILS_IN, "In: %s FE/t");
add(LangKeys.GUI_DETAILS_OUT, "Out: %s FE/t");
}

private void add(LangKeys key, String text) {
add(key.key(), text);
}
}
Loading

0 comments on commit dd4eee8

Please sign in to comment.