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 jeiVersion: String by project
|
||||||
val jeiMcVersion: String by project
|
val jeiMcVersion: String by project
|
||||||
|
|
||||||
|
val withTop = true
|
||||||
|
|
||||||
version = modVersion
|
version = modVersion
|
||||||
group = modGroupId
|
group = modGroupId
|
||||||
|
|
||||||
@ -145,7 +147,9 @@ runs {
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation ("net.neoforged:neoforge:${neoVersion}")
|
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}")
|
// runtimeOnly("me.shedaniel:RoughlyEnoughItems-neoforge:${reiVersion}")
|
||||||
// compileOnly("me.shedaniel:RoughlyEnoughItems-api-neoforge:${reiVersion}")
|
// compileOnly("me.shedaniel:RoughlyEnoughItems-api-neoforge:${reiVersion}")
|
||||||
// compileOnly("me.shedaniel:RoughlyEnoughItems-default-plugin-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.fml.config.ModConfig;
|
||||||
import net.neoforged.neoforge.common.NeoForge;
|
import net.neoforged.neoforge.common.NeoForge;
|
||||||
import net.neoforged.neoforge.event.RegisterCommandsEvent;
|
import net.neoforged.neoforge.event.RegisterCommandsEvent;
|
||||||
import net.neoforged.neoforge.event.tick.PlayerTickEvent;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import robaertschi.environmenttech.command.EnvironmenttechCommand;
|
import robaertschi.environmenttech.command.EnvironmenttechCommand;
|
||||||
|
import robaertschi.environmenttech.compat.ETCompat;
|
||||||
import robaertschi.environmenttech.data.attachments.ETAttachments;
|
import robaertschi.environmenttech.data.attachments.ETAttachments;
|
||||||
import robaertschi.environmenttech.data.capabilities.ETCapabilities;
|
import robaertschi.environmenttech.data.capabilities.ETCapabilities;
|
||||||
import robaertschi.environmenttech.data.components.ETComponents;
|
import robaertschi.environmenttech.data.components.ETComponents;
|
||||||
@ -49,6 +49,7 @@ public class EnvironmentTech
|
|||||||
ETMenus.init(modEventBus);
|
ETMenus.init(modEventBus);
|
||||||
ETParticles.init(modEventBus);
|
ETParticles.init(modEventBus);
|
||||||
ETComponents.init(modEventBus);
|
ETComponents.init(modEventBus);
|
||||||
|
ETCompat.init(modEventBus);
|
||||||
|
|
||||||
NeoForge.EVENT_BUS.register(this);
|
NeoForge.EVENT_BUS.register(this);
|
||||||
|
|
||||||
@ -60,14 +61,14 @@ public class EnvironmentTech
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@SubscribeEvent()
|
// @SubscribeEvent()
|
||||||
public void onPlayerTick(PlayerTickEvent.Post event) {
|
// public void onPlayerTick(PlayerTickEvent.Post event) {
|
||||||
var level = event.getEntity().level();
|
// var level = event.getEntity().level();
|
||||||
if (level.isClientSide()) {
|
// if (level.isClientSide()) {
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
var env = level.getChunk(event.getEntity().blockPosition()).getData(ETAttachments.ENV);
|
// var env = level.getChunk(event.getEntity().blockPosition()).getData(ETAttachments.ENV);
|
||||||
// event.getEntity().sendSystemMessage(Component.literal("ENV in chunk: " + env));
|
//// event.getEntity().sendSystemMessage(Component.literal("ENV in chunk: " + env));
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,10 @@
|
|||||||
package robaertschi.environmenttech.client;
|
package robaertschi.environmenttech.client;
|
||||||
|
|
||||||
import com.mojang.blaze3d.platform.InputConstants;
|
|
||||||
import net.minecraft.client.KeyMapping;
|
|
||||||
import net.minecraft.client.renderer.item.ItemProperties;
|
import net.minecraft.client.renderer.item.ItemProperties;
|
||||||
import net.neoforged.bus.api.SubscribeEvent;
|
import net.neoforged.bus.api.SubscribeEvent;
|
||||||
import net.neoforged.fml.common.EventBusSubscriber;
|
import net.neoforged.fml.common.EventBusSubscriber;
|
||||||
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
|
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
import net.neoforged.jarjar.nio.util.Lazy;
|
|
||||||
import net.neoforged.neoforge.client.event.*;
|
import net.neoforged.neoforge.client.event.*;
|
||||||
import org.lwjgl.glfw.GLFW;
|
|
||||||
import robaertschi.environmenttech.EnvironmentTech;
|
import robaertschi.environmenttech.EnvironmentTech;
|
||||||
import robaertschi.environmenttech.client.particle.EnvParticleProvider;
|
import robaertschi.environmenttech.client.particle.EnvParticleProvider;
|
||||||
import robaertschi.environmenttech.client.screen.EnvCollectorScreen;
|
import robaertschi.environmenttech.client.screen.EnvCollectorScreen;
|
||||||
@ -50,4 +46,10 @@ public class ETClient {
|
|||||||
@SubscribeEvent
|
@SubscribeEvent
|
||||||
public static void registerBindings(RegisterKeyMappingsEvent event) {
|
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
|
* @since 0.1.0
|
||||||
*/
|
*/
|
||||||
public class EnvStorageRenderer {
|
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 x;
|
||||||
private final int y;
|
private final int y;
|
||||||
private final int width;
|
private final int width;
|
||||||
@ -56,8 +60,6 @@ public class EnvStorageRenderer {
|
|||||||
|
|
||||||
boxRenderer.render(guiGraphics);
|
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,
|
guiGraphics.fillGradient(x, y + (height - stored), x + width, y + height,
|
||||||
from, to);
|
from, to);
|
||||||
|
|
||||||
|
@ -50,8 +50,8 @@ public class EnvCollectorScreen extends AbstractContainerScreen<EnvCollectorMenu
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(@NotNull GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) {
|
public void render(@NotNull GuiGraphics pGuiGraphics, int pMouseX, int pMouseY, float pPartialTick) {
|
||||||
renderBackground(pGuiGraphics, pMouseX, pMouseY, pPartialTick);
|
|
||||||
super.render(pGuiGraphics, pMouseX, pMouseY, pPartialTick);
|
super.render(pGuiGraphics, pMouseX, pMouseY, pPartialTick);
|
||||||
|
|
||||||
this.renderTooltip(pGuiGraphics, pMouseX, pMouseY);
|
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;
|
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;
|
package robaertschi.environmenttech.level.block.entity;
|
||||||
|
|
||||||
import lombok.Getter;
|
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.BlockPos;
|
||||||
import net.minecraft.core.HolderLookup;
|
import net.minecraft.core.HolderLookup;
|
||||||
import net.minecraft.nbt.CompoundTag;
|
import net.minecraft.nbt.CompoundTag;
|
||||||
@ -28,6 +31,7 @@ import net.neoforged.neoforge.items.ItemStackHandler;
|
|||||||
import net.neoforged.neoforge.items.wrapper.CombinedInvWrapper;
|
import net.neoforged.neoforge.items.wrapper.CombinedInvWrapper;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import robaertschi.environmenttech.compat.top.TOPInfoProvider;
|
||||||
import robaertschi.environmenttech.data.attachments.ETAttachments;
|
import robaertschi.environmenttech.data.attachments.ETAttachments;
|
||||||
import robaertschi.environmenttech.data.capabilities.AdaptedItemHandler;
|
import robaertschi.environmenttech.data.capabilities.AdaptedItemHandler;
|
||||||
import robaertschi.environmenttech.data.capabilities.EnvStorage;
|
import robaertschi.environmenttech.data.capabilities.EnvStorage;
|
||||||
@ -38,7 +42,7 @@ import robaertschi.environmenttech.menu.EnvCollectorMenu;
|
|||||||
|
|
||||||
import static robaertschi.environmenttech.EnvironmentTech.MODID;
|
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 = 0;
|
||||||
public static final int SLOT_INPUT_COUNT = 1;
|
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) {
|
public AbstractContainerMenu createMenu(int pContainerId, @NotNull Inventory pPlayerInventory, @NotNull Player pPlayer) {
|
||||||
return new EnvCollectorMenu(pContainerId, pPlayer, this, data);
|
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