File Details
emcessentials-refabricated-1.2.9.jar
- R
- Jun 7, 2026
- 121.22 KB
- 0
- 1.20.1
- Fabric
File Name
emcessentials-reabricated-1.2.9.jar
Supported Versions
- 1.20.1
Curse Maven Snippet
Changelog
v1.2.9 — Unlimited Item Quantities
Changed — Removed the 9999 per-slot quantity cap
getStack()now caps atInteger.MAX_VALUE(2,147,483,647) instead of 9999.- This is effectively unlimited — the only safeguard is against JVM int overflow when casting
longtoint. - The 9999 cap was originally added to prevent Tom's display issues caused by corrupted EMC (the underflow bug from earlier versions). Now that EMC deduction is reliably persisted via
EMCManager.setEMCtoPlayer()+syncS2C(), corrupted EMC can no longer accumulate, so the cap is unnecessary. - If
ownerEMC / itemEMCexceeds 2.1 billion, it caps atInteger.MAX_VALUE— a Java limitation, not an arbitrary limit.
Changed
- Version bumped from
1.2.8to1.2.9 - Output jar:
emcessentials-reabricated-1.2.9.jar
v1.2.8 — Non-EMC Item Passthrough
Fixed — Non-EMC items pushed into the EMC Interface no longer vanish
- Items without EMC value (cobblestone, sticks, etc.) are now stored in
slot0Bufferinstead of being silently discarded. getStack(0)returns the buffer contents — Tom's adapter sees the item wasn't consumed and routes it to the next priority storage.- The tick method checks
slot0Bufferand converts any item that now has EMC value (edge case for newly learned items). - Items with EMC value continue to be converted immediately on
setStack(0).
Changed — EMC Interface description updated
- README now explains slot 0 behaviour (EMC items consumed, non-EMC items pass through).
Changed
- Version bumped from
1.2.7to1.2.8 - Output jar:
emcessentials-reabricated-1.2.8.jar
v1.2.7 — Forge-Matched Slot Architecture (Working Extraction)
Changed — EMC Interface rewritten to match Forge emc-interface architecture exactly
- Slot 0: Insertion-only sink — any item placed here is converted to EMC via
EMCManager.setEMCtoPlayer()+syncS2C() - Slots 1+: Extraction-only —
getStack()returnsownerEMC / itemEMCcalculated fresh each call - Delta detection in
setStack(): Tom's reads items viagetStack(), extracts internally, then callssetStack()during sync with fewer items.setStack()compareslastShown[slot]against the written count and deducts EMC for the difference. This is the only reliable way to detect extraction on Fabric, since Tom's never callsremoveStack(). removeStack()fallback: Still works for hoppers/pipes that use the standard extraction path.lastShowntracking: EachgetStack()call records what was shown per slot.setStack()removes and uses that entry for delta calculation.
Fixed — Extraction finally deducts EMC correctly
- The Forge version works because Tom's calls
extractItem()(Forge capability). On Fabric, Tom's usesgetStack()→ internal extraction →setStack()sync. The delta detection insetStack()bridges this gap. - Uses
EMCManager.setEMCtoPlayer()+syncS2C()for ALL EMC modifications — the exact same code path as the proven/emce bankcommands. - Removed all
EMCUtil$PLAYER.incrementEMC/decrementEMC/setEMCwrappers that were masking failures.
Changed
- Version bumped from
1.2.6to1.2.7 - Output jar:
emcessentials-reabricated-1.2.7.jar
v1.2.6 — Forge Slot Architecture (Insertion/Extraction Split)
Fixed — EMC Interface now deducts EMC when items are taken via Tom's
- Root cause: Tom's doesn't call
removeStack()— it reads items viagetStack(), processes extraction internally, then callssetStack()during sync. NoremoveStack()call meant no EMC deduction was ever triggered. - Fix: The EMC Interface now uses a physical 54-slot
DefaultedListbuffer. Every 5 ticks, quantities are recalculated fromownerEMC / itemEMCdirectly into the buffer slots. Tom's sees real physical ItemStacks with correct affordable counts. - When Tom's syncs and calls
setStack()with fewer items than were in the buffer,setStack()detects the delta (oldCount − newCount) and callsadjustEMC(player, -cost)to deduct exactly what was extracted. removeStack()still works as a fallback for hoppers/pipes that use the standard extraction path.
Changed — EMCManager direct reflection path
- Both
setStack()delta detection andremoveStack()useEMCManager.getEmcFromPlayer()/setEMCtoPlayer()/syncS2C()directly — the exact same code path as the working/emce bankcommands. - Removed all intermediate
EMCUtil$PLAYERwrappers that were masking failures.
Changed — Version bumped
1.2.4→1.2.5- Output jar:
emcessentials-reabricated-1.2.5.jar
v1.2.4 — Tom's Sync Investigation
Fixed — EMC Interface not deducting from bank
- Root cause:
EMCUtil$PLAYER.decrementEMC()reported success but didn't modify the player's stored EMC balance.ownerEMC -= costwas immediately overwritten byrefreshOwnerEMC()which re-read the unchanged value from Item Alchemy. - Fix: Switched to read-current → subtract → write-back pattern using
getEMC()+setEMC()instead ofdecrementEMC(). This guarantees the deduction is actually persisted.
Fixed — EMC Link Importer item deletion (Bug 1)
- Added
canAddEMCToNetwork()check before removing items from adjacent inventories - Items are only pulled after confirming adjacent EMC storage has space
- Items that don't fit in the internal buffer are returned to the source inventory
- Eliminates the "item deletion" bug when EMC network is full
Fixed — Miniature Sun chunk scanning (Bug 2)
- Added fallback method names for
WorldChunk.getBlockEntities()across different mappings (YarngetBlockEntityMap, MojmapgetBlockEntities) - Previously only tried one method name which could silently fail on some environments
Fixed — getStack() max stack size (Bug 3)
- ItemStack count capped at 9999 instead of raw
ownerEMC / itemEMC— prevents display corruption in Tom's while keeping quantities meaningful - Previously had no cap which caused Tom's display issues with values > 2.1B
Fixed — Dead code removed (Bug 4)
- Removed
convertStoredItems()andimportFromAdjacent()methods from EMC Interface — they were never called but referencedslotCacheandaddToOwnerEMC()
Fixed — EMC Link processInput() error handling
- Added
canAddEMCToNetwork()pre-check to avoid pulling items when EMC storage is full - Items that don't fit in the import buffer are returned to source inventory
Changed
- Version bumped from
1.2.1to1.2.2 - Output jar:
emcessentials-reabricated-1.2.2.jar
v1.2.1 — EMC Interface Deduction Logic Fix
Fixed — EMC Interface now populates item cache eagerly
emcKnownItemswas only populated insidetick(), which runs server-side only. Client queries (Jade, JEI, Tom's, hoppers) foundnull→size()returned 0 → no items displayed.- Added
ensureKnownItemsLoaded()— called fromsize(),isEmpty(),getStack(), andremoveStack()before any cache access. - Cache populates immediately on first access via
Registries.ITEMscan, not waiting for a server tick. - Uses
emcKnownItemsLoadedflag instead ofnullcheck for reliable state tracking.
Fixed — Jade compatibility for EMC Interface
canPlayerUse()changed fromfalsetotrue— some inventory readers check this before accessing virtual items.- Removed
stack.setCustomName()fromgetStack()andremoveStack()— it hardcoded English names and wasn't needed since real Item instances already have correct translatable names via their registry entries. - Added
toUpdatePacket()andtoInitialChunkDataNbt()override to sync block entity data to clients, required by some client-side mods.
Fixed — Custom item name display in Jade
ArcaneTabletItemandOPFuelItemnow extend customItemsubclasses withgetName()returning translatable text components viaText.translatable().getDefaultStack()sets the display name via NBT so creative tab / JEI listings show the correct name immediately.
Changed
- Version bumped from
1.0.7to1.0.8 - Output jar:
emcessentials-reabricated-1.0.8.jar
v1.0.7 — Custom Item Name Tags
Changed — EMC Interface stacks now carry explicit display names
- Items returned by
getStack(slot)now have their display name set viastack.setCustomName(stack.getName())— ensures Jade, WAILA, tooltip mods, and GUIs always resolve the correct item name. - Same fix applied to
removeStack(slot, amount)for extracted items. - Fixes issues where virtual inventory items showed as generic or untranslated names in third-party mods.
Changed
- Version bumped from
1.0.6to1.0.7 - Output jar:
emcessentials-reabricated-1.0.7.jar
v1.0.6 — EMC Interface Virtual Inventory Overhaul
Changed — EMC Interface is now a fully virtual inventory
size()now returnsemcKnownItems.size()— every known EMC item is a slot. No more 54-slot rotating buffer.getStack(slot)dynamically returns the item with a count equal tocachedAvailableEMC / itemEMC(capped at 9999). Stack count reflects exactly how many can be afforded.removeStack(slot, amount)generates items on-demand from EMC — nothing is physically stored.setStack(slot, stack)converts inserted items to EMC immediately.cachedAvailableEMCrefreshed every 5 ticks from adjacent EMC storage viaEMCStorageUtil.getNearEMCStorages().emcKnownItemsrefreshed every 5 seconds fromRegistries.ITEM.- Removed the old 54-slot DefaultedList buffer — inventory is now entirely virtual.
Changed
- Version bumped from
1.0.5to1.0.6 - Output jar:
emcessentials-reabricated-1.0.6.jar
v1.0.5 — EMC Interface + EMC Link Restored
Added — EMC Interface (new block)
- Ported from the Forge
emc-interfacemod by Ofek2608 - No-GUI mechanical block — acts as a virtual infinite inventory backed by EMC knowledge
- Items pushed in: converted to EMC via
EMCUtil.ITEM.getEMC(), pushed to adjacent storage - Items pulled out: generated from EMC if enough EMC exists in adjacent storage via
removeEMC() - 54-slot auto-rotating showcase: cycles through all known EMC items from
Registries.ITEM, refreshed every 5 seconds - 16×48 animated texture directly from the original Forge mod
EMCInterfaceBlock+EMCInterfaceBlockEntityregistered inModBlockEntities.EMC_INTERFACE
Changed — EMC Link reverted to combined Importer/Exporter with GUI
- Restored the 18-slot GUI version: slots 0–8 import buffer, slots 9–17 export request filters
onUseopensNamedScreenHandlerFactory— right-click opens chest GUI- Imports: scans adjacent inventories every 5 ticks for items with EMC value
- Exports: generates items from EMC when request slots are populated
- Full
canInsert/canExtract/addEMC/removeEMC/getMaxEMC/getStoredEMCreflection API calls
Removed
- Previous no-GUI EMC Link rewrite (replaced by separate EMC Interface block)
v1.0.4 — Item Cleanup & Projex Port
Changed
- All item and block textures regenerated via AI-generated assets
- EMC Bridge Terminal now uses a green-tinted Importer texture on all 6 faces (matching Item Alchemy's
emc_importerblock style) - README and CHANGELOG now reference "EMC Essentials Forge Mod" instead of "modpack"
- Version bumped from
1.0.2to1.0.3 - Output jar:
emcessentials-reabricated-1.0.3.jar
v1.0.2 — JEI Fix
Fixed
- Items not appearing in JEI — created a custom creative tab
itemGroup.emcessentials.generalviaFabricItemGroup.builder()and assigned all items and blocks to it. JEI only shows items that belong to at least one creative tab. Now all 4 items and 10 blocks appear in both the creative inventory and JEI.
Changed
- Version bumped from
1.0.1to1.0.2 - Output jar:
emcessentials-reabricated-1.0.2.jar
v1.0.1 — Delta HUD, Power Flowers, Bridge Terminal
Added
EMC HUD Delta Indicator
- HUD now shows
EMC: 1,234,567 (+100 | +100/s)in green for gains - Or
EMC: 1,234,567 (-50 | -50/s)in red for losses - Delta calculated by comparing current sync value to previous (updates every 1s)
- Per-second rate derived from delta (sync interval = ~1s)
- Exposed via
getDeltaDisplay(),getRateDisplay(),isDeltaPositive()inEMCEssentialsClient - Delta text renders right after main EMC value on the same line, same color-aware positioning
EMC Bridge Terminal
- New block
emcessentials:emc_bridge_terminalwith green-tinted Importer/Exporter texture - 18-slot inventory (2×9) visible to Tom's Simple Storage, hoppers, and pipes
- Auto-converts inserted items to EMC using
EMCUtil.ITEM.getEMC() - Pushes converted EMC into adjacent Item Alchemy storage via
EMCStorageUtil - Block entity ticks every 5 ticks to process input and replenish output
- NBT-persistent inventory
- Right-click opens a generic 2-row container GUI
Power Flower Block Entities (all 6 tiers)
- Ticking block entities that generate EMC each tick:
- MK1: 4 EMC/tick, MK2: 12, MK3: 48, MK4: 192, MK5: 768, MK6: 3072
- 1B EMC internal buffer per flower
- Auto-pushes stored EMC to adjacent EMC Batteries/Cables every 5 ticks via
EMCStorageUtil.getNearEMCStorages()andaddEMC() - NBT-persistent stored EMC and tier fields
- Custom
PowerFlowerBlockclass extendingBlock+BlockEntityProvider
Miniature Sun Block Entity
- Ticking block entity scans loaded chunks within 5-block radius every 10 ticks
- Detects Item Alchemy's
EMCCollectorTilevia class name reflection - Applies 10× boost by injecting extra EMC via
addEMC()on each tick - Also boosts
PowerFlowerBlockEntityoutput by 10× directly - Uses chunk-based iteration (
WorldChunk.getBlockEntities()) for reliable neighbor scanning
Block Entity Registration
ModBlockEntitiesclass with registry forPOWER_FLOWER,MINIATURE_SUN,EMC_BRIDGE_TERMINAL- Cached-type singleton pattern (
setType()) to avoid circular initialization - FabricBlockEntityTypeBuilder with multi-block support (6 power flower variants share one type)
Block Assets (10 new)
- Blockstate JSONs:
emc_bridge_terminal,power_flower_mk2throughmk6 - Block models:
emc_bridge_terminal(cube_bottom_top),power_flower_mk2–mk6 - Item models: all 7 new blocks inherit block parent
- Textures:
emc_bridge_terminal_side.png,emc_bridge_terminal_top.png(16×16 green-tinted) - Loot tables: all new blocks drop themselves
- Mining tag:
emc_bridge_terminaladded tomineable/pickaxe
Lang Entries
block.emcessentials.emc_bridge_terminal,container.emcessentials.emc_bridge_terminalblock.emcessentials.power_flower_mk2throughpower_flower_mk6
Changed
- Version bumped from
1.0.0to1.0.1ingradle.properties - Output jar:
emcessentials-reabricated-1.0.1.jar - README.md rewritten with full v1.0.1 feature list including HUD delta section
Fixed
- HUD compile errors in 1.20.1 Yarn mappings:
- Replaced
client.getDebugHud().shouldShowDebugHud()withclient.options.debugEnabled - Removed access to private
reducedDebugInfofield inGameOptions
- Replaced
- Command registration — changed method reference to lambda to match Fabric API's 3-parameter
CommandRegistrationCallbacksignature - Block entity type registration — switched to cached-type pattern (
setType()) to resolve class-loading order issues - Chunk scanning — replaced non-existent
World.getBlockEntities(Box)with chunk iteration viaWorldChunk.getBlockEntities()using reflection - Build chain — upgraded to Fabric Loom 1.15.2, Gradle 9.2.1, JDK 21 to match Item Alchemy 1.3.1's build version
v1.0.0 — Initial Release
Added — Mod Framework
- Fabric 1.20.1 mod project with Fabric Loom 1.15.2, Gradle 9.2.1, JDK 21
fabric.mod.jsonwith idemcessentials, depends onitemalchemy >=1.3.1emcessentials.accesswidenerfor future access widening
Added — Items
- Alchemical Matter — blue gem, uncommon rarity, mid-tier crafting component
- Omnium Matter — purple gem, rare rarity, high-tier component
- Alchemical Catalyst — orange orb, common rarity, base material
- Compressed Philosopher's Stone — green orb, epic rarity, single-use
- All items registered via
ModItemsusing vanilla FabricRegistry.register() - Item models:
item/generatedwith 16×16 PNG textures - English lang translations for all items
Added — Blocks (initial)
- EMC Stabilizer — obsidian-tier blast-resistant decorative block
- Alchemical Ore — diamond-level ore, drops 3–7 XP, needs iron pick
- Deepslate Alchemical Ore — deepslate variant of alchemical ore
- Power Flower — single decorative block, iron-tier, luminance 7
- Miniature Sun — glowstone-tier full-brightness block, luminance 15
- All blocks registered via
ModBlockswith associatedBlockItem - Block models:
cube_bottom_top(EMC Stabilizer, Power Flower),cube_all(ores, Miniature Sun) - Blockstates: single-variant JSONs for all 5 blocks
- Loot tables: all blocks drop themselves on break (survives explosion)
- Mining tags: added to
mineable/pickaxe, ores and stabilizer toneeds_iron_tool - Block textures: 16×16 PNGs for all block faces (generated via Python)
Added — EMC HUD Display
- Client-side HUD overlay rendering player's EMC in top-left corner
- Smart positioning: below Sodium Extra FPS (line 1) and coordinates (line 2)
- Human-readable formatting:
1,234/1.2M/3.5B/7.8T - Server-to-client sync via custom Fabric network packet (
emc_sync/emc_request) - Client requests EMC every 20 ticks (1 second)
- Server reads player EMC from Item Alchemy's
EMCUtil.PLAYER.getEMC()via reflection EMCEssentialsClientclient initializer registered infabric.mod.json
Added — EMC Commands
/emce help— lists all commands/emce get <item>— looks up EMC value viaEMCUtil.ITEM.getEMC()reflection/emce set <item> <value>— saves custom EMC override to config/emce remove <item>— removes a custom override/emce reload— reloadsemcessentials.propertiesfrom disk/emce list— lists all custom EMC entries/emce stats— counts total items and custom entries- Registered via
CommandRegistrationCallback.EVENT
Added — EMC Config
config/emcessentials.propertiesfor custom EMC values- Default config with vanilla reference values (coal: 128, diamond: 8192, netherite: 49152, etc.)
- Load/save with
Propertiesfile format - Auto-creates default config on first launch
- Full CRUD: get/set/remove custom values in memory + persist to disk
Added — EMC Auto-Registration
- Auto-applies custom EMC values from config at startup via
EMCUtil.ITEM.setEMC()reflection - Graceful fallback: logs warning if Item Alchemy not installed
- Validation: checks item IDs exist in registry before applying
- Error-tolerant: skips invalid entries, reports counts
Added — Asset Pipeline
- 28KB placeholder mod icon (128×128 green diamond gradient)
en_us.jsonwith translations for all items, blocks, commands, and container names- Full directory structure:
models/item,models/block,blockstates,textures/item,textures/block,data/minecraft/tags/blocks