#server-plugins-read-only
1 messages · Page 94 of 1
So how would I make it so intellij can search through it?
this just returns a Ref, not a PlayerRef
Universe.get().getPlayer(Uuid)
on the hytalemodding website there is a tutorial that teaches you how to decompile the server.jar
actually works like fully randomly, sometimes it works, sometimes not im trying to pinpoint the issue
make sure to include java after the first set of ```
That's not what I asked for, though. That repository does not contain the source code for the gradle plugin with the id "hytale-mod"
I can just ctrl left click to find usage I think
Hello guys! My "minimap" (M button) is completely blue on my server! I can't fix it? it appears some seconds at the reboot but thats it
is there a map file to delete/cache?
has anyone ever encounter this problem on it's server? thanks
java```
Universe.get().getPlayer(Uuid);
(PlayerRef)ref.getStore().getComponent(ref, PlayerRef.getComponentType());```
where can i find docs for plugin dev?
```java
```
I think it's very limited though, to actually search through everything you need to manually decompile it into an intellij project
Thanks
just run vineflower tru the jar
public static Player getPlayer(Ref<EntityStore> ref, Store<EntityStore> store) {
if (ref == null || !ref.isValid()) {
return null;
}
return store.getComponent(ref, Player.getComponentType());
}
tasks.register<Copy>("copyJar") {
dependsOn(tasks.jar)
from(tasks.jar.flatMap { it.archiveFile })
into("put/the/mod/folder/here/")
}
tasks.build {
dependsOn("copyJar")
}
hey guys! put this in build.gradle.kts so it copies/overwrites the jar file to the mod folder when build 😉
And what do i do with that intellij project?
sorry i though you wentt player
All good
? for what
auto replaces mod in your mods folder
ah
so when you build the gradle project, it automatically puts it into the mod folder and ir overwrites it if its updated
so instead of manually pasting it, it auto does it check check
Is there any way to override?
'something' is not a valid UUID or online player username
For a custom ECS EntityTickingSystem (or for a DeathSystem) query, any ideas why this is throwing an error and not working:
@NullableDecl
@Override
public Query<EntityStore> getQuery() {
return Query.and(Player.getComponentType());
}
// On plugin setup, throws error on registering
this.getEntityStoreRegistry().registerSystem(new CustomSystem());
Throws Cannot invoke "com.hypixel.hytale.component.query.Query.validateRegistry(com.hypixel.hytale.component.ComponentRegistry)" because "query" is null
I've been able to get it working partly with Archetype.empty() as the query, but I'd like to prefilter for the correct entities, and adding components to the archetype object seemed to cause a similar registration error
are you registering it in setup()? If so, move that to start().
Hello guys !
Someone know if the api have an event for mob spawning please?
Or i need to check a livingstock and compare to all livestock/npc/mobs ?
How to give permissions other players to use any commands?
**Hey! **change /help
Is it possible to show only avaliable commands for players? i use luckperms btw
./perm
I suppose there is a way to open public or private servers to play with friends.
Is there a guide to follow?
Player is not a component, but PlayerRef should be
/perm group add Adventure spawn
Doesnt work. Why?
anyone knows if its possible to show a blackscreen to a player for a duration? Like in the sleep animation?
Hello guys, can we create a custom instance ?
Is there a specific damage ECS event? Or would I need to do some custom implementation and extend DamageEventSystem and register it that way with getEntityStoreRegistry().registerSystem(new Class());
/perm group add Adventure spawn
Doesnt work. Why?
look in the /help command which permission /spawn is
./perm group add Adventure *
- what is it? Its all commands?
yup
is there a way to delete all worlds that are instances after a restart?
You say "use any commands" ???
they exsits an offical doc for modding or actually is really about decompile jar?
It was a mistake. Sorry, I don't know English very well
dude idk what I'm doing wrong but it seems like everytime I try to start my server back up again, it gets stuck on Getting Hytale Universe Ready
no players can join either it just says server is booting up please try again in a moment
This should happen automatically. There is a IsDeleteIfRemoved flag or so (likely slightly different, citing from memory)
anyone else getting the 0x00 is an invalid start of a value crash at launch?
No problems, so you need : "hytale.command.spawn.self"
mane why'd they not implement custom windows raaaaah now making custom blockwindow ui is so difficult
What are the best methods to dont have Server Crashes?
public abstract void onComponentSet(@Nonnull Ref<ECS_TYPE> var1, @Nullable T var2, @Nonnull T var3, @Nonnull Store<ECS_TYPE> var4, @Nonnull CommandBuffer<ECS_TYPE> var5);
in onComponentSet, does anyone know what the different between var2 and var3 are? I'm assuming one of them is the old value, but which one?
Incremental changes, lookup logs and continuos testing, i guess
Hell yeah my mod is at 1k downloads
is this the source definition? surely they named the variables in the definition?
this is from the source code
what file?
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package com.hypixel.hytale.component.system;
import com.hypixel.hytale.component.CommandBuffer;
import com.hypixel.hytale.component.Component;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.component.Ref;
import com.hypixel.hytale.component.Store;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public abstract class RefChangeSystem<ECS_TYPE, T extends Component<ECS_TYPE>> extends System<ECS_TYPE> implements QuerySystem<ECS_TYPE> {
@Nonnull
public abstract ComponentType<ECS_TYPE, T> componentType();
public abstract void onComponentAdded(@Nonnull Ref<ECS_TYPE> var1, @Nonnull T var2, @Nonnull Store<ECS_TYPE> var3, @Nonnull CommandBuffer<ECS_TYPE> var4);
public abstract void onComponentSet(@Nonnull Ref<ECS_TYPE> var1, @Nullable T var2, @Nonnull T var3, @Nonnull Store<ECS_TYPE> var4, @Nonnull CommandBuffer<ECS_TYPE> var5);
public abstract void onComponentRemoved(@Nonnull Ref<ECS_TYPE> var1, @Nonnull T var2, @Nonnull Store<ECS_TYPE> var3, @Nonnull CommandBuffer<ECS_TYPE> var4);
}
It's just from the decomp so the variable names can be lost
I can just test yeah
man this ui stuff is so broken man i dont know what im doing wrong
What's wrong?
is there a proper doc for all variables usable in .ui files?
i keep getting the crash
"Could not find document Pages/WarhammerFantasy_CharacterSelector.ui for Custom UI Append command. Selector:
Ref (Of the entity in question), old component, new component, Store (Holding the entity in question), CommandBuffer (Relating to the entity type specified)
What are you trying to do?
should i just wait for NoesisGUI implementation? im having an insane time just trying to get any custom ui element to actually appear
That means the path you are using in the code doesn't match with the path you put it in your resource folder
Anyone knows how the server loads the assets and how we can manipulate them in code? Because there are a lot of classes there: Asset Registry, Asset Pack, Asset Map.
i tried everything
You're just getting the main chunk reference of the chunk regarding a block, individual blocks don't have references by default
You can keep your main ticking system just store it in a map rather than per block
i put it in resources/Common/UI/Custom/Pages
every git repo has this too and uses "Pages/xxxx.ui" in their code
Just get the registry back in the BootEvent, you have to use reflection to modify them, but its possible just fine
I'm just checking if the old component value is greater than or less than the new component value, so that a message can say decreased or increased lol
Item.getAssetMap().getAssetMap().values()
As an example, and just reiterate
I changed the durability of all items this way (With reflection) and it worked properly
Send me a screenshot of you resource folder and the place you add the UI in code
Yeah first param is old second one is new iirc
@fickle pecan
Thanks
Am i missing something or is there no way to load a world from a template? it seems like i have to manually copy the files to the worlds folder if i want to have the same world running mulitple times
It's not too hard when you get the logic
I am excited for noesis though
is there an example for custom ui elements that work somewhere? I've found a couple and nothing works when I implement into my project
how can I remove the death page GUI?
is it better to use maven or gradle when making a plugin?
I can’t wrap my head around the classes, like what is the purpose of Asset Registry, Asset Packs, and Block Type Asset Map. What is the semantic of each one?
Set its TranslationProperties
Anyone know how I register a custom IWorldGenProvider? It's crashing because it can't save the chunks
The registry is the registry, the asset packs contain their own assets, every individual asset type gets its own assetmap
"Item" and "BlockType" are asset types and you can get their AssetMaps which are just dictionaries of strings and the instances in the registry pretty much
IWorldGenProvider.CODEC.register is not working for you?
object GeneratorItemFactory {
fun createGeneratorItem(): ItemStack {
val name = "Generator Hyice"
val lore = "Um gerador especial."
var stack = ItemStack(GeneratorMagicConstants.GENERATOR_ITEM_ID, 1)
stack = stack
.withMetadata(GeneratorMagicConstants.GENERATOR_ITEM_TAG, BsonBoolean.TRUE)
.withMetadata(
"TranslationProperties",
ItemTranslationProperties.CODEC,
ItemTranslationProperties(name, lore)
)
return stack
}
}
This?
Its not metadata iirc its just on the item, every item just has its own translationproperty you can set
Anybody know how to get an entity to follow the player through pathfinding? I know there was the video of the pet lantern npc, but that just seemed to move to the last known player location
What's the difference between PlayerReady and PlayerConnect?
PlayerConnect is when the connection is established and PlayerReady is when their player instance is first spawning
If you want to do stuff like teleportation you would do it in PlayerReady
Am I able to overlay multiple custom animations?
Is there any difference when adding components?
It would be in the role
Shouldn't be but you should use PlayerReady anyway just to be safe
./perm group add Adventure "hytale.command.spawn.self"
Got it, thanks
Erm, no? I feel like I'm being stupid here but I don't seem to have a register method?
One second
Oh, thank you so much, you’re the best. I will go study the code more. Are there other asset types?
Alot more
Don't know them off my headtop though
IWorldGenProvider.CODEC.register
Is just fine for me, its in there
Guys, I managed to make a skeleton of the Hytale server (decompiled Java) then uploaded it to an AI and start asking it things. It instantly find out that it's ECS (I hate it btw) and perfectly navigated me how to do things. I managed to do a features in my plugin for like 5-10 mins... something that I struggle to do for days 😄
So, try it , it helps a lot.
Have you made a CODEC? You need it for the register, it can be empty basically
I can send you my GitHub link
Hey everyone! 👋
I’m Brazilian and I joined this server with the goal of learning more about Hytale mod/plugin development.
I got access to the Hytale source code and assets, and I created a custom GPT on ChatGPT called Hytale AI. Basically, it has access to the source code, which makes it really useful for studying, understanding systems, and even helping with development tasks. It has greatly increased my productivity.
My English isn't very good yet — I'm not fluent and I'm still learning — so sorry in advance if I make any mistakes. I'm here to learn and share knowledge with you all.
Plugin name: Hytale AI
Hello, can we create custom instance ? (delete after leaving, like the forgotten temple)
Hello. Do you guys know how can I make my custom mob rideable? Like, where is the attribute i need to modify in the assets editor
Because the servers keep crashing on me, I play and it kicks me out or when I pause it glitches, I can't pick things up and it kicks me out. I don't know if it's a general error or just a meh game.
Thanks! My world gen isn't working but at least it's not erroring and I can join the server now ! 😄
What part of your world gen isn't working?
Have you made an WorldStructure asset or whatever? They have an internal worldgen that can just read it perfectly fine, its just called Handle
But you need an instance of the HytaleGenerator plugin
NPCMountComponent mountComponent = new NPCMountComponent();
mountComponent.setOriginalRoleIndex(npc.getRoleIndex());
mountComponent.setOwnerPlayerRef(playerRef);
mountComponent.setAnchor(0f, 1.5f, 0f);
commandBuffer.addComponent(npcRef, NPCMountComponent.getComponentType(), mountComponent);
Or are you just straight up chunking it in your own entirely custom WorldGen
you need to add npcmountcomponent to your entity first
I'm just trying to basically start with something simple - add a Wall at X=500 - pastbin/D8S4TS3G
anyone know how can I remove the death page GUI?
Take a look at the DummyWorldGenProvider and DummyWorldGen Its pretty straightforward in there
thank you very much
DummyWorldGen basically has what you need
Hello guys !
Someone know if the api have an event for mob spawning please?
Or i need to check a livingstock and compare to all livestock/npc/mobs ?
RefSystem<EntityStore>
Thank you, i will try this
Make a class that extends that and set your Query to be that of NPCEntity, to check livestock you can get the role back
That a great idea, thank you!
Is there an api for the Suns light emission? 😄
any idea why a teleportation error would occur?
give more info please like logs
I have luckperms working with /sethome and /sethome and I can get players to /tpr and /tpa but the teleportation won't work
is it possible to allow any type of wood for an recipe?
how can I find the specific log? I have the error message in chat
Anyone has issues with mongodb connector and IllegalAccessError classpath issues with servers bundled BSON packages??
I just realised - after adding some logs - my code isn't actually running, am I registering this too late?
Universe.get().getUniverseReady()
.thenRun(() -> {
IWorldGenProvider.CODEC.register(WallWorldGenProvider.ID, WallWorldGenProvider.class, WallWorldGenProvider.CODEC);
var defualtWorld = Universe.get().getDefaultWorld();
if (defualtWorld == null) {
LOGGER.atSevere().log("Default world not found.");
return;
}
var defaultWorldConfig = defualtWorld.getWorldConfig();
var defaultWorldGenProvider = defaultWorldConfig.getWorldGenProvider();
defaultWorldConfig.setWorldGenProvider(new WallWorldGenProvider(defaultWorldGenProvider, 500));
LOGGER.atInfo().log("World generator plugin initialized successfully.");
});
Do components save persistently on their own, or do I have to do something special for them to save?
Just register it as soon as possible in setup
You have to make a CODEC
And you have to register your component if you haven't already
is there anywhere I can read about this?
I'm sort of confused by the CODEC stuff
Codecs are serializers/deserializers
No deserializer/serializer for your component means no saving
so, does that just mean overriding methods within the component class?
does anyone know why my Action isn't working?
Action
public class ActionExample extends ActionBase {
protected String message;
public ActionExample(@Nonnull BuilderActionExample builderActionExample, BuilderSupport builderSupport) {
super(builderActionExample);
this.message = builderActionExample.getMessage(builderSupport);
}
@Override
public boolean execute(@Nonnull Ref<EntityStore> ref, @Nonnull Role role, InfoProvider sensorInfo, double dt, @Nonnull Store<EntityStore> store) {
Ref<EntityStore> targetPlayerRef = role.getStateSupport().getInteractionIterationTarget();
Player player = store.getComponent(targetPlayerRef, Player.getComponentType());
player.sendMessage(Message.raw(this.message));
return super.execute(ref, role, sensorInfo, dt, store);
}
}
BuilderAction
public class BuilderActionExample extends BuilderActionBase {
protected StringHolder message = new StringHolder();
@Nullable
@Override
public String getShortDescription() { return "Example"; }
@Nullable
@Override
public String getLongDescription() { return "Example"; }
@Nullable
@Override
public Action build(BuilderSupport builderSupport) { return new ActionExample(this, builderSupport); }
@Nullable
@Override
public BuilderDescriptorState getBuilderDescriptorState() { return BuilderDescriptorState.Stable; }
@Override
public Builder<Action> readConfig(JsonElement data) {
this.requireString(data, "Message", this.message, null,
BuilderDescriptorState.Stable, "The message to send.", "The message that will be sent to the player.");
return this;
}
public String getMessage(BuilderSupport builderSupport) {
return this.message.get(builderSupport.getExecutionContext());
}
}
No override, one second
json implementation:
Role.json
{
"Type": "Generic",
"MotionControllerList": [
{
"Type": "Walk"
}
],
"Appearance": "Mannequin",
"MaxHealth": {
"Compute": "MaxHealth"
},
"Parameters": {
"MaxHealth": {
"Value": 100,
"Description": "Max health for the NPC"
}
},
"Instructions": [
{}
],
"InteractionInstruction": {
"Instructions": [
{
"Continue": true,
"Sensor": {
"Type": "Any"
},
"Actions": [
{
"Type": "SetInteractable",
"Interactable": true
}
]
},
{
"Sensor": {
"Type": "HasInteracted"
},
"Actions": [
{
"Type": "SendExampleMessage",
"Message": "Example Message"
}
]
}
]
},
"NameTranslationKey": "server.npcRoles.Empty_Role.name"
}
How did you make it work with maven?
How did you register it
I usually prefer gradle, but the working tutorial I found used maven
NPCPlugin.get().registerCoreComponentType("SendExampleMessage", BuilderActionExample::new);
inside of start
Is it possible to show a blackscreen to a player for a duration? Like in the sleep animation?
com.hypixel.hytale.server.core.universe.world.storage.EnitityStore.addComponent(com.hypixel.hytale.component.Ref,java.lang.Object,java.lang.Object)
Ohhh I would like to use gradle but nothing is working for me
I can't really post the link lol, but its hytalemodding dotdev
Guys, where can I find the Java documentation for HytaleServer.jar and where can I find the values in the manifest.json file?
Hi, for a server with maps that need to be restarted, would it be ideal to use instances? And one more question, how do I put the players on separate islands? (for example in Sky Wars)
is there help/documentation for adding/modifying stats of a player
i know hytale uses ECS and how that works but more depth is something i can use
Yea I found it but why aren’t you using gradle though?
hiya, do you know anyone that can help me? I added mods and it made my world disappear (as in the blocks in game), so i went back to the folder, removed the mods and then the world is still invisible, can just see the sky, my hand and the ui.
because I couldn't find anything that used gradle that worked, theres way too much AI stuff around
The "Press F to Interact" is popping up on the entity?
Are you getting an error earlier in your plugin?
I sent you a DM with the link @oblique barn
Yea true, I followed that tutorial but I’m kinda confused, it created the hytale server project but what am I supposed to do with that?
Start? Not setup?
no, but I added an Interactable component to the entity to see if that changed anything but it doesn't, it does show the "press F to interact", but thats because of that Interactable component.
So that just seems like your entity is setup wrong, not the event
idk what part, I tried to make it as barebones as possible
anyone having this teleport error? com.hypixel.hytale.server.core.universe.world.storage.EnitityStore.addComponent(com.hypixel.hytale.component.Ref,java.lang.Object,java.lang.Object)
Try this:
"InteractionInstruction": {
"Instructions": [
{
"Continue": true,
"Sensor": {
"Type": "Any"
},
"Actions": [
{
"Type": "SetInteractable",
"Interactable": true
}
]
},
{
"Sensor": {
"Type": "HasInteracted"
},
"Instructions": [
{
"Sensor": {
"Type": "Any"
},
"Actions": [
{
"Type": "SendExampleMessage",
"Message": "Example message"
}
]
}
]
}
]
},
this is my entity
NPCPlugin npcPlugin = NPCPlugin.get();
TransformComponent transform = store.getComponent(playerRef, EntityModule.get().getTransformComponentType());
int roleIndex = npcPlugin.getIndex("My_Role");
Pair<Ref<EntityStore>, NPCEntity> npcPair = npcPlugin.spawnEntity(
store,
roleIndex,
transform.getPosition(), transform.getRotation(),
model,
null
);
which ai?
Might be a shot in the dark here, but has anyone dabbled in making projectiles apply effects? Can't quite seem to get it (Sorry if this is the wrong channel, discussion seems to be tech support >.>;)
The role in question is whats at issue, probably not your spawning or your action code/registry
Guys has anyone managed to change the damage on mobs? I'm trying to use "SystemGroup" but I'm getting a compilation error saying it's not present in the classpath.
import com.hypixel.hytale.component.system.group.SystemGroup;
@Override
public SystemGroup getGroup() {
return DamageModule.get().getFilterDamageGroup();
}
no luck unfortunately
Are you in creative
Theres a bug where NPCs aren't interactable in creative and you might be encountering that
Yep that'll do it
and it now works, thank you so much, I've been stuck for days
If someone needs, correct import is:
import com.hypixel.hytale.component.SystemGroup;
@Override
public SystemGroup getGroup() {
return DamageModule.get().getFilterDamageGroup();
}
Yeah there is a config setting like that, but unfortunately when I set it in the template it doesnt remember the config when it makes the instance.
Currently I'm spawning it like this:
InstancesPlugin.get().spawnInstance(map.getInstanceName(), hub, new Transform(0,100,0));
I havent found a way to set a config when it spawns the instance
Well somewhere the game server code has to spawn the vanilla temple instances. They work that way
someone knows how open a menu, detect click buttons, add text etc .. ?
uibuilder
the vanilla ones dont work that way for me
check dm's
Odd. I'm very sure I've seen them behave that way in our servers
ty!!
Guys how i can make an announcement every X hours with a clickable link?
HytaleServer.SCHEDULED_EXECUTOR.scheduleWithFixedDelay(() ->
{
Universe.get().getPlayers().forEach(player -> player.sendMessage(Message.raw("My houerly message")));
}
, 1, 1, TimeUnit.HOURS);
you can use automessages
Where i can find it?
curseforge
I don't understand a single thing 😭
Does this work to create an instance of a map that I already own?
WorldManager.clone("skywars_template", "skywars_instance_01")
how to disable picking up items with the F key
cancelling InteractivelyPickupItemEvent using EntityEventSystem<EntityStore, InteractivelyPickupItemEvent> does nothing, adding Hytale:InteractionModule does nothing
InstancesPlugin.get().spawnInstance
is probably the better way to do it
but plugins like SimpleClaims do it even though they do the exact same thing, im not sure how to disable it
are animated textures a thing?
Thank you,btw i read your problem above, good luck.
the amount of hours i spent trying to figure out why SimpleClaims can do it but i cant :(
you could just.... look at the sourcecode for simpleclaims?
it's open source, i can paste the exact same code in there but it doesn't work, i literally don't know how it works
we did and we did exactly what the dev did in simpleclaims. it doesnt work for us tho
can you use dependencies in the code like fasterxml.jackson for reading json files?
THis looks cursed. You sure this message is only displayed to players online or does every player send the message in the chat possibly resulting in thousands of messages at once flooding the chat?
why does it look cursed? how would you do it?
sendMessage is used to display a message to the player, not used to send it as the player
its saying server everything on each item is that normal?
Okay thanks for clarification. Just seemed odd to me looking at it as I'm not familiar yet. But I forgot it would then have to be some sort of command
I'm confused about how I register my CODEC that I made
It stores a float value in the player store
does anyone know how I register it?
you register it along with the component (assuming it is a component)
guys how i can make a clickable link on the chat?
Register it using the entityStoreRegistry, if you want to only add it for players do not provide a supplier. You can inspect ComponentRegistry for more info about the intrinsics.
How do I apply an entity effect (like a health regeneration buff) to a player in a plugin? I have the effect defined in my asset pack, but I'm not sure what API method to call on the Player object to apply it.
I'm confused now, is it registered within the Component class, or is it registered separately in the Main class? (I already have the component registered)
How does one set the displayname / lore of an ItemStack?
getEntityStoreRegistry().registerComponent( ItemModifierComponent.class, "itemmodifier:modifiers", ItemModifierComponent.CODEC );
you always register stuff during plugin setup
I'm following this
guys how i can make a clickable link on the chat?
thats just building the codec; registering happens along with the component as in my previous message
anyone knows how the mounts work ? when I am on the mount, which physic/movement settings are applied, the mount's or the player's ?
Ah now I see, we meant different registration actions. I dunno where to put the codec, if yours is the best practice then do it. I thought you wanted to register your component to the entityStoreRegistry in order to make the data actually available to entities.
Hello Guys!
Does anyone know how to put signature skill into tools? Like add the progress bar without changing into a weapon
i am really stupid where do i have to put this
Can someone validate that due do how the assets are loaded its not currently possile to change the color of a lighting asset?
is there a function to send log commands?
to the player in game ?
no, server level
gotta have a logger as such
private static final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
LOGGER.atInfo().log("logging");
Does anyone know why the PlayerReadyEvent wouldn't be firing? Like.. Just isn't working at all. I am registering with within setup:
eventRegistry.register(PlayerReadyEvent::class.java) { event ->
println("Hit player ready event!") // Doesn't log
val player = event.player
player.withRef { playerRef ->
miningTierService.setDisplayHud(StatDisplayHud(playerRef), player)
}
}
In your plugin : getEventRegistry().registerGlobal(PlayerReadyEvent.class, PlayerReadyListener::on); and i made a class with
public class PlayerReadyListener {
public static void on(PlayerReadyEvent event) {}
}
Is it possible to break blocks as quickly as in Minecraft with efficiency 5 and haste 2? I'm looking for fast mining for a prison mod.
In UI what is the field for a text box? I've forgot and can't find it anywhere
Pretty much if you get really gassy you can do it at the speed you desire
I haven't looked into blocks but if they have a durability stat then most probably yes
Thanks, that worked. What is the difference between register and registerGlobal?
not sure if you can directly modify per instance pickaxes but they have gather power on different block types
"Tool": {
"Specs": [
{
"Power": 1,
"GatherType": "SoftBlocks"
},
{
"Power": 0.5,
"GatherType": "Soils"
},
{
"Power": 0.05,
"GatherType": "Woods"
},
{
"Power": 0.5,
"GatherType": "Rocks"
},
{
"Power": 0.5,
"GatherType": "Benches"
},
{
"Power": 0.17,
"GatherType": "VolcanicRocks"
}
],```
You could definitely just make separate variants for faster pickaxes using only the asset editor if that works for you
^this
hey does anyone know if NPCs or portals exist? for teleporting players to a world
Okay, thank you very much for your answers, I'll look from there
PlayerReadyEvent is a keyed event, if u dont use registerGlobal u dont listen all event
guys how i can make a clickable link on the chat?
Interesting. Okay, cool. So would the key be a UUID?
For server plugins you can look into getting the ItemToolSpec off your held item if you want to implement it programatically. I'm not sure how you get this from the players hand or otherwise, but I'm sure other people can help you out with that part
no idea, can't even select the text from what i see
does anyone know how to apply a config to an instance?
cause you can spawn one just with this
InstancesPlugin.get().spawnInstance("instance_name", returnWorld, new Transform(0,100,0));
I tried to change to config of the template world, but that doesnt carry over to the instance
so i also tried something like that:
worldConfig.setDeleteOnUniverseStart(true);
worldConfig.setDeleteOnRemove(true);
but I havent found a way to set this config when spawning an instance
i saw a server had it
i can attach components to the Server right?
If you already have the config of an instance world you can call makeWorld in universe
ctx.sendMessage(
Message.raw("Flight " + state + " for mount! ")
.insert(
Message.raw("[Help]")
.link("LIN HERE")
.color("#00FF00")
.bold(true)
)
);
That function is practically a helper function, it just reads the instance config, does some copying and config setting, then calls universe.makeWorld
apparently this is how
how to teleport a player to other world's position?
correct me if im wrong, right now im trying to register a component (FactionRegistry, it holds all registered factions read from json files) on Universe level (server) is this correct? if so how since i cant find registerComponentType
cool, but where i should put this?
if someone know please ping me with some example code if possible
Thats incorrect, what Component type is it, <EntityStore> ?
Hey! Did anyone find a way to mess with jump height?
well uhhh just a normal java class right now...
the goal is to have a place where i can access all these faction types.
The MovementManagerComponent with a MovementConfig
Then a component is not good for that, store it in a config, components are used for per entity/chunk sort of mechanisms
How do I install mods on my server? Just uploading them to the server, or do they have to be added to my game and the server?
If you want to store global information just do it another way
Havent tried yet, but entity positions are updated via TransformComponent. Maybe you find a player system that does meddle with that?
ill send a dm to help
i see, can you generate a config when the server loading then?
oop dms off
You can generate whatever files you want, registering to the world if you want is a slightly different process
You can just make a new Config and save it on stop and get it on setup
any resources on this?
Do you have a fixed set of factions?
Be careful with an account @nova mesa is trying to make you download a mod that its a malware dropper
i can add and expand new factions by editing and adding json files in my resource folder
I'll have a look, thanks!
Has anyone discovered a way to detect when the player has finished eating something?
Whoever told me to just use AI to write documentation is a Genuis
Yeah, sry no idea what you try to achieve other than storing data.
I forget who you are, but if you are reading this. Thank you I almost got docs for half the stuff in the games code
that is what i want to achieve 😭
i want to store it on server level so i can access it in commands or systems
how can I make a custom gui open when I use a block with F, I am getting lost in the diference between a root interaction and an interaction, do I need to make both? one or the other? thanks
Is the decompiled source already available or do we still have to decompile ourselves?
I just see that you want to add and expand factions via json resources. Storing data is not reading data 😉 . Though I gotta admit that I havent tried working with resources other than .ui-Files yet.
Ourselves
you must decompile it yourself here is a handy tool to do it easily with a guide github com/HytaleModding/patcher replace space with period
Bummer. But for what I've tested so far, the code seems well structured for ai agents to write mods 😄
Thanks!
I got WindSurf to do it
I asked an AI. It gives me this one. It should work:
// 1. Get the destination World object
World targetWorld = Universe.get().getWorld(targetWorldName);
if (targetWorld == null) {
// Handle invalid world
return;
}
// 2. Get the player's current rotation (Optional, but good for smooth transitions)
TransformComponent transform = store.getComponent(playerRef, TransformComponent.getComponentType());
Vector3f currentRotation = transform != null ? transform.getRotation() : new Vector3f(0, 0, 0);
// 3. Create the Teleport Component
// There is a static factory method specifically for players in Teleport.java
Teleport teleportComponent = Teleport.createForPlayer(
targetWorld,
targetPos,
currentRotation
);
// 4. Attach the component to the player
// The TeleportSystems will detect this in the next tick and handle the transfer
store.addComponent(playerRef, Teleport.getComponentType(), teleportComponent);
}```
I am successfully using AI to write mods and its especially helpful to browse the decompiled server and explain how things work, as there is no docs
Yeah, without the docs it's taking so much time to just figure out how things are implementd.
thank you so much.
Yeah. I do exactly same thing. I decompiled the java code and gave the skeleton to gemini. It work like a god 😄
java.lang.NullPointerException: Cannot invoke "com.hypixel.hytale.component.query.Query.validateRegistry(com.hypixel.hytale.component.ComponentRegistry)" because "query" is null
I'm not sure what I should be doing for the query method
I hope it works 🙂
samee errorr
@Nullable
@Override
public Query<EntityStore> getQuery() {
return ReputationComponent.getReputationComponentType();
}
this is what I currently have
lets take this for example in the mainPlugin
Setup()
{
var data = [ { "humans", ["big", "medium", "Small"] }. { "elves", ["big", "medium", "Small"] } ];
SomeStorageComponent storage = new SomeStorageComponent(data);
Universe.AddThisStorageThing(storage) // now i can access this on other classes
}
does this clear it up
as long as the coding agent has acccess to the decompiled server it can piece things together fairly well. if it doesnt have that its left guessing because none of this stuff is in its training data
i know how to fix
I am using Codex CLI
Claude had a few hickups. It was on it's way to write an entire velocity measurement system for the player entity to check when the player "jumped". Seemed pretty wrong to me
I would've used that but I'd have to pay and rn I'm a Brokie.
Yeah, Gemini actually does it pretty well. It handle ECS quite good, it understand that hytale has different thread for worlds and uses world.execute and so one 😄
Also, claude permanently tries to kill java.exe instead of the server task...
im just trying to save data. reading isnt the scope of my question
The problem is that it uses 400-500k tokens per request and it's kinda expensive ... :X
well as usual vibe coding doesnt work and you have to be directly involved. I think just expecting it to know everything and not read the code yourself or write any code yourself is not going to work. do AI assisted not vibe.
You can make any file you need, its just java, there is a built-in
withConfig
Method that you can specify in your plugin
It returns a Config<T> of the object you want to save, you need to make a codec though
Is there a mod that changes day / night cycles? Not to real life and such but rather I can program night say being 15min and day being 45min and such? I kept looking on curse I saw a lot of time mods, but none that did that it seemed.
100% This is how AI was really meant to be used, to explain and explore so we can just do the work right away and easier.
If you do not need it or care about the ingame system you can literally just save a file, do you know how to save a file in Java?
just made a plugin/lib for easy coloring chat messages with all the default minecraft color codes & formatting (plus monospace and no strikethrough because its not in the game yet) it also supports hex color codes, gradients with unlimited colors, a built in rainbow color code and links also it works in chat with color codes
Aha so you want to be able to read the resources you previously stored! But there's pitfalls. Universe is a plugin you cannot modify yourself. Yes, you need to register your custom component to the component registry. But for what type should the data be available for? EntityStore? then register the component via the entity store registry. All players? Then you must make sure the component can only be applied to PlayerRef (since Player is not really a component as I've learned so far). I bet the loading of resources occurs during server startup. Some resources can even be tampered with at runtime causing a hot reload. But that's all I know so far.
the players already have a factioncomponent, which will be set in a charactercreation ui. i want to use this storage to fill in the UI for possible option to choose from and use it in systems for calculations
public final class FactionComponent {
public final String factionId;
public FactionComponent(String factionId) {
this.factionId = factionId;
}
}
What is ReputationComponent ?
It must implement Component<EntityStore> then and provide a ComponentType best done via your JavaPlugin
This is not set up as a proper component
i am not there yet 💔
What is your problem right now
A component could look like this:
object CombatStatistics:
def getComponentType: ComponentType[EntityStore, CombatStatistics] =
CombatRecorderPlugin.get.getCombatStatisticsComponentType
case class CombatStatistics(
damageDealt: Float,
startOfCombat: Instant,
lastCombatAction: Instant
) extends Component[EntityStore]:
/** Get the amount of damage dealt per second in combat.
* @return
* DPS
*/
def dps: Float =
assert(startOfCombat != null, "startOfCombat is null")
assert(lastCombatAction != null, "lastCombatAction is null")
val duration =
Duration.between(startOfCombat, lastCombatAction).getSeconds.toInt
damageDealt / duration
/** Simply update the combat statistics.
*
* @param value
* a tuple of damage dealt and the last combat action
* @return
* updated copy of the combat statistics
*/
def +(value: (Float, Instant)): CombatStatistics =
val (damageDealt, lastCombatAction) = value
this.copy(damageDealt = damageDealt, lastCombatAction = lastCombatAction)
Why are you ChatGPTing all of this nonsense
a way to save my resources during startup at a place where i can access them globally
im now figuring out the config
anyone having this teleport error? com.hypixel.hytale.server.core.universe.world.storage.EnitityStore.addComponent(com.hypixel.hytale.component.Ref,java.lang.Object,java.lang.Object)
put them inside your resources directory. if your project is structured like this:
main
- java
- resources
This is not the full error
i will refer to my previous pseudo-code, for testing purposes its a Map set in Setup(), that Map i want to, according to swipe, put in a config so i can decode it runtime using a codec.
youre focussing too much on the parsing and file location of the json, at least thats what i'm feeling
package org.pizza.data;
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.component.Component;
import com.hypixel.hytale.component.ComponentType;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nullable;
public class ReputationComponent implements Component<EntityStore> {
private static ComponentType<EntityStore, ReputationComponent> reputationComponent;
public static final BuilderCodec<ReputationComponent> CODEC;
static {
CODEC = BuilderCodec.builder(ReputationComponent.class, ReputationComponent::new)
.append(
new KeyedCodec<>("Reputation", Codec.FLOAT),
(component, value) -> component.reputation = (float) value,
(component) -> component.reputation
)
.documentation("Player reputation value from -100 to 100")
.add()
.build();
}
public ReputationComponent() {
super();
this.reputation = 0;
}
private float reputation;
@Nullable
@Override
public Component clone() {
try {
Component component = (Component) super.clone();
return component;
} catch (CloneNotSupportedException e) {
e.printStackTrace();
return null;
}
}
@Nullable
@Override
public Component cloneSerializable() {
return Component.super.cloneSerializable();
}
public float getReputation() {
return reputation;
}
public static ComponentType<EntityStore, ReputationComponent> getReputationComponentType() {
return reputationComponent;
}
public void addReputation(float reputation) {
this.reputation += reputation;
this.reputation = Math.clamp(this.reputation, -100, 100);
}
public void setReputation(float reputation) {
this.reputation = reputation;
}
}
Are you registering the component and saving the type before you register the system that references it
Because if you didn't register the component, the systems gonna try to pull the type, then fail because its not made yet
looks like codec implements a JsonDecode
how i can spawn image like hologram ?
just a float
Not you
But in other news did you register the component before you register the system
Not the system then component ?
any good plugin for shop/store
@civic zephyr can i dm you since somethin in my class triggers automod
Go ahead
did you ever find out why SimpleClaims works and why ours doesnt?
no
What is it
the event fires, and the logic works i just can't cancel it, it just straight up ignores it, nothing i can really do about it
What event
InteractivelyPickupItemEvent
You want to turn off item pickups? Like from the ground?
yes
You don't have to cancel the event im not sure if thats even implemented properly
we have been trying to figure out how to stop people from picking up rubble and berrys from bushes etc. if we cancel InteractivelyPickupItemEvent, the rubble still disappears and the item just drops to the ground. SimpleClaims has achieved this but if we try to do it the exact same way, it doesnt work lol
Oh just cancel the packet
how
I think?
A packet watcher and zero out the data
i didnt see SimpleClaims canceling any packets
Are you unsure?
actually I think I know what happened, maybe
I did register the component before the system, but there are commands and events before that reference the component
Cancelling InteractivelyPickupItemEvent still drops the item so you must have misread what they are doing
oh nevermind I just realized the problem lol, I registered the codec after the system
idk i can send you the gh repo if you want
This is unnecessary when Ive just told you a solution
Do you want to do it exactly like them or do you want to solve the problem
They use the same method as MoreEvents
i feel like we don't have to do something really hacky for that, not that it's wrong, it's just that there's definitely a simpler way and we're just missing something
MoreEvents provides the interactions as cancellable events instead of you having to override the class registry yourself
i wanna understand why simpleclaims works but mine doesnt. i dont actually NEED to achieve it, i just wanna understand it
I showed the SimpleClaims owner how to do it
which is?
solved this problem just an hour ago
You register a class that takes control of the interaction instead of the default Hytale server class
The problem is that this effects the whole server so two plugins cannot both do it
I solved it finally. I did register the component before, but I also registered the component codec after the system, so I think that was the issue
yeah with public class PickupInteractEventSystem extends EntityEventSystem<EntityStore, InteractivelyPickupItemEvent>
MoreEvents mod turns this into a wrapper that makes them cancellable events just like BlockBreak
hi, Could someone tell me if there is a method to obtain the player's eye position?
anyone able to help me develop a custom server?
You aren't understanding
That's how you do it once you have MoreEvents installed
im really not lmao
If you install the mod MoreEvents you can cancel pickup and gather exactly like that which is why the wrapper exists
Wdym? Like where they are looking
pickup event is not canceled correctly at the moment, but if you need to cancel the interaction on F, it is possible to do so
ohhh
thanks guys ❤️
All the other ways to cancel it result in one plugin owning the packet or interaction
Sorry if I say something nonsensical, I speak Spanish.
I want to get the block that a player is looking at.
when do you wanna get this block? after any certain action? or just constantly?
TransformComponent transform = player.getComponent(TransformComponent.getComponentType());
Vector3d eyePos = transform.getPosition().add(0, 1.62, 0); // Eye height
Sure, that 1.62 is if he's standing, but what if he's crouching?
but that depends on the player model being the standard one
only when I need it, in a non-constant method
ah ok got you
well, you could check if the player is crouching and add a different value (1.27). But, since you want to know which block the player is looking at, I'll check if there's a different way to do that directly
im confused. do you want to get the height of the eyes or the block the player is looking at?
Of course, I wanted to know if there was a native solution, so I wouldn't have to invent a method that isn't 100% effective.
There should be a raycast right?
I want to get the block he's looking at, but that also depends on whether he's crouching or not, since by adding 1.62 I could be aiming at a different block
If the question is like xd
Does anyone know where I could look for some methods / settings that would could blur the vision of the player? Something with Camera probably
We're most likely require a shader unless they already have a shader for blurring
*would
Check fiverr
People are there rendering the service
Do you happen to know any "shaders" they have so I could take a loot at those? I have no idea about rendering (in general) so I am not sure what I should look for
Ah there is Shader
Guys, i need help
nvm then, Ill find my way around
There is a list with all props of CustomUI?
MovementStatesComponent movementStatesComponent = store.getComponent(playerRef, MovementStatesComponent.getComponentType());
var movementState = movementStatesComponent.getMovementStates();
There are a bunch of things in there
yes, I think your best bet is checking in the animation if the player is crouching ot not and adding a different value in each case, then call the raycast function.
I don't know how it's done in hytale. I've done it in some game engines but depending on the engine it can be quite complex. But full screen post processing shaders are usually the "simpler" ones.
I made a very simple mod that hides teleporters on the map and changes the teleporter UI to have a text input for target warp to prevent portal discovery. It's on my github at nickt128/hytale-plugin-hidden-teleporters
Waiting on curseforge to approve
anyone know why the #1 thing players ask me is "why cant i break trees" [without getting kicked]
Probably because when the tree falls down it spams the server
no like, while they're hitting the tree
No idea then I just remember getting kicked a lot when I full broke trees on launch day
Where do I go to set up a server and do I need a separate game license to do so
You can register the server using your player license, unless you're going to run a ton of instances you don't need a separate one
Just uh google the rest though
I don't know if it will work, but here's the code.
private static Vector3d rotationToDirection(Vector3f rot) {
double yaw = Math.toRadians(rot.getYaw());
double pitch = Math.toRadians(rot.getPitch());
double x = -Math.sin(yaw) * Math.cos(pitch);
double y = -Math.sin(pitch);
double z = Math.cos(yaw) * Math.cos(pitch);
return new Vector3d(x, y, z).normalize();
}
public static Vector3i getTargetBlock(
Ref<EntityStore> ref,
Store<EntityStore> store,
World world
) {
TransformComponent transform = store.getComponent(ref, TransformComponent.getComponentType());
MovementStatesComponent movementStatesComponent = store.getComponent(ref, MovementStatesComponent.getComponentType());
double eyeHeight = movementStatesComponent.getMovementStates().crouching ? 1.27 : 1.62;
Vector3d origin = transform.getPosition().add(0, eyeHeight, 0);
Vector3d direction = rotationToDirection(transform.getRotation());
Vector3d point = origin.add(direction);
Vector3i blockPos = point.toVector3i();
Log.debug(blockPos.toString());
return blockPos;
}
Is Diablo 2 and or PoE style items in the scope of what is coming to the base game or should I look at making my own plugin?
Does Hytale Have npcs That I can have a teleport on right click to another world?
you don't need a separate license. You can either set up a server through the in-game menus (though idk exactly waht buttons to click) or set up a server on the cloud in dedicated websites
Is there an possibility in the InteractivelyPickupItemEvent Event's components to get the type of block the player interacted with?
how do i setup a mysql in my plugin?
There is a way to change the way the single thread of each world run every tick?
does anyone know where the block breaking speed component is? I cant find it
I'm looking to create a plugin that change the way a single world run to use multiple thread instead of a single one.
for NPCS do I need a plugin / mod for this?
Does anyone know what the path to an image is from java when trying to set an AssetPath for an AssetImage in the ui from java?
Is there a plugin that fixes the rendering of NPCs/enemies and blocks?
I have Windows 11 with a 5th generation Ryzen 3 processor, and I can only see them when I'm very close.
If anyone is working on a Server Hop mod, Please, Inventory Transfer is a must have!
How to set the display name / lore of an item stack?
Guys, i need help!
What is this?
- Failed to request authorization grant: HTTP 403 - invalid token
Is it possible to disable collision between players like so they can stop pushing each other?
in console use /auth browser
vo
anyone know how to add permissions to a command so that everyone can run it?
this.requirePermission("permission_here")
Does Hytale Have NPCS Or Portals That I can Config to allow players to teleport from world to world
Is there a way to activate a root interaction via java
I want to prevent NPCs from dropping loot on death. Anyone here able to help me out?
403 is permission denied. Did you authenticate?
yeah somwehat similar
what about
requirePermission(HytalePermissions.fromCommand("your_command_name.self"))
Having trouble following the example here: hytalemodding [dot] dev/en/docs/guides/plugin/block-components
I've copied the all the code from the documentation, changing only names of classes, but am getting Cannot invoke ... because "query" is null error.
The main plugin class uses the following setup:
protected void setup() {
instance = this;
this.inventoryNodeComponentType = this.getChunkStoreRegistry().registerComponent(InventoryNodeBlock.class, "InventoryNodeBlock", InventoryNodeBlock.CODEC);
this.getChunkStoreRegistry().registerSystem(new InventorySystem());
}
And InventorySystem (which extends EntityTickingSystem) has the following query:
@Nullable
public Query<ChunkStore> getQuery() {
return Query.and(BlockSection.getComponentType(), ChunkSection.getComponentType());
}
I have tried to review any mentions of this error in discord, but can not find a good direction to move in.
-Edit-
The fix was to add EntityModule and BlockModule as dependencies in my manifest.json to ensure proper load order.
"Dependencies": {
"Hytale:EntityModule": "*",
"Hytale:BlockModule": "*"
}
Anyone here able to help me sort out a connection issue?
The indifferentbroccoli docker image is likely the easiest way, given the readme I am sure GPT can direct you to get docker running
Why does that mean a docker image is not a valid option?
anyone has skywars/bedwars plugin?
Bud, I don't know what your on about. I suggested GPT because the question was so vague I assumed you are not very linux capable, and docker is the fastest way to get a server running
Hi, can someone tell me how can I start making plugins?
you kinda ate with this one, so real
I've just started and found the hytalemodding[dot]dev website to be a great resource
how do i disable the hytale built in world backups, my server is almost over 100gb after all the backups the game takes... wild
Thanks
you can manually set the backup frequency
by default it should be about one backup every 30 minutes
i set it to hold a max of 1 backup with the jvm flags and it just doesnt care
okay that's a huge problem
yeah it keeps like 10 backups max by default when its supposed to only be 5 according to hytale
my server alone is almost 13gb, now that + 10 backups
Hi everyone, could you tell me how I can get an API? I really want to start making plugins for my server already 🙂
hola alguien en español que me pueda ayudar
Another question. What's the difference between a plugin and a mods that are made with asset editor?
And do plugins, allow me to edit the gui of the game?
A plugin is written in Java/Kotlin/whatever JVM language.
Yes, they do.
The asset editor just produces JsonFiles (raw data assets)
Its bad, when your server Storage hits 100GB after 24 hours of it being online just purley from backups
You have to download the server and decompile it. You can also look up on the internet as there should be some resources on how to get started as of rn
Hey does anybody know how to run a root interaction on a player in plugins?
it'd be a huge help
After browsing through the API, it turns out that TargetUtil.class exists. getLook()
Deutsche hier die sich bisschen auskennen gerade im Bereich UI?
Minimal, worum gehts denn genau?
Does onPlayerInteract still not work? Where can I follow the game's updates and fixes?
Anyone working on anything for an rpg server?
paso algo ? no te deja entrar? pruea al de mi bio
Yeah
Does anybody know how to make a plugin run a root interaction on an entity?
don't ask a help channel for handholding through a 40 minute process then bud, just go do it
if you have specific questions I am sure people will answer
yep, I can only agree with that. don't want a second Ni8mare
@stoic plaza what can i do this?
:(((
When does the server crash happen?
Work for what?
No clue but you might have to intercept TransformComponents in EntityTickingSystem I guess
Is there a simple way to pull the Entity Names not just UUIDs?
I think you can modify wsl config file to fix the nat issue
Search this on google
[wsl2]
networkingMode=mirrored
dnsTunneling=true
Interaction with blocks
players telling me their animals don't grow, are they supposed to in vanilla?
What are you working on?
what kind of interaction are you trying to intercept I made a mod that adds some extra ones as cancellable events
Right-click or left-click on an item; currently, I can only do this by creating a custom item through the assets
Im making an ability system overhaul
Hey Does anyone know if A NPC plugin or Mod that allows players to click a NPC to teleport to a world? or brind up a GUI menu for a teleport
2026/01/22 02:10:07 deprecated: golang org/x/oauth2: Transport.CancelRequest no longer does anything; use contexts
2026/01/22 02:10:07 error fetching manifest: could not get signed URL for manifest: could not get signed URL: Get "
release.json": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Oh cool
I don't think you can do anything on right-click but left click and f to interact you can modify
@Override
protected void execute(@NonNullDecl CommandContext commandContext, @NonNullDecl Store<EntityStore> store, @NonNullDecl Ref<EntityStore> ref, @NonNullDecl PlayerRef playerRef, @NonNullDecl World world) {
Player player = (Player) store.getComponent(ref, Player.getComponentType());
CharacterSelectorUIPage page = new CharacterSelectorUIPage(playerRef);
// uhm i need commandbuffer
player.getPageManager().openCustomPage(ref, store, page);
}
how do i access commandbuffer here? i need it to add a component
Anyone know an alternative to player.getPlayerRef()? It is depreciated, but i need access to it for an event im subscribed to.
Essentially: im trying to use the player ready event to set a custom GUI to the player, however i only seem to be able to call event.getPlayer(), and there does not seem to be any other way of getting the player ref
Both are stored in Store<EntityStore> if i'm not mistaken, so you can also query it by Ref<EntityStore>
ah wait a sec
Is HytaleKit faking download numbers? It seems to be a delayed mirror of curseforge?
Edit: Yeah seems like a AI Site mirroring CurseForge and illegal stealing peoples work
Wait, how would i reference it like that with an event?
I'm looking for a programmer to help me with my project; several of us are working on it. If you're interested, contact me.
Could this help?
event => {
// retrieve necessary player entity references
val player = event.getPlayer
val playerEntityRef = event.getPlayerRef
val componentStore = playerEntityRef.getStore
val playerRef =
componentStore.getComponent(
playerEntityRef,
PlayerRef.getComponentType
)
// add the combat recorder HUD to the player interface
val combatRecorderHud = CombatRecorderHud(playerRef)
player.getHudManager.setCustomHud(playerRef, combatRecorderHud)
}
!! sweet!!! thanks 😄
I tried event.getPlayerRef but i didnt see it, i will doublecheck though.
...... nvm im just blind.... XDXD 🤦♂️
Depends on the event you're using. I used PlayerReadyEvent
How ? Interaction event not work
'Failed to apply CustomUI HUD commands' anyone know to fix this problem when connecting to the server?
Maybe a problem with the selectors?
What's that?
How do you apply your hud?
I have no idea what those are. I just play
server you're trying to play on has an issue
its up to them to fix it I think
Oh, I guess a mod/plugin is corrupted
But the current UI templating is a real pain to work with as it prevents players from joining servers when some files couldn't be parsed
I just wish it was more verbose and actually said what the issue/failure is validating custom ui
UI in hytale = head pain af hahaha
Genau!
Deutsch?👀
Fließend
This helped me hook my hud into the event properly 😄 thanks so much!
That depreciation warning was driving me nuts!
Glad I could help. Happy coding!
does anybody know how to run something delayed? something simple from a plugin like the bukkit runnable and runTaskDelayed if I remember correctly
You could use an executor service to run scheduled tasks
I uninstalled Wayfinder minimap mod and fixes it
@somber trellis Here is my script i used to run a delayed hud reset
player.getWorld().execute(new Runnable() {
@Override
public void run() {
player.getHudManager().setCustomHud(player.getPlayerRef(), new MyHUD(player.getPlayerRef()));
player.sendMessage(Message.raw("UI HUD Shown"));
HytaleServer.SCHEDULED_EXECUTOR.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
player.getHudManager().setCustomHud(player.getPlayerRef(), new MyHUD(player.getPlayerRef()) {
@Override
protected void build(@Nonnull UICommandBuilder uiCommandBuilder) {
}
});
}
}, 15, 15, TimeUnit.SECONDS);
}
});```
lemme check it out
oh damn this is perfect
lemme try it out
Specifically, this section here:
HytaleServer.SCHEDULED_EXECUTOR.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
player.getHudManager().setCustomHud(player.getPlayerRef(), new MyHUD(player.getPlayerRef()) {
@Override
protected void build(@Nonnull UICommandBuilder uiCommandBuilder) {
}
});
}
}, 15, 15, TimeUnit.SECONDS);
Magst du mir kurz per DM Mal schreiben?:) bitte bitte 😅
im so glad im almost done with this chat color library
i've been fighting with trying to make a chat listener and it was so much more simple than what i was doing
xD It always is once you figure it out! 😛
fr
musst leider zuerst meine Anfrage annehmen
i just want color codes to parse in chat and bro 17 HOURS for 1 class and i finished literally everything else in an hour
I've create a schematic loading plugin that allows to paste minecraft schematics within hytale.
Wish we could post images..
Anyone know if tool types are defined in code and need a plugin or not?
Hey I am trying to solve the same problem were you able to find any fix?
i couldnt find a single usage of PlayerChatEvent in the entire HypixelServer jar
i was having an aneurysm
One second, i will send you a snipplet i used for day 1 tpa requests 🙂
okay 🙂
uhhhhh, its trying to say my snipplet is an advertisement....??
ughhh.... use pastebin dot com slash CGDEzDeT
Its working!
Thanks!
Np 🙂
This discord server really does not like letting you post code snipplets xD
@sage mango So i am unable to post the code snipplet because their bot is trying to say im advertising.
So i had to post it on pastebin.
I cant even post a pastebin link, so goto pastebin dot com slash CGDEzDeT
thats okay yes I can do that or you can send me a meessage dm
CustomUIEventBindingType.Activating,
"#FindDuelButton",
new EventData().append("@Action", "find")
);```
when i press the button getting ***"Failed to gather CustomUI event binding data"***
right way or cant use string on append()?
Are you missing the action field in the .ui?
Welp, i gtg guys. Good night and happy scripting 😄
Do I need it? My idea is to execute a different function depending on the button I press*, and I thought about handling it with actions (which I clearly don't have in the UI).
I havnt touched buttons much yet lol. So sadly, i do not have the answer right now XD
I would put a GUI modding doc reference, but this discord hates links 😛
I’m looking for a developer for a Community FFA Server project, Kit Rush, etc.
how do i make my custom bucket where it will pick up lava
i hope im asking in the correct place
how to get free hytale
Does anyone know how to connect with friends without following a list or changing router settings and such?
Anyone knows how to build a simple startup plugin? I'm trying to build a simple working plugin that replace one class and I can't get it builded correctly...
im tryna play on someones server ??
I tried to follow this wiki instructions but without succes: 09-bootstrap-early-plugins
Potential bug I've found. Asking here first because I'm not sure if this is intentional behavior.
I have a custom block src/main/resources/Server/Item/Items/SacredSiteMarker.json. I have defined a custom BlockType.State.Id that I have registered via my plugin, class SacredSiteMarkerBlockState extends BlockState implements TickableBlockState. I also have a custom interaction, set up via BlockType.Interactions.Use.Interaction[0].Type. In the Java behind this interaction I get my custom state via world.getState(x, y, z). I check via if (state instanceof SacredSiteMarkerBlockState) . This works fine until I add the following to BlockType in the JSON.
{
//...
"BlockType": {
//...
"BlockEntity": {
"Components": {
"BlockMapMarker": {
"Name": "Sacred Site",
"Icon": "Coordinate.png"
}
}
},
//...
}
When I add this little section, I get the Icon on the HUD now, but my state is now null. Is this intended behavior?
Please ping me if you have insight into this
I have my own server. I want to get it running out of my house for friends and family
this is what i have idk if its right i cant seem to get it to work plz help
{
"Icon": "Icons/ItemsGenerated/Lava_Bucket_Empty.png",
"IconProperties": {
"Scale": 0.58823,
"Rotation": [
22.5,
45,
22.5
],
"Translation": [
0,
-13.5
]
},
"Model": "Items/Interactable/Lava_Bucket/Lava_Bucket.blockymodel",
"Texture": "Items/Interactable/Lava_Bucket/Lava_Bucket_Empty.png",
"State": {
"Filled_Lava": {
"Icon": "Icons/ItemsGenerated/Lava_Bucket_Full.png",
"MaxStack": 1,
"Consumable": true,
"Variant": true,
"BlockType": {
"DrawType": "Model",
"CustomModel": "Items/Interactable/Lava_Bucket/Lava_Bucket.blockymodel",
"Opacity": "Semitransparent",
"Material": "Empty"
},
"Interactions": {
"Secondary": {
"Interactions": [
{
"Type": "PlaceFluid",
"FluidToPlace": "Lava_Source"
}
]
}
}
}
}
}
public void handleDataEvent(@Nonnull Ref<EntityStore> ref, @Nonnull Store<EntityStore> store, @Nonnull FactionHubUICodec data) {
super.handleDataEvent(ref, store, data);
if (data.action == null) return;
final String[] parts = data.action.split(":");
data.action = null;
if ("tab".equals(parts[0])) {
activeTab = MainTab.valueOf(parts[1]);
sendUpdate();
}
}``` Anyone know why this isn't updating the page?
Is there any documentation on teleporting the player?
Is there a way to get all blockIds of a given BlockType? I'm trying to find the ids of all ores
WIP - but its is parsing npcs/enemies data:
[2026/01/22 03:31:36 INFO] [CommandManager] Nerah executed command: target
[2026/01/22 03:31:36 INFO] [SOUT] [TabTarget] Found 3 targetable NPCs
I finally solved my problem for those who are interested : When you want to subscribe to UseBlockEvent, You MUST choose between UseBlockEvent.Pre and UseBlockEvent.Post because the UseBlockEvent itself is not triggered. Would be good for this class to be abstract or with a limited access if it is not intended to be used.
Asking this even though i know no one will respond, but does anyone know if it's possible to get / set the item in the cursor(pointer)? Otherwise, what UI component is used for items in inventory / creative menu?
Hello! I'm new here sorry if my message cut people overlap with others.
Question 1: Is there a fast server restart to test out plugins and changes fast?
-# ^ (This one is low prio cause it's easy to restart the server I was just wondering if there is a convenient way I'm missing)
Question 2: Is there a way to test out multiplayer features locally without the need to buy a whole other account?
Im a hobbyist and a student I cannot afford ts 😭 I already pushed to get my own copy
I figured out the teleporting thanks.
Yes, and Yes
If you don't mind could you give me keywords so I can look deeper into it, that's a big relief
1/ There is an Hytale project template that implement a series of gradle task that can build, assemble and throw your project into packed server, and a task to run the server in your IDE. It's really easy to find 1st result on google for "Hytale plugin template", but i'll find the url if you struggle
2/ I mean... You can probably emulate a player, but it won't do anything if you don't put any logic inside. Won't be a true player through Easier to test with a friend
cuando hago server para jugar con amigos no los deja entrar probe de todas las formas y nada
For context what I was trying to do was experimenting with player-to-player interactions and see if I can create a System that uses that, speaking of which, this is really naive, but how do mods typically store player data
are there public docs for hytale? how are people linking the server jar and developing against it?
I am using that, I've attempted decompiling myself but it's taking awfully long with my 32 GB DDR5 + Ryzen 7 78003XD
that was humbling 😭
Yup, was unable to full decompile myself, i'm not a Java expert through... But you can setup a partial decompile, there is a guide somewhere on youtube. This is fairly fast and enough
I'm making minigame by created new world and tp player into it
Problem here that the performance is not good when chunk is not load and player falling through map
Should I pre-load all allowed chunks before tp?
that's fine I just thought I'd probably wanna test many things out early on so convincing a friend to buy the game just to spend a lot of time on their soulless body experimenting
If you're using vineflower:
java -jar vineflower.jar -s --only='com/hypixel' /path/to/HytaleServer.jar /path/to/output/
that makes a lot of sense....
saving this. tysm
better lootbox v0.1.0 on his way 🙂 imgur[dot]com/a/cWZ0y1p (did that in 1h30 need much more feature etc)
how do people typically dev their mods, are you running locally and leaving/joining the world? or can you hot reload it?
Sounds like you didn't provide vineflower with enough ram on its instance
I had a similar issue where it got hung up on some util library and I just needed to specify Xmx8G cause otherwise it just used 4G and errored out and took ages
If you are using vineflower
Hey, dumb question, but does anyone know how to send a player to another world? like /tp world
Teleport component
what teleport has a world option
tbf I gave it 12 GB but it was decompiling stuff outside the com/hypixel
okay, thanks lmfao
Are you asking on the developer side or as a user
Theres no teleport command that takes a player to another world from what I remember
dev, using this as an excuse to learn java
Guys, could you help me correctly put the background, I think I am not getting the right directory:
$C = "../Common.ui";
Group {
Anchor: (Width: 400, Height: 250);
Background: (TexturePath: "Common/ContainerPatch.png", Border: 23);
LayoutMode: Top;
Padding: (Full: 20);
}
no there is, /tp world <worldname>
isnt there a command that lets you execute as another player? thats the only way i can think of
PSA for ppl using IntelliJ:
If you're getting checkerframework's @NonNullDecl and @NullableDecl in autofill, there's a buried setting you can change so that javax's @Nonnull and @Nullable take priority.
- In Settings:
Editor > Inspections - In inspections tree:
Java > Probable bugs > Nullability problems > @NotNull/@Nullable problems - On the right side pane:
Options > Configure Annotations... - In the popup window, find and select the javax entry and use the Up button to bump it to the top of the list
- Switch to the
NotNulltab and do the same - Click
OKon both windows
You can add components to entities like
store.addComponent(ref, Teleport.getComponentType(), new Teleport(world, pos));
There might be I haven't checked the commands much
with the asset editor, how do you tell a custom block which hitbox file to use?
I guess you can literally just execute the command as someone else internally but that might do a permission check, it probably will
Maybe it wont
yeah i know how to tp, i just didnt know there was a world option lmfao 😭 tysm though
Is there a deicated website or something yet for plugins or are people just posting solely in this channel?
curseforge
does anyone know
Searching some people who want build a network together 😊
sorry, build a what?
Is this just mods or are there plugins?
A network with multiple servers hehe
seems like they're the same thing in Hytale
Wait is that swipez the guy from bonelab
I think both
Yea im the same guy
Peak
Okay thanks!
hey @civic zephyr. i implemented your code and the world gen works fine, but the worlds just don't add? I can /world add customWorld --gen CustomWorldGen and tp into it, and it works. the code just doesn't add the world to the universe.
Universe.get().addWorld("customWorld", "CustomWorldGen", null).join();
currently, im just calling this in my plugins overwritten start method?
no folders created, even though makeWorld is also called in addWorld.
Hoping they rename the mods directory to plugins before it's too late...
Oh I forgot to specify, I added my world in the BootEvent
setup is probably much too early
OHHHH
And whats .join() for?
im saving the world in code, i forgot to remove that when i pasted it into discord.
getEventRegistry().registerGlobal(BootEvent.class, (b) -> {
// HELLO IM THE BOOT EVENT
});
thanks!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
In mine I have a small conditions check before I call addWorld just to make sure the worlds not already there
Im pretty sure it errors out if it tries to addWorld to an already existing world with a pretty large error
yeah i have a manager doing this. i figured out it was just the addWorld command which wasnt doing what it was supposed to. but yeah BootEvent should work. if only i read the event docs one more time lol
Fly blind
guys little need help there, i got luckperms on server but i cant find all existing permissions to commands like idk /world anyone can help me?
does anyone know if there's a single permission i can give to a group to allow them full access to the builder tools?
try Background: (TexturePath: "../Common/ContainerPatch.png", Border: 23);
Yea, I figured it out. Thanks
Now let's solve my problem. Can I update the height value in Anchor from the Java side? 🙁
jesus i hate that i have to jump through hoops to get the default chat format
but why won't it let me join the pre-release servers?
// import com.hypixel.hytale.server.core.ui.Anchor
// import com.hypixel.hytale.server.core.ui.Value
val customAnchor = Anchor()
customAnchor.setHeight(Value.of(999))
ui.setObject("#Container.Anchor", customAnchor)
I figured out how to use dynamic updates and have provided the usage below. It might be useful somewhere.
The code is written in Kotlin; usage in Java may differ.
Amazing
Version: pre-release/2026.01.22-a60fdd027
Is there no server.jar yet?
./hytale-downloader -patchline pre-release
You can download the pre-release version by using the download tool in this way.
I'm still downloading the January 17th patch, are you too?
downloading latest ("pre-release" patchline) to "2026.01.22-a60fdd027.zip"
Anyone know any reason why i should store data on players as a component rather than making a database and having my own wrapper for player data? (For a server network)
how to i get the player ref from the uuid?
Univserse.get().getplayer
You can try reinstalling the hytale-downloader tool; it works fine for me.
If you want to share the data between servers it's a better idea to have it on a database
Thats what i was thinking, i see they have a system for sending a payload on referall but not great for stats and stuff
Also, it dependes on which info you want to save, for example cosmetics should not be on the player data since you lose control over it
its mostly just for keeping track of where a player came from
similar to mc and thier cookie system
Also how are most people managing networks without a proxy? Redis DB?
ye, there are only 4KB, you shouldn't be sharing anything there
also its client specified -- so the client could cheat in stats if you stored data like that in there
Goood 2 know
There are proxy implementations already, they're alpha tho
I believe they're using custom solutions
What would be the point of a proxy though?
referring players to internal servers(like a minigame with matchmaking on seperate servers)
In my opinion just the DDOS protection, since we have transfer packets
Isnt that natively supported
This makes sense IG
not really, its for internal servers
wym internal
I mean unaccesable through normal means
Still would just need the port right? and you could reffer them
Gotcha, i see preventing access via direct connect and stuff
no, you would need to proxy their connection. anyways, basically, its the same as modern mc
modern mc has a system very similar to this
wdym? you can't use transfer packets if the server is not accesible by the client
thats what im saying, thats where a proxy would come in(and where transfer packets wouldnt cut it)
ahh got it
Yeah okay that all makes sense thx guys
nw, good luck
❤️
By any chance any of you gotten mounts working via java not the assset editor yet?
Is there any documentation on all the properties available in .ui files
Youve come to the same realization as the rest of us i see. No not yet unfortunately (Not official anyway)
any unofficial docs maybe?
hytale-docs dot pages dot dev has some basic stuff
decompiling the server jar is the best docs if you can be bothered to read it
haven't tried tbh. but it should be as easy as getting the entity reference and add the mountable component, then you should be able to change the seats which determine where the entity mounting its going to be positioned
Yeah i did all that jazz, aint workin
NPCPlugin.get().spawnEntity(world.getEntityStore().getStore(), NPCPlugin.get().getIndex("test_role"), location, rotation, model, (npcEntity, entityStoreHolder, entityStoreStore) -> {
NPCMountComponent mountComponent = new NPCMountComponent();
mountComponent.setAnchor(0, 1.5F, 0);
mountComponent.setOwnerPlayerRef(owner);
mountComponent.setOriginalRoleIndex(npcEntity.getRoleIndex());
holder.addComponent(NPCMountComponent.getComponentType(), mountComponent);
});
``` Look
There's almost nothing there. My advice is to extract Assets.zip, go to the “Assets/Common/UI/Custom” location, and examine the game's current structures.
thats a good one too, the assets.zip is the best resource we have, spare the server jar itself(but the assets is a lot more readable to most people)
Have they said anything about when docs are being released yet?
I'll try that. thanks for the advice
Anyone got any advice for this (click reply)
It just dont work
Every single day there's something new that doesn't let me enter my server... What do I do to fix this forever??
com.hypixel.hytale.codec.exception.CodecValidationException: Failed to validate asset!
Key: Name
Results: FAIL: Can't be null!```
```[Hytale] Missing interaction Effect
[Hytale] {Setup(null ...)} was closed.
[QUICTransport] Connection closed...```
@scenic mantle If you couldn't download the preview file, I can send it to you via email using WeTransfer, but this will take some time. If you wish, please send me your email address privately.
looks like you have an asset that needs a name key, but doesnt have one(probably an interaction effect)
i read somewhere that you can only ride entities that has parent Template_Animal_Neutral
apparently it's harcoded
dunno if it's true tho
seems to be true

How can I fix that?
find the perpetrating asset and give it one 😄
Have you personally created / added in any interaction effects?
If so I'd start the hunt there
If the logs don't tell you specifically which mod the faulty asset is within then do trial by elimination
So, we can't just put mods in the folder and be good with it, but we need to do some edits? Honestly I've no idea.. I'm using AI to help me since I don't know how to do this stuff, but on every restart I'm getting similar errors and it breaks every day. Then I somehow fix it and then it breaks again with those errors
AI is only as good as the information available to it. Since there is no public documentation out yet and third party documentation is limited it just doesn't know what conditions need to be passed and is making sweeping mistakes that cause issues down the line.
It's likely you were closest to having it all working right when you started off and have now created a tangled web of issues that you are band aiding over.
If you're just trying to install mods then just start fresh and add the mods in 1 by 1.
There almost certainly will be some incompatibilities as most Hytale devs are used to MC modding which is a completely different architecture, so when you run into an incompatibility just skip that mod and move on.
In short, installing mods is on the more advanced end of the spectrum currently and actually modifying mods requires some decently advanced programming skills, so stay away from that entirely
By modifying I mean creating manifest.json for them manually because seems like if I just put .jar there, they don't load or they act up then AI told me to manually create manifest.json for them with included content and they they worked but apparently today its broken again
if a plugin jar didnt include a manifest.json there was probably something a lot more wrong than it just lacking the manifest
The thing is it does, but it's not called manifest.json but hybrid.config.json (one of 3 addons I'm using) or it should create another one named manifest?
Yeah definitely not the route for you to take. There are like 15 layers deeper you need to have a grasp of in order to understand how your modifications will probably cause issues.
If I were in your shoes, I would install mods 1 by 1 and boot the server fresh every time you install a new mod.
If the server doesn't start after installing a new mod, just skip it and move on. Trying to diagnose an issue like that is incredibly advanced is well beyond the technical skill of most developers period.
Everything is so rudimentary right now that you should really just save yourself the headache and skip issue mods for the time being.
High caliber modpacks like you see in minecraft are a ways out of being a reality in Hytale - it's best to keep things as close to vanilla as possible to keep your server rockin and rollin
How do I place a block using the Java API?
All I want is no durability on tools and weapons and to see friends on the compas without opening the map (shared explored map would be cool too but not mandatory)
Like a custom minimap?
Sure, it's only that feature that I want, to see friends on the compas without opening the map to check direction and if possible to share the explored maps among us. Nothing else
Unfortunately you've been spoiled lol. Any mod that currently does that is very early stage and is the minimum possible version that'll get it to work within specific circumstances.
Something like this seems simple but in reality it's quite complex. At this stage I'd imagine a mod like that will cause issues no matter what you do
Can I ask, what if I create a server, how can I also add protection to the spawn so that people cannot destroy the blocks there? what mod or plugin is this?
I use simple claims (google it )
Simple Claims seems to be the best one out currently. Similar to early MC factions
explain what you're trying to do here
I want a block to magically appear, simply 😄
as if it was placed by a player
are you familiar with ECS?
No not quite
Like is every block supposed to be its very own entity? Wouldnt that be like... overkill resource wise? Like there are so many blocks in the world
Go spend a few hours doing a crunch session on it, it's not incredibly complex but the better you understand how it works the easier of a time you're going to have.
right, so if you could just try and push me in the right direction.... Is each block its own entity?
with a unique UUID and everything
Hello,
I trying to store an data to the chunk and player, but for some reason on chunk is not persist, contrary to player.
For doing my thing i have dig into Chunk code and reproduce how they handle WorldChunk (registered in LegacyModule).
So, i have register my components with :
this.playerFactionComponentType = getEntityStoreRegistry().registerComponent(PlayerFaction.class, "Faction",
PlayerFaction.CODEC);
this.chunkFactionComponentType = getChunkStoreRegistry().registerComponent(ChunkFaction.class, "Faction",
ChunkFaction.CODEC);
Note: both components is identical with only Store type changed.
And i add it to chunk with that code (from an command) :
Vector3d pos = playerRef.getTransform().getPosition();
Ref<ChunkStore> chunkRef = world.getChunkStore().getChunkReference(ChunkUtil.indexChunkFromBlock(pos.getX(), pos.getZ()));
if (chunkRef != null && chunkRef.isValid()) {
chunkRef.getStore().addComponent(chunkRef, ChunkFaction.getComponentType(), new ChunkFaction(faction.getUuid()));
}
With my code the currently setup perfectly work , until i reboot the server cause data wont be stored on chunk (even if i force save world before stop).
Thanks.
Like if I wanted to build a house progamatically (1 block at a time, maybe each block is placed with a 0.1 second delay)- lets say the house has 10 000 blocks in total. Would I then create 10 000 entities?
Resources are only drained when they are used, an entity existing just means there is data available surrounding it. Not that the data is being used and draining resources. So yes, all blocks are indeed entities
okay
Hi guys, I need help. I downloaded some prefabs and would like to use them on my server hosted on a VPS. I went into the world folder I was using, created the "prefabs" folder, and uploaded the .jons file. I updated the server, but nothing. When I do /prefabs list, I only get the default assets. Do you have a solution? Am I doing something wrong?
a
?
Well you're definitely doing something wrong, there just isn't much to go off of to troubleshoot.
Honestly I'd just delete what you did and try again, really follow whatever tutorial you're following very closely
Are there grids or some sort of flex boxes for ui building?
I'm not following any tutorial, I've been informed through ai, I've followed every single step but nothing to do
Yes and they're super cool to play with. There is a very solid IntelliJ install that will help significantly with code formatting / gives you a quick render of how it looks.
Let me find it rq
Do you happen to know any videos about this?
That would be sickk
Ah AI has no clue what it's doing quite yet when it comes to Hytale. Definitely go find a youtube video and follow step by step
yea AI is not trained on hytale yet, it doesn't even know hytale is already released
The problem is that I can't find any videos
Only way to figure out the component structure is by decompiling lmao. We don't even have a decent third party documentation yet
Honest advice is if you don't quite know what you're doing then installing anything into the game is more advanced than you'd probably like to commit to
in fact I'm trying to get informationù
What does a ItemGrid do?
The issue is that the support here is moreso high level helping people with an existing knowledgebase get to a solution. Very tough to explain every little nuance of what could be happening when we can't see the full scope of what is going on to begin with
For the right way to dig your research you have an method WorldChunk#setBlock but like batman say, you need to undersand the basic of ECS to access to that class almostt all other classes, or doing things in hytale. ECS is the core of all logics
ok
To find the github repo of the tool I mentioned before it is slash BungeeDEV slash hytale-ui-plugin
There is also a visual in browser editor that is gaining popularity called hytale dot ellie dot au
prefabs can be stored in the server directory too, you could try that
Mod request: Prefab importer, to allow a player to import (lvl 1 items only, not upgraded) a vanilla or curseforge prefab from a workbench and have that prefabs material cost shown at the workbench; have the workbench draw materials from chests as usual and only have it work if the space has been cleared and the materials are available. Sort of like Stormworks
I am fairly certain I saw somebody working on something just like this
Amazing if so
Do not want it "free"/cheaty. Still require the mats be farmed etc. Hopefully thats the direction they go
i feel stupid... in minecraft you use Bukkit.dispatchcommand to run a command thru console... how tf would i run a command thru console in hytales? so many circles in documentation and i cant find simple
There is a strong group of devs working on "vanilla" plugins which are basically features that will 100% be native at some point
good idea
Here is a unique mod request: Craftable compass. Points to the nearest spawned secret Klops house, if any. Spins in circles if none in map range. xD Maybe an option to select a prefab for the compass to "find".
yes I also tried to put the file there but nothing doing
what group is that
nothing happens, there are only the prefabs created and saved by me, but not the ones I'm trying to download
oh not like a contained / organized group, there are just a lot of talented devs working on those types of projects. Guarantee though the best will all roll up into a super plugin that becomes standardized until Hytale catches up
Oh I have a mod that adds more cancellable events so I was hoping the super plugin group was already out there to roll it in
No, bukkit is OOP whereas hytale is ECS.
If you're good at OOP then you can pick ECS up pretty quick but fundamentally they are quite different.
Also Hytale is multi-threaded whereas bukkit is single-thread.
That particularly will be an uphill battle for a lot of devs to master
Has anyone made a Server-Teleport mod where there is portals?
Currently pondering if I should make a mod that caches player info for packet filtering cuz of this
I say get your tool out and start getting it downloaded. That's how everybody ends up gravitating towards eachother
I think you should simply because that would be a fun project to do
anyone know how to put an item in the hotbar? this doesnt seem to work
player.getInventory().getStorage()
.setItemStackForSlot((short) 36, pickaxe);```
hotbar is not storage
player.getInventory().getHotbar()
.addItemStackToSlot((short) i,
new ItemStack(item.getId(), item.getAmount()));
I'm curious when you say cancellable events what do you mean?
Interesting that the server is written in Java while the client is C++
thanks
This looks just like Bukkit lol
There's BreakBlockEvent and PlaceBlockEvent, I just added PlaceFluid and some other stuff
credit to @quaint veldt
Oh sick
saw a lot of people asking about it
Yeah that's super powerful
not yet I still need to add a generic event
but it solves the problems I was having most
hytale/mods/prefabbuilder/files/7489489 on curseforge
yeah technically it's the wrong way to go about it but we're all just havin fun and making stuff happen lol
is the creater of bettermaps in here? why would you remove an ops ability to teleport freely by right clicking the map I LOVE the plugin dont get me wrong but thats kinda annoying that i have to disable the plugin during testing making my mods when im working on them then go back in to re-enable it to see the other side of the map ive already been in. am i missing a way to reenable the right click TP or is it fully removed cause i didnt see a command for it
viewing it as bukkit or how I actually give the item?
wait can I just construct the hotbar and slap it on the player?
reasons not to code at 2am I guess lol
hytale multiplayer lag killing animals? (might be stupid question here)
I think OOP is everybodies default here
its also why plugins feel wildly incompatible. People decompiled and then forced it to work with OOP. The whole thing is a meat puppet held together with metal rods
killing animals or just disappearing them
Business as usual 💀
killing
Is there much of a difference between constructing a new component and iteration if I need to diff the items anyways though?
and its just one person that lags out every time
honestly there are so many one off weird issues that its basically impossible to tell ya whats going on without a dev looking into log files and tracking it down
Do you have a handful of plugins installed?
0 plug-ins. thats the weird part. i just was going to chalk it up to being so fresh and not fleshed out yet
in ECS constructing is significantly less efficient
instead of constructing a component to check it you just read it
Oh I meant like creating the HotBar then just plugging it in vs overwriting all values in an existing one
yeah I was about to give you a whole narrative on prefetching and data locality lmao
but you've split the difference here perfectly. with ECS overwriting all the values in an existing one is always the way to go
it takes no extra memory allocation to do that since behind the scenes youre just changing bits in an existing address rather than creating a whole new address and then filling it up
accidentally ECS I guess
yeah you honestly nailed it
Can you assign keybinds to plugin commands?
yes you absolutely can I just don't know the logic off the top of my head. Haven't built anything thats had to do that yet
not every block has a block entity, this is not quite right
missed this - vanilla Hytale actually has a couple core issues that will cause aggressive server crashes.
On curseforge I'd recommend getting this plugin /hytale/mods/server-crash-fixes
Is there somewhere I can find a dev to make custom plugins / mods?
you're right, I didn't explain that well
yeah I'd go hunt down some Hytale Development specific communities and check those out
Oh damn those exist already? You know any?
if you search then you will find, they're definitely out there. Don't want to have an issue with promo another community
What do you need ?
I was looking to make a custom rpg server
That's broad, can you send me a dm,please? I'll see with friends if they are are interested
Issue using -XX:AOTCache with Hytale Server (shared class paths mismatch)
Hey everyone, I’m trying to run the Hytale server using the provided AOT cache, but I can’t get it to actually load. The server does start, but the AOT cache is always rejected.
This is my startup command:
cd ~/Hytale/ServerRicky
java -Xms6G -Xmx10G \
-XX:AOTCache=HytaleServer.aot \
-jar HytaleServer.jar \
--assets Assets.zip \
--backup \
--backup-dir backups \
--backup-frequency 30 \
--backup-max-count 48
And this is the output related to AOT:
[aot] This file is not the one used while building the shared archive file: 'HytaleServer.jar', timestamp has changed
[aot] An error has occurred while processing the AOT cache
[aot] shared class paths mismatch
[aot] Unable to map shared spaces
Notes / things I already checked:
- HytaleServer.jar and HytaleServer.aot come from the same official ZIP
- I extracted them together and preserved timestamps (rsync -a)
- Both files have matching timestamps (Dec 31 1979)
- They are in the same directory and I’m launching the server from that directory
- If I remove -XX:AOTCache, the server starts normally (just without AOT)
The server continues with:
[HytaleServer] Starting HytaleServer
[HytaleServer] Loading config...
So AOT is clearly optional, but I’d like to understand what exact conditions are required for the AOT cache to be accepted:
Does it depend on a specific Java version/build?
Absolute vs relative paths?
Working directory?
JVM flags or classpath differences?
Or is the distributed AOT just not meant to be reused outside the original build environment?
Any insight would be appreciated 🙏
They have to match, you could not use it for the time being
Are you use you didn't mix up the files ?
Try absolute paths, if you think path is an issue
On my setup I'm using the same as the hytale path
How could I save data on a block? Is there any documentation for it? And make it update on for example on an action from a ui?
I tried something like:
cd ~/Hytale
unzip 2026.01.17-4b0f30090.zip -d temp/
That resulted in:
temp/Server/HytaleServer.jar
temp/Server/HytaleServer.aot
Then I copied both files together while preserving timestamps and metadata:
rsync -av temp/Server/HytaleServer.jar temp/Server/HytaleServer.aot ServerRicky/
And I start the server from that same directory:
cd ServerRicky
java -Xms6G -Xmx10G \
-XX:AOTCache=HytaleServer.aot \
-jar HytaleServer.jar \
--assets Assets.zip \
--backup \
--backup-dir backups \
--backup-frequency 30 \
--backup-max-count 48
Huh it's not about how you extracted, I think there is a mismatch in the zip file, I can't replicate rn I'm out of my office
it's fine, maybe I can make a video later today and post it here.
Hey guys!
I'm trying to increase the players jumpheight via code. How would i properly do that? applying a modifier via movementManager to playerRef doesn't seem to work.
maybe because my folder it's called ServerRicky instead of just Server but I'm guessing here.
no
Has anyone attempted to create a working Mob Spawner? I think we currently lack APIs
Anyone have any idea why my world is getting unloaded right after its loaded? Im so confused... one time it was working and now is not.
Path path = Path.of("universe", "worlds", "islands");
WorldConfig worldConfig = new WorldConfig();
CompletableFuture<World> world = universe.makeWorld("islands", path, worldConfig);
System.out.println("world? " + world);
[2026/01/22 07:28:04 INFO] [World|islands] Loading world 'islands' with generator type: 'HytaleWorldGenProvider{name='Default', path='null'}' and chunk storage: 'DefaultChunkStorageProvider{DEFAULT=IndexedStorageChunkStorageProvider{}}'...
[2026/01/22 07:28:04 INFO] [World|islands] Added world 'islands' - Seed: 1769066884715, GameTime: 0001-01-01T05:30:00Z
[2026/01/22 07:28:04 INFO] [Universe|P] Removing world exceptionally: islands
[2026/01/22 07:28:04 INFO] [World|islands] Removing individual world: islands
Ooooh, so I need to do it vice-versa. Get a MovementManager, then get the playerRef. Not the other way around. It works!
it is possible
How is it possible? Currently cannot make several mobs spawn from an area I believe the only things that’s possible is a spawn marker which only spawns one individual mob.
define the area yourself
the server lacks so much api bro the chat system is making me have an aneurysm like WHY is the chat content just a regular string instead of a message
There is a yt channel called TroubleDEV that has explainers for ecs and adding commands. Not affiliated, just thought they were helpful.
guys how to enable hot reload
youtube com/watch?v=CEc66DXWPAA
THANKS!!!
Is it your first setup ?
no, I have several installations and I only use ServerRicky for the tiome being.
ricardo@OptiPlex-3070:~/Hytale$ ls
2026.01.17-4b0f30090.zip Assets.zip hytale-downloader-linux-amd64 ServerOld ServerRicky ServerTeidar
ricardo@OptiPlex-3070:~/Hytale$ pwd
/home/ricardo/Hytale
you can use java code to spawn any entity including mobs and you can just spawn them at any location including random points inside a box near a block
how can I teleport a player if he is dead?
The server runs fine, it;s just that I wanted to use java -XX:AOTCache=HytaleServer.aot -jar HytaleServer.jar --assets Assets.zip as explained in the server manual
I'll look into it once I get back, give me 10min
No problem.
does this not just work automatically? what happens if you try?
java[242174]: java.lang.NullPointerException: Cannot invoke "com.hypixel.hytale.protocol.GameMode.equals(Object)" because the return value of "com.hypixel.hytale.server.core.entity.entities.Player.getGameMode()" is null
what could be the causes of this happening? a plugin overwriting 'Adventure' gamemode to null before the player is properly initialized? i get this error only when new players join my server (who never joined before)
just to give you heads up, the timestamps on the files seem weird:
ricardo@OptiPlex-3070:~/Hytale$ ls ServerRicky/ -l
total 201784
-rw-rw-r-- 1 ricardo ricardo 1407 ene 22 00:56 auth.enc
drwxrwxr-x 3 ricardo ricardo 4096 ene 22 01:26 backups
-rw-rw-r-- 1 ricardo ricardo 2 ene 22 00:53 bans.json
-rw-rw-r-- 1 ricardo ricardo 586 ene 20 11:59 config.json
-rw-rw-r-- 1 ricardo ricardo 442 ene 20 11:59 config.json.bak
-rw-rw-r-- 1 ricardo ricardo 122531840 dic 31 1979 HytaleServer.aot
-rw-rw-r-- 1 ricardo ricardo 83644681 dic 31 1979 HytaleServer.jar
-rw-rw-r-- 1 ricardo ricardo 193497 ene 21 10:50 hytale_server.log
-rw-rw-r-- 1 ricardo ricardo 195148 ene 22 01:42 hytale_server_ricky.log
drwxrwxr-x 2 ricardo ricardo 4096 ene 20 11:59 Licenses
drwxrwxr-x 2 ricardo ricardo 4096 ene 22 00:55 logs
drwxrwxr-x 6 ricardo ricardo 4096 ene 21 12:19 mods
-rw-rw-r-- 1 ricardo ricardo 495 ene 22 00:58 permissions.json
drwxrwxr-x 3 ricardo ricardo 4096 ene 20 17:06 plugins
drwxrwxr-x 4 ricardo ricardo 4096 ene 22 01:38 universe
-rw-rw-r-- 1 ricardo ricardo 27 ene 22 00:53 whitelist.json
dic 31 1979 HytaleServer.aot and dic 31 1979 HytaleServer.jar seem unusual to me.
Has anyone had trouble loading custom ui elements in? Is the @2x required on the file names?
Because I'm trying to teleport a player to another world, I'm just disconnected from the server.
use Teleport.createForPlayer(targetWorld, ...); the system will re-add them in the target world.
what do you mean load custom UI elements in? is it your first time making custom UI? I would use this guide which helped me a lot (replace period with spaces)
hytalemodding dev/en/docs/guides/plugin/ui
How can I open a chest-type window (WindowType.CONTAINER) on a mob? I am sending the OpenWindow packet, but nothing appears on the client side
Perfect I am close to having a functional Tab Target System (No camera lock yet, but it pulls the Name/Health and Direction + Distance to the Enemy)
Client logs probably should contain all the info, remember to activate debug in game settings for more verbose logs
NVM
I'll try...
Teleport.createForPlayer(targetWorld, ...); does not work because I add a teleportation component to the player while completing the death component. Maybe this is the wrong way?
i actually have the same issue 🤣 @fading current
We are getting somewhere
I thjink it's the timestamp on the files, they may not match on the timestamp on the jar and aot compile timestamp
▶ java -Xms6G -Xmx10G \
-XX:AOTCache=HytaleServer.aot \
-Xlog:aot \
-jar HytaleServer.jar \
--assets Assets.zip
[0.008s][info][aot] trying to map HytaleServer.aot
[0.008s][info][aot] Opened AOT cache HytaleServer.aot.
[0.008s][info][aot] _jvm_ident expected: OpenJDK 64-Bit Server VM (25.0.1) for linux-amd64 JRE (25.0.1), built on 2025-10-22T16:51:32Z with gcc 15.2.1 20250813
[0.008s][info][aot] actual: OpenJDK 64-Bit Server VM (25.0.1+8-LTS) for linux-amd64 JRE (25.0.1+8-LTS), built on 2025-10-21T00:00:00Z with gcc 14.2.0
[0.008s][warning][aot] The AOT cache was created by a different version or build of HotSpot
[0.008s][error ][aot] An error has occurred while processing the AOT cache. Run with -Xlog:aot for details.
[0.008s][error ][aot] Loading static archive failed.
[0.008s][error ][aot] Unable to map shared spaces
I get the same error
sooo; its not a timestamp issue more like JDK
yeah, i think the last version didn't get matching build
Just don't use aot for now
i guess you have your awnsers now
Teleport after respawn
When you clear the death state (i.e., remove DeathComponent or in a respawn hook), add the teleport then:
// in your respawn handler, after DeathComponent is removed
Transform dest = new Transform(new Vector3d(x, y, z), new Vector3f(0f, yaw, 0f));
commandBuffer.addComponent(ref, Teleport.getComponentType(), Teleport.createForPlayer(targetWorld, dest));
This lets PlayerMoveSystem do the world hop with no death component fighting you.
The teleport component allows you to specify a world in its constructor
the option in option is named "diagnostic mod" is that ?
Anyone knows how one would make progress bars with the .ui system here
Because when i turn it on i have not more logs like habitualy
My java version is:
ricardo@OptiPlex-3070:~/Hytale$ java --version
openjdk 25.0.1 2025-10-21 LTS
OpenJDK Runtime Environment Temurin-25.0.1+8 (build 25.0.1+8-LTS)
OpenJDK 64-Bit Server VM Temurin-25.0.1+8 (build 25.0.1+8-LTS, mixed mode, sharing)
It's because of using openjdk instead of the propietary java sdk?
How can I open a chest-style container interface for a player? I’m sending the OpenWindow packet, but the UI isn't showing up on the client side. I want to trigger this interface (like a virtual chest) even through a command, but I can't get it to display.
the aot cache was build with the none LTS version of jdk
i currently cannot swicth versions so i can't retry that again
you need openjdk 25.0.1 (non-LTS)
that makes sense. Thank you for your time. Since it's optional and my server runs just fine I thinink I can let it go. Thanks again.
or use a docker image; if you have docker
you would probably do something like slowly increasing an elements width perhaps
Sending OpenWindow directly won’t show anything because the server must register the window and tell the client which page to display.
Use the player’s WindowManager/PageManager, just like OpenContainerInteraction does.
// ref: Ref<EntityStore> for the player, store/commandBuffer in scope
Player player = commandBuffer.getComponent(ref, Player.getComponentType());
if (player == null) return;
// 1) Build container
SimpleItemContainer container = new SimpleItemContainer((short)27);
// 2) Wrap it in a window
ContainerWindow window = new ContainerWindow(container);
// 3) Open a page that hosts the window and send packets
boolean ok = player.getPageManager()
.setPageWithWindows(ref, store, Page.Bench, true, window);
// Page.Bench is what chests use; you can use another Page if desired
if (!ok) {
// opening failed (e.g., window onOpen returned false)
return;
}
:)
How to give a player an item?
Im making an enchanting plugin and im wondering how Hytale handles item lores / names? How would I go about making the enchantments show in the description of the item after its been enchanted
Use the player’s Inventory + an ItemContainer add, then send the inventory update packet:
Ref<EntityStore> ref = ...; // player ref
CommandBuffer<EntityStore> cb = ...;
Player player = cb.getComponent(ref, Player.getComponentType());
if (player == null) return;
Inventory inv = player.getInventory();
// build the stack (id must exist in assets)
ItemStack stack = new ItemStack("YourItemId", 1, null); // (id, quantity, metadata)
// add it (hotbar-first combined container, or pick storage/hotbar directly)
ItemContainer target = inv.getCombinedHotbarFirst(); // Inventory.getCombinedHotbarFirst()
ItemStackTransaction tx = target.addItemStack(stack); // returns remainder info
if (!tx.isFullyAdded()) {
// optional: handle overflow (tx.getRemaining())
}
// sync to the client
player.getPlayerRef().getPacketHandler().write(inv.toPacket());
Do you want CRATES mod for /vote ????????????????
hey does anyone know what componentAccessor is? selection.placeNoReturn(world, new Vector3i(100, 64, 200), componentAccessor); I'm trying to place a prefab but not sure what the componentAccessor is for or how to grab an instance of it
I believe that goes against Hytale ToS
i think its allowed if you tell the players chances
THX a lot MAN
How do I get an item ID from a player? I did this, but it's probably wrong:
private final RequiredArg<Item> itemID =
this.withRequiredArg("itemID", "the ID of the item you want to issue", ArgTypes.ITEM_ASSET);
Is there any way to check if player is pressing space mid air ?
I have some projectileConfigs as .json. how do i register them properly so they are included in the build and findable by ProjectileConfig.getAssetMap().getAsset(..)?
yo wtf is componentAccessor? I can't find info about it anywhere
hello
Why do the mobs on my server not take any damage?
Heh
Is anyone else having this issue? How to fix it?
wtf
how do i make a function run at the end of each tick?
does anyone know how to "place a prefab" from a plugin?
How do I set custom hp for npc entity? statmap does not work for some reason
com.hypixel.hytale.server.core.prefab.PrefabStore;
com.hypixel.hytale.server.core.prefab.selection.standard.BlockSelection;
com.hypixel.hytale.math.vector.Vector3i;
hey thx I already got that far, selection.placeNoReturn(world, new Vector3i(100, 64, 200), componentAccessor);, but what is componentAccessor?
i see examples of it everywhere but nothing explains what it is or how do I get access to it
Then I’ll have to define every area a spawner is at which isn’t how Mob spawners work. Where ever the spawner is placed move spawn within a 3x3 radius from the spawner, Spawning 3-4 mobs at once within 6-10 second delay. Server lacks APIs so I believe it’s not possible
no idea i use blockselection.place
but try world.getEntityStore().getComponentAccessor()
Does anyone have any idea on creating flex boxes in uis
The mobs just won't take any damage no matter how many times I hit them. What's going on? I've already tried removing all mods, but they still don't take damage.
check the world config file may be disabled in the config
ok thx, i'll try .place
Anyone figured out how to delete floating items/broken blocks from the ground?
They were broken via plugin and the leftover blocks are just sitting on the ground haha
ahh
They just auto cleared after 5 mins thankfully.
do you place your prefab into plugin resources or into server
no i can show u how if you want
I save them in server
are anyone is able to launch server with the new pre release ?
okay
I was using some Health bar plugin. After removing it, there were health numbers all around the space 😄
There would be buggy plugins long time until people used to work with Hytale engine which is much diffferent than MC's