Some code changes I don't remember and port to 1.19.4
This commit is contained in:
@@ -102,8 +102,8 @@ processResources {
|
||||
|
||||
shadowJar {
|
||||
dependencies {
|
||||
include(dependency('me.hypherionmc.night-config:toml:3.6.5_custom'))
|
||||
include(dependency('me.hypherionmc.night-config:core:3.6.5_custom'))
|
||||
include(dependency("me.hypherionmc.moon-config:core:${moon_config}"))
|
||||
include(dependency("me.hypherionmc.moon-config:toml:${moon_config}"))
|
||||
|
||||
//relocate 'me.hypherionmc.nightconfig', 'shadow.hypherionmc.nightconfig'
|
||||
}
|
||||
|
@@ -8,6 +8,8 @@ import me.hypherionmc.craterlib.systems.reg.RegistryObject;
|
||||
import me.hypherionmc.craterlib.util.ColorPropertyFunction;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.ItemBlockRenderTypes;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
|
||||
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
|
||||
import net.minecraft.client.renderer.item.ItemProperties;
|
||||
import net.minecraft.network.Connection;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
@@ -16,6 +18,8 @@ import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.item.Item;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraft.world.level.block.entity.BlockEntityType;
|
||||
import net.minecraftforge.fml.loading.FMLEnvironment;
|
||||
|
||||
import java.util.Collection;
|
||||
@@ -71,4 +75,9 @@ public class ForgeClientHelper implements LibClientHelper {
|
||||
public void registerClientReceiver(ResourceLocation channelName, Function<FriendlyByteBuf, CraterPacket<?>> factory) {
|
||||
// UNUSED
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerBlockEntityRenderer(BlockEntityType<? extends BlockEntity> blockEntityType, BlockEntityRendererProvider blockEntityRendererFactory) {
|
||||
BlockEntityRenderers.register(blockEntityType, blockEntityRendererFactory);
|
||||
}
|
||||
}
|
||||
|
@@ -7,7 +7,6 @@ package me.hypherionmc.craterlib.client.gui.widgets;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.PoseStack;
|
||||
import me.hypherionmc.craterlib.util.LangUtils;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.components.AbstractWidget;
|
||||
import net.minecraft.client.gui.narration.NarrationElementOutput;
|
||||
@@ -22,8 +21,8 @@ import net.minecraft.util.FastColor;
|
||||
import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.templates.FluidTank;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/** Copied from https://github.com/SleepyTrousers/EnderIO-Rewrite/blob/dev/1.18.x/enderio-machines/src/main/java/com/enderio/machines/client/FluidStackWidget.java*/
|
||||
@@ -42,7 +41,7 @@ public class FluidStackWidget extends AbstractWidget {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderButton(PoseStack pPoseStack, int pMouseX, int pMouseY, float pPartialTicks) {
|
||||
public void renderWidget(@NotNull PoseStack pPoseStack, int pMouseX, int pMouseY, float pPartialTicks) {
|
||||
Minecraft minecraft = Minecraft.getInstance();
|
||||
RenderSystem.setShader(GameRenderer::getPositionTexShader);
|
||||
RenderSystem.defaultBlendFunc();
|
||||
@@ -79,7 +78,8 @@ public class FluidStackWidget extends AbstractWidget {
|
||||
for (int i = 0; i < Math.ceil(renderableHeight / 16f); i++) {
|
||||
int drawingHeight = Math.min(16, renderableHeight - 16*i);
|
||||
int notDrawingHeight = 16 - drawingHeight;
|
||||
blit(pPoseStack, getX(), getY() + notDrawingHeight, displayOn.getBlitOffset(), sprite.getU0()*atlasWidth, sprite.getV0()*atlasHeight + notDrawingHeight, this.width, drawingHeight, atlasWidth, atlasHeight);
|
||||
// TODO Double Check this
|
||||
blit(pPoseStack, getX(), getY() + notDrawingHeight, 0, sprite.getU0()*atlasWidth, sprite.getV0()*atlasHeight + notDrawingHeight, this.width, drawingHeight, atlasWidth, atlasHeight);
|
||||
pPoseStack.translate(0,-16, 0);
|
||||
}
|
||||
|
||||
|
@@ -2,6 +2,7 @@ package me.hypherionmc.craterlib.common;
|
||||
|
||||
import me.hypherionmc.craterlib.CraterConstants;
|
||||
import me.hypherionmc.craterlib.systems.internal.CreativeTabRegistry;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraftforge.event.CreativeModeTabEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
@@ -11,11 +12,18 @@ import net.minecraftforge.fml.common.Mod;
|
||||
public class ForgeCommonEvents {
|
||||
|
||||
@SubscribeEvent
|
||||
public static void buildContents(CreativeModeTabEvent.Register event) {
|
||||
public static void registerTabs(CreativeModeTabEvent.Register event) {
|
||||
CraterConstants.LOG.info("Registering Creative Tabs");
|
||||
|
||||
CreativeTabRegistry.getTABS().forEach(tab -> {
|
||||
CreativeModeTab creativeModeTab = event.registerCreativeModeTab(tab.getResourceLocation(), builder -> {
|
||||
builder.icon(tab::getIcon);
|
||||
builder.title(
|
||||
Component.translatable("itemGroup." +
|
||||
tab.getResourceLocation().toString().replace(":", ".")
|
||||
)
|
||||
);
|
||||
|
||||
builder.icon(tab.getIcon());
|
||||
|
||||
if (!tab.getBackgroundSuffix().isEmpty()) {
|
||||
builder.backgroundSuffix(tab.getBackgroundSuffix());
|
||||
@@ -25,4 +33,13 @@ public class ForgeCommonEvents {
|
||||
});
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerTabs(CreativeModeTabEvent.BuildContents event) {
|
||||
CreativeModeTab tab = event.getTab();
|
||||
|
||||
CreativeTabRegistry.getTabItems().stream()
|
||||
.filter(p -> p.getLeft().get() == tab)
|
||||
.forEach(itemPair -> event.accept(itemPair.getRight()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -1,9 +1,15 @@
|
||||
package me.hypherionmc.craterlib.common;
|
||||
|
||||
import me.hypherionmc.craterlib.api.blockentities.caps.CapabilityHandler;
|
||||
import me.hypherionmc.craterlib.api.blockentities.caps.ICraterCapProvider;
|
||||
import me.hypherionmc.craterlib.network.CraterNetworkHandler;
|
||||
import me.hypherionmc.craterlib.network.CraterPacket;
|
||||
import me.hypherionmc.craterlib.network.ForgeNetworkHandler;
|
||||
import me.hypherionmc.craterlib.platform.services.LibCommonHelper;
|
||||
import me.hypherionmc.craterlib.systems.energy.ForgeEnergyReader;
|
||||
import me.hypherionmc.craterlib.systems.fluid.ForgeFluidReader;
|
||||
import me.hypherionmc.craterlib.systems.fluid.ICraterFluidHandler;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
@@ -13,7 +19,8 @@ import net.minecraft.world.entity.player.Inventory;
|
||||
import net.minecraft.world.inventory.AbstractContainerMenu;
|
||||
import net.minecraft.world.inventory.MenuType;
|
||||
import net.minecraft.world.item.CreativeModeTab;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
import net.minecraft.world.level.block.entity.BlockEntity;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
import net.minecraftforge.common.extensions.IForgeMenuType;
|
||||
import net.minecraftforge.network.NetworkHooks;
|
||||
import net.minecraftforge.server.ServerLifecycleHooks;
|
||||
@@ -22,9 +29,10 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
/**
|
||||
* @author HypherionSA
|
||||
@@ -64,4 +72,27 @@ public class ForgeCommonHelper implements LibCommonHelper {
|
||||
public <T extends AbstractContainerMenu> MenuType<T> createMenuType(TriFunction<Integer, Inventory, FriendlyByteBuf, T> constructor) {
|
||||
return IForgeMenuType.create(constructor::apply);
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> Optional<T> getCapabilityHandler(BlockEntity entity, Direction side, CapabilityHandler capability) {
|
||||
if (capability == CapabilityHandler.ENERGY) {
|
||||
AtomicReference<ForgeEnergyReader> energyReference = new AtomicReference<>();
|
||||
entity.getCapability(ForgeCapabilities.ENERGY, side).ifPresent(storage -> energyReference.set(new ForgeEnergyReader(storage)));
|
||||
|
||||
return energyReference.get() != null ? (Optional<T>) Optional.of(energyReference.get()) : Optional.empty();
|
||||
}
|
||||
|
||||
if (capability == CapabilityHandler.FLUID) {
|
||||
AtomicReference<ICraterFluidHandler> craterFluidHandler = new AtomicReference<>();
|
||||
entity.getCapability(ForgeCapabilities.FLUID_HANDLER, side).ifPresent(iFluidHandler -> craterFluidHandler.set(new ForgeFluidReader(iFluidHandler)));
|
||||
|
||||
return craterFluidHandler.get() != null ? (Optional<T>) Optional.of(craterFluidHandler.get()) : Optional.empty();
|
||||
}
|
||||
|
||||
if (entity instanceof ICraterCapProvider capProvider) {
|
||||
return capProvider.getCapability(capability, side);
|
||||
}
|
||||
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,53 @@
|
||||
package me.hypherionmc.craterlib.common;
|
||||
|
||||
import me.hypherionmc.craterlib.platform.services.LibFluidHelper;
|
||||
import me.hypherionmc.craterlib.systems.fluid.*;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.InteractionHand;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.level.material.Fluid;
|
||||
import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
public class ForgeFluidHelper implements LibFluidHelper {
|
||||
|
||||
@Override
|
||||
public CraterFluidTank createFluidTank(int capacity) {
|
||||
return new ForgeWrappedFluidTank(capacity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public CraterFluidTank createFluidTank(int capacity, Fluid... validFluids) {
|
||||
return new ForgeWrappedFluidTank(capacity, (variant) -> Arrays.stream(validFluids).allMatch(f -> f.isSame(variant.getFluid())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean interactWithFluidHandler(Player player, InteractionHand hand, ICraterFluidHandler fluidHandler) {
|
||||
ForgeFluidTankInteractor interactor = new ForgeFluidTankInteractor(fluidHandler);
|
||||
return FluidUtil.interactWithFluidHandler(player, hand, interactor);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean interactWithFluidHandler(@NotNull Player player, @NotNull InteractionHand hand, @NotNull Level level, @NotNull BlockPos pos, @Nullable Direction side) {
|
||||
return FluidUtil.interactWithFluidHandler(player, hand, level, pos, side);
|
||||
}
|
||||
|
||||
@Override
|
||||
public TextureAtlasSprite getFluidTexture(FluidHolder fluidHolder) {
|
||||
return ForgeFluidUtils.getFluidTexture(new FluidStack(fluidHolder.getFluid(), 0), true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFluidColor(Fluid fluid) {
|
||||
IClientFluidTypeExtensions props = IClientFluidTypeExtensions.of(fluid);
|
||||
return props.getTintColor();
|
||||
}
|
||||
}
|
@@ -1,12 +1,15 @@
|
||||
package me.hypherionmc.craterlib.mixin;
|
||||
|
||||
import me.hypherionmc.craterlib.api.blockentities.caps.ForgeCapability;
|
||||
import me.hypherionmc.craterlib.api.blockentities.caps.IForgeCapProvider;
|
||||
import me.hypherionmc.craterlib.api.blockentities.caps.CapabilityHandler;
|
||||
import me.hypherionmc.craterlib.api.blockentities.caps.ICraterCapProvider;
|
||||
import me.hypherionmc.craterlib.common.blockentity.CraterBlockEntity;
|
||||
import me.hypherionmc.craterlib.systems.SimpleInventory;
|
||||
import me.hypherionmc.craterlib.systems.energy.CustomEnergyStorage;
|
||||
import me.hypherionmc.craterlib.systems.energy.ForgeEnergyWrapper;
|
||||
import me.hypherionmc.craterlib.systems.fluid.CraterFluidTank;
|
||||
import me.hypherionmc.craterlib.systems.fluid.ForgeWrappedFluidTank;
|
||||
import me.hypherionmc.craterlib.systems.fluid.ICraterFluidHandler;
|
||||
import me.hypherionmc.craterlib.systems.inventory.ForgeInventoryWrapper;
|
||||
import me.hypherionmc.craterlib.systems.inventory.SimpleInventory;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
import net.minecraftforge.common.capabilities.ForgeCapabilities;
|
||||
@@ -28,22 +31,29 @@ public class BlockEntityMixin implements ICapabilityProvider {
|
||||
|
||||
@Override
|
||||
public @NotNull <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, @Nullable Direction side) {
|
||||
IForgeCapProvider capProvider = (IForgeCapProvider) this;
|
||||
ICraterCapProvider capProvider = (ICraterCapProvider) this;
|
||||
|
||||
if (cap == ForgeCapabilities.ENERGY) {
|
||||
Optional<CustomEnergyStorage> forgeCap = capProvider.getForgeCapability(ForgeCapability.ENERGY, side);
|
||||
Optional<CustomEnergyStorage> forgeCap = capProvider.getCapability(CapabilityHandler.ENERGY, side);
|
||||
if (forgeCap.isPresent()) {
|
||||
return LazyOptional.of(() -> new ForgeEnergyWrapper(forgeCap.get())).cast();
|
||||
}
|
||||
}
|
||||
|
||||
if (cap == ForgeCapabilities.ITEM_HANDLER) {
|
||||
Optional<SimpleInventory> inventory = capProvider.getForgeCapability(ForgeCapability.ITEM, side);
|
||||
Optional<SimpleInventory> inventory = capProvider.getCapability(CapabilityHandler.ITEM, side);
|
||||
if (inventory.isPresent()) {
|
||||
return LazyOptional.of(() -> new SidedInvWrapper(new ForgeInventoryWrapper(inventory.get()), side)).cast();
|
||||
}
|
||||
}
|
||||
|
||||
if (cap == ForgeCapabilities.FLUID_HANDLER) {
|
||||
Optional<ICraterFluidHandler> fluidTank = capProvider.getCapability(CapabilityHandler.FLUID, side);
|
||||
if (fluidTank.isPresent()) {
|
||||
return LazyOptional.of(() -> (ForgeWrappedFluidTank)fluidTank.get()).cast();
|
||||
}
|
||||
}
|
||||
|
||||
return LazyOptional.empty();
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,36 @@
|
||||
package me.hypherionmc.craterlib.systems.energy;
|
||||
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
|
||||
public record ForgeEnergyReader(IEnergyStorage forgeStorage) implements ICraterEnergyStorage {
|
||||
|
||||
@Override
|
||||
public int receiveEnergy(int toReceive, boolean test) {
|
||||
return forgeStorage.receiveEnergy(toReceive, test);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int extractEnergy(int toExtract, boolean test) {
|
||||
return forgeStorage.extractEnergy(toExtract, test);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPowerLevel() {
|
||||
return forgeStorage.getEnergyStored();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxInput() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxOutput() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPowerCapacity() {
|
||||
return forgeStorage().getMaxEnergyStored();
|
||||
}
|
||||
}
|
@@ -0,0 +1,44 @@
|
||||
package me.hypherionmc.craterlib.systems.fluid;
|
||||
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
|
||||
public record ForgeFluidReader(IFluidHandler fluidHandler) implements ICraterFluidHandler {
|
||||
|
||||
@Override
|
||||
public int insert(FluidHolder fluidHolder, FluidAction action) {
|
||||
return fluidHandler.fill(new FluidStack(fluidHolder.getFluid(), fluidHolder.getAmount()), action.simulate() ? IFluidHandler.FluidAction.SIMULATE : IFluidHandler.FluidAction.EXECUTE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidHolder extract(FluidHolder fluidHolder, FluidAction action) {
|
||||
FluidStack extracted = fluidHandler.drain(new FluidStack(fluidHolder.getFluid(), fluidHolder.getAmount()), action.simulate() ? IFluidHandler.FluidAction.SIMULATE : IFluidHandler.FluidAction.EXECUTE);
|
||||
return new FluidHolder(extracted.getFluid(), extracted.getAmount());
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidHolder extract(int amount, FluidAction action) {
|
||||
FluidStack extracted = fluidHandler.drain(amount, action.simulate() ? IFluidHandler.FluidAction.SIMULATE : IFluidHandler.FluidAction.EXECUTE);
|
||||
return new FluidHolder(extracted.getFluid(), extracted.getAmount());
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isTankEmpty() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public FluidHolder getFluidInTank() {
|
||||
return FluidHolder.EMPTY;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTankLevel() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTankCapacity() {
|
||||
return 0;
|
||||
}
|
||||
}
|
@@ -0,0 +1,45 @@
|
||||
package me.hypherionmc.craterlib.systems.fluid;
|
||||
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public record ForgeFluidTankInteractor(ICraterFluidHandler fluidHandler) implements IFluidHandler {
|
||||
|
||||
@Override
|
||||
public int getTanks() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull FluidStack getFluidInTank(int tank) {
|
||||
return new FluidStack(fluidHandler.getFluidInTank().getFluid(), fluidHandler.getFluidInTank().getAmount());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTankCapacity(int tank) {
|
||||
return fluidHandler.getTankCapacity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFluidValid(int tank, @NotNull FluidStack stack) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int fill(FluidStack resource, FluidAction action) {
|
||||
return fluidHandler.insert(new FluidHolder(resource.getFluid(), resource.getAmount()), action.simulate() ? ICraterFluidHandler.FluidAction.SIMULATE : ICraterFluidHandler.FluidAction.EXECUTE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull FluidStack drain(FluidStack resource, FluidAction action) {
|
||||
FluidHolder drained = fluidHandler.extract(new FluidHolder(resource.getFluid(), resource.getAmount()), action.simulate() ? ICraterFluidHandler.FluidAction.SIMULATE : ICraterFluidHandler.FluidAction.EXECUTE);
|
||||
return new FluidStack(drained.getFluid(), drained.getAmount());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull FluidStack drain(int maxDrain, FluidAction action) {
|
||||
FluidHolder drained = fluidHandler.extract(maxDrain, action.simulate() ? ICraterFluidHandler.FluidAction.SIMULATE : ICraterFluidHandler.FluidAction.EXECUTE);
|
||||
return new FluidStack(drained.getFluid(), drained.getAmount());
|
||||
}
|
||||
}
|
@@ -0,0 +1,25 @@
|
||||
package me.hypherionmc.craterlib.systems.fluid;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.texture.AbstractTexture;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlas;
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
|
||||
import net.minecraft.resources.ResourceLocation;
|
||||
import net.minecraftforge.client.extensions.common.IClientFluidTypeExtensions;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
public class ForgeFluidUtils {
|
||||
|
||||
public static TextureAtlasSprite getFluidTexture(FluidStack fluidStack, boolean still) {
|
||||
IClientFluidTypeExtensions props = IClientFluidTypeExtensions.of(fluidStack.getFluid());
|
||||
ResourceLocation fluidStill = still ? props.getStillTexture(fluidStack) : props.getFlowingTexture(fluidStack);
|
||||
AbstractTexture texture = Minecraft.getInstance().getTextureManager().getTexture(TextureAtlas.LOCATION_BLOCKS);
|
||||
|
||||
if (texture instanceof TextureAtlas atlas) {
|
||||
return atlas.getSprite(fluidStill);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
@@ -0,0 +1,76 @@
|
||||
package me.hypherionmc.craterlib.systems.fluid;
|
||||
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.IFluidTank;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
public class ForgeWrappedFluidTank extends CraterFluidTank implements IFluidTank, IFluidHandler {
|
||||
|
||||
public ForgeWrappedFluidTank(int capacity) {
|
||||
super(capacity);
|
||||
}
|
||||
|
||||
public ForgeWrappedFluidTank(int capacity, Predicate<FluidStack> predicate) {
|
||||
super(capacity, p -> predicate.test(new FluidStack(p.getFluid(), p.getAmount())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull FluidStack getFluid() {
|
||||
return new FluidStack(this.getFluidInTank().getFluid(), this.getTankLevel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getFluidAmount() {
|
||||
return this.getTankLevel();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
return this.getTankCapacity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFluidValid(FluidStack stack) {
|
||||
return this.isValidFluid(new FluidHolder(stack.getFluid(), stack.getAmount()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTanks() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull FluidStack getFluidInTank(int tankInt) {
|
||||
return new FluidStack(this.getFluidInTank().getFluid(), this.getTankLevel());
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTankCapacity(int tankInt) {
|
||||
return this.getTankCapacity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFluidValid(int tankInt, @NotNull FluidStack stack) {
|
||||
return this.isValidFluid(new FluidHolder(stack.getFluid(), stack.getAmount()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int fill(FluidStack resource, IFluidHandler.FluidAction action) {
|
||||
return this.insert(new FluidHolder(resource.getFluid(), resource.getAmount()), action.simulate() ? CraterFluidTank.FluidAction.SIMULATE : CraterFluidTank.FluidAction.EXECUTE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull FluidStack drain(int maxDrain, IFluidHandler.FluidAction action) {
|
||||
FluidHolder extracted = this.extract(maxDrain, action.simulate() ? CraterFluidTank.FluidAction.SIMULATE : CraterFluidTank.FluidAction.EXECUTE);
|
||||
return new FluidStack(extracted.getFluid(), extracted.getAmount());
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull FluidStack drain(FluidStack resource, IFluidHandler.FluidAction action) {
|
||||
FluidHolder holder = this.extract(new FluidHolder(resource.getFluid(), resource.getAmount()), action.simulate() ? CraterFluidTank.FluidAction.SIMULATE : CraterFluidTank.FluidAction.EXECUTE);
|
||||
return new FluidStack(holder.getFluid(), holder.getAmount());
|
||||
}
|
||||
}
|
@@ -1,7 +1,6 @@
|
||||
package me.hypherionmc.craterlib.systems.inventory;
|
||||
|
||||
import com.google.common.base.Suppliers;
|
||||
import me.hypherionmc.craterlib.systems.SimpleInventory;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.WorldlyContainer;
|
||||
import net.minecraft.world.entity.player.Player;
|
||||
|
@@ -0,0 +1 @@
|
||||
me.hypherionmc.craterlib.common.ForgeFluidHelper
|
Reference in New Issue
Block a user