mirror of
https://github.com/RoBaertschi/EnvironmentTech.git
synced 2025-04-19 23:03:28 +00:00
added TOP compat
This commit is contained in:
parent
13455380c1
commit
73befa1e00
@ -30,6 +30,8 @@ val reiVersion: String by project
|
||||
val jeiVersion: String by project
|
||||
val jeiMcVersion: String by project
|
||||
|
||||
val withTop = true
|
||||
|
||||
version = modVersion
|
||||
group = modGroupId
|
||||
|
||||
@ -145,7 +147,9 @@ runs {
|
||||
dependencies {
|
||||
implementation ("net.neoforged:neoforge:${neoVersion}")
|
||||
|
||||
implementation("mcjty.theoneprobe:theoneprobe:${topVersion}")
|
||||
compileOnly("mcjty.theoneprobe:theoneprobe:${topVersion}")
|
||||
if (withTop)
|
||||
runtimeOnly("mcjty.theoneprobe:theoneprobe:${topVersion}")
|
||||
// runtimeOnly("me.shedaniel:RoughlyEnoughItems-neoforge:${reiVersion}")
|
||||
// compileOnly("me.shedaniel:RoughlyEnoughItems-api-neoforge:${reiVersion}")
|
||||
// compileOnly("me.shedaniel:RoughlyEnoughItems-default-plugin-neoforge:${reiVersion}")
|
||||
|
@ -9,9 +9,9 @@ import net.neoforged.fml.common.Mod;
|
||||
import net.neoforged.fml.config.ModConfig;
|
||||
import net.neoforged.neoforge.common.NeoForge;
|
||||
import net.neoforged.neoforge.event.RegisterCommandsEvent;
|
||||
import net.neoforged.neoforge.event.tick.PlayerTickEvent;
|
||||
import org.slf4j.Logger;
|
||||
import robaertschi.environmenttech.command.EnvironmenttechCommand;
|
||||
import robaertschi.environmenttech.compat.ETCompat;
|
||||
import robaertschi.environmenttech.data.attachments.ETAttachments;
|
||||
import robaertschi.environmenttech.data.capabilities.ETCapabilities;
|
||||
import robaertschi.environmenttech.data.components.ETComponents;
|
||||
@ -49,6 +49,7 @@ public class EnvironmentTech
|
||||
ETMenus.init(modEventBus);
|
||||
ETParticles.init(modEventBus);
|
||||
ETComponents.init(modEventBus);
|
||||
ETCompat.init(modEventBus);
|
||||
|
||||
NeoForge.EVENT_BUS.register(this);
|
||||
|
||||
@ -60,14 +61,14 @@ public class EnvironmentTech
|
||||
}
|
||||
|
||||
|
||||
@SubscribeEvent()
|
||||
public void onPlayerTick(PlayerTickEvent.Post event) {
|
||||
var level = event.getEntity().level();
|
||||
if (level.isClientSide()) {
|
||||
return;
|
||||
}
|
||||
var env = level.getChunk(event.getEntity().blockPosition()).getData(ETAttachments.ENV);
|
||||
// event.getEntity().sendSystemMessage(Component.literal("ENV in chunk: " + env));
|
||||
|
||||
}
|
||||
// @SubscribeEvent()
|
||||
// public void onPlayerTick(PlayerTickEvent.Post event) {
|
||||
// var level = event.getEntity().level();
|
||||
// if (level.isClientSide()) {
|
||||
// return;
|
||||
// }
|
||||
// var env = level.getChunk(event.getEntity().blockPosition()).getData(ETAttachments.ENV);
|
||||
//// event.getEntity().sendSystemMessage(Component.literal("ENV in chunk: " + env));
|
||||
//
|
||||
// }
|
||||
}
|
||||
|
@ -1,14 +1,10 @@
|
||||
package robaertschi.environmenttech.client;
|
||||
|
||||
import com.mojang.blaze3d.platform.InputConstants;
|
||||
import net.minecraft.client.KeyMapping;
|
||||
import net.minecraft.client.renderer.item.ItemProperties;
|
||||
import net.neoforged.bus.api.SubscribeEvent;
|
||||
import net.neoforged.fml.common.EventBusSubscriber;
|
||||
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
|
||||
import net.neoforged.jarjar.nio.util.Lazy;
|
||||
import net.neoforged.neoforge.client.event.*;
|
||||
import org.lwjgl.glfw.GLFW;
|
||||
import robaertschi.environmenttech.EnvironmentTech;
|
||||
import robaertschi.environmenttech.client.particle.EnvParticleProvider;
|
||||
import robaertschi.environmenttech.client.screen.EnvCollectorScreen;
|
||||
@ -50,4 +46,10 @@ public class ETClient {
|
||||
@SubscribeEvent
|
||||
public static void registerBindings(RegisterKeyMappingsEvent event) {
|
||||
}
|
||||
|
||||
// @EventBusSubscriber(bus = EventBusSubscriber.Bus.GAME)
|
||||
// public static class Events {
|
||||
//
|
||||
// }
|
||||
|
||||
}
|
||||
|
@ -26,6 +26,10 @@ import java.util.Optional;
|
||||
* @since 0.1.0
|
||||
*/
|
||||
public class EnvStorageRenderer {
|
||||
public static final int from = FastColor.ARGB32.color(0, 103, 29);
|
||||
public static final int to = FastColor.ARGB32.color(0,191, 38);
|
||||
|
||||
|
||||
private final int x;
|
||||
private final int y;
|
||||
private final int width;
|
||||
@ -56,8 +60,6 @@ public class EnvStorageRenderer {
|
||||
|
||||
boxRenderer.render(guiGraphics);
|
||||
|
||||
int from = FastColor.ARGB32.color(0, 103, 29);
|
||||
int to = FastColor.ARGB32.color(0,191, 38);
|
||||
guiGraphics.fillGradient(x, y + (height - stored), x + width, y + height,
|
||||
from, to);
|
||||
|
||||
|
@ -50,8 +50,8 @@ public class EnvCollectorScreen extends AbstractContainerScreen<EnvCollectorMenu
|
||||
|
||||
@Override
|
||||
public void render(@NotNull GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) {
|
||||
renderBackground(pGuiGraphics, pMouseX, pMouseY, pPartialTick);
|
||||
super.render(pGuiGraphics, pMouseX, pMouseY, pPartialTick);
|
||||
|
||||
this.renderTooltip(pGuiGraphics, pMouseX, pMouseY);
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,15 @@
|
||||
package robaertschi.environmenttech.compat;
|
||||
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.fml.ModList;
|
||||
import robaertschi.environmenttech.compat.top.TopCompat;
|
||||
|
||||
public class ETCompat {
|
||||
public static void init(IEventBus modEventBus) {
|
||||
var mods = ModList.get();
|
||||
|
||||
if (mods.isLoaded("theoneprobe")) {
|
||||
TopCompat.init(modEventBus);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package robaertschi.environmenttech.compat.top;
|
||||
|
||||
import mcjty.theoneprobe.api.IProbeHitData;
|
||||
import mcjty.theoneprobe.api.IProbeInfo;
|
||||
import mcjty.theoneprobe.api.ProbeMode;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public interface TOPInfoProvider {
|
||||
void addProbeInfo(ProbeMode mode, IProbeInfo probeInfo, Player player, Level level, BlockState blockState, IProbeHitData data);
|
||||
}
|
@ -0,0 +1,79 @@
|
||||
package robaertschi.environmenttech.compat.top;
|
||||
|
||||
import mcjty.theoneprobe.api.*;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.neoforged.bus.api.IEventBus;
|
||||
import net.neoforged.fml.InterModComms;
|
||||
import net.neoforged.fml.event.lifecycle.InterModEnqueueEvent;
|
||||
import net.neoforged.neoforge.capabilities.BlockCapabilityCache;
|
||||
import robaertschi.environmenttech.EnvironmentTech;
|
||||
import robaertschi.environmenttech.client.renderer.EnvStorageRenderer;
|
||||
import robaertschi.environmenttech.data.capabilities.ETCapabilities;
|
||||
import robaertschi.environmenttech.data.capabilities.EnvType;
|
||||
import robaertschi.environmenttech.data.capabilities.IEnvStorage;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public class TopCompat {
|
||||
public static void init(IEventBus modEventBus) {
|
||||
modEventBus.addListener(TopCompat::sendIMC);
|
||||
}
|
||||
|
||||
public static void sendIMC(InterModEnqueueEvent event) {
|
||||
InterModComms.sendTo("theoneprobe", "getTheOneProbe", GetTheOneProbe::new);
|
||||
}
|
||||
|
||||
public static class GetTheOneProbe implements Function<ITheOneProbe, Void> {
|
||||
public static ITheOneProbe probe;
|
||||
|
||||
@Override
|
||||
public Void apply(ITheOneProbe theOneProbe) {
|
||||
probe = theOneProbe;
|
||||
EnvironmentTech.LOGGER.info("Enabled TheOneProbe support");
|
||||
theOneProbe.registerProvider(new IProbeInfoProvider() {
|
||||
private BlockCapabilityCache<IEnvStorage, EnvType> capCache = null;
|
||||
|
||||
@Override
|
||||
public ResourceLocation getID() {
|
||||
return EnvironmentTech.id("default");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addProbeInfo(ProbeMode probeMode, IProbeInfo iProbeInfo, Player player, Level level, BlockState blockState, IProbeHitData iProbeHitData) {
|
||||
var blockEntity = level.getBlockEntity(iProbeHitData.getPos());
|
||||
if (blockEntity instanceof TOPInfoProvider topInfoProvider) {
|
||||
topInfoProvider.addProbeInfo(probeMode, iProbeInfo, player, level, blockState, iProbeHitData);
|
||||
}
|
||||
|
||||
if (!(level instanceof ServerLevel)) return;
|
||||
|
||||
if (capCache == null || !capCache.pos().equals(iProbeHitData.getPos())) {
|
||||
capCache = BlockCapabilityCache.create(ETCapabilities.ENV_STORAGE_BLOCK, (ServerLevel) level, iProbeHitData.getPos(), EnvType.Normal);
|
||||
// Try other env types
|
||||
if (capCache.getCapability() == null) {
|
||||
capCache = BlockCapabilityCache.create(ETCapabilities.ENV_STORAGE_BLOCK, (ServerLevel) level, iProbeHitData.getPos(), EnvType.Bundled);
|
||||
}
|
||||
if (capCache.getCapability() == null) {
|
||||
capCache = BlockCapabilityCache.create(ETCapabilities.ENV_STORAGE_BLOCK, (ServerLevel) level, iProbeHitData.getPos(), EnvType.Chunk);
|
||||
}
|
||||
}
|
||||
|
||||
IEnvStorage cap = capCache.getCapability();
|
||||
if (cap != null) {
|
||||
var style = iProbeInfo.defaultProgressStyle()
|
||||
.filledColor(EnvStorageRenderer.from)
|
||||
.alternateFilledColor(EnvStorageRenderer.to)
|
||||
.suffix(" ENV");
|
||||
iProbeInfo.horizontal().progress(cap.getEnvStored(),cap.getMaxEnv(), style);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@ -42,6 +42,15 @@ public class ETCapabilities {
|
||||
return null;
|
||||
}
|
||||
);
|
||||
|
||||
event.registerBlockEntity(
|
||||
ENV_STORAGE_BLOCK,
|
||||
ETBlockEntities.ENV_DISTRIBUTOR_BLOCK_ENTITY.get(),
|
||||
(object, context) -> {
|
||||
if (context == EnvType.Chunk) return object.getEnvStorage();
|
||||
return null;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,6 +1,9 @@
|
||||
package robaertschi.environmenttech.level.block.entity;
|
||||
|
||||
import lombok.Getter;
|
||||
import mcjty.theoneprobe.api.IProbeHitData;
|
||||
import mcjty.theoneprobe.api.IProbeInfo;
|
||||
import mcjty.theoneprobe.api.ProbeMode;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.HolderLookup;
|
||||
import net.minecraft.nbt.CompoundTag;
|
||||
@ -28,6 +31,7 @@ import net.neoforged.neoforge.items.ItemStackHandler;
|
||||
import net.neoforged.neoforge.items.wrapper.CombinedInvWrapper;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import robaertschi.environmenttech.compat.top.TOPInfoProvider;
|
||||
import robaertschi.environmenttech.data.attachments.ETAttachments;
|
||||
import robaertschi.environmenttech.data.capabilities.AdaptedItemHandler;
|
||||
import robaertschi.environmenttech.data.capabilities.EnvStorage;
|
||||
@ -38,7 +42,7 @@ import robaertschi.environmenttech.menu.EnvCollectorMenu;
|
||||
|
||||
import static robaertschi.environmenttech.EnvironmentTech.MODID;
|
||||
|
||||
public class EnvCollectorBlockEntity extends BlockEntity implements MenuProvider, ITickableBlockEntity {
|
||||
public class EnvCollectorBlockEntity extends BlockEntity implements MenuProvider, ITickableBlockEntity, TOPInfoProvider {
|
||||
public static final int SLOT_INPUT = 0;
|
||||
public static final int SLOT_INPUT_COUNT = 1;
|
||||
|
||||
@ -291,4 +295,13 @@ public class EnvCollectorBlockEntity extends BlockEntity implements MenuProvider
|
||||
public AbstractContainerMenu createMenu(int pContainerId, @NotNull Inventory pPlayerInventory, @NotNull Player pPlayer) {
|
||||
return new EnvCollectorMenu(pContainerId, pPlayer, this, data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addProbeInfo(ProbeMode mode, IProbeInfo probeInfo, Player player, Level level, BlockState blockState, IProbeHitData data) {
|
||||
if (hasRecipe(level)) {
|
||||
probeInfo.horizontal().progress(getProgress(), getMaxProgress(),
|
||||
probeInfo.defaultProgressStyle().suffix("%")
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user