Campfire WTHIT and TOP integration
This commit is contained in:
@@ -90,6 +90,10 @@ dependencies {
|
||||
|
||||
// Shimmer
|
||||
implementation fg.deobf("com.lowdragmc.shimmer:Shimmer-forge-1.19.1:${shimmer_version}")
|
||||
|
||||
// The One Probe
|
||||
implementation "mcjty.theoneprobe:theoneprobe:${top_version}:api"
|
||||
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile) {
|
||||
|
@@ -8,12 +8,14 @@ import me.hypherionmc.hyperlighting.common.entities.NeonFlyEntity;
|
||||
import me.hypherionmc.hyperlighting.common.init.CommonRegistration;
|
||||
import me.hypherionmc.hyperlighting.common.init.HLBlockEntities;
|
||||
import me.hypherionmc.hyperlighting.common.init.HLEntities;
|
||||
import me.hypherionmc.hyperlighting.common.integration.top.TOPIntegration;
|
||||
import me.hypherionmc.hyperlighting.common.worldgen.ForgeWorldGen;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
|
||||
import net.minecraft.client.renderer.entity.EntityRenderers;
|
||||
import net.minecraft.world.entity.SpawnPlacements;
|
||||
import net.minecraft.world.level.levelgen.Heightmap;
|
||||
import net.minecraftforge.client.ConfigScreenHandler;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
import net.minecraftforge.fml.ModLoadingContext;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
@@ -30,6 +32,10 @@ public class HyperLightingForge {
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonInit);
|
||||
CommonRegistration.registerAll();
|
||||
|
||||
if (ModList.get().isLoaded(Constants.THE_ONE_PROBE)) {
|
||||
new TOPIntegration().setup();
|
||||
}
|
||||
|
||||
ForgeWorldGen.registerAll(FMLJavaModLoadingContext.get().getModEventBus());
|
||||
registration.registerEvents();
|
||||
}
|
||||
|
@@ -0,0 +1,42 @@
|
||||
package me.hypherionmc.hyperlighting.common.integration.top;
|
||||
|
||||
import mcjty.theoneprobe.api.IProbeConfig;
|
||||
import mcjty.theoneprobe.api.ITheOneProbe;
|
||||
import me.hypherionmc.hyperlighting.Constants;
|
||||
import me.hypherionmc.hyperlighting.common.integration.top.overrides.TOPCampfireInfoProvider;
|
||||
import net.minecraftforge.fml.InterModComms;
|
||||
import net.minecraftforge.fml.event.lifecycle.InterModEnqueueEvent;
|
||||
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
/**
|
||||
* @author HypherionSA
|
||||
* @date 27/08/2022
|
||||
*/
|
||||
public class TOPIntegration implements Function<ITheOneProbe, Void> {
|
||||
|
||||
private static ITheOneProbe theOneProbe;
|
||||
|
||||
public void setup() {
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::sendIMC);
|
||||
}
|
||||
|
||||
public void sendIMC(InterModEnqueueEvent event) {
|
||||
Constants.LOG.info("Registering TOP integration");
|
||||
InterModComms.sendTo(Constants.THE_ONE_PROBE, "getTheOneProbe", TOPIntegration::new);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void apply(ITheOneProbe theOneProbe) {
|
||||
TOPIntegration.theOneProbe = theOneProbe;
|
||||
|
||||
TOPCampfireInfoProvider topCampfireInfoProvider = new TOPCampfireInfoProvider();
|
||||
theOneProbe.registerBlockDisplayOverride(topCampfireInfoProvider);
|
||||
return null;
|
||||
}
|
||||
|
||||
public static IProbeConfig getProbeConfig() {
|
||||
return theOneProbe.createProbeConfig();
|
||||
}
|
||||
}
|
@@ -0,0 +1,60 @@
|
||||
package me.hypherionmc.hyperlighting.common.integration.top.overrides;
|
||||
|
||||
import mcjty.theoneprobe.api.*;
|
||||
import me.hypherionmc.hyperlighting.Constants;
|
||||
import me.hypherionmc.hyperlighting.common.blockentities.AdvancedCampfireBlockEntity;
|
||||
import me.hypherionmc.hyperlighting.common.integration.top.TOPIntegration;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraftforge.fml.ModList;
|
||||
|
||||
import static mcjty.theoneprobe.api.IProbeConfig.ConfigMode.EXTENDED;
|
||||
import static mcjty.theoneprobe.api.IProbeConfig.ConfigMode.NORMAL;
|
||||
import static mcjty.theoneprobe.api.TextStyleClass.MODNAME;
|
||||
|
||||
/**
|
||||
* @author HypherionSA
|
||||
* @date 27/08/2022
|
||||
*/
|
||||
public class TOPCampfireInfoProvider implements IBlockDisplayOverride {
|
||||
|
||||
@Override
|
||||
public boolean overrideStandardInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player playerEntity, Level world, BlockState blockState, IProbeHitData iProbeHitData) {
|
||||
IProbeConfig config = TOPIntegration.getProbeConfig();
|
||||
|
||||
if (probeMode != ProbeMode.DEBUG) {
|
||||
if (world.getBlockEntity(iProbeHitData.getPos()) instanceof AdvancedCampfireBlockEntity tileCampFire) {
|
||||
String modName = ModList.get().getModContainerById(Constants.MOD_ID).get().getModInfo().getDisplayName();
|
||||
iProbeInfo
|
||||
.horizontal()
|
||||
.item(iProbeHitData.getPickBlock())
|
||||
.vertical()
|
||||
.text(CompoundText.create().name(blockState.getBlock().getName()))
|
||||
.vertical()
|
||||
.text(CompoundText.create().info(MODNAME + modName));
|
||||
|
||||
for (int i = 0; i < tileCampFire.getItems().size(); i++) {
|
||||
ItemStack stack = tileCampFire.getItems().get(i);
|
||||
if (!stack.isEmpty()) {
|
||||
iProbeInfo
|
||||
.horizontal()
|
||||
.item(stack)
|
||||
.horizontal()
|
||||
.progress(
|
||||
(int) ((float) tileCampFire.cookingTime[i] / tileCampFire.cookingProgress[i] * 100),
|
||||
100,
|
||||
iProbeInfo.defaultProgressStyle().suffix(" %").alignment(ElementAlignment.ALIGN_TOPLEFT));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean show(ProbeMode mode, IProbeConfig.ConfigMode cfg) {
|
||||
return cfg == NORMAL || (cfg == EXTENDED && mode == ProbeMode.EXTENDED);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user