#server-plugins-read-only
1 messages · Page 101 of 1
Fair enough, I didnt mean it in an insulting way and I apologize if it came off as such
But alas, No Claude doesnt need to store the entirety of the codebase in its context window, It only needs to hold what you're asking it, It'll just go search the files for what it needs to know
I personally use Claude Sonnet 4.5 for this
But I must stress, DO NOT LET IT ACTUALLY WRITE THE CODE
Make sure to understand what its actually asking you to do
Unless you want to end up in a Spaghetti Kingdom
probably not using AI either 
I'm mostly just using it cause I'm not familiar with Java
I come from a land down under a JS/C++/Game Maker Language background
im doing my stuff in C right now, for the funsies
Yeah, I see colleagues falling into that when we get into code review.. I cry
If you have access to both servers, using symmetric encryption would probably be faster than using asymmetric encryption like private and public keys
But is faster, still secure?
Don't cry, they deserve it
Well if you manually edit a file with ssh and add the same key to both places I would say yes?
Their fault
I still have to review though..
I've been pinged on extremely nonsense approaches the AI has taken to way overcomplicate stuff
Yes because your plan isn't precise enough
Hello, how can I prevent a player from picking up thing that are on the ground ? I tried the InteractivelyPickupItemEvent, the DropItemEvent, and even tried removing the PickupItemComponent from the player but couldn't achieve it
You need to correctly design before, then after you figured what goes where you can pick a road and then you will see ai will not create a skyscraper when you ask it to build you a small window
idk, I just write stuff by hand, I find that letting ai do really anything leads to more pain than its worth
You could also have both servers access one db and that way they share information, but I would imagine that is even slower
But then I have to introduce a Middleman
there isnt anything insecure about symmetric encryption
I swear I read someone else asked this before and noswipez told them that they have to intercept the packet themselves, not so sure tho
beep boop
must've been the wind
yes it does sometimes generate more pain; but thats why designing *before will solve a major "why the f*ck i have a rust code inside my javascript eval" type of situations
good patterns, code conventions, atchitecture depending on your project also documenting HOW to actually create a components; like claude skills does avoid you that
Currently the Protocol works like this
- User on Server A goes through the Portal
- We serialize their inventory and send it to Server B
- Server B holds the serialized data and the players uuid in a Map
- Player is jumped to Server B
- Server B finds the Players inventory in the Map in the PlayerConnectedEvent
- Server B applies the Players inventory to the Player
- Server B Player now has their inventory from Server A
- If the Player logs out and then DIRECTLY CONNECTS BACK to Server A, Then we check if Server A is the Main Server, If it is since they didnt Server Jump back through the Portal, WE automatically kick them back to Server B
Currently this is the implementation for preventing Inventory Fraud
There's also a path I'm planning to take where instead of kicking back to Server B, We will just grab the Inventory from Server B if they didnt Server Jump back
If they server jump back, we basically go from Step 1 through Step 7 to sync the Inventory back to Server A
other than more attack surface it isnt yea
If I am trying to make commands and then i get this message
"The wrong number of required argument was specified. Expected: 0, actual 1:"
I get this is a problem with arguments but I can't find what I need to change in order to fix it.
Anyone have any advice to give?
maybe you already anwserd; but what are you trying to do ?
well the disadvantage being they would have to transfer the key via other means
Server Jumping Mod with Inventory Sync
So you can take your inventory between servers
well assuming they have access to both servers that problem solves itself
One such usecase we have is to have a Main Server World, and a PVP Server World 🙂
are you using a database ? or just take info from server and straight to the other one ?
Taking info from one server straight to the other
Yep there would be a config property to store the keys in some form
True, would complicate things for plugin users tho (if it is to be published), having to do config setups instead of just using public keys, but I guess the tradeoff is worth it lol
Well ideally you'd only be server jumping to servers (With this Mod) that
- Have this mod installed
- You've actually got permission to do so, Therefore you have the keys to make valid requests
I suggested a db but I guess they don't want external dependencies on other stuff
Hey does anyone if there is any fix to this Scoreboard glitch? I have a minigame in which there is a scoreboard but when players leave to lobby the scoreboard is still there, ```java
player.getHudManager().resetHud(ref);
Main reason is introducing a Middleman, Usually would result in additional real world costs :P, eg: Running a DB on AWS
i'll look into it, thanks
i mean; it doesn't have to be external sqlite can be used locally but this is hard to tell as i need to know the infra/setup
but alright
There is a plan to publish, But not any time soon, I want to ensure this whole protocl works flawlessly without much issue for Inventory Fraud
That's true, I think there have been a few mc plugins that automatically run a db server for you
Hey everyone! I have a question, I'm new to the asset editor! I moved my model and texture, but I have to reboot the server when I add it because I can't find it! Is that normal?
docker all the way baby
Though in that scenario, the DB would be running on the Main Server
And in that scenario why even run a DB when I could just HTTP Request against the Main Server to grab their Inventory anyway and send it back as JSON
That could work too yea, would be especially secure for the servver that is on that machine since they just talk to docker via the bridge without any external connections
Hytale is already handling storage of the Inventories, Why do we need an additional database
We can grab, Serialize and send it off
its all about tradeoff !
on hytale side you have little control
between last update and this one the return variable of getRespawnPosition() has changed to a CompleteableFuture<Transform>. how do i just get the transform out of it safely?
This is true, But I think for this usecase its fine
can someone please help me out for a moment and inv me, so I can send screenshots?
And requires minimal additional setup by the Users who will one day install the mod
yeah! also much easier to deploy
whataver floats your boat man
Treat your end users like they're just using computers for the first time
Right now my mod is literally just drag and drop into the server and off to the races 😛
I guess that's technically true xD
I dont think they would do that
seems like the chat system hasn’t been thought out that well. especially when multiple plugins want to adjust formatting. it just overwrites based on priority 🫤
They certianly wouldnt force you to reset thatd be dumb
quick question: do you currently just encrypt the inventory data and then decrypt it at the other server and nothing else?
a little birdie told me cooldowns were slower
Currently? Currently its just plain JSON Data
yurp
just the inventory object?
Inventory Object and Players UUID and Username
Anyone having issues with the gap node for props?
I don't see why the username is needed?
You're probably right, Its a bit redundant, But useful for the logs
Hey I know AddPlayerToWorldEvent fires when a player joins a world, but is there an equivalent that fires under normal circumstances when a player leaves a world?
My understanding is that DrainPlayerFromWorldEvent only fires when a player is forced off rather than through teleports/portals.
Or does drain player fire in that case too?
@opaque cape i'm wondering why not query directly the server
the server who receive the player will query the original server from where the player is
this mimicks a db kinda, if you see what i mean
wouldn't that be much easier to setup ?
I was told to maybe ask in here - I think I was running Better Maps and Explorer Map on my dedicated server. After the update the Map doesn't work at all. I guessed maybe a mod issue because of the update so I removed them. restarted of course but still no main map. Is there a way to reset something to get the main map working??
The reasoning here is, That maybe you dont want to grab the inventory from the Main Server while you're on the Sub Server
EG: In the scenario where you join a PVP Server with your Inventory, You go around get a bunch of stuff, You'll want to come back to the Main World with that?
If I dc and then later reconnect to go back to the PVP Server, I dont want all that to be overwritten with the Main Server inventory
I do see what you mean for the record
yea alright; you might wanna add a timestamp/transactionid so people cant intercept packets and resend them (idk how far you've thought it out)
Something to think about yeah
Timestamp and Transaction ID could be part of the Encrypted Data, So they cant spoof it
OKAY i found if u copy/paste a world into server/instances and remove some of the world data like the .bak files and create an instance.bson (config.json with some changes) u can effectively create an instance from a world
Cause theyd have to know the decryption key to be able to spoof it
And then I just keep a list of already spent Timestamps/Transaction IDs
Thats actually a good idea I didnt think about, Gonna make a git issue for that
you do have to keep both keys secret if you use asymmetric in that case; but symmetric is probably better as long as users have access to both the servers that will have transfers
What is a recommended Symmetric Encryption? in 2026
Hello, does anyone know if it is possible to change the font in the UI?
@opaque cape haha friend asked me to code a mod like this, now i just read what you have wrote 🔥
just AES-256
Is it something you're moving forward with? Do I need to secretly scope you out and disappear you? (jk)
Stream cipher based? XChacha20-Poly1305 and AES-256-SIV... then
I can't see any packet which would allow that
Would Salting also be valuable?
i mean, the authorative "server" follows the player
Survival → PVP: PVP pulls from Survival
PVP → Survival: Survival pulls from PVP
so ownership always moves to where the player goes.
much easier to track
nah no worry i work on a different thing, custom portals you can place in the world that lead to other worlds, so you dont have to use /tp command
the initialization vector for aes does the salting for you
Well thats kinda how it works now so long as you physically jump through the portal to jump back to the other server
your not using referral data, right?
At the moment I'm using the referral data to denote a SERVER_JUMP vs just a direct connection
as long as the referral data doesnt communicate anything important
If you Directly Connect back to the Main Server, Then currently we kick you back to your Last Connected Server
I will be adding a toggle to instead just Sync your inventory from the Last Connected Server though
Has anyone had any success rendering thumbnails of the NPCs? I'm struggling to get the UV mapping and shape right.
And there could be future enhancements to always contact the main server from any sub server to find out if their last connected server is different and update the inventory that way (Or kick back)
does anyone know of any plugin that will allow me to teleport a player back to spawn if they fall into the void
That sounds fairly simple to make, You should give it a go!
So glad that someone else is already doing that portal across servers thing, i can totally imagine how much effort that is.
It started very simple
yeah just like my custom portal thing
And then it quickly became a lot more, I can see why the existing server hop mods didnt do the inventory sync xD
I dont even think the plugin is that complex; its just all the considerations around the transfer and all the http stuff is annoying
Ironically this is my very first mod ever
its still an idea, some commands to tp to different worlds (on same server), now i manually added custom portal items, next step is coding an actual plugin
i got some experience with minecraft and craftbukkit (pre 2015), wrote 2 mods there, one was quite popular
all my ideas start relatively simple and before ive even done it i go oh i could add this and that and that and that and that; wait lets just make it work first
aye aye, sometimes good ideas also appear when you sit on the toilet ^^
and then somewhere along the way i usually lose interest or something new pops up that is more interesting and I jump ship
true
Does anyone have documentation on how to create an item in JSON? To avoid going through the publisher?
i have strikoo
It helps that a lot of the custom functionality you may want to do, Is already natively supported by the server in some form or another
honestly rn am at a point where I have to do more UI stuff after fighting with ui for 5 days; i mean what i have to do is pretty simple but I just hate ui as is rn. the ui files suck
Oh yeah I spent like 3 hours getting the UI to actually work yesterday
That was really annoying xD
I tried opening my page alongside ingame ui; cost me 5 days to find out its impossible
Claude didnt know how to write one also
took me like 2 hours to format correctly a ui with our server roadmap and some image buttons
I had to go find examples, And in the end of Just modified the example by hand
yeah its cus they made their own unique format
good thing theyre moving to noesis at some point
And there's no examples in the code x..x
hmm
There might be though actually tbf, Claude was just being stupid
the entire asset zip is filled with .ui files
(the entire game ui is probably in there)
just check Common/UI/Custom/
where tf do i put my prefabs on my server, so annoying
I just yoinked some of the ingame ui and modified it a little bit but now I have to actually make something myself and I am so not looking forward to that
maybe I should just go to bed lol
Hello, I am having trouble with a scoreboard bug. When players leave my minigame the scoreboard follows them to hub idk why here is my current code I have. ```@Override
public void apply() {
player.getHudManager().setCustomHud(playerRef, customHud);
}
@Override
public void detach() {
player.getHudManager().resetHud(playerRef);
}```
is anyone tackeling the ability to "crawl" through 1x1 tunnels for hidden rooms yet?
probably the wrong is in your hudmanager
wdym?
ah thats the standard, nothing, i mixed
Can I achieve in Hytale the same level of creativity that I had coding Minecraft plugins?
yes and no lol, like the api is the wild west and there are alot of bugs
Agreed, you can achieve even more than Minecraft plugins, but it's a lot harder to figure out how
im not talking about bugs but just overall potential
potential is insane
random shid go brrrr
They wrote it to be moddable, Minecraft wasn't written to be moddable
Asking again here: Hello, I am having trouble with a scoreboard bug. When players leave my minigame the scoreboard follows them to hub idk why here is my current code I have.
@Override
public void apply() {
player.getHudManager().setCustomHud(playerRef, customHud);
}
@Override
public void detach() {
player.getHudManager().resetHud(playerRef);
}
potential kinda crazy except some stuff is just impossible for no reason (like adding dynamic tooltips to items)
I did that last night but I had to get up early this morning so im kinda cooked atm
its all very new,
Forge was made a framework around minecraft while Hytale demands to use what they provide, which can cause some headaches at times
Hey guys i'm having an issue:
'Failed to start Hytale:
ArgumentException: '0.124' cannot be greater than 0.033358335'
0.124 is indeed greater than 0.03
the argumentexception disagrees
smart decision
i remember when coding minecraft plugins it annoyed me a lot when some things weren't moddable
but i will probably wait for the full game release to make my own server
btw can you make custom blocks and mobs in a plugin? (not mod) cause its frustrating that you cant do it in minecraft
There are only plugins on Hytale. Everything should be server side moddable
Is there a hytale library to code and make plugins and your server?
They don't support client side
we do a little troling
mod and plugin are kinda the same here; client isnt moddable so mod turns into just assets. Theres even a builtin asseteditor where you can copy ingame blocks and assets and edit their data
it is still unfinished but works pretty well already
there is no real "client side" since in singleplayer you still play on a server, a local one that is
like other games, the client is purely meant to render stuff and send input
in other words, mods can be used in servers without making them download any client or mod outside the game?
anyone understand the completeablefutures? i need to access the players respqwn position but it either hangs or crashes depending on what i do.
yeah
Do you have any plugins as an example because I want to make my own server?
thats a huge W
yes
Yeah, their idea was to make everything moddable from server side. So, you can do as much with Hytale plugins, as you could with Minecraft mods without having your user download anything
just figured out today how to create custom portals without the need to mod the client
...and portals are just items
yo anyone know how to detect the server closing to save any persistent data i need to?
what kind of data is it?
override shutdown() in your plugin class
override deez nuts haha gottem
general data, i wanna make some rougelike- like so i have to save a bunch of stats and stuff once the server closes
stats for the player?
more like jamming deez nuts haha gottem
that i already know i can do with components
YOU MEANIE 😭😭😭💔🫃
alright then yea shutdown is your answer
lotta people dont know components on the player are autosaved
hey quick refresher
addComponent is NOT persistent
putComponent is, it saved it automaticaaly
only when put <<<<!!!!
addComponent has persisted server restarts for iirc
wait no that was ensureAndGetComponent whoops
oh when i do persistent componenets i most use ensureComponent in the player ready event but good to know if i dont want every player to have it
not when i tested it, even with Ensure
might as well use putComponent as that point unless im missing some caviats
hey there someone has a found a way of loading textures dynamically in the UI pages ?(dynamic path, without reloading textures and replacing the image and sending the image to the client)
put overwrites existing components
ensureandget checks if it exists and returns it if it does or creates and returns
using ensure does infact save for me so 🤷♂️
you mean it wipes all other components?
no only the type youre putting on
but that destroys any saved data
for that component
oh then ensure makes more sense for the case of components basically always get apon joining
i mean if youre adding a component again, why wouldnt you
saves me a if statement to avoid overwriting an existing one
I mean tbh my version was a test to see if i could get player persistent data
so I just did ensureandget when opening my ui page to get the data
weird, i had no luck with that
@mods give this mf a timeout!
anyone having issues with the server downloader
I am using CDN with jar on it, no auth
Anybody here using Bazel?
About UI, anyone knows how to warp elements into scrolling? I mea, when an element of certain go down and enable scrolling to avoid been out of parent container.
New update has the necromancer book thing that summons friendly skeletons. Does anyone know where I should look to find out how that works in code? Or is it all in the asset editor?
Thanks btw @dusty venture Your suggestion to use a Timestamp and Transaction ID is something I am using as part of the Validation Process
guys please help i update my Server.jar in IDEA but now the code isnt registering its components anymore, that gradle sync buttons isnt present either what do i do
Best way to figure stuff out is actually unzipping Assets.zip and then text search through it to get clues how things play together
So good I finished developing my core server API that connects website, discord and hytale and everything is already integrated 😮 i can finally breath
Hey, does anyone has any idea why the client player "desyncs" with the server's? I've been trying to tp the player to another world the moment they died (or respawned) and I haven't solved why yet.
By desync I mean you can move in your client, but any interacting with the world crashes the client. Dropping items only drops them from the player's last location and rotation (that being the teleporter's component)
public void onComponentRemoved(
@Nonnull Ref<EntityStore> ref,
@Nonnull DeathComponent component,
@Nonnull Store<EntityStore> store,
@Nonnull CommandBuffer<EntityStore> commandBuffer
) {
super.onComponentRemoved(ref, component, store, commandBuffer);
Player player = commandBuffer.getComponent(ref, Player.getComponentType());
World targetWorld = Universe.get().getDefaultWorld();
Teleport tp = new Teleport(targetWorld, new Vector3d(0, 150, 0), new Vector3f(0, 0,0));
CompletableFuture.runAsync(()->{
commandBuffer.addComponent(ref, Teleport.getComponentType(), tp);
});
// player.getWorld().execute(()->{
// commandBuffer.addComponent(ref, Teleport.getComponentType(), tp);
// });
} ```
I put it on ComponentRemoved, because on ComponentAdded the server crashes trying to add the player to the world
Maybe it's got something to do with modifying the system dependency or group, I'm looking into it, but any help would be awesome.
Also trying to tp the player again anywhere will kick the player for "invalid teleportid"
An alternate way to tp the player when they die or respawn to another world would work too
guys do you know if there is a numerica input field for the UI?
@fluid coral How does one tie a storage container to your prefabbuilder mod, so that the mod draws resources from the chest?
any devs looking for work?
Yo! Could use some help here
I cant seem to get the player model to be set, trying to create a Race plugin and it just stalling out on me, no errors and I am using the example
commandBuffer.replaceComponent(
target,
ModelComponent.getComponentType(),
new ModelComponent(stoneModel));
So when i try to paste a prefab my server keep jumping up to 4GB/6GB used and then locking up to the point i need to restart it.. how do i fix that?
Anyone know why this is failing to run task?
SpleefEndGameChecker.run(world);
public class SpleefEndGameChecker {
private final World world;
// Constructor
public SpleefEndGameChecker(World world) {
this.world = world;
world.sendMessage(Message.parse("SpleefEndGameCheckerRuns0"));
}
/**
* Static helper so you can call:
* SpleefEndGameChecker.run(world);
*/
public static void run(World world) {
new SpleefEndGameChecker(world).run();
}
// Main logic
public void run() {
world.sendMessage(Message.parse("SpleefEndGameCheckerRuns1"));
var spleefPlayerManager = HelloPlugin.SpleefPlayerManager;
if (spleefPlayerManager == null) {
world.sendMessage(Message.parse("SpleefPlayerManager is null"));
return;
}
world.sendMessage(Message.parse("SpleefEndGameCheckerRuns2"));
for (PlayerRef playerRef : world.getPlayerRefs()) {
var reference = playerRef.getReference();
if (reference == null) {
continue;
}
Store store = reference.getStore();
Player player = (Player) store.getComponent(reference, Player.getComponentType());
if (player == null) {
continue;
}
String key = world.getName() + playerRef.getUsername();
Integer value = (Integer) spleefPlayerManager.get(key);
if (value == null) {
continue;
}
world.sendMessage(Message.raw(String.valueOf(value)));
if (value == 1) {
world.sendMessage(Message.parse("GAME ENDED"));
return;
}
}
}
}
hey does anyone know where I can find the hytale docs is it in like a src dir somewhere?
I'm trying to play an animation from a packetfilter function but nothing is playing. I put the SCHEDULED_EXECUTOR part to try to fix the thread assertion error.
I have tried running the same playAnimationfunction through a command and it works fine.
//... inside packet filter function
if (mouseButton.state == MouseButtonState.Pressed) {
switch (mouseButton.mouseButtonType) {
case MouseButtonType.Left -> {
Ref<EntityStore> ref = Objects.requireNonNull(playerRef.getReference());
HytaleServer.SCHEDULED_EXECUTOR.execute(() -> {
AnimationUtils.playAnimation(ref, AnimationSlot.Action, "SwingRight", true, ref.getStore());
});
}
}
}
Anyone have any idea what I could do? From my own testing by sending the PlayAnimation packet myself, the getComponent function seems to stop further code from running.
Does anyone know how to get the block position of an entity?
I've gotten the transform component, and thus the position but how can I grab specifically the block position?
has anyone been able to figure out how to override the fact that you cant drop items while you're running?
Check your open instances (other worlds). It cannot be, but it's an idea
Run this on the world thread, the executor doesn’t run on the proper thread for things like this
Shouldnt be any other instances tbh..
Use world.execute, you can get it back from the ref with
ref.getStore().getExternalData().getWorld()
Does anyone have any advice for code or an idea that then gets the server to teleport the player who executed the command to a location? I already pull the UUID i just cant teleport them
Then run world.execute
@fluid coral Says deposit disabled...
Ok so my Server Jump Mod now has encryption built into it :D, Was honestly super easy, Barely an inconvenience
Now to just test it
the only solution I have "found" is to cheat with the visibility of many textures, set to false -> true etc at the moment, so if you find better tell me please
thank you!
A random location? it's going to require cords, then just grab the player and teleport?
Its a location that has been saved but for some reason I just cant get it to teleport someone
Currently, only self mode is active; otherwise, the building cannot be constructed. I will soon release an update where you can reactivate the old system in the configuration.
you'll need access to ECS but it should be trivial
You'd have to grab the cords from the configuration/save that you have but this is worked for me:
World targetWorld = Universe.get().getWorld(WORLD_NAME);
Store<EntityStore> store = ref.getStore();
EntityStore entityStore = (EntityStore) store.getExternalData();
World currentWorld = entityStore.getWorld();
Vector3d position = new Vector3d(SPAWN_X, SPAWN_Y, SPAWN_Z);
Vector3f rotation = new Vector3f(0.0f, SPAWN_YAW, 0.0f);
Teleport teleport = new Teleport(targetWorld, position, rotation);
store.putComponent(ref, Teleport.getComponentType(), teleport);
Oh so have to self place every block? No wonder! Thanks for info, will keep an eye out for update ❤️ Maybe this is also why its causing a lot of client crashes when I interact and after closing a chest?
Ill give something like this a go now thanks
Sorry, don't mean to ask again but I haven't found a way just yet.
How can I get an entity's block position instead of it's normal position?
Is it a conversion I have to do? Or is there some component that should have that information.
i need to test game logic for teams in my server can someone msg me and join for 5 seconds
Can I share what I've done here?
I can help with stuff later but I am just leaving for dinner
wait where can I get a list of java imports I can use for plugin dev?
how do i get the ref/store from the attacker again, when i swing my sword i want to have that swing be a crit, are there any ways to access this?
I cant seem to get the player model to be set, trying to create a Race plugin and it just stalling out on me, no errors and I am using the example
commandBuffer.replaceComponent(
target,
ModelComponent.getComponentType(),
new ModelComponent(stoneModel));
Anyone know why this is failing to run task?
SpleefEndGameChecker.run(world);
public class SpleefEndGameChecker {
private final World world;
// Constructor
public SpleefEndGameChecker(World world) {
this.world = world;
world.sendMessage(Message.parse("SpleefEndGameCheckerRuns0"));
}
/**
* Static helper so you can call:
* SpleefEndGameChecker.run(world);
*/
public static void run(World world) {
new SpleefEndGameChecker(world).run();
}
// Main logic
public void run() {
world.sendMessage(Message.parse("SpleefEndGameCheckerRuns1"));
var spleefPlayerManager = HelloPlugin.SpleefPlayerManager;
if (spleefPlayerManager == null) {
world.sendMessage(Message.parse("SpleefPlayerManager is null"));
return;
}
world.sendMessage(Message.parse("SpleefEndGameCheckerRuns2"));
for (PlayerRef playerRef : world.getPlayerRefs()) {
var reference = playerRef.getReference();
if (reference == null) {
continue;
}
Store store = reference.getStore();
Player player = (Player) store.getComponent(reference, Player.getComponentType());
if (player == null) {
continue;
}
String key = world.getName() + playerRef.getUsername();
Integer value = (Integer) spleefPlayerManager.get(key);
if (value == null) {
continue;
}
world.sendMessage(Message.raw(String.valueOf(value)));
if (value == 1) {
world.sendMessage(Message.parse("GAME ENDED"));
return;
}
}
}
}
anyone using workers in a plugin? smth like bullmq or rabbit?
wow im stupid just cast to int
i think it may be your punctuation
Store<EntityStore> source_store;
if(damage.getSource() instanceof Damage.EntitySource){
Damage.EntitySource source = (Damage.EntitySource)damage.getSource();
var ref = source.getRef();
source_store = ref.getStore();
}
haha once again my enigmatic prowess proves to be boundless
do you know where it may be? i cant find anything 😭
someone did a kyori implementation for hytale?
else if (damage.getSource() instanceof Damage.ProjectileSource) {
Damage.ProjectileSource source = (Damage.ProjectileSource)damage.getSource();
var ref = source.getRef();
source_store = ref.getStore();
is the getRef() from a projectileSource the owner?
probably
question wdym by jump mod? like server jumping?
naming your variables in snake_case is actually criminal though
You walk into a portal and get sent to a configured server And your inventory comes with you
low key need something like that so its like bungee cord?
String statName = entry.getKey();
im inconsistent too @rugged halo
I've never looked into or used BungeeCoord, But yeah I guess so!
This is entirely self contained though, No middlemen servers or anything
Both servers just need to have the mod installed and configured with the same encryption key
I see I guess I amtrying to make a plugin that allows users to teleport to different servers so like same IP but different port
i just felt like snake_case today cause i dont see them anywhere else
How do i open a Custom UI on Interact with a custom block ?
idk why but I use snake_case for json and other config files
camelCase for method names
PascalCase for class names
I came here to ask the same question 😂
i use all kinds all over the place (Rust) ^^
hello
rUsTCaSe
its weird, i come from c# where methods are Pc and privates are cc
i do make constants UPPER_CAMEL_CASE
and half a year of python also rotted my brain so...
ah yeah I do upper camel for constants too
How do I replace the sound that plays when firing a rifle?
not its more like, types are UpperCamelCase, functions/members lower_snake_case, consts UPPER_SNAKE_CASE and so on, so its all in use but its all having its place where to do it.
I just thought of something that could be needed
User on Server B jumps back to Server A
User now on Server A stores their Inventory
Disconnects then Directly Connects back to Server B
Jumps back to Server A
Dupe?
Probably would need to sync with the Main Servers Inventory if you directly connect to a Sub Server
Hmm
A hard one to figure out because there'd also be scenarios where you dont want that to happen
Maybe we clear the inventory on the Server we are leaving xD
So that you cant Dupe stuff that way
camelCase for methods/fields and PascalCase for names is Java convention, sometimes you see kebab-case for yml and often xml
what about your enums? mine differ, sometimes its UPPER sometimes its lower
I prefer C#'s PascalCase for method names as well, tbh
but I tend to adhere to the conventions of whatever language I'm coding in
I reported a bug, when will it usually be reviewed?
PascalCase
java enums are all caps for me
my code is riddled with them 😭
The map dissapeared after the update 2. has anyone had this error ?
In rust its actually like a standard which "case" you do with what. Means the code linter tool will also tell you when you ignore the rules lol
How can I unregister a command and also an event?
just start naming all methods, variables, and enums with emojis 😄
Most linters in a professional environment do this for all languages and then some, the one at my last job went berserk over spaces lol
Unfortunately there's a programming language for that LMAO
thats him officer! thats the AI
Does anyone know of an event/system I can hook into for "When an Entity becomes visible to a player"; i.e. when it enter's the players simulation range
something like on entity load
on send entity spawn packet
Yes sometimes its tricky for me to switch between the two when I do C# and Java
there's LoadedNPCEvent but I'm not sure that's what you want
But I usually type it out, see thats not the right case standard for the language, and fix it
yeah, just accept it, dont fight it basically
@tropic orchid
Hello.
take a look at: Integer value = (Integer) spleefPlayerManager.get(key);
If spleefPlayerManager is storing values as a different data type (for example, a Long or a simple Object representing a number from a configuration file), casting directly to Integer will throw a ClassCastException.
In Java, you cannot cast a Long to an Integer directly; you must convert it. 🙂
visual studio and intellij look so jarringly different that I usually know where I am lol
hi
Any idea what I need to search for; for on entity spawn packets?
let me send u a pm
a c# developer was here
"how can you tell?"
GetOrAddComponent()
for?
ill show u
True..
you can in fact cast long to int if you're using primitives
2 mins rq
my vscode drowning with 200 plugins
i miss the out keyword so much man 😭
I miss Actions haha
Even if that was the case, shouldnt it still do the showmessages in the file before the enteger? or is that now how that works
Its a mess they expect you to implement interfaces to get the functionality back and even then its not entirely right
Specifically, this will work
long l = 10;
int i = (int) l;
but this will not
Long l = 10;
Integer i = (Integer) l;```
you'd need to do `l.intValue()`
I had to update my IntelliJ to start making hytale stuff because I was still on IntelliJ 2020 😅
I miss being able to write extension methods :(
mixins?
c# extension methods are not mixins
No mixins officially supported
unless you were just asking if hytale has mixins
Upon further thinking, I think this will definitely be needed
I reported a bug, when will it usually be reviewed?
are mixins like using Harmony in C# or something?
you might as well head to the nearest pizza shop and ask them, devs don't really come in here much it seems
how do i set my default world, my players arent spawning in the superflat but the normal
😄
probably somewhere between a day and a week depending on how many others there are
so true bestie
hey, I cant get any of my pre update worlds to load on my server. is there a fix anyone knows?
the devs did say that data loss was likely
Harmony ball knowledge
Goh' i love harmony! i love patching
anyone able to help with finding servers???
the good thing about java though is i dont need DnSpy to see the contents lmao
Harmony is like less versatile Mixins, usually in the contexts I use them (which are Unity games) Im limited to an even smaller subset of functionality cause the games I mod are usually IL2Cpp and not Mono
I suggest avoiding full overrides when using mixins for better compatibility
Harmony works in IL2Cpp too, ive made a modAPI before with bepinex and harmony on an IL2 game
Yes it does but you can't use Transpilers which allow you to change IL instructions
Because there are no IL instructions
ayhe fair
there are JVM instructions
Not in Harmony
look at the asm docs, thats what mixin uses
That is true for primitives (example, long to int), but it doesn't apply here (in this context). spleefPlayerManager.get(key) returns an Object (a Wrapper).
In Java, while you can cast primitive long to int, you cannot cast a Long object to an Integer object. They are sibling classes under Number, and Java doesn't allow cross-casting between them. Since get() returns a generic Object, if the underlying data is a Long, a direct cast to (Integer) will always throw a ClassCastException. 🙂
Harmony is not for Java its for C#
and what are transpilers
see the code snippets below that message :p
Transpilers allow you to peek through IL instructions for a given method and make modifications to the instruction set, like instead of
div
You can replace its call with
mul
i see
How do I update my server aaaa
in simple terms, you can just change the methods itself. right
just checked! You’re right, and that’s exactly the distinction I was pointing out
I replaced the jar but still cannot join
Does this method send a message to the player (player object) or does it send a message to chat for other players?
player.sendMessage(Message.raw("some message"));
Yeah without overriding it which you can still do in Harmony
I think because its the player object it would send it from the player
If you call sendMessage on a specific player it should only send it to them (The player you called sendMessage on)
thx
so you can tell the code when this new body should be used instead of it being permanent everywhere?
Okay thanks. I was wondering if it was sending a message "for" the player to other players. lol 🤔
it might, you should test
Its just for peeking through individual instructions and changing them
No I don't think you can send messages on behalf of another person in such a way, sendMessage should just send some text to them directly
guys what is the minimum requirements to run hytale?
check the website
The reason you aren't seeing the messages after the cast is because of how Exceptions work.
When (Integer) spleefPlayerManager.get(key) fails, it throws a Runtime Exception. This immediately stops the execution of your run() method. The code "crashes" at that exact line and never reaches the world.sendMessage calls located below it.
Try to fix it making your code robust, you should cast to Number (the parent class) instead of Integer 
Okay so then I should send other players in the same world the message like this:
World world = Universe.get().getWorld(player.getWorldUuid());
for (PlayerRef playerRef : world.getPlayerRefs()) {
playerRef.sendMessage(Message.raw(playerRef.getUsername() + " : some message"));
}```?
Yeah that works for same world players but you can do across the whole server like:
Universe.get().sendMessage
Awesome, thank you!
oh heck yeah it's gonna run good (even with my trash integrated graphics
i have 16gb of ram i should be good
i have direct x 12
and opengl 4.1 (it comes with integrated graphics)
Quick question, what is the most common database hosts use? I would think mysql however there are a ton of options lol
guys, is there a way to update a sv? I've one with friends but I didn't understood at all how to use new update module tbh
but i do have a good cpu with 10 cores and a max clock speed of 4.80ghz
yeah
Yo, I wanna set up v2 generation on my game server. How do I enable it?
Did u have this on ur game server?
Run Downloader
Download the latest version of the patchline before starting the server
I have this option on startup options.
Not avalible
Oooooh I didn't how that there are new sv files, where can I find them?
modding Mono games is a hell of a lot easier. Rimworld for example
IL2CPP hides a bunch of stuff
Does anyone know how to get a Player or PlayerRef object from a CommandContext?
look at the command system definition, you'll find it there
(Player)ctx.sender(); ?
ironic im about to see if this works or not LOL
lets find outttttttttttttttt
I tried to cast but got an error.
Plugin for %sleep?
rip
Thank you
2026-01-25 02:28:07.4880|FATAL|HytaleClient.Application.Program|Early boot failure System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. (Parameter 'index')
at HytaleClient!<BaseAddress>+0xa9b5cb
at HytaleClient!<BaseAddress>+0x3dfea3
at HytaleClient!<BaseAddress>+0x3f6418
at HytaleClient!<BaseAddress>+0x556fa4
at HytaleClient!<BaseAddress>+0x55674d
at HytaleClient!<BaseAddress>+0x3c9ebd
at HytaleClient!<BaseAddress>+0x136f922
at HytaleClient!<BaseAddress>+0x3c7dcb
at HytaleClient!<BaseAddress>+0x3c7c84
at HytaleClient!<BaseAddress>+0x3c6fc6
at HytaleClient!<BaseAddress>+0x3c6719
at HytaleClient!<BaseAddress>+0x2e966b
at HytaleClient!<BaseAddress>+0x2e9f38
at HytaleClient!<BaseAddress>+0x640861
at HytaleClient!<BaseAddress>+0x63b992
at HytaleClient!<BaseAddress>+0x6535f7
at HytaleClient!<BaseAddress>+0x6531b9
at HytaleClient!<BaseAddress>+0x652e45
lord somebody save me 🙁
my plugin keeps cuasing this crash randomly
it worked for me, what's your error?
2026-01-25 01:39:48.0669|FATAL|HytaleClient.Application.Program|Early boot failure System.NullReferenceException: Object reference not set to an instance of an object.
at HytaleClient!<BaseAddress>+0x3c7206
at HytaleClient!<BaseAddress>+0x3c75f8
at HytaleClient!<BaseAddress>+0x2e9140
at HytaleClient!<BaseAddress>+0x63c024
at HytaleClient!<BaseAddress>+0x63b3a5
at HytaleClient!<BaseAddress>+0x6535f7
at HytaleClient!<BaseAddress>+0x6531b9
at HytaleClient!<BaseAddress>+0x652e45```
what about
CommandContext.senderAs(Player.class)
the cast still worked for me, not sure if that's fine or not though
FWIW, all that does is this
@Nonnull
public <T extends CommandSender> T senderAs(@Nonnull Class<T> senderType) {
try {
return (T)(senderType.cast(this.sender));
} catch (ClassCastException var3) {
throw new SenderTypeException(senderType);
}
}```
so casting should work lol
oh pfffft
Anyway to get the PlayerRef object from the Player object?
player.getReference()
no, that just gives a Ref<EntityStore>
Yeah but its depracated @dire acorn
you need to grab the PlayerRef component from that store
Got it @rugged halo
Ref<EntityStore> ref = source.getReference();
Store<EntityStore> store = ref.getStore();
PlayerRef playerRef = store.getComponent(ref, PlayerRef.getComponentType());```
Thank you
anyone have any ideas?
[2026/01/25 02:41:15 SEVERE] [World|SpleefLobby3] Failed to run task!
SpleefLobbyCheck.run(world);
public static void run(World world) {
world.sendMessage(Message.parse("SpleefLobbyCheck is running"));
}
}```
im starting to think im stupid lmfao
Why isn't this chat moved to the Hytale Modding discord- it makes the most sense there
that discord probably isn't official
It has lots of Hytale and Hypixel employees in it, including Simon
does ctx.senderAsPlayerRef() work too?
That just gives you a ref
specifically Ref<EntityStore> same as player.getReference()
im allergic to reading clearly
it's okay i couldn't read until this morning
thanks hytale for teaching us how to read
who needs to read?
Hey does anyone know how i get the path to my own assetpack via Code? 🙂
Guys, Is there something like Mixin in Minecraft?
Like If I want all Zombies will be baby, i can use mixin and change the isBaby function as I like
Can I do that in Hytale?, and How?
wtf do you mean a switch statement is not part of standard java bro what
How can you process a command that uses multiple arguments?
Look up Hyxins I believe its called
Otherwise there is also bytecode transformation on its own if you hate yourself
you reminded me to just READ THE DOCUMENTATION 😭
I hate reading
wow I found the answer I needed by reading documentation who would have thought
Hahaha! Doesn't make it "official" just means that it has merit.
I just give the docs websites to AI and have it summarize parts I want.
Gives some nice in context examples too!
You're missing a lot of fine-grained information that could help. I'd put the whole repo/codebase in AI and ask it questions against that.
It's like pouring a pool into a bucket... so distilled
Yeah, I agree with this. 😄 - I just had to do some simple stuff, didn't need the entire context yet.
I'm trying to read and write myself first before throwing in the AI towel
Each new feature or layer or anti fraud I add to my mod, It gets exponentially more complex
So don't add any and sell support instead
although I do agree, AI can be very useful for examples and docs
Lol, Well I need to make sure players cant commit inventory fraud
I agree, but understanding syntax vs concepts is a very different thing. If you understand the language and its mechanics same as the system there is no reason to waste time on syntax. 😄 - At least in my not humble oppinion. 😄
For context, I'[m working on a mod that lets you Jump Servers, And take your inventory to you
I can see now, Very clearly, Why nobody had already done this
is anyone having issues with the online ui creator consistently making the .ui files with errors like properties don't exist etc etc?
What have I gotten myself into lmao
Hey! I built an entire orchestrator and matchmaker and auto auth, as well as a relay for that. 😂 - Though not keeping inv but I am sure redis can become my best friend
Oh my buddy... I am in a rabbit hole of similar magnitude
Its extremely simple to do the whole, jump servers and sync the inventory
And then you've got to consider all the ways that can be used to Duplicate your Inventory
We've got Encryption, We've got Transaction IDs, We've got timestamps
And now I'm introducing the concept of Current Authoritative Server, Which will mean the Inventory will only actually sync if you came from an Authoritative Server
An Authoritative Server is any server you jumped to... From an Authoritative Server
I am working on a webpanel for my moderation plugin... now imagine the stress of security in that 😂
By Default the Main Server is the Authoritative Server
IS the encryption, timestamps, and Transaction IDs not enough? 😄
That HAS to verify that authority by then.
Whats to stop you from jumping from Server B to Server A, And then logging out and back into Server B and doing it again
And thats the concept behind the Authority Server flags
Well you jump to server A not B. Inv transfers?
Just clear the info when a player jumps
Sounds like room for error
What is the authoritative concept doing if not that?
And have an audit log running
Is loggedin
The Authority Server flag is basically just a trail of "Have you actually jumped from a valid server and should we sync the inventory when you join?"
Or keep the inventory in a global store like Redis, and every modification event changes it at the authority. Then just always load from Redis
Then that introduces a Middleman
I did that but apparently, its not secure enough for some fancy schmancy people
Right, but no "non valid" server will give you the already stingy info required. 3Factor. 😛
I dont want any middleman servers, This is all self contained
There's a middle man (the network) between all communications
Ah, like literally the plugin
Well I mean like hosting a DB on AWS or something
This is just a, Install the Mod and Configure it solution
I see, so this project is meant to be deployed to many servers, and they communicate with each other?
Federation. 😄
Any Server with the Mod installed, And sharing the same encryption key, Will be able to Jump and Sync between each other
What, just dynamic loaded modules?
Oh yeah okay, I see why your adding that extra step. - Distributed federation is very difficault due to the wildness. But your going about it quite well
Lets now introduce the concept of Server C
If you join Server C directly, But Server B was the Authority
We will call Server A, Which will then call Server B for its inventory, And send it back to Server C and then make Server C the authority
That sounds like communism ✨
No, federation is a decentralized architecture where multiple, independent systems or databases work together as a single, cohesive unit without merging physically.
That way whatever server you connect to "will become the authority" after grabbing the Inventory from the Authority Server
Using the Main Server as a kinda Bounce arounder, To find out the true Authority Server
Server A is the Main Server here
What if there are 15 servers
Centralized architecture is more conventional, why go the federation route?
Will the player be around in limbo till it finds the correct information?
Complexity! 😄
It sounds sort of centralized from his last statement
Server A being the root of it all.
It's not necessarily more complex 😄
tbh you could call server A the authority, and the server connected to something like, say, the inventory holder
how do you update a servers world from the previous version
Yeah the terminology can be interchanged
Server A is the one that will know what the Authority Server is, And tell any sub server what the inventory should be
Well, conventional central architecture is by default less compelx due to many reasons.
mostly because there is a lot less to think of(though it comes with its own issues)
Yes, which is why I am asking why federation is being used here
This of course all relies on the fact that there should never be any issues and the servers should never go down xD
Does it scale well enough tho? Like if I have a big server like with 15-20 sub servers.. does the player have a long loading time?
It's quite literally modular, incomplex, and easily understandable architecture
how do you update a servers world from the previous version, i just put the new server files in and kept the old world and its erroring with world gen stuff
Oh yeah, also what happens when authoritative server crashes
The one rule only the universe has abided by so far.
Well atmost you'd be
- Server J calls Server A that calls Server Z
So there'd be atmost 3 points of contact
It's a lot more robust to have a central authority. More control.
Since any server that becomes the authority should tell Server A its the authority
hey all. I'm looking for players who have an open server that are in canada or us, preferably western time zones. ages 30+ that wouldnt mind a new player join in?
The fallacies of distributed computing are a set of assertions made by L. Peter Deutsch and others at Sun Microsystems describing false assumptions that programmers new to distributed applications invariably make.
The network is reliable;
Latency is zero;
Bandwidth is infinite;
The network is secure;
Topology doesn't change;
There is one administrator;
Transport cost is zero;
The network is homogeneous;
It doesn't sound built for scale, it sounds built for ease of deployment and self managing.
I can almost certainly say the tradeoffs are not worth it...
At the moment the usecase is just a few servers, If it gets really popular and there's an issue I can look into that
I can say that your incorrect! 😄 - Installing a mod and it just works is far easier
What if you want to take down a server separately for maintanence, and it's the authority server for many inventories?
how do you update a servers world from the previous version, i just put the new server files in and kept the old world and its erroring with world gen stuff
[2026/01/25 03:15:29 INFO] [HytaleServer] Shutdown triggered!!!
[2026/01/25 03:15:29 INFO] [HytaleServer] Shutting down... 3 'Failed to load world gen!
Error while loading zone "/Server/World/Default/Zones/Oceans" for world generator from file.
Error while loading cave generator.
Error while loading caves for world generator from /Server/World/Default/Zones/Oceans/Cave/Caves.json
Cannot invoke "getAsString()" because the return value of "get(String)" is null'
[2026/01/25 03:15:29 INFO] [Universe|P] Removing world exceptionally: default
[2026/01/25 03:15:29 INFO] [World|default] Removing individual world: default
[2026/01/25 03:15:29 SEVERE] [Universe|P] Failed to load world: default
CompletionException: SkipSentryException: Failed to load WorldGen!
Well you broke his assumption
I suppose I'd have to have a way to now tell Server A that its now the authority and send over the inventories
Yes:
Topology doesn't change;
This of course all relies on the fact that there should never be any issues and the servers should never go down xD
eh, that ones a few different ones, particularly the network being reliable
I would just use a database, it seems simpler, less fallbacks, not as many edge cases either
"all this relies on" is the last words of every engineer that chose the wrong solution
Update 2 hasn't done much on the server timeouts during asset download, especially for people with shaky internet, it will download till the end just to fail with timeout and force a redo until the client joins.
One day I will make my unkillable MMO.
dc?
My solution could in theory be easily adapted to then store the inventory on a single database server
Itd just be a few lines to make the Database Server always the authority
if you design the protocol well, you could defo make a standalone root server too
Yes! Domain controllers are used in every single corporate org
I could in theory just make it configurable so that the Main Server is ALWAYS the authority, And to constantly keep the inventory updated there if the Player should disconnect from a Sub Server
Yeah, I see what your doing! I say keep going! - A mod that just allows things to connect without fussing with any setup and just connecting keys say a command ran in the server is very nice for groups of friends or communties small with clusters and no want or brains for a DB, essentially shared hosting in a nutshell
I dont think itd be much work to shift
Non-hytale/mc services are used in every single deployment of large scale servers
In fact you wouldnt even need a DB, You could just have another Hytale Server that nobody actually plays on, That just stores all the inventories
What does this mean?
Badlion Network did something similar with grpc and shards back in the day.
And then everything is stored as native data
That sounds like a lot of wasted resources...
Yes I know, But its all stored in a Hytale Format, Instead of like SQL
Like, worlds loaded, entities ticking, and it's never used.
The whole point is to make it easy and simple for people who don't know how to do what we do.
Services like DBs, domain controllers, business logic lambdas/EC2s/Spring Boot are used in MC/hytale deployments for big companies
Understood. 👍
For the Inventory Grabbing and Syncing stuff, We actually run an HTTP Server on the Hytale Server with various endpoints exposed
aye captain
But only decryptable payloads are accepted
Currently the working title for this mod is "Shubshub Server Jump"
This sounds pretty overengineered and unnecessary.
How else would you do it?
You cant natively call another server to find out its inventory
Web server does the business logic, along with message queues.
I suggest, packaging inventory as a custom type, sending it to a server, then send a player link which player pastes in new server, and receive package from server and then unpackage it and give items to players
So your server is authoritative c:
Hello guys. I'm looking for a way to access the tier level of a CraftingBench in the world. Currently the CraftingBench implements only a method that allows to get a list of available tiers for a Bench Type. I'm looking to get the actual bench tier level for a specific bench in the world.
Does anyone know where i can get this information?
Same could be said for the Badlion Network mainframe but it existed anyways
I'm not sure what this is
There are plans to potentially support this down the line already
Seems like too many steps for the Player for my scope anyway
how do you update a servers world from the previous version? i just put the new server files in and kept the old world and its erroring with world gen stuff
[2026/01/25 03:15:29 INFO] [HytaleServer] Shutdown triggered!!!
[2026/01/25 03:15:29 INFO] [HytaleServer] Shutting down... 3 'Failed to load world gen!
Error while loading zone "/Server/World/Default/Zones/Oceans" for world generator from file.
Error while loading cave generator.
Error while loading caves for world generator from /Server/World/Default/Zones/Oceans/Cave/Caves.json
Cannot invoke "getAsString()" because the return value of "get(String)" is null'
[2026/01/25 03:15:29 INFO] [Universe|P] Removing world exceptionally: default
[2026/01/25 03:15:29 INFO] [World|default] Removing individual world: default
[2026/01/25 03:15:29 SEVERE] [Universe|P] Failed to load world: default
CompletionException: SkipSentryException: Failed to load WorldGen!
It was a joke 👀
Hi guys. I'm adding multiple "cards" into a custom UI and, with a For loop, I'm adding some of those and trying to update name, but I'm getting only first card been update.
I'm adding 11 cards, for example, and the first card updates its "label name" into "11". It means only this cards is referenced inside For loop, but no others created.
Anyone have some good soundtracks suggestions to listen to while coding? Something upbeat
In Colour by Jamie XX has always been a go to for my coding music
it's a little bit out there though, not for everyone
I mean its not a bad idea though, Just would depend on the usecase 😛
I'm listening to it now lol
niceeeee
Going that far would basically mean you have lost the plot 😂
Or maybe I'm Oda
youtu be/XG_67nw5W-A
In which case we lost the plot a long time ago
Does anyone have a good "error sound" beep or boop? Something included with the assets already. I want to play a error sound if a command is entered incorrectly.
how do i reload ui files in game? reloading the plugin does nothing
given a reference to an item that is a Bench_WorkBench, does anyone know how i can check that tier the workbench is?
HELP PLS. I am getting crazy with this, log is printed but event is not cancelled, all my other systems are working as expected ...
public class DamageSystem extends EntityEventSystem<EntityStore, Damage> {
public DamageSystem() {
super(Damage.class);
}
@Override
public void handle(int index, @Nonnull ArchetypeChunk<EntityStore> chunk,
@Nonnull Store<EntityStore> store,
@Nonnull CommandBuffer<EntityStore> commandBuffer,
@Nonnull Damage event) {
if(1==1){
event.setCancelled(true);
System.out.println("Damage cancelled");
return;
}
1==1 ?!?!?!?!?!??
anyways did you register the event?
just harcoding to provoque the yes (i have more code below not running rn XD)
Its printing the log....
yey:
getEntityStoreRegistry().registerSystem(new BlockUseEventSystem());
getEntityStoreRegistry().registerSystem(new DamageSystem());
oh my bad
i mean all my other events are working
Do you know how to play it? I have't tried that yet. And thank you for your help!
this is crazy dumb right now... senseless, best thing is that i am removing the knockback and that works
but damage keep being there
Were you here for the two people's breakup yesterday?
ok so my dedicated server isnt loading the chunks
There was a messy breakup right here happening in this channel
An IRL relationship getting destroyed
This made the trick WTH?
@Override
public Set<Dependency<EntityStore>> getDependencies() {
return Collections.singleton(RootDependency.first());
}
wtf is that
just copied from another mod code ...
i mean holly molly
If it works, dont ask questions, move on
hmm I read the docs for the damage event I have no idea why it wouldn't work lol
happy it works now for you though
yeah this is my work method
I'm guessing that's how they order the events
but that is crazy lmao, having to override something not declared in the own event, even higher
and without a dependency it can't actually add it to the event bus
private final Map<UUID, String> serverJumpCache = new ConcurrentHashMap<>();
private final Map<String, Long> usedTransactionIds = new ConcurrentHashMap<>();
private final Map<UUID, PlayerData> playerDataCache = new ConcurrentHashMap<>();
private final Map<UUID, BsonDocument> pendingInventories = new ConcurrentHashMap<>();
private final Map<UUID, Boolean> authoritativeServerCache = new ConcurrentHashMap<>();
private static final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
private static ShubshubServerJump instance;
private PluginConfig config;
private Path configPath;
private Path playerDataPath;
private HttpServer httpServer;```
Dont you just love when your variables are laid out in a nice satisfying way
Can I see more of the code around to actually see what you have done
interesting
Yeah it seems its a heirarchy thing for sure but I am more interested in the rest of it lol
public class DamageSystem extends EntityEventSystem<EntityStore, Damage> {
public DamageSystem() {
super(Damage.class);
}
@Override
public void handle(int index, @Nonnull ArchetypeChunk<EntityStore> chunk,
@Nonnull Store<EntityStore> store,
@Nonnull CommandBuffer<EntityStore> commandBuffer,
@Nonnull Damage event) {
if (event.isCancelled()) {
return;
}
Damage.Source source = event.getSource();
if (source instanceof Damage.EntitySource entitySource) {
Ref<EntityStore> ref = chunk.getReferenceTo(index);
Player playerAttacked = store.getComponent(ref, Player.getComponentType());
Player playerAttacking = store.getComponent(entitySource.getRef(), Player.getComponentType());
if (playerAttacked != null && playerAttacking != null) {
PlayerRef playerAttackingRef = playerAttacking.getPlayerRef();
PlayerRef playerAttackedRef = playerAttacked.getPlayerRef();
Team teamAttacking = Utils.getTeamByPlayerRef(playerAttackingRef);
Team teamAttacked = Utils.getTeamByPlayerRef(playerAttackedRef);
if (teamAttacking != null && teamAttacked != null && teamAttacking.getName().equals(teamAttacked.getName())) {
event.setCancelled(true);
return;
}
}
}
}
@Nullable
@Override
public Query<EntityStore> getQuery() {
return Query.and(Player.getComponentType());
}
@Override
public Set<Dependency<EntityStore>> getDependencies() {
return Collections.singleton(RootDependency.first());
}
}
jesus christ a wall
Use please
```
code
```
Just for future reference it'll be easier to read if you encapsulate i--- yeah like that
If you really want you can make your own abstraction of the EntityEventSystem and just add the root dependency override by default
Yeah that^
It'll keep you sane in the future if you forget to add it lol
ECS is very odd shii..
yeah lol
I don't code very much and this is my first experience with ECS
I'm here for the ride
Hi guys. I'm adding multiple "cards" into a custom UI and, with a For loop, I'm adding some of those and trying to update name, but I'm getting only first card been update.
I'm adding 11 cards, for example, and the first card updates its "label name" into "11". It means only this cards is referenced inside For loop, but no others created.
Welcome! Your going to LOVE ecs. 😄
ok "I don't code very much" is a lie. I just don't FEEL expereinced 😭
im working on it
You never will. - One thing I learned from a co-worker with 30+ years in high end development is that you never feel like you learned you just suddenly know hwo to do something you didn't before
Can someone help me?
I can't open the game, it gives an error.
anyone know how to get the default world spawn point?
AWesome, error?
An error occurred while launching Hytale. Please validate or uninstall your game files in the settings menu to fix this issue. Contact support if the problem persists
Thank you 🤝
Sounds pretty self explanatory!
if the industry would stop inventing new stuff we have to learn every three years, we might actually be able to make it someday
I already uninstalled the game, removed all the files, and reinstalled it, but nothing changed.
Oh, hmmm. I am thinkin
As someone who does this as a hobby.. ik exactly how you feel man, finding professionals in the field really humbles me often with their methods and words
In two words. Imposter syndrome, and EGO. (oh thats 4)
Just think "If it works, it works" - Also I add on if I can make it, Ai can probably do it better. 😄
how do you update a servers world from the previous version, i just put the new server files in and kept the old world and its erroring with world gen stuff
[2026/01/25 03:15:29 INFO] [HytaleServer] Shutdown triggered!!!
[2026/01/25 03:15:29 INFO] [HytaleServer] Shutting down... 3 'Failed to load world gen!
Error while loading zone "/Server/World/Default/Zones/Oceans" for world generator from file.
Error while loading cave generator.
Error while loading caves for world generator from /Server/World/Default/Zones/Oceans/Cave/Caves.json
Cannot invoke "getAsString()" because the return value of "get(String)" is null'
[2026/01/25 03:15:29 INFO] [Universe|P] Removing world exceptionally: default
[2026/01/25 03:15:29 INFO] [World|default] Removing individual world: default
[2026/01/25 03:15:29 SEVERE] [Universe|P] Failed to load world: default
CompletionException: SkipSentryException: Failed to load WorldGen!
so does Biomes work like ores and need a plugin to inject them or will biomes actually inject themselves if you use the visual code system and wire them into worldgen V2 and include them purely as an asset pack now?
Did you get the assets as well for the update?
yeah i copied them over
I just want to make cool stuff, but I definitely have a severe sense of imposter syndrome. Communities can be intimidating.
check that you have the required dependencies still installed. [dot]net 10 and java 25. [dot]net for the game itself, java for the server.
Well, its the small amounts of people in them that state whatever you do is the wrong way or inferior way. 😄 - If people didn't care for things such as using "AI" or specifics that likely don't matter then you would be golden! But we all know real programmers write each line by hand.
^ That is the stuff that most will make you see inferior. Just lean into what you doing and if it works it works! (Also if you understand it, making something you don't understand "Meaning you can't explain or deduce a bug" is not helpful) 😄 But hey, at the end of the day does it work? And can you learn it later? Sure! 😄

thank you goat 🫡
It won't open at all.
I unfortunatly cannot help you here. I don't know anything about Hytales errors and issues. 😄
I've simply tried everything and nothing works.
does anyone know how to fix async and desyenc from client? the servers side seem fine but when they join they have a false ping of like 80k and they cant open anything
[2026/01/25 03:40:30 WARN] [UpdateLocationSystems] Entity has moved into a chunk that isn't currently loaded! -44, 14, com.hypixel.hytale.server.core.modules.entity.component.TransformComponent@5b00d469
[2026/01/25 03:40:30 SEVERE] [Hytale] Unhandled exception! Thread[#83,WorldThread - default,5,InnocuousForkJoinWorkerThreadGroup]
java.util.concurrent.CompletionException: java.lang.RuntimeException: Chunk failure backoff
at java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown Source)
any ideas on whats going on?
This is how I feel daily! Even though logically I have experience, I get lost and learn a lot
looks like you system/server isnt fully loading and authorizing your chunks check the worldmaptracker
Does anyone have any documentation on scoreboards?
Anyone know the proper way to update a linux dedicated server? I'm struggling, sorry.
If I run -check-version, it says I'm up to date but I'm certainly not (my client is on Version: 2026.01.24-6e2d4fc36
Here is my linux output:
root@strange etherserver:/opt/hytale-server# ./hytale-downloader-linux-amd64 -check-update
hytale-downloader is up to date (2026.01.09-49e5904)
Just use the cdn, the hytale downloader is a pain
i cant join my friend how can i fix that?
where is the cdn? Sorry, first timer
I'll DM
but this happens tell i join
[2026/01/25 03:40:32 WARN] [Spawning|P] NPCEntity despawning due to lost marker: Ref{store=class com.hypixel.hytale.component.Store@770609486, index=2}
[2026/01/25 04:04:38 INFO] [ServerAuthManager] Refreshing game session with Session Service...
[2026/01/25 04:04:38 INFO] [SessionServiceClient] Refreshing game session...
[2026/01/25 04:04:38 INFO] [SessionServiceClient] Successfully refreshed game session
[2026/01/25 04:04:38 INFO] [ServerAuthManager] Token refresh scheduled in 3301 seconds
[2026/01/25 04:04:38 INFO] [ServerAuthManager] Game session refresh successful
[2026/01/25 04:09:35 INFO] [Universe|P] Backing up universe...
[2026/01/25 04:09:35 INFO] [BackupTask] Clearing old backup: Backup\2026-01-24_18-09-30.zip
[2026/01/25 04:09:42 INFO] [BackupTask] Successfully created backup Backup\2026-01-24_22-09-35.zip
[2026/01/25 04:09:42 INFO] [Universe|P] Completed scheduled backup.
this hapened on my server as well tho i havent seen any issues with it i feel like its just the servers way of restarting with out stoping the server
check your log for a warn or error about WorldMapTracker
this could be corupted and need to be deleted and reinstated through a server restart
does anyone know given a reference to an item that is a Bench_WorkBench, how can you check what tier it is? or any other upgradeable station for that matter?
Anyone know how to use the new UpdateConfig?
iirc, you had to update the dowloader(could be wrong though)
I got a server running on a virtual machine although the game play a bit laggy. What's the minimum spec needed ? How many cores should I dedicate to running it.
So I wanted to play the game, how annoying!
I pulled what I thought was the new one in manually (using WinSCP)
how tf do i change default world to superflat?
guys i want to make a block that look at it's neighbour and rotate automatically to a specific block, not literally rotating, more like placing a torch, if i'm looking at a wall it will have its "base" attached to the wall, like the torch, is a thing that i need to script in java or only in the assets editor?
Honestly a 2gb ram 2 core vm should run a server with one user without much latency. Could the map be generated very large?
Thanks for this. The /hytale-downloader-linux-amd64 doesn't do anything for me haha
Working on a plugin that has custom mob spawns, im trying to simply use the /npc spawn command but when setting the --position argument I keep getting formatting errors. Does anyone know the correct formatting for that specific command?
I used hyper v on windows with 4 cores and 32gb of memory so it should have been fine. Maybe a linux vm would have worked better.
I agree I was just experimenting today to see how difficult it would be to set up a server and it was suprisingly easy.
With the linux server is there an easy way to pull down updates to keep everything in sync with the client software ?
i would like to output a message to the in game chat for debugging purposes. anyone done this yet that can help please?
iirc, the bash script included in the downloaders zip does it
Thanks I will look into that.
anyone know the permission node for the built in warp command?
Wait live events are a thing that people are talking about? So I'm not the only one?
would you happen to know the permission nodes for the player commands? specifically /warp
What?
Use: context.sendMessage(Message.raw("your message here")); Where context is the CommandContext.
If you want variable values to be sent as well you can do something like:
context.sendMessage(Message.raw(" Entities spawned: %d".formatted(totalSpawned))); the .formatted method replaces the format specifiers (in this case %d) with the passed value
im assuming they mean necro posting
I thought they misspelt a slur for a second. I DON'T know what Necro posting is.
this depends on a command being ran first. this is something i want to send to the player upon some other event trigger
oh its basically replying to super old threads(or in discords context, more like messages)
think i found a way though
Universe.get().sendMessage(Message.raw(message));
I mean... is that a frowned upon thing lol? Because I do that all the time
the phrase comes from the bit where its like necromancy, and your resurrecting the convo from the dead
yep that worked
Oh, ive only ever used it for after running commands lol, good to know though
eh, depends on context and server
Anyways, does anyone know the correct formatting for the --position argument in the /npc spawn command, no matter what I try it gives me some kind of formatting error
Its such a simple thing but so annoying as theres no docs showing this specific arguments formatting, all thats said in game is it takes text as the input
um i think i have a runaway server
[2026/01/25 04:51:41 SEVERE] [EventBus] Failed to dispatch event null to SyncEventConsumer{consumer=com.hypixel.hytale.server.core.universe.Universe$$Lambda/0x000000008e6fa350@a91119b, timedConsumer=com.hypixel.hytale.event.SyncEventBusRegistry$SyncEventConsumer$$Lambda/0x000000008e5ee2e8@62526644} EventConsumer{index=13, priority=-32, consumerString='com.hypixel.hytale.server.core.universe.Universe$$Lambda/0x000000008e6fa350@a91119b', timer=Metric{min=9223372036854775807, average=0.0, max=-9223372036854775808}}
java.lang.UnsupportedOperationExceptionat java.base/java.lang.Thread.stop(Unknown Source)at com.hypixel.hytale.server.core.util.thread.TickingThread.stop(TickingThread.java:164)at com.hypixel.hytale.server.core.universe.Universe.shutdownAllWorlds(Universe.java:424)at com.hypixel.hytale.server.core.universe.Universe.lambda$setup$1(Universe.java:267)at com.hypixel.hytale.event.SyncEventBusRegistry.dispatchEventMap(SyncEventBusRegistry.java:112)at com.hypixel.hytale.event.SyncEventBusRegistry$SyncEventConsumerMap.dispatch(SyncEventBusRegistry.java:173)at com.hypixel.hytale.event.SyncEventBusRegistry$SyncEventConsumerMap.dispatch(SyncEventBusRegistry.java:163)at com.hypixel.hytale.event.IEventBus.dispatch(IEventBus.java:21)at com.hypixel.hytale.server.core.HytaleServer.shutdown0(HytaleServer.java:515)at com.hypixel.hytale.server.core.HytaleServer.lambda$shutdownServer$0(HytaleServer.java:499) at java.base/java.lang.Thread
So uh, what happened? Any backstory? Childhood tragedy?
server wont shut down
Oh I can get it to shut down!
chunks wont load but still can join
⏻
I am not going to pretend I have any control over Java, it becomes sentient once you bring that jar to life.
I am calling my development journey done for today 😭
in the span of 6 hours I only did the following:
- players can queue for a game
- players can be teleported into the game
...I will be more productive tomorrow
any idea why if I'm trying going to forgotten temple, my server always got restarted?
windows

did
Hey! That is great! What ya makin?
So when using block bench is there a way to cut a hole into a block?
use the rebuild function, it's a bit annoying but it works
like a chisel tool i guess
It's a small duels plugin
ChunkStore chunkstore = world.getChunkStore();
Ref<ChunkStore> refchunk = chunkstore.getChunkReference(ChunkUtil.indexChunkFromBlock(targetBlock.x,targetBlock.z));
BlockComponentChunk blockComponentChunk = chunkstore.getStore().getComponent(refchunk, BlockComponentChunk.getComponentType());
// This evaluates to null because there is no entity reference in the block component that matches the index
Ref<ChunkStore> specificBlock = blockComponentChunk.getEntityReference(ChunkUtil.indexBlockInColumn(targetBlock.x,targetBlock.y,targetBlock.z));
// So this throws a null pointer exception
Store<ChunkStore> specificBlockStore = specificBlock.getStore();
anyone know why this isnt working? how do i put a block component on a block??
Best answer is either literally power off, OR task manager the living bajesus out of it
i can kill the server forcfully but it should stop when you put the "/stop" command in
OOOOH YEAH! That is exciting. 😄 I knew PVP would be a thing people would build for!
./shutdown for me | Does /stop work to?
The game feels fairly combat oriented in itself tbh
Have to get a lot of boilerplate stuff out of the way before I can even start working on game logic. Hopefully I can start that soon because that's the fun part in my opinion.
You and I are in two different worlds. 😄
I just got done makin a server orchestrator, UDP rely, Matchmaker, and Auto Auth in GO. Then had to write a plugin to interface with the web stuff. - I love infra!
I just looked back at my code I have been working on.. and asked myself "I did that..???"
I am trying to download the reccomended plugings from the Hytale support page for creating a dedicated server, but I cannot figure out how to download and find the jar file the plugins are referring to that I am supposed to drag into my mods folder. Can someone please help me?
Bad question or good? - I usually ask in the bad context
Unsure... its a lot of things
I think I have my auth system concrete at JWT + Cookie... atleast thats smth
I respect that so much. I am NOT an infrastructure person. I love more frontend stuff in both games and on the web.
I cant design frontend if my life depended on it tbh
You know I have like 2-3 different mods on hold cause I cant make UI with this god forsaken API
Somehow never gets easier. When I was making minecraft plugins I would always use other people's UI libraries cause the inventory api and scoreboard api's were just too much for me to deal with :P
I work on a dev tool for work and I have to design it - Lets just say its 💩
someone get to work on HyTML and HyCSS for me please
Dev tools are hard to get right tho
so i moved my saved world out and said fine ill start a new run and its fine now so i think the world save has the bug/crash isue
curseforge com/hytale/mods/hyui
It has html
Oh it has css as well actually lol
trying to fire the server up after an update and im getting an error about a duplicate plugin but cant find any real info in the server log, anyone know any solutions?
Has anyone successfully thrown a fireball without the staff with a mod?
you have a duplicate plugin, remove one by one until it stops
using packet interceptors when switching hotbar position
got an example?
it says main.main lol, thats what im saying is it doesnt have a specific plugin before crash
// Get projectile config
ProjectileConfig config = ProjectileConfig.getAssetMap()
.getAsset("hytale:fireball");// Define spawn position and direction
Vector3d position = new Vector3d(100, 64, 100);
Vector3d direction = new Vector3d(1, 0, 0); // East direction// Spawn projectile
Ref<EntityStore> projectileRef = ProjectileModule.get().spawnProjectile(
shooterRef, // Creator entity reference
commandBuffer, // Command buffer for adding entity
config, // Projectile configuration
position, // Spawn position
direction // Launch direction (normalized)
);
Google "Hytale modding Customizing Hotbar Actions" and it'll walk you through how to intercept packets. Once you have that you can do whatever really
Oh man, that kind of hurts my head
That function does not guarantee a ChunkRef for a given block will be there at that position
Individual blocks do not automatically have individual chunkrefs unless they have another system put in place that has added it for them
This is how you can make one:
Holder<ChunkStore> holder = ChunkStore.REGISTRY.newHolder();
holder.putComponent(BlockModule.BlockStateInfo.getComponentType(), new BlockModule.BlockStateInfo(blockIndex, chunkRef));
blockRef = chunkstore.getStore().addEntity(holder, AddReason.SPAWN);
it's not so bad. Just try and get the packet handler working first and go from there, don't forget to register it in setup() before trying it. You can also output the packet to console or log to check it's working okay
I find the only way to move forward with making "actual" mods is doing some server-side logic. From my understanding, implementing mods this way is MUCH more difficult than just changing the JSON files method that the game seems to actually be supporting right now. I'm familiar with java, but could somebody explain to me if there will be better support for implementing actual scripting logic for our mods in the future (and if this will only be in the form of the visual scripting that seems to be coming eventually?), or will I have to just bite the bullet and dive into the current method of setting up a gradle project?
~ I'm aware that this is a very beginner question, but I can't seem to find much explanation of the actual server-side stuff online
I would just bite the bullet there, they dont plan on adding anything like lua or a "simpler" text based language
I read a blog post that said that they didnt want to add first party support for lua/typescript style langs
good news is it could be implemented as a mod
also agree just bite the bullet
I'll be honest here and just say it really wouldn't, undermining server perfomance for the sake of a (tiny) easier time programming isn't it
someone's doing this already - Integrated Lua Environment: Write and execute Lua code in-game.
REPL: A responsive command-line interface to test code snippets and control your computer in real-time.
Safety: Safely run loops and complex scripts without freezing the game server. Every script runs in its own isolated environment and instructions per tick are limited.
File System: (Planned) Save and load your scripts.
APIs: (Planned) Interact with the Hytale world, blocks, and redstone equivalents.
oh I made a repl plugin day one -- though it was for clojure
you don't need lua, or javascript or typescript. Java isn't that complicated you just have to accept that the learning process isn't gonna be simple
which is to be expected when you start modding stuff
The Devs have also been very clear on trying to make things easy for the community so any true hiccups or pain points would hopefully be addressed
iirc thats where the visual language was supposed to come in -- they were explicitly against text based scripting languages as a first party thing last I read
Does anyone knows how to add multiples UI "cards", for example, and change it's value (for example of a Label's text) for each one?
I love stack overflow and being able to find a niche random thing for smth you are doing lol
long count = requestCounts.compute(ip, (k, v) -> (v == null) ? 1L : v + 1);
Like this works... but idk how it does and dont care either 😂
looks like an iterator over a map that does a null check with 1 being the null case
btw I feel like I missed something but, anyone figured out how to add ai components/systems yet? (Like, I'm trying to set up a custom patrol path and I'm just struggling to get everything working because you can't do it purely with the json)
I'll be honest, I ran a test and it worked fine and I didnt even bother try to understand it 😂
You can register sensors but making custom bodymotions are kind of a mess so just use the default ones
im not sure what requestCounts is, but k and v usually stand for key and value in contexts like that
after that its just a null check with 1 as the "default"
Made a companion npc that inherits users stats, follows the player loots items etc, when at home he will deposit into chests - next thing is to make him have idle mode at home so he can take a chest id and process materials in furnaces, benches etc and deposit into another chest
yeah but sensors don't have data registries though no?
"Data registries" ?
Its for a rate limit filter, its a map for requests coming through
You can make sensors with any builder you want in the json to feed whatever you need
god I'm tired, you can't put instance data for the entity in them
it can already, although primitive, it has nameplate that changes when it wants to speak
Yeah you would want to get the data somewhere else and have the sensor feed it through
that's where my issue lies
If you make a custom sensor you can feed whatever you want in per instance
The override provides you the ref of the entity in question
Let me check what you need to pass through for the pathfind bodymotion
I already have the doc ^^'
Yeah the sensorinfo you pass through has to be an IPathProvider
is it possible to apply burn effect with a projectile with asset editor?
Yes this worked! Thank you!!!!
am I allowed to remove hytale's warp/teleport commands? if so how do I do this?
Hello, sorry to bother you, but I need some help. I'm trying to create a mod with IntelliJ IDEA. I'm using the HytaleDocs plugin with the template, but when I put my textures, the model, and the .json file for my item in the files, it doesn't appear in the game. Has anyone else had this problem?
watch my profile and status 🙂↕️
who what where. I had the exact same terrible idea that I wanted to do, but with a different language
Just successfully tested Setting Authority Server, Syncing with Encrypted Data
And also a Movement of Authority, Between two servers
Server Jump with Inventory Sync + Anti-Inventory-Fraud
Is successful
@gentle nymph Is there a reason you're adding me?
Accept me i have a question
Just ask it here
No
The random adds are crazy
That's what the modder role is for. Builder is for people who build maps and etc.
Huh
Oh then I clicked the wrong thing lol
How do I change it xD
At the top of the channel list should be "Channels & Roles", I think you can change them there.
And ive done it 😄
Honestly, I think they changed the question though. I think it originally asked what we were interested in, but now asks what kind of player we are. I'm definitely not a builder, but I was certainly interested in what could be built with Hytale's blocks & furniture.
Hi, I’m looking for modders, developers, and even builders for a Hytale server project. Contact me if you’re interested
hi I like coding
Hi
This
hey everyone! I was wondering what is your experience with the servers, without mods how much ram does the server consumes? I average around 7.5GB with no mods and I was wondering if something is wrong on my end or is just expected to use that much. T~T
Really is it that bad? i have a lil 4gb server with mods that 4 friends play on and it doesn't even peak.
what language is coding for Hytale in
I'm used to direct modding to the Minecraft client , and also server plugins with PaperMC
Java
can you get deeper event and loop access
Yes
Yas OwO it was unexpected, I had a memory leak at one point and I went to grab a snack, it went 15GB before it crashed by the time I returned
is hot swapping and like easy scripting a thing yet? like skript
I would be willing to make my own variant I like making coding languages but I heard they're adding visual scripting
You can unload and reload plugins, and any changes made in the Asset Editor will reflect in-game. However when i try to re-build then reload my plugin it breaks.
The entire game is on the server, And its all Java
Mods will work in both singleplayer and multiplayer with no extra effort
that doesn't sound optimized
I mean you can do quite a lot at this point already with server-side mods.
so would it be a useful addition if I made like skript basically but for Hytale and better?
It really is
amazing, time to do it anyways 🥹✌️
To abstract away the ECS is going to be quite a task. Not as straightforward as it is in Minecraft
Good luck!
I love compiler dev already time to write a scripting lang for Hytale in rust
More power to ya
Rust huh
Tbh id hold off until the game is more mature, alot is likely to change between now and 5 years from now
On making your own modding api
Yeah but you still gain knowledge
Hi, Is there any way (using plugins) to spawn a custom portal at a given position which leads to a given world?
nah I mean like parsers and stuff are reusable it wouldn't take much changing to update it
you can use the asset editor to create that
I want a more flexible thing. Something like a command "/portal create <x> <y> <z> <worldname>" and It spawns the custom portal
anyone using kotlin for plugins?
howdy, would anyone know where I can find the hytale client logs for when I add a server to my client and try to join that server? I've viewed the log at %APPDATA%\Hytale\UserData\logs BUT it doesn't show anything about adding servers or any failures when attempting to join. I want to see why it's not connecting.
I use kotlin and shadowjar, makes things simpler.
nice. so you just added kotlin as a dependency and itelij did the rest?
it wouldn't just be really a modding API it would be a new programming language
Ooook well waiting for curse to approve my, what I hope will be a unified, Electricity API.
PowerConsumer (receive), PowerProvider (extract), and PowerStorage. Hopefully this will help people get started and we won't have a dozen different power systems like we did in early MC 🙏
just made my network statistic system to track all types of data across all the servers on the network im working on i'm wondering if i should add any other trackers to it to be built in by default
Player Metrics:
Current player count
Peak player count (auto-detected)
Total joins/quits
Average session duration
Individual player session tracking
Performance Metrics:
TPS (Ticks Per Second) with 20-second moving average
Average tick time
Peak tick time
Total ticks processed
Memory Metrics:
Current memory usage (MB)
Peak memory usage (MB)
Total allocated memory
Max available memory
Game Statistics:
Games played by type
Active game count
Average game duration
Average players per game
Error Tracking:
Total errors logged
Total warnings logged
Custom Counters:
Track ANY custom metric
Example: blocks_placed, kills, flags_captured etc
thats all the metrics
Sorta, but you still need to apply the plugin and set the stdlib and target the jvm but that's it. Just do a quick google. Honestly though you'd be fine without it.
wait guys I should make like a scripting language that is compatible between both Minecraft and Hytale for like plugins, where you build the core in java but for most things you can just use my scripting lang
good or bad idea
Though I do love shadowjar I don't wanna work without it anymore 😆
otel or custom?
Isn't someone already doin that?
aw 🙁
I'm gonna do it anyways, it's cooler if you hear that a 15yo made it
custom its all tracked using redis with persistent storage also i'm also adding total servers, servers online/offline
If you could find a way to hook into GC that'd be legendary
ic, im kinda new to all this jvm ecosystem. but at least now i can do something. thanks
meanwhile the person making it is gonna be an 8 year old prodigy who's made 500 operating systems better than anything seen publicly 😭
thats what i'm trying to figure out rn ngl
Not to those of us who have been developers for 20 years 🤣
why not xd
I mean, don't stop, do it anyway. Try, fail, learn, success 1000x till you nail it that's the only way to learn.
it's not that hard really
Same reason I hate working with junior devs, the lack of experience makes nothing but messes
I mean I've made polished projects before
I've made several compilers and improved my codebases each time, it's like the #1 thing I do whenever learning a new language
they aren't the craziest things ever, but I typically use llvm ir whenever I want an exe target
however I typically use a custom bytecode format and just make a VM for simple execution
my friend 98ping i met him when he was 14 literally the best programmer ive seen in years now hes making $60k/month off ads on this site he made with his friends thats just a minecraft client online basically its like they're getting younger and younger lmao
Yea I'm not saying they're alll bad lemme be super clear, a lot of them have started learning younger.
God damn, if he can do that, what can I make???
I'm willing to create an OS please I'm hungry for money
I'm just... tired of reading crappy PRs 🤣
I started programming "for real" around 11 making Tibia servers... started my first paid job at 14... I'm 33 now
Learn assembly and spend 30 years making a os then become a billionare in a month
yeah I've been doing coding-like things since like first grade or so, but I really started to pick up in 5th grade, made my first proper CLI game in Python in 6th grade, then it snowballed out of control and I kept trying to write lower and lower level code until I started writing assembly for fun
gaming is a great way to get younglings into the door with coding and all things digital
I already know assembly jokes on you, I've been spending almost 2 years now learning osdev already and so I already have a few usable OSes
i started at 12 literally 2011 with learning java to make plugins for my server
2012 my server blew up i had no idea what i was doing my mom thought i was doing something illegal
the main ones made in C/Assembly but I tried out making one in rust and I just could not. so I moved back to C/Assembly and it's home (I'll probably use rust for higher level things that don't require like inline assembly every two lines)
that's one of the reasons I learned to code, but I think it was always meant to be honestly looking back
damn i see you
"it's actually really quite simple really"
~ Mumbo Jumbo
bro the first deposit on my mom's bank account was $14,000 my mom burst in my room and went through my entire pc i had to go step for step explaining what buycraft was
LMAO
how do I get this kind of money plz explain it bro, I genuinely love coding and when I'm not gaming or doing schoolwork I'm coding for fun
Just work at it and try to make public things. Once you get good enough start working somewhere, engineers get paid good money, and make your own stuff at the same time.
i got REALLY lucky man ngl i genuinely had no idea what i was doing that was back when minecraft was really catching on i started making money like that in 2014 i was just copying what i saw other servers did
sadly I think I'm cooked I've wasted my first three semesters of highschool, I have a 2.8gpa at the moment so I'm lowk cooked
but hey at least I code and uh... make up constructed languages for fun
to falu kêa laêkê bêç to... to þu têko? to þaê no 🤷
Hey did anyone made a player count aggregator plugin? like instead of taking the player count just from the current server it sums the player counts of a list of sub servers
Is it possible to build structures in creative and save them somehow to world gen them later?
I assume through prefabs - but not sure how to gen the prefabs
I think I saw that somewhere in the creative menu
I know there's the paste tool - I am meaning like world generation esque (like in a mod)
Unless that is there as well lol
how do you change the position of a block in your hand in both 3rd and 1st person?
yes and i think it only works with world gen 2 if im not mistaken
What’s world gen 2?
i recommend just taking the hytale server jar and decompiling it you'll be able to see everything
should I change the group id for a plugin or leave it on dev.hytalemodding
Oops sorry I just finished my PowerAbsorber, PowerSupplier and PowerHolder mods
Make it something unique to you
Mine is com.shubshub.plugin
mhm, okay I just asked because whenever I change it the mod doasnt load anymore and it doesnt find the main class
Yeah the folder structure has to match
eg com / shubshub / plugin
oh so extra folder for each word?
Yeah
eg if you changed it to apples.pizza.pineapple then itd be apples / pizza / pineapple for the folder structure
okay, thanks
All good
I've been struggling to get /prefab load (structure) --children to work, theres something wrong with the children flag. Can anyone get it to work?
Oh no
I just realized now I have to make a logo for my mod eventually
No using AI for that
Just use paint
Yeah
I will, I can actually draw a tiny bit mostly pixelart
Hey, does anyone know how to move NPC's to position with pathfind?
Hey, does anyone know where Mushroom blocks are located in the assetpack?
does anyone know how to translate player position to chunk position and back again?
I would imagine you could atleast convert to chunk position by dividing by 32 and clamping it to the nearest whole number
Hey,
is there something like a Task Scheduler or tick based system to create time based tasks?
Assets.zip\Server\BlockTypeList\PlantsAndTrees.json
That looks close (-311.400, 123.000, -200.761) => (-10, 3, -7)
Nice!
You may need to round up or down potentially
yeah, (-9.7, 3.8, -6.2) => (-10, 3, -7)
Should be -10 -4 -6
No clue how the rounding is determined there
If above 0.5 round up otherwise round down
Or potentially floor always
Whats the actual real chunk position? That will answer it
Interesting...
That is weird xD
You may need to first clamp your own position to the nearest whole number
how can i learn to make hytale plugins for servers
Does Hytale's ECS system have a general method to 'check if a component has just been added' so that I can execute component initialization logic?
There's documentations for example hytalemodding[.]dev/en/docs
But you should also have basic java knowledge, also you can view the code of the HytaleServer api
in your opinion, is that site's java tutorial section worth it, or am i better off learning from a different resource?
Watch some videos by TroubleDev
Decompile the HytaleServer.jar
Get VS Code
Add the server to your workspace
Ask copilot some questions
Off to the races
No joke this is what I did
Within 48 hours ive got an entire mod basically done
I will sooner feed myself to piranhas than I would use any LLM, but the rest of that does sound quite useful!
Each to their own, You dont have to let it write the code but up to you
Because I need to manipulate other components of the entity in the component initialization logic.
If there is no common practice, I could directly add an initialization flag in the component and check in tick() whether it has not been initialized yet.
For basic java knowledge I would recommend using Youtube tutorials or websites which provide you basic java understanding for example : www[.]w3schools[.]com/java/
But most importantly: You will be learning by doing, so keep practicing
Has the Connect package been changed in this update?
But this will only work if you already have basic knowledge of coding
If you want to start from scratch, he/she should get the basic understanding of java like OOP and vice versa
That is true, I came from other languages so it was easier for me
Yeah, I think understanding the concepts of how to code is the most difficult part
I recommend you study programming first, then Java, and finally the Hytale API.
I have a degree in SWE just never got into Java
I'd like to get into the modding scene of this but i'm kind of clueless about it all
Is the create your first plugin guide on the hytale.game site a good place to start? (and get the links to the important stuff?)
But asking Claude how to do various stuff has made it easy to get into
Theres a great video by troubledev on youtube
Its 3 minutes long and gives you the basics
Well, you can use AI for development, but I wouldn't use it to develop for you, but rather as an assistant.
I think Java isn't very difficult if you've learnt the basics of OOP
Yes, I dont let it write code
Keep in mind that AI can introduce several flaws in performance, stability, and especially security.
I use it as an assistant and try to implement it myself
Same. But it does many mistakes because the Hytale API is relatively new
Thats why you also have a copy of the Hytale Server source in your workspace