#server-plugins-read-only
1 messages · Page 118 of 1
It's part of the HytaleGenerator builtin plugin
you was looking right you can get AssetModule assetModule = AssetModule.get();
Yeah but it doesnt have getAsset or something similar
and use like this
public boolean assetcheck(String assetPath) {
AssetModule assetmodule = AssetModule.get();
if (assetmodule == null) return false;
for (AssetPack pack : module.getAssetPacks()) {
Path path = pack.getRoot().resolve(assetPath);
if (Files.exists(path)) {
return true;
}
}
return false;
}
boolean hasgrass = assetcheck("Server/Item/Items/Soil/Grass/Soil_Grass");
not ideal but okay for what i'm doing with it
you can get assetpack to search it
if this doesnt work try without Server/ i think root one up from server/ but could be wrong
Hytale modding everything is blacked out, gui blocks/items are blacked, but placing or holding it looks normal.
Got MajorDungeons mod?
Different modlist.
You in the hytale modded discord, if so I posted in modded channel.
Is there a way to add an Image to the UI, like a Server Logo for branding in the bottom left without any mods, just by using the asset editor?
Which UI are you referring to exactly
The standard UI
Yes UI can have images from assets, let me check exactly how to
There are many UI files so that would require altering them all
UI assets are sent to client on login
But it’s not a single UI file for everything
create your own UI instead
Is there a way to create a UI file that sends the logo to the client?
UI file that has the logo as an assetpath and sets the position of it
Yes as long as the logo is in proper UI location
Nope ui would be java.
Check out UI examples on docs
It can be done but there is no centralized way to do it for every UI file loaded on client
It ain't really ideal to display a server logo if it won't show up for everyone.
Hence why it would have to be a plugin.
$C = "../Common.ui";
Group {
LayoutMode: None;
Background: (Color: #2a2a2a);
Anchor: (Width: 800, Height: 500);
Padding: (Full: 0);
AssetImage {
Anchor: (
Width: 64,
Height: 64,
Left: 12,
Bottom: 12
);
AssetPath: "../Custom/serverlogo.png";
}
}
Something like this maybe? Does not work tho
Why wouldn’t it show up for everyone? Anything sent to client in common ui path will be loaded
Stuff created in the Asset editor are practically plugins that get sent to client so its possible
pages need to be registered
don't think there's a way around it unless you take over another page
See Buuz135 Advanced-Item-Info as good example
But your logo wont magically appear on hytale UI unless the UI files are modified
I haven’t tested modifying delivered UI files
Has anybody had any luck opening a crafting menu by right clicking with an equipped item?
Whats the difference between Player and PlayerRef why are there two classes to handle the player?
Player = entity itself, which has an inventory and other attributes.
PlayerRef = player "connection" and other attributes that aren't entity related.
The PlayerRef never changes, from what I tested, but the Player is recreated everytime you join a world.
I may be wrong about the last one, but sometimes the PlayerRef exists without a Player, i.g: login screen
Thnx for the info
it'll take me a whle for all fo this to make sense 😂
is it possible to create world borders?
Like how big a world is ? like for example 16x16 or 32x32 or something like that
Anyone that need a dev for complex task or whatever feel free to hmu 🙃
you could make code when plugin starts from 0,0 say you what 512blocks limit calculate every coord from height limit to 0 creates barriers from that but still idk if you can but if you cant place blocks even with plugin to higher than hightlimit people can still climb up
if a player is mounted on something, how can i teleport the mount and the player?
limiting the world generation or player movement?
whats the trail to it
update on this
guessing no one has solved the leave message lol
What do you mean?
Whats the proper way to store custom data for my plugin ? Is there an example somewhere ? Shouldnt get resetted after server restart
put a codec into withConfig()
from the config object you get as a return value? don't think I get your question
event.setBroadcastJoinMessage(false);
});``` doesnt exsist for Drain player
how can i teleport an NPC?
nop, the only way rn to remove the leave message as i know, is intercepting the message packet and cancelling it , thats how i do it
Removing the leave message is currenlty only possible with an earlyplugin like Nozemi/hytale-server-patcher on GitHub
i removed it with a normal plugin
would be cool if you can share how
someone know if there is a way to teleport an npcmount and the player?
yes, here
public final class LeaveMessagePacketFilter implements PlayerPacketFilter {
private static final Field MESSAGE_FIELD = findField(ServerMessage.class, "message");
private static final Field MESSAGE_ID_FIELD = findField(FormattedMessage.class, "messageId");
private static Field findField(Class<?> clazz, String name) {
try {
Field field = clazz.getDeclaredField(name);
field.setAccessible(true);
return field;
} catch (Exception e) {
throw new RuntimeException("Failed to access field: " + name, e);
}
}
@Override
public boolean test(PlayerRef playerRef, Packet packet) {
if (!(packet instanceof ServerMessage)) return false;
try {
FormattedMessage msg = (FormattedMessage) MESSAGE_FIELD.get(packet);
if (msg == null) return false;
String id = (String) MESSAGE_ID_FIELD.get(msg);
return "server.general.playerLeftWorld".equals(id);
} catch (IllegalAccessException e) {
return false;
}
}
}
ty
After registering a Resource how do i add the resource to a world? SO for example some worlds have it and some dont ?
what you mean?
I see worlds have a resource directory which seems like the ECS system for worlds. SO id like to add a custom resource to a world with custom data
I registered the custom resource in my plugin but im kinda lost on how to add it to the world
The world folder/assets is mainly for prefbas and terrain generation for a specific instance as it is currently used by the game it seems
its a place to store worldsettings and zone info
Is there any docs yet?
only ai generated docs, one for npc and one for ui, and what ever you can read out of the source.
There's much more than just AI generated docs.
Worldgen, NPC and UI documentation are all official docs by Hytale on hytalemodding dev.
There's also a few other sites that have docs
The thing is since some resource data have to remain with the player, having it just as one world instance is probably extra work for a majority of people, where you could probably could manage this trough other logic in the entities, look at the traders and animals that you can't hurt in the forbidden temple as an example for world / instance specific entity handling.
Yeah when people ask about docs I will assume they are asking about official docs, since generated docs and ai docs are easy to find or make on your own.
need to resume looking into this
I think they solve the per world thing but having the resource accessible to all worlds, but only added to some.
thanks guys
still needa figure water out
What you need to do with fluids?
KaupenJoe had a youtube where he showed how to make a new fluid and what block it will create when encountering another fluid.
as for generic spread and update thats probably the DefaultFluidTicker, it handles spread and filling in blocks below.
So i bet there is a way to use a customfluid ticker if one have better ideas how to handle spread and fill of water.
when you register a resource, im fairly sure it "exists" on every world
you want to have some way to initialize it for only the worlds you want
how to remove the /spawn default commands?
Oh ok interesting! Thanks!
i really need some advise on ui files. all my ui is working but as soons as i use Image #imageID { Anchor: (Width: 80, Height: 80); Texture: "my.png"; } my ui wont load anymore at all my.png was in the root of the resource folder of my plugin.
Put it next to your UI file.
hytalemodding dev/en/docs/official-documentation/custom-ui/markup#path
thanks for your advice! However this would only affect the texture not to being loaded properly. but i did that now too didnt resolve the ui couldnt load error after connecting
That would be due to a syntax error then. My bet is the Texture property doesn't exist
that might eventual be but all i could find online was using this prop ^^
Use the official docs I linked
so you can access world threads using world.execute
and systems must be registered on the main thread
so despite there being the concept of game worlds it's not like separate ecs worlds ?
In the sense of the world not being an entity, or in the sense of the world not being a isolated instance with its own plugins, entities and components?
they aren't isolated
no not 100% since data need to be shared between worlds.
More isolated that load is split betwen active worlds, and the entities associated with the world.
I think you can even crash a world and the others keep going.
yeah I was more just wondering regarding events
there's anything for connected player discord id or smth else?
or i should use hytale oauth?
I guess the best option is to just dispatch the ecs events from a global handler down to wherever they're needed
Yeah. I am not sure what you are trying to isolate to a given world. But if you don't give access to it in other world, and validate towards a world it shouldn't be a problem.
And most logic for components would run outside of event logic either way, in systemticks or internal calls that could validate against the world as well.
well I just figured from a logic standpoint it would make more sense for worlds to own their own events like breakblockevents rather than it being global
but either way works
Hytale OAuth isn't available yet. The best thing you can do for now is to generate a token and make users authenticate with it
It depends what the server wants to track.
Maybe you want to keep some highscore or count that you use the break event to add to the value, than no matter the world its only relevant that a block was broken.
Or a player death, or other things, i allways see events as globla things that would need to be filtered to specifics if need be.
yeah but you can do it either way upstream or downstream with isolation
Yeah. There is no one solution to this. Just my mindset. 🙂
it doesn't really matter though I just wanted clarification so I do world threads in the best way
If i wanted to track BlockBreaking, i would probably add a BlockBroken component to some entity and process BlockBroken components in a BlockBrokenSystem. Because, i am weird like that.
Both breakblock and player death events are handled by ECS systems
yeah I was just initially asking for clarification on how their ecs is structured cause there's lots of name collusion
there's concepts of chunks and worlds in ecs along with in game lmao
doing minigames utilizing world threads and need certain events
I might be overly paranoid as well, i know that events can cause serious performance issues depending on implementation and time of execution etc.
Seen multiplayer ecs games where you could lagspike all players, by just opening a specific ui in game.
🫤
what are you trying to do
Hello o/
I'm trying to create a PvP plugin and i'd like to be able to test it myself, so I don't annoy my friends and such
For me to be able to launch two hytale instances at the same time (on the same computer ideally) and make them join a same server,
I assume I have to pay another copy of Hytale (i'm ok with that), but should it be a new game profile on my main account, or should I make a brand new account ?
Did any of you walk this path before ?
actually i want auth with discord directly for future but i think there's nothing like player authenticed discord user id in javasdk
and i though hytale already auth with discord so if i use hytale oauth probably i can get user discord id
anyway 😄 i hope oauth2 publish soon
Feb 11 10:14:32: [2026/02/11 10:14:32 SEVERE] [World|default] Failed to run task! should this be any of a concern? server seems to be running fine
You need another computer or a VM inside your pc to run another hytale instance
Oauth is a general type of auth that can come from a large number of sources. Facebook, Google, Microsoft, Apple, Apperently Discord and many other that already have user Authentication.
It is just a way to use a general Authentication that validate that a user is correct, but at the same time can limit the data the original auth provider shares back with the one asking, where Discord info of any kind would have to be explicitly stated as part of it.
Unless someone explicitly say it will share Discord information, I would not assume that it would. It would simply say that a the user is authenticated.
I think you can do it with 2 profiles on the same account? I haven't done it myself, but there is a dropdown for the profile you want to launch the game with on the launcher.
As for the 2 instances thing, I can do it just fine with a single profile - the older one's session gets invalidated but it's totally possible to launch the game twice on the same device. I presume you could launch with the 2nd profile instead and be fine.
because I assume i need both of my instances to be focused on, that's right ?
Hytale is locked to 1 instance per machine
You will need an isolated VM to run another
oh, it's clear then
How is that so? I can launch 2 instances just fine
All you have to do is launch the launcher again as the first instance's launch button will be grayed out
Did they change it..?
why would there be something third party related?
I just tried and when I pressed "Play" on the second Hytale Launcher it gaves me the error "Can't start the game: Another Instance of Hytale is already running"
And I waited for the first launcher to close itself before pressing the Play button on the second
I'm on linux, maybe that's a difference?
you can use the mod mAuth if you want separate auth on your server, what you are describing has to be implemented yourself @barren fiber
I also have a launcher written in rust if you want to try, in case it's a launcher limitation and not a client limitation
I'm on win10 atm, so maybe !
its aganst ToS, please stop advertising this
How is it against ToS?
Client modification are against ToS, please read them
It's not a client modification whatsoever
what you are describing is
It simply launches the client with a set of parameters
Which is what the vanilla launcher also does
you aren't meant to circumvent it
custom launchers for minecraft do exactly that btw
Yeah, they are the same in essence - a launcher
They simply spawn a new process with the actual executable & params for it
There's literally no difference to using a vanilla launcher vs a 3rd party launcher if viewed from the perspective of hypixel, unless they would just be butthurt about it for some reason. There's no extra telemetry on the launcher either, all it does is manage the versions of the client, the launcher itself and the JRE
If you want to try it out, I can dm you the github repository and how to use, but I haven't tried building on windows so it's kinda up to luck whether it works or not
Well, I don't think it would solve my issue as I can get blocked further when trying to join the same server sorry :/
I think I'm going to play it safe and start another account and buy a standard edition with it
I mean the solution I had also involved you having 2 accounts to begin with, just doing it on the same device
and play from another computer, gonna undust the laptop
indeed, but i need each instance to be "on focus" so I can give them input at the same time
I see
Anyone knows how to reference Images in my resource folder with the AssetPath of an AssetImage ui element? tried different things none seems to be able to use images from my plugin resource folder. is there any convention where to put such image. i tried root resource folder, same folder like the ui file none seems to work
And its in the client resource folder, not server?
how does #suggest work, is it supposed to act like tab complete? It doesn't seem to work from my implementation
textAlreadyEntered = textAlreadyEntered.toLowerCase();
if ("false".startsWith(textAlreadyEntered)) {
result.suggest("false");
result.suggest("true");
} else {
result.suggest("true");
result.suggest("false");
}
Hello,
I was wondering if anyone has found a solution to hide the three skill bar on a weapon? I'd like to either hide it but not disable it, or override it to partially modify it (without modifying the client).
Is it completely impossible to do this now?
Thank you
UI isn't handled by the client in Hytale but by the server, so no client modification here
The server decides what the user sees
I didn't tackle with UI yet, but as the original assets cannot be changed, I would suggest you override the (UI page?) the player see while wandering, and put the opacity of these 3 skills at 0%, this is a dirty way with an intuitive approach, not optimal though
You can't change the original assets since they are shipped with the game but you can override the original assets by adding your own implementation of the same file in your project with the same name and location.
With the changes you want.
Thanks for your quick reply!
Yes, I know what I meant (sorry for my English).
The HUDComponent doesn't currently allow us to hide the HUD Ability (3 weapon spells) like the Hotbar does, if you see what I mean.
Your idea of overriding it is good, but which component should I use since it's not available, or at least I don't know which one it is?
Unfortunately, they are not included in the assets 🙁
To set the opacity to 0, it would be necessary to modify the native UI of the abilities or apply a style to this component. However, we don't have access to this file (it's not in Assets.zip / it's not overrideable), and the HudManager API doesn't offer an "Abilities" component.
mmh, TroubleDEV has a video for making UIs and I saw him talking about "UI Pages", and when he did one, it completely hide the hotbar + health + stamina + skills icons
but maybe it is something alike the inventory and not a HUD to have when moving ?
Either way, I don't know enough to help sorry
Maybe UI components are inside a UI folder available through java plugins but not through the asset editor ?
Thank you for your help anyway!
Per chance did your launcher allow for more nuanced graphics control? Reason I'm asking if you could use to to set up some particular graphics settings it could be useful for looking into a certain bug with rendering a lot of amd gpus are having
The launcher has nothing to do with graphics control, sadly. I do make it launch the client with prime-run since I'm on linux with a hybrid gpu setup, but I don't think that's of any help to people with amd gpus.
Hmm, but could it be extended to be in theory? Thinking forcing it to use a newer version of ogl might help the amd cards ironically.
I have no idea how you would do that.
Also, I don't have an amd card to begin with, so there's no reason for me to waste my time with it
I have some ideas on that end and might just be able to write the code so check dms
Is it not possible to modify player inventory UI or overlay a UI element over the inventory UI?
as far as i know there is currently no way to modify the client ui
and the curren customui system doesn't support overlays
but maybe you could cancel the default ui call to the client and replace it with a custom ui
but customui is quite limited atm, hoping for the UI update from hytale myself
Hey everyone 🙂
I have a weird thing going on the hytale server 🤔 every 24h i am getting this error [ServerAuthManager] No refresh token present to refresh OAuth tokens, and the server is going down
I can’t remember the command but it sounds like you need to store / encrypt your authentication
Oh i thought because i have multiple servers on the same pc
/auth storage Encrypted I think is the command
legend
You do that after doing /auth login <method> of course
is kinda strange i am typing in the console and than my command is removed, it's this normal?
like after a new log comes on
/auth persistence Encrypted I believe, no?
Ah! Yes, that would actually make a lot more sense.
How do I make a Label bold in UI?
yes, it's not a terminal, it doesn't "need" to repeat what you just said to it
Label #EffectName {
Text: "Effect Name";
Style: (FontSize: 13, TextColor: #ffffff, RenderBold: true);
}
Example.
tysm
I'm following HytaleModding at dev server plugins tutorial, I managed to open the template and give a JDK to use to IntelliJ but gradle doesn't seem to find my Assets.zip, even after I fed the path to it in "hytale.home_path" in the gradle.properties file
when the build fails, it logs me that an Assets.zip should be at the path i gave him...and it does !
What should I do ? :<
i figured it out, i was giving him a path too specific, Intellij wanted the folder of a path more upstream
he wanted "F:\Hytale\Game_Files" whereas I was giving him something along "F:\Hytale\Game_Files\install\pre-release\package\game\latest"
Is there a real-time combat log somewhere?
Finally i just learned how to apply a scope so i can search in he hytale source without getting hit on every default javalibrary in history.
CombatActionEvaluatorSystems have a context logger, that will log npc combat if the logging level is set to finest (300) no idea how you would set it. It's also just a npc combatevaluation logger.
so more on the level if an attack times out or failes or simliar. rather than damage done by who to whom.
Really depends on what you define as a real-time combat log.
Hi everyone.
We’ve run into a problem — the server doesn’t see assets.zip.
By accident we uploaded a new update that included a “server” folder and completely wiped the server.
Now we’re trying to roll everything back somehow. We downloaded all the files from the previous hosting via FileZilla, but it still doesn’t work at all.
Has anyone dealt with something like this before?
OK, thanks @fathom dune. I'm wanting to trigger visual effects when hits land. Is there somewhere I could monitor to trigger those effects?
there should be plenty of events or systems handling damage, and info from damage, take a look around and see what you can find.
what do you mean with "it doesn't see assets.zip"? You put it in the mods folder but it fails to load? You specified with --assets=/path/to/Assets.zip but it doesn't have read access?
Perfect, one last question: Is there an API with events listed that I can hook into?
(Or, I assume there is, could you point me in the right direction?)
Does anyone know how to check if an item has recipes tied to it? I need to check if an item has a processingBench recipe.
There are a lot and many answers and non easy.
If you want to limit the scope and focus on damage and damage events.
if you have run the graddle decompileServer command you could simply search for DamageEventSystem see what systems there are that handles damage events, and create your own and add it in a similar way.
Roger, roger <---- me with homework! 🙂
Thanks @fathom dune
I hope it will help.
Should. Experienced Unity dev here and dipping my toes into HT modding for the first time.
I did run into Britakee's modding website, looks like they have several "Getting Started" tutorials plus some good docs.
Had to try it myself, i replicated the base of the setup from the CameraEffectPlugin and based my CatchDamageEventSystem on the CameraEffectSystem but removed everyting loading external resources just kept the handle function and the query declarations.
Gonna try it later and see what i get.
You should also check out hytalemodding dev
Added to my "Sumo has nothing better to do" tab. 🙂
published it on curseforge with github documentation and sourcecode now
why is the hytale UI language is so sh1tty?? couldnt theyve just used simple html and css?
Mainly performance reasons, and being able to have an overview of the whole pipeline, I imagine. That's important for the MVP
and no worries, the ui engine is in the process of getting replaced with Noesis which will give us a lot more flexibility
;-;, bro took me an entire day to create a simple page
atlest they couldve kept css naming conventions for the properties
it's not css though
what doo you meann, I want my Webkit chromium baked into hytale now
but they couldve used similar names for properties
maybe some random dude tried to show off that they couldve create their own .ui format...
I mean for a while I think alot of dev tools were made in house by hytale
they only recently moved over to blockbench before riot cancled it or something
Can you send me link in DM? Thanks
yeah their first priority was to get the game working. Now they're moving over to improving the tools for long-term support
jank is expected
sooner or later we'll also get wsywig editor, for it. then it won't be as bad
can't wait for the Figma plugin to come out :kek:
lol
Noesis has a very powerful visual editor
i mean creating a transpiler for a .ui format or a custom .css (like the one react native has, the StyleSheet stuff) should take almost same time
you really want JSX templating language don't you haha
Using Tailwind / React in Hytale when?
Exactlyyy
I can't help it, I'm a react dev as my dayjob, lol.
same
You mean like HyUI?
We can't even add anything to the HUD and we're here expecting a full web framework to run, I know how unreasonable that is
hm?
i've seen tons of mods adding huds
but thats a etxternal dependency and its syntax's kinda wierd with all those data attributes i need to remember ;-;
I mean actual HUDs, as you're playing, not "custom UI windows"
people calling UIs "HUDs" need to know wtf "hud" actually means.
A menu is not a HUD.
I think you're just missing something
I've seen Armour huds and Mini map huds
There are UI Pages and UI HUDs in Hytale
Only HUD I ever saw was hijacking the "quest" window they didn't implement
maybe I just don't know what a HUD is haha
Custom HUDs
Persistent overlay elements drawn on top of the game world:Display-only (no user interaction)
Always visible during gameplay
Lightweight and non-intrusive
Perfect for: quest objectives, status indicators, server info panels
hytalemodding dev/en/docs/official-documentation/custom-ui
HUD = heads up display. Anything that appears on the screen to alert the player is a HUD
I'd love if that doc could actually say how to do it, tbh.
everything on your screen is a hud haha
That is not what HUD actually means in video games.
The hotbar and ability slots are HUDs. The inventory menu is not.
player.getHudManager().setCustomHud(playerRef, myHud);
myHud is a class that extends CustomUIHud
a popover that doesnt close and doesnt fak with your regular actions?
I guess I'll have to look at how the minimap does it
(sorry, I know that sounded dismissive, wasn't my intention, I meant, it's a lot easier with full examples)
Hyphen45 has a very quick but detailed overview: youtu be/u4pGShklEKs
It's very similar to UI Pages, just doesn't support interactivity
It's strange, I've seen Hyphen's videos and maybe the other one that called it a HUD sounded the same but talked about just UIs
This is the modding channel, if you want to try to scam go to #game-discussion
I mean making HUDS can't be that much different from UI's surely
The majority of Page-related information is also applicable to huds
they are just mini UI widgets on your screen
HUDs and Pages are both UI
Ah well, I'm at work now, I'll have to try again tonight.
be like me, typing here mid standup
I actually implemented a weapon upgrade system in the vampire survivor style, every level you can hit F to pop up a window to select an upgrade. But I want to show these stats/level somewhere, so definitely a real HUD is gonna be a game changer.
player removed from world but its not a crash? what this mean?
Hey all. I'm creating a plugin and having a lot of fun with it. But I'm running into a memory issue after destroying worlds.
My flow is: create a world → transfer a player to it → transfer the player back to the default world → destroy the world.
Each time I run this loop, about ~550 MB of memory doesn’t get freed.
I added logging to track total heap and used heap, and I’m also triggering manual GC after destroying the world and every minute to monitor cleanup.
I spent a full day investigating my own code and stripped most of it out, but the issue persists. universe.getWorlds() no longer returns the created world after destruction, so that part looks correct.
Is this a known issue, or is there additional cleanup required beyond calling world.destroy() when creating worlds programmatically?
the world thread might have crashed, while the server (and other worlds) continue running
How to debug "failed to load customui textures" error? Which texture?
did you turn on debug mode in your client settings?
that might give you some more info
otherwise, time to remove all textures and add them back in via binary search
Yes, I just tried it and got a more detailed error — thanks.
what could solve this issue?
the log will tell you what the issue is. I don't have that information
Couldnt that also happen by simply teleporting from an instance?
They should be removed from any world instance they leave?
anyone free to test with me sm with me i gotta just try one command on someone
anyone know how to get the world where an entity died? World world = Universe.get().getWorld(uuidComponent.getUuid()); returns null
getWorld() expects the uuid of a world, not the uuid of an entity
Yeah just realized that when writing it here xdd, what would be the method to find the world of an entity uuid? im working on a death detection system
store.getExternalData().getWorld()
ty
Dump the heap after destroying the world and inspect it
Ok thx, let me try that
Does Anyone know which event I would you to check if one players tries to interact with another player (right clicks another player)
i dont think you can interact with other players with right click
looks like you tryna do something with instance-forgetten_temple while its null or you tryna spawn it and file not exist
Can we get a server plugin to disable the stupid online authentication check?
yeah but it costs 20 dollar
pricey right
Hurr hurr
I paid the 20 dollar. I want a product that works without failing everytime my internet blinks.
if you mean you dont wanna auth everytime
circumventing drm, anticheat, or technical protection measures are against the eula
you can use auth encryepted or sm
So who do we have to complain to in order to get the devs to listen? I have filed an official request on the website. Multiple of us have brought it up in the main discussion channel endless times. Everyone knows Minecraft tried the same thing in the beginning and dropped it because it was customer-unfriendly. Who actually listens?
Yep, that's where I submitted.
what you having problem with?
the game not fully released yet not even its 3 month with this big of a team and this big of a community they can be busy
have you figured it out? would be interested too in how to open a link from the UI
does anyone know if there is a vanilla command or a mod out there that can unload a world and delete it completely? /world remove just unloads the world...
Nope, the last thing I know is that is a client-side thing we can't manage yet
Sorry, I know I'm coming across like a butthole and I don't mean to. It's just frustrating because the game is literally SO GOOD but I cannot invest in more copies until the server is untethered from the internet requirement.
you can open game offline
hm, next best thing would be via chat, which is def possible since Hyvotifier does it for example
Via chat is easy: Message.raw("Text").link("Link")
ah it just has the link method i overlooked it earlier
Right. It's just the dedicated server constantly phones home to check your creds, for no good reason. Whether it's cached or not. Doesn't matter, it's still calling home to verify. If your internet is spotty, your dedicated server is just screwed.
can you bind link to eventdata?
it sounds like your internet bad not game
Hey, HyRaider.
As I can see, world have "worldConfig" and there is "deleteOnRemove". Is it that set to "true" for the world? 🙂
set worldconfig deleteonremove like this guy said
yes i know about that setting, but i am hoping there is a way this can be done by ops inside the game (without having to edit the world config file)
Make a new command for it? 😄
can anyone help me with adding an interaction to an item - i need the item to call a method on rightclick
i will if i have to 🙂
@here
you can create an interaction in your plugin by extending SimpleInstantInteraction for example, there you implement the call to the method. Then register it, for example in my case I do this.getCodecRegistry(Interaction.CODEC).register("HYCPCastFishingRod", CastFishingRodInteraction.class, CastFishingRodInteraction.CODEC);
Then you can use that interaction in the asset editor and map it to right click
i'll try that thanks!
Any reason why checkboxes cant be set inline using appendInline method? I can set Groups and labels fine but everytime I use checkboxes, it crashes
Is it possible to make the output of a bench random? And is it possible to make multiple recipes for the same item?
When you declare a recipe you give it a id and inputs and result out, so you can differ the input and get the same item. You could even make the same item with the same ingredients I assume, and have two choices in the craft menu with no difference betwen them. As for random, probably not with just json, but i bet you could catch the craft event and just return a random item instead of a specific one.
Or even return a boxed "needs assembly kit" and have a random item drop from a given drop list when you interact with the item.
And probably even more ways.
yea im trying my best on smth like that, idk if you know mcci fishing crates im tryna do smth similar
I don't know it, but i get the idea.
argh, broke something so my jar is not added to the project, so time to figure out what i broke. Not used to intellij or gradle setups.
if i wanted to disable the default join/leave messages, how would i do it? is there functions i can override or should i intercept the packets?
Ok I give up for today, downloaded a new version, followed the instructions to change the path to use my install dir since i didn't use default.
For the join message, there is an event where you can set a flag to false. for the leave message you have to add a packet filter for now
I need to specify it at gradple.properties in the user folder and in gradle.properties in the project folder. If i did one or the other, it simply merged the default path with my specified path in the middle.
@versed sleet
yeah this is set to 'true'. The setSavingPlayers and setCanSaveChunks is set to 'false' 🙂
Any Idea why after i register a resource im not able to seethe resource inside the world directory for each world? Do i have to attach the resource to the world?
var storeRegistry = this.getEntityStoreRegistry();
var resourceType = storeRegistry.registerResource(HideoutResource.class, HideoutResource::new);
HideoutResource.SetResourceType(resourceType);
hey quick question how do I get the mod's root asset pack Path ? (I used getInstance().getFile().getRoot() but it returns null everytime)
okay just found out I can use getDataDirectory()
ah yes but the thing is it's an .zip file how do I write files in it or create directories and then access it ?
why does NPCPlugin#spawnNPC spawn an npc with extremely broken ai? the chunk is loaded before spawning
spawning with commands or creative tool works
or is there a way to add a new asset pack directory
is anyone experience with TabNavigation in UI?
does anybody know if you create a command with the same name as a vanilla command, will both commands work in tandem when the player uses the matching command, of will the plugin command fail to register?
fails, i cant even get the worldgen v2 to work, let alone register a plugins command 🙁
bummer, i have no idea what to call this other than /world lol, all it does set set DeleteOnRemove to true for the specified world... no idea what to call it other than /world :/
maybe /worldhypixeloofedsoihadtocallitthis?
no, that will fail too
you already used that one didn't you
turns out pascalcase is requiered not optonial, i just learned this after like 15 hours of banging my head agasin "asset name dose not exsist"or "unknown command"
it's not required for command names...
it is
not on my server it isn't heh
have u tried to generate a world using worldgen v2?
is there any official api or guide to make mods??
yeah! good luck reading them, the dev team said stright up its for tech docs, but when the examples in it are broken, so idk
nevermind, even chaning all ref to the correct Pascalcase, iam still getting asset name does not exsist, omg
i'm talking about command names, nothing to do with worldgen2...
Hi, I want to make a mod that, when you use /races, opens a menu with several buttons to change races in the game. Can someone guide me a bit? Thanks
try the social menu mod, seems to be what ur looking for
where i can find this?
curseforge
not completely they shared npc & customui & worldgen docs but there great community docs & + you can decode hytaleserver jar to see inside
How can I set my server (which I have set up to run with my plugin dev environment) to ignore asset validation issues? I don't want to have the game not let me launch the server just because an asset that was working fine 2 updates ago is now causing validation issues and the server refuses to start... besides, the way of fixing these issues would be to open the Asset Editor, which I cannot do if I can't launch the server to connect the Asset Editor to...
Oh... OH...
- Added an Anchor UI system, enabling server plugins to add UI elements to client pages, such as the world map. This will allow modders to insert into various predefined points as we add them.
i shouldnt have to decompile and entire jar just to learn why my asset names never work in worldgen v2, thats dumb, the docs should just work
I fully agree and the docs should have been ready before launch. I am guessing they were not ready when they purchased the game back and they were under too much of a rush to get them written, unfortunately. We'll just have to wait while the community writes docs on Hytale Modding and Hytale releases some official docs over time there as well.
gonna be %110 honest, i litterly punched my pillaers in the office till my knuckes started bleeding, iam sorry but if I cant figure it out, and i even broken down and had AI comb through it all and they all say the same thing, it should work!
..
.....
.......
"Instance asset name does not exsist"
ARARARARGGHGHGHGGHGGHGG"
I've had this for NPC appearance! That's why I asked my question about even getting the damn server to launch when there's asset validation issues!
I am with you there with it being particularly maddening, more than other issues.
omf turn off all validation as an option for devs, or at least provide a separte log file, something to figure out why
they said you can turn it off for singleplayer, I don't know if that means only for singleplayer worlds (why?) or if it had already existed for servers
i turned on javas debug options, followed the stack closley, took hours, i still cant pinpoint the issue
worldgen v2 is not connected to hytaleserver jar you learn that on asset node editor by yourself & docs did your read simple and full worldgen v2 doc
yeah i did, but guess what, not supported on linux
so yeah, all code no lazy mans editor
that's a shame, I'm only using Windows until my disabilities can be eased (hopefully soon with a medication change), since I was getting too exhausted with them to handle something that broke on my Linux install
i tried using a friend to create a test one, worked on his fine, moved to my server for testing, same results, unknown asset name
my theory is they all worked on windows machines, and the code is meant for that, so me being on linux, most of my hytale tools are just stirghte broken it seems prob due to linux strict case and path sensativity
I think they also worked on Windows machines with large 1080p screens considering the Asset Editor is far too small even on 1440p for me and I've been getting many headaches due to eyestrain because it doesn't scale with system UI scaling (the node editor does)
yes this!
I also noticed it was made for 1080p, i have to code at that reso or i just cant read shhiz
I got two spare 1080p monitors from a friend who didn't need them which I can now use alongside my 1440p ultrawide monitor to help with Hytale. this is literally in part due to the Asset Editor issues. but they're still off to the side, meant to be used as references, it's a bit tricker to actually use them for interaction like in the asset editor (the monitor arms I have aren't long enough for the 1080p monitors to properly wrap around, since they have to get past a particularly wide central monitor due to it being ultrawide, and this means that they have to be mostly flat on the same plane as the central monitor, meaning they are thus further away from me)
i just got one 4k curved color accerte one, had some photowork gigs years ago, now i mostly use it for games and coding, but even setting steamsOS display scale up, or even zoom tool, it stays small! what is this black magic!?!?
yep, it just ignores system scaling.
I think i just need to get a windows machine to work with but after seeing what it did to my nieces computer after upgrading to 11, i decied NO, iall stick with Steam and ubuntu ty
what about dual boot? if you only need it for one purpose, like using the node editor or just using it for Hytale modding
you could just set a relatively small (as long as it is enough for the OS and some extra applications on top) portion of your storage aside for Windows, don't need much storage if it's not your main OS
of course, be careful resizing existing partitions, back stuff up before doing so. sometimes things work totally fine but sometimes something may go wrong or you may make a simple mistake and all of a sudden you've lost data
oh i know, the whole reason i switched to SteamOS this year was because windows locked me out for "security" because i let my cat walk on my locked computers keyboard, :/
yeah I mean, I wouldn't entirely switch to Windows for just one purpose (like this). I'd just keep a Windows partition around so you can use that for just what you need to use it for
I can't just walk up to boss man and be like "yo i need to install a VM machine, windows, compermise our net, and run a laggy editor for my work order!
iam sure they wont be mad, i mean iam still working on hytale right? XD
Is there a way to reduce the tool range? E.g. can I make it so I can only mine the block directly next to me?
Is there a way to spawn an instance but change the name after so the instance is not named after the instance name?
For example this is how the instance is getting named in the world directory: instance-Challenge_Combat_1-4ed7f36d-1893-48bc-a839-ea0da4c1e67d
edit: (solved) spawn instance can take another argument worldname
hey there, when i hardcode a background: (TexturePath: "xxxx.png" ); in the ui file everything works but when i use cmd.set to set the property the same image can not be loaded instead its white with a red cross. where does try to find the image while cmd.set?
wheres is .png cmd.set needs to has the custom folder name if you have it
i have them in the resource folder of a the plugin under UI/Custom/Images/Shop/ for instance, but i would like to rather load it from the pluginfolder where the configs also are aka: mods/modfolder/Images/Shop/
so inside .ui you use Shop/xxx.png right? am i wrong
the ui Pages are in Common/UI/Custom/Pages/ and from there its it ../Images/Shop/<imagename>.png
then you use Images/Shop/<imagename>.png inside .ui?
Background: (TexturePath: "../Images/Shop/empty_shop_image.png", Border: 0);
wait ../?
does it not work without ../
ofc not since: Common/Ui/Custom/Images/Shop is the images path and the page path is Common/Ui/Custom/Pages/ is the ui file path
I would experiment in this order:
../Images/Shop/<imagename>.png
Images/Shop/<imagename>.png
Custom/Images/Shop/<imagename>.png
UI/Custom/Images/Shop/<imagename>.png
but originally i wannted them to be loaded from /Server/mod/pluginfolder/Images/Shop/
i think thats not possible .ui etc that kinda things doesnt load without being under common
I just looked how I did it and lol! I made separate elements for every image and set them all Visible: false; and dynamically turn on the one I want to show
would kinda something like that add weight evantually? without rendering because of false visible
I would expect an unmeasurable performance overhead, but layout-wise there is no difference since Visible: false; completely removes an element from the render tree
But who knows, maybe dynamically loading an image would be worse for performance
Lol
thats pain to have a shop running with custom images when i need to hardcode every image the shop could have. additionally i currently manage the shop items via json config from the pluginfolder but i need to upload a new plugin,jar everytime i add items just to show the images
Maybe the problem is that you need to put a path object into the setter, not a string
Idk though maybe check how the Memories page does it?
those images are inside the Asset.zip
Yes
Assets.zip is the vanilla modpack
The vanilla plugins interact with those assets exactly the same way as our plugins interact with the assets in our resources folder
The set(String selector, String str) method just wraps the string as a BsonString — it doesn't parse the composite (TexturePath: "...", Border: 0) syntax.
what do you do on a pre-release server to have it load plugins that are did not update specifically for the update instead of just crashing?
Is there a special CODEC for saving fields? I have an attribute I want to save but I don't want it to be settable in JSON.
for what i know the plugin owners have to set "ServerVersion" (or something like that) to something different than the classic "*"
Concept for a Hytale server system:
A fully server-side automated PvPvE castle event running on a scheduled timer (every X hours) within a defined region.
Core mechanics:
- Region-based event trigger
- Persistent scheduler (survives server restarts)
- Pre-event cleanup and full area reset
- Wave controller spawning minions at randomized points inside the region
- Boss entity spawned as the final phase
- Loot chest tied to a configurable loot table that unlocks on boss death
- Global broadcast when the event begins
- Automatic shutdown and cooldown
Server protections:
- Disabled building inside the event zone
- Teleport restrictions
- Respawn control
- Anti-exploit safeguards
Advanced possibility:
Dynamic scaling based on online player count (mob density, boss HP/damage, reward tier).
Structured as a modular system (Region Manager → Event Scheduler → Wave Controller → Boss Handler → Loot Manager → Cleanup Service) to ensure reliability and repeatability while minimizing manual intervention.
Is there a way to transfer server data from one to another?
My friend made a server based off his own IP and it hasnt been working so now we are trying to attempt to purchase a server in order to play. We are looking to see if we can transfer the data from the current one to a new server?
why is the /enviroment command tied to the players gamemode
Pretty sure you just need to move the 'server' folder, specifically the world folder and make sure the "world" name is the same in the configuration.
is there a way to add a subcommand to an already existing hytale command?
is there anyone available to test a custom command i made with me? i'd ideally need 2 people
still need help ?
would love yeah, send me a DM
may i help what ver it is
can't, you don't accept dms
mind if i help
what ever you need help with
if anyone needs help on there world hmu im down to help with whatever is needed
i am down to help if needed
yeah you can use addSubCommand on any command
Do people recommend the kauptenjoe example plugin, or some other, for windows (non default install dir)?
Or do you use another or just set up your project manually?
I just can't get it to reference the sources correctly any more, and i have no idea what i do differently this time. Also unsure if its a gradle or intellij setting or file, can't find anything in the gradle files, but adding library dependencies in the project in intellij won't let me browse the decompiled server as before.
I get warning in my plugin that it can't find the references in red, but it still compiles without warning, and decompile server run without errors.
I generally recommend it along with Build-9/Hytale-Example-Project
ok seem like i missed something, Build-9/Hytale-Example-Project?
ah
i will see if that behaves better
Oh oh oh, build-9 have unofficial vs code support.
I used the tutorial from a small german youtuber called "schloool", but idk how or if it differs to the official documentation
Never used gradle before but i think i understand how it works and how i need to sort stuff
the funny thing is that i have written an entire webproject setup trough graddle once.
but as soon as time pass and you never do it again...
how can i get the highest block un a location?
get the chunk get the xz in the chunk, start at the highest y values loop to to lowest return if you encounter a block.
if the location is not a single block but a volume, loop trough the volume, store the highest y, use the highest y as the end of the loop for all other xz.
I am assuming that Hytale uses xz for ground plane and y as height now.
you could make a cache that stores heights for locations, and listen to events to update the height if there are block events that fall in to the area of the location.
is there any good tutorial/explanation what the "assetmap" is, i looked at the implementation of the DefaultEntityValue (or smth like that) where you define components (health, stamina, etc) as well as a get function for each. at the bottom you have all these values being mapped to assetmap of the same string (i think) and idk why thats being done
its usually the loading of a resource from json data.
The assetmap defines the connection between name, type and value.
i see, gotta read into that more. I was trying to setup a currency system where each mob spawns with a coin value and if you kill that more you get more coins
There is a plugin for intelij that is a god send
(I’ve made the Hy*X plugins ) * being each various plugin like HyEssentialsX
Has the built in templates plus auto server setup and auto jar deploys to server including building the new jar huge time saver
do you mean the one from moonlightdev or a more up to date one
I imagine so there were only two plugins in intelij when I started I’m not at my pc atm
I did have to update my gradle to make two jars one being a dev jar so that one is always copied to the test server otherwise once I had multiple versions / jars in the folder it wouldn’t always pick the right one (could of also just deleted the old jar versions but eh wasn’t hard
If anyone is great at making assets I’m on the look out for help my team is branching into mod development it’s just slow moving due to asset creation
What did it do? 90% of issues are user error or a lack of configuration and the other 10% can be solved with a modified windows install
The problem I had turned out to be exactly the problem people had stated elsewhere, specify the jdk version to 25, even if the Gradle default one said 25, it would only find the hytaleserver.jar if i changed it to the local jdk version of 25.
tip of the day use maven over gradle, not only does it work better for java 25, it gives you readable errors. it has sped up my work so much. it was annoying to get gradle work with java in the first place,
That said, then you have to figure out how to get it to work in maven instead, for me, thats just shifting the problem to another repoistory and build system that i am not used to, so doesn't feel worth it now that its up and running again.
sorry you're not wrong, i was speaking under the assumption that you have experience with both
for hytale so far i've had a better time using maven
I usually don't do java development, and that is the only encounter i have had with maven projects, last time was 8-10 years ago. Gradle is only like 3-5 years ago. ^^
I just realized with the flexibility in hytale modding, it would be possible to create a VTT plugin.
i just spent 3 hours trying to make a custom featherboard 🥲
whats a feather board?
a board that shows details like money, online players, a bunch of stuff
i cant put pictures anywhere 🙁
Tried to google an example but only got "A featherboard is a safety device used when working with stationary routers or power saws such as table saws or bandsaws."
what kind of currency are you using?
ahh yeah i was too lazy to make a custom one so im just using essence as currency
search hytale hyvize server should pop up the first one and theres our (my) site
A lot of people have problem showing images.
One of it seems to be that people feel a disconnect between images being in the client resources, but referenced in the ui files in the server resources.
from what i understood it.
No they mean they can't post screenshots on this server, lol
is there a way i can get a free hytale server?
hytale is always hosted in a "server", if you want to play with a few friends one of you with a good pc can probably host local and share the ip
ohh ok
thank you
singleplayer hytale is also a "server" local alr, idk if you can share that ip or if you need a seperate server like most people setup to test plugins with
@fathom dune do you know if singleplayer is on a specific ip, iirc minecraft worlds always hosted on the same port, is hytale the same
i am just connection towards local host ip, but your external ip should be the one if all ports are open, or if you are in the same lan, your lan ip.
hi guys, thanks for you answer about server, but is it possible ton have a console in solo world ?
Yes, if you open a Server from command line the terminal (what i think you mean with console) remains open. Easier even you setup a .bat file for the server start, then the terminal will open when executing the .bat
If you are more deep into the plugin dev setup you can also integrate the server start into gradle, but i havent done that yet personally Just heard its really useful
Another clean win on the dashboard. Orders flowing in, notifications ringing nonstop, profits locked. Quiet moves, loud results. We build, we scale, we dominate.
are they quiet moves if you gloat in random discords?
What?
you mentioned 'quiet moves'
It's not gloating it's just advertising.
idk whats being advertised
How
I bet it's a hosting service for hytale servers
Advertise what?
if you're not tryign to advertise what exactly are you saying and why did you spam it across half a dozen channels?
^
Depend on why you ask
alos i feel like locked profits implies no more profit, like its capped, id reword that part
Because I'm curious. What dashboard are you doing?
Lol
The dashboard is my shopify sales lol
ok and what are you selling?
Lol bro 😆🤪😆😆😆
this doesnt feel like making silent moves anyomre
Why're you curious 🧐
This is an example of when just using Enterprise, HR Hyperbole, just breaks down into a complete mess.
you spammed in half a dozen channel, clearly you're looking for attention, you've got it, why you playing coy now?
its not curiousity, its calling you out for being random with your posting in a plugin forum
I'm looking for anything
What do you mean "looking"? It feels like you know you're breaking rules and you can't say it out loud because you know you're being sus.
It's serious strong bot vibes in the level of expression and deflection.
Is there an inventory open packet?
to move in silence would be not shi-posting on random forums. this is the exact opposite of 'quiet moves' lmfao
Can't seem to find it
179 InventoryAction maybe? I'm not sure.
if not that, could be 200 OpenWindow
If you got ability to search in the code search for PACKET_ID, the hit itself won't say much but the file is usually named after the packet purpose.
Bro just chilling don't know what you taking this conversation to
nah, i dont want your random friend request bro
Did you know, if someone's acting inappropriately you can report them by right-clicking a message and doing App => Hytale => Report , or by using the /report chat feature? It helps the staff keep the chat clean 🙂
I'll try both, I was trying SetPage packet earlier
just trying to stop the player from opening their inventory essentially
and open my own ui
204 is specificlly Client Open Window
I'll read through it and give it a shot
what permission is the help command? i just cant manage to unlock that sht for my users
I just realized I could do a packet printer. The inbound packet is goddamn Client Open Window Pocket Crafting 😂
is this true even if you have a backpack or memories unlocked and changed to those tabs in the inventory screen.
hmmm let me check
I was unsure about that, thats why i didn't mention it before i tried to figure it out but have different things taking my focus. ^^
Anyone knows how to use the /npc spawn Trork_Brawler --position= Command? Im trying to use it but always get an error Invalid Vector3d format
Yeah it's still pocketcrafting
Nice. There you go then. 🙂
now we know yippeeee, time to yeet the old player inventory out the window 😈
I am trying to figure out why my query returns with null when i try to get damage events.
Unsure if i need to set dependencies to other systems or if something else gone wrong.
you're extending DamageEventSystem and implementing your handle method? can you show your code?
is there a way to get the players target block?
Is there no way to stop the default inventory from appearing for a split second? I'm intercepting the packet and closing it then opening my own UI
public static void register() {
// Create the menu page once
menuPage = createMenuPage();
// Intercept inbound ClientOpenWindow packets (client -> server, packet ID 204)
PlayerPacketFilter inboundPacketFilter = (playerRef, packet) -> {
if (packet instanceof ClientOpenWindow clientOpenWindow) {
LOGGER.atInfo().log("[CLIENT_OPEN_WINDOW] Packet detected from player %s, windowType: %s",
playerRef.getUsername(), clientOpenWindow.type);
// If this is opening the PocketCrafting (player inventory when pressing Tab)
if (clientOpenWindow.type == WindowType.PocketCrafting) {
LOGGER.atInfo().log("[CLIENT_OPEN_WINDOW] Intercepted inventory open (Tab key) from player %s",
playerRef.getUsername());
// Mark this player as intercepted
MENU_STATE.put(playerRef, true);
// Open our custom menu
Ref<EntityStore> ref = playerRef.getReference();
if (ref != null && ref.isValid()) {
Store<EntityStore> store = ref.getStore();
if (store != null) {
World world = store.getExternalData().getWorld();
if (world != null) {
world.execute(() -> openMenu(playerRef, store));
}
}
}
// Don't block the packet - let it go through
return false;
}
}
return false;
};
// Intercept outbound OpenWindow packets (server -> client, packet ID 200)
// Block the server from sending the inventory window to the client
PlayerPacketFilter outboundPacketFilter = (playerRef, packet) -> {
if (packet instanceof OpenWindow openWindow) {
// If we intercepted this player's inventory request, block the server response
if (MENU_STATE.containsKey(playerRef)) {
LOGGER.atInfo().log("[OPEN_WINDOW] Blocked server inventory window response for player %s",
playerRef.getUsername());
// Remove from state after blocking
MENU_STATE.remove(playerRef);
// Block the packet
return true;
}
}
return false;
};
inboundFilter = PacketAdapters.registerInbound(inboundPacketFilter);
outboundFilter = PacketAdapters.registerOutbound(outboundPacketFilter);
LOGGER.atInfo().log("PlayerMenu ClientOpenWindow filter registered");
}
yeah i just don't want to spam large sections of code into here.
it's the point of the channel though ¯_(ツ)_/¯
The plugin just have a
this.getEntityStoreRegistry().registerSystem(new ListenToDamageEventsSystem());
and the ListenToDamageEventsSystem
is just
public class ListenToDamageEventsSystem extends DamageEventSystem {
@Nonnull
private static final ComponentType<EntityStore, PlayerRef> PLAYER_REF_COMPONENT_TYPE = PlayerRef.getComponentType();
private static final ComponentType<EntityStore, EntityStatMap> ENTITY_STAT_MAP_COMPONENT_TYPE = EntityStatMap.getComponentType();
@Nonnull
private static final Query<EntityStore> QUERY = Query.and(PLAYER_REF_COMPONENT_TYPE, ENTITY_STAT_MAP_COMPONENT_TYPE);
@Nullable
@Override
public SystemGroup<EntityStore> getGroup() {
return DamageModule.get().getInspectDamageGroup();
}
@Nonnull
@Override
public Query<EntityStore> getQuery() {
return QUERY;
}
public void handle(
int index,
@Nonnull ArchetypeChunk<EntityStore> archetypeChunk,
@Nonnull Store<EntityStore> store,
@Nonnull CommandBuffer<EntityStore> commandBuffer,
@Nonnull Damage damage
) {
EntityStatMap entityStatMapComponent = archetypeChunk.getComponent(index, ENTITY_STAT_MAP_COMPONENT_TYPE);
assert entityStatMapComponent != null;
}
}
damn i forgot the code format syntax.
```java
code
```
(note it's backticks not accent aigue)
Caused by: java.lang.IllegalArgumentException: Query in AndQuery cannot be null (Index: 0)
So the player ref component gets evaluated to null i guess.
So either i should initialize it later, or i need to specify something making the PlayerRef component store accessible, or something totaly different.
I did this instead ```java
@Nullable
public Query<EntityStore> getQuery() {
return Query.any();
}
and then did early checks and returns
Ah.
if you want to check...
(github.com)/eslachance/EchoesOfOrbis/blob/main/src/main/java/com/tokebak/EchoesOfOrbis/systems/ItemExpDamageSystem.java
anyone knows how to get players target block?
TargetUtil has raycast methods you can use
this just gives me integer and not block from getBlock
world.getBlock(playerRef.getTransform().getAxisDirection())
Ah the assignment to QUERY triggered the exception.
what am i supposed to do with a number from getblock?
ty so much
Could it be that what you get back is the id for the block in question. And somehow could use some other function to request the block in question?
You can get the BlockType with BlockType.getAssetMap().getAsset(index)
cannot wait for a real doc for this, cause i did not know about targetutil
quite alot of utils thats gonna be used i just keep forgetting utils exists
Damn, the inventory is loaded client side first. Son of a
TargetUtil, ChunkUtil, ParticleUtil, BsonUtil, the list goes on lol.
yeah gonna forget them in no time lol 
hey how do i identify and safely delete chunks without resetting the builds of players?
Probably some way to see if the chunk have saved data beyond loading from the world gen.
If it does some kind of evaluator on how big the change is. since a knocked down tree or removed rock technically is a change that needs to be stored. So thats probably the harder part.
Your best bet might be creating a system and resource to track which chunks players place non-natural blocks in. I don't think the game does this for you though
It does in a way, since it will have to reload any changes done when the server restart, any block change is saved, the question is just how easy it is to access.
From what I've seen ANY change marks a chunk for saving.
But essentially the once with changes in them will still be a minority.
The question is mainly how large or small change you perimit before a reset, but some system where players can mark a chunk as protected would probably be the easiest. any chunk with in the radius is not reset.
then again if there is no change, a reset would probably not be needed unless changing world gen.
ok im getting lost here. After looking around at code its getting me nowhere. if I want to get the component of a specific block using InteractionContext. do I look in the archtypeStore, chunkStore, commandBuffer, entityStore or somewhere else?
Block components are actually stored in the BlockComponentChunk of a WorldChunk. Getting at them is different depending on where you start from
ok world chunk first and then blockcomponentchunk. thanks
do we have something like an ESC index or directory map to know where to find all this?
BlockModule.getComponent() gives you a general method for getting block components from a global position. Unfortunately blocks use several different coordinate systems and indices so it can be a little confusing
BlockModule seemed to be returning ChunkStore with getComponent not he component within blocks
getBlockEntity returns a Ref<ChunkStore> but getComponent does return Component<ChunkStore>
ok im going to see if this works
public Component<ChunkStore> getThisComponentByInteraction(ComponentType componentType, @NonNullDecl InteractionContext interactionContext)
{
Vector3i targetBlockV3i = getBlockV3iByInteraction(interactionContext);
World myWorld = getMyWorldByInteraction(interactionContext);
return BlockModule.get().getComponent(componentType, myWorld , targetBlockV3i.x, targetBlockV3i.y, targetBlockV3i.z);
}
literally had to build some helpers just to keep the size of these methods down
i dont like hopw we have both BlockPosition and traditional Vector3i
I think that's part of the legacy serialization system
Just looking through it you can tell a bunch of the netcode is halfway through being replaced
anyone know under which file the chest loot is safed under
should we be using v3i or BlockPosition then if one is going to be deprecated?
i mean v3i does work as all blocks are just an integer apart in every direction
how to download pre-release server files please?
I would use v3i everywhere that doesn't require BlockPosition. And probably make sure it's the one from the math package and not the protocol package
if i have a variable n and i want to give a player n cobblestone, whats the syntax? is it with sendinventory?
if (player == null) {
LOGGER.atWarning().log("Error: Command opencrate called with player==null");
} else {
player.sendMessage(Message.raw("===== CRATE REWARDS ====="));
player.sendMessage(Message.raw(n + "x " +));
player.sendInventory();
}```
yeah i keep tripping over that difference because of the duplicate naming
have a look in ItemStack
oh never mind that doesnt allow you to add or remove anything
you put me on the right track, i found "addItemStack" under getinventory
hi how can i import right things i cant find eventsubscriber
hey everyone ! when iam transfering my world to another server do i lose my characters ?
does onEntityAdded within a component automatically hook into the event system or does it require set up?
@wild umbra thanks i got the first attempt on a crate plugin working (chat output of all items and randomized item count), now i gotta find out how i can safe a custom lootpool
whoops wrong ping i mean @broken dragon
that is just a drop_ JSON which is referencd in the asset editor for the entity
unless you want somethning more comples than just a max min and weighted items
weighted should do fine for now
something like a zero tolerance feature or losing streak breaker to avoid player frustration
but i dont actually have an entity yet, just a command triggering it
better off starting with the item in the asset editor since thats the easier part
what do you mean by refer?
hmmmm
let me check my current server's folder
yeah is the folder players enough?
i did transfer my world
yeap yeap
thank you
hay guys, i need help i was trying to run my own server on my own pc but i am having some issues, after i've created start.bat my cmd despairs immediately, i've got logs but i don't know how to make any thing out of them.
if i have changed my worlds name does it matter?
well it supposed to look like this right? "java -jar HytaleServer.jar --assets Assets.zip"
so it does not have any connection with the players right?
your start.bat was diftent but the outcome is the same, what exacly do you mean by cli?
you can send hytale.com links in here: https://support.hytale.com/hc/en-us/articles/45326769420827-Hytale-Server-Manual#server-setup
I am making a plugin that extends the echo command, where is the echo command located in the file structure?
hi
ty
does anyone have a snippet of how to get a block component and access its values please because all I'm getting from getComponent in BlockModule is a generic class
right the whole problem was that for some reason windows hasn't extracted my version file properly and it was completely empty, i did what you said again and it worked, thanks 🙂
can you lads tell me if that ready start.bat has turned on backup? there is something in there but i dont see any path info around it and wonder if it is what i think it is
ok thanks that that just saves it in the same folder? does "--backup-dir backups" servs the role of path in here?
thanks again young man
Are there any easy quick properties you can tweek in intellij och the gradle project to get quicker startup in debug.
I like breakpoints when i want to make sure whats actually going wrong.
But in release it takes 1.6 second to start up the server, looking at the log info when starting up in debug it took 6 miniutes 17 seconds.
guys is playerRef.getUsername() same as displayName?
Are there any guides that show how to create vendor NPCs?
I meant official ones, did Hytale release anything yet regarding documentation?
DisplayName is the name used when sending messages, the name to display. When coming to a userref its the username.
Is there anyway to change the name in game, without registering another name?
And when i say user name, i don't mean what ever you use to login, but the name you registered when you bought the game.
Does it mean you can change ur displayname ingame?
So as far as I understand there is a Hytale Account Id. Then for each game profile associated to the account you have a different id and username.
But i dont see any place where to customize the displayname, so I guess username = displayname, at least for now? Or is there any functionality that allows you to change the displayname?
ok i think i've set every thing up, but i dont know i am trying to test it and i can't connect to my server by my ip address, only by "localhost" is this normal? will others be able to join me (ofc i've port forwarded my shift and all)
ok thanks for the last time i hope XD ♥️ but i swer it whould have been easer to go fist fight my internet provider than port for on this dog s***t of a router
is it possible to change particles by code?
hmm ty I will continue my investigation as well
hello still quite new to the whole modding thing, when deleting a chunk lets say -2,-11 , i just have to look for the -2,-11 region.bin right? or is that different?
guys
does anyone know what might be causing this error:
[2026/02/12 18:36:31 SEVERE] [ChunkStore] Took too long to pre-load process chunk: 34ms 440us 200ns > TICK_STEP, Has GC Run: true, WorldChunk{x=-10, z=-4, flags=00000000000000000000000000000100}
[2026/02/12 18:36:31 SEVERE] [World|default] Took too long to run pre-load process hook for chunk: 43ms 487us 800ns > TICK_STEP, WorldChunk{x=-9, z=-5, flags=00000000000000000000000000000100}, Hook: com.hypixel.hytale.server.core.modules.block.BlockModule$$Lambda/0x00000000a6a477f0@22349ad3
[2026/02/12 18:36:31 SEVERE] [ChunkStore] Took too long to pre-load process chunk: 35ms 253us 600ns > TICK_STEP, Has GC Run: false, WorldChunk{x=-14, z=3, flags=00000000000000000000000000000100}
(context: using a simpleinstantinteraction upon clicking an item (the item is a block) i send a message containing the players display name, when i change the message to be the held item id the error disappears)
omg. there's chunk components AND entity components. and blocks can use BOTH?! no wonder this wasn't working for me
what does that mean 😅
i took this code snippet from the documentation
and modified it
the chunk and chunk component is probably for when its part of a chunk and renders as part of other blocks in the chunk in the world.
the entity component is probably for when its realted to your inventory, an item in the world or in your hand.
but could be wrong
yeah I got that, but internally using Player.getDisplayname() still returns the default username() right? So you basically cant customize it, you would need to attach a component and replace display name in every place where it could be shown
I wonder if its possible to replace the displayname from chat
A component is just set of data that you slap on something to be used by a system. Most entities have many components. A block needs to hold data for a variety of purposes, and thus needs numerous components for these purposes.
Seeds do apparently not have their own resource type. Is there a way to add it later on?
yeah, basically player class has this:
public String getDisplayName() {
return this.playerRef.getUsername();
}
there is even a DisplayNameComponent, which is related to messages
But yeah, my question was mainly about default game functionality, to make sure u couldnt customize the displayname somehow rn, other than with plugins
what you talking about ?
Plant_seeds_carrot.json
I mean a ResourceTypeId located under Server/Item/ResourceTypes. There are dozens of different types (i.e. Rock.json for "Any Rock"). I wanted to make a recipe with "Any Seed" and saw this doesn't exist
How to make it so that in the JSON file created by the plugin, there are consecutive parameters under one name, as shown in the example here.
"Provider": {
"Enabled": true,
"UseLuckPerms": false,
"DefaultDenyWhenUnavailable": false
},```
Is this a list or what?
Is there anything that speaks against using config files as like a database thing? To for example persist data between startups like user data or other things?
Only thing that comes to my mind would be that other plugins cant access that? I suppose?
Instead of using it, you can use a custom Player Component. It's a better solution.
Yea thats what im trying to figure out what the difference is to safe it as a component on the player or globally
For example lets say an auction house. I would assume listed items would be safed globally not on the user no ?
Each player stores this in their data, and there is no need to create unnecessary JSON files that may repeat the same thing over and over again when loading the server or adding another player, and check which file belongs to that player.
Ah i see that clarifies something! What would be the approach for an Auction House like global shop
In this case, it is better to save it globally because you load one file instead of many, and it is the same for every player.
What would be the approach? Like an actual external database ? Or is there a way to safe something globally for the universe?
although I would destroy a regular database, e.g., SQL
It seems to me that if you do this on a Json or SQL file, once you set it to load data from that file or database each time, it will be saved for the entire universe, but if there are a lot of offers, in my opinion, an SQL database is better, but it depends on your approach.
where / how would you safe it globally? One thing that would come to my mind would be to for example safe a component on each player with listetItems and when opening the auction house we go through all player listed items. But im not sure if thats the right thing
I would do it this way: I would create a database and simply load it from the database after opening the UI. For example, if the first page has 100 entries, it would load the first 100 entries from the database, so that if there were 5,000 records in the database, they would not be loaded all at once.
Nameplate is the text you see below the character
and by database you mean actually an external databse like mongodb or something?
because when i would release the plugin wouldnt it be hard
i think it needs to be local no ?
Anyone have a good lib or systems to use particles/projectiles etc in hytale?
I really /dont/ wanna use the asset editor
It could be MongoDB or something like that, and from what I've seen other modders use databases, and it's possible to do it so that the person uploading the mod doesn't have to create any databases or anything for it to be created on its own, you just have to search the internet well, I'm sure it's possible, I know that CoreProtect, for example, uses some kind of database where it creates itself and you don't have to As a user of this plugin, you don't need to create any databases for it to work. Just download CoreProtect from curseforge, decompile it, and see how they did it.
There is a program created by cyberAxe that is used to create particles, but it is still in the beta phase.
It is called VFXtale.
wat
Sorry, that's not right. Now you have what I wrote, now you'll understand.
can i alway load a world when the server starts and keep it loaded like the default one? or how to i load all chunks from a world with a x/z boundary?
does anyone know if the Defense on the tab menu ONLY Shows the Phys resist and no others?
eventBuilder.addEventBinding(CustomUIEventBindingType.ValueChanged, "#ScaleInput #Input", EventData.of("@Scale", "#ScaleInput #Input.Value"), false);
I found in UIs eventBinding like this.
I believe it put the value from the field to the data.
But when I try to do similar thing, I just get a text "#ScaleInput #Input.Value"...
It requires any config or specific use?
literally going to scream here.
public <T extends Component<ChunkStore>> T getComponent(int index, @Nonnull ComponentType<ChunkStore, T> componentType)
WHICH index does it want because I STILL haven't managed to find how to get a component from within a block. multiple classes have getIndex. ComponentType. Worldchunks. Blockchunks. I.m about to ThrowChunks.
I believe you working with "ArchetypeChunk<ChunkStore>". Didn't you get the index in the method, that gives you this architype?
honestly dont know at this point. everyone seems to have different ways of getting components from entities and it all seems to depend upon what the entity is and what the componenttype is
i came up with this
int blockIndex = ChunkUtil.indexBlockInColumn(targetBlock.x, targetBlock.y, targetBlock.z);
and since most getIndex return long but this utility returns int. and the chunkcomponent version of getComponent requires an int index. I'm hoping this works
i feel sorry for the guys at hypixel who need to untangle this spaghetti
if i figure out an end to end way to go from interaction to block componet I'll post some snippets y'all and copy as a reference
actually i'll do it on my X/Twiiter. easier to find in future then
So i just checked, I could create a withConfig json which contains the data since the config is globally for the server. I dont think all clients have that or am i wrong here ? For example i could just create an auctionHouseData which would be safed like a config and whenever a user adds an item i just expand it or remove the item so all other players can see it
So i could use that like a database no ?
huh didn't expect that. I appear on google now
i guess the analytical footprint was large enough to be picked up
Is there a ui element that allows me to drag items from inventory to my custom page?
right i qut for the day if anyone can explain why this doesn't work please reply
int blockIndex = ChunkUtil.indexBlockInColumn(targetBlock.x, targetBlock.y, targetBlock.z);
assert worldChunkComponent.getBlockComponentChunk() != null;
MyComponent myComponent = (MyComponent) worldChunkComponent.getBlockComponentChunk().getComponent(blockIndex, ModMain.getMyComponentType());
if(myComponent == null)
{
player.sendMessage(Message.raw("ERROR: null myComponent"));
return;
}
basically I the message never fires and the method continues as if none of this ever happened and completes successfully.
do you have accesss to player
like if you replace the player.sendmessage with a log output do you get that
there's npc names list?
yeah access to messaging is fine. theres other debugging messages in this method which come later and work fine
the issue is that although the interaction recognises the blacktyoe, the transform data and the helditem it just cannot detect what components are within a block
Sometimes while joining to the server, players get this error: "We have not received the asset type of translations." This happens sometimes and trying to rejoin to the server for a few times it fixes. Do someone know why this happens and how to fix it?
the problem is that when i look around i see some suggesting BlockModule.getComponent, others EntityStore, others BlockChunk.
tried them all today over the last 4 hours. no results or incompatible ComponentType errors.
Any ETA when we will be able to configurate custom names, lores to items?
Entity store if the item is a object in the world and not part of the terrain, when its part of the terrain it is part of block chunks. The component splitting i think mainly so blocks close to each other more quickly can get access to information. So it probably depends on what layer the component is added to the block. Perhaps, maybe, not sure.
odds are i need to switch back to ChunkEntity again then although its giving my problems too due so this
<ChunkEntity, T>
issue with it not being compatible with ComponentType.
Hi everyone, I have a PvP arena plugin, and if a player starts hitting the air or any entity before entering the arena, the game crashes.
It throws the following exception. Does anyone have any idea what might be causing this error?
2026-02-12 20:43:08.0637|DEBUG|HytaleClient.Application.Program|Telemetry packet sent: event (seq: 7)
2026-02-12 20:43:08.7265|ERROR|HytaleClient.Application.Program|System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at HytaleClient!<BaseAddress>+0xa9b14b
at HytaleClient!<BaseAddress>+0x3dfd83
at HytaleClient!<BaseAddress>+0x3f62f8
at HytaleClient!<BaseAddress>+0x55703a
at HytaleClient!<BaseAddress>+0x3cabaf
at HytaleClient!<BaseAddress>+0x3cad5d
at HytaleClient!<BaseAddress>+0x3c8f2f
at HytaleClient!<BaseAddress>+0x3c7bfa
at HytaleClient!<BaseAddress>+0x3c7a84
at HytaleClient!<BaseAddress>+0x3c6dc6
at HytaleClient!<BaseAddress>+0x3c6519
at HytaleClient!<BaseAddress>+0x2e976b
at HytaleClient!<BaseAddress>+0x2ea038
at HytaleClient!<BaseAddress>+0x6409e1
at HytaleClient!<BaseAddress>+0x63baf0
at HytaleClient!<BaseAddress>+0x653747
at HytaleClient!<BaseAddress>+0x6532ec
Anymore info we can get?
No, that's all.
What I can add is that it happens during an "arena transfer" when it starts applying inventory changes, and if it's done a few milliseconds before the programmatic teleport is called.
Oh. You may need an await or a check for verification the person your operating on exists. Since your getting an out of range error, its likely who your trying to operate on is non existsnt?
But you state its when their hitting air. So it could also be the player is being augmented and that argumentation isnt real.
(Good luck deciphering my thought process. :D)
Help me, please
I can´t host my server for an error 0x80072743
i'll wait for their answers.
Anymore info?
Is that an error code? memory address? Whatever else it could be? What did you do? What are you doing? OS? Docker? Phase at which your in?
someone can help me with server issue?
Maybe! That depends on if you tell us what you need help with besides it being a server issue.
026/02/13 00:42:58 error printing version: error fetching server manifest: could not get signed URL for manifest: could not get signed URL: Get "https://account-data.hytale.com/game-assets/version/release.json": oauth2: "invalid_grant" "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client. The refresh token is malformed or not valid."
New update available, downloading version ...
2026/02/13 00:42:59 error fetching manifest: could not get signed URL for manifest: could not get signed URL: Get "https://account-data.hytale.com/game-assets/version/release.json": oauth2: "invalid_grant" "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client. The refresh token is malformed or not valid."
container@pterodactyl~ Server marked as offline...
[Pterodactyl Daemon]: ---------- Detected server process in a crashed state! ----------
[Pterodactyl Daemon]: Exit code: 1
[Pterodactyl Daemon]: Out of memory: false
[Pterodactyl Daemon]: Aborting automatic restart, last crash occurred less than 60 seconds ago.
Your Oauth is falling is looks to be. What stage are you at? Egg?
I was live 2 days. After i wanted to swith to pre release this happened
CLI Downloader? Did it fail to download the new pre release version perhaps?
it downloader it. But when i started it server crashed. after that it didnt start. I tried reinstall everything. I alreay accepted to lose the world but now i cant even startup
for me its no problem to complete reset i only tried server test and testing the game.
Hmmm. Somebody else who may have more pterodactyl experience maybe able to assist if they see this. But I lack the info.
I would try running through AI and see if ya get something useful out of it.
how do you log to console, the plugin logger doesnt seem to have any method to send, only methods to check what the logger level is set to etc
first set the level, then .log()
yeah found it, not sure why its hidden behind levels
When I create a "handle" for my event, it tends to be a "void" method. Question: Is using "return" within that handle the same as letting the event occur if no condition is met?
So you can easily set the level of each log line
return then only means "end the method here" and nothing more. If your method completes with or without return has the same effect
what egg are you using? I had this last night, I switched from pre-release to release and back again using the egg. or vice versa, depending on what version you want
Has anyone figured out how to draw like a beam of particles between two points? It doesn't seem like there's a good way of doing that yet
how do you add optional dependencies?
Hi everyone, does anyone have examples of scoreboards using .ui so I can learn how to make good UIs?
Hey! I came across something weird. for some reason setting the uuid like this for a world:
var loadingWorld = InstanceManager.CreateInstance(templateName, worldName, defaultWorld, playerRef.getTransform());
if (loadingWorld == null) return;
loadingWorld.thenAccept((world) -> {
TryCatch.Try(() -> {
var worldConfig = world.getWorldConfig();
worldConfig.setDeleteOnRemove(false);
worldConfig.setUuid(worldId);
Logger.Info("HideoutManager - CreateHideout - Set UUID TO: " + worldId.toString());
InstanceWorldConfig instanceConfig = InstanceWorldConfig.ensureAndGet(worldConfig);
instanceConfig.setRemovalConditions();
});
});
The uuid only is set after the server restarts any idea why? Do i have to call something to make it apply the changes or something ?
Also is it ok to call Join() to wait for a future ? Or is that bad practise? For example when a playeruses a command that spawns a world is it ok if i call join in that thing or no ?
Hey, how do i find the chunks that contains inside the region.bin? thanks!!
Any IntelliJ users?
How can I hot reload my plugin without restarting the server?
jeje
hello 😄
is there a way to decide if my event goes first or last?
you can set EventPriority
Why can I pass through some parts of a hitbox but not others?
build it, upload it to the mods folder (replace the old build), then run /plugin reload <group>:<name>
if /plugin reload says it failed to reload it, you're forced to restart the server.
safest way is first /plugin unload, then (IMPORTANT) delete the old .jar from the mods folder, then upload the new one, then /plugin load it
do not just replace it as sometimes it just breaks the reload thing
hi, have you figured out how to get rarity from Item?
If you call join, you're blocking the current thread to wait for the future to complete. Since each world runs on a thread, you'd stop the whole world if you block it. Futures are usually handled with the callbacks instead, such as thenAccept, thenRun, etc. (which is what you already have in the code block above)
Unless your code absolutely can't function without the result of the future like authentication via some http call, there's not much reason to await the result of a future.
Also, you don't need a TryCatch.Try thing, you can just add another callback for the exceptional return case with .exceptionally()
I don’t think there’s true hotswap yet a lot of stuff will require you to restart
Ohh ok Thanks!
I'm making a box pvp server in hytale (like in minecraft) and I'm looking for someone who is experienced i offer you a co-owner position and we can split the profits of the server
Hey guys, I'm setting the players known recipes with getPlayerConfigData().setKnownRecipes(Recipe.base.keySet()); and I can see its setting it correctly when I print out the recipe list but its not updating in game. Maybe there is something special I need to do? public void setKnownRecipes(@Nonnull Set<String> knownRecipes) { this.knownRecipes = knownRecipes; this.unmodifiableKnownRecipes = Collections.unmodifiableSet(knownRecipes); this.markChanged(); }
is there a way to add an ItemStack to a players inventory and make it stack with already present items? e.g. if a player has 20 dirt in his inventory and I add another 45, it should increase the stack to 65 instead of creating another of size 45
need to look into this again
actually my program already stacks it it just ignores hotbar
thats even more surprising lol
does getStorage excluded the hotbar
you'll want to use getCombinedHotbarFirst for storage + hotbar
or vice-versa if you want storage first
have you tried to see if using learnRecipe makes a difference?
Since that have a sendknown recipies that will trigger and update on the player.
The one you are calling is essentially making sure that the recipe is saved, but the client is never informed about the change i think.
ya I think so too. I found an UpdateKnownRecipes class that I will try to use. What is the difference between Protocol and ItemConfig? There is CraftingRecipe protocol class and CraftingRecipe item config class. very confusing
dose anyone know how i can go to my creative HUb in a server?
where can i find server links
item config defines how it should read from its json file, what values is assigned from what field using the codec.
protocol is how the server code talks to the game client.
Next version there will be a button on the world map, but in the mean time you can /tp world <world>
` public static void Warp(Player p)
{
// grab player references
Ref<EntityStore> ref = p.getReference();
assert ref != null;
Store<EntityStore> store = ref.getStore();
PlayerData data = store.getComponent(p.getReference(), PlayerData.component);
assert data != null;
// set the known recipes to base
p.getPlayerConfigData().setKnownRecipes(Recipe.base.keySet());
CraftingPlugin.sendKnownRecipes(ref, store);`
I think that should work but its not. I guess I'm not getting the Ref<EntityStore> or Store<EntityStore> correctly
whats Recipe in
Recipe.base.keySet()```
Its a hashmap, Map<String, Recipe>, I believe its setting correctly because I can print it out and it lists the recipe IDs
I'ma go to bed lol, night night
Has anyone found a fix for asset loading issue, that armor, weapons load game base stats not the ones overriden in asset?
Or does anyone knows how to contact devs. Seems like this is game breaking bug affecting all the mods loading assets.
em.. sorry if I say something basic, but how do you set water from these IDs? I dont see a .set version of any of these methods ;o.o
thanks mate
got it fully working now, randomized weighted crate system done. now i gotta read myself into how to use the codec to safe and read crate lootpool data
havent looked into mounting yet but can you listen for an dismounting event and maybe overwrite the dismounting with smth else?
the PlaceFluidInteraction does it like this:
// get fluid from id
int fluidIndex = Fluid.getFluidIdOrUnknown("Water_Source", "Unknown fluid: %s", "Water_Source");
Fluid fluid = Fluid.getAssetMap().getAsset(fluidIndex);
if (fluid == null) return;
// get target location from chunkstore
var target = new Vector3i(0,0,0);
var chunkStore = world.getChunkStore().getStore();
Ref<ChunkStore> section = world.getChunkStore().getChunkSectionReference(
ChunkUtil.chunkCoordinate(target.x),
ChunkUtil.chunkCoordinate(target.y),
ChunkUtil.chunkCoordinate(target.z)
);
if (section == null) return;
// get fluidsection component
FluidSection fluidSectionComponent = chunkStore.getComponent(section, FluidSection.getComponentType());
if (fluidSectionComponent == null) return;
// set the fluid
fluidSectionComponent.setFluid(target.x, target.y, target.z, fluid, (byte)fluid.getMaxFluidLevel());
// mark the chunk as ticking (probably so it starts flowing)
Ref<ChunkStore> chunkColumn = world.getChunkStore().getChunkReference(ChunkUtil.indexChunkFromBlock(target.x, target.z));
if (chunkColumn != null) {
BlockChunk blockChunkComponent = chunkStore.getComponent(chunkColumn, BlockChunk.getComponentType());
blockChunkComponent.setTicking(target.x, target.y, target.z, true);
}
Note how this uses the ChunkStore system rather than the deprecated methods on the WorldChunk class
Hello can someone help me ? I did the last update of hytale but when i start my server with hostinger i can't connect? How to see the update of Hytale on Hostinger or how to fix the problem please?
What's the error? Do you need to reauthenticate?
can't send screen here sadly
In the game nothing, just connecting while 5minutes and failed to connexion to the server but in the logs of the server idk how to see it
That's why it might be the update which is not the same than the server
because its the once thing that change with last time i connect to it
@west elk
If you can't access the server's console/logs, everything is speculation
my speculation based on your message is that the server is off or doesn't accept connections
i can access but i don't know where
try Hostinger support
Is it possible to time how long the titles display for? It seems to default to 5 seconds no matter what I try. I'm wondering if anyone knows if this is change-able or not.
Also another question, how do you play a sound specifically to one player? And is there a list of available sounds anywhere at all that we can play around with?
ah its good i see the deployment log
yes. duration, fade-in, and fade-out can all be configured:
EventTitleUtil.showEventTitleToPlayer(
playerRef,
Message.translation(toast.title),
Message.translation(toast.subtitle),
true, null, // icons are not implemented yet?
toast.timings.duration, toast.timings.fadeIn, toast.timings.fadeOut
);
is it deployment log ? @west elk
I was making a count-down from 10 -> 0, and it legit took 50 seconds for that countdown to finish it was driving me crazy.
I don't know what that means. I haven't used Hostinger
@west elk can you accept friendly request
No. I'm not Hostinger support
its not for that
i have the message of error but i don't know what is it and the discord don't allow me to send here
ah its good i launcher the previous version and that's work
but idk how to update my server version
You have to ask your server host for that information. For self-hosted servers, you can find documentation here: https://support.hytale.com/hc/en-us/articles/45326769420827-Hytale-Server-Manual
ok ty
hey Im working on the camera in hytale and I want to have two modes one with a cursor and one without
thing is if I change from the default settings to the cursor one it shows the cursor and does what it suppose to do (same as with the other one it does what it suppose to do) but If I change from the custom view to a new custom view it applies all changes except the cursor I tried debugging it and the packet im creating but i dont see a problem with the ServerCameraSettings object
guys, is it possible to change particle of the model runtime?
what model, change how, in what way do you mean runtime?
A plain model doesn't have a particle system. So what does the particle system belong to?
There should be plenty of ways to change something in the game for something else in the game, given one knows what one is changing, what exactly are you wondering if you can change?
Regarding runtime, while the game is running, in the middle of the particle system running? Change how, the system for another, change the particles in a defined particle system?
I'll answer a little bit later, I'm not at home now)
Sure thing, just consider that the more specific you are the easier people can help you. If you have a specific item as an example or where there currently is a particle effect, it helps people help you.
Has someone figured out how to permantly boost the players movement speed? I tried to find the spot where the creative menu gives you the "move speed" factor option, but no luck so far
I know i tried to help with something similar. The problem being that there are a lot of things that modify your movement speed etc, so figuring out exactly what is responsible for the base speed of the player character was not that easy. The thing i considered next when figuring this out, is the dog transmutation potion, since your speed increase when transmuted, somewhere it sets "some value" at least. Figuring out what that "some value" is would probably help.
But i haven't had time to dig deeper at the moment.
i need to play the game (even) more 😄 Played at release for a while, but I often think there are still many areas I haven't seen 😄
anyone know why when i load my prefab, all the blocks are correctly loaded but the getMin and getMax function i use to get the size of the prefab are both 0, 0, 0
how do i trigger on chunk view? xd
I don't think it adjusts your movement speed, I think it really only changes your model. There is only a "Change Model" effect in the potion. So I will try to find where creative mode settings are applied and if that's moddable
Many players on my server are reporting there's not enough mobs spawning. I know there's a Mob Density plugin but I seen it hasn't been updated in a while so not sure if I should use that. Any other advice?
Look into the mod Spawn Control
I am trying to setup codecs for my lootcrate plugin, but I am not able to figure out how to use a already setup custom codec in another one. Specifically, I have:
private int maxWeight;
private List<LootItem> items;
public static final BuilderCodec<RarityTier> CODEC = BuilderCodec.builder(RarityTier.class, RarityTier::new)
.append(
new KeyedCodec<Integer>("RarityTierMaxWeight", Codec.INTEGER),
(rarityTier, maxWeight) -> rarityTier.maxWeight = maxWeight,
(rarityTier) -> rarityTier.maxWeight
)
.add()
.append(
new KeyedCodec<List<LootItem>>("LoottableItemList", Codec.?????)
)
.add()
.build();
}```
LootItem looks the following:
private String name;
private int rollWeight;
private int unitWeight;
private int minAmount;
private int maxAmount;
public static final BuilderCodec<LootItem> CODEC = BuilderCodec.builder(LootItem.class, LootItem::new)
.append(
new KeyedCodec<String>("LootItemName", Codec.STRING),
(lootItem, value) -> lootItem.name = value,
(lootItem) -> lootItem.name
)
.addValidator(Validators.nonEmptyString())
.add()
.append(
new KeyedCodec<Integer>("RollWeight", Codec.INTEGER),
(lootItem, rollWeight) -> lootItem.rollWeight = rollWeight,
(lootItem) -> lootItem.rollWeight
)
.addValidator(Validators.greaterThan(0))
.add()
.append(
new KeyedCodec<Integer>("UnitWeight", Codec.INTEGER),
(lootItem, unitWeight) -> lootItem.unitWeight = unitWeight,
(lootItem) -> lootItem.unitWeight
)
.addValidator(Validators.greaterThan(0))
.add()
.append(
new KeyedCodec<Integer>("LootItemMinAmount", Codec.INTEGER),
(lootItem, minAmount) -> lootItem.minAmount = minAmount,
(lootItem) -> lootItem.minAmount
)
.addValidator(Validators.greaterThan(0))
.add()
.append(
new KeyedCodec<Integer>("LootItemMaxAmount", Codec.INTEGER),
(lootItem, maxAmount) -> lootItem.maxAmount = maxAmount,
(lootItem) -> lootItem.maxAmount
)
.addValidator(Validators.greaterThan(0))
.add()
.build();
}
no clue
has anyone here messed with mounts and know if it's possible to lock a player to a mount
new KeyedCodec<List<LootItem>>("LoottableItemList", LootItem.CODEC)
no wait, an array codec with the lootitem codec inside
guys I have a broken indestructible hitbox that can't be replaced by any block since I can just place blocks inside of it. how do I remove this thing?
From MemoriesPlugin.java
private static class RecordedMemories {
public static final BuilderCodec<MemoriesPlugin.RecordedMemories> CODEC = BuilderCodec.builder(
MemoriesPlugin.RecordedMemories.class, MemoriesPlugin.RecordedMemories::new
)
.append(new KeyedCodec<>("Memories", new ArrayCodec<>(Memory.CODEC, Memory[]::new)), (recordedMemories, memories) -> {
if (memories != null) {
Collections.addAll(recordedMemories.memories, memories);
}
}, recordedMemories -> recordedMemories.memories.toArray(Memory[]::new))
.add()
.build();
private final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
private final Set<Memory> memories = new HashSet<>();
private RecordedMemories() {
}
}
hello is it poissible to show a hologram only for a specific player?
Yes, via packet manipulation
that is exactly 44.78% of an answer
Doing code, there is 0% chance of any answer being 100%
how can i add a new flat world to the server whats the --gen XXX for that?
I'm currently creating a mod that overrides a bunch of the default branches (Branch_Corner, Branch_Long, Branch_Short) for all type of logs to make them craftable for decoration purposes. Is it possible that there could occur some kind of load order issues? When loading the world only a number of branches are appearing in the workbench and it's different ones every time. When changing any minor detail on any missing branch through the Asset Editor the recipe magicaly appears in the workbench again. It feels like the game is loading the vanilla branches after my mod has been initialized and thus overriding my modded items with their default behavior.
Is there a way to prevent this and only load my mod after all wood items have been initialized? From my understanding mods are always loaded after the base game has been initialized or am I wrong here?
thanks mate
is there any way to know which mod is causing my weapon workbench to turn into a pink/black block ?
From my understanding mods are always loaded after the base game has been initialized or am I wrong here?
I have no idea if you are wrong or not but! I do see here in the hytale modding site that there common null pointer exception error that gets fixed by defining hytale modules in your dependenies on that manifest.json so If i was gonna answer based of that. I think your assumption is false.
but I really don't know
I would link it too you but it get's blocked for advertisement 😅
Does your Workbench have any Crafting Categories with an Icon that is not located in Icons/CraftingCategories/?
Adding a Category and setting an Icon likeIcons/ItemsGenerated/Wood_Oak_Trunk.png for example as the category icon can cause your exact issue.
so you're saying this could be it ?
[2026/02/13 16:36:59 SEVERE] [AssetStore|BlockType] Failed to validate asset: Bench_Weapon, null, Failed to validate asset!
Id: Bench_Weapon
Key: Bench.Categories.5.Icon
Results:
FAIL: Common Asset 'Icons/CraftingCategories/Armory/Staff.png' doesn't exist!```
Yes. Missing or incompatible icons have caused this issue for me in the past.
how can i scale an spawned NPC in it size so its getting bigger over time?
seeing how i have absolutely never modded anything and this mod seems to be 22 days outdated with no signs of updates, would you mind guiding me to where i could change this ?
the mod is a .zip
i think i got it! the mod really doesn't work anymore but at least i can use my bench again
Is there a way to get Mouse press/release/position inside UI?
MouseInteraction packet is not sended on standart camera and i dont want to modify it to Custom just to listen for mouse and prevent switching from first person to third and possibly conflict with other mods
Hi everyone, how can I make the action of opening a specific chest (by its ID) be blocked/canceled until a certain condition is met?
If a player is dead and the respawn screen is displayed, would PlayerRef.isValid() return false?
how do I change the default spawn location for the players? I don't see any coordinates in the world's config. I made a custom /spawn command so it overrides the current one and can't use the default command 😂
there is already a command to do that, i think it is in /gamerule
Search for it in commands menu
from what I know it should be /spawn --set but I wanted to do it directly from the world config
but I can't find anything, so I guess that I have to stop my server and disable my plugin to do that
./world config setspawn also does it
Cant you just look inside this command's code and set it or use CommandManager and just execute setspawn command as console?
Or you are trying to set world spawn while creating it?
ok, this works! I just wanted to set the spawn for new players but I changed my command /spawn to make multiple type of spawns and the Hytale one gets overrided
can you help me again, i now have nearly the entirely same setup as the memoriesplugin but i still get an error warning underline at "(rarityTier.items, lootItems) in the collections.addAll brackets
private int maxWeight;
private final Set<LootItem> items = new HashSet<>();
public static final BuilderCodec<RarityTier> CODEC = BuilderCodec.builder(RarityTier.class, RarityTier::new)
.append(
new KeyedCodec<Integer>("RarityTierMaxWeight", Codec.INTEGER),
(rarityTier, maxWeight) -> rarityTier.maxWeight = maxWeight,
(rarityTier) -> rarityTier.maxWeight
)
.add()
.append(
new KeyedCodec<>("LoottableItems", new ArrayCodec<>(LootItem.CODEC, LootItem[]::new)),
(rarityTier, lootItems)->{
if (lootItems != null){
Collections.addAll(rarityTier.items, lootItems);
}
},
(rarityTier) -> rarityTier.items
)
.add()
.build();
}```
Could there be a case where items is null that you should check for, if its just a warning i mean.
I dont really understand the warning, it suggestest assigning a boolean to the coolections.addall
Cant Post screenshot sadly
okay i think i found th error, lootItems is a FieldType and not LootItem[], however there is no way to change that. If i double the getter it wierdly becomes a LootItem[]
i am fully confused now
Does anyone know if there's a way to remove the compass bar for all players?
Hi. Is it possible to access a players block selection (with the Selection Tool) programatically? For example in a player command?
what asset can i edit to add something to the starter temple?
Hey folks, first of all, nice to meet you all, I am Elfamir!
I have been loving Hytale and am tying to port an old MC datapack I developed, Solar Radiation, to be a full fledged Hytale plugin.
I am loving the existence of ECS, but am having some difficulties using it.
Could someone explain to me how I should add a custom component to entities (for now just players will do)?
I was able to do so through a command, but I would need it to be added when the player joind the world or is ready.
I tryed with a custom event, but can't figure out how to access the store to check and add components.
public class EntityReadyForRadComponentEvent {
public static void onPlayerReady(PlayerReadyEvent event) {
Player player = event.getPlayer();
player.sendMessage(Message.raw(player.getDisplayName() + " is ready for a radiation component"));
Ref<EntityStore> playerRef = event.getPlayerRef();
player.sendMessage(Message.raw("ref from event: " + playerRef.toString()));
// Add RadiationComponent if entity does not have it.
// HOW DO I GET ACCESS TO "store"?
}
}
you can do playerRef.getStore()
So im still kinda new to all this..
Iv noticed alot of mods on my server use / commands to get there UI up for players, i want to take that and make it so when a player rightclicks with an item it will open that UI screen, iv tried using "Type:" "OpenCustomUI" but cant seam to figure out how to connect that to the UI i want it to pull up
is what im trying to do actually possible
"UIAsset": "PetsPlus:UI/Custom/Pages/Pet_List.ui"```
For example this is how its set up in the Json
Hmm, CraftingPlugin.learnRecipe does not search for custom CraftingRecipe in asset editor. Only default recipes. 
is there syntax highlighting for .ui files in vs code or anything?
NVM found a mod that lets me pull from commands for interactions
Sorry for the late answer. I was a little busy. Can you send me the Post via dm if you still have it?
Hi, what event is related to opening chests?
No event, it's a "Change State" on the chest block coming from the "Use" interaction. You can check the asset to follow
Yes there is one officially from Hytale: marketplace visualstudio com/items?itemName=HypixelStudiosCanadaInc.vscode-hytaleui
has anyone managed to hide/show recipes with the playerconfig knownRecipes? Mine isn't working
heyy currently running a server on hosting, was about to sleep already but suddenly being pinged because of an issue, then i check that the "default world config could not be found" something like that. well it worked after i restarted the server but i wanna know what was the issue? i did not touch any of its configs though
Check if the main world thread crashed
then it would have disabled itself
crazy
may i know how i could prevent that from happening?
the error message will tell you
Hello, I have a question: is there a list of all the permissions in the game? I am creating a server and I am looking for what permissions a player needs, etc.
there's perm mods
oh okkk tyy
Hi, please add the missing storm skin to the game?
Wrong game? Wrong discord server
Ooh he's asking for someone to make a mod that makes Storm Leather obtainable in exploration mode
I thought he's talking about Marvel Rivals, lol
does anyone know this this returns a blockRef for crafting blocks and crops that haven't finished growing. but returns null for any other world block?
Ref<ChunkStore> blockRef = worldChunkComponent.getBlockComponentEntity(targetBlock.x, targetBlock.y, targetBlock.z);
anyone can help with why my world keeps unloading on my server every couple hours ?
You'd have to share the error message
got no clue where the error occurs
it just happens randomly every couple hours so i dont ever catch it
all log files are kept in the logs directory
do you know what I should be looking for ?
a stack trace hopefully
do you know what that literally looks like or part of it? So I can CTRL + F and share ?
not really. just scroll through it around the time the problem happened
you'll be able to tell quickly which messages are likely not part of the problem
ummmm not really looks all like a bunch of gibberish xD
i found the error but it wont let me send
in this chat
[2026/02/13 23:13:01 SEVERE] [Hytale] Exception in thread Thread[#3740,WorldThread - Spawn,5,InnocuousForkJoinWorkerThreadGroup]:
java.lang.IllegalStateException: Assert not in thread! Thread[#138,WorldThread - default,5,InnocuousForkJoinWorkerThreadGroup] but was in Thread[#3740,WorldThread - Spawn,5,InnocuousForkJoinWorkerThreadGroup]
at com.hypixel.hytale.component.Store.assertThread(Store.java:2306)
at com.hypixel.hytale.component.Store.getComponent(Store.java:1215)
at ThirdPartyPlugin//com.minimalpulse.combatlog.events.DeathDetectionSystem.tick(DeathDetectionSystem.java:37)
at com.hypixel.hytale.component.Store.tickInternal(Store.java:1930)
at com.hypixel.hytale.component.Store.tick(Store.java:1900)
at com.hypixel.hytale.server.core.universe.world.World.tick(World.java:406)
at com.hypixel.hytale.server.core.util.thread.TickingThread.run(TickingThread.java:89)
at java.base/java.lang.Thread.run(Thread.java:1474)
hey I have created an event which changes a component
and I have a system that suppose to detect that change but it doesnt
to change the component im using the function **store.replaceComponent **
and the query of the system is Archetype.of(<component type>);
does anyone know why it doesnt trigger the oncomponentset function?
It does change the component but it just doesnt trigger the system
Nice, that tells you that the MPCombatLog mod is responsible for the crash! You can ask them if they plan on fixing it
imma just delete the plugin XD - im sure theres another that won't do that
code??
this is the event handler
@Override
public void accept(ChangeCameraModeEvent event) {
if(!event.playerRef().isValid()) {
return;
}
TacticalCameraComponent newComponent = new TacticalCameraComponent(event.mode());
var store = event.playerRef().getStore();
var currentComponent = store.getComponent(event.playerRef(), TacticalCameraComponent.getComponentType());
if (currentComponent == null) {
return;
}
System.out.println("Replacing component");
System.out.println(currentComponent.getCurrentMode() == event.mode());
store.replaceComponent(event.playerRef(), TacticalCameraComponent.getComponentType(), newComponent);
}
this is the system
public class OnCameraChangeSystem extends RefChangeSystem<EntityStore, TacticalCameraComponent>{
@Override
public Query<EntityStore> getQuery() {
return Archetype.of(TacticalCameraComponent.getComponentType());
}
... irrelevent code
@Override
public void onComponentSet(@Nonnull Ref<EntityStore> ref, @Nullable TacticalCameraComponent oldAttachment, @Nonnull TacticalCameraComponent newAttachment,
@Nonnull Store<EntityStore> store, @Nonnull CommandBuffer<EntityStore> commandBuffer) {
System.out.println("oncomponentset");
ServerCameraSettings settings = CameraPacketBuilder.build(newAttachment.getCurrentMode());
PlayerRef playerRef = store.getComponent(ref, PlayerRef.getComponentType());
playerRef.getPacketHandler().writeNoCache(new SetServerCamera(ClientCameraView.Custom, false, null));
if(settings != null)
{
playerRef.getPacketHandler().writeNoCache(new SetServerCamera(ClientCameraView.Custom, false, settings));
}
}
}
where are you registering the system?
getEntityStoreRegistry().registerSystem(new OnCameraChangeSystem());
in the javaplugin setup
protected void setup() {
var registry = getEntityStoreRegistry();
registry.registerSystem(new OnPlayerJoinSystem());
registry.registerSystem(new OnCameraChangeSystem());
getEventRegistry().register(ChangeCameraModeEvent.class, new ChangeCameraModeHandler());
}
try with this
nope still doesnt work even after restarting the server
What's up with error printing version: error fetching server manifest: could not get signed URL for manifest: could not get signed URL
how your manifest looks like
this?
"Group": "Hytale",
"Name": "Hytale"
}
just restarted the server and won't boot anymore, nothing related it's outright error printing version: error fetching server manifest: could not get signed URL for manifest: could not get signed URL: Get "https://account-data.hytale.com/game-assets/version/release.json": oauth2: "invalid_grant" "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client. The refresh token is malformed or not valid." New update available, downloading version ... 2026/02/14 00:04:38 error fetching manifest: could not get signed URL for manifest: could not get signed URL: Get "https://account-data.hytale.com/game-assets/version/release.json": oauth2: "invalid_grant" "The provided authorization grant (e.g., authorization code, resource owner credentials) or refresh token is invalid, expired, revoked, does not match the redirection URI used in the authorization request, or was issued to another client. The refresh token is malformed or not valid."
you need to /auth
da hell is a signed url, this game has DRM everywhere D:
I can't do auth because this error happens before boot.
it's the very first thing that happens on execute, doesn't get to do any of the loading steps, first line is that error
yeah I think you need more fields
{
"Group": "",
"Name": "",
"Version": "1.0.0",
"Description": "",
"Authors": [
{
"Name": "ggeldar"
}
],
"Website": "",
"ServerVersion": "*",
"Dependencies": {},
"OptionalDependencies": {},
"DisabledByDefault": false,
"Main": "me.location.location",
"IncludesAssetPack": true
}
the error is talking about the hytale version manifest, not the plugin manifest
I have never touched that file I'm not sure why it now doesn't want to boot,
that doesn't work, I guess I'll have to find a way to re-install clean files?
as this is hytale's api stuff throwing the error hm
i can start my dev server without problem. try quickly running a separate server on your system
I'm guessing it's a network problem?
none the test server I had just up, restarted right now...
same error. Wait... is this an API ban or ...?
it's a dedicated machine hosted on datacenter, I am connecting to it fine
so you have the same problem on a server in a datacenter and on a server on your local machine?
I run 2 hytale servers on the same dedicated machine, the live one, the side test one for mods and all that jazz
I would try running a temp server on your computer right now to test if that one can authenticate correctly
then you'll know if it's a network problem or an account problem
is there a condition for interactions that can be applied so the "press [key] to interact" message doesn't show up if it doesn't pass (i.e. a creative/op only menu for a block)
Thank you!
it's an account issue. I can't run a local server....
What is this about?
does anybody know?
Oof. In that case, it's probably a question for https://support.hytale.com :(
so is this a ban? Doesn't make any sense --'
Can't run singleplayer... but can connect to servers. oof.
idk, I haven't seen something like this
just a warning to anyone encounting an issue with getting blockRef.
Ref<ChunkStore> blockRef = worldChunkComponent.getBlockComponentEntity(targetBlock.x, targetBlock.y, targetBlock.z);
blockRef will return NULL if the targetblock ONLY contains components from your plugin. In order to fix the issue you MUST include a native Hytale component such as the Farming component. I'm going to raise this as a bug report ticket.
How can I prevent players from picking up dropped items?
disconnect them from the server
Unfortunately I don't think that will work my use case haha
sigh giving up so easily....
Do you have any other ideas?
depends on the context. are you wanting them to not be able to pick up other peoples dropped items or ANY dropped items?
I dont want them to pickup any
could create a plugin that ticks continually to delete every item being dropped
Well, some players can pick them up, other players can't. I need to prevent spectators from picking up items
since hytale items are cooked with existing components that handle interactions you're in for a chore changing their behavior
I'm using a Postgres database to handle stuff but i'd be flagging player accounts as different roles and then building the logic around the roles
first thing I'd do is find out which of the existing entity components handle the pick up. then have a system remove that component from every spawned entity and replace it with your own version. you then add a UUID to each item to define how can and cannot pick it up
I have proxied the server boot and asked a staff to authenticate the device on his account. That at least brings the server back online.
This is legit wtf for me, have never ran into something like this
alternatively, add a UUID to every spawned item and eject them from a player inventory if the UUID doesnt match. they'd pick it up still but spit it out again.
open a support ticket and see what they say
yeah I did it'll take its time, if people who lost game access after buying are waiting for a week I imagine this is not quick