#server-plugins-read-only
1 messages Β· Page 113 of 1
yup just found it
what is wild, if i place/break a block next to it. all of sudden it's block reference comes back π
but yeah if anyone could tell me how they are updating there block state, that'd be awesome cause something is wrong with how im doing it
unless I stumbled on your repo. hydrodynamics on github. latest commit has an example in PipeFlowUpdateSystem
you mind dming a link to the repo?
or telling me the org/user name so i can find it haha
nop π
damn, same thing as I'm doing...
I actually tried setCancelled(true) first. The problem is that it preserves the block's 'cracked' state (visual damage) at 100%. So, if I hit the block again immediately after, the event fires instantly because the breaking progress isn't reset to 0. Thatβs why I'm currently replacing the block to force that reset. Is there a specific method to reset the block damage progress alongside cancelling the event?
I think the reason they're not runnning into the same issue, is because they are cascadding other block updates around it, which if I do that in game, it brings back the blockRef
but like,that cannot be normal behaviour
Looking for some pointers please: If I have a Block x,y,z and look up it's Interactions (a lamp for example with Use) can I trigger that programmatically?
how do you determine which direction a player is looking at? (UP, DOWN, NORTH, EAST, SOUTH, WEST)
Is there a .jar style Mod that allows craftable diving gear? The mods I see involve opening up the assets folder and replacing files, rather than a .jar
I haven't tested it, but it looks like there is β¨β¨HeadRotationβ©β© Component you can get from the player entity references from the entity store
that has a direction vector on it
Uh, zips function as mods if you just put them in the mods folder, you don't actually have to edit the base games zip.
Unless its coming next patch or whatever
Orly? thnx
You're welcome.
ill try that
Hey guys, I'm trying to place a block with rotation using β¨chunk.setBlock(x, y, z, blockName, rotationIndex)β© . The method executes without errors and logs show it's working, but the block doesn't appear in the world. I calculated the rotation index using β¨RotationTuple.of(Rotation.None, Rotation.TwoSeventy, Rotation.None).index()β© which gives me 12. Do I need to call some update method after setting the block in the chunk? Or is there a different way to place blocks with rotation via code?
you are using the local chunk coords, right?
yeah
Do I need to use global?
Nah, it's local chunk coords π€ try using rotation index 0
and see if it places South (which is what rotation 0 is)
which plugins are the best to improve the server performance/fix crashes for 20-30 online survival server?
Okay, I'll try.
Worse than that, it wasn't him spawning.
and there no errors in the world logs?
Not a single error, the only thing there is is debug.
[2026/02/02 01:03:22 INFO] [CaixasSystem|P] Player yaw: -4.5013523
[2026/02/02 01:03:22 INFO] [CaixasSystem|P] Spawn pos: 160.0, 94.0, 100.0
[2026/02/02 01:03:22 INFO] [CaixasSystem|P] [SPAWN] Trying to spawn box: temp_comum in 160, 94, 100
[2026/02/02 01:03:22 INFO] [CaixasSystem|P] [SPAWN] Chunk found! Calculating local coordinates...
[2026/02/02 01:03:22 INFO] [CaixasSystem|P] [SPAWN] Global coordinates: 160, 94, 100
[2026/02/02 01:03:22 INFO] [CaixasSystem|P] [SPAWN] Local coordinates: 0, 94, 4
[2026/02/02 01:03:22 INFO] [CaixasSystem|P] [SPAWN] Rotation index: 0 (TEST: should spawn facing SOUTH)
[2026/02/02 01:03:22 INFO] [CaixasSystem|P] Spawned box: temp_comum at 160, 94, 100 (block: Caixa_Comum, route: WEST/0) ```
I managed to get it to spawn, but it always spawns to the south, not to where I'm looking, which is west.
was it the ID/blockName? out of curiosity
What is everyone using to handle player rewards for voting across various Hytale server list sites?
Sorry, I don't think so because in the asset editor it's in NEWS.
I'll just swap the block out of curiosity.
You should be able to use nuvotifier with some tweaking, as it's mostly internal networking code than any reliance on minecraft
The platform-specific code it has is mostly for commands, events and other stuff like logging
This happens with all blocks.
Okay thank you I will check that out. I was trying to use HyVotifier but couldnβt seem to get that working.
I didn't know HyVotifier was a thing, I checked it out and seems like a solid project. Was there a specific issue with it or did just not get the votes through? Maybe it's a configuration error
That said, it copies the GPL-3 licensed code of NuVotifier (1-1 copy of some classes) and uses them in a closed-source project
Which is very shady behaviour
(Context, the license mentioned here requires uses of said code to be also licensed under the same license, and disclose the source code)
I mean, solid chance Claude spit those out as well and the author didn't care
i made some pretty extensive docs in a wiki format (website coming soon + translations) check out my bio i have lots of examples of basically every api usage. if you find it useful please give the repo a star pls and if you find issues please create an issue report you can fix it yourself or add something to the wiki by creating a pull request
I doubt that, there's like 40 classes with a 1-1 matching file tree
ok thanks
oh someone stole nuvotifier's code thats foul smh didn't even attempt to hide it
Does anyone know why my NPC isn't holding an item in their offhand? I can get them to hold items in their right hand and wear armor, but not anything in their offhand.
β¨β¨β¨```java
Pair<Ref<EntityStore>, NPCEntity> npc = NPCPlugin.get().spawnEntity(
world.getEntityStore().getStore(),
NPCPlugin.get().getIndex(roleName),
citizen.getPosition(),
citizen.getRotation(),
playerModel,
null,
null
);
citizen.setNpcRef(npc.first());
if (citizen.getNpcOffHand() == null) {
npcEntity.getInventory().getUtility().setItemStackForSlot((short) 0, null);
}
else {
npcEntity.getInventory().getUtility().setItemStackForSlot((short) 0, new ItemStack(citizen.getNpcHand()));
}```β©β©β©
honestly im expecting in the upcoming months for people to be stealing an insane amount of minecraft plugins and converting them to work with hytale
As far as Iβm aware I did all of the right configs and matched the correct tokens to the website that is handling the vote for the V2 protocol, and for the one website that was using V1 I pasted my RSA public key, but Iβm starting to think itβs an error in my network configs since Iβm hosting at home and using Playit proxy to get to the Hytale server. I had to use a Cloudflare tunnel to expose tcp://server-ip:8192 where HyVotifier runs. Iβm just wondering if maybe HyVotifier wonβt work over a proxy.
i imagine an insane amount of open source plugins to get converted pretty fast
I am about to looooooosssee itt, why when setting block state does the Block Ref in the chunk store just disapear
is this for minecraft?
Well, this is the Hytale server so π€
Oh wow, I was not aware of that. Yeah, that is pretty shady.
Is there a way to prevent the drops from falling on the ground when breaking a ore?
Cancel the block break event
saw citizen at first glance and thought this was for minecraft lmao i'm so incredibly tired i fell asleep in the middle of typing this ignore me
Its fine lol
In this case, that would prevent the block from disappearing; I only want the ore to disappear and the block to be broken. Is that possible?
Sorry, forgot to mention the part where you break the block yourself with the breakBlock() (or something like that) in the world chunk. As far as I know, that's the only way to do it
@ashen stone this means that your plugin violates the gpl, and therfor is essentially illegal for anybody to use(including you) until the licence is corrected
yes, licences arent law, but they can automatically strip any right you have to the code, and that is law
It's licensed under MIT as well, which seems strange to me as most closed-source projects are ARR instead
tbh the bottom of the page says:
A public repository for public contributions will be set up in the following days. Enjoy! β€οΈ
How i feel reading my errors sometimes
"The error is that there is no error"
Is it possible to detect when a player has placed a specific block?
Yeah, there are events for that I think, because you need to do that to tell the server that a block is ticking.
I beleive as long as those are not modified under GPL-3 there is no reason to open source as you must only open source modified contributed source.
Everyone including lawyers hates GPL licenses anyway, they try to claim any and all software no matter the use most be open source and free..
I tried to register to the current block break event but the argument its using doesnt give anything i can seem to use to detect what specific block was broken
any cool servers?
Also, why do i not have my package on my tags on discord yet, i bought the second tier package
any that have a blend of pvp and building?
Supposedly Claude Sonnet 5 could be releasing as early as next week
Rumored to have 1 Million Context window
1/2 the price of Opus 4.5 and better in all areas
unlink and relink your discord account on https://accounts.hytale.com/settings
Ooh. But Opus is nice. Eh I am fine going back to sonnet!
You got it π
I cant do this because ly account is my Discord account. π
pretty sure if you link another thing like google, you could still do that
Oh! Cool!
Opus is so expensive
I just sub monthly.
how can I get the entity reference from a chunk reference? is that even possible
for Github Copilot you get an alotment of premium requests
And Opus 4.5 uses 3x and Sonnet 4.5 is 1x
I have no idea what is being measured. Is this price or context?
So for our plan we get 300 requests
So Opus 4.5 would use 3 request alotments, Vs Sonnet 4.5 that would use 1
Requests? Is this like an API situation?
This is what work is paying for
At least your work pays for it...
Does anyone know if i can add a custom component to my block to store and retrieve data for that block specifically without having to create my own backend framework to manipulate the data?
What i am trying to do:
I am trying to store some custom logic to a block but it requires specific data for the block (think tile entities from minecraft)
What i want to do:
I want to assign the block data that i can manipulate in order to provide a scripted result, and also have a "on tick" that checks every 10 ticks or so to trigger logic for the block
1 Request = 1 Prompt + All the other requests the AI makes to itself before it gives you the final answer
Huh. I didnt even know you could be on a per request limitation.
Hmm.... i figured out a solution using the docs xD
However: i require storing a variable amount of data, so components may not support the volitile data i was trying to construct
This is specifically for Github Copilot, for other platforms it may be different
Hello is there a way I can access a list of all online players so I can iterate on it
List<PlayerRef> allPlayers = Universe.get().getPlayers();
Man i wish there was a guide somewhere on creating custom components for blocks xD
I really need to store and retrieve 6 different values for the block lol!
Anyone know what the alternative to BlockChunk.getSectionAtBlockY() with it being depricated?
can i temporarily preven a Entity from moving?
Does anyone know why my NPC isn't holding an item in their offhand? I can get them to hold items in their right hand and wear armor, but not anything in their offhand.
β¨β¨β¨β¨β¨β¨```java
Pair<Ref<EntityStore>, NPCEntity> npc = NPCPlugin.get().spawnEntity(
world.getEntityStore().getStore(),
NPCPlugin.get().getIndex(roleName),
citizen.getPosition(),
citizen.getRotation(),
playerModel,
null,
null
);
npc.second().setInventorySize(9, 30, 5);
if (citizen.getNpcOffHand() == null) {
npcEntity.getInventory().getUtility().setItemStackForSlot((short) 0, null);
}
else {
npcEntity.getInventory().getUtility().setItemStackForSlot((short) 0, new ItemStack(citizen.getNpcHand()));
}```β©β©β©β©β©β©
can I move the objective hud? is there a ui file for it somewhere?
And now I have 1000 Requests per month thanks to my Boss π
I need to see if my boss will take my 200/month bill π
We pay $39usd per user per month for the Higher Tier Plan
Ooooh. Thats awesome. The issue is many of my co-workers use different AI. (We all have our effective models)
There is one on Community Hytale modding
Server Plugins > Block Components
I've wasted hours now trying to figure out this weird setBlockInteractionState issue....
I'm pretty convinced this is some hytale server bug
I've already experienced unexplainable issues before where block state changes, cause it giving me the wrong coords in my EntityTickingSystem (but only on place, chunk load works fine)
I haven't played the game yet is it fun making plugins or is everything doable with AI?
I have been using AI but that is for docs and many algorithms. No agent capable but as a senior to Jr it is.
AI basically got me knowing nothing to ver little about java, but very familiar with programming setup with running and pretty okay code. A little work got it working well. Took about a day of effort.
half the battle is just trying to work out what component you have available and how to get them.
which AI is pretty good at identifying these if you decompile the hytale server jar and ask it questions.
but atleast in my experience using claude code, it's absolutely dog water and figuring out how to use them without wasting an insane amount of context tokens
it's fun! but AI won't be building any plugins by itself without insane money sink right now (not until there's enough docs and examples)
Yeah, I dont trust Claude Code. I am nitty gritty. I basically use it to write snippets and I put them in
Github Copilot lets you choose from a bunch of models
If someone spent a lot of time making good docs would AI be able to handle most of the work
Likely not
even if you use ai best is search decompiled hytaleserver jar so find right path
Yeah I use AI for like "How do I get ___insert field from block___ from the info I have here" Or breaking my one 3D model into the 1.1k models I needed π€£
there good docs not fully finished %100 but humanized rewritten there good ones
AI can get you the information and even piece it together, but it cant make something you want from a prompt.
I prefer to try ask here first, But alot of times people are busy or are unsure, So asking the AI how to achieve something is very helpful
Lol I use AI so I dont have to ask. π
I wish I could send a pic of what I have going on with item pipes, it's littttt
I'm trying to commit the language to memory so its a last resort for this current mod I'm making
it would be good if they added channel with image perms
most of the work, nah but it'd defo be way better for sure than it currently is
proper MCP server from some doc site would allow it to figure out how to use these component much faster and cheaper
1.1k models for 1 block π
The Server Jump Mod ended up a mess tbh, Even though it works
Shubshub Economy has a much cleaner codebase
so like, is there away to report bugs for hytale server jar haha
cause I'm pretty sure I've bumped into two now
I have a lib for people to (hopefully) use for creating energy production blocks, and things to consume energy, then I have my factory mod that connects to the lib
anyone know how to use the "UseLatestTarget" from a BlockCondition Item Interaction?
I'm trying to save the reference of one block in a tool and then the next block that is clicked will then do "something"
There's currently a Community Project going on for a Power Standard API as well
Must've missed that π€£
Placing a block that, will result in BlockState changes (like rails for example). will cause EntityTickingSystem to trigger, with wrong local coords.
and when running β¨worldChunk.setBlockInteractionStateβ© causes it to loose it's Ref in the ChunkStore until a block update happens
this could be result of them ticking, but I'm pretty sure both of these are not intendted behaviours
I was able to work around the first one, but this second one is doing me in, it's been 5 hours
good catch did you report it i dont think intented bug this type of bugs problaby good to report on website
dis what I was asking about, sounds like there's away to report them in forum, so ill look it up
Anyone else use PlaceholderAPI by creeperface or WiFlow's PlaceholderAPI?
What does that do?
Yeah I get that. π - I don't have enough bandwidth for that. But I hope ya get it! Never been good with syntax, but I know what I need and how I need it! - I am an encyclopedia who can't spell words. π
I come from Non Typed Languages like JS and Game Maker Language, where everything is a var π
Now in java my variable can be of type AuctionContract π
Ooh I hate dynamic typed languages. π I see why your trying to do that. Its not reall the language but more the concept of types in a language?
Its more all the extra fluff that Java makes you do that even other typed languages dont
Yeah the verbosity.
Like
public static final BuilderCodec<AuctionContract> CODEC
I've been using Kotlin, it's working like a treat
Thatd be something like
BuilderCodec<AuctionContract> CODEC in C++
Also I really like the CODEC System
Being able to natively build an omnidirectional serializer is game changing
Yeah I see what you mean.
Anyone have an idea how to make an explosive that is a block and gets placed down, and once its lit turns into an entity so it can be shot out like a canon?
Anyone know how to spawn an item? β¨ world = Universe.get().getWorld("W1"); assert world != null; world.execute(() -> { ItemStack i = new ItemStack("Ingredient_Fiberasdf", 1); Vector3d pos = new Vector3d(5, 101, 5); Holder<EntityStore> h = ItemComponent.generateItemDrop( store, i, pos, Vector3f.ZERO, 0.0F, 3.25f, 0.0F); assert h != null; store.addEntity(h, AddReason.SPAWN); });β©
I'm not seeing any errors.. nothing happens
thats the correct way to do it?
Debugging? Yeah the best way is to just shove 10,000 logs all over the place till you dont reach the one you were expecting it to
logs dont show anything
Log out what world is, See if it actually goes inside the execute block
I'm wondering why you even need to run that code on world.execute though
Literally no joke
β¨LOGGER.atInfo().log("We got over here to this part")β© All over the place till you reach the end of the string
If you dont use the world.execute I get error, [2026/02/02 05:20:12 SEVERE] [InteractionSystems$TickInteractionManagerSystem] Exception while ticking entity interactions! Removing!
java.lang.IllegalStateException: Assert not in thread! Thread[#102,WorldThread - W1,5,InnocuousForkJoinWorkerThreadGroup] but was in Thread[#103,WorldThread - hub,5,InnocuousForkJoinWorkerThreadGroup]
ya I can see print messages but nothing it happening.. no item spawning, no errors, etc
Well, I almost got the Worldgen V2 thing adding a Prop. I have an Assignment that it's finding from my overridden Biome, but the server log keeps saying it can't find a prefab at my β¨WeightedPrefabPathsβ© β¨Pathβ© π€
I'm setting it relative to the whole β¨Server/WorldgenAlt/Prefabsβ© path thing, but no luck π«
By the looks of it you're generating the item to drop at 0,3,0 ?
Oh wait no I see your pos of 5,101,5
no thats the velocity, it drops at 5 103 5
WorldgenAlt? What? It should just be in Server/Prefabs.
Also it needs to be in a folder named after the prefab, that's how it randomly selects.
ie:
Server/Prefabs/(PREFAB NAME)/(PREFAB NAME)_001.prefab.json
Are you at or near 5,101,5?
yep
Make sure to log out what h is as well
Oh! Yikes! Ok, yeah, I'm finding a lot of confusing information π
TY! I'll try it!...
You're welcome, hope that fixes it for you.
Ok, this is interesting, I still don't see the prefab in the world, and now I don't get any warnings about it not existing, but I do get a warning about unused keys. I'm sure I made my Assignment file wrong π³
β¨Delimiters.0.Assignments.Prop.Directionality.DefaultDirection, Delimiters.0.Assignments.Prop.Scanner.HeightRange, Delimiters.0.Assignments.Prop.Scanner.Range, Delimiters.0.Assignments.Prop.Scanner.Pattern, Delimiters.0.Assignments.Prop.Scanner.Originβ©
Hmm, yeah that may break it. It's also kinda tough to figure out a good amount to set them to so that the prefabs don't either: Flood the world, or, never show up.
Yeah and there's so many settings it's crazy, not to mention I can't use the Asset Editor on Linux.
Oh. That would be horrible. Editing them as pure json would be the absolute hell of all time. Especially since the editor auto generates UUID's that are needed I think.
Yeah, I've been trying to do this for 3 days π«
Whomp.
β¨ world.execute(() -> { Store<EntityStore> s = world.getEntityStore().getStore(); System.out.println("TEST"); System.out.println("**** " + store.getEntityCount()); ItemStack i = new ItemStack("Ingredient_Fiber", 1); System.out.println(i.isValid()); Vector3d pos = new Vector3d(5, 101, 5); Holder<EntityStore> h = ItemComponent.generateItemDrop( s, i, pos, Vector3f.ZERO, 0.0F, 3.25f, 0.0F); assert h != null; System.out.println(h.toString()); s.addEntity(h, AddReason.SPAWN); });β©
i give up, i've been trying to do this for two days now
it's not getting added to the store for some reason, I print the entityCount and it always shows 0
what do the other prints show?
If you don't mind looking quick, does this look like a proper Assignment file to you?
β¨```
{
"$NodeId": "OrbTemple_Assignments",
"Type": "FieldFunction",
"ExportAs": "OrbTemple_Assignments",
"FieldFunction": {
"$NodeId": "OrbTemple_Assignments-FF",
"Type": "Constant",
"Value": 1.0
},
"Delimiters": [
{
"$NodeId": "OrbTemple_Assignments-Delim-0",
"Min": -1.0,
"Max": 1.0,
"Assignments": {
"$NodeId": "OrbTemple_Assignments-Assign-0",
"Type": "Constant",
"Prop": {
"$NodeId": "OrbTemple_Assignments-Prop-0",
"Type": "Prefab",
"Skip": false,
"WeightedPrefabPaths": [
{
"$NodeId": "OrbTemple_Assignments-Path-0",
"Path": "MotivationsOfGaia/Structures/OrbTemple",
"Weight": 1
}
],
"LegacyPath": false,
"LoadEntities": true,
"Directionality": {
"$NodeId": "OrbTemple_Assignments-Dir-0",
"Type": "Random"
},
"Scanner": {
"$NodeId": "OrbTemple_Assignments-Scan-0",
"Type": "ColumnLinear",
"HeightRange": 20,
"Range": 20,
"Pattern": "CenterOutward",
"Origin": "Surface"
},
"MoldingDirection": "None",
"MoldingChildren": false
}
}
}
]
}
Uh... It's way smaller than every other assign file I've had made.
Oh no π
Wait where is the floor info and stuff?
Why is your directionality missing half it's contents.
Because I'm plucking stuff from the built-in assets trying to figure out how these files work π
I got mine working by yoinking oak pillars and replacing all the pillar assets and then changing the delimeter.
same
So I have a question how we sell our plugins?
/plugin list
/plugin list
&m&zing.
There is no first party plugin distribution system yet
So means I need to wait for it or make my own selling market
Or use an existing third party one
I started a working on this mod that I have on curse forge simple arrow pickup, when I started there's was nothing about arrows, V1 was simple: I just listened for arrow projectiles, waited until they stopped moving (velocity ~0), then treated them as pickup arrows and gave them back to the player. Flying arrows were ignored, stopped arrows got reclaimed. but I could not find a way to make them persist in the world more than 3 to 5 seconds , found a work around to make them into pickable item like a loot drop and until I find a way or is implemented in the API (I dont know if it is I tried looking but didnt find a way to persist projectiles) it will be like this, put it on curse forge to find someone already did some similar T.T took me longer to finish cause i'm new to java and modding anything other than LUA
Did you know any?
Haven't looked into it myself but I'm staying away from BBB because I heard they're a hub for that
LOL, copied from oak pillars, no warnings or errors and just no Prop/Prefab showing up π€£
Time to step away π€ͺ
Thank you for all your help!
Here's a funny log entry: β¨[Spawning|P] Removing NPC of type Clownfish due to overpopulation (expected: 0.165953, actual: 5)β©
What in the nine hells was it doing expecting a decimal number of clownfish?!
It's very precise this Hytale generator π
What is BBB?
True. Doubles everywhere, no floats or ints allowed.
In a voxel game where most things should be whole blocks no less!
True.
builtbybit
@vocal kelp how are you calling the SpawnItem() ?
tbh, its kind of impressive how few blocks are "whole" blocks
its still a lot, but its a lot less than I wouldve thought
That's a good point, most blocks are not rendered on all sides!
also vanilla uses a ton of slabs and "weird" blocks like pebbles, most decoration blocks, sticks
Pebbles are a full block, do you mean rubble?
so i found out that I can spawn an item when running with a command but when I do this, β¨world = Universe.get().getWorld("W1"); assert world != null; store = world.getEntityStore().getStore();β© it doesn't work?
yeah rubble, whatever the little one is
Ill try to help, what are you trying to achieve? At what point should the item spawn to the ground?
I have some code that spawns an item and it works fine when run from a command, I use the world parameter that the command gives. But when I try to use the same code with Universe.get().getWorld("W1") it doesn't work. Not sure why?
Hey @dusky sable thanks so much for this info! Do you know where there is any reference to these role indices - like 53 is no behavior, 54 = ???, 55 = ???, etc.?
I honestly have no idea. Maybe if there's a specific entity have behaves like you want your NPCs to, you can spawn them with spawnEntity() and check their role
when I print out world.getName() from the command context it shows 3 for some reason... why wouldnt it show W1? I have no world named 3
can i add you in so its easier to message?
sure
Added.
how can i make a custom item where i can place it in the world, i got the item showing in my inventory i just cant place it
Has anyone been able to create custom particles/effect and damage system? been trying to ramp up for some ability releases and its tough
That means the block is bugged.
If I use another item for example a bench as a basis for it, it works fine but when I add it from scratch not basing it off of anything is when I have the issue
Maybe it's the being a basis thing that borks it then.
Or you aren't properly overriding something that needs to be overriden.
Idk Iβm still learning
Any Coders/Scripters that want to join a project? we are working on making a highly runescape inspired server and are looking for more people who want to join the cause π if you want to join or just want more info hit me up!
hello, beginner dev here, may i ask how to edit the recipes required for an item
when the pre-release gets a normal release? As server owner i really need the fixes in this releases because our server crashes very often because world teleporting :/
is there any way to make a world thats empty but still has biomes? so i can do a skyblock type thing for singleplayer? and with mobs spawning
"a few weeks"
have you downloaded any mods to help with this such as hyfixes? I run like 5 different patching/optimization mods and my server doesn't crash anymore
Hi all, After reading through the server api I couldn't find anything related to a player touching a liquid, does anybody know any events?
β¨public static final BuilderCodec<PluginConfig> CODEC = BuilderCodec.builder(PluginConfig.class, PluginConfig::new) .append(new KeyedCodec<>("DefaultStartingBalance", Codec.STRING), (config, value) -> { config.defaultStartingBalance = new BigInteger(value);}, config -> config.defaultStartingBalance.toString()) .add() .append(new KeyedCodec<>("EnableAuctionHouse", Codec.BOOLEAN), (config, value) -> { config.enableAuctionHouse = value; }, config -> config.enableAuctionHouse) .add() .build();β©
Is this valid?
β¨ [ConfigManager] Decoding config: {"DefaultStartingBalance": 10000, "EnableAuctionHouse": true} [2026/02/02 09:21:28 SEVERE] [ConfigManager] Failed to load config: Failed decode [ERROR: UNUSED LOG ARGUMENTS]β©
I'm geting an error here
β¨``` LOGGER.atInfo().log("Decoding config: " + bsonDoc.toString());
config = PluginConfig.CODEC.decode(bsonDoc, extraInfo);
LOGGER.atInfo().log("Loaded config from: " + configFile);
```β©
Just an observation, since you are using BigInteger, do you have a cap on the balance value? Using bigint can lead to some issues down the line.
No cap
Maybe I'll have a configurable cap
You should, bigint afaik doesnt have a cap and if a bug/exploit is found where you can add money, that can lead to some serious memory issues.
Just a headsup, i doubt youll ever need numbers that big π
I'm doing it because its fun
What if someone decides to make an Idle Game Minigame with my Economy Mod 0:
I'll have to make sure that doesnt happen then
Hi all, After reading through the server api I couldn't find anything related to a player touching a liquid, does anybody know any events?
Oh yea for sure, go for it! Just giving a heads up π
Yes i use hyzenkernel π
does anyone have automated restart plugin?
Anyone here a master of HyUI?
How do I add like a margin or padding between HTML elements xD
margin and padding isnt supported by the spec
look into the collision interaction for lava/water
Padding is supported
Hi everyone ! Is there a clean way to trigger the selection tool with a cmd (I already know how to create new one)?
Hmmm, Let me try
Oh I see
β¨data-hyui-content-paddingβ© This you mean?
I don't actually know HyUI, i only know that padding is supported by the underlying ui dsl
*within the constraints of the platform
yeah and the platform supports padding
both horizontal/vertical, and directional keywords
for HyUI specific questions, you would probably get better help in Ellie's discord
welcome to life
π
Didnt even think of that, appreciate it β€οΈ
I wonder if anybody has figured out how to do the [CLICK HERE] and it runs a command in chat
Looks like I had to explicitly add another element of size between them
There isnt a way to add margin otherwise
What jumps out to me is you are using a string codec by the value in your config is a number.
β¨@random magnetβ© Will the UI system be changed? Will smooth animations be possible for hover buttons and animations in general?
The codec system doesnt support a biginteger
And an integer can only be so large
But as a string it can be any length and so can biginteg3r
They're in the process of switching to Noesis which will give us a bunch more flexibility. Pinging the devs is unnecessary
Especially Slikey who's on vacation
Yes, I understand, but the content needs to be a string to load, and then you transform to a BigInteger like you are doing.
Okay, thx
Ohhh yeah right that was the issue, sorry I was confused by what you meant and shouldve clarified I solved it
All good π
Do you know when they will update and make the UI on Noesis?
Okay, thanks you
Surprised noone has made a tags or a voucher plugin yet lol
why does a break block event get called if i place a block?
because you're "breaking" the block it replaces
for example grass, the water block if you're placing in water, or the air block on land
excusme, whre can i report bug on this game
thanks
Has anyone managed to get increased mob HP to work? I've been trying for a week, no matter what I try I can't get mobs hp to get increased. I was close but was too buggy.
thankyou sir
is there an easy way to check for these "non breakable blocks" or do i have to check them manually?
Method for Flooring a Value?
Math.floor?
I don't know what you mean
like if i want to check if its air, or any fluid etc. blocks that you dont actualyl break but are replaced, do i just have to check it for everything seperately?
but i think i found a solution already
yeah this can happen to basically any block
i get get the group of the block
if you place a block on any grass or shrubs or so, the break block event will be called for it
quick tips please!
I need create a new NPC so the player can reach it and the npc will execute a command for this player
Where do i start
Here is the npc documentation from the Hytale team
hytalemodding,dev/en/docs/official-documentation/npc-doc
hytalemodding,dev/en/docs/official-documentation/npc/1-know-your-enemy
I think blocks that aren't intended to be broken lack gathering configuration, so you can see if β¨BlockType::getGatheringβ© is null to know if the block should be unbreakable.
Maybe some other checks needed too
oki
β¨String query = "SELECT auction_uuid, contract_data FROM auctions WHERE expiration_processed = 0 LIMIT " + pageSize + " OFFSET " + offset;β©
Is this valid sql?
It just seems to give me the same 4 Elements each time when Pagesize is 4 and Page Number is 0 and then 1
LIMIT works but OFFSET seems to not
a pickaxe has different power for different gather types, is it possible to set a "overall power" without having to specify it for every gather type?
β¨```
"Tool": {
"Specs": [
{
"Power": 1,
"GatherType": "SoftBlocks"
},
{
"Power": 0.35,
"GatherType": "Soils"
},
{
"Power": 0.05,
"GatherType": "Woods"
},
....
Iβm looking for programmers/moddets to help me with hytale server for plugins and mods, please lmk Iβll provide extra details once you message me!
Willing to pay
not hytale related, but pagination requires a consistent sort order
does anyone know about generating structures in existing biomes?
Yeah I'll probably work on that once I actually have it workin 0:
I'm so close to making this UI work....
I'll be a genius java programmer once more until the next problem arises
omg I think I did it
Now to just wait for the Auctions to flush to the DB (And I'll fix that tomorrow)
Currently Auctions dont join the DB on first creation, Only when we flush the cache
can be if it was plugin related π
any idea why this is not dropping a block?
player.getWorld().breakBlock(block.getX(), block.getY()-1, block.getZ(), SetBlockSettings.NONE);
it breaks it but you get no item
Update: I am the smartest man alive
Try β¨BlockHarvestUtils::performBlockBreakβ© or β¨BlockHarvestUtils::naturallyRemoveBlockβ©
All the logic for dropping items from blocks is in there.
you might wanna start looking into prepared statements fyi
Example?
Ive never really written much raw sql
How to get the rotation of a block inside a SimpleBlockInteraction?
on docs oracle dot com /en/java/javase/25/docs/api/java.sql/java/sql/PreparedStatement.html
basically it lets you safely inject variables to prevent injections
Injections are safe! (If prescribed by a doctor).
not sql injections!
SQL just sounds like an effective disease.
Dont get SQLs they are nasty! Oh or (an SQL) π
How do I open a chest for a player?
This is a channel for people to have conversations about modding. If you're bored and just want to troll around, would you be so kind as to move to #game-discussion ? It's hard for people to offer help and have serious conversations when someone keeps interupting with attempted jokes.

don't have ide open rn, but you can check how Open_Container interaction is implemented in server code
I don't have it memorized yet, but this is the best I got for the idea and use:
WindowManager, ContainerBlockWindow.
Any way to hook into user keypresses?
via "Interactions"
hytalemodding,dev/en/docs/guides/plugin/player-input-guide
Not possible to have custom keybinds at all currently, no. They're working on how to create them with no risk of keyloggers.
In the meantime you can actually hook into the existing keybinds for Q, F, etc, but not add your own (see DaniDipp's link to hytalemodding)
Yeah, I dont think they even send packets for unused keys. There is no way to detect other than your typical keys.
Becareful since your hijacking direct keys you can disable in-game stuff doing so. π
Hi, If any server or user wants a mod or custom plugin, let me know and Iβll open commissions. You can include art, animations, and complex functionality.
Oh, also I saw somebody using builder menu keybinds since you can check those for other actions for key inputs
hypixel\hytale\protocol\packetregistry for the registered packetID's.
if you have a decompiled server.jar
how can one player use like half of my server ram?
Memory leaks. And some chunk management issues. There are some performance plugins like Nitrados to assist and there is a good list of java args I cant get mine atm
short answer: it doesn't
long answer:
you're likely confused on how memory management in java works and seeing allocation amount in a panel or in your os monitor
when i play its fine, but this random player makes it like half of the server ram
It can, I was a single player on a void world and it ate 25gigs.
Hmm, anything they are doing? Using? - What is loaded around them? Ram amount?
whats your server's Xmx value in startup flags?
where are you observing this?
4
and the server itself climbed to 25gb?
14336M
Yep! I fixed it though. No longer a problem for me, took a few settings and server modifications to get working
If you give the JVM ram, it will use it. Would be wasteful otherwise. A larger heap results in fewer GC events and more efficient caching
then the server will use up to ~14gb ram, regardless if there's 1, 2 or 20 players.
java runs in a vm, effectively. outside meters cannot see "inside" that vm and just report how much memory is currently allocated to the server
It is why Java is always seen as memory hungery, it reserves the largest pool allowed. So it doesnt have to resource share via OS.
he just join and leaves that player is no longer in the server leaving the server with usage of 50% ram, but when i join and play only about 15% is used
again, you're not looking at "used" memory. you're looking at currently allocated memory.
it's simply confusion on how java works.
in the ideal world you'd use -XX:+AlwaysPreTouch to allocate all the memory at the start and never release it, so it would report as always "using" full memory at panels or monitors
it would not actually actively use that memory, just reserve it for jvm so it can work without making allocation calls on runtime
Funnily most games use this concept, pre-loading, loads all allocations into ram so you don't have to allocate during runtime. Java just does it for ya. π
Very simplified: When a player joins your server, chunks and entities get loaded into RAM (the "heap"). When the player moves around, the contents of the heap grows, until it reaches your specified max. Even unloaded chunks and entities are kept "hot", so that if they're needed again, they can be accessed quickly.
If you lower your Xmx value, the JVM has less space to play with. This results in unloaded chunks getting cleaned up more frequently, which is not a bad thing in itself, but could lead to lag if it gets choked out.
i need help with a game issue
always fun when people's homes/beds/spawns get unloaded and are constantly needing to be re-fetched and loaded π₯
how to fix? my game says my time is 2 hours ahead but it isnt. i had a vpn but i uninstalled it. what do i do???????????????????????????
ayy finally got the rank, had to re-connect my discord
your game time where?
game? your client, or your server?
we cannot see your screen, you need to paint a picture
but what if he can't paint π
it's a figure of speech
woosh
I have learned to assume people don't understand things
that's why I explain everything
lmao my system got all iffy about a plugin because the modder's name is "virus"
and security software being as sophisticated as it is, saw DID SOMEONE SAY VIRUS?
hey, did they add something already to see what ip the player used to connect to the server?
Usually the client resolves host->ip, so I'm gonna guess; unlikely, but that's just a guess
I have a relay that gives me routes, but I just realized I dont think Hytale obfuscate that information. π but I am grabbing packets before they enter and auth with Hytale.
ip should be visible in client ready packet log.
did you mean hostname?
Wut?! I was only using 2GB for one person with over 36 mods and with 5 players on I get up to 5GB out of 8GB I assigned it.
we just went through the entire conversation about this
it doesn't work like you think it does.
Yeah, I opened my phone and saw that. Lol
Does anyone have an solid modded server rcommendations?
working on my first large-scale plugin in years, gonna see how difficult it's gonna be to "cross-platform" it for mc and Hytale, but at least it'll give me a chance to find the equivalent systems from mc->Hytale API systems
of course I didn't think of cross-platform till it was too late π
you just have to have a solid abstraction layer which can be a big rewrite depending on your current setup
Yeah I'm in the middle of the rewrite, I went too far down the Hytale trail π€£
I never had fun with custom pathfinding in MC (Even with Citizens2 lib), I wonder how difficult it's gonna be with Hytale to rip the brains out of an NPC to give it my own pathfinding rules
What would cause Query in AndQuery cannot be null? @Override public @Nullable Query<EntityStore> getQuery() { return Query.and(Teleport.getComponentType(), TransformComponent.getComponentType(), Query.not(PlayerRef.getComponentType())); }
The entity module might not be loaded
Is there a way to wait until it is? This is happening during registration
In your manifest.json, add "Hytale:EntityModule": "*" in your dependencies
That seems to have fixed it thank you!
{
"Group":...
"Name":...
...
"Dependencies": {
"Hytale:EntityModule": "*"
}
}
I have not ran into Dependencies systems yet, what's that all about π (I don't see it on the non-official docs)
please tell me there is a way to get rid of that whole authentication thing. I cant get anyone in the server except for me
prob shoulda just made a thread for that but still
It's how plugins depend on each other. EntityModule is a plugin like ours. * means any version
If you can connect anyone should, did you /auth login and make sure to change the persistence to Encrypted?
Is there a list of Hytale core plugins?
ohhhhh i set it to Memory
I'd change it to Encrypted, and then restart, see if maybe that fixes it
yeah, in your server, run /plugin list 
Didn't think about that lol thanks
Ah so post-pone plugin loading until post-hytale systems, and then for "load last" guessing you can just set it to the last loaded hytale plugin you see in console (?)
Is there anyone who also can't open their world?
best practice is to just figure out which functionality you depend on and specify that in your dependencies. Don't try to outsmart the plugin loaders optimizations
"DamageModifiers": {
"Physical": 0,
"Projectile": 0,
"Poison": 0
}
What type of damage modifier would Explosion's like the boom shroom be? Would that be Enivronment ?
Would it be best to store data on the player or in a custom player file? I am leaning towards custom player file as to not mess with player data.
Most simple way is to create a component with a proper codec and just attach that to the player. Hytale then takes care of saving/loading the data
there is this username popping up the server and makes the server unstable the username is Ariorh, watch out for this player
My server keeps on crashing, is it better to only keep Server Optimizer or Nitrado Performance?
is one of them mentioned in the crash log?
Do you know if there's any concern with storing large/complex data structures in a component?
Don't use "optimization" plugins
just wish there was a propper showcase of that ive checked on hytale modding none there has helped me
Snake oil :π
Can't think of anything. there are some complex things in the player data already but in the end, it all gets compiled to json
I'll have to see then. Could end up with upwards of half a megabyte serialized
per player? π³
Per entity using the system. Not limited to players specifically
Program state of a stack-based virtual machine
I kept Nitrado. I found it to be more consistent.
I might just end up storing them outside of ECS and just keeping a reference in the component.
yeah you already know that you operatate outside of it's intended use case ^^
I'm confident that the system would be able to handle it, but by doing it yourself you can probably make it more performant
Well it will also eliminate this lame persistence checkpoint I have right now. I'm trying to keep it off the world thread as much as possible
Anyone see this issue before? My whole screen went white
Is it possible to add a custom slot in the inventory? For example, under the shoe slot?
Thanks for sharing this however I do not have "Priority & VLAN Disabled" as an option or value selection in the properties.
Hi, everyone
There was such a question regarding the use of resources on the server. Can someone tell me how much disk space the world will consume over a distance? I mean, players will create blocks, buildings, etc., how much space will all this potentially take up?
And the second question is, has anyone encountered an attempt to redirect server logs to prometheus?
Is there an event I can use to tell when a player eats? Or even before they eat and potentially cancel it?
how can i send message to the player like when entering a new biome?
the message top middle of the screen
its not sendMessage or Notification
EventTitleUtil.showEventTitleToPlayer()
thanks @west elk
Any examples on writing up a basic Hytale proxy? I can get the client to attempt to connect and the proxy receive the connection. From there I just have to do some digging on how to handle the handshake, auth, etc. But if there are working examples, can't hurt to look at
If I want to add assets to my plugin is there a way to use the asset editor?
yes. your new asset type has to define a codec and be registered like this:
getAssetRegistry().register(HytaleAssetStore.builder(String.class, WelcomeToastConfig.class, new DefaultAssetMap<String, WelcomeToastConfig>())
.setPath("DaniDipp/WelcomeToasts")
.setCodec(WelcomeToastConfig.CODEC)
.setKeyFunction(WelcomeToastConfig::getId)
.build());
I think he means using the asset editor to add/override assets from the base game
to which you can but it depends on how you're setting up and running the plugin
thanks! I was asking what uyghti said, but I was going to do this so it saves me some time on the docs
I'm using the plugin in IDEA, right now I just have a pack that im manually copying to my plugin but its really annoying
whats your buildscript looking like? Have you got a way to run a server from the IDE? that's usually the easiest way
the plugin default gradle build script, it runs a server from the IDE but puts the plugin in readonly so i cant edit the assets in the editor.
Ah, I'm not too sure what that plugin does unfortunately. The run configuration I'm using just adds an argument when running the server that points to my src/main. Something like --mods="C:/path/to/my/src/main"
Is creating a new world in a custom instance require a plugin? Or can you do it with a datapack?
you can do it with an asset pack
does your run config compile the plugin to a jar or just leave the Server and Common folder?
Ok, So how does it work, I've tried replacing the default instance
as far as i know i dont use the compiled plugin jar file when running the server
I see, I think thats what I need to change then. Thanks for the help
yea if your mod isn't a jar/zip, it shouldn't be read-only
create a new instance in Server/Instances/<Your_Instance_Name>/instance.bson and then either setup a whole PortalType for it if you want to use the ancient gateway to travel to it, or setup a new interaction using the TeleportInstance interaction
I have a component:
ComponentType<ChunkStore, MyTestComponent>
And have a system
HolderSystem<ChunkStore> that make sure that onEntityAdd, we add the component:
holder.ensureComponent<MyTestComponent>(this.myTestComponentType)
I register it with CODEC:
chunkStoreRegistry.registerComponent(
MyTestComponent::class.java,
"MyTestComponent",
MyTestComponent.CODEC
)
But when block unloads and loads again, it's state drops to default.
How to store the component state? π
Maybe someone know, how FarmingBlock store it's state π€
That is for traveling to the instance after world creation, I want to start a new game and create a new world that starts in my custom instance.
oh then i'm not really sure -- isn't there a default world option somewhere?
in config.json in your universe folder there is a defaults section, you could try that
I got it working now, thanks for the help!
anything in the console saying that your codec failed to serialize/deserialize by chance?
That's outside of an assetpack, changing that would be no different than starting a world and using commands.
thats true, then i guess you'd need a plugin
Uhg, ok. I don't suppose you've tried modding V1 worldgen, cause that
Also doesn't seem to work.
Me too
I haven't touched v1 worldgen so I can't help sorry
can I ask what it is you're trying to do that involves changing v1 worldgen?
I want a plug and play way to start a game with my own worldgen.
he's the owner of 2o2t (look it up on hytalehub) I think he's doing that that to climb ranks
Is there a way to know if a block/entity is in a x y z position? I wanna check if thereβs already a block there if itβs not add a block if theres a block donβt add it
Hey guys I saw that chunk pre-generation is built in the game how did this work exactly. Because there is no progression indicator and I don't know if is working
It seems using crafting is the only way besides diving into the code to find out if I can do it with a plugin.
Is there something like mca selector? I need to delete some chunks to regenerate them in the new version however I want to keep a few chunks
you mean world.getBlock(x, y, z)?
Guys, could you help me?
no need to ask to ask
just send your question and if someone knows the answer, they will tell you :)
My brother deleted my early access game account, and I wanted to know if there's any way I can get the game back.
π’
Write to support and give them your email π
I reported it on Hytale's website
I even have the purchase ID; it was made on the first day of early access.
If thereβs no block it returns null?
thanks
you could write a small plugin that just teleports players to your instance every time they connect
ok thank you
Any guides on how to setup a Bedwars server?
not sure how handling deaths and other things would work doing that but might be worth a shot π€·
Basically, I want to make a custom word gen that players can access with just adding a mod, and doesn't require late game stuff. Needing commands or setup, would be annoying, and I'm not an artist, so Adding a lot of end game content isn't viable. So an early entrance to the new generation is the idea.
No, it's an int, so it would probably return BlockType.getAssetMap().getIndex("Empty");
Haven't tested it myself though
his UUID is f0cea4b7-0945-44f3-a77e-246033692f82
or if you really want to stick to asset packs you could make a new teleport pad block that is very cheap to craft (sticks or something) and have that teleport them to your instance
i knew something was not right about the player
likely unstable from joining and loading in unloaded chunks @random briar aka not malicious
i test some stuff with other dev, this never happens only Ariorh that does this makes the server unstable
How do you explain he's the only player that tried logging in my server within 10 hours and he does it EVERY 30 MINUTES and the server always crashes
Yeah on my server too
I could do this, but I wanna differentiate between first joins and latter, So people can travel multiple worlds without being reset on join. I think an early craftable portal is probably the best option right now.
Oh well, I kinda wanted better lore for entering my worldgen, like an added portal at the temple. But I suppose making a portal from sticks and rubble would work, I can put the description as, "How does this even work."
no, BUT
I have only 1 field with "CurrentLevel", and I changed it from 1 to 10 in my component object.
But when I debug the CODEC getter - it return CurrentLevel as 1.
So, CODEC works, but value in CODEC is default one π€
I could probably overwrite the temple portal I suppose, I think that would work.
Yep that would work. Also I've not messed around with it myself but you might be able to edit and override the prefabs that spawn (such as the forgotten temple) and add your portal that way too?
Tried it. And tried changing the prefab to a coppied and modified one.
Ah, bummer...
It seems the Server/World folder is not overwriten by assetpacks, and prefabs don't seem to be replacable. Although I only tried the temple.
ah, forget
I didn't add that field into "clone" method, now everything works fine 
oh yep that'll do it
Temple portal overwrite works, I suppose I'll go with that. Thanks
anyone working on some non traditional minigames? (not a port from minecraft, skyblock, skywars, bedwars, etc)
Or if you have an idea of something that could be fun id love to hear it
Not sure if this is the right place to askβ¦ but I have a couple of mods that I canβt seem to get to work on a server. Mods such as Violetβs Furniture and Functional Wardrobes that adds assets to the game. I extract the zip in the root folder (so the /Server and /Common files go on the server), but they donβt seem to be showing in game. Am I doing something wrong, or do those mods need to be client-side as wellβ¦ help π
The server sends the mods to the client as needed | Check the console
According to console, everything seems to be loading normally
Restored defaults and that fixed the white screen issue. Too many mods was the issue it seems.
Does anyone here use HyUI and would you recommend it?
yes
Thanks!
is there an event, a mechanic or something already in vanilla hytale that interrupts mobs when they're starting an attack? like if you damage someone while they are in a wind up animation they get interrupted.
maybe when they get damage?
hey is there any servers I can do pvp in?
dont extract the zip
is there a way to ban ip, seems like PlayerSetupConnectEvent does nothing at all
wait... do I just put the zip in the mods folder then? (sorry brand new to Hytale aha)
Hii Iβm trying to play with controller on MacBook through steam. The controllers have been updated it does connect with the MacBook but as soon as we launch hytale it stops working. Can anyone help?
tried to send logs and schedule send player message and nothing happens
public static void onPlayerSetupConnect(PlayerSetupConnectEvent event) {
var auth = event.getAuth();
var referralSource = auth.getReferralSource();
var ip = referralSource.host;
Essentials.getInstance().getScheduleHandler().schedule(() ->
Universe.get().getPlayer(event.getUuid()).sendMessage(Message.raw("You joined with ip: " + ip)), 10, TimeUnit.SECONDS);
}
yes the whole zip
I will try that, thank you! π
I guess I thought I had to extract the zip, because the zip contained /Server and /Common directories... my bad aha
What is Essentials and why are you using it over HytaleServer.SCHEDULED_EXECUTOR?
Server Issues : 4NETPLAYERS. I setup a server at the weekend so I can play my world when I'm working away - I am now away and the game randomly connects but will kick me out after a short time + I cannot interact with anything (Open chests etc.) - Does anybody else have the issue? 4NETPLAYERS are blaming the game... But I'm not convinced π
dont worry about that, just wanna know why PlayerSetupConnectEvent does nothing, i want ban ip able instead of just a username
i tried to send logs but nothing happens
how can I check for a block in the player's vicinity?
event does actually nothing what
public class PlayerSetupConnect {
public static void onPlayerSetupConnect(PlayerSetupConnectEvent event) {
var auth = event.getAuth();
var referralSource = auth.getReferralSource();
var ip = referralSource.host;
Essentials.getInstance().getScheduleHandler().schedule(() ->
Universe.get().getPlayer(event.getUuid()).sendMessage(Message.raw("You joined with ip: " + ip)), 10, TimeUnit.SECONDS);
event.setCancelled(true);
event.setReason(ip + " is banned!");
}
}
i can still join while i sat it to cancel
Anyone know if there is a way to have individual click events attached to each rendered component within the UI? Using HyUI btw
β¨```html
<div id="list" style="layout-mode: Top; padding: 6;">
{{#each bounties}}
<div class="bounty-card" style="layout-mode: Left; padding: 4;">
<p style="flex-weight: 2;">{{$title}}</p>
<p style="flex-weight: 1;">Lvl {{$level}}</p>
<button class="small-tertiary-button">Track</button>
</div>
{{/each}}
</div>
probably better to ask in Ellie's discord
yeah just put zips or jars in the mods folder in \Server
tyty... I just want the furniture aha
I had the same assumption
not a silly assumption then? π
not at all, just the way the game works
-# I'm too used to Minecraft being picky aha
we're all a lil used to mc
when adding items to an inventory how to make it stack with existing items?
Hello! I have a question: can I use .blockymodel for the block?
how can I get all entities within a certain range of a block or entity?
How can i make so what the player destroys goes directly to his inventory?
This should do the trick according to the source code
β¨```java
player.getInventory()
.getCombinedEverything()
.addItemStack(itemStack);
Why so many economy providers on hytale... just stop xd
yeah, getCombinedBackpackStorageHotbar also did the trick for me π
Any Scripters/coders that want to join a project? we are working on making a highly runescape inspired server and are looking for more people who want to join the cause π if you want to join or just want more info hit me up!
is it possible that you can only interact with a trader with a specific player role?
how can i register a system truly global so that is counts for every world even when the world get loaded later?
How do i check if a player has op?
I m on a problem since 2 days, i try to change like 50 000 block/tint around a position. I got some perf problems, how u will do that ? I try to use Selection with the player but its laggy.
Hi guys, how do i block player camera rotation?
how to get the dropped item after mining a block?
Are systems not already global?
i thought so however i have a damage prevent system and it works in the default world, porting to an unloaded world and then from there nothing gets fired
Permissions module should get ya something.
I have no clear understanding of what you mean. Porting to an unloaded world?
Go to hytalemodding. dev, section customizing-camera-controls
thanks!
All systems are Global, they work on all the world threads. Which system is your DamagePreventSystem extending from?
DamageEventSystem
if anyone needs to replace entire classes or inject patches in hytale server jar in runtime (like papermc or forge) use the com.hypixel.hytale.plugin.early.ClassTransformer
been recoding the entire hytale server jar to support 300+ players in one world and got really great results
Tested? Or theoretical?
when hitting a player in the hub world is see debug spitting out logs then i teleport with
Teleport teleport = new Teleport(destWorld, targetPos, targetRot);
store.addComponent(ref, Teleport.getComponentType(), teleport);
and the teleporting works sind (i preload the chunk where i teleport the player to)
hitting one there doesnt trigger any debug log from it. maybe i register it wrong idk
Do you have a solution? I can't get the server to run. It's running on Synology DSM with Docker, using the Hytale server. services:
Nevertheless, the following error occurs: java.lang.RuntimeException: Failed to create HytaleServe
Not enough information
Could be an auth issue, could be a config issue. Etc
@west elk I wanted to add more information, but unfortunately it's being blocked.
this.getEntityStoreRegistry().registerSystem(killDetectionSystem); this is how i register it
Hello everybody, I need help to call a custom event. I'm registering and "calling" my event but it never comes to my "onChange" event
β¨```java
@Getter
public class PlayerGameStateChangeEvent extends CancellableEcsEvent {
private final GamePlayer player;
private final GamePlayerState state;
public PlayerGameStateChangeEvent(GamePlayer player, GamePlayerState state) {
this.player = player;
this.state = state;
}
public GamePlayer getGamePlayer() {
return player;
}
}```β©
β¨```java
public class TestEvent implements IPluginManager {
@Override
public void init(JavaPlugin plugin) {
EventRegistry registry = plugin.getEventRegistry();
registry.register(PlayerGameStateChangeEvent.class, this::onChange);
}
public void onChange(PlayerGameStateChangeEvent event) {
GamePlayerState state = event.getState();
System.out.println("TESTEVENT: " + event.getGamePlayer().getUsername() + " " + state.name());
}
}```β©
β¨java public void setState(GamePlayerState state) { this.state = state; System.out.println("SET STATE: " + state.name()); ComponentAccessor<EntityStore> componentAccessor = playerRef.getReference().getStore(); PlayerGameStateChangeEvent event = new PlayerGameStateChangeEvent(this, state); if (event.isCancelled()) return; componentAccessor.invoke(playerRef.getReference(), event); System.out.println("2 SET STATE: " + state.name()); }β©
Looking for full time devs for my srver lmk.
[2026/02/02 18:54:44 INFO] [SOUT] SET STATE: PLAYING
[2026/02/02 18:54:44 INFO] [SOUT] 2 SET STATE: PLAYING
Printing from start method to end, but not calling onChange method, I'mm probably doing something wrong. No idea
Already checked if im registering the event, and yes. Im calling the init method from my core
tested
rewrote the entire v1 generator to generate chunks below 80ms from bottom to sky with prefabs and caves
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] BlockPopulator.populate took 65ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] CavePopulator.populate took 2ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] BlockPopulator.populate took 35ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] PrefabPopulator.run took 3ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] PrefabPopulator.populate took 3ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] CavePopulator.populate took 4ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] PrefabPopulator.run took 2ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] PrefabPopulator.populate took 2ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] WaterPopulator.populate took 3ms
[2026/02/02 18:24:37 INFO] [SOUT] [Profiler] ChunkGeneratorExecution.execute took 45ms
in my laptop from work
Is there a working plugin that hides players on the map and compass after the last update yet?
no players map i think
im sorry for being stupid omg .... yeah its global but when the loaded world has pvp of by default well even when i hit a player of course nothing is triggered π
Noplayersonmap? Hasn't been updated yet
do you intend to share this system when you feel like it's in a good state?
Anyone know how to import image in a server file?
im being paid to develop this so idk if the owner will share one day
What? Explain better
Is this worth your time if they're already working on optimisations on their end?
aw bummer, that would be very good for the server community
in the creative tool
they gon take 1-3 months
ofc it's worth his time if they're paying him for it π
the owner needs 300 player support now
What exactly was it that you were optimising
everything. im pretty much forking hytale server jar entirely on start like a mod loader so it dont run out the license
uhhh, be careful with that. if you're distributing hytale code and taking payment for it, you are very likely in breach of license.
im not
This is impressive. First that fact that you had 300 friends to test with, but more that you got that type of performance π
i edit the hytale code in runtime
testing with 60 bots and using 3% of cpu
better if i don't ask about it
Network load is being tested or just general resource consumption?
the server owner dont asked me to optimize network only resource
Alright, already fixed my problem. Had to use extends PlayerEvent<String> and call it with a dispatcher and some stuff
What optimizations did you implement?
That maybe something to take into account depending if you're relaying this data to users, butnif its purely server side its no worry
its general code optimization. hytale has a lot of small problems like iterating over 60k blocks every second
Which cpu is the most important for the 30+ online players active survival server? More cores/threads or higher GHz? (for Hytale)
AI is a good assistant for me. i can focus on main things like fixing hytale code while it does whatever i ask on side
chat gpt v1 is the best imo
claude
Yeah, there voxel implementation feels a little rough. Just some micro improvements seems to really do the trick
i just let the ego go and optimized everything from noise to fluid
All of the above.
Cores will get you so far, voxel data is heavy so you need to chomp through it
He doesnt have the option. Not his code to own.
can't they are working for someone
being paid π
How to get coords of the block?
I have such method args:
override fun tick(
dt: Float,
index: Int,
@Nonnull archetypeChunk: ArchetypeChunk<ChunkStore>,
@Nonnull store: Store<ChunkStore>,
@Nonnull commandBuffer: CommandBuffer<ChunkStore>
)
And I check block in debug "archetypeChunk.components", it have two component: BlockModule.BlockStateInfo, PlacedByInteractionComponent
Depends on your stress levels. π
coords are stored in Vector3i object
you know how to make an arena? a place where people on the spots can watch the match, while the one down can fight, the one on the spots cant fight between them, i want even to give them some standard kits when they join inside the arena, but they can't leave with these kits, how i can do it?
And Vector3i stored in? π
When are you looking to get the coords, are you doing it in an event or through a command?
On entity tick EntityTickingSystem<ChunkStore>()
16 cores / 32 threads with 4.2 GHz. Is this good?
Plenty.
4.2 is very nice
hey guys, any ideas how can i run some command or UI based of NPC/MODEL click? how can i interact with this event
DISCONNECTED FROM SERVER
The document trinityhub/HubMenu.ui could not be found for the Custom UI Append command.
Selector:
Has anyone seen this error before? And can you help me with how to fix it?
Is there any information for what deprecated methods are being replaced by????
you probably have the ui file in the wrong folder or are not using the correct path to load it
Or it's possible you're not referencing the Selector properly
Will they be releasing the documentation to the API once they do the release?
is there any guide on how to add custom actions? I'm trying to have an action that adds a component to a player
specifically, I want the player to have a component as long as they are around an NPC
my bad PlayerSetupConnectEvent works just pretty complicated to get their ip
each entity has a uuid
almost all of them already has a new method no?
I'm asking because of Player##getUUID
Hey guys, not exactly a plugin question, more of a server/world setup thing.
Iβm using Admin Portals + TP2World and Iβm trying to run multiple worlds (hub + separate game mode maps). I downloaded a Skyblock map and dropped the world folder into universe/worlds/. When I run tp2world Skyblock it does send me to a world called Skyblock, but it looks like a freshly generated random seed (no Skyblock build), so it feels like itβs creating a new world instead of loading the map I downloaded.
Whatβs the correct way to add/import multiple maps on a server, and what am I doing wrong with the folder setup?
hello guys, do you have any ideas if we have a native solution to share assets across a CDN ?
if you have 100 mini-games server, with the SAME assets, instead of adding load to the 100 servers, can't you just share it through a CDN, like exposed S3 bucket ?
Not yet. Assets currently can only be downloaded directly from the server
But it's on their radar
where is the roadmap ?
Anyone know how I can set my own custom item description in runtime? Like im transforming a weapon into an upgraded version and I want to display the version of the weapon in its description
Even though this is my first time setting up a server, I'm getting this error when I join the server and enter the map. Can you help me?
[2026/02/02 19:21:12 SEVERE] [World|default] Took too long to run pre-load process hook for chunk: 55ms 321us 800ns > TICK_STEP, Has GC Run: true, WorldChunk{x=-28, z=38, flags=0000000000000000000000000000100}, Hook: com.hypixel.hytale.builtin.fluid.FluidPlugin$$Lambda/0x00000000a0a45828@3993cecb [2026/02/02 19:21:12 SEVERE] [World|default] Took too long to run pre-load process hook for chunk: 33ms 403us > TICK_STEP, WorldChunk{x=-28, z=37, flags=00000000000000000000000000000100}, Hook: com.hypixel.hytale.builtin.fluid.FluidPlugin$$Lambda/0x00000000a0a45828@3993cecb
Fluid chunks look like they cant generate fast enough, almost as a blocking operation. I had this and ended up allocating more resources.
Two things to try, drop your chunk distance to 6 -12 and try again or give more resources
thx.
and how can i get the event
of clicking on entity
HELOO
Why nitrado webserver just returns οΏ½P?
how can i get player ip from PlayerSetupConnectEvent?
Hello everyone, I'm new here
trying to create ip ban but where is their ip at?
public class PlayerSetupConnect {
public static void onPlayerSetupConnect(PlayerSetupConnectEvent event) {
var packetHandler = event.getPacketHandler();
var identifier = packetHandler.getIdentifier();
var ip = event.getPacketHandler().getChannel().getOption(ChannelOption.IP_MULTICAST_ADDR).getHostAddress();
var uuid = event.getUuid();
if (ip != null) {
Essentials.getInstance().getScheduleHandler().schedule(() -> {
Universe.get().getPlayer(uuid).sendMessage(Message.raw(ip));
}, 6, TimeUnit.SECONDS);
} else Essentials.getInstance().getScheduleHandler().schedule(() -> {
Universe.get().getPlayer(uuid).sendMessage(Message.raw("wrong"));
}, 5, TimeUnit.SECONDS);
Essentials.getInstance().getPlayerHandler().getBannedIP().forEach(string -> {
if (identifier.contains(string)) {
event.getPacketHandler().disconnect("You are ip banned :c");
}
});
}
}
Can you set an Anchor?
Ive tried both of these
builder.set("#BoardPanel.Anchor", "Right: 0, Top: 500, Width: 200, Height: 150");
builder.set("#BoardPanel.Anchor", "(Right: 0, Top: 500, Width: 200, Height: 150)");
Group #BoardPanel {
Anchor: (Right: 0, Top: 500, Width: 200, Height: 300);
Background: (Color: #434343(0.5));
Padding: (Left: 10, Right: 10, Top: 4, Bottom: 4);
LayoutMode: Top;
hope they add event.getIP one day
nvm solved
Sounds like an encoding thing (no idea, you will have to look at source or get somebody like Andre from Nitrado (i think Andre wrote it?))
I have no idea why my plugin isn't loading
The compiled .jar has a manifest.json
and it's pointing to the correct file I believe
Please share the solution π
I'm working with Kotlin, is there anything I need to consider
have we figured out how to actually make the verification stick instead of having to authenticate every restart?
Working on my own Proxy implementation, and noticed you made one.
Looking at your project, I couldn't figure out how your code is getting through the JWT validation.
Was wondering if you could share additional insight into this specifically. Thank you!
I attempted to message your directly, but you have direct message off
/auth persistence Encrypted
That writes your account token into a file on disk that the server reads on startup
That won't work for me, still asks for auth on restart
Yea, ive tried that and i get the following error
2026/02/02 21:01:52 WARN] [EncryptedAuthCredentialStore] Cannot derive encryption key - encrypted storage will not persist credentials
[2026/02/02 21:01:52 WARN] [EncryptedAuthCredentialStore] Cannot save credentials - no encryption key available
[2026/02/02 21:01:52 WARN] [EncryptedAuthCredentialStore] Cannot save credentials - no encryption key available
[2026/02/02 21:01:52 INFO] [ServerAuthManager] Swapped credential store to: EncryptedAuthCredentialStoreProvider
Credential storage changed to: Encrypted
What's the error
No error just still asks, same for me
Sometimes it works, sometimes it doesnβt
Are you running the server in a docker container without an /etc/machine-id? Make sure to mount it
yea its running in a feather panel docker container
How can i make so what the player destroys goes directly to his inventory?
theres a mod for that
how is it called?
No idea how but loading a random other plugin into my mods folder seems to have fixed the issue of my plugin not loading
Hello π
I'm trying to add custom loot if an entity dies from a specific weapon.
I can't figure out which class I need to extend to capture the death event of that entity.
Can you help me?
Thanks π
I feel like that would be in the onDeathSystem but I havent tinkered around with it to tell you for sure
Thanks π
I'm started modding, and I don't really understand architecture. Can I get the player who killed this NPC with this event ?
how can I change the config.json?
Sup nerds! I am trying to add permissions to individual players to use SimpleClaims. I can only get the SC interface to populate when I am set as OP on the server. Is there a command I need to send to the server to add permissions to only SC or does any player need to be OP'd in order to use SimpleClaims?
I made a new block with a new blockstate , everything works fine on my dev server when i start it via intellij but when i try it on a root or world in the menu with my mod the value of the state is always 1 , i have no clue why it saves on my dev server and persists but not on the other world. Does anyone have an idea ?
There is a setting baked into HyTale for this
Is there a good way to let a plugin access another plugin's Json file?
I have my own older and file inside ressources.
But Im struggling to figure out how to send data or file paths accross plugins for compatibility.
[2026/02/02 21:33:47 SEVERE] [EncryptedAuthCredentialStore] Failed to save encrypted credentials to auth.enc
java.nio.file.AccessDeniedException: auth.enc
at java.base/sun.nio.fs.UnixException.translateToIOException(UnixException.java:90)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:106)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(UnixException.java:111)
at java.base/sun.nio.fs.UnixFileSystemProvider.newFileChannel(UnixFileSystemProvider.java:213)
at java.base/sun.nio.fs.UnixFileSystemProvider.newByteChannel(UnixFileSystemProvider.java:244)
at java.base/java.nio.file.spi.FileSystemProvider.newOutputStream(FileSystemProvider.java:426)
at java.base/java.nio.file.Files.newOutputStream(Files.java:215)
at java.base/java.nio.file.Files.write(Files.java:3174)
at com.hypixel.hytale.server.core.auth.EncryptedAuthCredentialStore.save(EncryptedAuthCredentialStore.java:157)
at com.hypixel.hytale.server.core.auth.EncryptedAuthCredentialStore.setProfile(EncryptedAuthCredentialStore.java:229)
at com.hypixel.hytale.server.core.auth.ServerAuthManager.swapCredentialStoreProvider(ServerAuthManager.java:558)
at com.hypixel.hytale.server.core.command.commands.server.auth.AuthPersistenceCommand$SetPersistenceVariant.executeSync(AuthPersistenceCommand.java:89)
at com.hypixel.hytale.server.core.command.system.basecommands.CommandBase.execute(CommandBase.java:48)
at com.hypixel.hytale.server.core.command.system.AbstractCommand.acceptCall0(AbstractCommand.java:758)
at com.hypixel.hytale.server.core.command.system.AbstractCommand.checkForExecutingSubcommands(AbstractCommand.java:817)
at com.hypixel.hytale.server.core.command.system.AbstractCommand.acceptCall0(AbstractCommand.java:677)
at com.hypixel.hytale.server.core.command.system.AbstractCommand.checkForExecutingSubcommands(AbstractCommand.java:803)
at com.hypixel.hytale.server.core.command.system.AbstractCommand.acceptCall0(AbstractCommand.java:677)
at com.hypixel.hytale.server.core.command.system.AbstractCommand.acceptCall(AbstractCommand.java:656)
at com.hypixel.hytale.server.core.command.system.CommandManager.runCommand(CommandManager.java:279)
at com.hypixel.hytale.server.core.command.system.CommandManager.lambda$handleCommand$0(CommandManager.java:254)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1750)
at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.compute(ForkJoinTask.java:1742)
at java.base/java.util.concurrent.ForkJoinTask$InterruptibleTask.exec(ForkJoinTask.java:1659)
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:511)
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1450)
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2019)
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
You can get it from the DeathComponent by using: Damage deathInfo = component.getDeathInfo(); Source damageSource = deathInfo.getSource(); if (damageSource instanceof player)
That might work. Again, I havent tested it so I dont know forsure
there we go, the owner of the hytale process doesn't have the necessary file permissions π
Thanks π
Is there a good way to let a plugin access another plugin's Json file?
I have my own older and file inside ressources.
But Im struggling to figure out how to send data or file paths accross plugins for compatibility.
s][warning][aot] The AOT cache was created by a different version or build of HotSpot
s][error ][aot] An error has occurred while processing the AOT cache. Run with -Xlog:aot for details.
s][error ][aot] Loading static archive failed.
s][error ][aot] Unable to map shared spaces
Should I worry about this?
How can I change the server settings, because i am not able to edit the config.json file
No, nothing to worry about. If you want to give the jvm a little boost, you can do a training run and generate an AOT cache for your environment. But in the majority of cases, it's really only a minor improvement. Java's JIT will be just fine without it
What do you mean by you're not able to edit the config?
Each plugin has its own Data Directory, if you can get the Plugin Reference from the PluginManager, you should be able to get the DataDirectory and from there read it
Thank you. Im gonna look into this
I do not know how to do it via the console
It's a file
Anyone worked out how to get and teleport a specific type of entity? Like rabbits for example?
how can i open the file?
with your favorite text editor of your choice
Create a Teleport component and attach it to the entitiy
Thanks for the response.
I can do the teleport part so far, but I am stuck trying to get a specific entity!
Like I can teleport a player on sign in or command, but I can't loop through an entity store and get a rabbit to apply a teleport to.
why my assets names are not loading in game? other players can see them fine, just bought and installed the game
server.items.bench_campfire.name
server.items.wood_ash_trunk.name etc etc
Thanks
I can apply a component to a block via the ChunkStore but can I read that value as an item after I break the block?
can someone tell me if im missing something in this, cause i got it showing up in my inventory but i cant place it
{
"TranslationProperties": {
"Name": "items.wheat_harvester.name"
},
"Texture": "Items/Interactable/Farming_Harvester/farming_harvester_Wheat_shaded.png",
"Model": "Items/Interactable/Farming_Harvester/Farming Harvester.blockymodel",
"Icon": "Icons/ItemsGenerated/Farming_Harvester_Wheat.png",
"IconProperties": {
"Scale": 0.58823,
"Rotation": [
22.5,
45,
22.5
],
"Translation": [
0,
-13.5
]
}
}
jesus this was not easy to figure out
public class PlayerSetupConnect {
public static void onPlayerSetupConnect(PlayerSetupConnectEvent event) {
var packetHandler = event.getPacketHandler();
var socketAddress = (InetSocketAddress) NettyUtil.getRemoteSocketAddress(packetHandler.getChannel());
var ip = socketAddress.getAddress().getHostAddress();
if (Essentials.getInstance().getPlayerHandler().getBannedIP().contains(ip)) {
packetHandler.disconnect("You are ip banned :c");
}
}
}
why my assets names are not loading in game? other players can see them fine, just bought and installed the game
server.items.bench_campfire.name
server.items.wood_ash_trunk.name etc etc
server.custom.uirespawnpage etc
Try restarting your game and/or the server. Live lang file changes work a little bit janky at the moment
question if I wanted to swap a block with a different one, would it be better to remove the old one and copy the transform to the new one or replace all the components except for the transform?
Does anyone know of a way to modify items and what interactions an item has within a plugin?
you add and remove components or modify the properties
hypixel pwease add this ip ban in the game π π π₯°
the server usually needs to reboot to update the lang files
Nah Mac Address better
IP can easily be reset if you know what you're doing
anyone plz im going crazy trying to figure this out?
i had this issue too, i found the fix
do tell
What is the best way to set up a development environment with decompiled server file available to search, a localhost server that can be run from the IDE and a template plugin with some default classes?
Kaupenjoe/Hytale-Example-Plugin or Build-9/Hytale-Example-Project for example
is there a real wahy to know if any item is of type helmet
I tried the kaupenjoe one but as soon as i clone it it is broken
Can I run code when a player takes fall damage?
you can listen to the damage system event
How do I listen for events from that class?
I use the maven one. Works well for me.
make a class that extends damagesystem i think
That's not enough information for us to help you debug
anyone know how i can get the category or type of itemstack???
Yeah because discord keeps flagging my error message as "advertising" π
and i cant send an image
I sent a friend request
l
do you guys know how to add a marker to the map?
I've tried to do this and i get Object reference not set to an instance of an object
can someone tell me if im missing something in this, cause i got it showing up in my inventory but i cant place it
{
"TranslationProperties": {
"Name": "items.wheat_harvester.name"
},
"Texture": "Items/Interactable/Farming_Harvester/farming_harvester_Wheat_shaded.png",
"Model": "Items/Interactable/Farming_Harvester/Farming Harvester.blockymodel",
"Icon": "Icons/ItemsGenerated/Farming_Harvester_Wheat.png",
"IconProperties": {
"Scale": 0.58823,
"Rotation": [
22.5,
45,
22.5
],
"Translation": [
0,
-13.5
]
}
}
It has no block in it. It's not able to place just an item.
how do i add that then?
Look at how the base game does it in the asset editor, or by opening one of the block jsons.
this?
"BlockType": {
"Material": "Solid",
"DrawType": "Cube",
"Group": "Stone",
"Flags": {},
"Gathering": {
"Breaking": {
"GatherType": "Rocks",
"ItemId": "Rock_Stone_Cobble"
}
Yes, just make sure you set the right stuff for what you want to make.
is it possible to animate a block like example a chest float in the sky & rotate & make it open the head
default hytale chests
you'd have to make a bunch of adjustments to the model and animations
is animations made in blockbench
is there way to make a animation client sided
only plays for one player not everoyne
probably with some packet magic, yeah
okay thanks
interesting
I'm very confused at this statement what would components have to do with the interaction and interactionvars of an item?
Item.getAssetMap().getAsset(item.itemInHandId)
I have the item but it seems the interactions of an item are all protected so I didnt know if anyone had figured out a way to update what interaction an item had via java
You are trying to access https via http
It's not in there by default. Lemme see if I can find a guide where that's listed in
thank you
so this may seem slightly silly but I just wanna kinda check in case someone else has seen this and already knows (Save myself some testing time)- if I create multiple lang files will the plugin system automatically sort through those? (IE server.lang and ui.lang working side by side instead of just throwing all my translations into one file?)
It's in this guide of ours. It's written for our interface but the relevant config section is still in there https://server.nitrado.net/en-GB/guides/how-to-configure-death-penalty-settings-on-your-hytale-server
ty
99% sure it will use them all.
Thank you! I'll play around with that then :D make things a bit tidier
do you have to change settings to get more RAM from the server or is it regulated automatically?
It's the jvm startup parameters
QUICK QUESTION, how can i get the local player of a single player server instance?
or do i say, NEED to like, make them run a command
How do you determine if an entity is passive or hostile?
Anyone found any decent way that doesn't require enslaving friends to test stuff that needs other player?
The game's DRM makes it really painful, doesn't allow multi-client, not even offline!
I want a way that I can (on mod load) do a basic greeting message for testing
Universe.get().getPlayer...
my hytale server shows a 6019% load average, doing nothing???
Welcome to early release π
xD
is griefdefender coming to hytale or no
Yes, already got a good portion done. Just learning the platform to finish it up.
alr nice, is there a "onWorldLoad" override or so?
Need more context...what do you mean?
like, code that runs on world load, so I can:
Initialize the plugin
Wait for the world to load
then, on load, get the players and send a message to all them
oh so you mean world load event
Use StartWorldEvent
ex..
plugin.getEventRegistry().registerGlobal(StartWorldEvent.class, this::onWorldLoad);
so would i do this in the initializer?
would i extend the other class to StartWorldEvent?
Also it cant seem to find this::onWorldLoad
you would create that method
is there a system for arrow impact?
alr
I haven't looked into it yet but I would assume its handled by collisions/projectiles. So look for that
what is the difference between the Server and Common folders
Common = Server/Client like ui files etc
say we making a chest
server would have his json for what icon png what model etc
common would be the model icon png etc texture
public static void onWorldLoad(StartWorldEvent startWorldEvent) {
for (PlayerRef player : Universe.get().getPlayers()) {
EventTitleUtil.showEventTitleToPlayer(
player,
Message.raw("Test"),
Message.raw("If this works\nThen :3"),
true
);
}
}
Whats wrong here?
(Note: It doesnt show at all)
anyone know how to make the player invisible?
do you register event?
public class ilo_lawa extends JavaPlugin {
public ilo_lawa(@Nonnull JavaPluginInit init) {
super(init);
}
@Override
protected void setup() {
super.setup();
this.getEventRegistry().registerGlobal(StartWorldEvent.class, open_la::onWorldLoad);
}
}
i am yea
problaby onworldload it going to be fast so player wont be able to see it add a delay or use something like AddPlayerToWorldEvent
β¨β¨β¨```
this.getScheduler().runTaskLater(this, () -> {
for playerref part
if this works message part
}, 40L);
StartWorldEvent is fired before any players are added. Thats how World load events have always worked and wouldnt make sense otherwise
so yes use AddPlayerToWorldEvent if you want to trigger some logic the moment a player is added to a world
If is the only world in the Universe/Server, then nobody will be able to see it. Probably the β¨getPlayersβ© is returning an empty array
It shows nothing because as I said above, its fired during server world load so there will never be players
which class was scheduler?
If is the only world, yeah, if there are multiple worlds and there are already players in the other worlds, it will show.
You should use PlayerReadyEvent if this is a one time logic run regardless of a world
i swapped to that, no dice
Oh sure because hes using Universe.get().getPlayers() instead of cycling through worlds. Missed that bit. Still horrible place for that logic π
? The player is literally given to you in the event
okay nvm i forgot to reload the mod π
Would be nice if hytale organized all events in a central package rather than scattered across many
it'd be nice if there was a javadoc
sure but I am still impressed at the API for an early access game. It will only get better
I still cannot locate any entity components to determine if an entity is hostile or passive....
Guess I am blind
how can I execute a command ("/data admin set) as OP? The "data admin set" requires OP but my new command doesn't
β¨β¨``` @Override
protected void executeSync(@Nonnull CommandContext commandContext) {
Player player = commandContext.senderAs(Player.class);
String data = dataArg.get(commandContext);
player.sendMessage(Message.raw("Permission granted. setting `data to " + data + "..."));
try {
CommandManager.get().handleCommand(player,
"data admin set " + player.getDisplayName() + " " + data);
} catch (Exception e) {
player.sendMessage(Message.raw("Error executing data command: " + e.getMessage()));
e.printStackTrace();
}
}```β©β©
look into npc doc maybe you can find there
I found, use ConsoleSender.INSTANCE instead of player in handleCommand function
Yes, ConsoleSender.INSTANCE is essentially MinecraftServer for Hytale π
hrmm I see
DefaultPlayerAttitude (Stable)
The default attitude of this NPC towards players
Type: Flag, Optional (Default: HOSTILE), Computable
Flag Values:
HOSTILE: is hostile towards the target
REVERED: reveres the target
FRIENDLY: is friendly towards the target
IGNORE: is ignoring the target
NEUTRAL: is neutral towards the target
lets see what i find now π
When is REVERED and IGNORE used lmao
Found answer. Thanks!. Not a fan of the naming convention for this but to each their own i guess
What popped up in server logs when it crashed?
is there a list of all the blockTypeKeys?
wtm
Probably its a bot, once the Server starts the Player Join server workflow (Setup,Add to World, Etc) the bot disconnects to avoid being loaded. Probably is trying to fload the default world thread
public void setBlock(
int x,
int y,
int z,
String blockTypeKey
)```
Check the AssetMap registry
which setblock is this simpleblockplacing one?
You might be able to ban it using the UUID (the logs should have it). After that, on the PlayerSetup event it will throw it away from the Server itself. That's outside any world thread I believe
thats just what it's called idk which one that is LOL
is there a playerMoveEventSystem? or some event to detect player movement
That should do, if the player stills tries to connect and causes issues (since the event is after Netty capabilities), you can do 2 thinks, create or use a plugin for banning users with their IP (it should happen at the Netty phase so it doesnt even reach the Hytale Server), or just grab the IP of the account and ban it directly from your Server Firewall (Deny access to that IP). That way he can not reach your server with that IP
Nothing as efficient as Spigot/Paper/Forge. You would have to handle it in tick or write your own system.
thank you!
anyone here know how to cancel pickup event (rubble,flower etc not itempickup)
has anyone been able to setup a custom block interaction that opens a custom ui?
I would think players like this are smart enough to use proxy and constantly change IP. However, sometimes it all originates from same subnet so you could just ban the entire range (assuming its in a location you dont mind banning). Still, smart actors should have a range of subnets too π
yup
just add an interaction type USE , then interactions type OpenCustomUI
"Interactions": {
"Use": {
"Interactions": [
{
"Type": "OpenCustomUI"
}
],
"Cooldown": {
"Cooldown": 1
}
},
weird, cant seem to get this working
public static void onWorldStart(StartWorldEvent worldStartEvent) {
World w = worldStartEvent.getWorld();
for (int i = 0; i < 128; i++) {
for (int j = 0; j < 128; j++) {
for (int k = 0; k < 128; k++) {
w.setBlock(i, j, k, "Cloth_Block_Wool_Black");
}
}
}
}
Yeah, IP ban its just a small "Stop sign", if they want to mess with the server, they can just change IPs and regions whenever they feel like. The best way would be to detect the Player at the Netty phase and reject the connection from there
The second option is setting up a firewall for this kind of behaviors (constant connections from the same source/packages) to block them after N tries.
watch out for player Ariorh, they are exploiting and causing server instability. Banning the player seems to work
its a bot account attacking sevral servers
If that's the case, try checking your server firewall if it has regional detection, if so, only allow connections from your Region. That way you pretty much decrease the attack surface to just people in your region (or VPN of your region)
is description & summary editable after publish mod in curseforge?
would love to see a way to report accounts like this
But definetly a Netty thing should be your second stop for anyone jumping the region block
Did anything come out in the server log other than connect/disconnect?
You could provide feedback on that. They should patch as well the bug the account is using to cause server inestability (AddPlayerToWorldEvent and PlayerDisconnect)
ITs a bug of the ChunkLoader, it tries to check if the Chunk the player is in is loaded but once the player disconnects, the reference gets deleted and the method throws a NPE, causing the server to crash. Tho it has to be frame perfect I believe
???
Do I not do it there or something?
I figured doing it onWorldStart would make sense, but i cant seem to get anything working
Nor can I figure out what "keys" to use
Anyone here figured out how to create custom block components yet?
I ended up finding an amazing guide over on hytalemodding<dot>dev π
That site is quickly becoming my goto for asking questions π
I wish i could thank the creators of that gitup pages site, its been extremely useful!
now i did run into an issue. I dont want my tile entity component to run against players in creative. How do i get the player's gamemode?
You might want to check the base game source code for that.
I figured lol. I was hoping someone would know off the top of their head π
Ill just see what the gamemode command is doing to achieve this
I do have a thing called QuickHYCache which allows for fast and easy searching of the hytale sourcecode and assets for file name and file content references. It can search everything for it within 0.1 seconds. Its also a webpage xD
Im considering uploading it to github pages possibly π
The caveat is that it loads a relatively chonky cache file into the webpage
Literally player.getGameMode()
I tried looking at that... One sec let me try again....
I didnt see it earlier when i tried calling it XD
getGameMode does not exist
i tried to target the player from Universe.get().getPlayer(UUID).getGameMode() < does not exist
I tried playerRef.getGameMode() < does not exist
Player != PlayerRef
I know, i tried both xD i think im being stupid lol! how are you calling it?
funny, i used my quick cache to scan the source and found it inside the Player.java file. There is in fact a method "getGameMode"
Player playerComponent = store.getComponent(ref, Player.getComponentType());
So now the question is: how do i get it xD
nevermind you answered it before slowmode disabled π
thanks so much π
It compiled without errors! @hushed totem Youre the goat! π thanks
Darn! XD
[2026/02/03 02:21:44 SEVERE] [World|default] Failed to run task!
java.lang.IllegalArgumentException: ComponentType is for a different registry! ComponentType{registry=class com.hypixel.hytale.component.ComponentRegistry@1420491884, typeClass=class com.hypixel.hytale.server.core.entity.entities.Player, index=38}
at com.hypixel.hytale.component.ComponentType.validateRegistry(ComponentType.java:117)
at com.hypixel.hytale.component.Store.__internal_getComponent(Store.java:1223)
at com.hypixel.hytale.component.Store.getComponent(Store.java:1216)
at ThirdPartyPlugin//org.mal.utilities.testing.ExampleSystem.lambda$tick$1(ExampleSystem.java:66)
at com.hypixel.hytale.server.core.universe.world.World.consumeTaskQueue(World.java:904)
at com.hypixel.hytale.server.core.universe.world.World.tick(World.java:419)
at com.hypixel.hytale.server.core.util.thread.TickingThread.run(TickingThread.java:89)
at java.base/java.lang.Thread.run(Thread.java:1474)
It errored because of how and where i was running it π
Im running it in a custom block component's tick method
lol!
It did not like this line:
Player playerComponent = (Player) store.getComponent(Objects.requireNonNull(playerRef.getReference()), Player.getComponentType());
Specifically: the store.getComponent.
I have to figure out how to get the correct store now π
Ah! it extends to CommandSender, which im assuming means it can only run in commands. rip!
Ref<EntityStore> ref = targetPlayerRef.getReference();
if (ref != null && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
World world = store.getExternalData().getWorld();
world.execute(
() -> {
Player playerComponent = store.getComponent(ref, Player.getComponentType());
...
Thx! ill try t his π
if you are already running on world thread then skip that bit
I figured lol! and yes its already running within it π
I merged it into the code now to test π
<the meme, "compiling and saving, SAVING AND COMPILING" comes to mind>
[2026/02/03 02:29:26 SEVERE] [World|default] Failed to run task!
java.lang.IllegalArgumentException: ComponentType is for a different registry! ComponentType{registry=class com.hypixel.hytale.component.ComponentRegistry@604766147, typeClass=class com.hypixel.hytale.server.core.entity.entities.Player, index=38}
at com.hypixel.hytale.component.ComponentType.validateRegistry(ComponentType.java:117)
at com.hypixel.hytale.component.Store.__internal_getComponent(Store.java:1223)
at com.hypixel.hytale.component.Store.getComponent(Store.java:1216)
at ThirdPartyPlugin//org.mal.utilities.testing.ExampleSystem.lambda$tick$1(ExampleSystem.java:69)
at com.hypixel.hytale.server.core.universe.world.World.consumeTaskQueue(World.java:904)
at com.hypixel.hytale.server.core.universe.world.World.tick(World.java:419)
at com.hypixel.hytale.server.core.util.thread.TickingThread.run(TickingThread.java:89)
at java.base/java.lang.Thread.run(Thread.java:1474)
Rip!
world.execute(() -> {
world.setBlock(globalX + 1, localY, globalZ, "Rock_Ice");
for(PlayerRef playerRef : world.getPlayerRefs()) {
Vector3d playerRefPos = playerRef.getTransform().getPosition();
double xDist = playerRefPos.x-globalX;
double yDist = playerRefPos.y-globalY;
double zDist = playerRefPos.z-globalZ;
var dist = Math.sqrt((xDist * xDist) + (yDist * yDist) + (zDist * zDist));
if(dist <= 4) {
Universe.get().getPlayer(playerRef.getUuid());
Ref<EntityStore> refPlayerStore = playerRef.getReference();
Store<EntityStore> playerStore = refPlayerStore.getStore();
Player playerComponent = (Player) store.getComponent(refPlayerStore, Player.getComponentType());
GameMode playerGameMode = playerComponent.getGameMode();
if(playerGameMode.name().toLowerCase().equals("creative")) {
playerRef.sendMessage(Message.raw("<TeleporterBlock> Youre in creative, im not speaking to you!"));
}else{
playerRef.sendMessage(Message.raw("<TeleporterBlock> Your distance is " + dist + ", pos: " + Math.floor(exampleBlock.posX) + "," + Math.floor(exampleBlock.posY) + "," + Math.floor(exampleBlock.posZ)));
}
}
}
});
.
ThirdPartyPlugin//org.mal.utilities.testing.ExampleSystem.lambda$tick$1(ExampleSystem.java:69)
Player playerComponent = (Player) store.getComponent(refPlayerStore, Player.getComponentType());
you are using store not playerstore
Oh Hello
NOW i can finally complete my configurable teleporter event block π
ππ»
how big is a chunk in hytale?
(no idea why i specified this game LOL)
32x32
The height is roughly 412 blocks I think.
question, is there a way i can quickly copy block data/paste block data?
so I can avoid calling set bock many times?
Eg. for coded (in server java) structures
Yes, you use components
Components are how blocks save/load data, and even with copy/paste π
Just be sure you update the copy method in the block component to copy the values so you can copy/paste it π
I went down a rabit hole today trying to create a custom component lol!
alr, also is there any chart anywhere for blockIDs?
So I can know what is what, i know 0 is air
It was EXACTLY the same situation i was trying to resolve π
Blocks dont have blockIDs, they have names.
is it possible to prevent a interaction when a item is broken?\
You can see them inside the game when you hover over an item with developer mode enabled in the settings
define broken
com.hypixel.hytale.server.core.universe.world.accessor.BlockAccessor
public boolean setBlock(
int x,
int y,
int z,
int id
)
durability = 0
ah, then i dont know what to tell you there xD
I used this snipplet here to set a block:
world.setBlock(globalX + 1, localY, globalZ, "Rock_Ice");
I'm doing this because i couldnt figure out how to get that to plot LOL
static void setBlock_manual(int x, int y, int z, int id) {
try {
w.getChunkAsync(x/32, z/32).get().setBlock(x%32, y, z%32, id);
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
}
There may be a component for that within the item π
You have to execute it with a world. One second, ill give you a working snupplet to use
dont get me started on the asset naming π
Thats one reason I'd rather use integers
world.execute(() -> {
int xInWorld = 512;
int yInWorld = 33;
int zInWorld = 311;
String block = "Rock_Ice";
world.setBlock(xInWorld, yInWorld, zInWorld, block);
});
Also because I feel doing string comparisons with a ton of blocks would be slow
i mean, you could use a switch case, its a lot faster but still not great xD
i mean. If at the end of the day its stupid and it works.... is it really stupid? π
There are a million and 1 ways to do things with modding. Thats the beauty of it! everyone has their own style and preference, its what makes you you!
Dont feel ashamed of your code if it looks dumb! you made it! it works! π
Thats more than 99% of the players on the game π
Most people dont even begin to try programming sadly! I grew up back when the only way to learn programming was from a textbook XD
π΄π»
My teleporter worked π
I can configure it in creative mode with a custom HTML GUI (thanks to HYGUI) :D:D:D
I love HTML and i am so glad i get to put it to use :D:D
I even have it loading from a custom HTML file in the resources π
Facts!
The naming convention could DEFINITELY use some standardization and a onceover. Even if they had some sort of tabable menu to go through it it would be easier.
minecraft did it better with the tag system yet Hytale dumps it all into the identifier which is just messy
In this case furniture shouldn't be in the id at all.
Yay
I agree lol!
Welp, im done modding for the day π ive hit my daily limit, and my goal of figuring out how to create and assign custom block components π
Tomorrow ill tackle the saving/loading issue.
Good night everyone! Thanks again @hushed totem for helping me figure out the player gamemode detection piece, i didnt want to teleport players in creative mode so they could interact with the block to configure it xD
block ids are fine to store in integers, provided you arent hard coding them
as long as you look them up by a less volatile means like a string on server startup and cache the result, I see no problem with ita
i see, where would i look up the Block -> int ID map
The string based command just crashes, because im doing a rather large chunk of land
Idk, I know it exists, I just know that hard coding integer block ids(that can be changed at any moment) into code is a really bad idea
not really, if the data you are loading has int values you expect
yes, its a very bad idea if you never verify that your ints match up