#server-plugin
1 messages · Page 1 of 1 (latest)
Hmm


🧚
Nice
New home

it me
Okay, let's go. Warp is a deprecated class, is there a replacement for it yet or nah?
helloo 
heyo heyo! is there ant place I can find docs to manipulate the player's model? or it's still something not implemented/accessible for plugins/mods?
still no image perms
Really want to get into plugin developent right now but I have no idea where to start learning java from. If anyone has useful tutorials / courses for Java and want to share my dms are open ❤️
heyo
i recommend starting small, like try add a command that return your playername and health. Then go on from there, i personally never done java or ecs or anything before and i have so far done:
- basic commands (/heal, /whereami, /fight {mob}
- currency system
- Loot crate algorithm with dynamic loot, commands to change the json saving the lootpool (next step here is looking into custom item and connecting that)
- regenerating blocks, including saving what blocks should regenerate and being able to configure the respawn time (WIP)
as in terms of tutorials, TroubleDev`s are kind of a must watch imo, as well as reading the hytalemodding wiki for the part your interested in
Big Discord update - no new forum section for server plugin showcasing. Sad.
Or even non plugin mods. Just no place to show off mods/plugins.
Does anyone understand MultipleHUD because I'm trying to use it in my plugin but I can't update the data on the already enabled HUD?
Buuz has his discord server linked on the Modrith page
Huge thank you so much ill start with these!
I already wrote there that his response speed is terrible. I did what he said it should be done, but it doesn't work at all.
and I need this plugin to continue the process of creating my mod
This is my home now
If you want to learn Java, there's tons of awesome videos on YouTube. If you want to learn hytale development specifically, we have awesome guides at HytaleModding[.]dev and/or you can watch kaupenjoe's youtube videos
I'd go for freeCodeCamp's java videos
🙂↕️ Gotta take a look at that site. I thought there was only worldgen 3
Free is my favorite word
We have everything xd. Although only world gen v2 and npc documentation is official, the rest is written by the community
I will keep that in mind xd
Does anyone understand MultipleHUD because I'm trying to use it in my plugin but I can't update the data on the already enabled HUD?
test
can Block spawn projectiles ?
you mean like a minecraft dispenser?
might be possible to code, similar to the "place ice at x+1 of this block" example, but spawn in a projectile at the center of the block in the direction the block is facing, would need a directional attribute tho
and add a velocity ofc
kind of, more like shoot projectile between blocks
i want to make visual effect between energy network blocks. i made one using particles but when u have a lot of difrent plocks spawning particles they start to disapear(On screen limit?) idk
There is smt like this
// Get the module instance
ProjectileModule module = ProjectileModule.get();
// Spawn a projectile
Ref<EntityStore> projectileRef = module.spawnProjectile(
creatorRef,
commandBuffer,
config,
position,
direction
);
but idk if i can do this from blockstate?
I havent worked with particles at all yet, an idea might be treating each "connection" and Animation particles from one side to another and repeat, similar to botania in mc
Sounds doable with startpoint, endpoint, the vector inbetween, animation speed, particle_type but again, i havent worked with it yet
yea it works i can create beams of particle in one tick or spread "crawl" between blocks but hytale limits how many spawners/particles i can spawn. so when there is a lot of particles they start to desync and spawn in random order
Is it possible to create new blocks using Java only?
I wish I had good news for you... but... nope.
That's so dumb.
Oh I fully agree with you. All assets have to be registered on server start, so that means you can't create any assets programmatically. I hate it.
Can you do it with an earlyplugin?
Eh, that might be interesting but yet, that's usually not a solution to why we want to create assets at runtime.
I haven't looked into world-specific mods yet. What about those?
When you create a world can you create a pack on the fly and register it to the world?
YO, neat, a verified version of the only channel i look at
I have a block that has a 360 rotation animation (keyframes at 0, 90, 180, 270). It's smooth in blockbench, but in-game, there's like an easing effect between each keyframe. Is there a way to keep the animation at a consistent speed?
This doesn't occur with position, only the rotation.
Does anybody know why my permissions.json gets resettet everytime my plugin boots up?
public static void OnPlayerReady(PlayerReadyEvent event) {
Player player = event.getPlayer();
var playerRef = player.getReference();
if (playerRef == null) return;
var store = playerRef.getStore();
var ref = store.getComponent(playerRef, PlayerRef.getComponentType());
PermissionsModule.get().addUserToGroup(ref.getUuid(), HideoutPermissionGroups.User);
}
Is there something you're supposed to be saving, is the module memory-based perhaps?
Im not quite sure what that means. What i do is whenever a player join i just add the player to the group of my plugin for permissions and such, but for example lets say the user also had the group OP before, after that code gets executed it only has my plugin group & andventure which confuses me. Also whenever i restart the dev server i can see how the permissions are completly empty which also confuses me
are we sure it's not just a game thing? I've tried to op myself in an adventure game using the permissions of the world and it never does it, resets itself
I've had that happen a lot but I think it's an issue with the server host, it doesn't happen when I have friends join my local game
anyone here know how i can import (or read) a config/json file in this function? might not need to actually import the config and just read the corresponding json if that works, no changes will be applied just data read
public void onEntityAdded(@NonNullDecl Ref ref, @NonNullDecl AddReason addReason, @NonNullDecl Store store, @NonNullDecl CommandBuffer commandBuffer) {
BlockModule.BlockStateInfo info = (BlockModule.BlockStateInfo) commandBuffer.getComponent(ref, BlockModule.BlockStateInfo.getComponentType());
if (info == null) return;
//read list of blocks that should regen from config
//see if the block added is in this list
String blockID = placeholder.blockID;
Integer ticksUntilReplace = placeholder.ticksUntilReplace;
//if it is, add regenBlock component to the blockEntity with correct blockID, tickspassed = 0 and read the respawnTime from config
RegenBlock regenBlockComponent = new RegenBlock();
regenBlockComponent.setTicksPassed(0);
regenBlockComponent.setBlockID(blockID);
regenBlockComponent.setTicksUntilReplace(ticksUntilReplace);
}```
Is my discord linked now ?
No
What happens when we have a plugin on the server which adds custom items and blocks and users already use that and we remove that plugin ? Is there a way to clean everything up so it automatically removes all like non existing stuff
I know items in their inventory become question marks
You should load the list and other config elsewhere, e.g. on plugin start or probably async afterwards if you can help it, but this might help (I'm yet to do this myself): hytalemodding+dev/en/docs/guides/plugin/creating-configuration-file
(change "+" to ".")
ive done that before for other projects, my issue is more that those projects where in own classes while this one extends refsystem, so i cant just pass in a Config<RegenBlockConfig> next to all the other args
this is how i've done it before:
super("opencrate", "Opens a crate");
this.crateconfig = crateconfig;```
figured it out, i was missing constructor and was trying to put what belongs in the constructor into a function override call
Ah I though the config might have been more of your issue. For RefSystems, do you need a particular constructor form though?
you dont need one generally, thats why i didnt have one yet. but importing a config requires constructor present
oh wait I see, we actually need to pass a instance, the registry doesn't build it. So you can just pass it as normal
I just want to make an furniture set but i have no clue how to mod it in game. I created objects in blockbench but that is all i understand as an animator.
Everyone say yea hytale is easy to mod even when you never have.
Wel i dont understand much of coding. i just want to import my model and click somewhere like hey this is a chest make this object work like a chest. Or this is a bed make it a bed. But nop that is not how it works. XD
So eh…. Where do i start to get my furniture and storages in game working?
do you know what command i can use to get me the blockID from the block in the event? im at the point i can use both getBlock (gives int) and getBlockType (gives blocktype) but i want string (blockID /blockName idk the internal wording)
you want block type, so: blockType.getId()
Hey, I've been working on a server plugin and I've run into two camera-related issues I couldn't solve on my own. I'd really appreciate any guidance!
Issue 1 – Selfie Camera (camera always facing the player's face)
I'm trying to implement a selfie camera mode. The idea is that when toggled, the camera should position itself in front of the player and always look directly at their face, following their head rotation.
My current approach is to offset the yaw by 180° (playerYaw + π) and use MovementForceRotationType.AttachedToHead, but the rotation only gets set once at toggle time. So when the player turns, the camera no longer faces them correctly without sending a new packet every tick.
Is there a recommended way to keep the camera continuously facing the player's face without spamming packets? Something like a relative rotation offset that updates automatically with the player's head?
Issue 2 – Negative distance + DistanceOffsetRaycast causes a crash
I'm using a negative distance value (e.g. -10) to position the camera in front of the player instead of behind them for a zoom effect. This works visually, but as soon as I also set positionDistanceOffsetType = PositionDistanceOffsetType.DistanceOffsetRaycast, the game crashes. Presumably because the raycast doesn't handle a negative distance and tries to cast in the wrong direction or with a negative length.
Is there a built-in way to handle wall/block collision for a front-facing camera without triggering this crash? Or is writing a custom server-side raycast (and adjusting the distance accordingly) really the only option here?
Thanks in advance! 🙏
thanks, have you worked with adding components to blocks before? i was thinking of commandBuffer.addComponent(ref, regenBlockComponent);
but i get error that regenBlockComponent is component not componenttype, is there a way to convert it or am i on the wrong track?
no just limited entity stuff for now. Make sure you register your component/type, atleast I think thats required in general
Also looks like that method requires a ComponentType instead, you'll get one returned from the registry method I think
e.g. from tutorial (though do equivalent for Chunks):
.registerComponent(PoisonComponent.class, PoisonComponent::new)```
Edit: Apparently, TargetUtilscontains some helper methods for that, i.e. TargetUtil.getAllEntitiesInSphere
Original: Is there already an API for spatial queries? So something where you can iterate all item entities in an area?
^ make sure to be on the right thread for that, took me a while to figure that out, even though I though I was
okay thanks, the code runs now, doesnt work yet but i will figure that out surely
yep! Server code apparently wraps the call inside world.execute(() -> { ... }
Is there a way to check if player is in combat
idk but the sprint mod I use has a combat timer
Can’t load custom UI can’t find culprit. Removed tons of mods so far - after today’s update
Just gotta wait for mods to get updated.
Too many broke
Has there been any update to ETA on the node editor for Linux? It’s extremely tedious and difficult to manually try and do world gen through just JSON files on Linux
did anyone get "Add Shovel Crafting Recipes" to work?
Try RotationType.AttachedToPlusOffset instead of MovementForceRotationType.
i'm a bit lost, how does mod validation work in the new update for dedicated servers?
Great one of my mods works fine with the new update but the other whines about targetting a different version. wth.
Time to play "Spot the differences" smh
How can I support other mods without dependency? For example, I want to support the MHud mod.
Do I have to add dependencies somewhere in manifest.json or pom.xml?
yes to both. But make sure you're not telling Maven to include it in your jar
My mod has a dependency that hasent been updated yet 🙁 Mine wont work at all without it 🙁
can i dump some questions onto you?
Sure but I can't promise answers
wait im dm you
I'd prefer it here so others can learn or chime in as well
sure
but its gonna have alot of code
what im trying to do is make a plugin that makes some blocks regenerate, with a config file mapping each block (block id string) to an integer (ticks until respawn). I created the class "regenblock" as a component to store values like ticksPassed, ticksTillReplace and the blockId of what will be replaced. i got the following code so far, the config import from pluginmain is working, but when i place one of the blocks from the config (i put in "Rock_Ice") it doesnt trigger the process
RegenBlockInitializer:
Config<RegenBlockConfig> regenblockconfig;
public RegenBlockInitializer(Config<RegenBlockConfig> regenblockconfig) {
this.regenblockconfig = regenblockconfig;
}
@Override
public void onEntityAdded(@NonNullDecl Ref ref, @NonNullDecl AddReason addReason, @NonNullDecl Store store, @NonNullDecl CommandBuffer commandBuffer) {
BlockModule.BlockStateInfo info = (BlockModule.BlockStateInfo) commandBuffer.getComponent(ref, BlockModule.BlockStateInfo.getComponentType());
if (info == null) return;
int x = ChunkUtil.xFromBlockInColumn(info.getIndex());
int y = ChunkUtil.yFromBlockInColumn(info.getIndex());
int z = ChunkUtil.zFromBlockInColumn(info.getIndex());
WorldChunk worldChunk = (WorldChunk) commandBuffer.getComponent(info.getChunkRef(), WorldChunk.getComponentType());
if (worldChunk == null) {
return;
}
String blockID = worldChunk.getBlockType(x,y,z).getId();
if (blockID == null){return;}
//get the config
RegenBlockConfig regenBlockConfig = regenblockconfig.get();
//check if the block should regenerate
if (!(regenBlockConfig.getRespawnTimeMap().containsKey(blockID))){
return;
}
//read the regeneration time from config
Integer ticksUntilReplace = regenBlockConfig.getRespawnTimeFromString(blockID);
//initialize new RegenBlock component
RegenBlock regenBlockComponent = new RegenBlock();
regenBlockComponent.setTicksPassed(0);
regenBlockComponent.setBlockID(blockID);
regenBlockComponent.setTicksUntilReplace(ticksUntilReplace);
}
@Override
public void onEntityRemove(@NonNullDecl Ref ref, @NonNullDecl RemoveReason removeReason, @NonNullDecl Store store, @NonNullDecl CommandBuffer commandBuffer) {
BlockModule.BlockStateInfo info = (BlockModule.BlockStateInfo) commandBuffer.getComponent(ref, BlockModule.BlockStateInfo.getComponentType());
if (info == null) return;
RegenBlock generator = (RegenBlock) commandBuffer.getComponent(ref, HyArenaPluginMain.get().getRegenBlockComponentType());
if (generator != null){
int x = ChunkUtil.xFromBlockInColumn(info.getIndex());
int y = ChunkUtil.yFromBlockInColumn(info.getIndex());
int z = ChunkUtil.zFromBlockInColumn(info.getIndex());
WorldChunk worldChunk = (WorldChunk) commandBuffer.getComponent(info.getChunkRef(), WorldChunk.getComponentType());
if (worldChunk != null){
worldChunk.setTicking(x,y,z, true);
}
}
}
@NullableDecl
@Override
public Query getQuery() {
return Query.and(BlockModule.BlockStateInfo.getComponentType());
}
}
And the RegenBlockSystem:
@Override
public void tick(float dt, int index, @NonNullDecl ArchetypeChunk archetypeChunk, @NonNullDecl Store store, @NonNullDecl CommandBuffer commandBuffer) {
BlockSection blocks = (BlockSection) archetypeChunk.getComponent(index, BlockSection.getComponentType());
assert blocks != null;
if (blocks.getTickingBlocksCountCopy() != 0){
ChunkSection section = (ChunkSection) archetypeChunk.getComponent(index, ChunkSection.getComponentType());
assert section != null;
assert blockComponentChunk != null;
blocks.forEachTicking(blockComponentChunk, commandBuffer, section.getY(), (blockComponentChunk1, commandBuffer1, localX, localY, localZ, blockID) ->{
Ref<ChunkStore> blockRef = blockComponentChunk.getEntityReference(ChunkUtil.indexBlockInColumn(localX, localY, localZ));
if (blockRef ==null){
return BlockTickStrategy.IGNORED;
} else {
RegenBlock regenBlock = (RegenBlock) commandBuffer1.getComponent(blockRef, RegenBlock.getComponentType());
if (regenBlock != null){
WorldChunk worldChunk = (WorldChunk) commandBuffer.getComponent(section.getChunkColumnReference(),WorldChunk.getComponentType());
World world = worldChunk.getWorld();
int globalX = localX + (worldChunk.getX()*32);
int globalZ = localZ + (worldChunk.getZ()*32);
if (regenBlock.getTicksPassed() >= regenBlock.getTicksUntilReplace()){
regenBlock.setTicksPassed(0);
world.execute(() -> {
world.setBlock(globalX, localY, globalZ, regenBlock.getBlockID());
});
return BlockTickStrategy.SLEEP;
} else {
regenBlock.incrementTicksPassed();
return BlockTickStrategy.CONTINUE;
}
} else {
return BlockTickStrategy.IGNORED;
}
}
} );
}
}
@Override
public Query getQuery() {
return Query.and(BlockSection.getComponentType(), ChunkSection.getComponentType());
}
}
I can help you think about the process but I'm not reading all your code
lmao fair
my fear is that the ref i take at entity removal is not actually a ref that contains the regenBlock component and therefore never applies the ticking system
what im trying to do is make a plugin that makes some blocks regenerate
So when players break blocks, the blocks eventually come back on their own so they can be farmed repeatedly.
with a config file mapping each block (block id string) to an integer (ticks until respawn)
Okay, different block types have different respawn durations.
I created the class "regenblock" as a component to store values like ticksPassed, ticksTillReplace and the blockId of what will be replaced
That's how I would tackle it as well. When a block is broken and turned into theEmptyblock, attach a component to it that is responsible for keeping track of when it should respawn. This component will be serialized with the world, so we don't have to worry about losing this information on server restarts. Also, when a block is placed in a spot where a respawn component is present, we can decide how this should behave.
... when i place one of the blocks from the config (i put in "Rock_Ice") it doesnt trigger the process
Wait you want to listen for placement, not breaking?
i didnt even think about placing in a regen spot yet tbh, i think im my current idea it just gets overwritten by the replacing
dont i need to listen for placement to apply the regenBlock component to the block?
then listen for removal to activate the ticking
my thinking is:
placement -> check if block should regenerate, if yes add component regenBlock
removal -> if component regenblock is present, start ticking
tick-system -> respawn if ticks reach threshold
I don't understand why you start regenerating a block upon placement, and not when it's mined
i dont think i am
oh, you're thinking you attach a component but it's inert until the block is mined
don't you want this to apply to natural blocks?
maybe later, for now player placed would be fine so i can see the rest of the algorithm works
yeah it's fine. just an extra step. I would probably make it two separate components then. One to say "this block is player-placed" and another to say "a block will respawn here"
so your ticking system only needs to query for the latter category
Thanks for the suggestion! I've been experimenting with the settings, but I’m still struggling to get a freely rotatable camera that faces the player. Here is a summary of what I’ve tried:
1. Using AttachedToPlusOffset
settings.rotationType = RotationType.AttachedToPlusOffset;
settings.rotation = new Direction((float) Math.PI, pitch, 0f);
Result: Yaw is ignored; camera stays fixed behind the player's head.
2. Using Custom + LocalPlayerLookOrientation
settings.rotationType = RotationType.Custom;
settings.applyLookType = ApplyLookType.LocalPlayerLookOrientation;
Result: Player's head rotates freely, but the camera itself remains static.
3. Closest attempt (Static Selfie)
settings.rotationType = RotationType.Custom;
settings.applyLookType = ApplyLookType.Rotation;
float yaw = playerRef.getTransform().getRotation().getYaw()+ (float) Math.PI;
float pitch = (float) Math.toRadians(-20f);
settings.rotation = new Direction(yaw, pitch, 0F);
settings.movementForceRotation = new Direction(yaw, pitch, 0F);
Result: Faces the player at start, but camera is static/locked.
My goal is: I want the camera to always face the player's front (180° offset) while still allowing the player to orbit the camera around the character. Any ideas on how to make AttachedToPlusOffset actually respect the yaw offset or how to make the camera orbit in Custom mode?
Edit: I've also tried both isLocked true and false when sending the packet over to the Player.
The new update broke more than 50% of the mod community. 😭
more like more then 68%
it'll probably take a few rounds before folks know how to prepare for a new release on both ends 💜
even some of the modders that had prepped and gotten a new version lined up on the pre-release are still having out-of-date popups so there's probably some coordination there that can happen in the future to let modders get on top of it ^^
69% looks better
How dare you i avoided the numbers above and below
why not server gonna crash anyway xD
Also weird setup they did on discord cloning channels for owners and guests not sure why even
Yeah it's not supported for the 'server camera' to orbit.
Best I could get:
cameraSettings.attachedToType = AttachedToType.LocalPlayer; cameraSettings.positionLerpSpeed = 0.2f; cameraSettings.rotationLerpSpeed = 0.2f; cameraSettings.isFirstPerson = false; cameraSettings.eyeOffset = true; cameraSettings.applyLookType = ApplyLookType.LocalPlayerLookOrientation; cameraSettings.positionDistanceOffsetType = PositionDistanceOffsetType.None; cameraSettings.positionType = PositionType.AttachedToPlusOffset; cameraSettings.positionOffset = new Position(-2.5, 0, 0); cameraSettings.rotationType = RotationType.AttachedToPlusOffset; cameraSettings.rotation = new Direction((float) Math.PI, 0, 0); cameraSettings.rotationOffset = new Direction((float) Math.PI, (float) Math.PI / 8, 0);
You can disable move with the Rotation applyLookType, but move still wiggles the character as long as it's AttachedToType.LocalPlayer.
Maybe if the selfie is very close to the character you can enable sendMouseMotion and handle the MouseInteraction packets.
Or if you attach to an entity you could open a page with a cute camera UI where people click arrows to move and thus you could operate the camera as you please detached.
I know this camera packet will be looked at sooner than later but this is it for now (afaik).
isLocked is to to let the player toggle between 1st and 3rd person with the non-custom type.
when's the official documentation coming out 😩
moreso when's the hytale version of spigot coming out 😅
I am actually curious if that would be actually neccasary.. I mean its already as open as it could be
actually a server software that replicates the function names and stuff of spigot to make it 1:1 hytale compatible would be awesome.. like a compatibility layer lol
it would make going from spigot coding to hytale a lot easier
Thank you! That's better than what I've achieved so far.
Hey guys do you know if there's any voice chat system where you can hear people around you by default without specifically doing your setup first to join voice?
no, currently the only way to capture voice is via an external program (running on the users computer or browser)
ah thank you, hopefully soon akin to MC
yes, they said it's coming soon
ik Simon mentioned this but was in a "I don't know if before release" so deff not short term unless he re-confirmed this later
did he mean release of update or release of the game?
he said recently that they already have a prototype working and it only needs polish and integration
so I'm guessing it's a matter of weeks rather than months
kk, he also did mention they had in-game youtube/twitch viewer which was removed
gotta bet it's because they have to let ads play or...
angry youtube sounds
no, it was because the library they used for the prototype was outdated and had licensing problems
oh that's interesting, I imagine as long they let modding do more modders will get to it without them having to touch official support for it
since the last update my plugin dev template now says it is old version and my client cant connect to it. How do i update the plugin dev server ?
so im having issues with mods that were updated today causing my server to crash even tho the server is running todays update
anybody else havin this issue?
the mod I am talking about updated today... todays update is causing crash but if I use older one it works fine
odd! maybe they'll release a fix for that soon, but in the meantime you can probably still use the older one?
yea the older one works fine its just weird
Can someone give me a hand with my mod. Its making my game crash everytime I load into a server or singleplayer world. Im not getting any obvious errors in console or the logs. It was at a point where the server wouldnt boot up but I fixed the errors and removed my player files and it let me in. after a couple changes and rebooting the server it wont let me in anymore. I went through and undid all of the changes I made, completely reverted back to the version I backed up before I started making changes, and it still wont work now.
I am getting an error stating "A critical error occurred: Object reference not set to an instance of an object"
Edit: It seems DebugUtils is the way to go, i.e DebugUtils.addCube(...)
Original: Is there a way to have debug drawings inside the world? So gizmos and simplified renderings to debug functionality?
EssentialsPlus + OrbisGuard
anyone else update their server and have everything break? like it keeps crashing on start?
quite a few
bet
Or keep the server offline and try it on the local in your own world. Because then it don’t need so much time with online->offline->online-> …..
Good point.
I did it 2 days ago
Test it local and when I found the issue test it on Server and solve the issue.
But you‘re right there can be a difference between local and server
Or, you could do a binary search instead
hate to get to that point, love that it speeds things up so much compared to batching 🙂↕️
a
ive builded my mod with the latest server jar and yet still it shows that one or more plugins targeting a different server version. anyone knows how to fix it? changed manifest entry?
Are you running any plugins/mods beside yours?
If so they might not be updated yet, or theoretically work but havent been updated to the New Syntax (you cant know so probably take them out until official update)
is there a way as command to let me show which plugins are affected?
Dont think so, someone posted their message earlier where it said "your mod 'arc' is not for this version" but idk why it said that
I only have my plugin on my test Server so i Just had to change Manifest and im good to go
Whats the problem as it just saying it's out of date isn't a problem or affect
well its been showing regulary, now im not sure if its only visible to ops/* perms or every user
it will only shot to the server side and the user that runs the server so op only time it will show to a end user if it affects them
how does your manifest entry looks like?
{
"Name": "{name}Plugin",
"Group": "com.{groupname}",
"Version": "1.0.0",
"ServerVersion": "2026.02.17-255364b8e",
"Description": "Plugin for the {plugin feature}",
"Main": "com.{groupname}.{plugin mainfile name}"
}
The person who decided to delete the channel history, I hate you. Thanks for complicating mod development, because now I can't find the code examples I need that people shared over two months ago.
^ Looks like they just deleted the original plugin channel, keeping the verified channel, but yeah I agree the original was probably more valuable to keep (Even though it had stuff from before release).
Did the general mod development channel get folded into this one or #game-discussion?
yeah, would hope it's archived
Should of wrote it down somewhere for you to remember as a backup plan
Rule Uno Numero Numbo Wan: Always paste the code of importance somewhere in the backlog of your google docs.
You see good code, you keep it somewhere in an organized google docs or of some type.
Thanks for coming to my TED talk 
oh the channel outright delete is crimes against modding and knowledge.
Someone should be put in trial for this. So much lost info that could be searched up.
Does hytale record player playtime?
Yes. it's just not showing up yet.
Yeah that is a good shout.
So this channel is what replaced the Modding Discussion channel?
this one replaced the old server-plugin channel
Hey, does anyone know the current workaround for fetching player skins for web display? I've noticed a few sites doing it already, but I'm curious about the specific endpoint or method they're using. Any leads?
I only know that they probably making get request to this endpoint https://account-data.hytale.com/profile/username/write_there_username then they are fetching info from it.
Hi there, i've had NoCube tavern mod, the mod is incompatible with Hytale 0.3
So i can no longer use it, but once i charge a chunk with old tavern furnitures, the map crashes, what can I do 🥲
re-enable the mod.
and try this #community-help message
if it continues to crash, you can restore backups and see if you can boot
otherwise you'll just have to report it too the mod owner.
agree but im running a server not a local map
try --skip-mod-validation parameter in the hytale-server jar
Is anyone here perhaps creating public API documentation?
there are a bunch, but a lot is just ai generated
I decompiled the entire HytaleServer using Vineflower to check only the essentials for creating my own documentation. But since there's a lot to cover, it would be nice if someone were working on public documentation.
I like to use hytalemodding,dev. They even have a collection of the official docs that have been shared by the Hytale team. I'm sure other people here will be happy to share the docs they like using as well
Cool, I'll take a look.
I also use hytalemodding and just stumbled upon hytale-docs on github by vulpeslab
Also for everyone who wants to put Mods on Curseforge or wherever.
Please put "ServerVersion": "2026.02.18-f3b8fff95", instead of "ServerVersion": "*", in your Manifest.json
Everytime they update, you need to do this. "ServerVersion": "Newest Version",
If someone got a msg ingame, that one of your plugins is outdated: go in to your mods folder and edit the mod jar file with winrar or unzip.
Go in to the manifest and edit the line: "ServerVersion": "2026.02.18-f3b8fff95", (If its not there, just paste it in there. Watch for the , if there are lines behind it. Save it / repack it and youre good to go.
Looking to hire someone to make a mod of miniature objects that can be placed anywhere-- think tiny houses, tiny trees, little boats, little animal mobs
That's very annoying tbh
My mod works and shows a warning for no reason
I also created gradle task for plugin developers that does that automatically
def manifestFile = file('src/main/resources/manifest.json')
doLast {
if (!manifestFile.exists()) {
throw new RuntimeException("Could not find manifest.json at ${manifestFile.path}!")
}
def updatedText = manifestFile.text
def versionPattern = /"Version"\s*:\s*"[^"]*"/
if (!(updatedText =~ versionPattern)) {
throw new RuntimeException('manifest.json is missing the "Version" field')
}
updatedText = updatedText.replaceFirst(versionPattern, "\"Version\": \"${version}\"")
def includesPattern = /"IncludesAssetPack"\s*:\s*(true|false)/
if (!(updatedText =~ includesPattern)) {
throw new RuntimeException('manifest.json is missing the "IncludesAssetPack" field')
}
updatedText = updatedText.replaceFirst(includesPattern, "\"IncludesAssetPack\": ${includes_pack.toBoolean()}")
def serverJar = file("HytaleServer.jar")
def serverVersion = null
if (serverJar.exists()) {
java.util.jar.JarFile jarFile = null
try {
jarFile = new java.util.jar.JarFile(serverJar)
serverVersion = jarFile.getManifest()?.getMainAttributes()?.getValue('Implementation-Version')
} finally {
if (jarFile != null) {
jarFile.close()
}
}
}
if (serverVersion != null && !serverVersion.isBlank()) {
def serverVersionPattern = /"ServerVersion"\s*:\s*"[^"]*"/
if (!(updatedText =~ serverVersionPattern)) {
throw new RuntimeException('manifest.json is missing the "ServerVersion" field')
}
updatedText = updatedText.replaceFirst(serverVersionPattern, "\"ServerVersion\": \"${serverVersion}\"")
}
manifestFile.text = updatedText
}
}```
in manifestFile you have to put path to your plugin manifest file
in serverJar you have to put path to your server jar file
Maybe that will help someone also
How do you see the server version?
Nice one!
Where is it displayed if at all?
I guess you want your server always stay updated right?
Then you can just use the Version Line out of the Hytale Launcher on the bottom
Under "Play" - Version: (This One)
But as jaszka already posted, this one would automatically grab the version.
I can't get my plugin to compile at all now, how do I even update the HytaleServer.jar to the latest one?
I get failed to validate npc's and I have no npcs in the plugin at all
Can you post your whole compile log?
after updating your hytale via launcher just copy it from %appdata%\Hytale\install\release\package\game\latest\Server
I don't have a .jar there at all
Where did you install your hytale?
it is there, but .jar is not present, just .aot
Bro... 😄
C:\Users\User\AppData\Roaming\Hytale\install\release\package\game\latest\Server what?
Very helpful message btw, no idea what you meant
Bro was related to "theres no jar at all"
So either you deleted the jar or it is somewhere else.
No, I did not delete it, I only have it in the C:\Users\User\AppData\Roaming\Hytale\install\release\package\game\build-9\Server directory, which I assume is not latest...
Start the Hytale Launcher, can you update?
Do you have pre release selected in launcher?
Go under settings Patchline = Release go down and uninstall reinstall.
No and yes I uninstalled the latest update and clicked update again now, will see if it works
Should be
/version command
Now .jar is there but I don't see it linked as a external library with gradle in the IDE
because you have to link it by yourself
I thought it was automatic, I didn't have to link it when I grabbed the plugin template?
How do I let gradle link it, my other project does that, I didn't touch anything and it points to the latest HytaleServer.jar
what ide do you use
It popped up when I restarted it, intellij, why does the server still fail to start, "failed to validate npc's" which I don't have
Assets Hytale:Hytale failed to load.
how do you starting server
with the :runServer task
Yes but, can you just paste me the runServer task from build.gradle?
wait, I just noticed, my current project somehow know about the other project's assets, how is that even possible
This? ```afterEvaluate {
// Now Gradle will find it, because the plugin has finished working
val targetTask = tasks.findByName("runServer") ?: tasks.findByName("server")
if (targetTask != null) {
targetTask.finalizedBy(syncAssets)
logger.lifecycle(":white_check_mark: specific task '${targetTask.name}' hooked for auto-sync.")
} else {
logger.warn(":warning: Could not find 'runServer' or 'server' task to hook auto-sync into.")
}
}
it's from kaupenjoe's template
I don't know where the task file is if it has a file, I am new to Java and have never used gradle before
in the github page it says If you for example installed the game in a non-standard location, you will need to tell the project about that. The recommended way is to create a file at %USERPROFILE%/.gradle/gradle.properties to set these properties globally. did you do something similiar?
No, the game is in a standard location
The other project is not really mine since I collaborate with another person so I really do not know how that is set up
is it possible to extract the information who placed the block from the onEntityAdded event? (query filters for blocks only)
public void onEntityAdded(@NonNullDecl Ref ref, @NonNullDecl AddReason addReason, @NonNullDecl Store store, @NonNullDecl CommandBuffer commandBuffer)
Finally i was home and could link to my discord account.
Welcome back!
Hi
Guys, how do you think we could implement block rotation in the game? You know, like when you attach a block to some gears, start spinning them, and the block rotates along with them?
create the animation in blockbench and set it to loop?
You can already attach models to a block. like how ores are shown. If you have access to the model you have access to a transform, apply a rotation to the transform.
Danis way work as well, but it really depends on how you want to control the speed between components if any.
Or wait attach a block to it, I am not sure we can handle separate chunk grids as the game is implemented. So might require some heavy entity magic.
If one talks about train like create or valkyrian sky does in minecraft, its really a fully separate system that creates separate chunk grids that are moved and just rendered. Took a ton of work.
Since we don't have access or can modify how the client renders anything, it depends heavily on what support hytale already have.
I am fairly sure its not just to connect a transform component to a chunk and rotate it. ^^
oh wow it was that I had on the launch parameters since I started testing on pre-release and yesterday everyone was asking me how did I skip mod validation and I didn't remember

this is gonna sound like a massive weeb. but today I felt like that gojo running meme, having the same convo with everyone over and over in 6 different channels haha
people don't realize they can toggle of the validation check in single player or multi
I was literally derp because I knew I did something but for the hell of me didn't know what did I do to skip validation
Something the devs themselves could have said "hey by the waaay you can do this" it'd save a million people panicking
doesn't help slikey, doesn't post any of their updates here. so when they talked about the breaking change window for modding api, and working on allowing to select specific game version in the launcher
someone yesterday even coded a github script to auto-inject the version on all mods files that's how omg it was
and it was a simple parameter derp derp derp
I mean, that is legit a good idea, I do think proper CI/CD tools, with webhook releases would be nice
it would atleast stop the complaining from the uninformed
It's just documentation, I know they want pretty patch notes but they also need technical ones.
i'm curious: how would i do do add a custom animation for a weapon i made when the player gets it in their hand?
like instead of the classic animation when the item appears on the right side of the screen and the player raises the arm to hold it
I use Query but how can I read on my website how many players are active and server is on? 😄 Somehow worked today it crashed
The new patch updated the hytale server protocol version to hytale/2, anyone know of any documentation that shows what's been added? I'm hoping you can now get player counts and other metadata straight from the protocol instead of using an external plugin
Yes, but it had already been changed to hytale/2 in the previous version.
Ahh okay, I only just noticed because my pinging script broke on update 3 and changing the protocol version fixed it
Yeah, I was racking my brain over that too because of my proxy, lol.
I got very lucky with my first guess being to change that single byte from the 1 to the 2 and it just worked. Saved me a few hours of headaches by pure luck haha
hey where is the changelog about the small patch from today?
There doesn't seem to be one, so the patch is likely just security (and not gameplay/bug) fixes.
alright, thanks
If the block has an entity then if it's placed through the interaction system it should have the PlacedByInteractionComponent
Please send the code that disables messages about players disconnecting from the server
What's the message in English?
public static void onPlayerAddWorld(AddPlayerToWorldEvent event) {
event.setBroadcastJoinMessage(false);
}
the same for disconnect
Yeah I think there is no such hook for the leave message atm. I'll add something.
yo minikloon you know if we are getting any of those channels back
totally off topic ive just been waiting for a mod to chat to ask but they are inactive lul
I noticed there used to be two server-plugin channels and now there's only one in verified. Is that what you mean? Cause I don't decide anything about the Discord I have no idea.
the discord manager person deleted a number of channels so now there arent ones for like blockbench help or modding
Are you planning to add MOTD for Hytale servers? How soon?
oh that's why Search is missing a bunch of stuff
in addition to the useful things that were in the past channels
yes, but I don't think there's an ETA
I remember Silkey saying that they need to remake the server list first
would it be wrong of me to go update the last 10 mods my server needs to run lol, as they all work they just need the version changed lol
The update seems to have broken my world. I assumed it was the handful of mods we run on our server but I disabled all those and am still getting red errors in the console about failing to load chunks. The server is very unresponsive: stamina doesn't update when sprinting, blocks don't break, etc. The server itself doesn't really shut down properly anymore, either. It's very very slow to shut down and I have to click the X button to close the window out myself. Is there anything I can do to sort of reset files without losing progress?
@crude apex & @spiral cliff you need to click on the top near to the green checkmark and where hytale is marked on the left sidebar , a context menu will pop out you can ckick on show all chanel and you will see them
once again
that is not correct
where would #discussion be? id:browse only says there are 17 channels
oh wow thanks, didnt know what i was tryna make was fully integrated alr, Ws
what a wast of free documentation and help over the past week
There is HytaleServer.get().getConfig().getMotd(); already, it's just not exposed to clients server lists yet
ah so my question finally got an answer.. yes every hotfix i have to go and update my mods... thats going to get annoying
It's actually good practice, it encourages devs to be proactive about updating their work
and users will be sure that the mods they install have been tested on the current version
sure it is nice for the big updates, but people like me who work 9-12 hours a day, and only have 1 day off some of my mods wont get updated till saturday
Understandable yeah, it can be tedious no doubt about that
In the future there will be a better workflow so the pre-releases will be more reliable for us to build against
its just the hotfixes cuz those can come at you like 4-6 of them in 2 weeks lol
does mis match version stop a server from loading though? or can the server still boot as long as theres no mods that fail to run
wasint sure if anyone has tested that yet, as my server is still down waiting for mod authers to post there updates lol, and didnt wanna corupt anything by just booting the world up
Doesn't stop it from loading, but no one can join
is there a way to by pass that? or is that like hard coded
i mean i guess i could just go and update there manifests
Hey guys :) I've seen that the new version finally starts to introduce support for SNI. However, the attribute is not propagated to the actual channel in HytaleChannelInitializer, does anyone know how to access the SNI in an other manner?
already exist way to generate .bson world file ? Which use InstancePlugin for generate world
via the InstanceWorldConfig.CODEC
do we have date for the boats update?
I love making a mod and then once I'm done the mod doesn't work cus the intellij plugin hasn't been updated for 3 days lmao
Hi lads, i cant find any docs about Hyatale GUI.
How mods create custom GUI?
is there a UIEventBindingType for closing the UI? I assumed that's what CustomUIEventBindingType.Dismissing was but not sure that's right
@torpid prairie I can dm you a good resource
Thanks 🙂
Does anyone know why the actual time on the server console is 2 hours behind? so now my logs are always 2 hours behind, even though my server time is correct, is there a way to set the time on the server?
Mine isn't
[2026/02/18 19:37:43 FINE]
mine also shows that time... but my real time is 21:39 currently
It's probably just using GMT+0
yea wonder if you can change it
Official docs for the .ui file markup is at hytalemodding,dev/en/docs/official-documentation/custom-ui
What's up with prefabs on latest update? I already deleted the .cache but the server insists on erro'ing the very files it generates on boot [PrefabBufferUtil] Failed to load .cache/prefabs/Hytale_Hytale/Server/Prefabs/Trees/Oak/Stage_2/Oak_Stage2_011.prefab.json.lpf
Anyone have a idea how serverlists get the player numbers since they dont use HyQuery or similar? mh
I have so broken my project settings, i am spending my time trying to understanding gradle and where the line goes between gradle and intellij.
Also don't like that each plugin example refers to difference dependencies that i have no real insight into what they do.
I feel am almost to old for this. ^^
you guys having issues after this patch with it not skipping mod validation ?
I looked into that briefly... It's set in the main JAR file, but it can be set as either a global or function specific value. I don't have that kind of Java experience so I didn't dig any further. Just know the value is set to GMT +0 and move on with your life 🙂
thanks, yea maybe they will bring in a time setting later in the configs, or atleast see your server time
That was my thought as well. I'm sure there could be a simple override for the time setting through a config file - but as far as I can tell one hasn't been implemented. Pulling the current time and time zone from the local server would also make a lot of sense.
yea, exactly, thought this is basic, lol
Yay it works builds and i can join again, and I could even see a few more components listed in my mod i think.
Hey, i need help i don't find for cancel pickup Stone Rubble - Medium
I tested the Interactively PickupItemEvent (I get debugging but canceling doesn't work)!
they are totally fcked even spawnmarker with prefab
It's so weird I didn't notice these errors running pre-release, and then it breaks on release? It's supposed to be the opposite D:
All I know is now I want bacon 🙁
and some big tower prefabs I made now selecting it doesn't place, doesn't let me see the preview or place them.
had to install the previous version to place them in world and move back to the latest version
What's with the obnoxious "these mods are f*cked" notification when I try to enter my world? Is there a straight forward way of updating them?
if they haven't failed to load, you can manually change their versioning by going into the "manifest.json" and entering the new version. I've also heard that using the " * " symbol can also be used as a wildcard option, but i've not tried myself
v
is thee a community FAQ about running a local server? I've got the server running on ubuntu... I can start it up and join it, but the authentication doesn't seem to last long, even though I do auth persistence Encrypted and the world doesn't seem to persist if I stop the server and restart it. Also, having trouble getting plugins loaded.... they're in the mods folder, though I have mods/mods/mods/ - not sure why theres 3 nested
Is there a way to access the Asset Editor outside of the game??
There is an official one here: https://support.hytale.com/hc/en-us/articles/45326769420827-Hytale-Server-Manual
Sounds like you have some file system problems. /auth persistene Encrypted is about persisting your hytale account authentication. The world should be persisted no matter what. Double check that your user has the correct directory permissions
persistence / yes - I understood both, just seems everytime I start the server I have to authorize it again.
that might be due to the same reason the server can't save your chunks
OH
I KNOW THE ANSWER TO THIS ONE
cd to the Server directory first and then run the launch command
me? I have a start.sh
well it sounds like it's running in the default java directory and not the actual server directory
had that happen before
long shot but would anyone know where i need to start looking with regards to the food and effects buff timers and where its recorded and saved?
Check out RaycastAABB in the math library or SpawnDeployableFromRaycastInteraction
ray tracing in hytale when
Hello, I've looked for answers on this channel, but I just can't figure out why my plugin won't work, the server won't even load it.
The server is the latest version, i made sure to set the server version in the manifest to the current one, i placed the .jar in the mod. It used to work, but now I get the message that the mod is targeting the wrong server version, I tried the * too.
I am just changing things and rebuilding to see if i can figure it out, but it seems that i hit a dead end...
What's the error message?
what do you get when you run /version
One or more plugins are targeting a different server version. It is recommended to update these plugins to ensure compatibility
I loaded nitrado webserver and query and those plugins worked.
As for /version: v2026.02.18-f3b8fff95 (release)
i think i need to try to load the mod without nitrado's mods
The message was about those other mods, but it seems like it's not related to my plugin not loading as I removed them, the message no longer appears, but the mod still doesn't load
so you should be getting a different error message as to why your plugin doesn't load now, right?
is there a mod that lets minecraft and hytale chat communicate together? some of my friends are playing mc and others are playing hytale and i run both servers
Thanks for the help, i think i figured out, I guess the lesson is to try to navigate the flood of logs in the console
[2026/02/19 00:08:58 SEVERE] [PluginManager] Failed to load 'rootblind:hytalecord' because the dependency 'Nitardo:WebServer' could not be found!
[2026/02/19 00:08:58 SEVERE] [PluginManager] One or more plugins are targeting a different server version. It is recommended to update these plugins to ensure compatibility.
That sounds like a fun thing to get done, maybe through a discord server.
maybe I could build the Nitardo mods myself to target the new version?
the servers themself already have individual discord links 
Both the hytale and the minecraft server would need a restapi server and to communicate through endpoints.
Hytale has an event called PlayerChatEvent that triggers whenever someone sends a message and you can fetch the sender and the content of the message, I guess minecraft would have something similar, so you would have to connect them and let the chat events send to each other the messages
Yeah but I mean using a bot that's sending copies of the hytale messages into a discord and then another that connects to the Minecraft server, and they each handle their part of the chat transactions
It's open source so that's possible, yes
Thank you again!
I was too dumb to read
ngl yeah the chat thing is kinda cool and that shouuuuld work
I will just leave it here, maybe someone else in need will stumble into it: My problem originated from
Plugin Manifest
In your plugin's manifest.json, define Nitrado:WebServer as a dependency:
{
"Dependencies": {
"Nitrado:WebServer": ">=1.1.0"
}
}
I tried playing around with the version, but it didn't work, so i just removed the dependency and now everything loads fine after I updated the webserver mod's pom.xml server version to target the right one and I removed the dependency from my mod's manifest.
Good luck everyone!
How do I fix this:
One or more plugins are targeting a different server version. It is recommended to update these plugins to ensure compatibility.
Wait
Turn on check "Skip mod validation" in world settings
umm as the plugin dev, should I care about this error?
you should update the server version in your manifest.json and make sure the plugin works as expected on the current version of the game
anyone knows how i can get the defens value of a player? its not in the assetmap
im curious to know that too
Do you mean armor? That's handled in DamageSystems.ArmorDamageReduction which is using DamageSystems.ArmorDamageReduction.getResistenceModifiers()
ArmorDamageReduction in DamageSystems has been deprecated
Did you update the version in your manifest? What does the error say?
it says it's an outdated mod
and when i boot the world, it says the mod failed to load
my version says 1.0.0, and my server version says *
if i remember correctly, according to the code, the asterisk is treated as no server version
should i change version to 3.0.0?
no, the latest version is 2026.02.18-f3b8fff95
huh, how do i reflect that in the code?
you plop that in your manifest
ah, okay
ok, i dug and dug, this is the best i could come up with.
Its not sexy, but it works
World world = player.getWorld();
Map<DamageCause, ArmorResistanceModifiers> reduction = ArmorDamageReduction.getResistanceModifiers(world,
player.getInventory().getArmor(), false, null);
int defense = 0;
DamageCause asset = DamageCause.getAssetMap().getAsset("Physical");
ArmorResistanceModifiers mod = reduction.get(asset);
if (mod != null) {
defense += (int) Math.ceil(mod.multiplierModifier * 100);
}
return defense;
if theres a better way, im all ears
EffectControllerComponent effectController = store.getComponent(victimRef,
EffectControllerComponent.getComponentType());
Map<DamageCause, DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers> modifiers =
DamageSystems.ArmorDamageReduction.getResistanceModifiers(
world, armor, player.canApplyItemStackPenalties(victimRef, store), effectController);
// Walk the damage cause inheritance chain (same as engine does)
float reduced = baseDamage;
DamageCause current = cause;
while (current != null) {
DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers mod = modifiers.get(current);
if (mod != null) {
reduced = Math.max(0, reduced - mod.flatModifier) * Math.max(0, 1f - mod.multiplierModifier);
}
current = modifiers.containsKey(current)
? modifiers.get(current).inheritedParentId : null;
}
thats a lot diff than mine 😂
anyone knows how to check serversetblock before it turns empty?
but be prepared for future updates:
@Deprecated
public static class ArmorDamageReduction extends DamageEventSystem
yeah, i do worry about that
didnt found any replacement though
damagecalculator
they releasing launcher updates and no notes on what is being changed?
did you find a solution?
i think you use the InteractivelyPickupItemEvent event
(nevermind, they said they tried that)
(oh, it just stops it going into your inventory)
Cancelling it just makes the item pop off and hover on the ground
Does anybody know or had the same issue that the permissions.json always gets resettet everytime i restart the server?
is anyone fluent with the interaction json file structure?
i want an interaction to detect whether the player is pressing the left or right key
That happens even in singleplayer servers ;(
:/ But how am i supposed to give a permission manually when it just resets everytime i restart the server
You report it in the bug reports, cross your fingers and pray that it's fixed soon, I guess...
On what platform? Any mods?
The server will overwrite the file when it closes, but if you modify it while the server is off it shouldn't reset it. It doesn't for me.
Only when i execute this code:
var initAdminPermissions = Set.of(
HideoutAdminPermissions.HIDEOUT_ADMIN
);
if (initAdminPermissions == null) return;
PermissionManager.AddPermisionToGroup(HideoutPermissionGroups.Admin, initAdminPermissions);
Ok I found the solution when you execute it in setup it resets all when you execute it in startup it works
Would anyone be so kind and help me test my plugin ingame realquick? I need another player to check if it works properly 😄
Sure
Cant DM you
Do you save the permissions for the hideout admins at any point. That you set something in a system, won't automatically mean that its actually stored or automatically loaded in all cases. Just random thought.
How much RAM is needed to support a server with 100 players?
The default store hold entities the entitystore hold components for entites.
Whats the clearest way to query or fetch or collect all components for a given entity.
Is the entitystore once you have a ref only a store with the refs own components or do you still have to filter the refs components out of the store with data from the ref itself?
I know i can query for a given component that makes me think the current store is reduced to its own...
Anyone figure out how to remove items from the crafting bench? every time I remove something, it reappears after the next restart.
this question is multifaceted, I have no experience running a large server, so I really can't help you with specifics but...
there's a common misconception about RAM usage. running a dedicated server has "different rules of land" than what our apps/games do on our computers.
app/games try to minimize RAM usage to certain extent, so people can run other apps or not experience machine slow down (ie hogging ram for themselves).
while servers realistically are trying to maximize RAM usage, as any unused RAM is wasted ram that could have been used fast cach data that can be used later.
so in theory if you had 128GB RAM on your server, hytale server should try to use all 128GB of ram (ie not wasting any empty space), and same goes the other way around if you only had 4GB of RAM, the server should try to use all it can.
as for what's the absolute minmium to support 100 players, you'll have to do some load tests to find out.
a small conclusion / TLDR, it shouldn't matter how many players are in your server, hytale server jar, SHOULD be trying to use as much RAM as it can no matter the player count.
I saw a mod that was listing all component on a block / entity, maybe you can decompile it and search through how they are doing it
Lait's Entity Inspector
it probably also really depends on what server, if you run 100 players in the same spawn chunks playing red light green light it has smaller impact than running 12 skywars 1x8 instances
Yeah your 100% right. there so many layers to peel, on trying to give any accurate estimation on what the minimum amount of ram is needed.
yea im working on a small server project in my free time as like a mix of minecrafts hypixel pit, mcci and wynncraft and i will cross the bridge to server efficieny when i get there lol
Ill probably just keep poking at it. I was mainly hopping some one had a quick obvious easy answer.
But i can simply try on my own when i get time.
Shouldnt be rocket science.
And shouldnt require me to decompile someone elses mod when i have the server source.
oh server source is out? or people still decompiling that too?
Decompiling it.
gotcha, it's totally fair. I like to do both, I've learned tons from decompiling mods in my spare time and seeing how people are using it. aswell as searching through hytale-server jar for stuff
Lool you should add the "/s"
i think once you get to that size you would be considered quite "big" in current terms as EA playerbase is still quite small, especially inbetween bigger updates
wouldnt put it past being quite reasonable for a successful mid size server once all the infrastructure and server concepts are set up in a few months or so
The JVM will utilize all of the ram you give it. The player count is relatively unrelated
reddoons made a video where he opened a vanilla hytale server at EA release and it had like over sixty
but again, it comes down to what server type you have. large mmorpgs in wynncraft style with huge worlds and complex system and npc behavior, large economy systems and so on will eat much more than a duels or arena server
@brittle nimbus insert "i saw what you deleted gif"
Why is the wire format for Quatf 4 i32's?
just be an ai model and you'll be fed all the ram you need
cant wait for hytale 1.0 to line up with ai bubble collapse so i can buy a server rack for less than small mercedes
you wanna do an inhouse server?
tbf, I went to go see an auction to see how much it'd cost to rent out 256GB server.
PRICE
€50.70 per month
CPU
Intel Xeon E5-1650V3
RAM
256 GB
Drives
2 x 2.0 TB Enterprise HDD
Location
#FSN1-DC1
Information
IPv4ECCiNIC
if your living in the EU, it is surpisingly cheap haha
thats actually not that bad
Yeah for real.
it only 65 euro per month to swap over to 2TB of SSD. if you really need fast disk. which I'm unsure is needed for hytale server but I could see it
I was considering to host my own little server (for whatever game), when I have a new job. seeing those prices, it's actually not as expensive as I thought
thank you for sharing
oh yea I've been renting out dedicated server since I was 16, it's so freeing just being able to wip up, game server with your friends whenever you want for any game (that support it)
Oh yeah definitely
(also, this probs shouldn't be even a consideration, but it was awesome to be the go to guy in my friend group when I was a teen anytime we played new games because I could host us 24/7 server haha)
now you're making me wish i had my small mercedes back and a server rack
Heard there are companies that just maps ram read write to a dedicated ssds. In many cases the read write was fast enough to handle what was needed.
They "utilizing Arbor and Juniper hardware", I'm not actually proficient enough to know if that's enough to prevent a massive ddos attack
but they are well known / popular provider in the EU.
but I ain't a sale rep, i have no idea haha
OVH is olldd school, they were what i used when i was 16
Hi, my dev server crashes on boot with hundreds of java.nio.file.NoSuchFileException (e.g., /Cosmetics/CharacterCreator/Emotes.json, /Server/Prefabs/Trees/...).
It seems like HytaleServer.jar expects files that are missing from my Assets.zip, even though the zip exists (~3.3GB) and paths in Gradle are correct.
I've tried cleaning Gradle and deleting the run/ folder.
Is anyone else having this asset mismatch on the latest release (2026.02.18-f3b8fff95)?
Hetzner.
hetzner is pretty good from what ive heard
many smaller german servers run over them (mc and other games)
Yurr it's a good shout. I only rent out a 128GB server, to host small servers for my friends.
but for comerical servers you'll probs wanna look for proxy to protect you
datacenters gotta be better protected than banks these days
this is gonna sound insanely naive, but i wonder if it's possible to use cloudflare dns over a hytale connection
nope
maybe there's a way but not natively, you can't just flip the toggle
I'm renting out 128gb server from the same provider for past two years for my work. at 35 euros per month. it is legit.
ngl, i made my own proxy and vpn and just use that
yurr, if you pay more you can get Intel Xeon W-2295 & AMD EPYC 7401P
there auction house tho, has limited cpu options
these mf, need to sponsor me i swear.
It's Hetzner, go to there auction page you can get awesome deals.
it's only EU tho, I know your from down under
lmao
"In this answer to your question, i will explain everything you asked in detail...
But first, a quick shoutout to my sponsor"
doesnt australia have stupid high electricity cost
when is anything about maintaining a server flipping a toggle haha
I'm sure there's away to make your ingest traffic go through some kind of firewall / cloudflare protection but I don't have the brains to tell you how on the spot
Silly electricity prices... This morning showering for 10 minutes at the wrong time would have cost you $4 if you pay the cost for water heating.
Just to start from the begining.
you have used hytale-downloder to get the latest release and unpacked it get the latest Asset.zip correct?
Ah, I found the issue! It wasn't the game files after all.
It was a misconfiguration in the manifest.json of one of my dependencies (my Persistence plugin). I had IncludesAssetPack: true enabled for it, but it didn't actually have any assets to load, which confused the asset loader and caused those weird missing file errors.
Setting IncludesAssetPack: false in the dependency's manifest fixed everything. Thanks for the help!
All good! glad you figured out out
Guys, has anyone succeeded in opening a custom ui since the last update ?
the update from 2 days ago, or the patch from yesterday?
Both, I'm trying to setup a custom UI, but following the pre-existing tutorials always give the "could not find document" despite having the assets in the jar and the same syntax
My UIs work fine with the full update, as they did in the prerelease.
I've also seen some people having problems with their ui mods with the last update
ok, nice to know, gonna continue to look for the issue
Maybe it's something a little more specific, but definitely not a full "ain't working" issue 🙂
Guys, how do I fix this problem we had due to the last update? It broke the mods. What do I need to do to the mods I developed to fix it? My mods are developed directly in Java, without using the tools present in the game.
Well to remove the warning you can just target the right version. In manifest.json , you update ServerVersion:
"ServerVersion": "2026.02.18-f3b8fff95",
If it's a question of fixing the code, well, you need to figure out what broke, what got deprecated, etc, and fix it. Then you republish 🙂
Oh, is that all? That didn't even cross my mind. Thank you. I'll test it here 🙂
So now we need to update the mod with every update?
Or only in larger updates?
The warning happens on hotfixes too for now, I really hope they'll change that.
I updated and the warning still appears in single-player. I'll see if at least the server starts and works (the mod works perfectly ignoring the warning in single-player).
Yeah that was my experience with 3 different mods 😄
lol
but now I gotta update them for the darn hotfix. smh.
Here we go...
from what ive seen most mods dont break there arent really major feature (like existing components) being removed or rewritten. Then again if your mod breaks and it doesnt throw and error (or only throws one at runtime) using a mod version not for the game version might be risky in the future
if your maintaining a mod you should, update your manifest json.
if you are just a user you can right click your world, go to Advanced Settings and enable Skip Mod validaiton
if you are hosting a server you can add --skip-mod-validation to your hytale server.jar on boot.
this way you don't need to update a bunch of manifest json for your mod.
aslong as it's not broken in the current version
The complicated part is that the server doesn’t even start when there’s a mod like that. Now I’m going to test it here to see if it’s fixed. Let’s hope for the best.
i love you
I really should have read the documentation… this topic must already be routine around here these past few days.
I don't know what I have done with my IDE but it created a ressources folder inside my folders so it broke my assets lol, just fixed it
haha, I have felt like a broken record, specially yesterday when it was kicking off during the hotfix got released
but Ive learned to accept it, it's all good
i know some servers where there is a bot and people can do e.g. /setfilepath and an explanation for that topic pops up in a bot message, this would be really clutch here rn lol
doesn't help that alot of useful information is being said on twitter from simon and slikey. so I'm really just relaying what they already mentioned
i wonder if there's a way to make a mod that hides the health bar and shows numbers instead
defo possible, I've seen servers with mods that completely override the users HUD
i see, i'll try doing that
yea i never used twitter so thats all flying over my head i only see those posts when screenshots pop up in videos really
where do i find the recent ServerVersion? Not the File but the version i need to specify in my manifest.json
open up your hytale launcher, look bottom left. server versions have always matched the game version so far
yes my english very good 👍 (ignore all my edits)
Still throws me the same warning in the console
are you a modder or just a player?
modder
gotcha, hm weird. it should be 2026.02.18-f3b8fff95
Might you have any dependencies that aren't updated yet?
I realized there can be a a different between the game and launcher version.
Rather then looking in the corner when starting, look under settings uninstall and see what versions you got installed is.
If you have activated pre release then the version will differ as well.
I only see, the launcher version and previous game version. not the current game version
This is probably the most reliable place?
https://maven.hytale.com/release/com/hypixel/hytale/Server/maven-metadata.xml
would be funny if they were on prerelease ngl
that'd be something I'd get stuck on knowing me haha, wondering why my version ain't matching the LTS not realising im on prerelease branch
an actual code question for once, but has anyone worked with block breaking so far, like are block entities initilized with health or how does the "tiered breaking" work exactly. I was thinking of adding a "decaying block" feature similar to deathmatch arenas in uhc mc servers
you might wanna look into the summoning mechanic for one of the skeleton minibosses in vanilla hytale, i dont know the name rn maybe someone can help me out here
once you spawned the mob you might be able to add a Follower component where you put in like "max distance from owner, owner" and add a system that if a mob is outside max distance from the owner you note the owners coords and move towards that
oh you mean attachment as in attached to the npc as in its design
i thought you were on some fancy coding experiment mb
Typical.
Have you found out what the problem is? I ran into the same problem, that one of my worlds (gen type Void with my island) takes an incredibly long time to load, and the effective view distance is around 50 blocks. Somehow, I managed to load some of the chunks, but most of them still work very poorly
When I found out that the Model config have a attachment array, that describes how it could be able to render a combination of model parts as one.
so by adding those one could dynamically change the apperance of a model in game it seems.
model texture gradient and weight are properties.
Hi, is someone is using or knows a plugin to set world spawn of a world, not the spawn of /spawn command (/Setspawn)
just curious, whats the problem with the default one?
He probably wants to change the world's spawn location, not that of a specific player.
yeah isn't that just like spawn set "location" to set it for the world, rather than spawn "location" thats for your player?
no defeault one seem to be the world spawn.
oh well.
how well has the memory usage in servers been so far since this update?
Similar topic, has anyone played around with overwriting deaths so far? As in if a player dies, dont Show the death screen but tp a player to spawn, maybe Show a popup message "you died. Gl next round", similar to many mc pvp servers have transition from alive to spectator after death without the respawn/back to menu option
Nothing noticeably different with survival/exploration type gameplay
Did anyone elses server just download 2026.01.09-49e5904 for some reason.
Do you maybe not Download the latest Version per default?
it was on latest
Hence why i am asking did anyone elses revert back for some reason.
the hytale-downloader does send 2026.01.09-49e5904 currently. but my script noticed that my currently installed version 2026.02.17-255364b8e is newer and didn't download it. Edit: Oops, mistook downlaoder version with game version
newest was 2026.02.18-f3b8fff95
im on mac so i cant use that downloader, so i just pull the server jar/assets from the game/client directory
no they just released a new version, 2026.02.19-1a311a592
but its saying in pterodactyl panel.
Downloading 2026.01.09-49e5904
Figured it out. 2026.01.09-49e5904 is the version of the downloader, not the game
well whatever that update did it just broke alot of stuff. Again.
Can you elaborate on "broke alot of stuff"? because all the changes were on the client
It updated itself and now this is the error.
I get.
[2026/02/19 16:14:51 WARN] [AssetModule|P] Failed to load manifest for pack at Assets.zip
java.util.zip.ZipException: zip END header not found
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.findEND(ZipFileSystem.java:1362)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.initCEN(ZipFileSystem.java:1571)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystem.<init>(ZipFileSystem.java:215)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.getZipFileSystem(ZipFileSystemProvider.java:122)
at jdk.zipfs/jdk.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:117)
at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:507)
at java.base/java.nio.file.FileSystems.newFileSystem(FileSystems.java:380)
at com.hypixel.hytale.server.core.asset.AssetModule.loadPackManifest(AssetModule.java:294)
at com.hypixel.hytale.server.core.asset.AssetModule.loadAndRegisterPack(AssetModule.java:355)
at com.hypixel.hytale.server.core.asset.AssetModule.setup(AssetModule.java:97)
at com.hypixel.hytale.server.core.plugin.PluginBase.setup0(PluginBase.java:392)
at com.hypixel.hytale.server.core.plugin.JavaPlugin.setup0(JavaPlugin.java:48)
at com.hypixel.hytale.server.core.plugin.PluginManager.setup(PluginManager.java:870)
at com.hypixel.hytale.server.core.plugin.PluginManager.setup(PluginManager.java:284)
at com.hypixel.hytale.server.core.HytaleServer.boot(HytaleServer.java:386)
at com.hypixel.hytale.server.core.HytaleServer.<init>(HytaleServer.java:344)
at com.hypixel.hytale.LateMain.lateMain(LateMain.java:56)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
at java.base/java.lang.reflect.Method.invoke(Method.java:565)
at com.hypixel.hytale.Main.launchWithTransformingClassLoader(Main.java:64)
at com.hypixel.hytale.Main.main(Main.java:40)
I think the best way to see what changed is to just diff the changes from the previous version, better than patch notes because you directly know if something you're using was changed or not
looks like your Assets.zip wasn't downloaded correctly which would be a problem with your ptero egg, not hytale
Welp looks like i am waiting then since i just have limited access to panel and the owner is asleep.
can you upload it from your pc?
You could just update your client and then upload Assets.zip manually via SFTP?
hmm, odd. I will check our side but yeah looks like the asset zip is broken for some reason
network ain't good enough to do that last time i tried it took down their network.
you can limit speeds using sftp, get something like WinSCP or FileZilla
sftp just times me out when trying to reach.
Would sftp work if they run it via virutal machine on linux.
it depends on the networking setup
pterodactyl should give you your sftp credentials in the server settings
It does but i click the button and it just times me out when using WinSCP.
Are you sure you've got the port 2022 open?
On my pc or there's
the server
check your wings logs, when wings boots up it has information regarding sftp. I think you should ask in the Pterodactyl discord (#wings-help)
How you know thats the correct port
2022 is usually used for secondary ssh/sftp apps like pterodactyl's file access
yes, they may have reconfigured it, but people who do that know their custom port ^^
experience being a system administrator for 7 years. most people just follow the docs to the T or use some type of installer, both cases you get 2022
I never used this port 😂
I know too many odd numbers for too many annoying reasons
I can mod again!!! The only condition is that I had to completely start over. Luckily the art side of things I did not have to redo. Everything else... Oh boy.
What happened?
I was getting stuck at the Booting Server Screen for a while. I was also trying to update my mod from Update 2 to Update 3. Tried to remake my mod from scratch right after Update 3. Something was broken for me right after that Update. Then there was the Hot Fix yesterday. Thought it didn't do anything. Had some help from the community resolving part of the Booting issue. Then late in the evening yesterday I decided to try making a fresh mod [Post-Hot Fix]. Was expecting it to break when I tried accessing it today. Nope! It worked! No Issues! Also, literally JUST updated my mod to the newest Hot Fix and it still works!
has anyone found an event/system for players picking up items from the ground?
I know theres the interactive pickup, but thats not what i want.
I dug thru the code many times, and tried many different things, and I had no luck.
This is Just a random thought but can you track it in reverse? Like dont track the Player picking the item but the entity of the dropped item being removed?
i THINK so... i think you can track any entity being removed.
Problem is, i dont think with that you'd be able to track who picked it up (or cancel it)
Alright there's two ways I can think about this.
Looking through the PlayerItemEntityPickupSystem
it calls playerComponent.notifyPickupItem if it's not an interaction.
which does NotificationUtil.sendNotification.
if there's away for you too hook into that then your golden
im lookin at that now, trying to see if i can somehow catch it
otherwise. you could potentially look for changes on the player inventory item container. if that's possible
I guess it's not guranteed to be a picked up item tho, hmmm
that might work. There is that LivingEntityInvChange event or something
if you listened to Entity removed with the PickupItemComponent you can look at the targetRef field, which I think is the Ref<EntityStore> for the player
ooo
I think we got it gang, surely that's it haha
and tbh. this might of unironically helped me aswell I noticed the Set.of(new SystemDependency(Order.AFTER, PlayerSpatialSystem.class, OrderPriority.CLOSEST)); in Player Pickup item system
which could be a fix for my body weapon display mod I'm trying to do.
(weapons constly lagged behind the player when they moved but I haven't been able to figure out how to make it accurate)
Anyone know how to play a sound after a player teleports? I set the teleport component, but the sound plays at the players current position. I tried to get the sound to play at the target destination but it's still silent. Any ideas?
Listening to the teleport component being removed?
it's actually pretty close now.
not pefect. it still jitters when it moves...
just so much vector math to do, 😢. my uneducated heart can't takew it
Wouldn't that then play the sound on every teleport? Sound is already played when you walk through a teleporter - I'm just wanting to mimic that.
this deserves a pin ngl
my guess wasnt even that far off
Shane been offly slient, since i said that. I hope it actually worked haha
sorry, im trying like a million things here, and nope... no luck.
The EntityRemovedEvent is for Entities... and sadly this dropped item isnt considered an entity....
So im doing more digging, still no luck
what? that's not true. I use dropped items as entities all the time for my past few mods
as far as ive seen... they're just a Holder with an ItemComponent (or something like that)
Holder is just what you create before call the spawn of an entity, once you spawn a holder it becomes an Entity
that's a really bad explaination of what a holder is
ok, them im clearly missing something.... time to get my shovel and dig more
I'd use RefChangeSystem and query for PickupItemComponent
let me try that, 3rd times a charm right... RIGHT?
listen for onComponentAdd or onComponentRemove, whatever works
also not sure what people think but apart from a select few events.
I find alot of the events are super jank or just don't work at all.
much better querying for component changes
the server severely lacks good events.
coming from Bukkit/Paper, having like 500 events, and Hytale having like... 10 events... Its a diff experience thats for sure
I mean it's definitely not 10, there's a fair amount of events but not as much as there should be.
oh i wasnt being literal 😉
yeah but I do see like a fair bit of events, I think the idea is more to rely on custom systems than inbuilt events, I could be wrong though.
I'm sure there will be more as they go on with development
Time to beat up the code some more, if I can focus on it, came with a one inch blister under my foot. It's quite distracting.
ok, progress:
public static class Test extends HolderSystem<EntityStore> {
@Override
public void onEntityAdd(@NotNull Holder<EntityStore> holder, @NotNull AddReason addReason, @NotNull Store<EntityStore> store) {
Utils.log("Item added");
}
@Override
public void onEntityRemoved(@NotNull Holder<EntityStore> holder, @NotNull RemoveReason removeReason, @NotNull Store<EntityStore> store) {
Utils.log("Item removed");
}
@Override
public @Nullable Query<EntityStore> getQuery() {
return ItemComponent.getComponentType();
}
}
BUT:
(when picking up an item)
> [10:32:02 INFO]: [HySkript|P] Item removed
[10:32:02 INFO]: [HySkript|P] Item added
[10:32:02 INFO]: [HySkript|P] Item removed
its removed, added and rremoved again. this is going to be fun 🤣
Only issue i see other than this, is the player who picked up said item i dont believe is referenced
Check when the component is added, get the PickUpComponent from the entity store and check the targetRef
ooo smart
[10:43:27 INFO]: [HySkript|P] Item picked up
[10:43:27 INFO]: [HySkript|P] Player ShaneBee picked up
:pepe_clap_emoji: (you have to use your imagination)
I went a slightly diff route, but it works, and yay. Thanks @latent vapor
Hello, if you guys make a plugin that requires an external dependency like jackson for JSON parsing, do you make a fatjar or do you try to make a plugin out of jackson?
I couldn't isolate the problem. I disabled all mods and the world was still messed up. I even created a new folder to install the server files from scratch and then copied the old world folder over. It was still bugged. We ended up just having to start a fresh world file without any mods for safety.
note: Hytale has Bson built in, you could use that for Json parsing.
Isn't bson deprecated?
its how hytale saves everything, so i dont think so
oh, thanks for the tip, i will look into it, but maybe in the future i will eventually need an external library, i am asking for your opinion, what would you choose
ive only ever used Gson (in the past) and Bson (currently).
Ive personally never used Jackson
but if i were to need a library, id most likely shade
sorry, but what is shade or shading? is it including it in the plugin jar or?
yeah, shading just adds the library to your jar (fat jar)
alright, thank you!
Does anyone know of a solution for the server version in the manifest file so that you don't always have to adjust it manually?
You always have to adjust it manually for now. In a couple months there will be a better workflow for this (and they're bumping up the priority on it) but in the mean time it is what it is.
i just have my build.gradle.kts slap it in there
val hytaleVersion = "2026.02.19-1a311a592"
...
processResources {
filesNotMatching("assets/**") {
expand("pluginVersion" to projectVersion, "hytaleVersion" to hytaleVersion)
}
}
"ServerVersion": "$hytaleVersion",
There might be an idea to have the manifest.json generated by something else and to use the server downloader to provide the version
./hytale-downloader-linux-amd64 -print-version
2026.02.19-1a311a592
i guess we would have to build a small tool for that
Yeah fetching the version from the HytaleServer.jar you're building against is the ideal solution
You will still have to recompile for every new version but that's expected since you need to make sure your mod still works
damn, another updated for today, i just noticed from the version number
another update.... another day without a changelog 😂
Okay, thanks for your answers, everyone. Now I know!
the changelog is the error stack
when did pre release update 4 released?
Only the client changed today
You can always add additional filters so it only triggers when you want it to. I've looked for how the TeleporterPlugin does the sound you described, but couldn't find anything :(
Yeah the sound is defined in the JSON file for the collision interaction. I assume it runs on the next tick. I managed to find a solution using HytaleServer.SCHEDULED_EXECUTOR.schedule(...) and setting that to 50 milliseconds. I believe one tick is like 33ms, but 50 seems to work perfectly fine.
No idea if that's the appropriate way to delay 1 tick or so, but it works.
There is the ClearUsedTeleporterSystem which runs on a delay too so I'm guessing there is no clean way to get triggered immediately
Yeah, UsedTeleport is cleared I believe after you move a short distance (1.3 in the XZ or 2.5 in the Y) from the teleport location. I assume this is so you do not automatically teleport back when teleporting to a teleport.
Too many mentions of teleport. Send help.
Did they fix this because they for a bit checked the square distance against the distance.
if your already in the world thread.
doing world.execute will queue for the next tick
I kid you not, I abused world.execute and nested it 50 times to see if it made any impact, it didn't. lol
Swag haha
also are you from UK, ik that's a random thing to interject here
Yes...
STAY AWAY FROM MY TEA AND CRUMPETS!
i swear 90% of this server is just brits
There's probably a ton that don't speak English so they exist just to exist.
could go to deepest depths of hell and you'd still find a fecking british tourist somewhere
Probably true
Could also be that most people that are active around the same time you are live closer to britain, or the assumption that anyone using english is British or American. 😄
I'm from UK aswell so makes sense.
although I'm usually more up around EST time than GMT
then theres me, from Canada (home of Hytale)
And Sweden.
the 381 council of the UK
(to be clear, that is a joke, the empire is not back)
Badger Toast?
I got to learn when living in England, that the Badger is the largest living wild predator... :S
I'm actually surpised, I thought it would be the Wild cat
This is a weird one (not a problem though)
[2026/02/19 19:24:38 WARN] [PluginManager] Plugin 'Nitrado:WebServer' targets a different server version 2026.02.19-1a311a592. You may encounter issues, please check for plugin updates.
[2026/02/19 19:24:38 SEVERE] [PluginManager] One or more plugins are targeting a different server version. It is recommended to update these plugins to ensure compatibility.
I am using the same server version (latest) as the one given to the plugin's manifest
there was an update today?
yes
xbdjd didbdjdnx
just to make sure, you're not using like ">=ver" are you?
I was doing that, as one of the 100 mod sites said you could...
But i got an error. Dug thru the code and it does an exact string match
honestly, I'm about to make a webhook server that we can all use for this manifest stuff. so we can just create CI/CD workflow
what do you guys think are the chances that there's a component to specifically make an entity disappear only in first person for that player
good luck
I Think there are few things that do things just for a player. For some reason people just implement stuff to be on or off in general because its easier to handle.
But one could implement amazing horror mods if one could start overriding models and visuals for specific players.
But I think you would have to start overriding packets with the model data in them in some way.
lol i havent been able to turn my server back on since update 3 XD, we ran with to many mods, i got my mods updated, but 68 mods and about 20 of them havent been updated since the game came out.. oof this is going to be a fun ride haha
umm i just booted up a world with mods that are not set to the current version and the game did not stop me at all, like normally i get a message telling me but the only thing that popped up was the chat message... might try to boot my server up
Hi I was wondering, is there a way for player to see specific block only if he has an item equiped? Like you need special googles to see a block.
You'll probably need to do packet shenanigans
What ist the best way to edit a Ton of blocks over an plugin
Pre Release for Update 4
-Players may now have multiple instances of Hytale running simultaneously. To reduce the risk of save corruption, players are advised against opening the same world multiple times simultaneously.
-Hosts can now specify a fallback server for when players disconnect unexpectedly.
I don't know if anyone has seen these yet. But for us devs this is fantastic!
yippie! i suggested that first one
have been struggling with two laptops for multiplayer testing ^^
I love it! - I can't want for that fall back. 😄 - Talking about tooling. 😛
looking forward to specifing the current server as the fallback server and sending clients into a crash loop 😈
OOooh, maybe I can make a fall back dependency chain!!!
Would be fun to make the fall back server shut down or crash so the chain keeps on going!
Does anyone know how to make the player's nameplate colorful?
Has anyone managed to get the ColorPickerDropdownBox ValueChanged event working?
I'm getting this error even tho the docs say the event exists:
ValueChanged | Called when the color has been changed
Target element in CustomUI event binding has no compatible ValueChanged event. Selector: #MessageColor #ColorPicker
Hi does anyone know or succeded to set a spawnpoint for new players different than /spawn
Are you making "spawn points" or just chaning world spawn? - I would assume spawn points would have to be a mod/plugin in which you enter a command and it saves coordinates to a list.
i am currently only allowed to change world spawn which is /spawn, since i can't define world spawn either ? can I, maybe i can choose that player pop at world spawn that's tutorial, and if someone types /spawn he goes to the real spawn point
how can i sit a player (animation), i want to play the sit animation for a player
What is the best way to initialize a HUD (Scoreboard) for players only in a specific instance?
for (var playerRef : world.getPlayerRefs()) {
var player = store.getComponent(playerRef.getReference(), Player.getComponentType());
var hud = player.getHudManager().getCustomHud();
if (hud == null) player.getHudManager().setCustomHud(playerRef, myScoreboardHud);
}
With the latest releases, is it possible to complete remove/remake the TAB screens?
does the mods/ folder only read .jar mods directly inside the folder or is there a way to create a new folder inside the mods/ folder like MyMods and have it inside
you can make as many mods folders you like and target them with the --mods path/to/new/folder arguments. But I don't think it automatically does it recursively
anyone know why my friend has weird item names? like server.bench etcd instead of workbench
In the inventory screens? I find that they sometimes just don't apply their proper names to the menus. If it's not fixed by restarting the game, then it may just be broken for some other reason
its on server, everyone has its correct names, beside one guy XD
Finnaly figured out how to by pass the valitdation for server, had to make sure every mod i was using though worked, but i got my server running older mods now
Does anyone know of a mod to allow me to change ever items crafting recipe
You can do that in vanilla via the asset editor
Feel like the components list could do with an overhaul, instead of listing every component and you add it by modifying a value in the component, it should be an empty list that you append a component to from the list of available components
some1 know how to fix big or large hitboxes? I can only interact with part of the hitbox.
@devout sable did you ever fix your indestructible hitbox? I got one in vanilla.
Edit: Punching it relentlessly eventually got rid of it.
darn
Is there documentation on what you can do with the Damage JSON files? I noticed one mod has DamageTextColor part and a BypassResistances part. I really want to make a Weakness/Resistance system, and it looks like I can do that with Damage JSON files.
What component list is that?
Is there a built in way to check if a player is in combat? Or do i need to implement that myself?
no i think you gotta implement it urself if there isnt a mod u can download already
If they or the game, accidentally change the language/localization it might break in that way.
Does anyone have experience with maven and like adding custom dependencies to my project?
in what stages do blocks currently break when you hit them? I am working on a "decaying block" system where a block decays into another one and I was thinking of making it animated using the breaking animation
How do you communicate between 2 plugins?
A EntityNPC seem to have a ActionSetMarkedTarget and ActionReleaseTarget.
Maybe you can use them to set a flag if any market target is a player and also trough that the uuid for that player.
I was thinking this just 10 minutes ago.
Looking at some of their plugins its apparently perfectly fine to have a private Instance variable to the plugin in it self, set it in setup and return the instance in get().
So just handle it like a singleton.
public class FarmingPlugin extends JavaPlugin {
protected static FarmingPlugin instance;
...
public static FarmingPlugin get() {
return instance;
}
Get it with YourPluginName.get();
Oh ok cool! How do i get access to the plugins classes and such? When its not in the same project?
I have different repos for each plugin. Im new to java so im a bit confused
and i use maven with like pom.xml
Ah.
Then I am not sure. Its more complex.
Since even if you would decide to talk trough and listen to events, you would still need to know the even type in both.
I guess you need to set dependencies between the projects so they can know about each other, referencing the jar if they are built separetly.
Or have some central project that contains definition of shared events.
Or maybe java or hytale have some other kind of reflection that handles it.
I know some one talked about their mod having a soft dependency on LuckCharms or what ever it was called.
The closest solution to be sure the classes existed etc at runtime, was by using javas "HasClass" functions, that will throw an exception if to doesn't and do setup connection based on a value you set after that.
Java is not my main language either.
if event are just codeced down to data, then a identical codec on both sides might be able to listen to the event info even if they don't share the actual class.
It's a really good and interesting question.
Add the other plugin the same as you do with HytaleServer.jar and also add it to the dependencies in your manifest
anyone know why i get a "package not found" error on the package that i didnt touch in a weak and that is right where its package path says it should be
You can set that a system or plugin have a dependency order in them as well right. Or was that just system, where you had like add after(X)
I tried that but i cant seem to get access to the classes or properties of stuff inside that plugin For example I have a plugin CombatTracker which has like a class called CombatTracker which i would need access to in my other plugin.
i tried adding the depency in my pom.xml and as far as i was concerned it didnt really work i couldnt get the infos from the other classes :/
it probably is just like java + maven knowledge which i sadly dont have
anyone know what might cause this? i am actually annoying that i cant test my new feature because something i didnt touch in a week cant be found anymore despite it obviously being there
"package not found" is too generic to give a precise answer. Have you tried removing your cache and re-importing your project?
i did reset the cache and reload intellij
try closing intellij and removing the .idea folder
Yea, thanks, figured it out already x D
did that, didnt work. is it possible that the script i import to auto start the server is breaking something?
are you getting the error with a red squiggly in your ide or during runtime or both?
i cant send the error message for some reason
error comes during compileJava
but no files get the red wave underline
then it's specifically a maven issue, not an intellij one
its the same error for all 4 commands in the subpackage, "cannot find symbol class {CommandFileName}"
Think i got that issue. The hytale-server.jar was not found in the project structure settings, some stage of the script did not update the reference when changing version in the build scripts.
if i removed and added the jar file in project structure, it found the files again, and then i needed to open up the external dependancy to the jar, click myself into a class and select the source file i wanted it to use from the popup i got.
All things i hoped it would figure out on its own if i just changed the version to use and rebuilt.
Does anyone know how to make custom components for blocks?
Similar to how you make components for entities, but with ChunkStore instead of EntityStore
I know, but I made a temporary block for now to try it out, but it doesn't work at all and I don't know why.
That's not a lot of info to go on. Check out the LaunchPad component for reference (com.hypixel.hytale.server.core.universe.world.meta.state.LaunchPad)
It's used for the mushrooms
Have you added logs that the component gets registered in the store registry.
Logs that it has been created.
Logs that your plugin gets loaded.
Have you made sure you started the server and that you connected to it in the client rather then just create a new empty default world without your mod?
I tried that earlier, but I don't know what I messed up because theoretically it seems fine to me. I can send you my code via private message, maybe if you take a look you'll see what's wrong.
when i try to do that i get a windows window popping up with "1 interrupted action: an unexpected error is keeping you from copying this folder"
no thanks. I'm happy to help with high level architecture, but I do enough code review at work. If you're not getting an error, add more logging until you get an error
got a instance of the server still running?
no never even launched
Sorry.
i move the subfolder with the files that arent found out and back in and now the files actual show up as highlighted red in my main where the error occurs
Progress 👏
Hi
I am trying to figure out a way to give someone permission to restart my server when it crashes or make it restart automatically.
It's hosted on Linux Ubuntu, does anyone know how that can be done?
It can be done if you're using a hosting panel etc, otherwise if you trust them ssh into your server and manually do it
I don't have anyone i trust that much to give them access to everything, are there any panels you recommend?
I use Pelican but it might be too complex for a simple single-server setup
If you really only need them to restart the server, you can just give them permission to use the /stop command and have your start script reboot it
I use pterodactyl panels, but yeah could also hook up a service for the server, and then if /stop is used should restart
im kind of giving up, do i just have to copy all my things into a new project and hope it works there?
as soon as you're finished with doing that, you will figure out the problem. That's usually how it goes with programming ^^
probably something like the file was moved but the package declaration not updated
ye i asked chatgpt about idea and tried like 7 things including that, might just go eat lunch and see if it hits me
the weird thing is that even when i change the import to crateconfigcommands.* instead of four time crateconfigcommands.{name} it errors the same
Is there a component in onEntityAdded that allows you to get the Vector position of the placed block?
If its just a entity it would have a transform component i am kinda sure.
If its a chunk komponent i think it has some kind of vec3i with integer value but not sure what its bart of. Maybe its just part of the blockcomponent.
from hytalemodding.dev:
public void onEntityAdded(@Nonnull Ref ref, @Nonnull AddReason reason, @Nonnull Store store, @Nonnull CommandBuffer commandBuffer) {
BlockModule.BlockStateInfo info = (BlockModule.BlockStateInfo) commandBuffer.getComponent(ref, BlockModule.BlockStateInfo.getComponentType());
if (info == null) return;
ExampleBlock generator = (ExampleBlock) commandBuffer.getComponent(ref, ExamplePlugin.get().getExampleBlockComponentType());
if (generator != null) {
int x = ChunkUtil.xFromBlockInColumn(info.getIndex());
int y = ChunkUtil.yFromBlockInColumn(info.getIndex());
int z = ChunkUtil.zFromBlockInColumn(info.getIndex());
WorldChunk worldChunk = (WorldChunk) commandBuffer.getComponent(info.getChunkRef(), WorldChunk.getComponentType());
if (worldChunk != null) {
worldChunk.setTicking(x, y, z, true);
}
}
}```
Whats the proper way to check if a player received or dealt damage?
OnDamageTaken even i would guess.
DamageEventSystem
Yep, it's the ECS DamageEventSystem indeed
Ok cool. So there are DamageDealt event and damageReceived event?
I need to read up on gradle.
Because I have a big gap between the very limited gradle files and what they specifiy, and the REALLY big tasks that it tries to do.
Does the dependencies pull in extra gradle functionality that defines more exactly what its doing?
For instance i know that kapupens version add the decompile server gradle task, but I have no clue where that task is actually populated from, and i can't find any reference to it.
no the DamageEventSystem is for both incoming and outgoing.
any exmaples i could take a look at?
CameraEffectSystem is built on DamageEventsystem to add camera shake effects.
This is something I'm working on right now, there's a lot in here beyond what you need but I don't have a more concise example.
github,com/eslachance/EchoesOfOrbis/blob/main/src/main/java/com/tokebak/EchoesOfOrbis/systems/ItemExpDamageSystem.java
It's from the hytale-mod gradle plugin:
plugins {
`maven-publish`
id("hytale-mod") version "0.+"
}
You can find it on GitHub at Hytale-Modding/hytale-mod-gradle-plugin
Thank you.
Whats the event whenever a entity spawn like any player or mob or something?
Have you guys had problems with hytale api classes causing java.lang.ClassNotFoundException ?
RefSystem<EntityStore> is called with onEntityAdded when an entity is added to a world
make sure you're compiling against the most recent version
and if you have a decompiled version laying around that your IDE looks at, make sure it's updated
./hytale-downloader-linux-amd64 -print-version
2026.02.19-1a311a592
i am using the latest version
is there a possibility that the repositories might be behind?
I am calling the BuilderCodec provided by hytale in a post request which throws
Awesome thanks! How do iregister that event in my setup? Do you know that?
In the next pre-release there's RemovedPlayerFromWorldEvent.
getEntityStoreRegistry().registerSystem(new MySystem());
Yoo that's huge 👏
actually huge that makes combat logging much easier to catch
so I have absolutely no modding experience in this game, I'm looking to make a sort of basic training mode mod where I can count the ticks attacks take and stuff for PVP documentation purposes
where are the places to start for learning how to do this?
My brain is not braining but, if I had nested states, how would I go about changing the inner state? Relatedly, when using CycleBlockGroup, is it possible to preserve the state? All blocks in the group use the same parent, thus the same states, but it'll reset the state if I cycle the block.
If you are a video learner, TroubleDEV's latest video is an exp & levelling system which sounds very similar
oh this entire channel seems like exactly what I need, thanks
like I said I'm looking to make a basic sort of training mode like the type you'd find in a fighting game
I'm a PVP nerd and established documentation freak already (hit me up for stat dumps LOL) so this would be really nice
thinking about making something kind of like Dustloop but for hytale (call it Daggerhop or something hmmm...)
Whats the proper way to check if another plugin is installed? ( From another plugin )
Don't know if it's the best, but i am doing this
var plugin = PluginManager.get().getPlugin(new PluginIdentifier("Nitrado", "WebServer"));
if(!(plugin instanceof WebServerPlugin webServer)) {
return;
}
there is a section in the manifest.json too, but at least my mod wouldn't load if i give it dependencies there
Oh yea i see, do you know how id need to put stuff inside the manifest depenedcy?
probably group:name, but i am not sure, i am new to this myself
"OptionalDependencies": {
"Hytale:Server": "*" // version
},
currently i am trying to figure out how to make my plugin to see the BuilderCodec provided by hytale at runtime, but it's a struggle
I would like to document my struggle for a bit here, related to BuilderCodec
For the love of god, make absolutely sure that the first letter is capitalized for KeyedCodec
BuilderCodec.builder(DiscordMessageSnowflakes.class, DiscordMessageSnowflakes::new)
.append(new KeyedCodec<String>("Snowflake", Codec.STRING),
(o, v) -> o.snowflake = v,
o -> o.snowflake).add()
Initially, the server console throws nothing, but the console from where i was making the request
Status: 500
Response data: {
message: 'java.lang.ExceptionInInitializerError',
url: 'the local host',
status: '500'
}
So I went on countless hours trying to make my plugin to see the BuilderCodec
but this wasn't throwing anything
try {
Class.forName("com.hypixel.hytale.codec.builder.BuilderCodec");
Class.forName("com.hytalecord.plugin.DTO.DiscordMessagePost");
Class.forName("com.hytalecord.plugin.DTO.DiscordMessageObject");
Class.forName("com.hytalecord.plugin.DTO.DiscordMessageSnowflakes");
System.out.println("All DTO classes loaded successfully");
} catch (ClassNotFoundException e) {
getLogger().at(Level.SEVERE).withCause(e).log("Failed to load DTO classes: " + e.getMessage());
}
So yeah, the KeyedCodec first letter not being capitalized can get easily obfuscated and send you in a wild hunt.
hopefully i will be the only dumbass that had to struggle so much with it 🙏🏻
Something i got thinking straight away, is to add some kind of test or validation pre build, that looks at the parameters for KeyedCodec and throws a warning or error in case of it being lower case...
yes, maybe i should make a wrapper for the KeyeCodec constructor to warn me from the start
SaftyHelmetKeyedCodec extends KeyedCodec. 😉
Hey guys anyone has the listener event for chat messages sent, and maybe the one responsible to add message to it?
PlayerChatEvent
Did you end up getting the actual exception?
I mean the stack trace / details on the ExceptionInInitializerError
Thank you !
Also is there any event to get how much players are on the servers for a bot activity ?
Universe.get().getPlayers().size()
I believe it doesn't matter on which server they are if there is multiple connected together?
Or I'll have to specify that somehow?
I think each server has a universe
That would make sense actually haha
sorry missed the plural.
you could make each of them communicate through restapi and to have a main one that you query for the players and the main one asks all servers for their universe players.
That is if each server is a universe
Potential idea I must say, I'll dig around that thanks you !
I can't send links or images, but TroubleDev said in his ECS part 1 (14:18) video that the Universe is a singleton and there's one per server.
Dont know who that is, but I will definitely give a look
it has a few videos, but those are great
I guess I should be watching troubleDev.
I have broken my build again. Tried to change to pre-release build, set the server version, clean rebuild start, try connect with the client. "The server is running and old version of..."
If you install Nitrado:Query, you can get that info with an http request to each server and with ApexHosting:PrometheusExporter it can be automatically imported for grafana
Damn all right sound easier than what I thought!
Nitrado didn't update the mods for one month, if you're using one of his mods and they don't work, take the source from github, set the right server version and build them
How about making PR ? haha
there are PRs, but they're already out of date, lol
there is one that was open for 3 days
Ahh RIP haha
As the landscape looks like, if you have the skills, it's best to look for open source plugins and maintain them yourself, unless there is a high trust dev team dedicated to one
Well I always preferred to self made my plugin/mods tbh
well, unless they (hytale team) touch the api that a plugin depends on and you don't need any more features and fixes, all you have to do is to update the mainfest.json.
@lone ember you must have already updated them internally right? If so, is there a chance to get the manifest update pushed to GitHub before the weekend?
Does anyyone have any knowlage of how server networks work on Hytale? I've checked some public servers out and items, stats etc carry between servers, do you know how to set this up?
It's basically a packet transfer from what I readed
Is there a mod or system to set this up ?
you can simply use the CODEC to serialize all the player's data (including components!), store it in a database and attach the id to the referral packet
How would this be set up ?
No idea, but this is something I'm planning to probably make and release on Git
It's definitely been done already because some servers have it set up already
playerRef.referToServer(host, port, data);
Is this just a command ?
make sure to sign the data since the client has control of it during the transfer
i mean yeah there is a /refer command too
https://support.hytale.com/hc/en-us/articles/45326769420827-Hytale-Server-Manual
they talk a little about it here
Im confused, I have no knowlage of any of this, where would I even do this
but if you want flexibility, you're gonna do it via code
what exactly do you mean by doing "this"?
Nice to know lol
Where would I even set this up lol, commands, a mod ??
yeah, a java plugin
Probably connecting servers together haha
Yeah if I would support cross server data transfer, I would actully have a central storage somewhere holding the data and responsible for sending and validating it.
I would last thing, allow the the client to state what the values should be.
Since there are some new people on rn, anyone got an idea why my gradle doesnt start anymore due to "package not found" despite the package being there where it says it should be found, having the right package naming, i didnt even touch this part of my plugin in a week and it suddenly broke out of the blue? I have been trying to fix this for the past 4h or so and i just loop in a circle and nothing works despite trying everything
We actually have not. We were occupied with a few things and wanted to get a proper (automated) versioning setup in place for this, with automated builds against newer server versions and whatnot instead of constantly manually bumping the version string in the manifest.
We have not seen any errors on our side that would actually impact functionality, so I'd be curious what exactly you folks are running into?
Try go in to idea settings and change your jdk to version 25 of a different sort.
I've found a mod for it LOL
The new hytale version now by default requires plugins to set the server version they support
You may be more up to speed than I am but to my knowledge this will only become a hard error in a future update.
Interesting I'm running the tebex plugin right now and I don't think they do and it's only printing a warning errors actually
Start and runs well still
Yeah
Like don't get me wrong, I wanna get rid of that warning, but it doesn't seem to be a major issue right now. Unless we're missing something
Oh sorry for blowing this out of proportion, lol
You'll probably get bombed when it does lol
now thats interesting, it all starts now that i moved it outside the folder it was in into the one above
yeah i misunderstood, thought that was already happening
We have tons of systems on our end relying on those plugins so we'd know 😅
but it still shows something is in the old folder despite it being empty, i think i mightve circumvented the issue
Ok i somehow made it work so plugins can somehow communicate with eachother:
private static boolean HandleIsInCombat(PlayerRef playerRef) {
if (!PluginsManager.HasPlugin("Arc", "CombatTracker", "*")) {
return false;
}
var combatTrackerComponent = ComponentManager.GetComponentFromEntity(playerRef.getReference(), playerRef.getReference().getStore(), CombatTracker.GetComponentType());
if (combatTrackerComponent == null) return false;
long now = System.currentTimeMillis();
long combatDurationMillis = CombatConfigDB.INSTANCE.GetCombatDuration() * 1000L;
long timeSinceLastCombat = now - combatTrackerComponent.LastCombatTime;
long remainingMillis = combatDurationMillis - timeSinceLastCombat;
long remainingSeconds = Math.max(0, remainingMillis / 1000);
if(CombatTracker.IsInCombat(combatTrackerComponent)) {
playerRef.sendMessage(Message.translation("commands.warning.arc.hideout.youAreInCombat").param("seconds", remainingSeconds).color(TextColors.Warning));
return true;
} else {
return false;
}
}
Kinda interesting. CombatTracker is from the CombatTracker plugin
Yep this is the way to do it 🔥
This work since everything goes trough codec types right, they don't know much about each other but they all know how to read the data into the actual objects as long as they know the object type?
ramblings
To Be 100% Honest im not 100% Sure why it works or how it works.
What i know is:
I have a local mavel repo which provides me so i have access to the plugins custom classes ( While developing )
And in my other plugin i can just check if plugin exists. When i remove the check it throws cant find class definitions because it cant find the actual class
No, nothing to do with codecs, this is just normal Java. They tell Maven/the IDE what the CombatTracker api looks like and after making sure the server has loaded it, they can just access those (public) classes at runtime
Ah right right. I was just expecting some kind of circular dependancy, or you know error if in fact the plugin does not exist, since you would have no actual class to compare against if it existed or write the logic against.
in essens its just like a giant api/interface declaration so it can make the call but it might result in hell.
you get a circular dependency if both plugins try to import each other
in those cases you have to do something sneaky like reflection
Yeah. Thats what i was thinking it handled some how.
Ok can someone just cover this like i am 3 years old, and think gnomes still live in the computer and make things go "brrrrrrrrr".
I changed the server version in my graddle settings, i done clean and rebuilds of the source, I have updated the client and that is the same version as the server version written.
What obvious part have i missed that makes the server run a older version than the client...
Where is gradle looking for the server.jar?
is it pulling from maven central, or using the one in your client install folder?
some where under the root of my install folder
is your dev server using the same version as well?
whats the difference between the dev server and the server in this case?
there is the dev server that you use for testing, and then there is the hytale server dependency gradle uses to compile your plugin
ideally they should be the same
where is that configured. I am using the run server gradle task that I assumed would refter to the same jar as I am building against...
your hytale-server.jar in your gradle, should be set to compileOnly, to give your IDE hints on what's available. it doesn't actually do anything beyond that.
your dev/game server is actually what your mod is loading in
it really depends on your specific build.gradle script
there is no "one way" to do it
there just is the right way :kek: and the wrong way
to be fair I can't even find anything close refering to dev/game in any way, no folders no settings nothing.
are you just loading the mod in your singleplayer world?
alright, a quick test to see if it's your dev server, build the mod and put it into your mods folder and test it in your singleplayer world
or if you can run your dev server, just see the initial boot logs. might be faster
what am i looking for in the logs.
Because thera are like 300 rows of logs in 4 seconds.
2026.02.19-1a311a592 .... THE QUACKING QUACK!
I hate the concept of everything being a blackbox artefact dependency you don't really need to care about.
how do you change the damn verison for the dev server.
do you want the prelease build, I'm confused, sorry im slow and late?
that is NOT exposed in any of the default settings...
that's why I prefer this way instead of the prebuilt gradle plugin
// build.gradle
plugins {
id "java"
id 'org.jetbrains.gradle.plugin.idea-ext' version '1.3'
}
dependencies {
// Available during compilation (not in JAR)
compileOnly fileTree(dir: "$hytaleDir/Server", include: ["**/*.jar"])
compileOnly files("$hytaleDir/Assets.zip")
// Available during dev server execution (not in JAR)
runtimeOnly fileTree(dir: "$hytaleDir/Server", include: ["**/*.jar"])
runtimeOnly files("$hytaleDir/Assets.zip")
}
def serverRunDir = file("$projectDir/run")
if (!serverRunDir.exists()) serverRunDir.mkdirs()
idea.module.excludeDirs += serverRunDir
idea.project.settings.runConfigurations {
'HytaleServer'(org.jetbrains.gradle.ext.Application) {
mainClass = 'com.hypixel.hytale.Main'
moduleName = project.idea.module.name + '.main'
programParameters = "--allow-op"
programParameters += " --log=SkyWars:FINEST"
programParameters += " --assets=$hytaleDir/Assets.zip"
programParameters += " --mods=${sourceSets.main.java.srcDirs.first().parentFile.absolutePath}"
workingDirectory = serverRunDir.absolutePath
}
}
Dani building skywars leaked.
not that i have any idea what it does except copying file and changing the idea settings somehow.
Making a mini-games server before the dev team hahah
it pulls out where it should read hytale main from and creates paramters to the mod folders, assets, logsettings?
it's a variant of the runserver gradle script?
mind sending the gradle here? so we can actually take a look. you don't need to be fighting a lonley battle haha
I mean the one that dani sent, mine is essentially unchanged from the kauptenjoes plugin template, except that i changed the version to the server, and changed idea settings for jdk25
I'm curious how your gradle was before, because the runserver script look like before
alright ill take a look
Yes, this is using the IDEA gradle plugin to define a new RunConfiguration which starts the java process using the main class com.hypixel.hytale.Main with specific parameters
how to use a custom comment for the block wyglądac players who are standing near it
I see, what you mean now. I don't get how they are defining runServer or server either. super strange never seen this kind of setup before
i can report i have succesfully lauched my testserver again after 5h of pain and agony
ah dani, your hytaledir points manually all the way to the version your are targeting?
maybe that was my issue, that it took the first darn hytale-server.jar it could find and just went "this is fine."
yeah
def patchline = "release"
def hytaleDir = "${System.getenv("APPDATA")}/Hytale/install/$patchline/package/game/latest"
oki
why not use the maven repo?
wasn't available when I set this up
and this way I know my client and server are always in sync
ahh
I am just wondering people with more knowledge
if you do any idea settings beyond gradle do you royaly bed gradle and things will go out of sync because some settings will be on idea level and some on gradle level?
gradle is the source of truth
ok... thats telling, trying to run the server after done some changes where i specify the full path.
how is this server different from the server plugins read only server?
as in tried to go back to the old settings by specify the pre-release path.
Hytale\install\pre-release\package\game\latest\install\release\package\game\latest\Server\
The mother quacker injects a path that points to release latest automatically.
Well it's not read-only, but also, it's reserved for people that link their account to prove they bought the game
But why can't i post on the read only i mean somebody must have access to write
Because a read only litterly means that you can only read.
to prove they accepted the eula* ;)
It's archived. We had access to write in that channel before this one was established
I will probably be back with more gradle questions tomorrow, this brought me all the way back to zero, again. Your settings seem great dani, but i got a lot of warnings probably to some dependency or setting or its not suppoed to be in straight gradle files. And need to take a break before i toss the entire concept of making mods out the window with the computer.
why only that channel is archived and the others are deleted whatever
There is nothing worst the build config and setup...
everything was hidden but we asked for the #server-plugins-read-only channel to be brought back because there is a lot of info and help in there
I like Maven it always works.
what is maven
mini you're going to make alot of people mad but I stand with you, maven works without any configurations
whether you prefer gradle or maven usually depends on which one you interacted with first, lol
Good afternoon
my setup is so much more primitive than this haha, i just run my own local server (separate to my IDE) and then I just build the mod into the mod folder
Basically I'm just cave man smashing a rock till stuff works
i do the same. I have a gradle task server which builds the jar into the mod folder, then I run my server manually.
I hate the IJ terminal, so i dont like running a server from IJ itself
I liked Maven until I met Gradle lol
So now you maven't?
Now, I've made some important changes to my Proxy with my team, ensuring resilience to future Hytale updates.
I no longer use Maven in my newer projects; I only use it in projects that previously used Maven.
I'm not a very expereinced java dev and the only project I'm actively working on is my mods, so, I'm using gradle
Perfect, that's really a matter of usability, it's like comparing Eclipse to IntelliJ.
I didn't even learn java, haha.
the first hytale mod I worked on was using javascript.
then my next mod(s) is in kotlin
I don't have much experience with Kotlin; I've always been used to doing everything in pure Java, ever since I worked as a network analyst and developed some monitoring software.
I love it! defo one of my favourite languages.
I used it for like my entire college/uni days. but then once I got my first job I haven't use it since now
(which has been many years)
Maven? I hardly know her