Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
19f994b
added logic / walkers / still imcomplete
alone13141 Apr 16, 2026
668ecf8
PLAESE IDK
alone13141 Apr 16, 2026
a2ec6f5
Fixed reviewed comments
alone13141 Apr 25, 2026
8eb5158
Merging with upstream
Cardinalstars May 7, 2026
6edd5d7
Pretty major refactor to allow stuff for FMP. Still a lot to be done,…
Cardinalstars May 15, 2026
d9b0ddc
Collision, external connections, and client syncing done I think. I k…
Cardinalstars May 15, 2026
1cd08da
First node transfer logic done.
Cardinalstars May 17, 2026
e119714
Finished Crossover pipes
Cardinalstars May 25, 2026
3459375
Sorting pipes done
Cardinalstars May 25, 2026
dc5cbfa
Rationing pipe logic + itemTransferNode insertion logic done
Cardinalstars May 29, 2026
ef1037b
Fuck my life but I think it's finally working only like 8 hours of le…
Cardinalstars May 31, 2026
ebea9e8
Slot locking
Cardinalstars May 31, 2026
3a918a4
NBT aware recipes for filters + phantom slots for filters
Cardinalstars Jun 3, 2026
dfe82dc
A shit-load more filter dogshit.
Cardinalstars Jun 4, 2026
a8d62a9
Merge branch 'transfer-nodes' into transfer-nodes
Cardinalstars Jun 4, 2026
b9e3c98
Naming + dev art
Cardinalstars Jun 6, 2026
18ddf2b
Filters maybe working. Need to test more.
Cardinalstars Jun 6, 2026
ab8566b
Merge branch 'transfer-nodes' of https://github.com/alone13141/Utilit…
Cardinalstars Jun 6, 2026
961d746
Fuck my life getting the slots to tint seems to be fucking impossible.
Cardinalstars Jun 7, 2026
cc961b9
Finally got the slots coloured
Cardinalstars Jun 8, 2026
62abb1d
Basic filter functionality working, haven't tested advanced functiona…
Cardinalstars Jun 8, 2026
2ed9b56
Fixing edge case
Cardinalstars Jun 9, 2026
df3d7db
Pretty sure filter items should work now too. Just need to do more te…
Cardinalstars Jun 13, 2026
190c172
Mod sorting pipe done + fixes for filter pipe
Cardinalstars Jun 13, 2026
b620ab9
Cleaning up some idiocy from my multipart pr + changing pipes to all …
Cardinalstars Jun 26, 2026
2d36af1
fixing impossible object rendering
Cardinalstars Jun 26, 2026
ea97848
Reorganizing some stuff + start of fluid stuff
Cardinalstars Jun 26, 2026
982e227
More organization of things + getting there on nodes.
Cardinalstars Jun 28, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -38,14 +38,14 @@ dependencies {
// TODO: remove MUI1 dep when the implicit dependency
// TODO: in IItemHandlerModifiable is removed
api("com.github.GTNewHorizons:ModularUI:1.3.1:dev")
api("com.github.GTNewHorizons:ModularUI2:2.3.23-1.7.10:dev")
api("com.github.GTNewHorizons:ModularUI2:2.3.63-1.7.10:dev")
api("com.github.GTNewHorizons:CraftTweaker:3.4.2:dev")
api('curse.maven:cofh-lib-220333:2388748')
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
compileOnly('com.github.GTNewHorizons:Angelica:2.1.16:dev')
compileOnly("com.github.GTNewHorizons:FindIt:1.4.0:dev")
compileOnly('com.github.GTNewHorizons:TinkersConstruct:1.14.14-GTNH:dev')
compileOnly('com.github.GTNewHorizons:ForgeMultipart:1.7.2:dev') {transitive = false}
api('com.github.GTNewHorizons:ForgeMultipart:1.7.2:dev') {transitive = false}
compileOnly("com.github.GTNewHorizons:Backhand:1.8.2:dev")
compileOnly('com.github.GTNewHorizons:GT5-Unofficial:5.09.52.296:dev')

Expand Down
Empty file modified gradlew
100755 → 100644
Comment thread
Cardinalstars marked this conversation as resolved.
Empty file.
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.fouristhenumber.utilitiesinexcess;


import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockPipe;
import com.fouristhenumber.utilitiesinexcess.common.items.ItemPipe;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
Expand Down Expand Up @@ -53,13 +56,12 @@
import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockRedstoneGenerator;
import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockSolarGenerator;
import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockTNTGenerator;
import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockRetrievalNode;
//import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockRetrievalNode;
import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockRetrievalNodeFluid;
import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockTransferNode;
import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockTransferNodeEnergy;
import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockTransferNodeFluid;
//import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockTransferNodeFluid;
import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockTransferNodeHyperEnergy;
import com.fouristhenumber.utilitiesinexcess.common.blocks.transfer.BlockTransferPipe;
import com.fouristhenumber.utilitiesinexcess.config.blocks.BlockConfig;
import com.fouristhenumber.utilitiesinexcess.config.blocks.CursedEarthConfig;
import com.fouristhenumber.utilitiesinexcess.config.blocks.EnderLotusConfig;
Expand Down Expand Up @@ -165,12 +167,12 @@ public enum ModBlocks {
TRADING_POST(BlockConfig.enableTradingPost, new BlockTradingPost(), "trading_post"),
DECORATIVE_BLOCKS(BlockConfig.enableDecorativeBlocks, new BlockDecorative(), BlockDecorative.ItemBlockDecorative.class, "decorative_block"),
//TODO: Config
TRANSFER_PIPE(true, new BlockTransferPipe(), "transfer_pipe"),
TRANSFER_PIPE(true, new BlockPipe(), ItemPipe.class, "transfer_pipe"),
TRANSFER_NODE(true, new BlockTransferNode(), "transfer_node"),
TRANSFER_NODE_FLUID(true, new BlockTransferNodeFluid(), "transfer_node_fluid"),
// TRANSFER_NODE_FLUID(true, new BlockTransferNodeFluid(), "transfer_node_fluid"),
TRANSFER_NODE_ENERGY(true, new BlockTransferNodeEnergy(), "transfer_node_energy"),
TRANSFER_NODE_HYPER_ENERGY(true, new BlockTransferNodeHyperEnergy(), "transfer_node_hyper_energy"),
RETRIEVAL_NODE(true, new BlockRetrievalNode(), "retrieval_node"),
// RETRIEVAL_NODE(true, new BlockRetrievalNode(), "retrieval_node"),
RETRIEVAL_NODE_FLUID(true, new BlockRetrievalNodeFluid(), "retrieval_node_fluid"),
CHANDELIER(BlockConfig.chandelier.enableChandelier, new BlockChandelier(), BlockChandelier.ItemBlockChandelier.class, "chandelier"),
GIGA_TORCH(BlockConfig.gigaTorch.enableGigaTorch, new BlockGigaTorch(), BlockGigaTorch.ItemBlockGigaTorch.class, "giga_torch"),
Expand Down
29 changes: 25 additions & 4 deletions src/main/java/com/fouristhenumber/utilitiesinexcess/ModItems.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@
import com.fouristhenumber.utilitiesinexcess.config.items.unstabletools.ReversingHoeConfig;

import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraftforge.oredict.OreDictionary;

// Credit to Et Futurum (Requiem)
public enum ModItems {
Expand All @@ -61,7 +62,7 @@ public enum ModItems {
INVERSION_SIGIL_ACTIVE(InversionConfig.enableInversionSigil, new ItemInversionSigilActive(), "inversion_sigil_active"),
PSEUDO_INVERSION_SIGIL(InversionConfig.enableInversionSigil, new ItemPseudoInversionSigil(), "pseudo_inversion_sigil"),
INVERTED_INGOT(InversionConfig.enableInvertedIngot, new ItemInvertedIngot(), "inverted_ingot"),
INVERTED_NUGGET(InversionConfig.enableInvertedIngot, new ItemInvertedIngot.InvertedNugget(), "inverted_nugget"),
INVERTED_NUGGET(InversionConfig.enableInvertedIngot, new ItemInvertedIngot.InvertedNugget(), "inverted_nugget", "nuggetInverted"),
ARCHITECTS_WAND(ItemConfig.enableArchitectsWand, new ItemArchitectsWand(ItemConfig.architectsWandBuildLimit).setTextureName("utilitiesinexcess:architects_wand"), "architects_wand"),
SUPER_ARCHITECTS_WAND(ItemConfig.enableSuperArchitectsWand, new ItemArchitectsWand(ItemConfig.superArchitectsWandBuildLimit).setTextureName("utilitiesinexcess:super_architects_wand"), "super_architects_wand"),
BEDROCKIUM_INGOT(ItemConfig.enableBedrockium, new ItemBedrockiumIngot().setUnlocalizedName("bedrockium_ingot").setTextureName("utilitiesinexcess:bedrockium_ingot"), "bedrockium_ingot"),
Expand Down Expand Up @@ -91,13 +92,21 @@ public static void init() {
private final Item theItem;
private final String name;
private final ItemDisabled disabledVersion;
private final String[] oreDictNames;

ModItems(boolean enabled, Item item, String name) {
ModItems(boolean enabled, Item item, String name, String... oreDictNames) {
this.isEnabled = enabled;
theItem = item;
this.name = name;
if (ItemConfig.registerDisabledItems) disabledVersion = new ItemDisabled(theItem);
else disabledVersion = null;
this.oreDictNames = oreDictNames;
if (ItemConfig.registerDisabledItems)
{
disabledVersion = new ItemDisabled(theItem);
}
else
{
disabledVersion = null;
}
}

public boolean isEnabled() {
Expand All @@ -119,4 +128,16 @@ public ItemStack newItemStack(int count) {
public ItemStack newItemStack(int count, int meta) {
return new ItemStack(this.get(), count, meta);
}

public static void registerOreDict() {
for (ModItems item : VALUES) {
if (!item.isEnabled()) continue;
if (item.oreDictNames == null) continue;

for (String oreName : item.oreDictNames) {
OreDictionary.registerOre(oreName, item.newItemStack());
}
}
}

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
package com.fouristhenumber.utilitiesinexcess;

import codechicken.lib.world.TileChunkLoadHook;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.pipe.TileEntityCrossoverPipe;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.pipe.TileEntityEnergyPipe;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.pipe.TileEntityFilterPipe;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.pipe.TileEntityHyperRationingPipe;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.pipe.TileEntityModSortingPipe;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.pipe.TileEntityRationingPipe;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.pipe.TileEntitySortingPipe;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.pipe.TileEntityTransferPipe;
import com.fouristhenumber.utilitiesinexcess.utils.ColoredSlots;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
Expand Down Expand Up @@ -50,9 +60,7 @@
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityRedstoneGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntitySolarGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityTNTGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.TileEntityTransferNode;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.TileEntityTransferNodeFluid;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.TileEntityTransferPipe;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.TileEntityItemTransferNode;
import com.fouristhenumber.utilitiesinexcess.common.worldgen.WorldGenEnderLotus;
import com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.FMPRecipeLoader;
import com.fouristhenumber.utilitiesinexcess.compat.ForgeMultipart.multipart.Content;
Expand Down Expand Up @@ -94,7 +102,7 @@ public class UtilitiesInExcess {
public static int blackoutCurtainsRenderID;
public static int spikeRenderID;
public static int transferPipeRenderID;
public static int transferNodeRenderID;
public static int flatNodeRenderId;

@SidedProxy(
clientSide = "com.fouristhenumber.utilitiesinexcess.ClientProxy",
Expand All @@ -113,7 +121,7 @@ public void preInit(FMLPreInitializationEvent event) {
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
proxy.init(event);

TileChunkLoadHook.init();
RecipeLoader.run();

MinecraftForge.EVENT_BUS.register(new ForgeEventHandler());
Expand Down Expand Up @@ -164,8 +172,16 @@ public void init(FMLInitializationEvent event) {
GameRegistry.registerTileEntity(TileEntityPacifistsBench.class, "TileEntityPacifistsBenchUIE");
GameRegistry.registerTileEntity(TileEntityTradingPost.class, "TileEntityTradingPostUIE");
GameRegistry.registerTileEntity(TileEntityTransferPipe.class, "TileEntityTransferPipeUIE");
GameRegistry.registerTileEntity(TileEntityTransferNode.class, "TileEntityTransferNodeUIE");
GameRegistry.registerTileEntity(TileEntityTransferNodeFluid.class, "TileEntityTransferNodeFluidUIE");
GameRegistry.registerTileEntity(TileEntityCrossoverPipe.class, "TileEntityCrossoverPipeUIE");
GameRegistry.registerTileEntity(TileEntitySortingPipe.class, "TileEntitySortingPipeUIE");
GameRegistry.registerTileEntity(TileEntityRationingPipe.class, "TileEntityRationingPipeUIE");
GameRegistry.registerTileEntity(TileEntityHyperRationingPipe.class, "TileEntityHyperRationingPipe");
GameRegistry.registerTileEntity(TileEntityFilterPipe.class, "TileEntityFilterPipe");
GameRegistry.registerTileEntity(TileEntityEnergyPipe.class, "TileEntityEnergyPipe");
GameRegistry.registerTileEntity(TileEntityModSortingPipe.class, "TileEntityModSortingPipe");
// GameRegistry.registerTileEntity(TileEntityRetrievalNode.class,"TileEntityRetrievalNodeUIE"); // not sure if i did the naming correctly
GameRegistry.registerTileEntity(TileEntityItemTransferNode.class, "TileEntityTransferNodeUIE");
// GameRegistry.registerTileEntity(TileEntityTransferNodeFluid.class, "TileEntityTransferNodeFluidUIE");

lapisAetheriusRenderID = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(new LapisAetheriusRenderer());
Expand All @@ -175,9 +191,11 @@ public void init(FMLInitializationEvent event) {
RenderingRegistry.registerBlockHandler(new SpikeRenderer());
transferPipeRenderID = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(new TransferPipeRenderer());
transferNodeRenderID = RenderingRegistry.getNextAvailableRenderId();
flatNodeRenderId = RenderingRegistry.getNextAvailableRenderId();
RenderingRegistry.registerBlockHandler(new TransferNodeRenderer());

ColoredSlots.init();

GameRegistry.registerWorldGenerator(new WorldGenEnderLotus(), 10);

if (ModItems.ENDER_LOTUS_SEED.isEnabled()) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.fouristhenumber.utilitiesinexcess.common.blocks.transfer;

public class BlockEnergyNode {
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package com.fouristhenumber.utilitiesinexcess.common.blocks.transfer;


import com.fouristhenumber.utilitiesinexcess.common.tileentities.transfer.TileEntityNetworkComponentBase;
import com.fouristhenumber.utilitiesinexcess.transfer.collision.PipeCollision;
import net.minecraft.block.material.Material;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;

import com.cleanroommc.modularui.factory.GuiFactories;

import java.util.List;

public abstract class BlockNodeBase extends BlockTransferBase
{


protected BlockNodeBase() {
super(Material.iron);
}

@Override
public boolean renderAsNormalBlock() {
return false;
}

@Override
public boolean isOpaqueCube() {
return false;
}

@Override
public boolean hasTileEntity(int metadata) {
return true;
}

@Override
public boolean onBlockActivated(World worldIn, int x, int y, int z, EntityPlayer player, int side, float subX,
float subY, float subZ) {
if (!worldIn.isRemote) GuiFactories.tileEntity()
.open(player, x, y, z);
return true;
}

@Override
public int onBlockPlaced(World world, int x, int y, int z,
int side, float hitX, float hitY, float hitZ,
int meta)
{
return (meta << 3) | side;
}

@Override
public void addCollisionBoxesToList(World worldIn, int x, int y, int z, AxisAlignedBB mask, List<AxisAlignedBB> list, Entity collider)
{
TileEntityNetworkComponentBase<?> te = (TileEntityNetworkComponentBase<?>) worldIn.getTileEntity(x, y, z);
if (te == null) return;

int connectionMask = te.getRawConnectionMask();

AxisAlignedBB boundingBox = PipeCollision.MIDDLE.getBoundingBox().copy().offset(x, y, z);
if (boundingBox.intersectsWith(mask))
{
list.add(boundingBox);
}

boundingBox = PipeCollision.DOWN.getBoundingBox().copy().offset(x, y, z);
if ((connectionMask & (1 << 0)) != 0 && boundingBox.intersectsWith(mask))
{
list.add(boundingBox);
}

boundingBox = PipeCollision.UP.getBoundingBox().copy().offset(x, y, z);
if ((connectionMask & (1 << 1)) != 0 && boundingBox.intersectsWith(mask))
{
list.add(boundingBox);
}

boundingBox = PipeCollision.NORTH.getBoundingBox().copy().offset(x, y, z);
if ((connectionMask & (1 << 2)) != 0 && boundingBox.intersectsWith(mask))
{
list.add(boundingBox);
}

boundingBox = PipeCollision.SOUTH.getBoundingBox().copy().offset(x, y, z);
if ((connectionMask & (1 << 3)) != 0 && boundingBox.intersectsWith(mask))
{
list.add(boundingBox);
}

boundingBox = PipeCollision.WEST.getBoundingBox().copy().offset(x, y, z);
if ((connectionMask & (1 << 4)) != 0 && boundingBox.intersectsWith(mask))
{
list.add(boundingBox);
}

boundingBox = PipeCollision.EAST.getBoundingBox().copy().offset(x, y, z);
if ((connectionMask & (1 << 5)) != 0 && boundingBox.intersectsWith(mask))
{
list.add(boundingBox);
}
}

public abstract int getRenderType();
}
Loading