#server-plugins-read-only
1 messages · Page 116 of 1
did your mods break?
yeah
Replace HytaleServer.jar
Any reference on player properties?
decompiled source code
Even on my local save I use for modding they are broken
was hoping to not have to do that 😂 oh well, early game is early game
yeah honestly the source code is the best reference currently. There is official documenation on npcs, ui, and worldgen, but that's it for now
do you know how player information works? Specifically account, looking for something like a uuid since usernames can be changed
I know they want to publish apis for that, but they're not ready yet
there's no property like player id or whatever?
oh yeah, it's on the playerRef component
PlayerRef is responsible for holding on to the network connection of a player
and Player is responsible for holding the gameplay info (inventory, etc)
oh looks like players have a uuid in PlayerRef, nice
yep, that's the uuid you use to identify a player cross-servers
Making an external DB for my server so needed that, thanks
@honest geode Sorry to be bold, But you need to really add a report/issues system for your mods on curse.
One Handed Lanterns for example mod breaks a lot of laterns and placing them within the world itself. Your page provide not comments, github, issues, or even a place to contact you reporting bugs. So basically I seen people blame the vanilla game having issues placing lanterns within the world, but it ends up being your mod.
I highly recommend having basic issues page even if it's a catch them all one for all your mods so people can report such bugs.
Just googling "hytale can't place lanterns" will show you this problem.
Have a good day!
PS: Even allowing comments or a catch all will help people look up issues and know if there is any issues, etc even if your busy in RL. This just a nice way for people who at least put effort into the mods they select or pick knowing that there could be an issue if you know what I mean 🙂
when I want to have custom codec inside builder for idk stuff like```
public static class PortalConfig {
public static final BuilderCodec<PortalConfig> CODEC = BuilderCodec.builder(PortalConfig.class, PortalConfig::new)
.append(new KeyedCodec<String>("world", Codec.STRING),
(portal, value) -> portal.world = value,
(portal) -> portal.world).add()
.append(new KeyedCodec<Integer>("x", Codec.INTEGER),
(portal, value) -> portal.x = value,
(portal) -> portal.x).add()
.append(new KeyedCodec<Integer>("y", Codec.INTEGER),
(portal, value) -> portal.y = value,
(portal) -> portal.y).add()
.append(new KeyedCodec<Integer>("z", Codec.INTEGER),
(portal, value) -> portal.z = value,
(portal) -> portal.z).add()
.append(new KeyedCodec<String>("serverName", Codec.STRING),
(portal, value) -> portal.serverName = value,
(portal) -> portal.serverName).add()
.build();
private String world = "world";
private int x = 0;
private int y = 64;
private int z = 0;
private String serverName = "";
}
yeah either array, or a map<string, portalconfig>
does anyone know a logging system thats reliable? thank you!
Do you mean an external one, or HytaleLogger.get()?
yea
lol
oh i mean hytalelogger sorry
Ah nice. Yeah you either get it from your plugin's getLogger() method, or via HytaleLogger.get(<name>). The name of your plugin's logger is the plugin name (from the manifest) with |P appended.
tyy
just want to say that I submitted a bug report on this, hopefully they fix it
even just the ingame camera commands face this issue
Hi, I'm not really set up for making plugins yet, I have programming/scripting experience with other languages and I'm familiar with many logic concepts like OOP and ECS, I just need to translate my knowledge into Java. I'm curious about this engine though and have a general question regarding plugin capability:
Is it possible to append mod assets through plugins in a way that would avoid mod conflicts? A specific example, if I were to add an ore type and I wanted to add it into the existing arrays of base game pickaxes - doable as a pack mod but I'd need to override assets and it wouldn't be compatible with anything else that changes pickaxes. Do plugins allow a way to mod this information in a more compatible manner?
Currently, if two mods/packs override the same asset (or introduce one with the same name/id), the one that's loaded last is the one that takes effect. the other one is ignored. The team is aware of this limitation and is exploring solutions
Are there patch notes?
I see, and yes I'm flagging potential limitations for myself before I delve too deeply. Load order isn't ideal but certainly serviceable if users can modify it. Appreciate the hasty and concise response 👍
not for today's patch yet from what I can tell. Keep an eye on Simon's twitter
Do we know what it did?
Any idea why a command registered with an OptionalArg is still expecting 0 arguments? ie "/position DeeKay" returns "The wrong number of required argument was specified. Expected: 0, actual: 1"
super("position", "Get a players position in the world", false);
this.plugin = plugin;
this.playerArg = this.withOptionalArg(
"player",
"net.opticraft.optiquest.commands.position.arg.player",
ArgTypes.PLAYER_REF
);
this.addAliases("pos", "getpos");
}```
optional arguments need to be passed in with the --argument syntax. only required arguments may be positional arguments
so for this case, you command would be executed like this: /position --player DeeKay
TroubleDEV has a great video going over all the options you have with examples
That's where I learned the majority of my command knowledge
nice I'll give it a bookmark
Does someone know how to add specific colors for dropped Items? + droppedItemAnimation
those light lines going up
Anyone have experience with making a server ready for release?
yh somewhat
msg me
anyone running a server on an n100/n150? wondered if it was possible and how well it would work
What info can i get about the player from PlayerRef, i need to get the item in the players hand. I can get the active slot from the packet im listening to
im sure theres a Util somewhere that helps me get info like player inventory and stuff, i just am to stupid to find it lols
hi guys, any1 know why i get the msg "outdated mod detected" ? i have in manifest.json "ServerVersion": ">=0.0.1"
does every one else crash a lot when u play 2 or more players and then at some point when u relogin then game just stops loading chunks i have lost 3 worlds like that and im kinda sad even if i try to log in now there is no chunks and i need to make a new world to be able to play until it ends up doing the same...
Hello there, i used Hytale Server Optimizer in my hosted server do you know if a better plugins exist ?
We are 6 in my server and we explore a lot in our side. Dis Chunker can help for reduce ram uses ?
hey does anyone have any info on if the devs are still going to switch the UI to noesisGUI or not?
how can i get a int block ID? beacuse i can gert string, but si there an int?
they going to
Anyone experience with WorldGen v2 ?
?
Do you know how i can create a world with only like 4 chunks ?
only 4chunks full world or you mean to test the changes?
I was thinking more like an empty world with only 4 chunks flat or something
i have already set the world generation to v2
and regenerated it. But there are way to many chunks
make a mod that can create a new world of that size?
best is problaby create void world
1-viewport radius -2
and only 4 chunks
How would i do that?
create flat world remove chunks go into config make generated_flat to generated_void
"WorldGen": {
"Type": "HytaleGenerator",
"WorldStructure": "Default"
},
"WorldMap": {
"Type": "WorldGen"
},
"ChunkStorage": {
"Type": "Hytale"
},
So Default to Flat? and then regenerate it ?
no
Is there a change block packet or something to send a fake block to a player ?
can we set farmable block stages ? i can get all data i need about farmable block in world but don't see any way to set stage
Hi, I'd like to ask you something. Today I created a world that I then put online through the settings. However, now I'm trying to log back in but it says "Exception when adding player to world connection to server error"
really old reply, but if this comes up for anyone else - check the client logs. ui errors cause the client to crash out and leave the server SOL for error messages. I just hit this because I was setting MinWidth and Width in the same Anchor
Can confirm :D
What info can i get about the player from PlayerRef, i need to get the item in the players hand. I can get the active slot from the packet im listening to
im sure theres a Util somewhere that helps me get info like player inventory and stuff, i just am to stupid to find it lols ?
how to check if a player has op?
Anyone know? Or why i can't get PlayerMouseButtonEvent to fire
non-fuctional
is there a way to stop the player from falling / disable gravity
Get falling distance per tick, then increase Y by position by the amount it fell 🤌 🔥
@opaque skiff are you available? I have concern on your mods
Have some spare cloud compute I'm not using and was thinking of putting up a server. What do people recommend for the best plugins to include (if any)?
Does anyone know if it's possible to use FormattedMessage with colors in entity nameplates? Currently, the Nameplate component only accepts plain String text. Is there any way to display colored text above player heads, or is this a planned feature?"
i'd just replace the health bar with a name plate or add it above, just a thought though
Some entites like the player have a physics component. see if theres anythning to change within that
probably
than again, i just touched the code an hour ago lol
lets see what happens
What dumb and I pulling here?
I'm getting this log line (and it seems my mod assets aren't being loaded anymore?
[2026/02/06 22:03:09 SEVERE] [PluginManager] One or more plugins are targeting a different server version. It is recommended to update these plugins to ensure compatibility.```
Here's my manifest:
```{
"Group": "Trinex",
"Name": "HyThere",
"Version": "0.0.1",
"Description": "Hi!",
"Authors": [
{
"Name": "It's you!"
}
],
"Website": "example.something",
"ServerVersion": "*",
"Dependencies": {
},
"OptionalDependencies": {
},
"DisabledByDefault": false,
"Main": "something.trinex.hyablo.Hyablo",
"IncludesAssetPack": true
}```
HAHAHA You can do something similar with REPO LOL
That goes without saying, each update for modding will break some or break everything, FNV, F4A, and F03GOTY are great examples
FNV, F4A, and F03GOTY
Can't say I know what any of these are
Fallout new Vegas, Fallout 3 game of the year, fallout 4 anniversary edition\
Am I missing a trick or should I go down the ImageAsset path.
trying to update a UI background texture, builder.set("#MyIcon.Background.TexturePath", "foo.png"); -> Crash - CustomUI is not allowed to change this property
i wouldnt know, try just doing an overlap as a temp? see if it even works
yea I think I'll just have to use the AssetImage if I want to update it from code
it's how the memories page works.
the portal page doesn't some hide/show stuff by the looks of it
acting as an entity maybe?
are the asset json schemas defined by the file location? for example - does the game expect the NPC Roles to be only in Server/NPC/Roles, and if i would put the npcrole file inside Server/Item the game will not be able to process it?
it crashed LOL < made progress though
During the break block event, do we even have access to what block is broken? We get the vector3i and the block type, but what if we needed to obtain a component from said block?
i know it may sound like a dumb question, but i'm working on my own "asset editor" with visual scripting and it's really important to me to know that i can trust that the files inside specific directories to have concrete schema, because it seems i can't always really infer the schema just from the file contents, @late breach could you maybe clarify that for me? sorry for the rude ping 🥺
Since the new update (2026.02.06-aa1b071c2) I get the following error on all mods that use custom UI elements:
Failed to apply CustomUI HUD command
With diagnostic mode:
Could not find document HUD/MultipleHUD.ui for Custom UI Append command. Selector:
when removing MultipleHUD (and replacing it with AutoMultiHUD):
Could not find document Master0.ui for Custom UI Append command. Selector:
when also removing BetterItemViewer:
Could not find document Pages/EllieAU_HyUI_Placeholder.ui for Custom UI Append command. Selector:
I can go on and on until every mod that uses custom UI is removed. I feel certain it is an issue of the new hytale update as its not an individual plugin problem.
Unless they changed something regarding how custom ui handling works now...
So I’m not sure who to talk with or where to ask, but I got a server through Bisect so I could play with my friends. We keep getting a TPS error saying it’s dropping from 12 down to like 8-9. It’s causing massive lag and kicking some of us out.
One thing I noticed on bisect is that, of 14GB of ram, it says we keep going and using upward of 16GB. I steadily purchased a higher amount twice!
We have 7 players, only about 3-4 on max at a time. Any suggestions would be helpful.
Excuse me, but is there any way to modify the JSON of a custom object at runtime from Java? For example, so that when I left click with bow, the IdProjectile changes
Hello, I am just getting into modding, and I am afraid because people told me that modding Hytale requires advanced java knowledge, not even intermediate. I know how to code, I am really good at Python for instance, but barely know java...
Is it that advanced?
i managed to make a mash up of what you discribed and am currently experiencing a rave lol
Did you manage to add color to it?
thats the rave lol
i just crashed lol
Let me know if you manage to do anything; I spent a long time trying and it proved impossible.
i just an extension to the player entity, treating the name tag as a separate component, like reactive name plate or in simple terms a like a heatlh bar
that what i thought of when you mentioned it earlier
Good thinking, I didn't think of that.
Does anyone know how to listen to the chunk unload event or make an NPC not save in the chunk?
haha , lol im a streched person now lol
what do you mean?
I need to make it so an NPC/entity doesn't save in a chunk. So when the chunk unloads, the NPC/entity gets despawned and doesn't respawn when the chunk loads again
that'd just break the game no?
No. Hytale has issues saving and loading NPCs with player skins, so I need to find a way to make sure they don't save with the chunk
ooohhh, ok i get what you mean now, i though wanted NPC's to just despawn when you exit a chunk lol
Nope, just when the chunk unloads
which npc are getting affected?
NPCs with player skins
I've been trying to fix this for almost a week, so hopefully you are able to help me out haha
Anyone know of ways to get a Player instance ?
the noodle monster of mine can wait casue im interested now lol
You can get it from the PlayerRef. If you dont have that, then you could also get it from an event
How do i get it from the PlayerRef?
i want to get the player inventory but i only have the PlayerRef
Player player = playerRef.getReference().getStore().getComponent(playerRef.getReference(), Player.getComponentType());```
😮 period
You should likely use a variable for the player reference though, then check if its null or invalid
thats what i have been looking for!!
I'm getting this error, but I haven't used anything similar, [2026/02/06 23:20:28 SEVERE] [PrefabPathCollection] Path 0.null not found
thank you#
i honestly cant find it lol
@dusky sable have you considered npc equip restrictions?
Anyone know what path I should use here?
private fun qualityBackground(quality: HyabloItemQuality?): Value<PatchStyle>? {
val texture = qualitySlotTexture(quality) ?: return null
val patch = PatchStyle(Value.of(texture))
return Value.of(patch)
}
private fun qualitySlotTexture(quality: HyabloItemQuality?): String? =
when (quality) {
HyabloItemQuality.COMMON -> "../Common/ItemQualities/SlotCommon.png"
HyabloItemQuality.MAGIC -> "../Common/ItemQualities/SlotUncommon.png"
HyabloItemQuality.RARE -> "../Common/ItemQualities/SlotRare.png"
HyabloItemQuality.LEGENDARY -> "../Common/ItemQualities/SlotLegendary.png"
HyabloItemQuality.SET -> "../Common/ItemQualities/SlotEpic.png"
HyabloItemQuality.UNIQUE -> "../Common/ItemQualities/SlotLegendary.png"
null -> "../Common/ItemQualities/SlotDefault.png"
}```
Inside of the .ui file, those paths work, but not when doing ItemGridSlot#setBackground with that Value<PatchStyle>... So I'm thinking it's a different root directory it's starting at, but I've tried up to `UI/Custom/Common/ItemQualities/file.png` and `file@2x.png`
i know some server panel provider show tps in their overview and this without a plugin, is there a way to issue a command that shows the current tps without any mod/plugin?
@turbid valve i got it strighted up at least? the side looks shacky cause its not the player, though its not being seen by another "PLAYER"
Well, you achieved something at least; ideally, the other players would see it.
Like for cosmetics?
what are you doing?
yeah, almost everything is being treated as an item in hytale, even they're not normally obtainable in hytale. so the npc should wearing or equiped with what they.'re supposed too,
anyone able to help me edit a plugin? would like to edit TheEconomy Mod and change the enemy config to all entities instead of just picking individual entitites?
Oh, the issue isnt items or armor, it's just NPCs using player skins
Making my own inventory system so I can display additional info that's ItemStack-specific in the tooltip
exactly! just for cosmtic
It's all hytale cosmetics
Hmm... A player is an Entity. I wonder what's different between an NPC and Player that makes NPCs save and load in a chunk
ones an old man, the other is an elf, expect they swapped clothes, so just make it so they always end up wearing what they need to be. so when a chunk unloads, they refresh what supposed to be TRUE
How do i schedule a task in the world thread? Or a new WorldThread, i wan't to get the player in a packet listener but thats on a different thread and cannot access it
like item Disct
Are these using the Player Skin Component?
Yep!
period okay
Yes, like item description. But, the localization string trick won't be scalable for me because it'd end up being like millions of hashed items. So I'm going the "create my own inventory UI" route, so I can just put the item information in the ItemStack metadata, and reference that in the custom inventory. So I'm trying to set the slot background to my custom qualities based on that metadata
yep
just set the display for one when you hover no?
idk wym
try it direct withe NPC?
What do you mean?
UUID auctionId = auctionElementMap.get(elementId);
if (auctionId != null) {
selectedAuctionId = auctionId;
AuctionContract contract = auctionManager.getAuction(auctionId);
if (contract != null) {
LOGGER.atInfo().log("Selected auction: " + auctionId);
// Send a message to confirm selection
if (currentPlayerRef != null) {
ItemStack item = contract.getItem();
String itemName = item != null ? item.getItemId() : "Unknown";
currentPlayerRef.sendMessage(Message.raw("Selected: " + itemName + " - " + contract.getStartingBid() + " coins"));
}
if (previousSelectedElementId != null && !previousSelectedElementId.equals(elementId)) {
ctx.getById(previousSelectedElementId, ButtonBuilder.class).ifPresent(btn -> {
btn.withStyle(new HyUIStyle().set("BackgroundColor", "#2a2a4e"));
});
}
ctx.getById(elementId, ButtonBuilder.class).ifPresent(btn -> {
btn.withStyle(new HyUIStyle().set("BackgroundColor", "#b6b6c7"));
});element
previousSelectedElementId = elementId;
ctx.updatePage(true);
}
}
});```
Anyone here a legend with HyUI? trying to figure out why my Button wont change background color when I click on it
Are you using the latest version? I believe button background colors were only added recently
You can't override the default tooltip, and to use the default tooltip, you need to create a unique localization string for each item. When each item can have up to 3-4 different attribures at different levels, at each "tier"/"quality" (being common, magic, rare, legendary, etc.), 1 item can have hundreds of different variants and that's not scalable with overwriting localization strings.
Aaaannd on top of that, I don't want to use the "vanilla" item qualities for items
HyUI.0.5.11-all.jar
Try updating to the latest version
Ok lets see
a reference, like you specifically want this npc with a specific texture you know, sorry im codding while typing lol
And now I get an error
Set command couldnt set value. Selector: #HYUUIDauction0174 #HyUIButton.Style
Hi guys, maybe do you know what is causing the issue - players are teleporting to oasis, and the main world TPS is drastically drops to like ~15 or less, the server resources are fine and they are not used all the way etc.
@dawn torrent like just when you an ingot it shows its Disct, just apply its creation instuctions on the side no? or at least copy what minecraft does
It's possible they changed something in the latest versions. I'm really not familiar with HyUI. You could try asking in their Discord server
@upbeat wren So I figured out how to make NPCs not spawn when the chunks unload and reload. Thanks for your time 🙂
No, editing the description translation line won't work. That only works for one item id. I'd need to create a new item description with a hash of the attributes on it to get that to work. That could end up making too many different item descriptions. I've tried it, and each time an item drops to the ground with my randomly generated affixes, it needs a new item id. That does not scale well.
So, making my own inventory system is better for my use case. I just need to find out how to format this string to override the background.
Huh, 🤔 honestly that’s the freaky part. A lot of people have been dealing with the override not working correctly.
Id go with the item grid directly? Not sure, I’ve never really messed with UI design.
how do i get a debug log for a mod to add more entities to the plugins config file? i turned it on with curseforge and loaded a world up with the mod/plugin but didnt create a debug log like it says
Another threading question. How do i create a ticking thread with a random delay of ticking? I have a DelayedEntitySystem but you need to define its interval in the super. I kinda want a little randomness within min and max parameters
am i using a regular ticking thread but wait until deltaTime is bigger than the random interval, when it has reached there, generate a new random interval and repeat?
hii, do you know how I can set a custom display name to an item ?
im trying to create NPCs but when i restart the server they're walking in place, how do i stop them from doing that? They're a skeleton archmage and skeleton btw
Hey, I'm trying to listen to CraftRecipeEvent but the handler never fires when crafting at a workbench. I've tried:
- EntityEventSystem<EntityStore, CraftRecipeEvent.Post>
- EntityEventSystem<EntityStore, CraftRecipeEvent>
- EventRegistry.registerGlobal(CraftRecipeEvent.class, handler)
Any ideas?
Hey guys, does anyone know to cancel a command?
which command?
its possible see /update cancel
I want to block all commands @wintry basalt
Is there official documentation for this yet
hi, im trying to create an NPC that when right clicked (or interacted with F) does a function that i want, like let's say i have a sell NPC, when you interact with it, i want the player who interacted with the NPC to perform /sellall, would i need to create the npc programmatically? can i use the npc i have already? im not sure how it works to be honest
Can anyone help me with what type of attack I should use?
"Actions": [
{
"Type": "Attack",
"AttackType": "Primary",
"SkipAiming": true,
"AttackPauseRange": [1.0, 1.6],
"DamageFriendlies": true
}
@turbid valve sorry for the sudden ping, I’m fixing it with a bit a progress. Though wanna be my eventual guinea pig when I feel like play testing it lol
It's not currently possible. The client does a lot of the heavy lifting here, and that's not modifiable
Is there a way to remove the repair penalty in an item?
Anyone know why hiding/showing groups in UI causes container size to sometimes change entirely?
wait what?
im like, 99% certain that thats not true lol, and that you can modify client side gravity
Show me a working example then
actually I know for a fact that you can invert client side gravity
Yep, you're right- you can invert it and I've done that.
But you realize that 'zero-g' and 'invert gravity' are very different?
I do, but im pretty confident using the same packet, you can disable it too
hey! Anyone keen to work on a casino/arcade game plugin?
The invert gravity control is a boolean t/f, nothing about physics can be changed.
"Type": "Attack",
"Attack": "Use Root Interaction"}
find Root_NPC_Attack_Melee for understand how it works
thats blatantly false, there are many physics options to change
No, you can't disable gravity. You can try to use a mixin to tell the client it has no gravity, but that is not implemented on the client to my knowledge.
Yes, I used the StandardPhysicsProvider and all that.
I used packets
I'm saying nothing about physics can be changed not because of the packet, but how the client interprets it.
and im talking about the client lol
If you can show me an example of actual zero g (not just flight), I'll Venmo you $20 for the code.
bet
Zero G as in, the client think there's no gravity, and you can add a force to move the player in different directions with drag
oh drag is trivially possible
Add my friend, and I'll put a little legal contract saying I'll do it if you can do the zero G thing
Couldn't you just set mass = 0? That's part of the movement settings
yes lmao
I should know, the client can be sent a packet that stops it from doing anything but move its head
An object that has mass should be able to be zero-g too, that's important for drag calculations. It might divide by 0 if you set it like that.
anyways, heres all the settings you have to work with:
STRUCT_S(movement_config,
F(float, float, mass)
F(float, float, drag_coefficient)
F(bool, uint8_t, inverted_gravity)
F(float, float, velocity_resistance)
F(float, float, jump_force)
F(float, float, swim_jump_force)
F(float, float, jump_buffer_duration)
F(float, float, jump_buffer_max_y_velocity)
F(float, float, acceleration)
F(float, float, air_drag_min)
F(float, float, air_drag_max)
F(float, float, air_drag_min_speed)
F(float, float, air_drag_max_speed)
F(float, float, air_friction_min)
F(float, float, air_friction_max)
F(float, float, air_friction_min_speed)
F(float, float, air_friction_max_speed)
F(float, float, air_speed_multiplier)
F(float, float, air_control_min_speed)
F(float, float, air_control_max_speed)
F(float, float, air_control_min_multiplier)
F(float, float, air_control_max_multiplier)
F(float, float, combo_air_speed_multiplier)
F(float, float, base_speed)
F(float, float, climb_speed)
F(float, float, climb_speed_lateral)
F(float, float, climb_up_sprint_speed)
F(float, float, climb_down_sprint_speed)
F(float, float, horizontal_fly_speed)
F(float, float, vertical_fly_speed)
F(float, float, max_speed_multiplier)
F(float, float, min_speed_multiplier)
F(float, float, wish_direction_gravity_x)
F(float, float, wish_direction_gravity_y)
F(float, float, wish_direction_weight_x)
F(float, float, wish_direction_weight_y)
F(bool, uint8_t, can_fly)
F(float, float, collision_expulsion_force)
F(float, float, forward_walk_speed_multiplier)
F(float, float, backward_walk_speed_multiplier)
F(float, float, strafe_walk_speed_multiplier)
F(float, float, forward_run_speed_multiplier)
F(float, float, backward_run_speed_multiplier)
F(float, float, strafe_run_speed_multiplier)
F(float, float, forward_crouch_speed_multiplier)
F(float, float, backward_crouch_speed_multiplier)
F(float, float, strafe_crouch_speed_multiplier)
F(float, float, forward_sprint_speed_multiplier)
F(float, float, variable_jump_fall_force)
F(float, float, fall_effect_duration)
F(float, float, fall_jump_force)
F(float, float, fall_momentum_loss)
F(float, float, auto_jump_obstacle_speed_loss)
F(float, float, auto_jump_obstacle_sprint_speed_loss)
F(float, float, auto_jump_obstacle_effect_duration)
F(float, float, auto_jump_obstacle_sprint_effect_duration)
F(float, float, auto_jump_obstacle_max_angle)
F(bool, uint8_t, auto_jump_disable_jumping)
F(float, float, min_slide_entry_speed)
F(float, float, slide_exit_speed)
F(float, float, min_fall_speed_to_engage_roll)
F(float, float, max_fall_speed_to_engage_roll)
F(float, float, roll_start_speed_modifier)
F(float, float, roll_exit_speed_modifier)
F(float, float, roll_time_to_complete)
)
Holy macro
Yes, I know- I've decompiled the server and seen all of that.
Just because a field looks like it might affect gravity doesn't mean it's going to work
trust me, I have sent them before lol
Like I said, provide a working reproducable example of the code to create a zero-g environment and the money is yours
mind if its in the form of a native binary?
Yes, why can't it be a plugin if that's what you're modifying
because im not using the vanilla server
Most people here are working with Java plugins... not native binaries. What platform would it even be for?
linux, x86_64
I'm on Aarch64
android or linux, or mac
Mac
The resulting code should be in a plugin form, because that's the most accessible.
yeah best case your getting here will probably be a server that you end up having to connect too, unless you want a binary lol, you could probably run it via emulation
no way im setting up a whole new plugin when I have a perfectly good server that already does it
If you send me a binary/patch and I can reproduce it, then I'll follow through
Its been suggested to me that I should break off the Auction House into its own mod that hooks into Shubshub Economy Balance
What do you guys think
best I can do is an x86_64 linux binary without setting up extensive cross compiling garbage
You are going to manually patch the assembly? Not going to write in C or whatever
Or you're talking about the actual server JAR bytecode?
I wrote it in C, its a reimplementation from scratch
This channel is about server plugins, not a random proprietary server... who could that possibly benefit other than you?
I might open source it down the line, but as I said, it does what you asked
It doesn't even support the latest versions as they come out.. what's the point?
Come up with some pseudocode or Mixin patch that makes the Hytale official server JAR or no deal.
I'm asserting right now that I did patch the HytaleServer JAR to fix those packets, and still- the client couldn't interpret it, and just continued with normal gravity rendered in its engine.
I didnt care about the money from the start lol, but here, this is the movement settings packet that you would want to send if you want to disable the client from moving vertically on its own
send_update_movement_settings_packet(cnx, 0, write_buf, WRITE_BUF_SIZE, 0, (update_movement_settings){
.has_settings = true,
.settings = (movement_config){ .mass = 0.0, .drag_coefficient = 1.0, .velocity_resistance = 1.0, .jump_force = 8.0, .swim_jump_force = 1.0, .jump_buffer_duration = 0.5, .jump_buffer_max_y_velocity = 1.0, .acceleration = 0.1, .air_drag_min = 0.5, .air_drag_max = 40.0, .air_drag_min_speed = 1.0, .air_drag_max_speed = 1.0, .air_friction_min = 10.0, .air_friction_max = 20.0, .air_friction_min_speed = 1.0, .air_friction_max_speed = 1.0, .air_speed_multiplier = 1.0, .air_control_min_speed = 1.0, .air_control_max_speed = 0.4, .air_control_min_multiplier = 1.0, .air_control_max_multiplier = 1.0, .combo_air_speed_multiplier = 1.0, .base_speed = 10.0, .climb_speed = 1.0, .climb_speed_lateral = 1.0, .climb_up_sprint_speed = 1.0, .climb_down_sprint_speed = 1.0, .horizontal_fly_speed = 1.0, .vertical_fly_speed = 10.0, .max_speed_multiplier = 1.0, .min_speed_multiplier = 1.0, .wish_direction_gravity_x = 1.0, .wish_direction_gravity_y = 1.0, .wish_direction_weight_x = 0.5, .wish_direction_weight_y = 0.5, .can_fly = false, .collision_expulsion_force = 1.0, .forward_walk_speed_multiplier = 1.0, .backward_walk_speed_multiplier = 1.0, .strafe_walk_speed_multiplier = 1.0, .forward_run_speed_multiplier = 1.0, .backward_run_speed_multiplier = 1.0, .strafe_run_speed_multiplier = 1.0, .forward_crouch_speed_multiplier = 1.0, .backward_crouch_speed_multiplier = 1.0, .strafe_crouch_speed_multiplier = 1.0, .forward_sprint_speed_multiplier = 1.0, .variable_jump_fall_force = 0.1, .fall_effect_duration = 1.0, .fall_jump_force = 0.1, .fall_momentum_loss = 0.0, .auto_jump_obstacle_speed_loss = 1.0, .auto_jump_obstacle_sprint_speed_loss = 1.0, .auto_jump_obstacle_effect_duration = 1.0, .auto_jump_obstacle_sprint_effect_duration = 1.0, .auto_jump_obstacle_max_angle = 1.0, .auto_jump_disable_jumping = true, .min_slide_entry_speed = 1.0, .slide_exit_speed = 1.0, .min_fall_speed_to_engage_roll = 1.0, .max_fall_speed_to_engage_roll = 1.0, .roll_start_speed_modifier = 1.0, .roll_exit_speed_modifier = 1.0, .roll_time_to_complete = 1.0 }});
all of the 1.0 values are just values that I didnt bother filling
I'll see if ChatGPT can derive some Java code from that C + the HytaleServer source context
yeah this is basically a 1 to 1 movement settings packet lol, there isnt actually really anything special or any weird layers abstracted over it
I just asked AI to give me a Java example from the C 'pseudocode'
if you were trying to do this with chatgpt prior, I would wager your issue was using chatgpt lol
and, just to clarify, gemini wasnt the one who made the diagnosis that the client ignores the values sent?
Haha... correct
I did my due diligence with manually reading the recreated source code
Well I'll be damned...
if you change the wish* fields to zero im pretty sure you wont be able to move horizontally either
Which ones for that?
public float wishDirectionGravityX;
public float wishDirectionGravityY;
public float wishDirectionWeightX;
public float wishDirectionWeightY;
all of them
Yes, I seem to be locked in place
How would you get the block the player touches?
technically im pretty sure only 2 need it, being the wishweights, but all of them to be safe
That sucks about the mass having to be zero though...
I guess I can do a higher level physics engine that includes the player assuming it has mass but not actually affecting the packets, and continue with that engine
you can also mess with the other fields like {.drag_coefficient = 1.0, .velocity_resistance = 1.0, .jump_force = 8.0, .swim_jump_force = 1.0, .jump_buffer_duration = 0.5, .jump_buffer_max_y_velocity = 1.0, .acceleration = 0.1, .air_drag_min = 0.5, .air_drag_max = 40.0, .air_drag_min_speed = 1.0, .air_drag_max_speed = 1.0, .air_friction_min = 10.0, .air_friction_max = 20.0, .air_friction_min_speed = 1.0, .air_friction_max_speed = 1.0}
to do some other gravity stuff
iirc, messing with them can change fall speed
Alright well, I suppose I owe you $20, though it would be nice to be able to have vertical movement as well
what kind of vertical movement?
Same as the X/Z, but in the vertical direction, too. So, player presses space/ctrl and has a vertical acceleration with drag
I know that ctrl is detectable, and im like, 99% sure you can detect space as well
Yeah, haha, I just asked Gemini to think something up for the plugin api
I'm only commenting from the sidelines, not really reading all the context - but the movement manager has a canFly flag, and you can set both horizontal and vertical speeds.
yeah, though im not sure if the client will ignore impulses from the server when set to fly
also its toggleable by the player, so thats a bit of an issue(and while you can make it so that it cant move while not flying, it could be a bit confusing for players)
Right, right, trying to avoid fly because it's a controlled state, not really part of the physics. I'm working with a physics-heavy environment and trying to simulate moving bodies
are there any tutorials on making it so my Mod has an API other mods can hook into?
That's just a simple Java + compiling concept
Create a set of abstract components/interfaces that encapsulate plugin logic + DTOs, and implement it, bundle that in a separate JAR dependency, and call on it with a real implementation
Or just make all your methods public, lol
Sure, I guess if you're not obfuscating then you'd be distributing the JAR anyway, that would make it easy
I'm only thinking, what if the Plugin JAR is huge, wouldn't want every developer using it to download the whole jar from maven/some repo
I'm tired bro. been making Heroes RPG for the last 2 weeks
Show us whatcha got
cant even show pics D: its Heroes RPG on curseforge
😔
anyone know how i can cancel a packet from here?
public class PacketListener implements PacketWatcher {
@Override
public void accept(PacketHandler packetHandler, Packet packet) {
if (packet.getId() != 290) {
return;
}
SyncInteractionChains interactionChains = (SyncInteractionChains) packet;
SyncInteractionChain[] updates = interactionChains.updates;
for (SyncInteractionChain item : updates) {
PlayerAuthentication playerAuthentication = packetHandler.getAuth();
UUID uuid = playerAuthentication.getUuid();
InteractionType interactionType = item.interactionType;
PlayerRef playerRef = Universe.get().getPlayer(uuid);
World world = Universe.get().getWorld(playerRef.getWorldUuid());
world.sendMessage(Message.raw(interactionType.toString()));
if(interactionType == InteractionType.Use){
if (world.getName().contains("Hub")) {
}
}
}
}
}```
Can someone please tell me if it's possible to control global illumination, fog, visibility range, and light source in this game?
I meant whether it is possible to do this with the tools that the game already provides you, that is, don’t create anything there, don’t code anything, don’t add anything on top of the game, that is, let’s say if I create a world as an admin or as a rector and want to change this, will I have such an opportunity or is it done in some other way, that is, it can’t be done in the game itself, that is, you did it and saw it right away
its 100% possible with code, I cant say if it is without it though
What's the most appropriate way to get a component belonging to the block in the BreakBlockEvent? I figured that would be readily available as it's... regarding the block, but I can only figure out the long way of fetching the chunk, and then the block component entity within said chunk, and then the desired component from that.
Anyone have a fix for patchline warning popup? I have to manually updated my mods 1 line of code every update even though it still works is there any way to just make it work?
@fluid night Hey, I am trying to Integrate my Economy Mod with HyVault
But I am getting a ton of Override errors in my Hook.java
@Override
@Override
public String getPluginName() {
return "Shubshub Economy - Balance";
}
@Override
public String getVersion() {
return "0.0.1";
}
@Override
public String getAuthor() {
return "Shubshub";
}
@Override
public double getBalance(String playerName) {
// Implement logic to get balance for the player using ShubshubEconomy's API
return economyManager.getPlayerBalanceData(null, playerName).getBalance().doubleValue();
}```
eg
Netbeans 💀
Im actually using VsCode But I use Netbeans for work
So all my repos arein there
I see
About this, there's most likely differences in signatures or the @Overriden methods are not present in the superclass
Will a BigInteger automatically convert to a double if I do
double num = getBigInteger();
I want to make an Override that specifically has a different return type, But the same parameters
Actually I guess the better way to do this is to just use my Internal APIs if HyVault says its my Mod
You could call .doubleValue() if it doesn't
Its ok I think Ive decided how I can handle it
Since my Economy Mod is probably the only one that supports BigInteger 😛
How are you guys naming your registered components? I assume that the names need to be globally unique, so including the mod name is probably a good idea
Hello, if any server or user needs a custom mod or plugin, please let me know, as I have commissions open. These can include art, animations, and complex functionalities.
What i have seen in other ecs solutions, is either unique folder name that is added as part of the name if unique folders are supported, or mod name or prefix of shortened modname that often would be the same as said folder name.
I would probably do a 3-4 letter prefix of my mod and start with that. Maybe.
I'm happy to report, Its been a complete success today
- I added a HyVault Integration to Shubshub Economy, To allow for easy integrating with other Economy Components that do the same
- I've split out the Auction House into its own Mod, So now we have "Shubshub Economy - Balance" and "Shubshub Economy - Auctions", The auctions mod DOES NOT require SSE-B, It will however have the Benefit of BigIntegers if you do use it
- Shubshub Economy - Balance can now be easily used with other Economy Plugins that Integrate with HyVault
That makes sense!
but the component parts is mostly on the server side right, so there you would probably have your component in your own namespace i guess.
For talking to the client it would all go trough a codec, that can use any names... right? I am still not gotten the full hang of this.
When registering a component you have to provide a name string. It's used as a discriminator for serialization
Hey @icy wedge I'm also adding support for VaultUnlocked to Shubshub Economy - Balance, And Shubshub Economy - Auctions
It's the same type of thing if you use CodecMapCodec/ObjectMapCodec for serializing polymorphic objects
Makes sense.
anyone know a method to having more than 1 instance open?
I was planning on diving into the code layout yesterday and during this weekend, but I have had a killer headache, so I am not up to speed with the registration and the flow of it yet. But I think my naming idea would still work. Just wasn't sure if it was needed. But yeah, if you define stuff in json and it doesn't purely live in logic serverside, it makes sense you would need to have it uniquely named.
only by putting it in a vm unfortunately
I was mostly just curious about what other people are doing. The Minecraft format is [mod ID]:[name of thing], and imo I think that makes sense for components too
is CraftRecipeEvent bugged? it doesn't fire no matter what
i'm so mad 😂
did u solve it somehow?
i think it fires only for the inventory crafting
not station crafting. thats what ive heard at least
god damn. ok, thx for info 😄
has anyone been able to fix the spawn issues (some spawns just never trigger in base hytake prefabs)
Hello! is there a way to execute commands via interactions?
Is there a way to save data in client disc, i want to make a persistat map so i need to save the chunks explored in their disc like xeros minimap
You can register your own interaction
Guys how do i have a reference to an entity ?
Like in Minecraft it was Entity, LivingEntity etc..
What is the corresponding to hytale ?
entity
Cheers I'll add it to the list
Its not out yet, But hoping soon 🙂
Want me to keep you updated?
Indeed
What is the hytale's version of Minecraft's Material ?
BlockType
or Fluid
It works for Item too ?
Question:
is it possible to turn off or reduce fall damage on a mounted creature without changing all creatures their fall damage in game? (For a mod)
Is it possible to give a mounted creature a sort of slow fall effect. So it falls slower to the ground.
Only thing i know is flying mounts are a no go right now in game. I’m not a coder but i would like to know so i dont have to ask other people to try to code it for me.
No, item assets are in the Item asset map
They have something in common ?
Like i would like to check for a meterial type, not only block or item
Maybe String ?
I don't have enough context to know what you want to do
you can convert back and forth between BlockType and Item, if applicable
mhh its like i would like to check if it is the correct item
private Material toCompare;
public boolean check(Material material){
return toCompare == material;
}
In hytale, to be the most generic possible, i have to use String ?
Yes, all asset maps are string-discriminated (but integer-indexed at runtime for performance, i believe)
Okok thanks
So ”safest” is to compare strings (getItemId())
Item.getId()
is only way to disable default hytale plugins create systemcommand and inside hytaleserverconfig something etc
there should be /plugin disable <name> --boot or something
okay
Has someone found a way to dynamically change tooltips or names of Items yet? Like only for one Adamantite sword and not for all Adamantite swords? Without creating a new Item ID? I tried a lot of workarounds to get it to work but never succeeded
Tooltips cannot be edited without copying the asset, overriding the base one, and editing it that way.
If tooltips could be edited through only code I'd be a happy camper but... nope.
I AM HONESTLY REALLY FRUSTRATED RIGHT NOW. I BOUGHT YOUR GAME FOR 20 EURO AND I STILL CAN’T PLAY MULTIPLAYER WITH MY FRIEND ON A SINGLE WORLD. WHY IS SOMETHING THIS BASIC SO HARD TO MAKE WORK?
WE JUST WANT TO PLAY TOGETHER LIKE IN NORMAL CO-OP GAMES, BUT INSTEAD WE HAVE TO DEAL WITH SHARE CODES, NETWORK PROBLEMS, CONNECTION FAILURES AND RANDOM ERRORS.
how can i join server in hytale
If you're referring to existing items in the base game, you'd have to overwrite either the item json-
Or you edit the language file.
Actually, the second one would probably work best. But only if want all instances of the sword to have it. Otherwise, yes, you'll just have to make a duplicate item if you want to give it its own description without overwriting all of them.
However, for the description, you'd still have to overwrite the Adamantite sword anyways, since it doesn't contain a reference to a .description in the language file anyways.
- This isn't customer support
- Since this isn't customer support, crossposting does nothing
- The game is in early access, you knew that while purchasing. Even if you absolutely can't get it to work, it was a possible outcome from the start
I've done some research, and if you have multiple accounts it should be pretty easy. You simply launch the client with different arguments
- ...?
- profit
You can't use the same account, the older session gets invalidated and can't join online worlds anymore
Though, I did discover there's an offline launch mode too if that helps with anything
It can't join online worlds either
Duplicate items are not an option for me, since it would break compatibility with a lot of mods. So I guess there's nothing I can do rn, just hope that it's possible in the future. (I need it to display enchantments in the tooltips and since you can use different combinations of enchantments on the same item type, changing it for all is not sufficient)
What way would it break compatibility?
A launcher only allows a single client, so you'd need to launch the launcher twice and change the account for the 2nd client instance
with server ip
ohh so can u give me some server ip ?i am new to the game
there are server lists you can look at them
I would need to dupe vanilla items where other mods rely on. And some systems break just by appending metadata like the salvage bench
Kindof, I used Mixins for that.
You'd be making a duplicate with its own unique ID. Thus it wouldn't affect mods that are calling for the base-game version.
But then these Items have a different ID and wouldn't count as the vanilla item for these mods anymore
Now that I'm thinking about it- There was a mod I recall, let me go search for it. Only remember it did something where other mods could use it append code to a base item without overwriting it and overtly causing issues for other mods that also do the same.
Is it possible to change how UI calculates how many items you have for the recipe? It seems like it is the Client who calculates it instead of Server, or am I wrong? I'm trying to implement custom recipe function that allows you to use Tool's durability for the craft (I already got this part working), but I have no idea how to change UIs to properly display that
You can make dynamic tooltips by sending custom packets that pretend to be overwriting the item definition
Considering what they're going for, that's definitely more complicated than they want to get.
can you tell me how do I tackle that? It seems complicated, thoguh I already use Mixins for most of my stuff anyway so I might aswell fiddle arround with that
Can you do it per client? So I override the translation key just for one client, and only if they are hovering over an specific Item?
I haven't worked with it myself. But you can check #1467918520456183949 in the hytalemodding,dev discord
anyone knows a way to prevent player from moving player past certain boundary except for adding a teleport component? teleport components works fine most of the time but i define a duel range and i just want to prevent player from going out of bound and teleporting them feels yanky and more rubberbanding. anyone know of another way?
Try searching up the "Barrier" block. It exists in code, but I'm unsure if it's accessible in any capacity through the creative menu. You'd likely have to search for it with the searchbar, since it doesn't seem to have any tags that would put it into any category.
Is there any way i can contact the support team? I bought it, and it wouldn't go through. Lost my money already
where should i put images that i want to use in UI and what path do i need to use in ui elemnt
AssetImage #Image5a78291d {
Anchor: (Width: 50, Height: 190, Left: -50);
AssetPath: "Crystal.png";
}
is there a better way to filter stuff in curseforge besides the sort?
Anyone know how to make a npc flying mount? Im really confused with the assets configuration
Next to that UI document
More info: hytalemodding dev/en/docs/official-documentation/custom-ui/markup#path
yea i have image in UI , UI/Custom, UI/Custom/Pages and ui file is in UI/Custom/Pages/myui.ui and i see white an red image so no texture loaded idk why (checked my jar file and image is included)
it works when image is in Common and path Image.png
hi modders is there a method to get a player's IP address like in spigot/paper player.getAddress();
@frail mason
Is player last login stored anywhere?
only in the server logs
Anybody know if hytale has built-in model texture recolor rendering methods?
ye saw it already, whats the replacement for getUUID? everything is just depecrated now man
Check what the deprecated method calls
It's usually replaced with the non-deprecated alternative
Hi, do you have any winning ideas for a plugin? I created something similar to WorldGuard plus a core plugin, but I’m not getting the sales I expected or would like. Any suggestions?
Hi there, i desperately need to talk to someone informed on server requirements.
I currently have a 32GB / 8 vCPU on a french Host, i am facing TPS drop when i get 6+ players doing actions t=on the same map. I have a couple mods installed but hey i want to run smth without problems.
I did check specialized host they seem cheap for 10-16 GB RAM but will it solve my problem ? My server has no integrated game panel i manage everything myself (and its ok).
Has anyone informations, or knows someone ? 😢
Reduce view distance or install a mod that turns it down and back up dynamically like Nitrado's "PerformanceSaver"
install Spark to see if it's one of the mods that causes the lag
Are there any recommended resources to write custom plugins ?
Hello I have this problem, idk how to modify the dmg applied to the blocks in a bomb i got this json in the asseteditor but idk if theres a 'DamageModifier' or something like that that i can paste in the json so it actually can destroy blocks
"TranslationProperties": {
"Name": "server.items.Weapon_Bomb_Potion_Poison.name"
},
"Categories": [
"Items.Weapons"
],
"Quality": "Uncommon",
"ItemLevel": 20,
"PlayerAnimationsId": "Item",
"Interactions": {
"Secondary": "Item_Throw"
},
"InteractionVars": {
"Item_Throw_Projectile": {
"Interactions": [
{
"Parent": "Item_Throw_Projectile",
"ProjectileId": "Bomb_Miner1"
}
]
}
},
"IconProperties": {
"Scale": 0.75,
"Translation": [
-13,
-12
],
"Rotation": [
12.5,
12.5,
315
]
},
"MaxStack": 16,
"Model": "NPC/Intelligent/Goblin/Models/Weapons/Bomb/Fire.blockymodel",
"Icon": "Icons/ItemsGenerated/Weapon_Bomb_Fire_Goblin.png",
"Texture": "NPC/Intelligent/Goblin/Models/Weapons/Bomb/Fire_Texture.png",
"Tags": {
"Type": [
"Weapon"
],
"Family": [
"Bomb"
]
},
"Weapon": {},
"Light": {
"Radius": 1,
"Color": "#dc1"
}
}```
i did reduce render view distance for players with optimizer dynamically, it works but not that good for people to be too much restricted.
- if i want to have a big render distance on my build flat map, i would be blocked by the same limitation
I've learned a lot from the TroubleDEV videos on youtube
The problem lies in how user management is designed on the server. It consumes so many resources that it ends up making the server.jar inefficient.
Is there a way to make bombs destroy blocks?
anyone else having trouble signing in modtale?
😮 you mean its basially hytale architecture, thats gonna be reworked one day, so everyone is facing issues since they have many players loading chunks
Where is this file located?
@Panel = Group {
Background: (TexturePath: "Common/ContainerFullPatch.png", Border: 20);
};
I only see ContainerFullPatch@2x.png in Assets
I have a camera which is detached from the player and so I can move it freely in the world
and now I want to be in the same position and rotation of the camera and switch to a diffrent mode of a camera (still detached from the player)
problem is I didnt find a way of getting the position of the camera when it is detached from the player do you have any ideas on how to do it?
Hytale is being developed with a "server-first" approach. This means that the server is considered the authoritative source of game state and logic, while the client primarily handles rendering and user input.
I found answer...
if (!CommonAssetRegistry.hasCommonAsset(asset)) {
if (this.isUIAsset && asset.endsWith(".png")) {
String scaled2XVersionFilename = asset.substring(0, asset.lastIndexOf(".png")) + "@2x.png";
if (!CommonAssetRegistry.hasCommonAsset(scaled2XVersionFilename)) {
results.fail("Common Asset '" + asset + "' doesn't exist!");
}
} else {
results.fail("Common Asset '" + asset + "' doesn't exist!");
}
}
is there a way to get the players attachments in the code
absolutely, avoids cheating and maby problems, but why would it be relative to my tps drop problems ?
hi what method to freeze a player? im trying to make a Freeze command
I believe one of the reasons is that it doesn't use traditional "Classes" for objects (where a player is simply a Player object). It uses a system of Entities and Components, and maintaining a Universe/World is quite expensive.
I have not checked it but maybe the player has a movment component and maybe you can remove for the duration of the freeze but again I am not sure
You could use the component: MovementManager
ty
dont think I can do that for freezing, ill try finding another way, my client craashes whenever I try to move when setting movement settings for freeze
I just saw that BlockState is deprecated and flagged for removal in the latest build. Does anyone have any idea what it was replaced with please?
BlockState is being replaced by Block Components (Component<ChunkStore>)
so basically I turned a horse into a boat using the asset editor, but I would like to give it some more boaty properties. I've discovered there are several motion controllers, and one of them used for fish seems to be "dive". My problem is that the boat sinks to the ground still, does anyone know what can be configured to make it buoyant (or at least make it appear this way)?
do you know of a class I can look at for understanding implementation please?
You might have to use the swim component the player has
Subclass it and remove the up and down
try com.hypixel.hytale.server.core.universe.world.meta.state.LaunchPad
It's used for the mushrooms
All the examples I could find out there for block animations use BlockState, do you know how to trigger animations with block components? Or is that not implemented yet?
I do not know that
thanks. its getting hard to navigate between classes using deprecated classes and the ones using the new methods
now dont get me wrong. I get why they're doing this things way since you do need to keep extending out from the universe, to the world, to the chunk to the block since adding and removing requires all those subclasses but this doesn't half make for diabolical spaghetti code
yeah the verbosity/amount of boilerplate is one of the main disadvantages of ecs
I haven't tried it, but maybe it will work for you?
MovementStatesComponent mov = store.getComponent(ref, MovementStatesComponent.getComponentType());
MovementStates temp = mov.getMovementStates();
temp.walking = false;
i think going forwards they need to create an API that smooths all of this over. if only to increase accessibility.
and i realise they cannot do that without clearing out the masses of deprecated stuff in here first
Yeah this is early early stuff. The api will only get better over the next few years
true
the concern is that when you look around for guides you have so many ppl using deprecated code and you just know everything will break if you start working with that approach
yep and everyone who purchased the game has acknowledged that things will break during early access
i was looking at this stuff to get familar with plugins and i just kept seeing deprecated, deprecated, deprecated. I immediately started to realise that you can't use half this codebase for reference
ahh RespawnBlock uses components to0
oh this is much better. it just stores a UUID
so if i'm reading this right. you basically spawn entity as normal, slap in the mandatory components and then toss in a blockstate component like this if you want to store custom data in the block?
what I don't get is how you spawn in a placed block entity rather than the item of the block
ok i found this
int newBlockId = BlockType.getAssetMap().getIndex(nextBlockType.getId());
int rotation = worldChunkComponent.getRotationIndex(targetBlock.x, targetBlock.y, targetBlock.z);
worldChunkComponent.setBlock(targetBlock.getX(), targetBlock.getY(), targetBlock.getZ(), newBlockId, nextBlockType, rotation, 0, 256);
i assume setBlock is what I need rather than addEntity?
Is it possible to change a specific JSON value from Java within a modified object that a player has?
there's already an official port
wish they're use enums more than IDs. some of these conditionals are vague
Enums would be hard-coded instead of data-driven
yeah i realise the extra work but its just easier to read
and yes, its a pain having maps that convert enum to values and back again
most programs, especially games, are going away from enums, it's really the old school way of doing things
Especially if you want to be able to take Hytale out of Hytale ^^
i mean take this for example
if ((settings & 2) == 0) {
Holder<ChunkStore> blockEntity = blockType.getBlockEntity();
if (blockEntity != null && filler == 0) {
Holder<ChunkStore> newComponents = blockEntity.clone();
this.setState(x, y, z, newComponents);
decompilers not 100% yet eh?
like that 2 is SetBlockSettings.NO_UPDATE_STATE if i guess the context correctly
i very much doubt they'll get rid of enums unless they have an alternative that is equally as readable
yeah a decompiler can't undo all compiler optimizations
yeah now thats the kind of thing I was expecting to see here
I never said they would get rid of, I said most programs are going away from, don't confuse the two
enums are for instances where you know every possible enumerable value; calendars as an example, we know the finite days, months, etc
It would be quite restrictive for modding, which is why you see projects such as Minecraft moving away from them
ok but what Im saying is that if there is a step back towards using UID instead of enum in order to save the absolutely minicule amount of extra processing that an enum requires then it seems like optimisation at the cost of readability
I think we can agree to disagree with this one, I understand where you're coming from, but enums do have their place just not the place that Hytale wants modding to be
i mean sure, you could have two windows open. one with the array and you just index everything but honestly that starts to become cumbersome
they already said they welcome custom servers, you could create a custom server with an enum-based modding api
i did it day 1 of hytale lol altough i switched to the official one after it released recently
I mean even with an enum-maximalist strategy (which I'm aware nobody is arguing for), the SetBlockSettings is still better implemented as a Bitmask than an enum
indeed, I was 4 days past launch
3 days*
har har im not quite up to doing that myself
Does anyone know how I could open two windows at the same time? Like i want to open a custom ui with a inventory container window at the same time
bit messy but why not just create a single UI that is pulling data from both so it seems like you've opened two UI?
Yeah but i still want the functions of putting in and taking items from that inventory container
we dont have a way to fudge it by highlighting two UI elements and using a button to swap perhaps?
i mean keep in mind that im still reading through this stuff so I dunno what we can and cannot do yet
Is anyone using the npcdialog plugin? I have it installed but everytime I try to run the command /npcdialog it crashes my server
I am also not sure if I have it setup properly in luckperms, but I can't find any documentation exclusively for luckperms and npcdialog (I opened a ticket with hyronix, but they are super unresponsive to support)
Probably because it hasn't been updated in 13 days?
I think you're right. Do you happen to know of a better alternative to npcdialog?
essentially I'm looking to create npcs for quests
I wish Hytale had this feature built in to their own framework (i.e. I spawn in an NPC then I can natively build out whether it is a quest NPC or other type and then it would open an editor that would allow me to enter quest dialogue and reward options)
hycitizens ? free
is that on curseforge?
builtbybit
Can anyone explain SpatialResource tor me?
Do i use this.getEntityStoreRegistry() to register a TickingSystem ?
hmm okay
Is there a way to give you kudos in the discord server? like an upvote or anything...cause you just saved me a huge headache
When a tilled soil block becomes watered, its blockid becomes *Soil_Dirt_Tilled_State_Definitions_Watered but there is no reference to this anywhere in the asset editor. I cant really find anything in the server code either. How is this handled?
the last time I saw the * in an item it was reference to varients within the asset editor
im not sure how they are used but they were on fish varients for rarity which influcend drop rates
interesting hmmm
Hytale seems to have no unified way to handle block and item variety at the moment. So far I've seen varients, blockstates, component states and blockgroups
blockgroups seem to be specific to the hammer tho. i've not seen it used anywhere else
yeah i want to turn tilled soil to wet but i am unsure what forces it to change variant into the wet version
Without a commandbuffer, can i get the specific block instance to get the component from a block to make changes or ?
dunno, still figuring out how the ECS handles blocks at the moment
as best as can tell the hammer is the best example of item to block interactions
have a look through CycleBlockGroupInteraction
it details the whole process of getting the block you interacted with in the ECS and then replaces it with a new one
it still uses CommandBuffer<EntityStore> to get the component which i dont have access to
once I figure this out and get it working I'll share what I know. I don't like folks who gatekeep
yeah i am with you, i'll keep looking to see what i can find
are youy trying to avoid the command buffer for permission reasons?
no its just im calling a function from a TickingSystem that doesn't pass a commandbuffer
ok well reading this. the commandbuffer is only used for the logger and itemstack removal. it should function without it
and i need the Tilled Soil component from the block entity which i have only found it being retrieved by a commandbuffer
if i had to guess. it seems like Hypixel basically fudged item removal through the command system. thats why it is only used for player inventory features
im so unsure what im doing lols
nope.
ChunkStore chunkStore = world.getChunkStore();
Store<ChunkStore> chunkStoreStore = chunkStore.getStore();
BlockChunk blockChunkComponent = (BlockChunk)chunkStoreStore.getComponent(chunkReference, BlockChunk.getComponentType());
BlockSection blockSection = blockChunkComponent.getSectionAtBlockY(targetBlock.getY());
int blockIndex = blockSection.get(targetBlock.x, targetBlock.y, targetBlock.z);
BlockType targetBlockType = (BlockType)BlockType.getAssetMap().getAsset(blockIndex);
yeah but does that get the instance of a block already placed in the world?
I thought that was essentially getting the blocktype, and not the BlockEntity already placed?
Queueing changes to components also uses a command buffer no?
fixed the comment. thats every var accounted for. no need for commandbuffer as the world is passed into the interaction
ECS is sooooooo long winded
How would i then make changes to a specific component then?
Blame Java for that not ECS lol
that i haven't figured out yet. I'm assuming you either replace the component or update it's values directly
hmmm i think i might have something one second
might be six of one and half a dozen of the other. this ECS is basically mass nesting. the way I'm reading this is that the universe is a holder, the world is a holder, the chunk is a holder and the section is a holder for entities
Hytalemodding_dev/en/docs/guides/plugin/store-persistent-data
had to remove the link but this article seems to be relevant since players are entities too
this uses a reference to the player you're targetting, which i guess is what i will need to get
i was thinking more along the lines of it being how to add and remove components
I will need to get the blockentity reference and then i can use the entity store to get the blockentity and make changes
that just store values
true true
World world = commandBuffer.getExternalData().getWorld(); // just to show how to get the world if needed
Store<EntityStore> store = commandBuffer.getExternalData().getStore(); // just to show how to get the store if needed
Ref<EntityStore> ref = interactionContext.getEntity();
unfortunately it seems the world may require the command buffer to get
yeah i cant get an entity reference from a position alone
i wonder if the commandbuffer is a security measure
what about inside out?
a component could bve added that transmits its transform to a bus
you then read the data from the bus itself without the commandBuffer
i did something similar with a Director AI when I made it responsible for dynamic difficulty spawning in another game
i think the technical term they use is blackboard
TargetUtil has helper methods you can use to find all the entities in an area
😮
😮
It's also where all the raycast methods are hiding
still requires the world passed in unfortunately
I have the world but not the entity ref
I need just the entity reference from a single Vector3i
getAllEntitiesInSphere be of any use?
getTargetBlock returns the transform but that seems limited to blocks
What are you actually trying to do?
what on earth is a BiIntPredicate
I have a list of vector3i positions which i later need to get the BlockEntity to get the TilledBlock component to change stuff
It's an interface for a lambda or method reference
but im calling this from a TickingSystem that doesn't pass the command buffer or entity reference obviously, so unless i change my list to a hashmap and store its reference instead but there should be a better way
You can get a reference to the ticked entity from the archetype chunk and index
archetypeChunk.getReferenceTo(index)
ok i have a questiopn on that jargon. what is an archtype?
The game groups entities with the same components into archetypes. It's a memory locality optimization
hmm okay can i get the archetypeChunk by using a Vector3i ?
i mean i know the secular meaning but not the programming one
i yeah i remember reading on that now. it doesn't update certain groups every tick
anyone know how to edit the drop list for a block?
in the asset editor look in hytale for drop_
theres JSON files that you can copy
when you look under behavior for items you refer to a drop_ JSON instead of using an item ID
doesn't require plugins
How do you create sub commands? Like /world add or /world remove instead of /worldadd /worldremove which each is a different command ?
hey thx man, I see the drop lists for entities but not for blocks such as grass, etc
what im trying to find is a way to get a custom interaction that chooses drop lists
theres no different. ores, mobs, grass. they're all entities
To just get a reference to a block entity from a position, you can use BlockModule.getBlockEntity(world, x, y, z)
stop it
Is it possible to use the asset editor on your plugin if it is loaded as jar from the Intellij Plugin inside the folder server?
Big Bro here must live in the codebase 24/7 lol
But if your array is large you may want to look at what that method does internally and optimize a bit.
Thats insane... the amount of time i have wasted here.
it wont be massive, but how big do you define as .... large?
right thats it. Im going to start a doc with notes on where to find everything before I forget
ah I think I found them. they were under "common" tab instead of "server"
Idk, like 100+ blocks? This is what the method does internally. It might be a good idea to group them by chunk
public static Ref<ChunkStore> getBlockEntity(@Nonnull World world, int x, int y, int z) {
ChunkStore chunkStore = world.getChunkStore();
Ref<ChunkStore> chunkRef = chunkStore.getChunkReference(ChunkUtil.indexChunkFromBlock(x, z));
if (chunkRef == null) {
return null;
} else {
BlockComponentChunk blockComponentChunk = (BlockComponentChunk)chunkStore.getStore().getComponent(chunkRef, BlockComponentChunk.getComponentType());
if (blockComponentChunk == null) {
return null;
} else {
int blockIndex = ChunkUtil.indexBlockInColumn(x, y, z);
Ref<ChunkStore> blockRef = blockComponentChunk.getEntityReference(blockIndex);
return blockRef != null && blockRef.isValid() ? blockRef : null;
}
}
}```
wait a sec, is BlockModule their main class?
i see what looks like the normal setuo() stuff here
Hytale is made up of a bunch of different plugins
ahh
If you look at the logs you can actually see them start up and shut down just like any other mod
hello, how you call the player on the plugin ? Player ? Uuid ?
thats been my story too for the last 2 days trying to add one simple feature to my mod
if this was UnrealEngine I'd have made this in an afternoon
yeahh and even now i dont think i still have what i need to do this haha
Now i need to know what processes TilledSoilBlock to see if i can disable the decaying? ughh
hmm FarmingPlugin seems to be the originator
There is a lot of code in FarmingPlugin
yeahh and i dont think it handles the decaying and stuff of tilled soil
but it stores alot of .... bloat that i dont think i am looking for
like what is spreading? what in the farming system spreads?
private static boolean updateSoilDecayTime(CommandBuffer<ChunkStore> commandBuffer, TilledSoilBlock soilBlock, BlockType blockType) from FarmingSystems is where i need to look i guess lols
The FarmingSystems.Ticking class handles all of the ticking logic
But it looks like it uses scheduled ticks instead of ticking every block periodically
might be easier to create a custom tilled soil block and over ride the default crops to use that as well
im not a fan of over rides since it introduces mod conflicts and we dont have a way to influence load order at the moment
we could do with a code snippets channel here
Anyone know how to handle the Clientside Prediction of Custom Interactions always assuming it passes? WaitForData.Server doesn't work, because that makes it not do any client side audio or effects. I can't really find anything in the source code that looks like it would handle this. It's important that I get clientside prediction fixed, because it's a custom Condition interaction, so it defaulting to Success makes it bug quite poorly.
they have that for UEFN
Have you tried looking at bows? They must check the player inventory for an arrow before shooting
No yeah, I've got the condition to work and all that, my issue is that the client seems to assume it's succesfull when not waiting for the Server to send the data. The only thing I can think of is that I would need to override the packets sent back and forth from client to server.
Haha, don't worry, buddy, good luck!
Anyone here using PlaceholderAPI for hytale? Cant get it to work properly. Have the dependency and it has created an folder. But the none of the commands work. No errors on startup either.
i cant for the life of me find what external water does
?
the only place i see it is in computeBlockType
sorry im just losing my mind over here, just ignore me lols
xd
when you're pointing a prefab spawner at a directory, can I control the individual weights of the prefab selected?
Thanks, will check it out.
I have not dug too far into custom interactions, but it looks like overriding simulateTick0 will allow you to change prediction
MK. I'll look into that then. Thank you kindly.
Freznel, can we simulate a block update to ensure that the visuals of the soil changing state actually happens?
It seems to only visually update when something changes nearby
How are you making the update?
Anyone has an idea how to use the Asset editor with server started with intellij?
I'm just changing the component values, i'm doing nothing else. Do i need to set it dirty?
or something equivalent in hytale
if you're using one of the template, it'll update once the sync task is run (when you stop the server it should run)
I am using the one generated from the Hytale plugin of Intellij on github timiliris/hytaledDocs-intelliJ-plugin
Should I use the template from Kaupenjoe?
I have also noticed that it updates block visuals on adjacent and diagonal blocks when you place something say a seed or something
Trying to resolve a visual bug, would anybody know where I should go looking to see how FPS view is handled? Specifically looking for the code/interaction that displays armour on the upper arms in first person compared to third person, as my armors never seem to cover my upper arms, even vanilla.
Reinstall, new world and default avatar solved nada. I have tested every armor in the game, none of them cover my upper arm
@clever horizon I'm an idiot, WaitForData.Server was working the whole time, the audio in my game just died until I restarted it. Thanks for the help though.
Anyone know how I can manually cancel events that are from hytale
For example I want to disable the event that happens when someone moves an item from their inventory
i kinda want to know if i can force an update to that block? Because it changes "state" with the id changing from Tilled_Dirt_Soil to *Soil_Dirt_Tilled_State_Definitions_Watered
Try calling BlockSection.invalidateBlock()
ill give it a go thank you
is HyVault and VaultUnlocked the most popular Economy API Bridges right now? What are some others
Hi, which event to prevent liquid propagation?
Does anyone know how to query entities OUTSIDE of a system? For example, I want to query all entites with a certain component
Entities will persist unless something removes them, or unless they have a NonSerialized component
NPCs have logic that despawns them
The CorpseRemoval system handles despawning corpses after their timer runs out
If anyone is having difficulties on using the asset editor on plugins, the anwser is it just don't work on pre-release versions
I am facing the same Issue like you and I wasnt able to figure out any solution so far. How did you resolve it? Thank you :)
you need to create an early-plugin which handles that
to.. prevent rubble pickup? wtf
yop
thank you.. I will just remove it from the map then xD
for now until this gets fixed
Anyway to do gif like images with the hud? Tried .gif file but does not seem to work.
Couldn't you add the PreventPickup component to any rubble items dropped? PlayerItemEntityPickupSystem ignores any items with that flag
how to make the plugin early?
How do I create a void world for my server? Could someone help me? I want a void world for my lobby.
create a flat world
close server
remove chunks
make gen type default_void
re-enter
thank you didnt answered me tho
thanks
I wasn't able to
i can send you void world file if you want
Why can my friend join my dedicated server just fine but i cant???? Was working for days and days and days no problems then today i get authentication failed because the remote party set a TLS alert: 'illegalParamater'
He can join just fine but i get that everytime
Im not hosting local host
Its on a linux VPS and havnt had any issues till today
"my dedicated server"?
hm then idk
Yes i have a VPS on linux i host the server off of so me and my friends can play without needing someone to host it
can you join via the ip?
No IP and my panel link both give same error
I have it setup so i can join either way with A reccord working on cloudflare, thats what my friend joined from but for me IP and link both wont work anymore
im made an inventory object and i made the setGlobalFilters(DENEY_ALL) so now you cant actually move anything but the problem is that when someone tries to shift click an item in the inventory it will trigger the smartMove which will throw an error
java.lang.NullPointerException: Cannot invoke "com.hypixel.hytale.server.core.inventory.transaction.Transaction.succeeded()" because "transaction" is null
Anyone know if theres another way to restrict moving items in a custom inventory?
its not a cancelable event
i don't know nothing about coding, i try with Claude AI spend a day of waiting for nothing
https //github com/Matake74/Testplugin-IA.git if you want to check and take it
why? ^^
oh sorry, i mean why would we want to check out the gibberish your ai generated 
idk how it work or if someone need it so i'll give it for free, maybe it will reduce my carbon footprint
hahaha, yes let's learn how it work
And even then, actually vetting out AI-generated code can take just as long or even longer than writing it yourself
Personally I only use AI for analysis, and even then I still have to double check what it spits out half the time
let's start Hytale Plugin Tutorial #1: from kaupenjoe
AI is a train that was fueled up in 2023 and the fuel source was removed. It is just running off inertia now and will grind to halt.
Not before corporations use it as an excuse to try and force us all onto cloud computing platforms
Yeah. Run your own servers.
how do i get a BlockSection?
Something with my network is causing this, using a VPN fixed it... Only saying this for if anyone else has this problem... Im sure a router reset would fix my problem
I mean i can get the section but i guess its deprecated marked for removal which now that i think about it, is gonna be very common
considering its in early access
That method is used in several other classes. If it's deprecated there isn't a replacement that i've seen
Besides invalidating the whole section I guess
sooo i have tried invalidating it, and it doesn't seem to have updated the visuals. So back to the drawing board i suppose.
World.performBlockUpdate( int x, int y, int z) ?
could someone help me out with why my server started not working after updating to the newer version? I have the log
That might work? But it looks like it just ticks the block. That might cause crops to grow faster
hmm true you're right...
I wonder where this state is stored and how it triggers it
I'm worried that it might be in the realm of packet stuffs
Did you try invalidating the whole section?
It does work, but im also not fussed if it makes crops grow faster to be honest because it shouldn't notify neighbours and also its for updating soil from dry to wet which means it has just been hoed or placed as dry tilled soil
i haven't
i could try that to be fair, let me give that a go
hmm i dont think it works unfortunatelyt
Weird. I found where updates are replicated, and it does look like that's how block changes are sent!
maybe i am just targeting the wrong chunk
Can you post your code?
Before i do that, how do i get the chunk x and z from a block position?
because i dont think i am doing it right. is it simply x / 32 ?
ChunkUtil.indexColumn()
and then take the blockpos.x and blockpos.y ?
x and z, y is vertical
sorry i meant z
yeah im trying to use an alt, how do you launch the client with diff args?
indexColumn() expects your absolute block x and z, not x/32 or z/32
I want to increase the scale of a Hytale projectile model (duplicated), but when I change the scale, it doesn’t actually get bigger. Does anyone know why this happens?
ok, i'll see if i can get it going one moment
does .invalidateBlock(int x, int y, int z) also expect absolute position?
assumedly right
It looks like you can pass absolute position. The extra bits get masked off
I'm creating a mod for TANK!
How can I launch a projectile from an NPC instead of myself?
Currently, the projectile flies from the player and their line of sight.
world.getChunkAsync(ChunkUtil.indexColumn(i.x, i.z)).thenAcceptAsync( (chunk) -> {
chunk.getBlockChunk().getSectionAtBlockY(i.y).invalidate();
chunk.setTicking(i.x, i.y, i.z, false);
});
im setting ticking to false for each block pos to prevent decaying
i is the target block's position
Invalidating the section and invalidating the block position itself doesn't work here
i think im out of my depth
Hi, did u find a solution for use CharacterPreviewComponent ?
I wish I'd have waited to decompileServer overnight lol it's holding my aging PC to ransom for 2.5hrs now 😅
Oh! Maybe you could modify the asset data instead of trying to change the ticking behavior?
If you update the target block and set it to the same block as the original, then nothing should happen
world.execute( () -> {
int index = BlockType.getAssetMap().getIndex("Soil_Dirt_Tilled");
Ref<ChunkStore> ref = BlockModule.getBlockEntity(world, i.x, i.y, i.z);
TilledSoilBlock tilledSoilBlock = (TilledSoilBlock) BlockModule.get().getComponent(TilledSoilBlock.getComponentType(), world, i.x, i.y, i.z);
if(tilledSoilBlock != null) {
tilledSoilBlock.setExternalWater(true);
tilledSoilBlock.setWateredUntil(Instant.ofEpochSecond(0));
// world.performBlockUpdate(i.x, i.y, i.z, true);
world.getChunkAsync(ChunkUtil.indexColumn(i.x, i.z)).thenAcceptAsync( (chunk) -> {
chunk.getBlockChunk().getSectionAtBlockY(i.y).invalidate();
chunk.setTicking(i.x, i.y, i.z, false);
});
blocks.remove(i);
}
});```
There is deffinitely going to be clear better options and some things here probably don't make sense. But i am essentially trying to make the soil wet, stop it from decaying so it doesn't become dry again and then updating the visuals so it shows the change to wet instantly
Is there something like Minecraft customModle Data in Hytale?
what am i doing wrong , because worst thing is that even when using world.performBlockUpdate() it updates incorrectly / inconsistently
I think we can just edit the soil config directly
In code rather than from the asset editor. The field is protected, but I should still be able to set it with reflection
What's the easiest way to make a spawned NPC invulnerable / god mode
but im making a sprinkler so only soil in the radius should be wet
it snot a global change? surely editing the asset itself makes it true for all no?
Oh I gotcha, nvm then
i get you it would be easier
No I thought you were just trying to disable decay lol
ohh no haha. I have the rest working i just want to fix the bug that is that farmland doesn't update the visual for wet status until a block update is triggered
it also seems like it only really updates when neighbours are updated
really funky
even with performing block updates, it only updated with the next one was updated
Part of your problem might be that you're telling it to stay watered until 1/1/1970
bahaah yeah probably
You may want to try Instant.now().plusSeconds() instead
hmm okay
And actually give it a few instead of just 0, otherwise it might just instantly become unwatered again
Oh. Idk why I just thought of this, but look at UseWateringCanInteraction
1970 was a dry year
...
Store<ChunkStore> chunkStore = world.getChunkStore().getStore();
WorldTimeResource worldTimeResource = commandBuffer.getResource(WorldTimeResource.getResourceType());
TilledSoilBlock soil = chunkStore.getComponent(blockRef, TilledSoilBlock.getComponentType());
if (soil != null) {
Instant wateredUntil = worldTimeResource.getGameTime().plus(this.duration, ChronoUnit.SECONDS);
soil.setWateredUntil(wateredUntil);
worldChunk.setTicking(x, targetBlock.getY(), z, true);
worldChunk.getBlockChunk().getSectionAtBlockY(targetBlock.y).scheduleTick(ChunkUtil.indexBlock(x, targetBlock.y, z), wateredUntil);
worldChunk.setTicking(x, targetBlock.getY() + 1, z, true);
} else
...```
I'm adding .jars into my mods folder. They dont seem to be loading on restart. Is there an additional step I'm missing like manually creating the folders/files etc?
Mods need to be added to individual worlds. They don't load until you start a modded world
so create a new world and add the mod file name under plugins? Sorry whats the exact steps for this
i dont have access to commandBuffer due to this coming out of a TickingSystem
You can get resources from an EntityStore
commandBuffer is just a wrapper around other objects. Its purpose is to defer modifications until after the game is done looping through components
worldChunk.setTicking(x, targetBlock.getY(), z, true);
worldChunk.getBlockChunk().getSectionAtBlockY(targetBlock.y).scheduleTick(ChunkUtil.indexBlock(x, targetBlock.y, z), wateredUntil);
worldChunk.setTicking(x, targetBlock.getY() + 1, z, true);
What does this part achieve?
are the creative tools causing crashes sometimes? because whenever my friend uses the creative tools, the server crashes after. im not really sure of the cause
Is there something like Minecraft customModle Data in Hytale?
i haven't stopped the crop on top from ticking, i only want to stop the tilled soil from ticking. So im a little confused. Sorry for taking all your time with my dumb self lols
It ticks the block and the block above it, and schedules a tick for when the water timer expires
You can literally assign any custom data you want to items
ohh i seee
If you're making a sprinkler, then you may want to just water the block instead of trying to disable it.
hmm yeah i see
You can probably also skip the scheduled tick. Instead you could tick all of the blocks when the sprinkler is broken or when it turns off
doesn't this mean though that i would need to reapply the stayWateredUntil when it ends up becoming dry again?
Depends on how your sprinkler works. If it ticks every 5 seconds and you water the crops for 10 seconds, then the timer will never run out
The idea for optimization so that it doesn't keep running and can essentially "sleep", on entity add it adds blocks that are "wettable" to a list. Every 4-8 seconds it makes it wet and removes it from the list
Ticks don't happen unless you tell them to happen. You can tick your block as infrequently as you want
but doesn't all the farming blocks get called to tick to process when to dry itself?
How do I override the background png used in Common.ui?
@Panel = Group {
Background: (TexturePath: "Common/ContainerFullPatch.png", Border: 20);
};
everything I try ends up with red background
All the tick does is run code in FarmingSystems.Ticking.
That code decides if the block should become dry based on the watered timestamp
Yeah and im going to want it to make it dry so that i dont have to constantly keep wetting it unnecessarily
when instead i could stop it from drying and make the process "sleep" until a new wettable block is in the radius
ughh my head hurts haha
Won't work. If the block is unloaded and then reloaded, OnSoilAdded will schedule a tick
how do I enable mods on a world?
Good evening, how do I change the spawn point on a server? Is there a command or do I need a mod?
i see... so im going to have to keep re-wetting the damn blocks
Hellooooo is there a way to do something like this?
World world = playerRef.getUniverse().getWorld(playerRef);
my head hurts haha
Yep! But you can wet them for as long as you want.
You could even wet them until Instant.MAX, and only change the timer when your sprinkler turns off
what is the value of Instant.MAX ?
A long time from now lol
If you're only running every minute or even every few seconds, you shouldn't need to worry about performance too much.
If Instant rolls over we will have other problems lol. Like the sun expanding.
December 31, 100,000,000 at 23:59:59.999999999 UTC
Yea
so we would expect:
world.execute( () -> {
int index = BlockType.getAssetMap().getIndex("Soil_Dirt_Tilled");
Ref<ChunkStore> ref = BlockModule.getBlockEntity(world, i.x, i.y, i.z);
TilledSoilBlock tilledSoilBlock = (TilledSoilBlock) BlockModule.get().getComponent(TilledSoilBlock.getComponentType(), world, i.x, i.y, i.z);
if(tilledSoilBlock != null) {
tilledSoilBlock.setExternalWater(true);
world.getChunkAsync(ChunkUtil.indexColumn(i.x, i.z)).thenAcceptAsync( (chunk) -> {
chunk.setTicking(i.x, i.y, i.z, true);
tilledSoilBlock.setWateredUntil( Instant.MAX);
});
blocks.remove(i);
}
});
To make it wet forever, and thus, updating the visuals right?
minus any extra random stuff i have been fiddling with to figure out what works and what doesn't lols
it just doesn't update the visual representation of it and i dont get it...
it obviously changes state too considering when it is wet and shows as such, it shows as *Soil_Dirt_Tilled_State_Definitions_Watered when you get the BlockType at the position
may?
right so. when did i start on thi
mmm I think I gave you the wrong method. Use indexChunkFromBlock instead of indexColumn
Can someone help me with this "failed to load custom UIdocuments" error? I can't figure it out at all, I'm desperate.
after over 8 hours of trying to get custom interactions working from copying the existing codebase and looking at various guides the actual solution was a combination of them all
and as it turns out, the key is to write the JSON files like this
"Interactions":
{
"Secondary": { "Interactions": [ { "Type": "PolymorphFruitInteraction" } ] }
}
so it seems that "Types" will actually execute custom interactions while "Parent" will crash the server
help!
i wish i had some help
YAY!! this works
thank you so much for spending so much of yout time helping me! holy!
on to the next issue i guess which is ensuring it is in the On state when placed instead of a weird limbo of "default" x_x
Could someone help me? I'd like to create a portal in my lobby world to access the survival world.
Are there any player report plugins?
That already exists in the base game.
Which portal would it be? How do I configure it? Can you tell me?
Um... I'm not sure what it was called, but if you go to the creative world hub, it's the middle portal. You just place it down.
If you could teach me, I would be very grateful.
I mean, there's not really anything to teach you, you just have to use the existing block in the game.
Try opening a second launcher, and pick a different account from there. I don't have a second set of credentials to test it with so I don't know for sure, but it looks possible since none of the buttons are grayed out in the 2nd launcher, and you can launch a second client instance with the same account without any problems.
I made a separate launcher in rust myself, that's what I'm personally using to launch the game, which just allows launching with whatever credentials you want
I don't know which block it is, and I don't want it for common use; I want a connection between my lobby and the world for survival.
it tells me "Another instance of hytale game is already running"
Interesting, it doesn't stop me from doing anything even when I launch the same account twice - the old one just becomes unable to join any servers. Perhaps it's a linux thing?
potentially, i'm using windows
Oh, in that case, then there is a simple thing you can do; you just have to clone the forgotten temple portals and change their target world to the Default one.
I want to select the exact coordinates of where the player will spawn, etc., this is for a dedicated server.
Yeah, that's doable, the interaction the Forgotten Temple uses lets you set an offset. If you clone the Default Instance and set a global spawn point then you can make the player always spawn at the global spawn point when they go through that portal.
How do i change StateData? I cant seem to figure out how to make an asset start in the On state when placed meaning the animations and such doesn't start
its weird idk how it works. Is it because of a default state?
You can use a RefSystem to run code when an entity is added or removed.
yeahh but i am just unsure how to change its state to On or Off like where do i access that
Where are you storing that?
BlockState is deprecated if that's what you're using. You should create a component for any custom data
Anyone know how to validate if an itemContainer is hotbar or inventory?
no
i mean you know when you add a state in the Asset editor, for example i used the lantern as a base kinda. There is an On state, and Off state. You add light or not, animations etc... Through the interaction tab you add a ChangeState interaction which needs default, on, and off . This is what i am using. Now when it is placed, its in a weird limbo state which i assume is the default state? I want it to be On when placed but i couldn't find a way to define that in the editor
i assumed i would need to do that in code
damn chadlymasterson. I thought you were responding to me.... I was waiting here for hours till you finished typing all for disappointment
sorry bud
xD
what path would you guys recommend to someone who can code but has never touched anything related to game making? the long (medium?) term goal is instancing actual boss fights, with attack patterns, special attacks, multiple phases and all that comes with it.
WDYM by path?
a learning strategy I guess? not sure what to call it
Umm... Maybe just go and make stuff, that'll help you learn decently well.
i've fiddled with blockbench and imported a model into the game already. ofc editing jsons is no issue either. I'm talking about getting into plugins
Ok so i found a little interesting moment. If i set the default to essentially the Off state, it doesn't bug but if i set the default to On, it does bug.... interesting
Oh yeah, I meant just try making stuff that requires using that side of things.
There's honestly not many ways you can go about this, just start making stuff and see where it takes you
and you get started with that where? I'll just use existing assets while practicing
I personally started by making an enchantment system. (As in, started delving more into plugins by doing that.)
most tutorials i've found online assume I have some baggage with how games work you see
how i can create a new world that is void /world add "NewWorld" --gen void seems not to work
Hey it seems that You've made it for Java 25 instead of java 21 which is what hytales on ?
Ah I see. I believe placed blocks will inherit the BlockState you set in the asset editor. Containers for example use it to define capacity.
Hytale is on java 25
yeah i want it to inherit the On state, playing the animation etc... but it seems to be all based around the default interaction which is so frustrating that it feels really backwards and i dont think i will be able to get it to how i want it
fuh rip
It would be nice to get some official info about stuff that's marked deprecated and what we should use instead.
That's true, I have no clue what we're meant to do with half of it.
I expect that to come with the source code release in a couple months
correct, does java have like info they can put before the deprecation that they can use to tell us when we try to use it?
That kind of documentation would usually be in comments, which we won't have until the source code is released.
prefabs got me going two steps forwards, eight steps back.
so if I have a bunch of prefabs spawning in a grid from a prop (weighted), and one of those prefabs has a prefab spawner in it, all of the prefabs get the result of that spawner.
i see i see
Did you have it inherit seed?
tried with and without.
Is there any way to display HUD over the crafting UI? Like z-index?
Props ->
Runtime ->
Constant Assignment ->
Prefab Prop ->
WeightedPrefabProps ->
RoomProp1
RoomProp2
RoomProp3
RoomProp4 <- I have a prefabspawner block
RoomProp5
RoomProp6
here's an aprox of my biomes
and my spawner is normal afaict.
"prefabspawner": {
"PrefabPath": "Trees/Fir_red/Stage_1",
"FitHeightmap": false,
"InheritSeed": true, <- changed this true/false, doesn't make a difference in this case.
"InheritHeightCondition": true
}
all of room prefabs get the fir_red prefab spawned at the location it spawns in RoomProp4
Weird weird. Mine work perfectly when I have InheritSeed set to false on all of my prefab spanwers.
yea, it doesn't feel like expected behavior and I feel like my problem lies within the biomes file. but I mostly just trial and errored that to this point 😒
so I'm 75% confident I messed it up
Hmm. Weird. Weird weird weird. I don't know what you could have possible done to make that occur.
does ANYONE have any idea how CustomConnectedBlockTemplates work?? 😭
jesus christ is it poorly documented
anyone know why I get suck on loading an asset when loading into server sometimes?
i have to restart my game to fix it
the problem was them all sharing the same prefab prop.
I changed it up so runtime -> weighted assignment -> weight -> constant assignment -> ... -> single prefab. no bleed.
Huh, weird. Glad to see you fixed it.
Does anyone have a link or a guide for setting up a server?
Quick question. My goal is to modify food restoration rate or food effects or create my own.
The problem, I'm still trying to familiarize myself with how these items have effects and I found out that the effect was applied by Consume_Charge_Food_T1 but I don't see where it sets amount (5%), is this some sort of internal Enum or could it be handled via data assets?
A guide document would be nice as well if there are some out there, thanks!
Assets\Server\Item\Interactions\Consumables\Consume_Charge_Food
you can define the interactions in json
Starting to regret not using
hytale.decompile_partial=true
as I've been running decompileServer for 8 hours now... is this normal?
ahh I think I misunderstood. you want to know where the effects are defined. Assets\Server\Entity\Effects\Food ..
thanks! This seems to trigger Consume_Charged_Food_T1_Inner but I don't see any of them referencing values for 5% or atleast 0.05
Consume_Carge_Food_T1
```json
{
"Type": "Serial",
"Interactions": [
{
"Type": "Replace",
"Var": "ConsumeSFX",
"DefaultValue": {
"Interactions": [
"Consume_SFX"
]
}
},
{
"Type": "Replace",
"DefaultOk": true,
"DefaultValue": {
"Interactions": [
{
"Type": "Hungry_Start_Feeding"
}
]
},
"Var": "Hungry_Start_Feeding"
},
{
"Type": "Replace",
"Var": "Consume_Charge",
"DefaultOk": true,
"DefaultValue": {
"Interactions": [
"Consume_Charge_Food_T1_Inner"
]
}
}
]
}
Consume_Carge_Food_T1_Inner
```json
{
"Type": "Charging",
"FailOnDamage": true,
"Effects": {
"ItemAnimationId": "Consume",
"ClearAnimationOnFinish": true,
"ClearSoundEventOnFinish": true
},
"HorizontalSpeedMultiplier": 0.4,
"Next": {
"0.0": {
"Type": "Hungry_Failed_Feeding"
},
"2.0": {
"Type": "ModifyInventory",
"AdjustHeldItemQuantity": -1,
"Next": {
"Type": "Serial",
"Interactions": [
{
"Type": "Replace",
"Var": "ConsumedSFX",
"DefaultOk": true,
"DefaultValue": {
"Interactions": [
"Consumed_SFX"
]
}
},
{
"Type": "Replace",
"DefaultValue": {
"Interactions": [
"Effect"
]
},
"Var": "Effect"
},
{
"Type": "Replace",
"DefaultOk": true,
"DefaultValue": {
"Interactions": [
{
"Type": "Hungry_Feed"
}
]
},
"Var": "Hungry_Feed"
},
{
"Type": "Simple",
"RunTime": 0.2,
"$Comment": "Delay before next consume cycle can start to prevent sound overlap"
}
]
}
}
},
"Failed": {
"Type": "Hungry_Failed_Feeding"
}
}
```
I'll check this one out, thanks!
look in the tier checks to see which effects get applied
exactly what I was looking for, thanks!
Food_Instant_Heal_T1
json { "StatModifiers": { "Health": 5 }, "ValueType": "Percent", "OverlapBehavior": "Overwrite", "Duration": 0.1, "DamageCalculatorCooldown": 0 }
hellloooo how can i manageg to make this:
world.breakBlock(bx, by, bz, 0);
actually break the block cus it doesnt drop anything
pls help T_T
use BlockHarvestUtils
oh i have no idea how to use that im sry
Anybody here know a good way to suppress server Warnings in the logfiles?
When player joins a world I'm trying to update its position but its not working.
public static void onJoinWorld(AddPlayerToWorldEvent event) { // set the players world and position on connect if (event.getWorld().getName().equals("hub")) { Hub.world.execute(() -> { PlayerRef p = event.getHolder().getComponent(PlayerRef.getComponentType()); assert p != null; p.updatePosition(Hub.world, new Transform(new Vector3d(0, 102, 0)), new Vector3f(0, 0, 0)); }); } }
[2026/02/08 04:51:35 WARN] [Entity] getPositionComponent called async [CONTEXT ratelimit_period="5 MINUTES" ] java.lang.Throwable at com.hypixel.hytale.server.core.entity.Entity.getTransformComponent(Entity.java:278) at com.hypixel.hytale.server.core.universe.world.WorldMapTracker.tick(WorldMapTracker.java:138) at com.hypixel.hytale.server.core.universe.world.worldmap.WorldMapManager.tick(WorldMapManager.java:148) at com.hypixel.hytale.server.core.util.thread.TickingThread.run(TickingThread.java:89) at java.base/java.lang.Thread.run(Thread.java:1474)
@craggy pollen At server level. Unfortunately we don't have a channel for server support queries. I know most of you extract the server jar to see what's going on. Wondered if anybody knew here 🙂
anyone know how to update player world/position/headrotation after he logs in? I've tried doing Teleport component but it doesn't work right after player logs in
ugh.. when are these guys going to start making some documentation? researching/debugging for 8 hours just to do something simple like teleporting a player is ridiculous
How can I make an NPC entity not save in the chunk, so it doesn't get spawned when the chunk unloads and reloads, or how do I listen to the chunk unload event?
@warm sedge Would you be able to help me with this? A few days ago you suggested IChunkSaver, but I have no idea how I would do that
nas issues
guys, does anyone know how to properly spawn projectile from system?
im trying to use player as owner, but after projectile spawning player's hotbar doesnt work as intended
hi, have you figured out?
no
Is there a way, in java, to prevent item gathering using F?
Seems like there is no way to prevent this in code
I can block interactions with blocks etc. but not gathering
java.util.concurrent.CompletionException: java.lang.IllegalStateException: Assert not in thread! Thread[#97,WorldThread - default,5,InnocuousForkJoinWorkerThreadGroup] but was in Thread[#92,ServerWorkerGroup - 5,5,InnocuousForkJoinWorkerThreadGroup]```
Does anyone understand the ECS fully?
From that error message you sent do I guess that you do some stuff around the PlayerChatEvent that is keyed to a world. You can use world.execute to execute stuff on a specific world thread
There is a video called hytale's entity component system that explains how it works really well
I liked the ones by trouble dev
Its his vid
I'm trying to have a command where its like /say with a long string message after it.
I.e. player runs the command /shout like this
/shout What the hell bro
But I cant figure out how I'd do this with hytales arg system, tried a required arg as string but no luck
if the player runs /shout "what the hell bro" theres no issues however it still includes the " and I dont want them to have to do that!
hey, i managed to delete a mod or something, and now i get failed to apply customUI HUD commands, can i check wich one i need?
I'm handling packet on PacketWatcher and register to PacketAdapters on setup
I'm confusing what type should I register, Inbound or Outbound ?
how to check if entity has status effect applied
I know I can use the command context to get it.
Since Hytale does not (atleast at the momment) expose anyform of GREEDY_STRING constant or something similar, we have to go over the arguments system completely and just go straight to handling the command context like so.
String raw = commandContext.getInputString();
String content = raw.substring(raw.indexOf(" ") + 1);
the "raw.substring" part is just making sure we skip whatever the first part before a space is (in this situation "/shout ")
This ofcourse has issues if your command has other arguments but make do as you can lol.
The current issue with this is that the Hytale Command system still blocks it based on an invalid number of arguments!
Is there any Hytale modding documentation? I can’t seem to find anything reliable.
That was a good video. Made the game architecture make more sense to me.
No official docs for now. Most of the docs out there are AI-written, and they all have factual errors here and there. You're better off learning the core concepts from modding guides and then reading the code for the rest.
hytalemodding,dev is the place to go. (can't link it directly, replace comma with dot)
Hytale themselves have provided docs to that website, and it's not AI-generated unlike most of the rest of the slop
hi! anyone here know how to block commands? chat event dont block commands.
a command wrapper or smth
I think every single command has a permission so you'd just have to remove permissions
does anyone know how to bold the text in the server.lang file?
wdym
like temporary remove their permissions?
yep if you want to block it once
and how do i do that, temporarily set them to a group? how about if they got a rank etc, is t here a way to disable permissions of a player without having to t ouch group
I'd just use LuckPerms for hytale, and integrate with the API. You can find it on their site which I cant link bcuz of that but if you g o to their wiki they have a full section for hytale
I have Luckperms, ill check api
Does anyone know what the permission for the /transfer command is?
how to cancel a certain palyer drop event? the ecs one just isnt possible
HytalePermissions.fromCommand("refer.other")
and
HytalePermissions.fromCommand("refer.self")
you guys think it's possible to make fma style alchemy
Regarding custom instances - are you really limited to four concurrent ones using the spawnInstance method?
Like when you do /instances and spawn one? I’ve had over 50 instances loaded if that’s the case
i dont see any reason it shouldnt
Active - like having players on more than 4 instances at the same time.
can confirm I also have that! I need to delay it a second, then it wont crash.
getHolder now event.getPlayerRef().getHolder(); :D
Anyone come up with a solution on dynamically changing the description of an item? or something equivalent to that?
Is it possible to do custom sound play? Like admin can add meme sound to the server, then player can just play the meme via command or sound list?
i am trying to switch me single player world onto a local server, but i get hit with the "As this is a standablone server, OP yourself (/uuid) in the "permissions.jason" file while the server is off, or temporarily use the "--allow-op" program launch argument". I figured i gotta add my uuid to the "OP" section, but everytime time i do so the file resets to default upon server launch? anyone know what im doing wrong? (yes i do safe the file...)
you can also do /op add <username> from the console
ah perfect
How can i display the metadata of an item when i hover over it
anyone know?
is there a hover event?
public static void onPlayerReady(PlayerReadyEvent e) {
@SuppressWarnings("deprecation")
UUID uuid = e.getPlayer().getPlayerRef().getUuid();
}
I'm supressing it at the moment but like, what's the updated way to do this? The IntelliJ error is pissing me off
when working on a plugin/mod if you upload the new Jar to the server while the server is live does it need to be restarted?
Hey, does any of you know where damage types are defined ? Cant find the file and would like to add a custom damage type like bleed damage f.E
Of course
do i need to do a plugin reload are there like any limitations to what would get updated if no assets are being added or changed?
You can reload the plugin if you make a command for that, but assests are not reload if you have o e in it
Anyone know if the devs are planning on making item translations dynamic at any point in the near future?
How can i display the metadata of an item when i hover over it
anyone know?
is there a hover event?
Hello im trying to destroy blocks and give it to the player inv their drop is there a possible way to do it? i did this but didnt work:
ItemStack withQuantity = new ItemStack(type, 64);
Inventory inventory = player.getInventory();
ItemContainer storageContainer = inventory.getStorage();
storageContainer.addItemStack(withQuantity);```
What do you mean for dynamic?
Meaning I want to take a specific ItemStack and change the description to something else without changing it for the actual item type
In other words have a different description for items under the same category
Meta data...
but how can i get the hovered item
Is anyone else experiencing this error when starting a Java server? Failed to load world: default
nope
Create your own Item
I didn't see an event for that
I want to change an items description like an anvil in minecraft changes an item name just with the description 😄
so theres no way to display the items stats on hover for example
Hmm, Just overriding the description on assests, I saw
A way probably, but event handlers for hover an item, I dont think
The issue with that is that it overrides the asset itself meaning it changes the description for that asset for everyone. I want to mimic what minecraft has with anvils where I can take a specific sword and change its name.