EnergyStorage-1.0.5.jar
24 Jan 2026
CurseForge · Hytale mod
A lightweight and extensible energy API for Hytale that provides a unified system to store, transfer, and manage energy across blocks, machines, and mods.
Quick answer
EnergyStorage-1.0.5.jar targets Hytale. Do not install it as a separate client mod. Enable it on the world host—the local server in singleplayer or the dedicated server in multiplayer. No required dependencies listed for this file.
Where it goes
Do not install it as a separate client mod. Enable it on the world host—the local server in singleplayer or the dedicated server in multiplayer.
Put Hytale mods on the world host or dedicated server. Singleplayer runs a local server too; Hytale does not use separate client mods.
EnergyStorage-1.0.5.jar. Change the file and its required mods may change too.
This file does not list any required mods. Do not add a library just because a different file uses it.
This file does not list any required or optional project dependencies. Check the creator notes before changing an existing world.
Before you install it
Built for EnergyStorage-1.0.5.jar. Pick another file and the loader, install side or required mods may change.
Use EnergyStorage-1.0.5.jar. It targets Hytale; another release may target a different game build or dependency set.
This file does not list any required mods. Do not add a library just because a different file uses it.
Do not install it as a separate client mod. Enable it on the world host—the local server in singleplayer or the dedicated server in multiplayer.
Use the “Get this file” button beside EnergyStorage-1.0.5.jar. It opens that exact file at the source.
About this project
Energy Storage API is a lightweight developer‑focused library for Hytale mods. It provides a fully‑featured, component‑based energy system that other mods can easily integrate into their machines, blocks, entities, or custom gameplay systems. This mod does not add gameplay content by itself. Instead, it exposes a clean and extensible API built around Hytale’s official Component systems ECS, ensuring maximum compatibility and stability across mods. Use this library when you want to give your machines the ability to store, receive, or extract energy in a predictable and standardized way.
EnergyStorageBlockComponent using Hytale’s official Component systems ECSEnergyStorageEntityComponent using Hytale’s official Component systems ECSrepositories {
maven ("https://cursemaven.com")
}
dependencies {
compileOnly(libs.jetbrains.annotations)
compileOnly(libs.jspecify)
runtimeOnly(libs.bettermodlist)
//implementation("curse.maven:EnergyStorage-1429355:7515395")
// or
//implementation(files("libs/EnergyStorage-1.0.5.jar"))
}
1. Adding an Energy Component to a Block Entity
Adding Component
"Components": {
"EnergyStorageComponent": {
"EnergyStored": 0,
"MaxEnergy": 80000,
"MaxReceive": 0,
"MaxExtract": 1000
}
}
SolarGenerator.json
{
"TranslationProperties": {
"Name": "items.Solar_Generator.name"
},
"ItemLevel": 10,
"MaxStack": 100,
"Icon": "Icons/ItemsGenerated/Solar_Generator_Block.png",
"Categories": [
"Blocks.Rocks"
],
"PlayerAnimationsId": "Block",
"Set": "SolarGenerator",
"BlockType": {
"State": {},
"Material": "Solid",
"DrawType": "Cube",
"Group": "Stone",
"Flags": {},
"VariantRotation": "NESW",
"Gathering": {
"Breaking": {
"GatherType": "Rocks",
"ItemId": "SolarGenerator"
}
},
"Interactions":{
"Use": {
"Interactions": []
}
},
"BlockEntity": {
"Components": {
"EnergyStorageComponent": {
"EnergyStored": 0,
"MaxEnergy": 80000,
"MaxReceive": 0,
"MaxExtract": 1000
},
"examplemod:solar_generator": {
"ProductionPerTick": 80,
"RequiresDaylight": true
}
}
},
"BlockParticleSetId": "Stone",
"ParticleColor": "#737055",
"BlockSoundSetId": "Stone",
"Aliases": [
"stone",
"stone00"
],
"BlockBreakingDecalId": "Breaking_Decals_Rock",
"Textures": [
{
"Up": "BlockTextures/SolarGenerator/top.png",
"Side": "BlockTextures/SolarGenerator/side.png",
"Down": "BlockTextures/SolarGenerator/bottom.png"
}
]
},
"ResourceTypes": [
{
"Id": "Rock"
},
{
"Id": "Rock_Stone"
}
],
"Tags": {
"Type": [
"Rock"
]
},
"ItemSoundSetId": "ISS_Blocks_Stone"
}
ExampleMod.java
package dev.zkiller.exemplemod;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.logger.HytaleLogger;
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import dev.zkiller.examplemod.generators.solar.SolarGeneratorComponent;
import dev.zkiller.examplemod.generators.solar.SolarGeneratorSystem;
import javax.annotation.Nonnull;
public class ExampleMod extends JavaPlugin {
private static ExampleMod instance;
private static final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
private ComponentType<ChunkStore, SolarGeneratorComponent> solarGeneratorType;
public ExampleMod(@Nonnull JavaPluginInit init) {
super(init);
instance = this;
}
@Override
protected void setup() {
this.solarGeneratorType = this.getChunkStoreRegistry().registerComponent(
SolarGeneratorComponent.class,
"examplemod:solar_generator",
SolarGeneratorComponent.CODEC
);
this.getChunkStoreRegistry().registerSystem(
new SolarGeneratorSystem(this.solarGeneratorType)
);
LOGGER.atInfo().log("Solar Generator component and system registered successfully!");
}
public static ExampleMod getInstance() {
return instance;
}
public ComponentType<ChunkStore, SolarGeneratorComponent> getSolarGeneratorType() {
return solarGeneratorType;
}
}
SolarGeneratorComponent.java
package dev.zkiller.examplemod.generators.solar;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.codec.validation.Validators;
import com.hypixel.hytale.component.Component;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public final class SolarGeneratorComponent implements Component<ChunkStore> {
public long productionPerTick = 80;
@Nonnull
public static final BuilderCodec<SolarGeneratorComponent> CODEC =
BuilderCodec.builder(SolarGeneratorComponent.class, SolarGeneratorComponent::new)
.append(new KeyedCodec<>("ProductionPerTick", Codec.LONG),
(c, v) -> c.productionPerTick = v,
c -> c.productionPerTick)
.addValidator(Validators.greaterThanOrEqual(0L))
.documentation("Energy produced per tick.")
.add()
.build();
public SolarGeneratorComponent() {}
public SolarGeneratorComponent(SolarGeneratorComponent other) {
this.productionPerTick = other.productionPerTick;
}
@Nullable
@Override
public Component<ChunkStore> clone() {
return new SolarGeneratorComponent(this);
}
}
SolarGeneratorSystem.java
package dev.zkiller.exemplemod.generators.solar;
import com.hypixel.hytale.component.*;
import com.hypixel.hytale.component.query.Query;
import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
import dev.zkiller.energystorage.components.EnergyStorageBlockComponent;
import javax.annotation.Nonnull;
public final class SolarGeneratorSystem extends EntityTickingSystem<ChunkStore> {
private final ComponentType<ChunkStore, SolarGeneratorComponent> solarType;
public SolarGeneratorSystem(ComponentType<ChunkStore, SolarGeneratorComponent> solarType) {
this.solarType = solarType;
}
@Nonnull
@Override
public Query<ChunkStore> getQuery() {
// Le système ne tick que les entités ayant un SolarGeneratorComponent + EnergyStorageBlockComponent
return Query.and(EnergyStorageBlockComponent.getComponentType(), this.solarType);
}
@Override
public void tick(
float dt,
int index,
@Nonnull ArchetypeChunk<ChunkStore> chunk,
@Nonnull Store<ChunkStore> store,
@Nonnull CommandBuffer<ChunkStore> cmd
) {
SolarGeneratorComponent solar = chunk.getComponent(index, this.solarType);
EnergyStorageBlockComponent energy = chunk.getComponent(index, EnergyStorageBlockComponent.getComponentType());
if (solar == null || energy == null) return;
long produced = solar.productionPerTick;
long inserted = energy.receiveEnergyInternal(produced, false);
// Console Debug
System.out.println("[ExampleMod] Inserted: " + inserted +
" FE | Stored: " + energy.getEnergyStored() +
"/" + energy.getMaxEnergyStored());
}
}
This library is intended exclusively for developers who want to:
If your mod needs energy, this API gives you a clean, stable foundation.
Project description from CurseForge.
Recent files
24 Jan 2026
17 Jan 2026
17 Jan 2026
15 Jan 2026
14 Jan 2026
14 Jan 2026
Looking for an older file? The official CurseForge project page is in Resources.