[CHORE] Cleanup API's that's unused by any mod currently

This commit is contained in:
2024-01-01 21:42:14 +02:00
parent 8aa8c3b62c
commit 8b4172cfef
125 changed files with 194 additions and 3355 deletions

View File

@@ -1,7 +1,6 @@
package com.hypherionmc.craterlib;
import com.hypherionmc.craterlib.api.event.client.LateInitEvent;
import com.hypherionmc.craterlib.client.CraterClientBus;
import com.hypherionmc.craterlib.common.NeoForgeServerEvents;
import com.hypherionmc.craterlib.core.event.CraterEventBus;
import net.minecraft.client.Minecraft;
@@ -16,7 +15,6 @@ import net.neoforged.neoforge.common.NeoForge;
public class CraterLib {
public CraterLib(IEventBus eventBus) {
CraterEventBus.INSTANCE.registerEventListener(CraterClientBus.class);
NeoForge.EVENT_BUS.register(new NeoForgeServerEvents());
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::commonSetup);
}

View File

@@ -1,32 +0,0 @@
package com.hypherionmc.craterlib.client;
import com.hypherionmc.craterlib.CraterConstants;
import com.hypherionmc.craterlib.api.event.client.LateInitEvent;
import com.hypherionmc.craterlib.core.event.annot.CraterEventListener;
import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry;
import net.minecraft.core.Registry;
import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
public class CraterClientBus {
@CraterEventListener
public static void lateInit(LateInitEvent event) {
CraterConstants.LOG.info("Registering Creative Tabs");
CreativeTabRegistry.getTabs().forEach(tab -> {
CreativeModeTab.Builder builder = CreativeModeTab.builder();
builder.title(Component.translatable("itemGroup." + tab.getResourceLocation().toString().replace(":", ".")));
builder.icon(tab.getIcon());
if (!tab.getBackgroundSuffix().isEmpty()) {
builder.backgroundSuffix(tab.getBackgroundSuffix());
}
CreativeModeTab tabb = Registry.register(BuiltInRegistries.CREATIVE_MODE_TAB, tab.getResourceKey(), builder.build());
tab.setTab(tabb);
});
}
}

View File

@@ -1,19 +1,10 @@
package com.hypherionmc.craterlib.client;
import com.hypherionmc.craterlib.common.item.BlockItemDyable;
import com.hypherionmc.craterlib.core.platform.ClientPlatform;
import com.hypherionmc.craterlib.util.ColorPropertyFunction;
import net.minecraft.client.Minecraft;
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.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.neoforged.fml.loading.FMLEnvironment;
import java.util.Objects;
@@ -23,24 +14,9 @@ import java.util.Objects;
*/
public class NeoForgeClientHelper implements ClientPlatform {
public NeoForgeClientHelper() {}
@Override
public void registerItemProperty(BlockItemDyable item, String property) {
if (FMLEnvironment.dist.isClient()) {
ItemProperties.register(item, new ResourceLocation(property), new ColorPropertyFunction(item));
}
public NeoForgeClientHelper() {
}
/*@Override
public void registerCustomRenderTypes(Collection<RegistryObject<Block>> blocks) {
blocks.forEach(blk -> {
if (blk.get() instanceof CustomRenderType type) {
ItemBlockRenderTypes.setRenderLayer(blk.get(), type.getCustomRenderType());
}
});
}*/
@Override
public Minecraft getClientInstance() {
return Minecraft.getInstance();
@@ -61,9 +37,4 @@ public class NeoForgeClientHelper implements ClientPlatform {
Objects.requireNonNull(Minecraft.getInstance().getConnection(), "Cannot send packets when not in game!");
return Minecraft.getInstance().getConnection().getConnection();
}
@Override
public void registerBlockEntityRenderer(BlockEntityType<? extends BlockEntity> blockEntityType, BlockEntityRendererProvider blockEntityRendererFactory) {
BlockEntityRenderers.register(blockEntityType, blockEntityRendererFactory);
}
}

View File

@@ -1,101 +0,0 @@
package com.hypherionmc.craterlib.client.gui.widgets;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.narration.NarrationElementOutput;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.client.renderer.texture.AbstractTexture;
import net.minecraft.client.renderer.texture.TextureAtlas;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.util.FastColor;
import net.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions;
import net.neoforged.neoforge.fluids.FluidStack;
import net.neoforged.neoforge.fluids.capability.templates.FluidTank;
import org.jetbrains.annotations.NotNull;
import java.util.function.Supplier;
/** Copied from <a href="https://github.com/SleepyTrousers/EnderIO-Rewrite/blob/dev/1.18.x/enderio-machines/src/main/java/com/enderio/machines/client/FluidStackWidget.java">...</a>*/
public class FluidStackWidget extends AbstractWidget {
private final Screen displayOn;
private final Supplier<FluidTank> getFluid;
private final String toolTipTitle;
public FluidStackWidget(Screen displayOn, Supplier<FluidTank> getFluid, int pX, int pY, int pWidth, int pHeight, String toolTipTitle) {
super(pX, pY, pWidth, pHeight, Component.empty());
this.displayOn = displayOn;
this.getFluid = getFluid;
this.toolTipTitle = toolTipTitle;
}
@Override
public void renderWidget(@NotNull GuiGraphics pPoseStack, int pMouseX, int pMouseY, float pPartialTicks) {
Minecraft minecraft = Minecraft.getInstance();
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.defaultBlendFunc();
RenderSystem.enableDepthTest();
FluidTank fluidTank = getFluid.get();
if (!fluidTank.isEmpty()) {
FluidStack fluidStack = fluidTank.getFluid();
IClientFluidTypeExtensions props = IClientFluidTypeExtensions.of(fluidStack.getFluid());
ResourceLocation still = props.getStillTexture(fluidStack);
if (still != null) {
AbstractTexture texture = minecraft.getTextureManager().getTexture(TextureAtlas.LOCATION_BLOCKS);
if (texture instanceof TextureAtlas atlas) {
TextureAtlasSprite sprite = atlas.getSprite(still);
RenderSystem.setShaderTexture(0, TextureAtlas.LOCATION_BLOCKS);
int color = props.getTintColor();
RenderSystem.setShaderColor(
FastColor.ARGB32.red(color) / 255.0F,
FastColor.ARGB32.green(color) / 255.0F,
FastColor.ARGB32.blue(color) / 255.0F,
FastColor.ARGB32.alpha(color) / 255.0F);
RenderSystem.enableBlend();
int stored = fluidTank.getFluidAmount();
float capacity = fluidTank.getCapacity();
float filledVolume = stored / capacity;
int renderableHeight = (int)(filledVolume * height);
int atlasWidth = (int)(sprite.getY() / (sprite.getU1() - sprite.getU0()));
int atlasHeight = (int)(sprite.getY() / (sprite.getV1() - sprite.getV0()));
pPoseStack.pose().pushPose();
pPoseStack.pose().translate(0, height-16, 0);
for (int i = 0; i < Math.ceil(renderableHeight / 16f); i++) {
int drawingHeight = Math.min(16, renderableHeight - 16*i);
int notDrawingHeight = 16 - drawingHeight;
// TODO Double Check this
pPoseStack.blit(TextureAtlas.LOCATION_BLOCKS, getX(), getY() + notDrawingHeight, 0, sprite.getU0()*atlasWidth, sprite.getV0()*atlasHeight + notDrawingHeight, this.width, drawingHeight, atlasWidth, atlasHeight);
pPoseStack.pose().translate(0,-16, 0);
}
RenderSystem.setShaderColor(1, 1, 1, 1);
pPoseStack.pose().popPose();
}
}
//renderToolTip(pPoseStack, pMouseX, pMouseY);
}
}
@Override
protected void updateWidgetNarration(NarrationElementOutput p_259858_) {
}
// TODO Fix Tooltips
/*@Override
public void renderToolTip(PoseStack pPoseStack, int pMouseX, int pMouseY) {
if (isActive() && isHovered) {
displayOn.renderTooltip(pPoseStack, Arrays.asList(LangUtils.getTooltipTitle(toolTipTitle).getVisualOrderText(), Component.literal((int) (((float)this.getFluid.get().getFluidAmount() / this.getFluid.get().getCapacity()) * 100) + "%").getVisualOrderText()), pMouseX, pMouseY);
}
}*/
}

View File

@@ -1,21 +0,0 @@
package com.hypherionmc.craterlib.common;
import com.hypherionmc.craterlib.CraterConstants;
import com.hypherionmc.craterlib.core.systems.internal.CreativeTabRegistry;
import net.minecraft.world.item.CreativeModeTab;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.event.BuildCreativeModeTabContentsEvent;
@Mod.EventBusSubscriber(modid = CraterConstants.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class NeoForgeCommonEvents {
@SubscribeEvent
public static void registerTabs(BuildCreativeModeTabContentsEvent event) {
CreativeModeTab tab = event.getTab();
CreativeTabRegistry.getTabItems().stream()
.filter(p -> p.getLeft().get() == tab && p.getRight() != null)
.forEach(itemPair -> event.accept(itemPair.getRight().get()));
}
}

View File

@@ -1,29 +1,15 @@
package com.hypherionmc.craterlib.common;
import com.hypherionmc.craterlib.api.blockentity.caps.CraterCapabilityHandler;
import com.hypherionmc.craterlib.core.network.CraterNetworkHandler;
import com.hypherionmc.craterlib.core.platform.CommonPlatform;
import com.hypherionmc.craterlib.network.NeoForgeNetworkHandler;
import net.minecraft.core.Direction;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.MenuProvider;
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.level.block.entity.BlockEntity;
import net.neoforged.neoforge.common.extensions.IMenuTypeExtension;
import net.neoforged.neoforge.server.ServerLifecycleHooks;
import org.apache.commons.lang3.function.TriFunction;
import org.jetbrains.annotations.Nullable;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.function.Consumer;
/**
* @author HypherionSA
@@ -32,7 +18,8 @@ public class NeoForgeCommonHelper implements CommonPlatform {
public static Map<ResourceLocation, CreativeModeTab> TABS = new HashMap<>();
public NeoForgeCommonHelper() {}
public NeoForgeCommonHelper() {
}
@Override
public CraterNetworkHandler createPacketHandler(String modid, boolean requiredClient, boolean requiredServer) {
@@ -43,43 +30,4 @@ public class NeoForgeCommonHelper implements CommonPlatform {
public MinecraftServer getMCServer() {
return ServerLifecycleHooks.getCurrentServer();
}
@Override
public void openMenu(ServerPlayer player, MenuProvider menu, @Nullable Consumer<FriendlyByteBuf> initialData) {
// TODO Fix Menus
/*if (initialData != null) {
player.openMenu(menu, initialData);
} else {
player.openMenu(menu, player.getOnPos());
}*/
}
@Override
public <T extends AbstractContainerMenu> MenuType<T> createMenuType(TriFunction<Integer, Inventory, FriendlyByteBuf, T> constructor) {
return IMenuTypeExtension.create(constructor::apply);
}
@Override
public <T> Optional<T> getCapabilityHandler(BlockEntity entity, Direction side, CraterCapabilityHandler capability) {
// TODO Fix This
/*if (capability == CraterCapabilityHandler.ENERGY) {
AtomicReference<NeoForgeEnergyReader> energyReference = new AtomicReference<>();
entity.getCapability(Capabilities.ENERGY, side).ifPresent(storage -> energyReference.set(new NeoForgeEnergyReader(storage)));
return energyReference.get() != null ? (Optional<T>) Optional.of(energyReference.get()) : Optional.empty();
}
if (capability == CraterCapabilityHandler.FLUID) {
AtomicReference<ICraterFluidHandler> craterFluidHandler = new AtomicReference<>();
entity.getCapability(Capabilities.FLUID_HANDLER, side).ifPresent(iFluidHandler -> craterFluidHandler.set(new NeoForgeFluidReader(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();
}
}

View File

@@ -1,58 +0,0 @@
package com.hypherionmc.craterlib.common;
import com.hypherionmc.craterlib.core.platform.CraterFluidHelper;
import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank;
import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder;
import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler;
import com.hypherionmc.craterlib.systems.fluid.NeoForgeFluidTankInteractor;
import com.hypherionmc.craterlib.systems.fluid.NeoForgeFluidUtils;
import com.hypherionmc.craterlib.systems.fluid.NeoForgeWrappedFluidTank;
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.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions;
import net.neoforged.neoforge.fluids.FluidStack;
import net.neoforged.neoforge.fluids.FluidUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
public class NeoForgeFluidHelper implements CraterFluidHelper {
@Override
public CraterFluidTank createFluidTank(int capacity) {
return new NeoForgeWrappedFluidTank(capacity);
}
@Override
public CraterFluidTank createFluidTank(int capacity, Fluid... validFluids) {
return new NeoForgeWrappedFluidTank(capacity, (variant) -> Arrays.stream(validFluids).allMatch(f -> f.isSame(variant.getFluid())));
}
@Override
public boolean interactWithFluidHandler(Player player, InteractionHand hand, ICraterFluidHandler fluidHandler) {
NeoForgeFluidTankInteractor interactor = new NeoForgeFluidTankInteractor(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 NeoForgeFluidUtils.getFluidTexture(new FluidStack(fluidHolder.getFluid(), 0), true);
}
@Override
public int getFluidColor(Fluid fluid) {
IClientFluidTypeExtensions props = IClientFluidTypeExtensions.of(fluid);
return props.getTintColor();
}
}

View File

@@ -15,7 +15,8 @@ import java.io.File;
*/
public class NeoForgeLoaderHelper implements ModloaderEnvironment {
public NeoForgeLoaderHelper() {}
public NeoForgeLoaderHelper() {
}
@Override
public boolean isFabric() {

View File

@@ -1,40 +0,0 @@
package com.hypherionmc.craterlib.mixin;
import com.hypherionmc.craterlib.common.blockentity.CraterBlockEntity;
import org.spongepowered.asm.mixin.Mixin;
/**
* @author HypherionSA
*/
// TODO Fix This
@Mixin(CraterBlockEntity.class)
public class BlockEntityMixin /*implements ICapabilityProvider*/ {
/*@Override
public @NotNull <T> LazyOptional<T> getCapability(@NotNull Capability<T> cap, @Nullable Direction side) {
ICraterCapProvider capProvider = (ICraterCapProvider) this;
if (cap == Capabilities.ENERGY) {
Optional<CustomEnergyStorage> forgeCap = capProvider.getCapability(CraterCapabilityHandler.ENERGY, side);
if (forgeCap.isPresent()) {
return LazyOptional.of(() -> new NeoForgeEnergyWrapper(forgeCap.get())).cast();
}
}
if (cap == Capabilities.ITEM_HANDLER) {
Optional<SimpleInventory> inventory = capProvider.getCapability(CraterCapabilityHandler.ITEM, side);
if (inventory.isPresent()) {
return LazyOptional.of(() -> new SidedInvWrapper(new NeoForgeInventoryWrapper(inventory.get()), side)).cast();
}
}
if (cap == Capabilities.FLUID_HANDLER) {
Optional<ICraterFluidHandler> fluidTank = capProvider.getCapability(CraterCapabilityHandler.FLUID, side);
if (fluidTank.isPresent()) {
return LazyOptional.of(() -> (NeoForgeWrappedFluidTank)fluidTank.get()).cast();
}
}
return LazyOptional.empty();
}*/
}

View File

@@ -24,6 +24,7 @@ public class ConfigScreenHandlerMixin {
/**
* Inject Auto Generated config Screens into forge
*
* @param selectedMod
* @param cir
*/

View File

@@ -46,6 +46,24 @@ public class NeoForgeNetworkHandler implements CraterNetworkHandler {
this.serverRequired = serverRequired;
}
public synchronized static CraterNetworkHandler of(String modId, boolean clientRequired, boolean serverRequired) {
NeoForgeNetworkHandler handler = NETWORK_HANDLERS.computeIfAbsent(modId, modId1 -> new NeoForgeNetworkHandler(buildSimpleChannel(modId1, clientRequired, serverRequired), clientRequired, serverRequired));
if (handler.clientRequired != clientRequired)
throw new IllegalArgumentException("client channel settings mismatch, expected %s, but was %s".formatted(handler.clientRequired, clientRequired));
if (handler.serverRequired != serverRequired)
throw new IllegalArgumentException("server channel settings mismatch, expected %s, but was %s".formatted(handler.serverRequired, serverRequired));
return handler;
}
private static SimpleChannel buildSimpleChannel(String modId, boolean clientAcceptsVanillaOrMissing, boolean serverAcceptsVanillaOrMissing) {
return NetworkRegistry.ChannelBuilder
.named(new ResourceLocation(modId, "crater_network"))
.networkProtocolVersion(() -> PROTOCOL)
.clientAcceptedVersions(clientAcceptsVanillaOrMissing ? NetworkRegistry.acceptMissingOr(PROTOCOL) : PROTOCOL::equals)
.serverAcceptedVersions(serverAcceptsVanillaOrMissing ? NetworkRegistry.acceptMissingOr(PROTOCOL) : PROTOCOL::equals)
.simpleChannel();
}
@Override
public <T extends CraterPacket<T>> void registerPacket(Class<T> clazz, Supplier<T> supplier, PacketDirection packetDirection) {
BiConsumer<T, FriendlyByteBuf> encoder = CraterPacket::write;
@@ -93,22 +111,6 @@ public class NeoForgeNetworkHandler implements CraterNetworkHandler {
CraterNetworkHandler.super.sendToServer(packet);
}
public synchronized static CraterNetworkHandler of(String modId, boolean clientRequired, boolean serverRequired) {
NeoForgeNetworkHandler handler = NETWORK_HANDLERS.computeIfAbsent(modId, modId1 -> new NeoForgeNetworkHandler(buildSimpleChannel(modId1, clientRequired, serverRequired), clientRequired, serverRequired));
if (handler.clientRequired != clientRequired) throw new IllegalArgumentException("client channel settings mismatch, expected %s, but was %s".formatted(handler.clientRequired, clientRequired));
if (handler.serverRequired != serverRequired) throw new IllegalArgumentException("server channel settings mismatch, expected %s, but was %s".formatted(handler.serverRequired, serverRequired));
return handler;
}
private static SimpleChannel buildSimpleChannel(String modId, boolean clientAcceptsVanillaOrMissing, boolean serverAcceptsVanillaOrMissing) {
return NetworkRegistry.ChannelBuilder
.named(new ResourceLocation(modId, "crater_network"))
.networkProtocolVersion(() -> PROTOCOL)
.clientAcceptedVersions(clientAcceptsVanillaOrMissing ? NetworkRegistry.acceptMissingOr(PROTOCOL) : PROTOCOL::equals)
.serverAcceptedVersions(serverAcceptsVanillaOrMissing ? NetworkRegistry.acceptMissingOr(PROTOCOL) : PROTOCOL::equals)
.simpleChannel();
}
private LogicalSide getSideFromDirection(PacketDirection direction) {
return direction == PacketDirection.TO_CLIENT ? LogicalSide.CLIENT : LogicalSide.SERVER;
}

View File

@@ -1,37 +0,0 @@
package com.hypherionmc.craterlib.systems.energy;
import com.hypherionmc.craterlib.core.systems.energy.ICraterEnergyStorage;
import net.neoforged.neoforge.energy.IEnergyStorage;
public record NeoForgeEnergyReader(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();
}
}

View File

@@ -1,41 +0,0 @@
package com.hypherionmc.craterlib.systems.energy;
import com.hypherionmc.craterlib.core.systems.energy.CustomEnergyStorage;
import net.neoforged.neoforge.energy.IEnergyStorage;
/**
* @author HypherionSA
* Forge Energy Support on top of the custom system
*/
public record NeoForgeEnergyWrapper(CustomEnergyStorage storage) implements IEnergyStorage {
@Override
public int receiveEnergy(int maxReceive, boolean simulate) {
return storage.receiveEnergy(maxReceive, simulate);
}
@Override
public int extractEnergy(int maxExtract, boolean simulate) {
return storage.extractEnergy(maxExtract, simulate);
}
@Override
public int getEnergyStored() {
return storage.getPowerLevel();
}
@Override
public int getMaxEnergyStored() {
return storage.getPowerCapacity();
}
@Override
public boolean canExtract() {
return storage.getMaxOutput() > 0;
}
@Override
public boolean canReceive() {
return storage.getMaxInput() > 0;
}
}

View File

@@ -1,46 +0,0 @@
package com.hypherionmc.craterlib.systems.fluid;
import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder;
import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler;
import net.neoforged.neoforge.fluids.FluidStack;
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
public record NeoForgeFluidReader(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;
}
}

View File

@@ -1,47 +0,0 @@
package com.hypherionmc.craterlib.systems.fluid;
import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder;
import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler;
import net.neoforged.neoforge.fluids.FluidStack;
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
import org.jetbrains.annotations.NotNull;
public record NeoForgeFluidTankInteractor(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());
}
}

View File

@@ -1,25 +0,0 @@
package com.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.neoforged.neoforge.client.extensions.common.IClientFluidTypeExtensions;
import net.neoforged.neoforge.fluids.FluidStack;
public class NeoForgeFluidUtils {
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;
}
}

View File

@@ -1,79 +0,0 @@
package com.hypherionmc.craterlib.systems.fluid;
import com.hypherionmc.craterlib.core.systems.fluid.CraterFluidTank;
import com.hypherionmc.craterlib.core.systems.fluid.FluidHolder;
import com.hypherionmc.craterlib.core.systems.fluid.ICraterFluidHandler;
import net.neoforged.neoforge.fluids.FluidStack;
import net.neoforged.neoforge.fluids.IFluidTank;
import net.neoforged.neoforge.fluids.capability.IFluidHandler;
import org.jetbrains.annotations.NotNull;
import java.util.function.Predicate;
public class NeoForgeWrappedFluidTank extends CraterFluidTank implements IFluidTank, IFluidHandler {
public NeoForgeWrappedFluidTank(int capacity) {
super(capacity);
}
public NeoForgeWrappedFluidTank(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() ? ICraterFluidHandler.FluidAction.SIMULATE : ICraterFluidHandler.FluidAction.EXECUTE);
}
@Override
public @NotNull FluidStack drain(int maxDrain, IFluidHandler.FluidAction action) {
FluidHolder extracted = this.extract(maxDrain, action.simulate() ? ICraterFluidHandler.FluidAction.SIMULATE : ICraterFluidHandler.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() ? ICraterFluidHandler.FluidAction.SIMULATE : ICraterFluidHandler.FluidAction.EXECUTE);
return new FluidStack(holder.getFluid(), holder.getAmount());
}
}

View File

@@ -1,90 +0,0 @@
package com.hypherionmc.craterlib.systems.inventory;
import com.google.common.base.Suppliers;
import com.hypherionmc.craterlib.core.systems.inventory.SimpleInventory;
import net.minecraft.core.Direction;
import net.minecraft.world.WorldlyContainer;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import org.jetbrains.annotations.Nullable;
import java.util.function.Supplier;
import java.util.stream.IntStream;
/**
* @author HypherionSA
*/
public class NeoForgeInventoryWrapper implements WorldlyContainer {
private final SimpleInventory inventory;
private final Supplier<int[]> slots = Suppliers.memoize(() -> IntStream.range(0, getContainerSize()).toArray());
public NeoForgeInventoryWrapper(SimpleInventory inventory) {
this.inventory = inventory;
}
@Override
public int[] getSlotsForFace(Direction side) {
return slots.get();
}
@Override
public boolean canPlaceItemThroughFace(int slot, ItemStack stack, @Nullable Direction side) {
if (canPlaceItem(slot, stack)) {
ItemStack existing = getItem(slot);
return existing.getCount() < getMaxStackSize();
}
return false;
}
@Override
public boolean canTakeItemThroughFace(int slot, ItemStack stack, Direction side) {
return true;
}
@Override
public int getContainerSize() {
return inventory.getItemHandler().getContainerSize();
}
@Override
public boolean isEmpty() {
return inventory.getItemHandler().isEmpty();
}
@Override
public ItemStack getItem(int slot) {
return inventory.getItemHandler().getItem(slot);
}
@Override
public ItemStack removeItem(int p_18942_, int p_18943_) {
return inventory.getItemHandler().removeItem(p_18942_, p_18943_);
}
@Override
public ItemStack removeItemNoUpdate(int slot) {
return inventory.getItemHandler().removeItemNoUpdate(slot);
}
@Override
public void setItem(int slot, ItemStack stack) {
inventory.getItemHandler().setItem(slot, stack);
}
@Override
public void setChanged() {
inventory.getItemHandler().setChanged();
}
@Override
public boolean stillValid(Player player) {
return inventory.getItemHandler().stillValid(player);
}
@Override
public void clearContent() {
inventory.getItemHandler().clearContent();
}
}

View File

@@ -1 +0,0 @@
public net.minecraft.client.renderer.LevelRenderer$RenderChunkInfo

View File

@@ -1,13 +1,13 @@
modLoader = "javafml"
loaderVersion = "[1,)"
license = "MIT"
issueTrackerURL="https://github.com/firstdarkdev/craterLib/issues"
issueTrackerURL = "https://github.com/firstdarkdev/craterLib/issues"
[[mods]]
modId = "${mod_id}"
version = "${version}"
displayName = "${mod_name}"
displayURL="https://modrinth.com/mod/craterlib"
displayURL = "https://modrinth.com/mod/craterlib"
logoFile = "craterlib_logo.png"
#credits="Thanks for this example mod goes to Java"
authors = "${mod_author}, Zenith"
@@ -16,14 +16,14 @@ A library mod used by First Dark Development and HypherionSA Mods
'''
displayTest = "MATCH_VERSION"
[[dependencies.${mod_id}]]
[[dependencies.${ mod_id }]]
modId = "neoforge"
mandatory = true
versionRange = "[20.3,)"
ordering = "NONE"
side = "BOTH"
[[dependencies.${mod_id}]]
[[dependencies.${ mod_id }]]
modId = "minecraft"
mandatory = true
versionRange = "[1.20.3,1.21)"

View File

@@ -1 +0,0 @@
com.hypherionmc.craterlib.common.NeoForgeFluidHelper

View File

@@ -4,7 +4,6 @@
"package": "com.hypherionmc.craterlib.mixin",
"compatibilityLevel": "JAVA_17",
"mixins": [
"BlockEntityMixin"
],
"client": [
"ConfigScreenHandlerMixin"