Skip to content

Commit

Permalink
Reorganize main class
Browse files Browse the repository at this point in the history
  • Loading branch information
yuesha-yc committed Dec 6, 2024
1 parent eae8d2c commit eeb867b
Show file tree
Hide file tree
Showing 25 changed files with 184 additions and 149 deletions.
5 changes: 0 additions & 5 deletions src/main/java/com/teammoeg/frostedheart/FHBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,7 @@
import com.simibubi.create.AllTags;
import com.simibubi.create.foundation.data.AssetLookup;
import com.simibubi.create.foundation.data.ModelGen;
import com.teammoeg.frostedheart.base.block.FHBaseBlock;
import com.teammoeg.frostedheart.base.item.FHBlockItem;
import com.teammoeg.frostedheart.base.item.FoodBlockItem;
import com.teammoeg.frostedheart.content.agriculture.RyeBlock;
import com.teammoeg.frostedheart.content.agriculture.WhiteTurnipBlock;
import com.teammoeg.frostedheart.content.agriculture.WolfBerryBushBlock;
Expand Down Expand Up @@ -52,18 +50,15 @@
import com.teammoeg.frostedheart.content.utility.incinerator.OilBurnerBlock;
import com.teammoeg.frostedheart.foundation.loot.FHLootGen;
import com.teammoeg.frostedheart.infrastructure.gen.FHBlockStateGen;
import com.teammoeg.frostedheart.util.constants.FHProps;
import com.tterrag.registrate.providers.loot.RegistrateBlockLootTables;
import com.tterrag.registrate.util.entry.BlockEntry;
import net.minecraft.data.loot.packs.VanillaBlockLoot;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.BlockTags;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items;
import net.minecraft.world.item.enchantment.Enchantments;
import net.minecraft.world.level.block.*;
import net.minecraft.world.level.material.MapColor;
import net.minecraft.world.level.storage.loot.BuiltInLootTables;
import net.minecraft.world.level.storage.loot.entries.LootItem;
import net.minecraft.world.level.storage.loot.functions.ApplyBonusCount;
import net.minecraft.world.level.storage.loot.providers.number.ConstantValue;
Expand Down
155 changes: 78 additions & 77 deletions src/main/java/com/teammoeg/frostedheart/FHMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,29 +37,19 @@
import com.teammoeg.frostedheart.foundation.tooltips.FoodTempStats;
import com.teammoeg.frostedheart.infrastructure.data.FHRecipeReloadListener;
import com.teammoeg.frostedheart.infrastructure.gen.FHRegistrate;
import com.teammoeg.frostedheart.events.FTBTeamsEvents;
import com.teammoeg.frostedheart.compat.ftbteams.FTBTeamsEvents;
import com.teammoeg.frostedheart.infrastructure.config.FHConfig;
import com.teammoeg.frostedheart.foundation.loot.FHLoot;
import com.teammoeg.frostedheart.mixin.minecraft.FoodAccess;
import com.teammoeg.frostedheart.util.RegistryUtils;
import com.teammoeg.frostedheart.util.constants.FHProps;
import com.teammoeg.frostedheart.util.utility.BlackListPredicate;
import com.teammoeg.frostedheart.util.version.FHRemote;
import com.teammoeg.frostedheart.util.version.FHVersion;
import com.teammoeg.frostedheart.foundation.world.FHBiomeModifiers;
import com.teammoeg.frostedheart.foundation.world.FHBiomes;
import com.teammoeg.frostedheart.foundation.world.FHFeatures;
import dev.ftb.mods.ftbteams.api.event.TeamEvent;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.GameRules;
import net.minecraft.world.level.GameRules.IntegerValue;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.level.LevelEvent;
import net.minecraftforge.event.server.ServerAboutToStartEvent;
import net.minecraftforge.event.server.ServerStoppedEvent;
import net.minecraftforge.event.server.*;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.ModList;
Expand All @@ -71,25 +61,43 @@
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.Marker;
import org.apache.logging.log4j.MarkerManager;

import java.io.File;

@Mod(FHMain.MODID)
public class FHMain {

// Constants
public static final String MODID = "frostedheart";
public static final String ALIAS = "fh";
public static final String TWRID = "twr";
public static final String MODNAME = "Frosted Heart";
public static final Logger LOGGER = LogManager.getLogger(MODNAME);
public static final String MODPACK = "The Winter Rescue";

// Logger
public static final Logger LOGGER = LogManager.getLogger(MODNAME + " (" + MODPACK + ")");
public static final Marker VERSION_CHECK = MarkerManager.getMarker("Version Check");
public static final Marker INIT = MarkerManager.getMarker("Init");
public static final Marker SETUP = MarkerManager.getMarker("Setup");
public static final Marker COMMON_INIT = MarkerManager.getMarker("Common").addParents(INIT);
public static final Marker CLIENT_INIT = MarkerManager.getMarker("Client").addParents(INIT);
public static final Marker COMMON_SETUP = MarkerManager.getMarker("Common").addParents(SETUP);
public static final Marker CLIENT_SETUP = MarkerManager.getMarker("Client").addParents(SETUP);

// Remote
public static FHRemote remote;
public static FHRemote local;
public static FHRemote pre;

// Update
public static File lastbkf;
public static File lastServerConfig;
public static boolean saveNeedUpdate;
public static final FHRegistrate REGISTRATE = FHRegistrate.create(MODID);

// Registrate
public static final FHRegistrate REGISTRATE = FHRegistrate.create(MODID);
static {
REGISTRATE.setTooltipModifierFactory(item -> {
return new ItemDescription.Modifier(item, TooltipHelper.Palette.STANDARD_CREATE)
Expand All @@ -99,31 +107,60 @@ public class FHMain {
.andThen(TooltipModifier.mapNull(KineticStats.create(item)))
;
});

FHTooltips.registerTooltipModifiers();
}

public static ResourceLocation rl(String path) {
return new ResourceLocation(MODID, path);
}

/**
* Do all initialization that does not require deferred registers to be filled.
*/
public FHMain() {
// Config
FHConfig.register();

IEventBus mod = FMLJavaModLoadingContext.get().getModEventBus();
IEventBus forge = MinecraftForge.EVENT_BUS;

// Config
LOGGER.info(COMMON_INIT, "Loading Config");
FHConfig.register();

// FH Remote Version Check
LOGGER.info(VERSION_CHECK, "Checking for updates");
local = new FHRemote.FHLocal();
remote = new FHRemote();
if (local.fetchVersion().resolve().orElse(FHVersion.empty).getOriginal().contains("pre"))
pre = new FHRemote.FHPreRemote();
FHMain.LOGGER.info("TWR Version: " + local.fetchVersion().resolve().orElse(FHVersion.empty).getOriginal());
LOGGER.info(VERSION_CHECK, "Check completes. Running on version " + local.fetchVersion().resolve().orElse(FHVersion.empty).getOriginal());

// Registrate
LOGGER.info(COMMON_INIT, "Registering Registrate");
REGISTRATE.registerEventListeners(mod);

// Init
LOGGER.info(COMMON_INIT, "Initializing " + MODNAME);
FHTags.init();
FHItems.init();
FHProps.init();
FHBlocks.init();
FHBiomes.init();
FHMultiblocks.Multiblock.init();
FHPredicates.init();

// Compat init
LOGGER.info(COMMON_INIT, "Initializing Mod Compatibilities");
SpecialDataTypes.init();
if (ModList.get().isLoaded("create"))
CreateCompat.init();
if (ModList.get().isLoaded("tetra"))
TetraCompat.init();
if (ModList.get().isLoaded("ftbquests"))
FHRewardTypes.init();
if (ModList.get().isLoaded("ftbteams"))
FTBTeamsEvents.init();

// Registration
// Deferred Registration
LOGGER.info(COMMON_INIT, "Registering Deferred Registers");
FHEntityTypes.ENTITY_TYPES.register(mod);
FHFluids.FLUIDS.register(mod);
FHFluids.FLUID_TYPES.register(mod);
Expand All @@ -134,7 +171,6 @@ public FHMain() {
FHTabs.TABS.register(mod);
FHItems.ITEMS.register(mod);
FHBlocks.BLOCKS.register(mod);

FHSoundEvents.SOUNDS.register(mod);
FHRecipes.RECIPE_SERIALIZERS.register(mod);
FHRecipes.RECIPE_TYPES.register(mod);
Expand All @@ -145,48 +181,25 @@ public FHMain() {
FHLoot.LC_REGISTRY.register(mod);
FHLoot.LM_REGISTRY.register(mod);

FHItems.init();
FHProps.init();
FHBlocks.init();
FHBiomes.init();
FHMultiblocks.Multiblock.init();

// Compat init
CreateCompat.init();
TetraCompat.init();
SpecialDataTypes.init();
if (ModList.get().isLoaded("ftbquests"))
FHRewardTypes.init();

// Event registration
TeamEvent.PLAYER_CHANGED.register(FTBTeamsEvents::syncDataWhenTeamChange);
TeamEvent.CREATED.register(FTBTeamsEvents::syncDataWhenTeamCreated);
TeamEvent.DELETED.register(FTBTeamsEvents::syncDataWhenTeamDeleted);
TeamEvent.OWNERSHIP_TRANSFERRED.register(FTBTeamsEvents::syncDataWhenTeamTransfer);
ItemPredicate.register(new ResourceLocation(MODID, "blacklist"), BlackListPredicate::new);

// Registrate
REGISTRATE.registerEventListeners(mod);

// Forge bus
forge.addListener(this::serverStart);
forge.addListener(this::serverSave);
forge.addListener(this::serverStop);
LOGGER.info(COMMON_INIT, "Registering Forge Event Listeners");
forge.register(new FHRecipeReloadListener(null));

// Mod bus
LOGGER.info(COMMON_INIT, "Registering Mod Event Listeners");
mod.addListener(this::setup);
mod.addListener(this::processIMC);
mod.addListener(this::enqueueIMC);
mod.addListener(this::loadComplete);

// Client setup
LOGGER.info(COMMON_INIT, "Proceeding to Client Initialization");
DistExecutor.safeRunWhenOn(Dist.CLIENT, () -> FHClient::setupClient);
}

/**
* Where miscellaneous setup is done
* @param event
* Setup stuff that requires deferred registers to be filled.
* @param event The event
*/
private void setup(final FMLCommonSetupEvent event) {
FHNetwork.register();
Expand All @@ -196,40 +209,28 @@ private void setup(final FMLCommonSetupEvent event) {

}

public void serverSave(final LevelEvent.Save event) {
if (FHTeamDataManager.INSTANCE != null) {
FHResearch.save();
FHTeamDataManager.INSTANCE.save();
//FHScenario.save(); // TODO: Scenrario save
}
}

public void serverStart(final ServerAboutToStartEvent event) {
new FHTeamDataManager(event.getServer());
FHResearch.load();
FHTeamDataManager.INSTANCE.load();
SurroundingTemperatureSimulator.init();
}

public void serverStop(final ServerStoppedEvent event) {
FHTeamDataManager.INSTANCE = null;
}

/**
* Enqueue Inter-Mod Communication
* @param event The event
*/
private void enqueueIMC(final InterModEnqueueEvent event) {
CuriosCompat.sendIMCS();
}

private void loadComplete(FMLLoadCompleteEvent event) {
for (Item i : RegistryUtils.getItems()) {
if (i.isEdible()) {
if (RegistryUtils.getRegistryName(i).getNamespace().equals("crockpot")) {
((FoodAccess) i.getFoodProperties()).getEffectsSuppliers().removeIf(t -> t.getFirst().get().getEffect().isBeneficial());
}
}
}
/**
* Process Inter-Mod Communication
* @param event The event
*/
private void processIMC(final InterModProcessEvent event) {

}

private void processIMC(final InterModProcessEvent event) {
/**
* Stuff that needs to be done after everything is loaded.
* In general, not used.
* @param event The event
*/
private void loadComplete(FMLLoadCompleteEvent event) {

}
}
13 changes: 13 additions & 0 deletions src/main/java/com/teammoeg/frostedheart/FHPredicates.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.teammoeg.frostedheart;

import com.teammoeg.frostedheart.util.utility.BlackListPredicate;
import net.minecraft.advancements.critereon.ItemPredicate;
import net.minecraft.resources.ResourceLocation;

import static com.teammoeg.frostedheart.FHMain.MODID;

public class FHPredicates {
public static void init() {
ItemPredicate.register(new ResourceLocation(MODID, "blacklist"), BlackListPredicate::new);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*
*/

package com.teammoeg.frostedheart.util.constants;
package com.teammoeg.frostedheart;

import com.teammoeg.frostedheart.FHMain;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*
*/

package com.teammoeg.frostedheart.util.version;
package com.teammoeg.frostedheart;

import java.io.File;
import java.io.FileReader;
Expand All @@ -26,29 +26,30 @@
import java.util.Scanner;

import com.google.gson.JsonParser;
import com.teammoeg.frostedheart.FHMain;
import com.teammoeg.frostedheart.util.io.FileUtil;
import com.teammoeg.frostedheart.util.utility.OptionalLazy;

import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.loading.FMLPaths;

import static com.teammoeg.frostedheart.FHMain.*;

public class FHRemote {
public static class FHLocal extends FHRemote {
@Override
public void doFetch() {
fromTLV();
if (this.stableVersion != null) {
FHMain.LOGGER.info("[TWR Version Check] Fetched FH local version from .twrlastversion: " + this.stableVersion);
LOGGER.info(VERSION_CHECK, "Fetched FH local version from .twrlastversion: " + this.stableVersion);
return;
}
// fromCFM();
// if (this.stableVersion != null) return;
fromModVersion();
if (this.stableVersion != null) {
FHMain.LOGGER.info("[TWR Version Check] Fetched FH local version from mod version: " + this.stableVersion);
LOGGER.info(VERSION_CHECK, "Fetched FH local version from mod version: " + this.stableVersion);
} else {
FHMain.LOGGER.info("[TWR Version Check] Failed to fetch FH local version, check your installation.");
LOGGER.info(VERSION_CHECK, "Failed to fetch FH local version, check your installation.");
this.stableVersion = "";
}
}
Expand All @@ -66,16 +67,18 @@ private void fromCFM() {//from curseforge manifest
this.stableVersion = parser.parse(fr).getAsJsonObject().get("version").getAsString();
}
} catch (Throwable e) {
FHMain.LOGGER.error("[TWR Version Check] Error fetching FH local version from curseforge manifest", e);
LOGGER.error(VERSION_CHECK, "Error fetching FH local version from curseforge manifest", e);
throw new RuntimeException("[TWR Version Check] Error fetching FH local version from curseforge manifest", e);
}
}
}

private void fromModVersion() {
try {
String versionWithMC = ModList.get().getModContainerById(FHMain.MODID).get().getModInfo().getVersion().toString();
String versionWithMC = ModList.get().getModContainerById(MODID).get().getModInfo().getVersion().toString();
this.stableVersion = versionWithMC.substring(versionWithMC.indexOf('-') + 1);
} catch (Throwable e) {
LOGGER.error(VERSION_CHECK, "Error fetching FH local version from mod version", e);
throw new RuntimeException("[TWR Version Check] Error fetching FH local version from mod version", e);
}
}
Expand All @@ -86,6 +89,7 @@ private void fromTLV() {
try {
this.stableVersion = FileUtil.readString(vers);
} catch (Throwable e) {
LOGGER.error(VERSION_CHECK, "Error fetching FH local version from .twrlastversion", e);
throw new RuntimeException("[TWR Version Check] Error fetching FH local version from .twrlastversion", e);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
*
*/

package com.teammoeg.frostedheart.util.version;
package com.teammoeg.frostedheart;

import java.util.Arrays;

Expand Down
Loading

0 comments on commit eeb867b

Please sign in to comment.