Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
fd731fb
Add initil quarry with working (seems like) mining, first pass on model
MalTeeez Nov 20, 2025
c550a40
Build a semi-generic chunk loading class
MalTeeez Nov 21, 2025
b5f938e
Finish chunk-loading logic & restarting on reload & correctly get dis…
MalTeeez Nov 22, 2025
8a06a13
Add dedicated eq config, Implement item & fluid storage logic, fix so…
MalTeeez Nov 24, 2025
a02c523
Make mining logic accept more cases, add energy cost, fix weird stack…
MalTeeez Nov 24, 2025
3ae85b2
Add first pass of ender marker, need to actually use in quarry now
MalTeeez Nov 28, 2025
75e99ca
Move TileEntities into their own enum, Fix rejoining world for ender …
MalTeeez Nov 29, 2025
044d53b
Add initial version of upgrade models, Add marker modes and start on …
MalTeeez Dec 6, 2025
2a04236
First version of arbitrary quarry regions, only semi-stable so far
MalTeeez Dec 10, 2025
f2d8e92
Stop with the current approach, try an edge based one next
MalTeeez Dec 15, 2025
01ea578
Move to an edge based sub-area forming approach
MalTeeez Dec 16, 2025
46ff99d
Arbitrary marker system shrinking, implementing with actual quarry wo…
MalTeeez Dec 17, 2025
f3639c4
Limit loop markers to 2 links even when restoring
MalTeeez Dec 18, 2025
5666f81
Fix inverted sub-areas after shrinking, apply spotless
MalTeeez Dec 18, 2025
33fcffa
Implement upgrade system & finish the rest of the upgrade models
MalTeeez Dec 19, 2025
06e181d
Block replace logic
MalTeeez Dec 19, 2025
85dff14
Move stack hash Strategy to utils, commit early to debug Entity mixin…
MalTeeez Dec 21, 2025
1b0e5c5
Drop items on quarry break, set upgrade collision boxes, register upg…
MalTeeez Dec 22, 2025
7a9c490
Send message to owner when done
MalTeeez Dec 22, 2025
ca477dd
Add waila support, fix some more bugs with arbitrary areas, start on …
MalTeeez Jan 9, 2026
96f88bd
Use GTNHLib ItemSink for storing items, improve performance in some h…
MalTeeez Jan 18, 2026
5026580
Add configurable bottom and top bounds by markers, more localizations…
MalTeeez Jan 18, 2026
48558c1
Add redstone functionality, remove unused facing prop, fix nbt loadin…
MalTeeez Jan 19, 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
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,3 +36,4 @@ addon.local.gradle.kts
addon.late.local.gradle
addon.late.local.gradle.kts
layout.json
libs/
37 changes: 28 additions & 9 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,16 +34,35 @@
* For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph
*/
dependencies {
implementation("com.github.GTNewHorizons:GTNHLib:0.7.7:dev")
compileOnly('org.jetbrains:annotations:26.0.1')

implementation("com.github.GTNewHorizons:GTNHLib:0.8.15:dev")
// TODO: remove MUI1 dep when the implicit dependency
// TODO: in IItemHandlerModifiable is removed
api("com.github.GTNewHorizons:ModularUI:1.2.20:dev")
api("com.github.GTNewHorizons:ModularUI2:2.2.16-1.7.10:dev")
api("com.github.GTNewHorizons:CraftTweaker:3.4.2:dev")
api('curse.maven:cofh-lib-220333:2388748')
compileOnly("com.github.GTNewHorizons:Baubles-Expanded:2.1.9-GTNH:dev")
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
compileOnly('com.github.GTNewHorizons:Angelica:1.0.0-beta62:dev')
api("com.github.GTNewHorizons:ModularUI:1.2.20:dev") { transitive = false }
api("com.github.GTNewHorizons:ModularUI2:2.2.16-1.7.10:dev") { transitive = false }
api("com.github.GTNewHorizons:CraftTweaker:3.4.2:dev") { transitive = false }
api('curse.maven:cofh-lib-220333:2388748') { transitive = false }

compileOnly("com.github.GTNewHorizons:Baubles-Expanded:2.1.9-GTNH:dev") { transitive = false }
runtimeOnlyNonPublishable("com.github.GTNewHorizons:EnderCore:0.5.0:dev") { transitive = false }
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Baubles-Expanded:2.2.2-GTNH:dev") { transitive = false }
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') { transitive = false }
compileOnly('com.github.GTNewHorizons:Angelica:1.0.0-beta62:dev') { transitive = false }

api("com.github.GTNewHorizons:NotEnoughItems:2.8.31-GTNH:dev" ) { transitive = true }
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Angelica:1.0.0-beta71-pre:dev" ) { transitive = false }
runtimeOnlyNonPublishable("com.github.GTNewHorizons:Hodgepodge:2.7.17:dev" ) { transitive = false }

// For debugging chunkloading
runtimeOnlyNonPublishable('curse.maven:chicken-chunks-229316:2233250')
// Testing performance with ender quarry inserts
runtimeOnlyNonPublishable('com.github.GTNewHorizons:Avaritiaddons:1.9.3-GTNH:dev') { transitive = true }
runtimeOnlyNonPublishable('com.github.GTNewHorizons:Avaritia:1.81-pre:dev') { transitive = false }
runtimeOnlyNonPublishable('com.github.GTNewHorizons:Applied-Energistics-2-Unofficial:rv3-beta-789-GTNH:dev') { transitive = true }
runtimeOnlyNonPublishable rfg.deobf(files("libs/spark-1.10.pre-forge-1.7.10.jar"))

runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.8.31-GTNH:dev" )
runtimeOnlyNonPublishable("com.github.GTNewHorizons:WAILAPlugins:0.7.2:dev") { transitive = false }
api("com.github.GTNewHorizons:waila:1.9.15:dev") { transitive = false }
runtimeOnlyNonPublishable("com.github.GTNewHorizons:ServerUtilities:2.2.5:dev") { transitive = false }
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,15 @@

import com.fouristhenumber.utilitiesinexcess.common.renderers.InvertedIngotRenderer;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPortalUnderWorld;
import com.fouristhenumber.utilitiesinexcess.compat.Mods;
import com.fouristhenumber.utilitiesinexcess.compat.waila.TTRenderUIETimeLeftBar;
import com.fouristhenumber.utilitiesinexcess.render.ISBRHUnderworldPortal;
import com.fouristhenumber.utilitiesinexcess.render.TESRUnderworldPortal;

import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;

public class ClientProxy extends CommonProxy {

Expand All @@ -24,4 +27,12 @@ public void init(FMLInitializationEvent event) {
RenderingRegistry.registerBlockHandler(ISBRHUnderworldPortal.INSTANCE);
}
}

@Override
public void postInit(FMLPostInitializationEvent event) {
super.postInit(event);
if (Mods.Waila.isLoaded()) {
TTRenderUIETimeLeftBar.register();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.fouristhenumber.utilitiesinexcess.utils.SoundVolumeChecks;

import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
Expand All @@ -34,6 +35,13 @@ public void preInit(FMLPreInitializationEvent event) {

public void init(FMLInitializationEvent event) {
soundVolumeChecks = new SoundVolumeChecks();
ModTileEntities.init();
if (Mods.Waila.isLoaded()) {
FMLInterModComms.sendMessage(
"Waila",
"register",
"com.fouristhenumber.utilitiesinexcess.compat.waila.WailaHandler.callbackRegister");
}
}

public void postInit(FMLPostInitializationEvent event) {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockTrashCanFluid;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockTrashCanItem;
import com.fouristhenumber.utilitiesinexcess.common.blocks.BlockUpdateDetector;
import com.fouristhenumber.utilitiesinexcess.common.blocks.ender_quarry.BlockEnderMarker;
import com.fouristhenumber.utilitiesinexcess.common.blocks.ender_quarry.BlockEnderQuarry;
import com.fouristhenumber.utilitiesinexcess.common.blocks.ender_quarry.BlockEnderQuarryUpgrade;
import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockEnderGenerator;
import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockFoodGenerator;
import com.fouristhenumber.utilitiesinexcess.common.blocks.generators.BlockFurnaceGenerator;
Expand All @@ -47,6 +50,7 @@
import com.fouristhenumber.utilitiesinexcess.config.blocks.BlockConfig;
import com.fouristhenumber.utilitiesinexcess.config.blocks.CursedEarthConfig;
import com.fouristhenumber.utilitiesinexcess.config.blocks.EnderLotusConfig;
import com.fouristhenumber.utilitiesinexcess.config.blocks.EnderQuarryConfig;
import com.fouristhenumber.utilitiesinexcess.config.blocks.GeneratorConfig;
import com.fouristhenumber.utilitiesinexcess.config.dimensions.EndOfTimeConfig;
import com.fouristhenumber.utilitiesinexcess.config.dimensions.UnderWorldConfig;
Expand Down Expand Up @@ -104,6 +108,9 @@ public enum ModBlocks {
SPIKE_DIAMOND(BlockConfig.spikes.enableDiamondSpike, new BlockSpike(BlockSpike.SpikeType.DIAMOND, "diamondSpike"), BlockSpike.ItemSpike.class, "diamondSpike"),
UNDERWORLD_PORTAL(BlockConfig.enableUnderWorldPortal && UnderWorldConfig.enableUnderWorld, new BlockPortalUnderWorld(), "underworld_portal"),
END_OF_TIME_PORTAL(BlockConfig.enableEndOfTimePortal && EndOfTimeConfig.enableEndOfTime, new BlockPortalEndOfTime(), BlockPortalEndOfTime.ItemBlockPortalEndOfTime.class, "temporal_gate"),
ENDER_QUARRY(EnderQuarryConfig.enableEnderQuarry, new BlockEnderQuarry(), "ender_quarry"),
ENDER_MARKER(EnderQuarryConfig.enableEnderQuarry, new BlockEnderMarker(), "ender_marker"),
ENDER_QUARRY_UPGRADE(EnderQuarryConfig.enableEnderQuarry, new BlockEnderQuarryUpgrade(), BlockEnderQuarryUpgrade.ItemEnderQuarryUpgrade.class, "ender_quarry_upgrade"),
; // leave trailing semicolon
// spotless:on

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package com.fouristhenumber.utilitiesinexcess;

import net.minecraft.tileentity.TileEntity;

import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityBlockUpdateDetector;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityConveyor;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityDrum;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityEnderMarker;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityEnderQuarry;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityMarginallyMaximisedChest;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPortalUnderWorld;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityPureLove;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityRadicallyReducedChest;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityRainMuffler;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityRedstoneClock;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntitySignificantlyShrunkChest;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntitySoundMuffler;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityTrashCanEnergy;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityTrashCanFluid;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.TileEntityTrashCanItem;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityEnderGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityFoodGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityFurnaceGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityHighTemperatureFurnaceGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityLavaGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityLowTemperatureFurnaceGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityNetherStarGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityPinkGenerator;
import com.fouristhenumber.utilitiesinexcess.common.tileentities.generators.TileEntityPotionGenerator;
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 cpw.mods.fml.common.registry.GameRegistry;

public enum ModTileEntities {
// spotless:off

// make sure to leave a trailing comma
REDSTONE_CLOCK(TileEntityRedstoneClock .class , "RedstoneClock"),
TRASH_CAN_ITEM(TileEntityTrashCanItem.class , "TrashCanItem"),
TRASH_CAN_FLUID(TileEntityTrashCanFluid.class , "TrashCanFluid"),
TRASH_CAN_ENERGY(TileEntityTrashCanEnergy.class , "TrashCanEnergy"),
DRUM(TileEntityDrum.class , "Drum"),
PURE_LOVE(TileEntityPureLove.class , "PureLove"),
CHEST_MAX(TileEntityMarginallyMaximisedChest.class , "MarginallyMaximisedChest"),
CHEST_SHRUNK(TileEntitySignificantlyShrunkChest.class , "SignificantlyShrunkChest"),
CHEST_SMALL(TileEntityRadicallyReducedChest.class , "RadicallyReducedChest"),
MUFFLER_SOUND(TileEntitySoundMuffler.class , "SoundMuffler"),
MUFFLER_RAIN(TileEntityRainMuffler.class , "RainMuffler"),
BLOCK_UPDATE_DETECTOR(TileEntityBlockUpdateDetector.class , "BlockUpdateDetector"),
CONVEYOR(TileEntityConveyor.class , "Conveyor"),
PORTAL_UNDERWORLD(TileEntityPortalUnderWorld.class , "PortalUnderWorld"),
GENERATOR_LOW_TEMP_FURNACE(TileEntityLowTemperatureFurnaceGenerator.class , "LowTemperatureFurnaceGenerator"),
GENERATOR_FURNACE(TileEntityFurnaceGenerator.class , "FurnaceGenerator"),
GENERATOR_HIGH_TEMP_FURNACE(TileEntityHighTemperatureFurnaceGenerator.class, "HighTemperatureFurnaceGenerator"),
GENERATOR_LAVA(TileEntityLavaGenerator.class , "LavaGenerator"),
GENERATOR_ENDER(TileEntityEnderGenerator.class , "EnderGenerator"),
GENERATOR_REDSTONE(TileEntityRedstoneGenerator.class , "RedstoneGenerator"),
GENERATOR_FOOD(TileEntityFoodGenerator.class , "FoodGenerator"),
GENERATOR_POTION(TileEntityPotionGenerator.class , "PotionGenerator"),
GENERATOR_SOLAR(TileEntitySolarGenerator.class , "SolarGenerator"),
GENERATOR_TNT(TileEntityTNTGenerator.class , "TNTGenerator"),
GENERATOR_PINK(TileEntityPinkGenerator.class , "PinkGenerator"),
GENERATOR_NETHER_STAR(TileEntityNetherStarGenerator.class , "NetherStarGenerator"),
ENDER_QUARRY(TileEntityEnderQuarry.class , "EnderQuarry"),
ENDER_MARKER(TileEntityEnderMarker.class , "EnderMarker"),
;
// spotless:on

public static final ModTileEntities[] VALUES = values();

public static void init() {
for (ModTileEntities te : VALUES) {
if (te.isEnabled()) {
GameRegistry.registerTileEntity(te.clazz, te.name);
}
}
}

private final boolean isEnabled;
private final Class<? extends TileEntity> clazz;
private final String name;

ModTileEntities(Class<? extends TileEntity> clazz, String name) {
this(true, clazz, name);
}

ModTileEntities(Boolean enabled, Class<? extends TileEntity> clazz, String name) {
this.isEnabled = enabled;
this.clazz = clazz;
this.name = "TileEntity" + name + "UIE";
}

public boolean isEnabled() {
return isEnabled;
}
}
Loading