#server-plugin
1 messages Β· Page 4 of 1
the block removal is unconditional and happens before the pickup event is even created.
in performPickupByInteraction, removeBlock(...) runs before interactivelyPickupItem(...).
InteractivelyPickupItemEvent cancellation wont affect whether the block is removed it only affects what happens to the already-generated drops
You would have to stop the perform pickup by interaction.
^
Why are you triggering that if you dont want to pickup or break the block?
or restore the block afterward maybe
maybe I think its the most fair solution
Or do you want a block you can infinitly farm?
Or can I just disable the interaction module?
gamerule interact deny?
No I just want it to be unbreakable in some areas
ahh
Ive seen that in some servers inside the player claims you can't pickup items as well
WiFlow's Claims
thanks Im gonna take a look at it
Ohhh wait I think I found it
π
Still not working for me and I don't know why. I tried every combination with Text and TextSpans in java and in the .ui file. When I am using TextSpans in java it randomly says command was not found. And sometimes my .ui file was not found
UI File part:
Label #GoblinArmyLabel {
Padding: (Full: 0);
Text: "Cleared 0%";
Style: (TextColor: #ffffff, RenderBold: true, Alignment: Center);
}
UI Builder:
commandBuilder.set("#GoblinArmyLabel.TextSpans", Message.raw(text));
Show and set UI/Text:
hud.show();
hud.setVisible(true);
hud.setText("Cleared 0%");
is there any way to be able to get specific keystrokes from the client to execute commands? I looked into packet handling but this doesnt track "unused" keys. I want to call commands on keystrokes to create something like rpg skills. I know im able to get supported hotkeys, like O or even the hotbar ones (they get unusable for normal use then though)
no way to currently do that
you can only capture specific actions, not key presses, and those actions are defined client side
Can confirm. Custom keybinds are not currently possible
otherwise you'd just be able to straight up keylog people
yeah
there are a couple of options on how to handle it safely, but all we can do is wait for hypixel to implement one of those
any of you know if they plan to add custom keybinds, so players can bind test/commands to them?
They do, yes, it's one of the most requested features from modders
I'd rather just have custom defined actions rather than making players execute commands
You could add skills to the toolbarnumbers if you are willing to sacrife the block spaces. Is the closest i can think.
if you come from minecraft, you need to get out of "this needs to be a command" headspace. we have options here
yeah commands are freaking old, nobody wants to write them in chat, hiding them with key strokes would be enough i guess
hiding them with key strokes would be enough i guess
nope, no need to engage command system at all
yeah, thats the only way, but if i want to add 4-6 skills, the toolbar is almost gone π
You are not hiding them you qre making interactions/events.
it's still jank, hidden or not.
I'd rather just see an api to add custom interaction types. So rather than saying "key x executes y command", server tells the client that there is "custom_action" action, please bind it to some key you like
You could have items representing different interactions.
yeah, this all feels like a bandaid π
no need for command payload, parsing and processing. "this needs to be a command" is not a valid approach here
It is but if you dont want to wait.
is there another way atm? im willing to wait for another way, sure but i was intitally asking for a solution i can use right now
we can alerady do custom interactions with currently available keybinds. right click on most blocks is "free" for example
I rather be able to build test and replace than wait. ^^
Right click or o could give a menu with choices not great for fastpace but infinite options.
in my plugin I just add "Secondary" type interaction to all chests to quick stack to clicked chest. but it's a charged interaction, so if you hold it down for a second, you stack to all nearby chests instead
im trying to implement moba like skills, so fastpace is a requirement, well im just gonna wait and develop the rest
iirc there are 2 unused skill actions
Ability1 is Q by default, but there are also Ability2 and Ability3 which are not bound by default (?) and you can just enable them for blocks, items or unarmed by just adding them to the base interaction structure
hello everyone π I try to setup a basic plugin from a template found in the Hytale documentation and i can't run server with the plugin cause of joptsimple.OptionArgumentConversionException: Cannot parse argument of my main plugin function.
I am a starter java dev so some basic things could be missing .. π
paste a full stacktrace and code it points to if possible
it should tell you exactly which line the issue is in
./gradlew runServe
...
> Task :runServerJar FAILED
joptsimple.OptionArgumentConversionException: Cannot parse argument 'C:\Users\mohlc\Documents\hytale-template-plugin\build\libs\ForgottenTemple-0.0.1.jar' of option mods
at joptsimple.AbstractOptionSpec.convertWith(AbstractOptionSpec.java:92)
at joptsimple.ArgumentAcceptingOptionSpec.convert(ArgumentAcceptingOptionSpec.java:277)
at joptsimple.OptionSet.valuesOf(OptionSet.java:223)
at com.hypixel.hytale.server.core.Options.parse(Options.java:362)
at com.hypixel.hytale.LateMain.lateMain(LateMain.java:18)
at com.hypixel.hytale.Main.main(Main.java:43)
Caused by: joptsimple.ValueConversionException: Path must be a directory!
at com.hypixel.hytale.server.core.Options$PathConverter.convert(Options.java:448)
at com.hypixel.hytale.server.core.Options$PathConverter.convert(Options.java:429)
at joptsimple.internal.Reflection.convertWith(Reflection.java:124)
at joptsimple.AbstractOptionSpec.convertWith(AbstractOptionSpec.java:90)
... 5 more
...
i can paste full output because i can send more than 2000 chars here xd
that's a library error. make sure the provided path exists and the library matches the server version you're working with
When setting the path to the game did you by chance use \ instead of /
Backslash is an escape character for special logic. Most os except windows use / and most filepaths in code use / or you have to use\.
its so funny. Put on a event tutorial on youtube in the background. First thing he covers is how to prevent a player from breaking blocks. π
From what I understand, Gradle downloads the correct version of the server. Therefore, I don't have a path reference. Currently, I'm developing on Windows (yes, really... lol) because I wanted to develop on my Hytale gaming PC for practical reasons.
I don't think the problem is with the configuration, but rather with my plugin, since I can build the .jar file, but when I add it manually, my map doesn't launch. I'm not doing anything special in my plugin, just logging.
/**
* Main plugin class.
* @author ymohl-cl Oxy
* @version 1.0.0
*/
public class ForgottenTemple extends JavaPlugin {
private static ForgottenTemple instance;
/**
* Constructor - Called when plugin is loaded.
*/
public ForgottenTemple(@Nonnull JavaPluginInit init) {
super(init);
instance = this;
getLogger().at(Level.INFO).log("[TemplatePlugin] Plugin loaded!");
}
/**
* Get plugin instance.
*/
public static ForgottenTemple getInstance() {
return instance;
}
...
and if i define the path manually, i have the same error
hytale_home=file:/C:/Users/mohlc/AppData/Roaming/Hytale
With a random path i have an other error which say hytale installation not found
Looks to me as if you're trying to use the command line argument --mods C:\Users\...\libs\FoegottenTemple-0.0.1.jar to start the server. Afaik --mods expects a directory, not a file
Yeah i am probably way off
what if I like typing commands q.q
Is there a way to execute code on shutdown/player exits world? I want to remove NPCs I spawned before
ShutdownEvent: Pretty much the last thing that gets called in the lifecycle. I believe the worlds have already been shut down so you can't modify NPCs anymore.DrainPlayerFromWorldEvent,RemovedPlayerFromWorldEvent(next update): These are closer to what you're looking for, but the former only gets called in the case where a world is drained of all players at once.RefSystem<EntityStore>: This has anonEntityRemovemethod that gets called any time an entity is removed from a world. I believe this is what you're looking for.
Thanks, but actually I am looking for an event that allows me to remove my spawned NPCs (I store the refs) when no player is left in the world or on/before shutdown
Check if HytaleServer.get().isShuttingDown() is true
In the end, what ever you do that ends up with the result you want to a performance that is acceptable you have done it right.
There is no right or wrong in software development if you solve the task at hand, only opinions.
unless you make ai do it for you
Well that falls on the fact that you have no idea about the performance requirements or whether the thing you asked for actually did the thing you asked.
I think someone stated that the wide adaption of AI code in software and central systems have backed cybersecurity with about 40 years.
CODECS became a lot easier when someone said it was essentially just
"Type, Setter, Getter"
on repeat.
where the type can just be another codec as well.
it's just serialization/deserialization :)
turn it to bytes, turn it back to object, that's it
no rocket science
Yeah, its just that java is so damn verbose, it's not obvious to figure out what a tri consumer actually is.
I would like to speak with a Hytale developer about the server instability, crashes, and chunk loading errors. The developers of my server managed to resolve these issues. If you want help resolving this problem, then contact me on Discord. We want to help the Hytale developers make the game stable.
There is https://accounts.hytale.com/feedback, and/or you can wait for them to accept contributions on GitHub in the coming months
im like 99% sure they're not going to accept contributions.
They stated they were going to release the source code for viewing.
But it wont be OpenSource, it'll be SharedSource.
As in you can see it, but you cant post it.
And since you cant fork it, you cant PR
(unless they said something different and i missed it)
Someone will use AI to scrape it. π
They said
Shared Source Server
...
This will let you:
- ...
- Contribute improvements and bug fixes back to us if something bothers you enough that you don't want to wait.
https://hytale.com/news/2025/11/hytale-modding-strategy-and-status
well then i guess i missed that part π
Yeah we will see how the contribution workflow will turn out. And how much capacity they have to review and accept stuff
I wonder if this is going to be the beginning of forked servers then. (e.g. PaperMC, Spigot)
probably just send it into the bug/feedback page, and wait 1-2 months to see if anything happens π
Is the layering in Blockbench completely borked? I made a selection, and now I have a permanent blue outlined selection layer... and if I delete it, well... it clears the layer it was a selection of.
Hi guys do you know how to add opacity to a background in hytale UI for a label? Ive seen people using "#ffffff(0.5) for the opacity but it didn't work for me :/
spectator
I think it's a little too early for that. There's no point of building a fork on a server when they're practically rewriting the server software quite often.
Definitely is to come, I'm sure...
I have models for an anvil + anvil with a molten ingot on it, is anyone aware of what I can do/modify to make it so it changes textures/model or becomes animated similarly to how the furnace is?
How can I execute a command in world context (java)? So not for a specific player
world.execute(() => {
//thread-safe code here
})
But where can I pass the command string?
I want to execute a command like /ambience setmusic
Instead of AbstractPlayerCommand, you just want to use AbstractCommand, or AbstractWorldCommand if you want the user to pass a world (or get it implicitly)
I don't understand it. I need a class for executing a simple command? My goal is to execute a hytale command in java code. In the game I would type in "/time night" but how can I execute string commands in java?
Decompile the command and see how they do it. Then do it that way.
I'm sure there's a way to execute commands via code somehow though.
I think they are creating custom commands with AbstractCommand etc. but I want to execute existing commands
oh you want to EXECUTE a command, not add a new command for your users to execute. That's done via ```CommandManager.get().handleCommand(ConsoleSender.INSTANCE, "say AAAAAA");
sorry for the confusion
Thanks thats exactly the thing I wanted. I saw this function already but wasn' sure how to get the command sender
Yes I understand, what I meant was decompile their command and view their source code on that class to see how they're playing the sounds rather than going through the command system to play sounds.
Yeah, too much code for meπ I decompiled everything already but I was sure that an easy function for executing commands exists
AmbienceFX ambienceFX = (AmbienceFX)this.ambienceFxIdArg.get(context);
AmbienceResource ambienceResource = (AmbienceResource)store.getResource(AmbienceResource.getResourceType());
ambienceResource.setForcedMusicAmbience(ambienceFX.getId());
interesting...this means I can change ambience music in code without executing the command?
Exactly.
Well, it seems that the commands "/ambience setmusic" and "/environment" are buggy. It won't work even with ingame prompting
For example:
/ambience setmusic Mus_Goblin_Army
And it says"World forced ambience music set to Mus_Goblin_Army" but nothing changed
And
/environment Goblin_Army
says "you haven't made a selection"
same for build in music and env
/environment is part of the builder tools and needs a worldedit-like selection so it knows which area to apply the environment to
ah, is there a way to force it globally and clear it later?
I don't think you can select "the entire world" with BuilderTools, no.
Before the last hytale update the environment temporally changed when you selected a env in the asset editor. So I think there should be a way
What's wrong with just playing audio to your players directly? it feels like you're trying to abuse all sorts of unrelated systems that play audio in some way or antother
Are you actually trying to change the environment? Or just want to play audio to players?
For now I need music only but later env changes too
you can update the selection with BuilderState#pos1(), .pos2(), .update(), etc, apply an environment via .environment(), and undo it with .undo()
just be careful to not lose your undo when doing multiple changes
there is no easier way right now? like override the env globally?
And any idea why this isn't working?
Correct me if I'm wrong, but Environment looks like it's applied to every individual block
Via EnvironmentChunk (Component<ChunkStore>) and EnvironmentColumn
I am not sure how it's handled internally but you can assign them to biomes
You could edit worldgen to force only a single environment to be used, and then edit the asset itself
I am using world gen V2. I have environments assigned in the node graphs. For every Biome and special caves etc. But my goal is that world events like the goblin army are able to override the environment at runtime globally
So the question is whether it is possible to to force a specific environment globally at runtime
The world gen V2 graph is not really runtime it seems that changes trigger a command to regenerate chunks. But chunk regeneration for simple environments change at runtime would be bad
World v2 is out????
Not for the base game but for modders
is anyone aware if there's some sort of listener for something like onCraft, via the asset editor or otherwise somewhere? I want to do something when a player hits craft for an item
If I want to make a custom interaction, do I need to code that?
does anyone know of a way to manually change a pre existing's biome type. like in an already generated world, switching one biome to another?
Not if it does things that the usual interactions can do. Then it can be a existing one with config changes.
Probably have to change the world generator and reset those chunks. Or you have to make a system that can replace all blocks in the biome with the replacement you want, and that would probably create really large savefiles, since it would be a build the nr of blocks the size of the biomes.
Well per column, it doesn't specify depth, the environment are part of the generator settings, so it needs to know the information per column generated. for void world i saw they only used the id for the env and a tint color.
then is there at least a way to stop entities for example of zone 1 spawning if i want to change what spawns in that region or area?
infinite amount of ways essentially, depending on what one intends exactly.
simply to remove an areas spawns completely so I can set my own
a listener for when a spawner component is added, check the env its in and remove it if its the wrong one.
now how does one do that, or would I have to design / code that myself
design and code yourself.
ok thank you
At least i dont think there is a command for it.
Once a world have been created, you would have to change the world type and trigger a regen right?
Or could one just toss the world data in the folder?
Hi !
Anyone know how to group block and transform to entity ?
Or at least, how do I create an entity? Or register new entity ?
An entity is a collection of components. Check out NPCPlugin.get().spawnEntity() for an example:
- Create a holder via
Holder<EntityStore> holder = EntityStore.REGISTRY.newHolder();; - Create components (
Component<EntityStore>) and attach them to the holder:holder.addComponent(componentType, component) - Add the holder to the store to spawn the entity:
Ref<EntityStore> ref = store.addEntity(holder, AddReason.SPAWN)
The resultingRef<EntityStore>is the handle to your entity
What do you mean "per column"? Each EnvironmentColumn has a list of environments for each y value, no?
Oh thanks, I'll write that down somewhere :D!
So I suppose the entity model is also a component π€
I migh have looked at a bad example. That one i saw sent in one env or env id for a column retrived by x,z in the chunk. I assumed it took a base env as config data and from it read out the distinct y level details.
But it could be other examples do multiple passes and only set env for the area it manipulates.
Yeah otherwise you couldnt have a mixed chunk environment...
Intended to reply to this in post above.
I was thinking block column in a chunk. Was unaware of a env column.
The core generation logic is not super complex. But it opens up for so many different implementations.
I am digging in to this more tonight to make a specific world generator for my needs and probably realize i been wrong about a lot all along. ^^
Correct! See the spawnEntity function i mentioned for reference:
if (spawnModel != null) {
npcComponent.setInitialModelScale(spawnModel.getScale());
holder.addComponent(ModelComponent.getComponentType(), new ModelComponent(spawnModel));
holder.addComponent(PersistentModel.getComponentType(), new PersistentModel(spawnModel.toReference()));
}
I'll go check the function, thanks 
You can extend from Entity for simpler visual entites, LivingEntity for... well yeah what its named. If you are not going for a NpcEntity.
But then the codec for your entity require you provide the same data as the base requires.
The idea is to have an entity that takes the place of a block
Yeah judgement call then if you gain anything from extending the predefined Entity or if its just a waste of data.
Well, I think a simple entity will be sufficient.
How can we add opacity to a background with UI? There is no opacity field in the style nor it is possible to add #fffff(0.5) to background hex color?
And the hex doesnt also take 8 instead of six hex values?
both work:
A color literal can be written as follows:
#rrggbb: 6-digit hexadecimal representation for red, green, blue (fully opaque)
#rrggbb(a.a): 6-digit hexadecimal representation for red, green, blue with alpha between 0 and 1
#rrggbbaa: 8-digit hexadecimal representation for red, green, blue and alpha
https://hytalemodding.dev/en/docs/official-documentation/custom-ui/markup#colors
So if (0.5) doesnt work 8 values wouldnt either i guess?
Is it that you have some additional element behind that shows or that the element is a compound element and you just set parts of it transparent?
Or do as i do constantly? change the ui file before i close the server and it syncs back the file to before the changes where made and i end up starting with the old values?
Dani. You are the most knowledgable Java dev i know.
Any suggestion or best practice for code/file generators in java?
I just use IDEA's Alt+Insert contextual generators
Ah ok. I was considering something that might autogenerate event bindings and ui references from named parameters in a ui file or the reverse.
But i guess i could figureout a gradlestep that just runs some logic and output to a file when triggered.
It just throws me an error HUD when I try to connect to my server :/
Im gonna see where that comes from then
make sure to enable debug mode in your client settings
Is there a way to change a model of a npc/entity at runtime? Or exchange a npc with another?
I've found this but there is no setter method like SetModel()...
ModelComponent model =
store.getComponent(Ref, ModelComponent.getComponentType());
Maybe this way?π I remove the model component and add a new one.
ModelAsset modelAsset = ModelAsset.getAssetMap().getAsset("NewModel");
Model model = Model.createScaledModel(modelAsset, 1.0f);
Ref.getStore().removeComponent(Ref, ModelComponent.getComponentType());
Ref.getStore().addComponent(Ref, ModelComponent.getComponentType(), new ModelComponent(model));
Does anyone know how i can trigger my own custom events to other plugins like hytale does?
Do i need to use EventBus ?
What kind of custom event are you looking to add?
Just plugin interaction?
yea custom event something that i trigger in one plugin and for example react in another plugin
sounds interesting - I don't know the answer but I'll be watching
You can register global events i think that goes outside ecs or ecs events.
I am still not sure if you need some reference if linking to other mods events. There is some type discovery in java i dont quite get.
Hi guys does any one know if I can UICommandBuilder.set("#id.Style.TextColor", ...) is this supported?.
There are two component related to entity models: PersistentModel, and ModelComponent
Ah thanks. How can I set the model? I need a ModelReference but how can I get a ModelReference for my model?
"Spawners": [
{
"SpawnerId": "Falling_Leaves_Crystal_Particles",
"FixedRotation": true,
"PositionOffset": {
"Y": 0
},
"TotalSpawners": 1,
"LifeSpan": {
"Min": 0,
"Max": 0
},
"SpawnRate": {
"Min": 0.01,
"Max": 0.05
},
"StartDelay": 0,
"WaveDelay": {
"Min": 1,
"Max": 5
},
"MaxConcurrent": 5
}
],
"LifeSpan": 0,
"CullDistance": 50,
"BoundingRadius": 0,
"IsImportant": false
}
what do i need to change if i want more particles?
If you search for modelreference you should find good examples in the hytale-server.jar
Ah I think this way:
ModelReference model = new ModelReference("Model", 1.0f, null);
pModel.setModelReference(model);
Spawnrate
hello! how do i identify which chunk to delete? like is the coordinates in the game the same as the region.bin files it stores in the server
hello how can i add commands node "coins.admin" like this. without "com.example.coins.admin"?
or should i remove com directory as a what i want?
what is a commands node?
every command have a unique nodes
"hytale.command.warp"
"hytale.command.warp.list"
You are talking about the text translations?
are you calling withPermission("coins.admin") in the command constructor?
nvm i fix it thx
what was the problem?
it was about the wrong naming π
Is update 4 pre-release error handling broken?
[2026/03/05 15:38:28 INFO] [HytaleServer] Shutting down... 9 'client.disconnection.shutdownReason.pluginError.detail'```
How is one supposed to know which plugin did error if the error that tells what error did error is also having an error?
did you look in the log files and look in the console output, did you run the server with --debug?
I was gonna say, maybe they lowered the default verbosity.
with debug no, but the log file is a normal boot and no error it just stops with the shutdown message which doesn't trigger the error or a stacktrace
--debug doesn't work with aot cache letme see if I can disable that
wait a minute startup doesn't accept --debug, what are you talking about?
i assumed you where running the server trough an idea with gradle runserver.
ah no just cloned release into pre-release and seeing what errors it's facing, but it's not letting me where which plugins are triggering error
maybe --log=debug
client.disconnection.shutdownReason.pluginError.detail this seems to be a bug, it's unable to throw the error
but if you are just flipping from release to prerelease with old mods, then you should expect everything to break.
It's expected that there is an error. It's not expected that the error message is unreadable
yeah just preparing need to get past the mods that proper broke because I know there's a bulk of mods no longer being maintained
That is true.
sadly nope java.lang.IllegalArgumentException: Bad level "DEBUG"
But in that case you could add them one by one instead of all at one go and hope.

yeah it makes this much much harder to go through to find what mod is it, funtimes ahead
Well you could also do the binary search, and half of them, if it still breaks, take half of them, once they are validated you can start breaking down the other onces. Then you might get fewer checks for broken ones.
these are the debug levels
private static final Level[] standardLevels = {
OFF, SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST, ALL
};
but I doubt that'll help in this case
isn't all enabled by default when the config is empty?
in release i would expect it to be severe or maybe warning
No, when I log in my plugin, nothing at FINE or lower get's logged unless I pass --log MyMod:FINEST
I think there's a big problem with the Attitude System, and the best example would be: You can't easily have "other NPCs" treat an NPC as it would treat the Player.
The NPC (Ex: Skeleton_Fighter.json) or the template it's derived from (ex: Template_Intelligent.json), can have an AttitudeGroup set to [something] or "Empty".
It is often "Empty". In that case Attitude will depend on the defaults: DefaultPlayerAttitude ("Hostile" in this case) and DefaultNPCAttitude ("Ignore" in this case).
The NPCGroup(s) the NPC belongs to is only used in the "target" portion of an AttitudeGroup definition(Ex: Hostile : GroupX, GroupY)
I created a new NPCGroup called "PlayerTeam", and I added/modified AttitudeGroup(s) to have specific attitudes towards this group and vice-versa.
But unless I "override" every single NPC (or at least the Templates) to change the AttitudeGroup from "Empty" to one that "has" Attitude definitions for the PlayerTeam, I cannot have other NPC treat my NPC as it would the player.
What WOULD make sense to me would be to have the NPCGroup (and other Groups) determine the Attitudes towards other groups. Or at LEAST permit the NPCGroup to override and AttitudeGroup from the NPC/Template. (fitting today's environment of group identity politics ?!)
It would allow you to create a group, assign a bunch of templates/NPC to that group and presto you have Attitude management for that any and all members of that group.
Or for this exact use-case: Add a parameter in the NPC definition that would set this NPC as a "PlayerAlly", which would cause the DefaultPlayerAttitude to be used instead of the DefaultNPCAttitude
But if i'm missing an easy solution, please enlighten me. I'm actually hoping for that.
Ok pre-release deff need to be updated again before release because no way the error handling is working.
[HytaleServer] Shutting down... 6 'client.disconnection.shutdownReason.validateError.detail' how is one supposed to make sense of it D:
Hi, any one know how i can restrict a player form interaction with a block (F key) and also restrict breaking of the block?
which comes first? the block or the interaction? lmao
block π
I never miss an opportunity for a dumb joke
That message is the one that gets displayed in the client if its the one that booted the server, if you need the exact details you need to get the error from the log file yourself
I'm tad confused, the validateError will output the plugins it's
this one client.disconnection.shutdownReason.pluginError.detail does not, I was removing mods until I found what was causing that sudden shutdown without further logging, after removing the culprit that It got to client.disconnection.shutdownReason.validateError.detail
edit: Ok it was Simply Trash causing the boot fail, the server just continued to boot normally past the Failed to setup plugin message so it didn't look like that had anything to do with the shutdown.
Hello, I would like to know how to solve this problem. I don't understand, even though I imported my 3D model correctly and I think I did everything right, I can't figure out how to easily create potions. For now, I based it on the bandage, thinking it would be simpler, but now my model looks weird (unfortunately, I can't post a screenshot here). Could you help me solve my problem?
-# I see that the @
How do you get the spawn point of the world? I can only find methods which pass world and uuid (of entity?) as parameters. I assume every world has a spawn point to begin with?
Can someone help me fix my texture bug, please?
i just pass in a random UUID.
I think its meant if you have more than one spawn point, it uses the UUID for some random stuff.
You could also just get the list and use the first element
You can also go into the code under SpawnCommand#resolveSpawn and see how they handle it
I still need help guys
BreakBlockEvent figure out if the block you don't want to break and cancel the event.
UseBlockEvent is this for every kidn of intraction to a block ?
pressing teh F key on a chest bench or bush ?
Block the interaction.
We dont have thing like TNT or Hoper right in this game ?
just thinking of edge cases
there's perm systems if you're not trying to dev something
Does anybody know how to get a entity component in the event player connect and player disconnect?
public class WelcomeSystem extends RefSystem<EntityStore> {
@NullableDecl
@Override
public Query<EntityStore> getQuery() {
return PlayerRef.getComponentType(); // Only run for Players
}
@Override
public void onEntityAdded(@NonNullDecl Ref<EntityStore> ref, @NonNullDecl AddReason addReason, @NonNullDecl Store<EntityStore> store, @NonNullDecl CommandBuffer<EntityStore> commandBuffer) {
var component = store.getComponent(ref, myComponentType);
}
}
This is run every time a player joins and leaves a world
Mhh, i need it when he joins / leaves the server
that's before and after the player is in the entitystore, so too early and too late to interact with it
Does that also get triggered like leaving world and entering world
when he joins / leaves?. Has to right ?
if the server has no worlds for example, the player connects and disconnects (due to error) without ever joining a world
Mhh, well i want to save data to a database whenever player joins / leaves the server but i need access to the component system which doesnt work i suppose
Also, i suppose it always triggers onEntityRemoved first before onEntityAdded?
when swapping between worlds?
haven't tested it
Is someone able to explain to me how i have to register an Entity Interaction?
Why is this not working?
The code gets executed and no message or error in the log.
PersistentModel pModel =
store.getComponent(Ref, PersistentModel.getComponentType());ModelReference model = new ModelReference("Model_Form2", 1.0f, null); pModel.setModelReference(model);
does anybody know why this is happening sometimes, but not always? most of the time it will load just fine, but sometimes this just happens for seemingly no reason
[2026/03/05 22:12:19 INFO] [World|hub] Added world 'hub' - Seed: 1769135867403, GameTime: 0001-01-22T06:12:51.031187711Z
[2026/03/05 22:12:19 INFO] [SimpleClaims|P] Registered world: hub
[2026/03/05 22:12:19 INFO] [SimpleClaims|P] Registered map for world: hub
[2026/03/05 22:12:19 INFO] [Universe|P] Removing world exceptionally: hub
[2026/03/05 22:12:19 INFO] [World|hub] Removing individual world: hub```
Its not even alive long enough for this check to see it
``` Universe.get().getWorldConfigProvider().load(finalPath, worldName)
.thenCompose(config -> Universe.get().makeWorld(worldName, finalPath, config))
.thenAccept(w -> {
if (w != null && w.isAlive()) {
LOGGER.atInfo().log("World '" + worldName + "' loaded successfully on attempt " + attempt);
registeredWorlds.add(worldName);
activeOperations.remove(worldName);
processTeleportQueue(worldName, w);```
Can someone explain to me how Armor is not in the default stat map ? Where does that come from ?
then here is the exact same code just working
[2026/03/05 22:31:33 INFO] [DungeonSystem] isDungeon check for 'hub': false
[2026/03/05 22:31:33 INFO] [AdminManagementSystem] Loading world 'hub' (attempt 1 of 3)
[2026/03/05 22:31:34 INFO] [World|hub] Loading world 'hub' with generator type: 'HytaleWorldGenProvider{name='Default', version=0.0.0, path='null'}' and chunk storage: 'DefaultChunkStorageProvider{DEFAULT=IndexedStorageChunkStorageProvider{}}'...
[2026/03/05 22:31:34 INFO] [World|hub] Added world 'hub' - Seed: 1769135867403, GameTime: 0001-01-22T06:12:51.031187711Z
[2026/03/05 22:31:34 INFO] [SimpleClaims|P] Registered world: hub
[2026/03/05 22:31:34 INFO] [SimpleClaims|P] Registered map for world: hub
[2026/03/05 22:31:34 INFO] [WorldGenerator] Loading world-gen with the following asset-packs (highest priority first):
[2026/03/05 22:31:34 INFO] [WorldGenerator] - [ 0] Hytale:Hytale:0.0.0 - [C:\Users\Administrator\Desktop\Server\Assets.zip]
[2026/03/05 22:31:34 INFO] [WorldGenerator] Set prefab-loader config: path=/Server/World/Default, store=ASSETS
[2026/03/05 22:31:35 INFO] [WorldGenerator] Initialized ChunkGenerator-1 executor
[2026/03/05 22:31:35 INFO] [WorldGenerator] Found location for unique zone 'Zone1_Spawn' -> Position: {392, 310}, Score: 86.80%, Time: 0ms
[2026/03/05 22:31:35 INFO] [WorldGenerator] Found location for unique zone 'Zone1_Temple' -> Position: {627, 226}, Score: 81.83%, Time: 0ms
[2026/03/05 22:31:35 INFO] [World|hub|M] Initializing world map generator: com.buuz135.simpleclaims.map.SimpleClaimsChunkWorldMap@3b3bb79b
[2026/03/05 22:31:35 INFO] [World|hub|M] Generating Points of Interest...
[2026/03/05 22:31:35 INFO] [World|hub|M] Finished Generating Points of Interest!
[2026/03/05 22:31:35 INFO] [AdminManagementSystem] World 'hub' loaded successfully on attempt 1
[2026/03/05 22:31:35 INFO] [InventoryManager] Saved ADMIN inventory for GrazedGaming
[2026/03/05 22:31:35 INFO] [GlobalInventoryWatcher] Saved inventory for GrazedGaming leaving world default
[2026/03/05 22:31:35 INFO] [PlayerSystems] Removing player 'GrazedGaming (GrazedGaming)' from world 'default' (1b515282-db5d-4dc1-8ccd-1357bbb99d59)```
Because armor and resistances are freshly calculated for every damage hit in DamageSystems.ArmorDamageReduction - getResistanceModifiers().
Was anyone able to make chests drop items from a custom spawn table?
Any alternative to Weapon Stats Viewer plugin? Hasn't been updated sadly
Did you make a custom chest and it isnβt dropping items when broke?
I donβt know how to create a custom spawn table to link it to the chest
- the chest needs to respawn which is making the whole process harder
Oh, so you are wanting a chest to random spawn with random items in your world?
Yeah
Iβve looked around in the Asset Editor but I wasnβt able to find anything useful
This will more than likely require a mod/plugin and not an asset to work
Is there not one on CurseForge already?
nvm, got this too work
Iβm not aware of that
What are you wanting this plugin to do?
what is your vision
Have an admin place chests that have randomly generated loot
The chests respawn the loot after x amount of time
Let me see what I can do for you
Amazing, thanks!
Does anyone know where I can find the list of all Item Ids in a text file?
Thanks! β€οΈ
Is the documentation old or recently changed or did i just do something weird?
I added a component in a on entity add event on a player entity, with add Component. It saves it loads etc.
But reading the official documents afterwards it states that the component will only be added in memory and not saved and should be added with put in case one wants it to save?
Im a little confused by the authentication section https://support.hytale.com/hc/en-us/articles/45328341414043-Server-Provider-Authentication-Guide#method-b-device-code-flow-rfc-8628-
It doesnt seem to mention, what happens once your refresh token expires after the 30 days?
Am I expected to have to log in via a browser and grant a new one? Like... do I write it in my calendar to go and get a new refresh token twice a month?
Is there really no way to automate extending the refresh token, or using it to get another before it has expired?
I could be wrong but a standard is that each time it use the access token and if its old it will use the refresh token to create a new access token and that will result in a new refresh token as well?
oh okay maybe, I will check if thats the case
i think its the main oauth work flow when utilizing refresh tokens.
does anybody know why calling:
velocityComponent.addInstruction(new Vector3d(0, 129, 0), null, ChangeVelocityType.Set);
on a player works fine but :
velocityComponent.addInstruction(new Vector3d(0, 130, 0), null, ChangeVelocityType.Set);
breaks completely and just keeps sending the player infinitely upwards
no
add/put have nothing to do with saving, they are just different operations.
Add only allows you to "add" a component so it fails if it already exists.
Put lets you either add or overwrite a component.
Saving is determined by
- If the entity has the base components needed to be saved (e.g. Transform, ...)
- The component is setup with a codec so it can be serialised
Space is correct. The refresh token is also refreshed when your access token is refreshed.
You should only need to manually authenticate if you turn your server off for >30 days
Good to know, then it was just a weird description or legacy probably.
So say someone has a rank or type of currency, would you recommend me to use a database or component to store said data?
Iβm a little confused on the component system and the intention of itβ¦ Thank you in advance.
Component system is meant to make things smaller, and more losely coupled, if you intend to store data for that server for that user, i would say it would be stored on the player, I would probably use a component. in the majority of cases I would say, never use a database, unless you have very good reasons to do so. I would even say dump a file to disk with your own logic before going trough the trouble of setting up a database.
Unless you need very specific cross mutliple running servers tracking of data.
If you add a component to a player and set up det codec correct it will save all the component data to disk in that players file that already gets created each time the player is saved by default.
Using a datbase, that would mean setting up a database mapping for user on ids, creating up the tables making sure read and writes happen at the right time, and all other database angst and queries.
The core idea of components is that you can have specific system that applies just the logic that is needed without having to know the rest of the entity structure, that only need to get the relevant components in question to do said logic, without needing to pull all other data, also they get organized better in memory, and could if done right give quite the performance boost.
The systems essntially comes in the flavor of triggered by event, or triggered by tick depending on what you need, might be cases i miss.
So if you need a ui that track all players current currency in realtime, that would probably be a ticking system talking with a custom ui, using data from the currency component and player component.
If you are shopping, being just a one off thing, it would probably be a AttemptPurchase event, that might change into other events as each ImplementedEventHandler, does it thing and decides what happens next, or a single larger event doing it all. Depends a bit on preference as well.
First of all, I want to say thank you for this detailed response. It most definitely cleared the questions I had. I have nothing to say. You answered that well π
Does anyone know if Violet will maintain the furnishings mod update before the release update next week?
The furnishing mod fails asset validation on update 4, and I'm not sure why. But if can't fix before the update it'll fail every placed object
The update 4 server is more strict, it will refuse to boot if the mod ain't removed unlike attm.
try adding --skip-mod-validation when loading the server?
skip-mod-validation is not a recognized option
on the server jar? I've seen many people refer to that option 
If you mean on single player worlds, there's a checkmark in the "Advanced Options" for the world
doing it with a lauch parameter yeah --accept-early-plugins --auth-mode authenticated --assets Assets.zip --bind etc, but it refuses the parameter
it's a dedicated server on linux
I just searched on discord just saw someone else asking if they removed this option on pre-release
well. that sucks.
hypixel be like authoritarian regime on modding, it's either the modders update every update or no deal xD
I just bringing this up because the last thing I want is furniture content mods failing (macaw's one fails too) and if the modder doesn't provide the update before release there's no going back once placed blocks fail
I fear violet's furniture will be one of those, so finding what needs to be done to fix, I'll just try to fix on my side beforehand
to be fair though people shouldn't be deploying actual servers on pre-release
I need to go because how else will you know what breaks and prepare for an update set to release next week
a side test server not the main server on pre-release ofc
ok so... now you do know which one will break, so... wasn't that a successful test?
I know it breaks, the problem is, unless I want a tsunami of purple blocks decorating everyone's buildings I must find a way to have the mod survive update 4
I'd say the only real way to know whether a plugin will be updated will be to look on the comment section in curseforge and see what's gong on there. Unless you want to ping violet directly. that's also an option.
It's a hugely popular mod violet will surely be pinged, after it breaks and there's no recovery, the only way is updating during pre-release before servers update to update 4
right now almost nobody knows what's ahead of them if the furniture mods break, the updates need to be provided ahead of time or placed blocks fail
@nova bronze would you like to weigh in ?
Does anyone know how to hide all entities except a certain one for a player?
it's not that violet :p
I dunno man I'm just saying vaguely asking in the aether probably isn't useful π
it's the hypixel violet, she got hired
On update 3 the only issue was the validation warnings, that can be skipped. This time it seems to be something more strict, if it can be bypassed fine but that skip option seems to have been removed, perhaps someone will find a workaround
Looking at her mods, I can see why they hired her tbh
yep pretty high quality work, I just hope she can get ahead of update 4 to prevent the update releasing and the mod having to be removed to be able to boot the server, because that'll ruin a lot of people's worlds.
Oh I just told macaw he'll fix it on his side and let violet know \o/
who is that?
bwuh
sorry about that 
macaw? Just search macaw in curseforge xD
on update 4 the server does not accept the validation skip parameter btw.
but it doesn't seem to be a normal validation issue (the versionign stuff of update 3), only some specific mods fail it
Probably those that didn't fix calls that where marked deprecated functions in code last time around.
yeah maybe it's that. On update 4 the server doesn't log these errors by default, it just lists following mods failed: X X and X and you have to remove them to boot
Can you share/elaborate because the logs absolutely should have why it failed
Ok for example Violet's furnishings mod on current pre-release, server will fail to boot, it will log this:
Mod Violet:Violet's Furnishings failed to load. Check for mod updates or contact the mod author.
[2026/03/06 16:43:28 INFO] [HytaleServer] Shutdown triggered!!!
[2026/03/06 16:43:28 INFO] [HytaleServer] Shutting down... 6 'client.disconnection.shutdownReason.validateError.detail'```
When I search the log for messages related to the furnishings mod, it only shows the one where the pack loads, and this error at the end. I'll need to dig through every error on the log it didn't mention the mod on the error message perhaps
This is what I get when I tried to load it
these are all the asset errors which is why the mod is not loading
ah thank you I was searching around for furnishings but it error'd the specific assets
If you want to make the world still load you can use --ignore-broken-mods in the server arguments, this replaces the old --skip-mod-validation and is named better for what it does.
Or you could extract the asset pack's zip so its a folder, so the pack is "mutable".
When a pack is mutable we allow it to load with errors, and when its mutable it also allows you to modify the assets with the asset editor so you could possibly fix the issues yourself if you need.
that's helpful thanks! Yeah I was confused on it refusing the skip tag so it just got renamed
gonna filter my logs better for the SEVERE lines shouldn't have missed those error lines
except people assumed that "validation" meant the version check but it actually means, "this mod is broken and will not work correctly"
that's
on linux dedi at least you don't need to do anything to skip the mod versioning, that changed from that initial confusion with update 3 didn't it?
I just went mod by mod .jar and manually edit the manifests anyway
How do you increase an entities Max HP ? Via code? I could not find a way in the entityStatmap to setMaxValue or something
I hope they fix the mod load order. I have validation issues with my mod because it loads before the dependencies. And I've added them in the manifest as dependency too
Since Update 3
Do you have a basic example or way to replicate this?
Maybe this helps:
- Install any mod which adds content like weapons
- Create a new world
- Create a pack mod (Don't know if this is important but the first letter should be earlier in the alphabet than the other mod).
- Duplicate an Item or Weapon from the installed mod to the newly created pack
- Add the installed mod as dependency in manifest.json
- Pack the custom mod to a .zip
- Move it in the global mods folder
- Create a new world with the custom mod and with the dependency mod
- The interaction will not work and logs say missing interaction
And maybe interesting to know it worked a few times in my world where I am creating the mod (No missing Interaction etc ). But never when I packaged it to a .zip.
Is PlayerMouseButtonEvent called by the server when you interact with an entity?
Seeing that you're at Hypixel Studios, I would like to suggest this to be mentioned in the manual π For right now I dont see any text mentioning how this refresh works. Does the same refresh token simply get its life cycle extended every time I use it?
@sterile forum Sorry to bother you but I figured you would be the best to answer this question with what we were talking about earlier today.
I am wondering how you would organize shared data. Lets say each user can create a world, nobody can join/edit that world unless the owner allows the user to do so via inviting them or letting them temporary visit. Where would I store the data for the world data so the server knows who's the owner and who is coop in the world, etc. Do you understand what I am asking?
I'm pretty sure interaction is caused by a key bind, "F". So I believe no to answer your question.
There's an interaction event I believe
I tested 2 events and no one worked :((
How are you registering the listener?
with EventRegistry
Register a "resource" to the world's store with that info
No the token gets replaced when you do a refresh.
To do a token refresh the server provides the refresh token and gets back a new refresh + access token.
@tardy kelp Might want to check out InteractionModule
ItemUtils.interactivelyPickupItem
frustrates me so much, the event triggers but modifying the item doesn't work since it never reads the itemStack from the event...
Good catch!
https://accounts.hytale.com/feedback
What catagory am I supposed to put it under?
I'd do feedback
Right now, it's intended behavior with being able to override it being an oversight, not a bug imo
For sure, just inconstancy when looking at other event events.
Example being ItemUtils.throwItem
So I want to add "tags" to permission groups. What's the standard for doing so? Shall I link a database entry to the group and read off there? Or is there a way to add it to the pre-existing permission provider by hytale?
Do you mean like subgroups? or something else
Prefixes, suffixes, colored names, etc.
I'm thinking that I need to make my own permission provider and attach to a database.
AbstractCommand:
private List<String> permissionGroups;
groups are just strings from a quick look up, but as far as I know there is no limit to number of groups a user can have
Yes, I understand but I'm wanting the user to have a prefix, suffix, colored name say on their player tag or in chat.
I'm just gonna go with this route for now π
Fair enough, I would have just used groups for storage and fetched what groups a user has, then modify based on groups they have
I want the edits to be modular and not hard coded though, how would I get/save the data on the groups? ( prefixes, suffixes, etc.)
Like the admin would be able to easily do /rank setprefix <rank-name> <prefix> with the predefined groups from the hytale permission system.
Gotcha Gotcha, would need to look for what storage mechanisms the game has. I know there is the Config which could be written and read on boot, and saved while running.
com.hypixel.hytale.server.core.util.Config: While this meant for setting for your mod, I can see a case where you could design it to be a datastore for such information
Fixed, will be in the pre-release next week.
Also made it so cancelling the event doesn't drop the item anymore, its a little weird that it did that before.
A group in the server is simply a string id and a set of permissions, it doesn't have any extra data
Which I completely understand but I want to add extra data. To do so, make my own class implementing PermissionProvider and hook up with a database?
Yeah you would probably want to implement your own PermissionProvider so you can store the data in a different way. Doesn't need to be a database but at least in a different structure so that you have that extra data you want to save for a group.
You don't have to do it that way though, you could simply store extra data that uses the group name as the key.
Since you would need a way to fetch that extra data anyway it doesn't really matter if its in the same thing the server uses or a separate thing alongside it.
That's huge, thank you! π
One of the most common things that trips up people here
has anyone hosted, a hytale server using the discord? A discord I'm in just got Game servers featured enabled so, we are wondering how the experience is, etc...
is this also referring to cancelling the UseBlockEvent.Pre event?
Because i noticed if you cancel using a berry bush, it drops and breaks the bush.
(where the event is called, if its cancelled, the state is set to failed. i feel like maybe it should be skip instead of failed?!?!?)
I used Luckperms to add tags, nickname, colored name, and chat color. If this is what youβre talking about.
I have not seen one yet.
Is it possible to create custom visuals (in world space, not HUD) that are visible through blocks like health bars?
Are you speaking of like a hologram over a block?
Yes. The hologram would be an image, not a nametag.
I haven't seen any, but haven' t looked for that specific thing.
There are hologram mods on curseforge that might do what you are wanting.
Those just create nametags, they aren't visisble through blocks unfortunately.
Yes, I know LuckPerms exist. Thank you. I just prefer to easily add it to my own mod.
Cool. I got it done! Appreciate the help!
I was going to do that, but already had LP installed so I just used it to run my chat formatting.
Yes, and I would recommend you that you don't use it unless you've got boosts that are like not going to be used like you've gotten every other feature enabled that you need.
It's cheaper to just buy a server from Nitrado / BisectHosting
Are instances meant to be temporarily worlds that are unrecoverable/not meant to be saved, something like bedwars, skywars, etc? And worlds meant to be more permanent saves like survival worlds, skyblock, tycoonβs, etc.
Correct!
instances may be configured to be saved, but they're intended to be ephemeral and spun up/down on the fly
So, I wanted to make it so my bench is animated while I'm in the crafting interface so I changed the state id: crafting to StateData, my animation works as intended, however the crafting interface doesn't show up anymore and I'm not sure how to get both the interface and animate the bench at the same time
π SmartInventoryBridge β Looking for Beta Testers!
Hey everyone! π
I've been working on a server plugin for Hytale that synchronizes player inventories across multiple servers β perfect for anyone building a server network.
What does the plugin do?
π Inventory Sync β Your inventory automatically transfers when switching servers
π‘οΈ Dupe Protection β Prevents item duplication with a freeze system during sync
ποΈ Flexible Database Support β MySQL, MariaDB, PostgreSQL & Redis
β‘ Crash Recovery β Inventories are safe even during server crashes
π§© Mixin-based Protection β Blocks automatic item pickup during synchronization
Who am I looking for?
I'm looking for beta testers who want to put the plugin through its paces before release! Ideally:
You run (or plan to run) a Hytale server with multiple servers
You have experience with server administration
You're willing to report bugs and provide feedback
What you'll get:
β
Early access to the plugin
β
Direct line to me for support & feature requests
β
Credit as a beta tester when the plugin is released
Interested? Just send me a DM! π©
why would you want a mod that lets you have the same inventory on multiple servers?
For example, citybuild systems that are distributed across multiple servers like CB1, CB2, and so on, or when you want to keep farm worlds completely separate from the citybuild server. π
oh right i kept thinking about different server needs like factions or smp
π
I am trying my teeth on type 3 inventory rn, every join spawns you with the Same inventory but you can upgrade its parts
Hi! I need some advice for my WizardTale project. I'm looking to implement:
Wands: A system so that there are several that work (visual change only).
Spells: A selection menu (wheel or list type) accessible via right-click with a wand, and I would like them to be obtainable by finding spell pages or something similar.
How would you advise me to organize this technically so that it is fluid and easy to code? Thank you!
Well, Iβd suggest taking a look at these 2 pages. Itβll be useful for your interactions and items.
https://hytalemodding.dev/en/docs/guides/plugin/inventory-management
https://hytalemodding.dev/en/docs/guides/plugin/item-interaction
Wait, are links allowed now?
""official"" links are allowed
not github tho 
all projects on github are not offical from Hytale.
well i know that π just sucks you cant share libraries or snippets or anything.
or "hey, here's my class, help me"
because ... "no advertising"
Itβs a community page made by known people in here. Iβm sure itβs fine. I believe Iβve seen it posted before. I donβt see why it would be an issueβ¦
It's also the place where Hytale's official docs (custom ui, npcs, worldgen) currently live. That's why we asked for the whitelist
Anyone have any good resources/advice for remaking open computers in hytale?
For a while sharing any links got your messages deleted.
Still does except for hytale.com and hytalemodding , basically
start by googling how to run LUA scripts in java, maybe? (or whatever scripting language you want to use)
heck if you can find the opencomputers source code... would be even better
That would probably be a good first step haha
Hi all,
If I wanted to cut a field(?) "Default Attachments" out of ModelAsset and throw it into the ApplyEffect interaction under EffectId, how could I do that? Learning Java has been going... real slow.
If it is as simple as migrating the DefaultAttachments part of the code from ModelAsset and throwing it into the ApplyEffect Interaction, then guidance on how to do so would be tremendously appreciated!
Lua, yeah that would probably be a fast way to do it for a broader userbase.
I played with the idea but was considered doing it using 6502 or Chip8 bytecode/asm support. But adding some work to see if one could push it up to using full sized bytes logic instead of breaking things down to nibbles.
But finding the right language, with a good vm is really important.
In the ideal world, the vm for each machine is isolated or partially isolated to that machine as well. So any crash that brings down the vm interperter due to error in one machine, only that machine crash due to the "hardware failiure" instead of bringing down the entire VM environment for all machines on the server.
How might one handle breaking double beds? With single beds, you cannot break another users bed... because that just makes sense. For double beds, the story is slightly different. There are three options I can think of:
- Anyone can break the bed.
- Only owners can break the bed.
- Only the primary owner (first registrant) can break the bed.
I prefer 3, but it does prevent your base partner from redecorating. 2 comes with a trade off where a troll comes along, enters someone else's bed, and then breaks it. Unless there's a suitable 4th option?
Are you tracking the bed entity after ownership?
Like if someone picks it up, and is in their inventory, and when they place it back down they would still have ownership? Or I guess how are you determining "Ownership"
Nah, ownership works in a similar way to interacting with a bed for the first time after placing it. You give it a name. That assigns your UUID to the Bed's RespawnBlock component. When it comes to double beds, it's just allowing two UUIDs to be assigned and you would be co-owner in a sense.
So breaking the bed would remove all owners as it would if it's a single bed. Logically, that's the simplest most vanilla-like implementation
Mix a permission system with a microClaim system where you "Grant decorating" in your house with your "partner" or "Co-Dweller" and then only you two can place the bed in "home areas" which prevents the Trolling of placing beds in someone elses house and claiming them (you build that into the claim perm where only people with permissions may sleep in the bunkbed or any bed if you want) then anyone with deco or sleep perms could break it or redecorate and avoid trolling but exploring beds are free for all for anyone to break them
If you want to prevent Land Claim trolling where people claim large areas make it a Block you place when you First join the game and you only get one each so coDwellers can have a bigger area vs solo dwellers (Caution with your claim depth though or the claim owns it all the way to bedrock and noone can mine through the lower areas [in some cases this is a good thing but in others not so much]) you could also allow upgrading of the landclaim block for larger areas the more they play but that beets the co-dweller system cause you would have to have a radius around them that anotehr person couldnt claim in so there is room to expand
I've been stuck on this for more than one day, and your solution doesn't seem to solve my problem (marker showing on compass, but not on map ?)
UserMapMarker userMapMarker = new UserMapMarker();
userMapMarker.setId("user_test" + UUID.randomUUID());
userMapMarker.setPosition(250, 250);
userMapMarker.setName("Test marker");
userMapMarker.setIcon("User1.png");
userMapMarker.setColorTint(new Color((byte) 140, (byte) 255, (byte) 0));
userMapMarker.withCreatedByName("Moi");
userMapMarker.withCreatedByUuid(playerRef.getUuid());
WorldMarkersResource markersStore = world.getChunkStore().getStore().getResource(WorldMarkersResource.getResourceType());
markersStore.addUserMapMarker(userMapMarker);```
Are you spotting a error on my part ?
looks about the same as my code, i would assume it would work
hum
i would recommend maybe trying to get the marker by id, and try remove it first just in case its cached or something.
Ex:
WorldMarkersResource worldMarkersResource = store.getResource(WorldMarkersResource.getResourceType());
UserMapMarker oldMarker = worldMarkersResource.getUserMapMarker(id);
if (oldMarker != null) {
worldMarkersResource.removeUserMapMarker(id);
}
worldMarkersResource.addUserMapMarker(userMapMarker);
then again your ID is random so that shouldnt happen
I've removed the markers before with a command so idk
im le stumped sorry
Do you need to update the map or something after the command ?
i have nothing in mine to update
ok ok
just gonna ask a silly question, but to verify:
userMapMarker.setPosition(250, 250);
You're near that position that it would show on your map, yeah?
Yea i'm on it, also i'm running around the marker (on the compass) lol
long shot, try without the color
gonna try, good idea, gonna remove some values also
It's nothing stupid like the issues people had with codecs, where it really dislikes lowercase on the first letter of keys.
Can you change SetId to "User_test" + ...?
oh
also to verify, User1 is a custom one?
Probably not it, but if it is, it would be hell to find i guess.
No, it's the default one if you don't have a file (a green background with a cross)
i dont see that one, i see UserA
these are all the ones i see in the file
Campfire, Coordinate, Death, Home, OutsideViewMarker, Player, PlayerAbove, PlayerBelow, Portal, PortalInvasion, Prefab, Spawn, Temple_Gateway, UserA, UserB, UserC, UserD, UserE, UserF, Warp.
It was the Icon..
public void handleUserCreateMarker(PlayerRef playerRef, CreateUserMarker packet) {
Ref<EntityStore> ref = playerRef.getReference();
if (ref != null) {
UserMarkerValidator.PlaceResult validation = UserMarkerValidator.validatePlacing(ref, packet);
if (validation instanceof UserMarkerValidator.CanSpawn canSpawn) {
Store var13 = ref.getStore();
UserMapMarkersStore markersStore = canSpawn.markersStore();
DisplayNameComponent displayNameComponent = var13.getComponent(ref, DisplayNameComponent.getComponentType());
String createdByName = displayNameComponent == null ? playerRef.getUsername() : displayNameComponent.getDisplayName().getRawText();
UserMapMarker userMapMarker = new UserMapMarker();
userMapMarker.setId("user_" + (packet.shared ? "shared" : "personal") + "_" + UUID.randomUUID());
userMapMarker.setPosition(packet.x, packet.z);
userMapMarker.setName(packet.name);
userMapMarker.setIcon(packet.markerImage == null ? "User1.png" : packet.markerImage);
userMapMarker.setColorTint(packet.tintColor == null ? new Color((byte)0, (byte)0, (byte)0) : packet.tintColor);
userMapMarker.withCreatedByName(createdByName);
userMapMarker.withCreatedByUuid(playerRef.getUuid());
markersStore.addUserMapMarker(userMapMarker);
} else {
if (validation instanceof UserMarkerValidator.Fail(Message displayNameComponent)) {
playerRef.sendMessage(displayNameComponent.color("#ffc800"));
}
}
}
}``` Here's the vanilla method, since I saw the User1.png, I thought it worked lol
Thanks A LOT, been stuck for embarassingly too much time and I tried so many classes and methods and finally it was just a png error lool
Is there a way to play an animation on a npc in java? (I have a ref to the npc "Ref<EntityStore>")
wonder if thats old, non working code.
It's maybe old code, or it's never null in practice and so no one realized the png doesn't exist anymore π€·ββοΈ
thats the problem when you use Strings everywhere in your code, and forgot to change it... silly HyDevs
glad you figured it out, wahoo!
Going to sound stupid... probably.. I am trying to create a class for modifying components stored on a player by my plugin, accessible by other plugins.
In order to be thread safe I need access to CommandBuffer, but this interface would be outside of Events/Ticks. So how could I make this class tick once per cycle OR access the commandBuffer to add something to the queue
Can i add stats to item like helm stats? Is it possible? Not a custom item. For default items example daggers, swords, bows, helm, gauntlet
I have no need for the default permissions/group system provided by Hytale. Is there a way to disable PermissionsModule?
with /plugin disable and a flag to make it persistent, I believe
Cool thanks
i have a .zip mod that has items that glow, but they are very bright. where would i look to change the values of each item?
unzip it and edit the files directly, or in the asset editor
you can directly use the unzipped in your mods folder
what file would it be, or what heading, would it be particles?
If you tell me which mod it is, I can take a look
scuffed translucent glass. maker is n/a and its not updated for current version but still works. they used particles or something to achieve the transparency, but i guess particles glow. they are real cool, but some colors are very bright
is there a way to make the npcs restock instantly?
Edit Common/Particles/*_Crystal_Glass.png
i thought i would have to edit a value somewhere, how do i edit a particle .png to be less bright?
yea
This would be in the JSON file
thats what i was thinking, but not sure where
look for particles
Server/Item/Items/CrystalGlass/*_Crystal_Glass_* -> Block/BlockLight/Color
In the JSON it's BlockType.Light.Color
that gives me the color code for the light, but how would i change the intensity value?
make it darker
its showing an NS.json and an EW.json for each pane, which is the one i need?
those are for North-South and East-West orientations
you need to edit both unless you only use one of these in your world for some reason
ah, yea makes sense, ok. so im going to change that hex value to a darker one,
if you do it via the asset editor, you see it updated live
oh? let me open it up
just make sure you have the unzipped file in your mods folder
zipped mods are read-only
oh, gotcha, just unzip and throw it back in?
yep!
Is there any stats on the players that we can use by default like firstJoined, lastJoined, playTime?
there are
idk the specifics i use a mod on my server that has tags for that
So it's not.
It's not via hytale. Thanks though, you answered my question without intending to!
Does anyone know how to fix the random assets breaking. I try /update download --force but doesn't force the download.
@neat pelican sorry for ping. Do u know how can i do this?
thanks for the help
Does anyone know where/what is making plants/assets move in the wind?
whatever the item is, it should have an animation file or something
Nvm I fixed it, wasn't an animation
Can npcs do charged attacks?
I do not know. But quickly looking at Template_Weapon_Sword.json, it specifies Root_Weapon_Sword_Primary as the root interaction which specifies Weapon_Sword_Primary and looks like this:
Weapon_Sword_Primary (type: Charging)
Starts the primary interaction chain Weapon_Sword_Primary_Chain & handles stamina via Weapon_Sword_Primary_Thrust_StaminaCondition
Weapon_Battleaxe_Primary_Chain (type: Chaining)
Handles the fork between the different attack interactions (left, right, down)
Weapon_Sword_Primary_Swing_Left (type: Simple)
Handles swing animation and sound
Weapon_Sword_Primary_Swing_Left_Selector (type: Selector)
Handles trail effects and selects affected entities, and defines interactions for hitting blocks and entities
Weapon_Sword_Primary_Swing_Left_Damage (child of DamageEntityParent, type: DamageEntity)
Triggers camera effect for impact and the DamageEffects (Knockback, World Particles, Impact Effect)
On hit, it also modifies the entities SignatureEnergy stat by 1. (this is the charge required for the big signature attack)
It also specifies "DamageCalculator": {"Class": "Light"}. I don't know what this means, and I can't find a reference to this in the asset pack.
There is the Weapon_Damage (type: DamageEntity) interaction which specifies "DamageCalculator": {"BaseDamage": {"Physical": 5}} So if you start editing these interactions, that's where I would start
Anyone ever come across this weird issue during debugging where your custom pack is loaded prior to the Hytale:Hytale pack? If that happens your pack will end up throwing an exception that says the asset pack already exists because it attempts to register it a second time when the main pack is loaded.
Thx. I will try itβ€οΈ
I've been experimenting with objectives and stuff on hytale but I'm curious on how you guys would tackle my problem. I want to show more information to the players during the objective and at the end of it (for example showing markers for the reachLocations of the current objective). I already know how to create markers but how would I link the objectives and the markers, should I use add a kind of listener to detect when a objective starts and goes to the next step ?
Does anyone know if itβs possible to hide a block from players in Adventure mode or any other way? I know this can be done with entities, but it seems like thereβs no way to manipulate block visibility on a per-player basis
How about creating a packet of the block being set to air and sending it only to one player?
Iβll probably have to go that route anyway i was already looking into the ReplicateChanges from ChunkSystems
I think its just a matter of removing the block from the cache list and sending it manually whenever needed
Is it only me that wish that they used a different name than Chunk when it comes to the storage of entity/component related things.
I know a chunk is just a separated piece of something by definition, but it becomes confusing when you have block chunks as a more central concept in voxel games, and then suddenly a ArchetypeChunk that has nothing to do with block chunks but is a separate piece of the store where the Archetype data is gathered together.
At first i was convinced it was a specific store for a chunk to update it's internal entities only as some kind of performance logic when something in a chunk needed to do a lookup.
I actually had to make another look and make sure that they ChunkStore actually do referer to blockChunks.
is it possible to create uis in the asset editor or something ?
No. They are currently reworking the ui, maybe the new version will have some kind of ui editor for the new format, or eventually have one.
There are some third party and online versions, or external apps where you can make and see the .ui files when making them.
I don't know if the .ui format will remain at all in the long run or if it will be straight out dropped when the new version arrives.
Anyone know which class is referServer or refer to server in
is it possible to make damage numbers to different colors ?
So is there a bed wars or any pvp servers made yet or na
Has someone understood the logic of asset re-downloads on server connect? I just don't get it, I just get in, download whole assets again, restart the client, and suddently I have to re-download assets again.
Does this have some logic to it? Because I'm not making sense of redownloads when no files have changed.
yes look for hynetic
more recently I think I've noticed I don't always have to redownload assets, but I'm not sure why. I think it more reliably works after server restarts and I'm kicked as part of shutdown. But whenever I completely close the client or maybe go to main screen, it requires it again.
If I'd guess it probably has some sort of connection hash to check assets are still valid and there is some remanent of the past session, but I don't think it has a long expiry time or persistence and probably doesn't check the files much.
Likely will get better with time, though mods may make it more complicated
@neat pelican gm, i got another question about that scuffed glass pack, if i wanted to changed to pattern of the particle bit, like say cyan. if i change the pattern to look a bit like stained glass pattern, what file png would i need to edit?
I don't understand the question. But there's only 2 different kinds of textures in the pack. Can you just look at them to see which one looks like what you want to edit?
oh i see, one is the holo image when placing, that was the one i did apparently, when i place it, its the default tex. ill have a look again. thanks for the pointer
Hi @neat pelican I'm building an enchantment system for Hytale. I can get health and mana working fine on armor, but I can't get weapon damage or crit to actually register during combat.
Any idea how I can fix this or properly intercept the hits to include my custom stats? Thanks!
So the reliable fix is: intercept the Damage ECS event and modify Damage#setAmount() (and/or cancel it) before the damage systems apply it.
In the server source, Damage is a cancellable ECS event and it has getAmount()/setAmount() plus a Source that can be an EntitySource with a Ref<EntityStore> to the attacker. (See com.hypixel.hytale.server.core.modules.entity.damage.Damage in your server sources.)
Does anyone know a good doc to lear deapply customUI
is this the correct channel to ask on how to use commands for things like world edit and such?
{
"Type": "Selector",
"Selector": {
"Id": "Raycast",
"Distance": 5,
"Offset": {
"Y": 1.6
}
},
"EntityMatchers": ["Player"]
}
Does anybody know how to trigger a failed when it doesnt have a player in this? Because r ight now this a lways passes which confuses me
Context?
I was trying to use mods but I keep dependency problems like 18nModules, AssetModule and NPC
Context hat
Context shirt
I wanted to cancel an interaction when the selector doesnt have a player in his crossair
But i couldnt make it trigger a fail
No, this is for creating custom plugins. For help with the Builder Tools, check #creative-mode
Are you adding them to your mods Dependencies declaration in the manifest?
Nope because I don't know what that is xD
Does anyone know a good doc to lear deapply customUI
Add this to your manifest.json to tell the server that your mod should only load after these native plugins:
"Dependencies": {
"Hytale:I18nModule": "*",
"Hytale:AssetEditor": "*",
"Hytale:NPC": "*"
}
What do you mean by "deapply"?
Please, someone know an event for block interaction that actually work?
Hello, I've tried to spawn a prefab through an interaction from a custom block but it seems it doesn't work for some reasons (either because I may be doing something wrong but idk what exactly I'm doing wrong or it's not working at all?) but when I try to use Example_Portal1.prefab.json, it works. Even Goblin_Thief_Chest works.... I don't get what I am doing wrong...
{
"Type": "SpawnPrefab",
"Next": {
"Type": "SendMessage",
"Message": "done"
},
"PrefabPath": "Goblin_Thief_Chest.prefab.json",
"OriginSource": "Block",
"Failed": {
"Type": "SendMessage",
"Message": "failed ;( "
},
"Force": true,
"Offset": {
"Y": 0,
"X": 2
}
}
This works but when I try to put the name of the prefab I made recently, it just does nothing...
Is it because Goblin_Thief_Chest.prefab.json/Example_Portal1.prefab.json are inside the Asset.zip of the game while the prefabs we make are in the "prefabs" folder of the server? but doesn't make sense because when u do /prefab load, when choosing server instead of assets, it shows the prefabs
EDIT: I've tried to add my prefab inside assets.zip/Server/Prefabs and somehow it works. Why it's working when it's inside the assets.zip but not in prefabs folder of the server? It doesn't even throw an error if it's wrong path or anything else (unless it's empty, because then it throws that string is null). Anyone knows how to make it use the prefabs from the server?
is there any information on the character preview component for UI as I have tried to use it however each time I try to add the page containing the component to the UI builder for the player it kicks me off the server with a client error
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
---> System.InvalidCastException: Specified cast is not valid.
was wondering if anyone had any clues on this?
its better to ask content creation issues over on the modding discord
have you been able to get it working since?
Support for multiple instances is already live on the preview branch and will come to release in the next update!
i know :( i tried enabling it with pre-release in the launcher but it still isn't working for me it's still just sending me to the game window thats already running
hopefully it gets fixed with the full release tho
I just downloaded prerelease , but it works for me. Just had to restart the launcher because it closed on me
What are some good mods to add to me and my friends world? We have a good amount but I'm trying to find more that I cannot find.
Ymmersive Melodies
tinymessage
TextSigns
Sit!
Simple Claims
Perfect Parries Perfect Parries - Souls-Like Parrying
MultipleHUDs
MMO Skill Tree
LuckPerms
HyFarm
HydroHologram
Essentials Essentials Core | NEW: All messages customizable
Emotes
Better Training Dummy
BetterScoreBoard
[Animated] HyScoreboard - Configurable
adminUI
BarterChests [Player Run Chest Shops]
Aures Livestock - Livestock Skins
Aures Horses - Horse Skins
I'm trying to get an entity by UUID as opposed to entitystore ref, is that possible?
thats the point of the entitystore though?
i cant use entitystore refs here because they're not really representative of the entity id (they can be overwritten and represent another entity in the future and so forth), uuids will always be the same for an entity if they have the uuid component
so make your own entity id component
ok cool how do i then get an entity by that id
and no thats what uuidcomponent is for?
is it possible to get all entities in a world with a specific component type?
Direct Lookup via EntityStore
While a Ref (reference) is a safe handle for an entity that tracks its "alive" status, the EntityStore serves as the WorldProvider and can lookup entities directly by their persistent unique identifier.
Internal Map: The EntityStore uses an internal map named entitiesByUuid to store these associations.
Persistent ID: Every entity has a UUIDComponent that the store uses for these lookups.
store.getExternalData().getRefFromUUID(uuid)
oh thats perfect thank you
It's what Titan said
yeah I use that with a listener that tracks enitity add and remove events to keep a list of current active entitys in the world.
But i did realize that i just as well could have a system qurying for the uuid component and use the uuids there for a look up i think.
do entity adding/removing events also trigger when an entity is simply loaded from unloaded chunks?
I think so.
When noesis π«
Sometime in between now and 1.0
i wouldnt even bother
whats the radius for the chests and workbenches
horizontal radius of up to 14 blocks and a vertical range of 6
It's defined in the GameplayConfig/Crafting of a world config if you want to edit it
So I can make it more?
Correct. Just create a new GameplayConfig and edit your world config to use it
there is also mods on Curseforge exactly for this so you can check how they do it
what mod?
search for "chest range"
found it
hm they are all jars so you'll need to check the code for reference.
Hello, my friend and I are trying to setup an environment for plugin development. We've got a dedicated server, and wanted to try and setup plugin testing on it. Every tutorial I see online keeps using a local server though.
Using a local server for testing during development gives you the ability to iterate on code changes much quicker since you don't need to upload the .jar ever time you make a change. Then when you are happy with it, you build your plugin and upload it to your server.
Right, right. Well the thing is, I'm not developing the plugin myself. Someone else on the server is doing the bulk of it. Perhaps I'll have them setup something locally, and then they could upload the JAR via FTP when needed?
yep, that's a common, basic workflow
Hi, does anyone know how to handle Inventory hover event(or something like that)
there is CustomUIEventBindingType
SlotMouseEntered(15),
SlotMouseExited(16),
the portal summon uses it like
eventBuilder.addEventBinding(CustomUIEventBindingType.MouseEntered, "#SummonButton", EventData.of("Action", "SummonMouseEntered"), false);
eventBuilder.addEventBinding(CustomUIEventBindingType.MouseExited, "#SummonButton", EventData.of("Action", "SummonMouseExited"), false);
and in its handle data event.
if (this.computeState(playerComponent, store) instanceof PortalDeviceSummonPage.CanSpawnPortal canSpawn) {
if ("SummonMouseEntered".equals(data.action)) {
UICommandBuilder commandBuilder = new UICommandBuilder();
commandBuilder.set("#Vignette.Visible", true);
this.sendUpdate(commandBuilder, null, false);
} else if ("SummonMouseExited".equals(data.action)) {
UICommandBuilder commandBuilder = new UICommandBuilder();
commandBuilder.set("#Vignette.Visible", false);
this.sendUpdate(commandBuilder, null, false);
} else {
}
}
Do you think its possible to add eventBinding for item slot in inventory?
The class it uses for the Event
class PortalDeviceSummonPage {
...
protected static class Data {
@Nonnull
private static final String KEY_ACTION = "Action";
@Nonnull
public static final BuilderCodec<PortalDeviceSummonPage.Data> CODEC = BuilderCodec.builder(
PortalDeviceSummonPage.Data.class, PortalDeviceSummonPage.Data::new
)
.append(new KeyedCodec<>("Action", Codec.STRING), (entry, s) -> entry.action = s, entry -> entry.action)
.add()
.build();
private String action;
}
}
well ui pages accept external updates.
playerComponent.getPageManager()
.updateCustomPage(
new CustomPage(
this.getClass().getName(),
false,
clear,
this.lifetime,
commandBuilder != null ? commandBuilder.getCommands() : UICommandBuilder.EMPTY_COMMAND_ARRAY,
eventBuilder != null ? eventBuilder.getEvents() : UIEventBuilder.EMPTY_EVENT_BINDING_ARRAY
)
);
}
So being careful you could probably inject extra events towards the inventory page rougly the same way.
I guess you are talking about the current "Player Inventory" not inventory/container logic at large?
for any ui that exists that handles inventory you would need to find a way to update/inject new events with the reference to the element you would like to have hover events fire for.
Then the hard part is that you need to get those events as well and the current custom page is already doing that. So I have no idea how you would catch them afterwards in a good way.
You might be able to do something by adding logic that intercepts and do something with the CustomPageEvent from PacketID 219
to add both a generic callback and way to intercept manipulate the page somehow.
It seems that it will be much easier to inject my own text into the current tooltip, thx for the help btw
@barren mist
can i spawn npc with armors?
yes, you can modify the holder in any way you want before spawning an npc from it by adding it to the store
i was mean add it with entity tool without coding ?
Has anyone come up with an interesting means of creating alloys like bronze or steel?
not for vanilla, but modded -> weapons, tools etc x3
duh, I'm in the server-plugin chat. we know it's unobtainable in vanilla.
idk havent played much survival, though bronze/steel was default lol
I have some crafting ideas but i need to do a lot of work tracing details regarding material properties and quantity in mixes.
I think you can add items with the NPC commands at least
"Interesting means of creating alloys, like if anyone's developed anything that reads multiple inputs in a furnace and detects if there is an alloy utilizing the inputs like copper and tin, and outputs bronze instead of just a single ore like it works normally.
I'm asking if someone has made anything custom, either through the asset editor or coded anything, I'm not talking about vanilla or commands, that's not what this channel's about. Space bro it's a video game just use 1:1, and mechanically how would you even do alloys to begin with.
mean start being respectful instead of saying "duh", "bro" just a advice~
if there is something that exists you might be better off looking at curseforge for anything that created.
simple solution for creating allows, make a furnace that allows for separate inputs and stores them as "molten" and allow you to add a additional crafting within the furnace to utilize those molten ingots to create new.
is there a forum for showcasing mods or plugins? i cant see one and dont want to get warned for posting in wrong channel
Hello, i am working on a plugin which rework the default portals in the default world and the Forgotten Temple. It seems they are not modifiable or i miss something ? I read the documentation of hytaledev official but i didn't find something which allow to update the existing components. Thank for your feedbacks π
Does anyone know how I can cancel the harvesting interaction?
i guess with an event listener
me and my friend are working on a mod that does something similar to this, but we haven't gotten around to the coding part yet since we can't fully decide how we wanted to make the alloy combination system work and we had a few other features/ ideas we wanted to implement and/or work on first (just been working on making models, textures, and other assets so far)
I want to be able to add information to a block type ( not an individual block in world, but like, all instances of that block) is it component<ChunkStore> I want?
I want to like, add a link to a loot table inside a block
Has anyone else experienced that bug on your server where the world disappears and you fall into the void? I want to know the cause of that bug, because it doesn't leave any logs, and I can't identify it.
Has anyone had any luck with getting the side of a block from ray tracing or something similar? I've been trying for around 5 hours now. Just tried CollisionMath.intersectRayAABB and I can't figure this out, any help would be appreciated
Hello, Q: is there a way to increase particle render distance on server side? I've been working on environmental effects with particle system, and while I find it great, if I am on a server the particles stop rendering after 50-60 blocks when there are many blocks/entities nearby. (IsImportant, CullDistance, BoundingRadius seem to be overwritten by server)
How would I go about registering an interaction with any NPC when holding a specific item? I'll need to hook into it in Java - Block interactions are fine, but no idea about NPC interactions.
I would prefer to avoid modifying entity JSON files to avoid conflicts with vanilla updates, but I don't see any events in Java which could avoid needing to do that?
Gonna do it so items hold a list of substance Γ₯roperties and weights for their composition as a component then have a reactionsystem that can abstract/add/convert as well as create destroy new items with a composition with a fallback of lump of materials.
Crafting will in turn be overhauld to take anything as input and properties quantites will control the output item.
Also adds the ability to transfer properties from the material quality of material and mix of materials.
that reminds me of that chemistry mod for minecraft where if you used a time speeding mod it would decay radioactive elements faster and u could accidentally chernobl your inventory
Yeah there are many funny side effects that could happen. The question is how to handle it relative to itemstacks since each item becomes unique. Might need to group stack it differently.
By extension as i saw in another ecs project. One could add systems for stomach lungs and other organs and turn them in to reaction systems and trigger effects on what a player eat breaths drinks.
thats too indepth xd
One one side you can generate a dynamic taste and smell info. One the other you have a system for poisoning.
The range from cooking game to who done it. π
@sterile forum Interesting concept with alloys may i suggest keeping it lifelike and add a Workbench for Electrolytic Coating thus preventing accidentaly making alloys out of stuff you intend on using
There are soooo many things to consider i will need an entirely new set of objects and benches for material analysis and processing of so many forms.
The good part is that substances could be added on a level desired like
Like iron, copper, coal, dough, wood, meat. So items would have a list of quantity of each.
Or an actually periodic table level or a combination...
Much work to be done either way.
Can you guys stop pinging me with regard to your ideas regarding smithing alloys. While interesting, a little, I find them overly complicated and personally don't see them being an enjoyable player experience or something players are willing to invest in as a system. Either the explanation is poorly done and the system will be more intuitive than it sounds, or it's overly complicated, niche and players won't bother investing in.
This has been updated so the docs now provided more details about how refresh works
Yep, I saw already this morning π looks good
Sorry. I wont answering any of your questions again.
I haven't used that ray tracing, but it look like your probably on the right track, that method is also internally used in the TargetUtil for detecting blocks and entities and hence has example usage, that you might find helpful if you haven't seen it yet.
Can't seem to find something that helps find the block face, but you might be be able to work it out using some math, the looking vector, maybe atleast for reference the vectors from BlockFace/Vector3i (e.g. UP), assuming whole blocks of course
Anyone know about how to do this?
I want to be able to add information to a block type ( not an individual block in world, but like, all instances of that block) is it component<ChunkStore> I want?
I want to like, add a link to a loot table inside a block
Hello, iam trying to interact with the forgotten temple world during the StartWorldEvent and CreateWorldEvent to change weather, add block and other little things, but no actions have an effects. Someone of you have already does something similar please ?
Assuming there isn't a easy component to change, couldn't you handle drops as part of one of the block esc events? As for cancelling the default drop I'm not sure, but additional drops would be easier.
I am not trying to actually drop items, just taking advantage of the fact the drop tables contain information I need (block with weighted random outputs when a specific input is used,)
Wherent blocks changing a lot this update?
I know that, at least for some of the custom plant nodes I'm making, it's handled under block, behavior, gathering & soft, under Block as well as all the way in the first mention of state if items have a second blockstate like berry bushes with berries vs harvested exc.
That's exactly what this problem is, is a nasty vector math problem from hell π¬
I may need a devs help on this one
Does the shovel in vanilla use something like this? Because it breaks a 3x3 depending on the orientation you look at a block, right?
The decompile code I have is kinda garbage
let me dig through and see if I can find something
I need this for a freaking wrench
Yeah I can't find the source for the shovel dig interaction
is there some way i can tell hytale that i dont want entities with a certain component to be persisted at all
like i am making custom magic projectiles and i dont really need the game to save them, they can be unloaded permanently and be deleted
Not exactly for your component specifically but you can make an entity not get serialised if you add the following component to it.
You could make a system that automatically adds this when your component is added if it doesn't already exist, or you could make sure to add this component when you create the entity with the component.
holder.addComponent(EntityStore.REGISTRY.getNonSerializedComponentType(), NonSerialized.get());
Does anybody know how i get just the translated text not the messsage itself?
Message.translation("ui.tooltips.arc.attribute.vitality")
try the ansi thing
like MessageUtil.toAnsi(msg).toAnsi()
(i cant remember the exact methods)
could also try Message#toAnsi
Awesome! Works thanks
If you want it to use a language other than the hard-coded "en-US" in Message#getAnsiMessage(), use the I18nModule directly:
I18nModule.get().getMessage("de-DE", "ui.tooltips.arc.attribute.vitality")
Oh, i somehow assumed that it would automatically see what language the client is and then use the correct language automatically
The server doesn't know which language the client uses
does it support pir*te? Does Hytale have a pir*te language? If not, we need that.
(cant believe that word is blocked hahaha)
that's why the translation keys are sent. The client is then responsible for fetching the correct message from the asset pack
Good to know! Thanks
ish, its knows the language they use, but it doesnt do weird stuff like try to infer it on events and translate automatically depending on the context
yeah its sent in the connect packet and in one of the interface update ones(though you should avoid it for most things, unless you plan on doing translation of arbitrary messages on the fly)
Are there limits to playing sounds? I have a sound effect which i can spam when clicking a button but after like 10x clicking fast it doesnt do the sound anymore and after like a delay of 5s it works again
Hi , How can we make multiple recipe for one item ? Thanks !
SpatialResource<Ref<EntityStore>, EntityStore> spatial =
(SpatialResource<Ref<EntityStore>, EntityStore>) store.getResource(EntityModule.get().getEntitySpatialResourceType());
ObjectList<Ref<EntityStore>> nearby = SpatialResource.getThreadLocalReferenceList();
spatial.getSpatialStructure().collect(position.toVector3d(), 1, nearby);
Any ideas if there is a better way of getting if there is a player/npc at position?
maybe TargetUtil.getAllEntitiesIn*()?
It does the SpacialResource stuff for you
I see... so probably no cheaper way
Looking at a system that very well may do n runs of that... maybe could make it a little cheaper but would require waiting till its complete rather then being able to exit early
[2026/03/11 01:13:30 SEVERE] [SERR] [To redirect Truffle log output to a file use one of the following options:
[2026/03/11 01:13:30 SEVERE] [SERR] * '--log.file=<path>' if the option is passed using a guest language launcher.
[2026/03/11 01:13:30 SEVERE] [SERR] * '-Dpolyglot.log.file=<path>' if the option is passed using the host Java launcher.
[2026/03/11 01:13:30 SEVERE] [SERR] * Configure logging using the polyglot embedding API.]
[2026/03/11 01:13:30 SEVERE] [SERR] [engine] WARNING: The polyglot engine uses a fallback runtime that does not support runtime compilation to native code.
[2026/03/11 01:13:30 SEVERE] [SERR] Execution without runtime compilation will negatively impact the guest application performance.
[2026/03/11 01:13:30 SEVERE] [SERR] The following cause was found: JVMCI is not enabled for this JVM. Enable JVMCI using -XX:+EnableJVMCI.
[2026/03/11 01:13:30 SEVERE] [SERR] For more information see: (Link was here)
[2026/03/11 01:13:30 SEVERE] [SERR] To disable this warning use the '--engine.WarnInterpreterOnly=false' option or the '-Dpolyglot.engine.WarnInterpreterOnly=false' system property.
How do I get this error code away?
Hi any idea how can I add stuff to the existing UI , like adding an extra tab to the main tab menus on top next to creative tools?
I dont think you can right now?
I think its using the new UI system we dont have access to yet?
How do I remove the default block break interaction thing when I left click with an item? I have an item that I have a secondary interaction, but want it to have no primary interactions at all.
If you got the ray data and the block you collided with. You could normalize the ray vectors direction in world get the position of the block you hit as and remove the normalized rays value from the position. See what block position that would be at. Remove the original position value from the calculated value and you should get a vector with valus in the direction the hit block is. The facing would be opposite of those values.
Or better remove the new calced blocks position from the hit block and the values out would be the direction where the neighbour block would be and thus facing.
Bah. I was today years old when i saw how you filter out a archtypes in the getQuery using a component.
anyone have a good example of /<command> <subcommand> <args> with aliases
hi everybody, i have a onPlayerConnect function that executes when a player connects (as a player listener), does anybody know how i can add a component with players reference on connection? because: Ref<EntityStore> ref = playerRef.getReference(); ref seems to be null... I get playerRef from PlayerConnectEvent but it seems like pointer to the entity doesnt spawn fast enough. Any solutions to this?
public class RootCommand extends AbstractCommandCollection {
public RootCommand() {
super("root", "Custom root command");
addAliases("myRoot");
addSubCommand(new SubCommand1());
addSubCommand(new SubCommand2());
}
}
public class SubCommand1 extends AbstractAsyncCommand {
private final RequiredArg<String> myArg;
public SubCommand1() {
super("subcommand1", "Custom Subcommand");
addAliases("sub1");
this.myArg = withRequiredArg("arg", "Argument", ArgTypes.STRING);
}
@Override
@Nonnull
protected CompletableFuture<Void> executeAsync(@Nonnull CommandContext context) {
context.sender().sendMessage(Message.raw("Executed SubCommand1 with argument: "+stateArg.get(context)));
}
}
thank you elite citizen
please dont delete this ill need it in a few days
The PlayerConnectEvent event fires before the player joins a world, so it doesn't have an entity yet that you can attach components to. I would recommend either the AddPlayerToWorldEvent, or the onEntityAdded() method of a RefSystem<EntityStore>
ohh ok thanks!
Ive used PlayerReadyEvent instead since in the docs its use case matches what i need, the only problem is I need an UUID of the player, there are two ways to get it, from event.getPlayer().getPlayerRef() which is depricated and then from the PlayerRef.getUuid() or event.getPlayer().getUuid() which is also depricated. I guess there is a better way for getting the UUID in this case? Maybe I should get player ref from the store right?
It's a PlayerEvent, so it has event.getPlayerRef(), right?
it does have getPlayerRef() but it returns the Ref<> not the component
ok i guess i get it from the holder
i needed the PlayerRef component just didnt know whats the right way to get it
The Ref<EntityStore> is what you use as an identifier to fetch an entitie's components from the store
yeah will do
Hey, posting on the right channel this time, yay.
I'm playing a lot with queries for different purposes but I still fail at understanding how to efficiently gather entities.
For instance, I would like to query every entities hostile around a player, but I don't really know where to start in that case. Should I add a codec to gather the attitude and maybe hp? But then, how do I link that back to entities?
Or is there an easier way to do that?
Do you gather such examples somewhere?
Thanks a lot for your help! π
Do you mean how to get all entities around a player (TargetUtil), or how to determine if an entity is hostile towards a player?
I've seen the TargetUtils.GetAllEntitiesInSphere() for instance. But then, this returns a List<Ref<EntityStore>> which you then need to filter for hostile living entities that can move (again for instance). And that's where I struggle.
I actually was rather using a store.forEachEntityParallel( but it's kinda the same need behind. There are a lot of good examples even on unofficial places, but the queries and codec examples didn't click with me yet.
Sorry for the hard or noob question. A simple custom filter on entities example would help already. And the same on how to check if a codec is effectively propagated would be super great.
For all moving entities loop trought the stores {var mover= store .getConponent(storeRref, Movement.getComponentType);
If(mover!=null){}}
btw, I know that Entities are a collection of components, so I would expect something like (this is bad code for the example): ```java
// Really not sure about the query here
Query query = Query.and(LivingEntity.getComponentType).and(Hostile.getComponentType());
Store<EntityStore> store = world.getEntityStore().getStore();
store.forEachEntityParallel(query, (entityIndex, archetypeChunk, commandBuffer) -> {
commandBuffer.run((entity) -> {
// Do something with the entity
});
});
// or
world.execute(() -> {
List<Ref<EntityStore>> entities = TargetUtil.getAllEntitiesInSphere(player.getTransform().getPosition(), 50., world.getEntityStore().getStore());
// Need to filter that now
for (var entityRef: entities) {
// Hostile doesn't exist, it's for the example. Don't know how to do that
if (entityRef.isValid() && entityRef.getStore().getComponent(Hostile, Hostile.getComponentType()) {
// Do something
}
}
});
Do you know how I can get the list of existing Components? I guess they come from Assets json? And some from code?
I do both are a pain in their own way.
But i am out walking and need to fix dinner when i come home. But i will try to remember answering later.
Np at all, thanks for the bits about movers anyway
i had this to spit out a list of components
Archetype<EntityStore> archetype = reference.getStore().getArchetype(reference);
for (int i = 0; i < archetype.length(); i++) {
ComponentType<EntityStore, ?> type = archetype.get(i);
if (type == null) continue;
components.add(type.getTypeClass().getSimpleName());
}
oh wait, did you mean all components in general?
I was also wondering on whether a System::tick(...) could be used to do the reverse: Check whether the entity is hostile and can move and then make it do something if it isn't already. Something like:
public class HostileCheckSystem extends EntityTickingSystem {
@Override
public void tick(var1, var2, archetype, EntityStore store, commandBuffer) {
if (!store.hasComponent(entity, HostileComponent.class)) {
return;
}
if (!store.hasComponent(entity, MovementComponent.class)) {
return;
}
commandBuffer.run((entity) -> { // Do something
})
}
}
Honestly, your answer is really good already to parse any kind of component store π
How do you get a valid archetype reference in your example btw?
(Will also check on my end)
Archetype<EntityStore> archetype = reference.getStore().getArchetype(reference);
This gets the archtype from the reference
and the ref was just entity.getReference()
ah ok thks
But about the components is general, I bet having a tool to parse what's available would be super great. I'll keep that in mind once I'm more familiar. I can see myself create a basic UI to lazily list things and filter on them :>
doing some fiddling around, i see this:
reference.getStore().getRegistry()
(i wish i could send a screenshot)
it has a few methods for getting components, but theyre like "unknown" "nonSerializable" and "nonTicking"
Seems odd
Is it possible to dynamically add a component into the .ui file for lets say i have 10 items in an array for eachitem iwant to add something into a group like a component or something?
yeah. you can run commandBuilder.append() in a loop. Check how the MemoriesPage does it
Ill check it out thanks!
do we have a date for update 4? I heard last week it was this week
I finally solved the problem by doing what any other good minecraft Hytale engineer would do, use brute force! π πΈ
Sorry time ran away.
What I was about to say was that as other stated, you can use the archetypestore to get the archetype.
I just learned to day that if you want to use archetypes in a system then for the query you are apperently can use Archetype.of(componentType) the base entities are just components as well, Player NpcEntity LivingEntity all extend the component at some point.
The other variant is the long way, using systems to listen for the entity add remove and component add remove events and hold lists of reference to what gets added to what.
As for finding components in general, i think there is a list in the hytalemodding dev documentation. but you Could also do a "blanket search for "componentType()"
Since most component types have some kind of getter thats Usually their name ending with ComponentType().
But getting the player archetype for instance in a system can also be done with a query that uses
this.query = Archetype.of(playerComponentType, playerRefComponentType);
The thing to consider regarding system tick events or other stuff is essentially who needs the information, when and how often.
Remember that you can also use your own components as quick triggers in a ticking system buy having that component as part of the query, and as soon as you process it in the tick you just drop it from the entity, the system is quick to pick up that it is on the entity without the need for events, and once the component gets removed it won't tick again and have low impact on performance.
@Space Thanks! I just saw the Archetype.of() as part as many other things. I kept learning during those few hours and some references helped me a lot (not putting links to avoid the no advertising rule) ECS system in Hytale with some examples and exceptions from TroubelDEV, The unofficial hytale Server docs,and I used the Hytale docs class index when I didn't know what I was searching for. Ah and of course the HytaleServer.jar as a dependency for autocompletion.
I used some scheduling snippets and the archetype list snippet thanks to @near onyx π΄ 's message: β server-pluginβ
And in the end, I managed to start moving this query code into a ticking system, so it's going in the right direction.
I also saw the example where you need to add a teleport component to let the TeleportSystem trigger the event.
I believe I'm starting to get the hang of how to select entities, the next step will be to understand the NPC path management.
Thanks a lot for all the help
i got a tag here and i was scared π
But youβre welcome, im glad i could help a bit
Is it possible to reset the entityStatMap for all stats?
looking at RespawnSystems
for (int index = 0; index < entityStatMapComponent.size(); ++index) {
EntityStatValue value = entityStatMapComponent.get(index);
if (value != null) {
entityStatMapComponent.resetStatValue(index);
}
}
Has anyone by chance tried to use the editor tool packets to create custom tools themselves, which can be used on Adventure Mode? I've noticed Hytale has done an annoying client gate restriction, basically preventing the retrieval and sending of builder tool packets if the user is not in creative mode. So i was wondering if anyone has somehow found a way to bypass this
My main reason for using those packets is primarily more hotkeys to listen to xD, and also using the EditorBlocksChange packet to display prefab outlines, but just the latter is more than enough
Hi there, someone knows how the regex works for the parameter loadBefore in plugins manifest.json ?
Tried with a mod, maybe the mod shouldnt be tagged as "Hytale" but the name of the owner, or no name at all ?
"LoadBefore": {
"Hytale:MMOSkillTree": "*"
},
instead of Hytale it should be the value of the "Group" key from the plugin's manifest.json
You must be right ! i test it thanks !
i tried renaming items such as
XpToken_Unarmed_Token.name = Test
XpToken_Unarmed_Token.description = Test
in the same path that the mod originally does into my own zip assetpack.
And even wih the loadbefore, it does not work and overwrite item name nor desc.
Had anyone an idea how to do so ?
probably because you are loading "before" the plugin you are trying to override, so I'm assuming your file is being overwritten. And what exactly are you trying to overwrite?
"LoadBefore No Map of plugins that should load after this plugin"
Im only trying to overwrite items names / desc
i also put includeassetpack to true and i just rode :
IncludesAssetPack No If true, registers the JAR as an asset pack
maybe thats causing the problem ? an asset pack cant overwrite a mod ?
yea maybe, not quite sure tbh
I might be forced to overwrite Server\Item\Items too ? But it seems the matching to the items.lang is automatic in some points.
Adding
TranslationProperties maybe ?
Finally got coop residents to fully retain their nameplates. Just need to tinker with the capture crate but there is some overlap in the logic between the two, so most of the workload is done. All of this, just so my wife, can name her chickens in-game.
The things we do for love - courage the cowardly dog
Okay so for SimpleInteraction class, how or where would one get ahold of the rotation component on tick0 method?
Like as in, right click a block, alter rotation?
How do I send player from one world to another world?
PortalInvalidDestinationSystem does anyone know how to fix this
check if the destination is clear, and remember that you need to be +1 above the block you target. since any block position is inside the block.
i see, thank you!
I guessed the system reported that the destination was invalid not that that the system reporting was broken.
Does anybody know how to apply custom screen effects via java ? Or JSON data ?
You cant do any new post process effects from what i know but otherwise like camera shake and others goes trough the camera effects.
The TeleportWorldCommand does it like this:
Transform spawnPoint = targetWorld.getWorldConfig().getSpawnProvider().getSpawnPoint(ref, store);
// modify TeleportHistory...
Teleport teleportComponent = Teleport.createForPlayer(targetWorld, spawnPoint);
store.addComponent(ref, Teleport.getComponentType(), teleportComponent);
Does anybody know where hytale does the Stat caluations when for example wearing gear
So that gear increases max hp? Is that happenin in the json data or is there a way to see how they actually apply the data to the stats in java somewhere
are you talking about the defense level?
this is my attempt to get the defense level.... its not sexy, and its deprecated, but its all i could find
// TODO find a better way to do this
Map<DamageCause, ArmorResistanceModifiers> reduction = ArmorDamageReduction.getResistanceModifiers(world,
player.getInventory().getArmor(), false, null);
int defense = 0;
DamageCause asset = DamageCause.getAssetMap().getAsset("Physical");
ArmorResistanceModifiers mod = reduction.get(asset);
if (mod != null) {
defense += (int) Math.ceil(mod.multiplierModifier * 100);
}
return defense;
I cant remember exactly where i found it though, i think on the server it just calculates during interactions
Check the DamageSystems.ArmorDamageReduction system
^
Ah yeah, that sounds familiar
Does anybody know how to set the Regenerating values ?
var statMap = new EntityStatMap();
statMap.get(DefaultEntityStatTypes.getHealth()).getRegeneratingValues();
rather than getting the stat map, get the actual stat type (config) and it should be part of that
Ok ill try that whats the class called?
EntityStatType.getAssetMap().getAsset("Health").getRegenerating()
Mh those also only contain getters also, they get the actual asset. But i would like to increase or change Regeneration based on entity
seems like it all has getters only
Mhh yea, maybe i need to do it with effects instead
i think you can also apply modifiers to stats
Any way to block the usage of buildertools in creative? because hytale.buildertools.* = false does not work
yo, any new way to debug UI's when developing? hot reload would be neat
Turn on debug mode in the client settings. Hot reloading is in the game
is it? I do have debug mode turned on, but when I'm developing UI I have to rebuild it, restart server and only then the changes applies
if you edit something in an asset pack, it gets automatically synced with the client. For the java code, you need to run /plugin reload <pluginName>, but you can trigger that programmatically as well
so when I'm changing anything in the *.ui file without any changes to java - it should automatically pull the changes after building mod?
no, you don't need to build the mod if the asset pack is loaded directly
not entirely sure what do you mean by that, not sure how to verify if I'm doing everything right
this is how I run my dev server
def serverRunDir = file("$projectDir/run")
if (!serverRunDir.exists()) serverRunDir.mkdirs()
idea.module.excludeDirs += serverRunDir
idea.project.settings.runConfigurations {
'HytaleServer'(org.jetbrains.gradle.ext.Application) {
mainClass = 'com.hypixel.hytale.Main'
moduleName = project.idea.module.name + '.main'
programParameters = "--allow-op --disable-sentry --assets=\"$hytaleDir/Assets.zip\" --mods=\"${sourceSets.main.java.srcDirs.first().parentFile.absolutePath}\""
workingDirectory = serverRunDir.absolutePath
}
}
When I update something in src/main/resources, the asset editor automatically picks it up
will check this out as it would help a ton to actually develop anything
I got the concept from Build-9/Hytale-Example-Project on GitHub. Might be worth checking out for inspiration
never heard of this one, will definitely give it a go
hmm
i have something simular in end result but i go about it differently
Nice! how do you do it?
Ok, I have a block I want to be able to attach some meta-data to , and then later in a custom interaction, read that data, is there any paticular way to do this currently? I have a class that inherits from SimpleInstantInteraction that I use to do the custom interaction, and a
"Interactions": {
"Use": "Open_Arcane_Fate"
},
``` in the block's item
Possibly add your own component?
If i read correctly BlockComponents will be added next update
You can probably do something already but it will be much easier in the future
I thought I already did a block component but... apparently not. Maybe I was about to but realised I never needed to. No idea if it's possible currently or not.
Is it possible to UV map a model? so you can use the texture feature like:
"Textures": [
{
"Sides": "BlockTextures/cardboard_box.png",
"UpDown": "BlockTextures/cardboard_box_top.png",
"Weight": 1
}
]```
or is this out of the question, i really don't look forward to make 4096 textures (or even more) performance would be yikez
it either 4096 different blocks (for a single block variation) or 1 block with 4096 textures
I saw some Block Component things, btu they looked like they were for per indivudual block instance, not per block class
Oh, yeah:
"BlockEntity": {
"Components": {
"DuoRespawnBlock": {}
}
}
It is per block though. I cannot fathom how you would do dynamic metadata that syncs across all blocks of the same ID... if I'm understanding correctly.
Yeah, it is looking like I will have to just, make the interaction custom to that block ID , I was hoping could make it a bit more generic, let the other people working on the asset_editor side have more control so they could make multiple blocks with small changes style thing >.>
Hi everyone, I have an issue with the pre-release channel. My custom Bench with the base UI doesnβt work anymore. Does anyone have any news about this or any idea what might be causing it?
but work on the vanilla benchs
EDIT :
you need to put that :
"BlockEntity": {
"Components": {
"BenchBlock": {},
"ProcessingBenchBlock": {}
}
},
(processing)
OR
"BlockEntity": {
"Components": {
"BenchBlock": {}
}
},
Attach the component when the block is placed
Is it possible to draw custom blocks during runtime instead of adding them to a pack~?
no, but the majority of a custom block can be added to a pack during runtime
yes, made something that supports it
uhh links are against rules π
Since im currently running into a major performance issue with hytale and idk what a proper solution is
are you talking about like drawing them ingame or just dropping in the files for it while playing
Drawing
i made something that would be easy to make something for that
π You could add blocks that cant be obtained and show them for only certain people- I was working on a library for it but to prevent breaking or replacing said blocks takes- constant packets since the server drops events from the client on ghost blocks
Is it possible to like add more stuff to the default ui like inventory or the portrait when you press tab ? Like stats or something
Not currently, no.
Hello, is there a better way to fix the issue with all the server text being messed up after modifying the language file? I have to keep rebooting the server to fix it.
this works like a charm π you da best
When making an override for an existing mod, do I need to add the original mod as a dependency in the new packs manifest? Trying to consolidate multiple mods onto a single workbench for example.
And if so, what's the format for doing so?
currently yes, as a soft dependency. that ensures your mod is loaded after theirs.
"OptionalDependencies": {
"Group:ModName": "*"
},
You saved me so much headache, thanks a lot. Had been looking online for answers for a while now lmao
How to properly delete a world or an instance?
Universe.get().removeWorld(World)
Someone already had the issue of a big "Loading..." when you ran an action in the background of a custom UI ?
did you trigger something from the ui that should be run in another thread?
Hello π doc hytaledev is down ?
Hello everyone, (first of all, sorry about my English, I'm French xD). Then, in my plugin I have a World which serves as a lobby, from this I generate other Worlds and teleport there. My problem: when I spawn a merchant in the lobby, no problem, the shop opens by pressing F but when I do the same thing in the other generated World, the shop does not open despite the presence of the "Press F" hint. Does anyone have an idea why? I've already exhausted a lot of ideas with Interactable among others, thanks in advance π
Question ...
I am starting to get into modding properly, and have got basic blocks and an NPC to function in game, but I am trying to understand a little more about how the more complex elements of hte models work. Attachments I can get OK, and I can see how to make ones that will always be there, and how variants would work for slightly less uniform figures. All really neatly packaged in the editor.
Where I am stuck is around the weapons that can be assigned to hands and the drops. When I look at the NPC_Role files, it is a bit tricky to pick up how this is structured and some exampled I look at are totally different. I understand the basic syntax rules fine, but I can see things like Undead seem to have layered variants and inherited stuff, so trying to find a 'clean' base to help me understand how this file functions.
Does anyone know how you can display the damage color of the defined daamge cause asset?
I have a damage cause asset that changes the color of the text but it doesnt get displayed on the client
The Posion example in the official hytale asset has it configured but for some reason on the client it always is white π
ok some old project handled all the sources stuff automatically, and now that I have moved to a different project layout using a hytale project plugin fΓΆr intellij and using maven it does not.
I did find the guide how to use the official python code to decompile the source from the mod dev webbsite, it just seems unnecessary complex.
And I realize if this is ment to be for "Sources for intellij, or if its ment to be "sources" as in you could use this and build the server yourself rather then depend on it?"
Does anyone know of an easier way to add colored nameplates? I'm currently hiding the nameplates then spawning in base glyphs then using the particle system to color the glyphs and attaching them to the player. Is there a api or a more efficient method to do this beside billboarding images?
have you looked at what type of data the nameplates take, if it's a message or formated message, using parse or raw etc?
Damage numbers you see on mobs is a plain string using the Nameplate system which is why I use glyphs and the particle system to color "nameplates"
yes, I have. They use message but it's stripped within the main SRC
do you mean the decompiled .class view or did you pre-decompile these?
decompile class view i think
What I need is for the intellij search to actually find classes searched for in server types. Right now I can compile and run fine and depend on any class I know the name of. But the search refuse to work.
Not quite sure i understood, what does this mean? You apply a particle to the nameplate of the damage or what?
you can create glyphs or use a blockymodel asset for text to use spirtes then once they are spawned in use Tint (part or the particle system) to color them how you'd like.
Ah cause search doesn't really work in the default decompile view, since the tool only knows about each individual file I think. ctrl+f works, but only within the file
Do you have any examples i could look at. That sounds interesting. How would you color them tho
Yeah, and the old kauptenjoe example project had logic that made it possible to decompile the entire file and search it, but thats like 5 layers of dependencies being pulled so i have no idea how thats set up.
Like how do you say apply this particle to that damagenumber
My version is super cursed but it's in my github. I'm rebuilding the new nameplate system from the ground up but it's not completed yet so it has a lot of errors. Search up MysticNameTags github and you'll find it.
Yeah I saw how much work that was and then didn't even bother. I find it easier to auto correct some files I'm looking for, but that doesn't help looking for usages or within files
I mainly took example from PerfectHolograms AND HydroHolograms
HydroHolograms is WAY more effective though since they use sprites instead of glyphs
oh what do you know, your a Mystic Horizons dev
For the mc server? yes I'm the lead dev and coowner
cocooner i read... but it was not so.
came across it the other day
I guess you probably tested already to just send a message in the translation style formating with <color ... > etc for the nameplates
yes. I've tried everything from custom color packets to mixin overrides
the nameplate class and the nameplatesystems.java class just don't support ANY color what so ever
Yeah. then its probably a client side limitation and one have to go paritcles or glyphs.
I mean what I saw they just took a string, so if its markup it would still be hard to tell.
I did find out that color code parses but client side renderer doesn't parse ANY type of color codes within the nameplates
but i trust you tested it but thats why i wondered.
String doesn't support color native. You have to translate it
and client side doesn't have that for the nameplates since the nameplate sends a different codec to the client for rendering
and NameplateUpdate
it's part of the NamePlateSystems.java class
yeah, atleast it used there. probably could pack into it, but it would need to know how to decode on client and we cant control that
yeah, since we can't directly mod the client side we have to use known color systems like tint on "entities" like glyphs or sprites
hi,
i'm trying to create a block that has an interaction to play sound. kinda like a music-box. and i think i've configured everything correctly (i took a rather deep look into another mod to see how they handle this), but whenever i interact with the block it turns into the default invalid block in game. cant find a helpful video about this online, if anyone has a good video that shows how it works i'd be glad
have you added break points or logging so you can check the state at different steps of the call, if not, google how to do that.
is there a way to force a assetpack to update or manually load a new block in? (with code)
The automatic change detection with auto reload is nice but its slow (takes around 5-10)
Is it possible to put icons into ui files tooltips?
Im still having an issue with the patch Im making for a few mods. Is there a way to force my patch to load after the target mods? I tried listing them as optional dependencies but am still having the same issues. For context, I'm moving recipes from the main workbench to a new custom one. On server reload a majority of the recipes revert to their original state.
no i won't help you. π‘ (I also don't know the answer)
Whats the proper way to rebuild a ui page every few seconds while its open?
why do you want to change it every few second?~
Im currently displaying an entity stat there and bunch of other stuff that might get updated while the page is open. Not sure how i would display the data there realtime
but why not send a update message/event when it changes to the UI
I mean yea that would work but that would also mean that if i have 100 t hings in the page that i would have to implement that for everything that needs to get updated π
Feels easier just to refetch the stuff from the entity after a few seconds
Health gets updated? Send event, mana gets updated ? Send event, mob position updated? Send event, feels worse to me to be fair
maybe i just add a refresh button or something
Wouldn't constantly refreshing to pull all that data at once create a huge server strain though? Seems more efficient to do it per trigger. I honestly don't know though and am just interested in the topic
I mean, building the page does it anyway once, So feels like way to much to call UpdatePage everytime something changes. I ll porbably just add a button to rebuild the page or something
The page itself has a beatiful rebuild method, just sadge that i dont know how to properly call it π
Performance wise you only want the UI to update when it really requires it, so pulling it every few second (when nothing has changed) would be bad practice.
Preferably you want a controllers that either tracks those updates and checks every 5 seconds if there are updates to write them to the UI (ofc this would be delayed)
Or what be a little bit more heavy on performance change the update rate quicker if you want more responsive updates / or update directly once something of your ui updates
in a good way
Those controllers would need to listen to the changes in some way, for example if you want to listen if an entity stat has changed you probably would integrate that logic in the tick system
Which would now do the check 24/7 which is possibly less efficent and worse overall. But im not the most experienced in performance stuff
That would mean instead of having something run while the page is open every few seconds now it runs all the time just to check if the page is open
Damage system would probably also work to check
Not sure if there is a way to change health when its not damage tho, probably yes
mean its up to you, performance of a event system isn't that heavy it only has todo a if statement if the health has changed
like you want a component to be added to the specific entities that you are "watching" so you will check all entities with the health change and to who he has todo send the update, pretty sure you can setup the component how often it checks (like game tick system or a slower tick)
im also sure you can change the value on your current UI instead of redrawing your entire UI
Good point, will try that out
Good idea with the component and only tick those with the component, that works greatly thanks!
no problem!
Does anyone know how i get the entity ref that im looking at when i execute a command like /getTarget or something?
I have this but it wants me to acutally pass something as an arg
public class TestTargetCommand extends AbstractPlayerCommand {
private final EntityWrappedArg targetEntity;
public TestTargetCommand (
@Nonnull String name,
@Nonnull String description
)
{
super(name, description);
targetEntity = withRequiredArg("TargetEntity", "entity", ArgTypes.ENTITY_ID);
}
@Override
protected void execute(
@Nonnull CommandContext commandContext,
@Nonnull Store<EntityStore> store,
@Nonnull Ref<EntityStore> ref,
@Nonnull PlayerRef playerRef,
@Nonnull World world
)
{
var entityRef = this.targetEntity.getEntityDirectly(commandContext, world);
if (entityRef == null || !entityRef.isValid()) return;
if (entityRef.getStore() != store) return;
// DO Something with enttiy ref
}
}
TargetUtil maybe, havent looked at it much
Ok will check that out
Hey guys, im looking atm for blocking "Pick Up flowers" but i dont know how atm. I could block pickup, destroy, harvest, but now pick up flowers. any idea?
Next update, you can just cancel the InteractivelyPickupItemEvent
Thinking about it there is a command in the game already /entity it can target an entity your looking at check out how it does it
Yup found it
public class ExampleCommand extends AbstractTargetEntityCommand
Is it possible to create custom hotkeys? For example when the player presses Lets Say Alt or any other key to do something on the server like open a page
It's planned, but there isn't a comprehensive custom keybind system yet.
Is it possible to retrieve an entities portrait or something or model in the ui?
For example I would like to inspect a mob and would love to have the model inside the ui.
Like when opening the inventory you see your own model
Not yet. You'd have to pre-render them
Is there a place where I can see what color format does Hytale support for the .json files when creating blocks please ?
nvm got it to work
It's a little weird to me when things exist outside of the ECS part of the engine, like ItemStack's where we have things like Durability and Stacksize which could be components, or part of an overall ItemStack component, and there's the catchall Metadata for the itemstack which could just be additional components
iirc itemstacks arent using the ecs because of memory and performance issues
yeah there are def some reasons but there could be more organization on whats which
yeah they might improve the structure, but performance and memory usage will probably mean that they wont ever be a part of the ecs
oh god no, lol, the amount of overhead that would cost would not be worth it
the plan is just that items will have nicer to work with metadata rather than storing serialized json/bson in memory, plus some config in the Item asset to support automatically adding the data
thats what zero said in the hytale modding discord
what ever gives the best product is all that matters
Just feels weird if I wanna tick an itemstack, having to make a system that activates on the player that looks through their whole inventory to see if they are holding an item that needs ticking
thats fair
I guess the other way to do it would be adding a component to the player with a reference to the itemstack that needs ticking and have the query look for that
its probably better that way though, mostly because items probably shouldnt be ticked all that much either
like, a lot of things could be done by storing a time in the metadata, and possibly ticking very infrequently
I was thinking if you wanted say a battery that could drain to charge tools in your inventory, but could also be charged by something outside your inventory
oh thats pretty easy to do without ticking it at all(and would probably be better performance wise)
im curious to see what the standards most modders use will be in 2 years time especially with the wiki and the way everyone is staying connected
at least sort of, I would have the outside charger run its own ticking loop where it checks for nearby players or whatever, and have the battery be a simple battery, that does nothing on its own but store a number
everything that uses the battery would just look for batteries or power sources independently
though some things like food that spoils in your inventory, and like, changes textures on its own are harder to do without ticking them in some capacity
prob why its not default
Wouldn't this still be ticking for the items in the inventory to look for the battery in the inventory? Especially if you wanted a gradual charge not an instantaneous charge
sort of
but it would be more like ticking the object, the inventory items are only modified by the object, and arent processed unless they are near it
idk when I think of ticking the items I thought you meant like, ticking the items unconditionally and independently
Is there a way to change the tooltip of an Item?
hello, someone know why the officiel doc (doc hytale dev) is down please ?
Hytale only officially released a couple areas of their docs for now and you can find them here:
https://hytalemodding.dev/en/docs/official-documentation
It includes custom ui markup, npc documentation, and worldgen v2
Thanks DaniDipp π πͺ
Everything else is documentation made by independent people from the community and might be very useful, but should not be treated as "official"

The modding discord community is basically the only soft official documentation I trust rn
Is it possible to push a new asset to other players instead of waiting for the asset monitor to detect the change?
Yeah the asset editor is a plugin so you can check how it creates and sends the asset update packets
Does anyone know how to remove the leap from the Downstrike_charged attack from the battleaxe?
Does anyone know I am getting disconnected with this error when using this player.getHudManager().setCustomHud(playerRef, null); Error: Disconnected from Server: Failed to apply CustomUI HUD commands
This is really weird
Turn on debug mode in your client settings if you haven't already. Then it should tell you more
i looked into it but its pretty complex, currently my servers just hangs after i forcefully add it
You know you can just look at code projects in general, and I am fairly sure thats the answer.
There will be a bunch of different subgroups claiming superiority and all other idiots, where the "least important" aspect is how you are working with the data and where your load is, and the most important that "we are right they are wrong"
kinda like when a deep end fortran developer need to agree on something with a enterprise java developer and frontend javascript dev.
don't forget the py devs π
Yes, that worked out thank you. I don't know why I turned it off
Does anyone know how to change the item tooltip which appears when using the ItemSlot element in a Custom UI?
is there a way to tp the player to the spawn everytime he logs in?
Using the events yes
"MagicResistance": {
"Id": "MagicResistance",
"Value": 0.0,
"Modifiers": {
"Armor_ADDITIVE": {
"Id": "Static",
"CalculationType": "Additive",
"Amount": 12.0
}
}
},
How can the stat stat still be 0 if it has that modifier ?
Can anything tell me where to get a block's drop list from?
Answer is prolly right in front of me
My little clown hammer looking thingy works, but not getting drops π€
does anyone know of a mod that makes the bottoms of banners and tents placeable without support?
im trying to create a custom UI but everytime i try to open it the game crashes
2026-03-14 22:24:50.0523|INFO|HytaleClient.Utils.SentryHelper|Sentry event captured: 87d318124ede41ef90e16788f1993fc0
2026-03-14 22:24:50.2218|ERROR|HytaleClient.Application.Program|System.NullReferenceException: Object reference not set to an instance of an object.
at HytaleClient!<BaseAddress>+0x6f0437
at HytaleClient!<BaseAddress>+0x271cd6
at HytaleClient!<BaseAddress>+0x271c3c
at HytaleClient!<BaseAddress>+0x25c634
at HytaleClient!<BaseAddress>+0x25e37c
at HytaleClient!<BaseAddress>+0x25d43a
at HytaleClient!<BaseAddress>+0x25e8b2
at HytaleClient!<BaseAddress>+0x25d43a
at HytaleClient!<BaseAddress>+0x244c42
at HytaleClient!<BaseAddress>+0x295e42
at HytaleClient!<BaseAddress>+0x284445
at HytaleClient!<BaseAddress>+0x674de1
at HytaleClient!<BaseAddress>+0x5c84b3
at HytaleClient!<BaseAddress>+0x66e46e
at HytaleClient!<BaseAddress>+0x687847
at HytaleClient!<BaseAddress>+0x6873ec
at HytaleClient!<BaseAddress>+0x1288f77
--------------------
2026-03-14 22:24:50.2218|INFO|HytaleClient.Utils.SentryHelper|Sentry event captured: c022464ef62d4294aafc85901d67b9ae
Null reference? Like you're trying to do something before its loaded?
no, just join the server and try to execute the command
found out, it was a problem with the tabs
I'm trying to set up mob spawning for a dungeon minigame plugin. I tried checking some of the unofficial documentation websites, one says to use spawn beacons (but doesn't say how to set them up) while another says to use the NPC plugin. (I originally tried citing the webpages, but the AutoMod blocked the message because it can't distinguish between advertisements and citations.)
BTW, has there been any update about when official documentation might be released? Even the JavaDoc's would be a big improvement over the current state of things.
how can i create a gap between tab buttons? i tried a lot of things but none of them worked
so I did something.... Got glyphs working correctly for colored nameplates π
working on optimizing it for 1000+ user based servers
Would love to showcase my mod....
thats cool yeah i wish there was a modding showcase forum
I posted it in art-assets since technically it is art lol
xd
someone finally made bluestone
bluestone but no bluewood xd
Why does custom hud stuff not get hidden when i press the button to hide the HUD or open custom pages?
likely because its custom
Yea, it is custom! Is there a way to also toggle them ?
hey gm folks, a mod is requiring " small empty potion bottle" as a craft ingredient, i dont see how to craft them, and i want to know if thats a vanilla item or a mod item that maybe they forgot to add to survival. i can see them in creative menu , but nowhere in survival
empty potion bottle at a alchemist workbench
"small" empty potion bottle
regular empty potion bottle comes from sand in the smelter
yes and a regular potion bottle at that table crafts 1 small ones
weird, i dont see it, if its a vanilla item, then i may have a conflict
probably a glss mod
what tab should it show under?
wait you want empty small potion
yea, small empty potion bottle.
those dont exist
i saw that entry in the wiki must be old,
then ill contact the mzaker and request them to use the standard bottles
Lesser Health Potion: 1Γ Empty Potion Bottle + 6Γ Wild Berries + 3Γ Blood Petals.
most wikis are ai nonsense rn
i need 8 of the empty small one to make a centrifuge for the inTARnation mod. i think a lot of authors are not realizing some items are not in yet. such as bring the boom using limestone to make boom powder, when its not in survival yet
yeah mod devs are bad about that
they could easily make a recipe for it because it makes sense
ill request an either/or fix for it, whatever is easier. thanks for the help, that was driving me insane
yw
