#server-plugins-read-only

1 messages · Page 116 of 1

uneven hornet
#

How do we even update the mods we created to work with this update? lol

west elk
#

did your mods break?

uneven hornet
#

yeah

reef vapor
#

Replace HytaleServer.jar

runic shard
#

Any reference on player properties?

west elk
uneven hornet
runic shard
west elk
#

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

runic shard
west elk
runic shard
west elk
#

PlayerRef is responsible for holding on to the network connection of a player

#

and Player is responsible for holding the gameplay info (inventory, etc)

runic shard
west elk
#

yep, that's the uuid you use to identify a player cross-servers

runic shard
eager hollow
#

@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 🙂

nova void
#

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 = "";

}

west elk
pliant brook
#

does anyone know a logging system thats reliable? thank you!

west elk
west elk
#

lol

pliant brook
west elk
#

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.

pliant brook
#

tyy

golden tulip
#

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

wraith karma
#

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?

west elk
charred abyss
#

Are there patch notes?

wraith karma
west elk
charred abyss
#

Do we know what it did?

royal urchin
#

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");
}```
west elk
#

so for this case, you command would be executed like this: /position --player DeeKay

royal urchin
#

Aha! thanks

#

gotta get used to these things coming from Bukkit

west elk
#

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

royal urchin
upper mauve
#

Does someone know how to add specific colors for dropped Items? + droppedItemAnimation

#

those light lines going up

eager plover
#

Anyone have experience with making a server ready for release?

eager plover
#

msg me

weary plover
#

anyone running a server on an n100/n150? wondered if it was possible and how well it would work

rain rune
#

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

sonic shuttle
#

hi guys, any1 know why i get the msg "outdated mod detected" ? i have in manifest.json "ServerVersion": ">=0.0.1"

jaunty idol
#

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...

tribal coyote
#

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 ?

vocal kelp
#

hey does anyone have any info on if the devs are still going to switch the UI to noesisGUI or not?

stoic swan
#

how can i get a int block ID? beacuse i can gert string, but si there an int?

distant crane
#

Anyone experience with WorldGen v2 ?

ornate raven
distant crane
ornate raven
#

use viewport

#

/viewport --radius 2 should be enough

ornate raven
distant crane
#

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

sharp island
ornate raven
#

best is problaby create void world
1-viewport radius -2
and only 4 chunks

distant crane
#

How would i do that?

ornate raven
#

create flat world remove chunks go into config make generated_flat to generated_void

distant crane
#

"WorldGen": {
"Type": "HytaleGenerator",
"WorldStructure": "Default"
},
"WorldMap": {
"Type": "WorldGen"
},
"ChunkStorage": {
"Type": "Hytale"
},

So Default to Flat? and then regenerate it ?

ornate raven
#

no

stoic swan
#

Is there a change block packet or something to send a fake block to a player ?

ocean lake
#

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

timber karma
#

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"

low mortar
#

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

rain rune
#

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 ?

ornate raven
#

how to check if a player has op?

rain rune
rain rune
#

very cool ...

analog phoenix
#

is there a way to stop the player from falling / disable gravity

tropic tinsel
rocky python
#

@opaque skiff are you available? I have concern on your mods

loud grail
#

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)?

turbid valve
#

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?"

upbeat wren
#

i'd just replace the health bar with a name plate or add it above, just a thought though

broken dragon
upbeat wren
#

probably

#

than again, i just touched the code an hour ago lol

#

lets see what happens

dawn torrent
#

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
}```
upbeat wren
#

HAHAHA You can do something similar with REPO LOL

upbeat wren
dawn torrent
#

FNV, F4A, and F03GOTY
Can't say I know what any of these are

upbeat wren
low mortar
#

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

upbeat wren
low mortar
#

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

upbeat wren
livid falcon
#

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?

upbeat wren
fickle saddle
#

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?

livid falcon
subtle fern
#

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...

livid geode
#

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.

worn ravine
#

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

toxic flicker
#

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?

upbeat wren
turbid valve
upbeat wren
#

i just crashed lol

turbid valve
upbeat wren
#

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

turbid valve
dusky sable
#

Does anyone know how to listen to the chunk unload event or make an NPC not save in the chunk?

upbeat wren
#

haha , lol im a streched person now lol

dusky sable
# upbeat wren 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

upbeat wren
#

that'd just break the game no?

dusky sable
upbeat wren
dusky sable
#

Nope, just when the chunk unloads

upbeat wren
dusky sable
#

NPCs with player skins

upbeat wren
#

honestly ive haven't found that yet

#

let me look it up

dusky sable
#

I've been trying to fix this for almost a week, so hopefully you are able to help me out haha

rain rune
#

Anyone know of ways to get a Player instance ?

upbeat wren
#

the noodle monster of mine can wait casue im interested now lol

dusky sable
rain rune
#

How do i get it from the PlayerRef?

#

i want to get the player inventory but i only have the PlayerRef

dusky sable
rain rune
#

😮 period

dusky sable
#

You should likely use a variable for the player reference though, then check if its null or invalid

rain rune
#

thats what i have been looking for!!

blissful nebula
#

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

rain rune
#

thank you#

upbeat wren
#

@dusky sable have you considered npc equip restrictions?

dawn torrent
#

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`
surreal flame
#

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?

upbeat wren
#

@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"

turbid valve
upbeat wren
#

indeed lol

#

FNV all over again honestly

dusky sable
upbeat wren
# dusky sable Like for cosmetics?

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,

zealous ginkgo
#

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?

dusky sable
dawn torrent
upbeat wren
dusky sable
#

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

upbeat wren
# dusky sable It's all hytale cosmetics

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

rain rune
#

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

rain rune
#

I haven't worked with threads yet so this is very new to me

#

is it World.execute() ?

dusky sable
dusky sable
rain rune
#

period okay

dawn torrent
# upbeat wren like item Disct

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

upbeat wren
dusky sable
#

I wonder why I am having issues then

upbeat wren
dawn torrent
#

idk wym

upbeat wren
dusky sable
opaque cape
#
                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
dusky sable
dawn torrent
#

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

dusky sable
opaque cape
#

Ok lets see

upbeat wren
opaque cape
sour cove
#

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.

upbeat wren
#

@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

dusky sable
#

@upbeat wren So I figured out how to make NPCs not spawn when the chunks unload and reload. Thanks for your time 🙂

dawn torrent
# upbeat wren <@152250256585785344> like just when you an ingot it shows its Disct, just apply...

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.

upbeat wren
zealous ginkgo
#

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

rain rune
#

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?

rigid musk
#

hii, do you know how I can set a custom display name to an item ?

blissful wigeon
#

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

subtle sage
#

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?

exotic jackal
#

Hey guys, does anyone know to cancel a command?

wintry basalt
#

its possible see /update cancel

exotic jackal
#

I want to block all commands @wintry basalt

tame lotus
#

Is there official documentation for this yet

blissful wigeon
#

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

halcyon ether
#

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
}

upbeat wren
#

@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

fleet sphinx
merry harbor
#

Is there a way to remove the repair penalty in an item?

hushed totem
#

Anyone know why hiding/showing groups in UI causes container size to sometimes change entirely?

strong musk
fleet sphinx
strong musk
fleet sphinx
#

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?

strong musk
rough flint
#

hey! Anyone keen to work on a casino/arcade game plugin?

fleet sphinx
#

The invert gravity control is a boolean t/f, nothing about physics can be changed.

faint lily
strong musk
fleet sphinx
#

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.

strong musk
fleet sphinx
#

I'm saying nothing about physics can be changed not because of the packet, but how the client interprets it.

strong musk
fleet sphinx
#

If you can show me an example of actual zero g (not just flight), I'll Venmo you $20 for the code.

fleet sphinx
#

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

fleet sphinx
#

Add my friend, and I'll put a little legal contract saying I'll do it if you can do the zero G thing

quartz plover
#

Couldn't you just set mass = 0? That's part of the movement settings

strong musk
#

I should know, the client can be sent a packet that stops it from doing anything but move its head

fleet sphinx
#

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.

strong musk
# fleet sphinx An object that has mass should be able to be zero-g too, that's important for dr...

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)
     )
quartz plover
#

Holy macro

fleet sphinx
#

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

strong musk
fleet sphinx
#

Like I said, provide a working reproducable example of the code to create a zero-g environment and the money is yours

strong musk
fleet sphinx
#

Yes, why can't it be a plugin if that's what you're modifying

strong musk
fleet sphinx
#

Most people here are working with Java plugins... not native binaries. What platform would it even be for?

fleet sphinx
#

I'm on Aarch64

strong musk
fleet sphinx
#

Mac

#

The resulting code should be in a plugin form, because that's the most accessible.

strong musk
fleet sphinx
#

If you send me a binary/patch and I can reproduce it, then I'll follow through

opaque cape
#

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

strong musk
fleet sphinx
#

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?

strong musk
fleet sphinx
#

This channel is about server plugins, not a random proprietary server... who could that possibly benefit other than you?

strong musk
fleet sphinx
#

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.

strong musk
# fleet sphinx It doesn't even support the latest versions as they come out.. what's the point?...

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

fleet sphinx
#

I'll see if ChatGPT can derive some Java code from that C + the HytaleServer source context

quartz plover
#

You only need to send an UpdateMovementSettings packet

#

There's nothing C-specific

strong musk
#

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

fleet sphinx
#

I just asked AI to give me a Java example from the C 'pseudocode'

strong musk
fleet sphinx
#

Used Gemini Pro

#

Using it again instead of ChatGPT

strong musk
#

and, just to clarify, gemini wasnt the one who made the diagnosis that the client ignores the values sent?

fleet sphinx
#

Haha... correct

#

I did my due diligence with manually reading the recreated source code

fleet sphinx
#

Well I'll be damned...

strong musk
fleet sphinx
#

Which ones for that?

   public float wishDirectionGravityX;
   public float wishDirectionGravityY;
   public float wishDirectionWeightX;
   public float wishDirectionWeightY;
strong musk
#

all of them

fleet sphinx
#

Yes, I seem to be locked in place

bitter halo
#

How would you get the block the player touches?

strong musk
#

technically im pretty sure only 2 need it, being the wishweights, but all of them to be safe

fleet sphinx
#

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

strong musk
# fleet sphinx That sucks about the mass having to be zero though...

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

fleet sphinx
#

Alright well, I suppose I owe you $20, though it would be nice to be able to have vertical movement as well

strong musk
fleet sphinx
#

Same as the X/Z, but in the vertical direction, too. So, player presses space/ctrl and has a vertical acceleration with drag

strong musk
fleet sphinx
#

Yeah, haha, I just asked Gemini to think something up for the plugin api

low mortar
#

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.

strong musk
fleet sphinx
#

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

opaque cape
#

are there any tutorials on making it so my Mod has an API other mods can hook into?

fleet sphinx
#

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

west elk
#

Or just make all your methods public, lol

fleet sphinx
#

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

fervent lava
#

I'm tired bro. been making Heroes RPG for the last 2 weeks

fleet sphinx
#

Show us whatcha got

fervent lava
#

cant even show pics D: its Heroes RPG on curseforge

fleet sphinx
#

😔

sharp pumice
#

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")) {
                    
                }
            }
        }
    }
}```
cold oracle
#

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

strong musk
#

its 100% possible with code, I cant say if it is without it though

fickle saddle
#

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.

tiny geode
#

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?

opaque cape
#

@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
quartz plover
#

Netbeans 💀

opaque cape
#

So all my repos arein there

quartz plover
#

I see

quartz plover
opaque cape
#

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

quartz plover
opaque cape
#

Its ok I think Ive decided how I can handle it

#

Since my Economy Mod is probably the only one that supports BigInteger 😛

clever horizon
#

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

naive imp
#

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.

fathom dune
opaque cape
#

I'm happy to report, Its been a complete success today

  1. I added a HyVault Integration to Shubshub Economy, To allow for easy integrating with other Economy Components that do the same
  2. 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
  3. Shubshub Economy - Balance can now be easily used with other Economy Plugins that Integrate with HyVault
fathom dune
#

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.

clever horizon
opaque cape
#

Hey @icy wedge I'm also adding support for VaultUnlocked to Shubshub Economy - Balance, And Shubshub Economy - Auctions

clever horizon
fathom dune
#

Makes sense.

latent turret
#

anyone know a method to having more than 1 instance open?

fathom dune
# clever horizon When registering a component you have to provide a name string. It's used as a ...

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.

west elk
clever horizon
#

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

subtle sage
#

is CraftRecipeEvent bugged? it doesn't fire no matter what

#

i'm so mad 😂

#

did u solve it somehow?

mortal anchor
#

not station crafting. thats what ive heard at least

subtle sage
dense lichen
#

has anyone been able to fix the spawn issues (some spawns just never trigger in base hytake prefabs)

thin harness
#

Hello! is there a way to execute commands via interactions?

stoic swan
#

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

stoic swan
sonic narwhal
#

Guys how do i have a reference to an entity ?

Like in Minecraft it was Entity, LivingEntity etc..

What is the corresponding to hytale ?

opaque cape
#

Want me to keep you updated?

icy wedge
sonic narwhal
#

What is the hytale's version of Minecraft's Material ?

west elk
#

or Fluid

sonic narwhal
#

It works for Item too ?

hoary lynx
#

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.

west elk
sonic narwhal
#

They have something in common ?

#

Like i would like to check for a meterial type, not only block or item

#

Maybe String ?

west elk
#

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

sonic narwhal
#

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 ?

west elk
#

Yes, all asset maps are string-discriminated (but integer-indexed at runtime for performance, i believe)

sonic narwhal
#

Okok thanks

coarse frost
west elk
#

Item.getId()

ornate raven
#

is only way to disable default hytale plugins create systemcommand and inside hytaleserverconfig something etc

west elk
#

there should be /plugin disable <name> --boot or something

ornate raven
#

okay

next axle
#

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

high bane
wicked hollow
#

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.

formal cave
#

how can i join server in hytale

blissful trail
# next axle Has someone found a way to dynamically change tooltips or names of Items yet? Li...

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.

quartz plover
quartz plover
pine holly
#
  1. ...?
  2. profit
quartz plover
#

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

next axle
blissful trail
quartz plover
ornate raven
formal cave
ornate raven
#

there are server lists you can look at them

next axle
hollow plover
blissful trail
next axle
blissful trail
#

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.

hollow plover
#

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

west elk
#

You can make dynamic tooltips by sending custom packets that pretend to be overwriting the item definition

blissful trail
hollow plover
next axle
west elk
surreal flame
#

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?

blissful trail
strong egret
#

Is there any way i can contact the support team? I bought it, and it wouldn't go through. Lost my money already

ocean lake
#

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";
        }
pine holly
#

is there a better way to filter stuff in curseforge besides the sort?

digital bane
#

Anyone know how to make a npc flying mount? Im really confused with the assets configuration

west elk
ocean lake
# west elk Next to that UI document

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

frail mason
#

hi modders is there a method to get a player's IP address like in spigot/paper player.getAddress();

west elk
#

@frail mason

hushed totem
#

Is player last login stored anywhere?

west elk
runic shard
#

Anybody know if hytale has built-in model texture recolor rendering methods?

frail mason
#

ye saw it already, whats the replacement for getUUID? everything is just depecrated now man

quartz plover
#

Check what the deprecated method calls

#

It's usually replaced with the non-deprecated alternative

gritty current
#

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?

solid fox
#

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 ? 😢

west elk
#

install Spark to see if it's one of the mods that causes the lag

distant crane
#

Are there any recommended resources to write custom plugins ?

merry harbor
#

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"
  }
}```
solid fox
west elk
gritty current
merry harbor
#

Is there a way to make bombs destroy blocks?

random briar
#

anyone else having trouble signing in modtale?

solid fox
hushed totem
#

Where is this file located?

@Panel = Group {
  Background: (TexturePath: "Common/ContainerFullPatch.png", Border: 20);
};

I only see ContainerFullPatch@2x.png in Assets

tulip briar
#

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?

gritty current
hushed totem
#

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!");
            }
         }
lethal mauve
#

is there a way to get the players attachments in the code

solid fox
frail mason
#

hi what method to freeze a player? im trying to make a Freeze command

gritty current
tulip briar
gritty current
#

You could use the component: MovementManager

frail mason
#

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

broken dragon
#

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?

west elk
warm agate
#

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)?

broken dragon
#

do you know of a class I can look at for understanding implementation please?

zenith moat
west elk
clever horizon
broken dragon
#

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

west elk
#

yeah the verbosity/amount of boilerplate is one of the main disadvantages of ecs

gritty current
broken dragon
#

and i realise they cannot do that without clearing out the masses of deprecated stuff in here first

west elk
#

Yeah this is early early stuff. The api will only get better over the next few years

broken dragon
#

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

west elk
#

yep and everyone who purchased the game has acknowledged that things will break during early access

broken dragon
#

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?

worn ravine
#

Is it possible to change a specific JSON value from Java within a modified object that a player has?

icy wedge
#

there's already an official port

broken dragon
#

wish they're use enums more than IDs. some of these conditionals are vague

west elk
broken dragon
#

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

icy wedge
#

most programs, especially games, are going away from enums, it's really the old school way of doing things

west elk
#

Especially if you want to be able to take Hytale out of Hytale ^^

broken dragon
#

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);
west elk
#

oh yeah that's from the compiler

#

will be easier once we get the source code

broken dragon
#

decompilers not 100% yet eh?

west elk
#

like that 2 is SetBlockSettings.NO_UPDATE_STATE if i guess the context correctly

broken dragon
west elk
#

yeah a decompiler can't undo all compiler optimizations

broken dragon
icy wedge
#

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

broken dragon
icy wedge
broken dragon
#

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

icy wedge
#

they already said they welcome custom servers, you could create a custom server with an enum-based modding api

opaque idol
west elk
#

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

icy wedge
#

3 days*

broken dragon
oblique barn
#

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

broken dragon
oblique barn
broken dragon
#

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

lost niche
#

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)

gritty current
lost niche
#

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)

lost niche
gritty current
#

builtbybit

devout harness
#

Can anyone explain SpatialResource tor me?

rain rune
#

Do i use this.getEntityStoreRegistry() to register a TickingSystem ?

rain rune
#

hmm okay

lost niche
# gritty current builtbybit

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

rain rune
#

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?

broken dragon
#

im not sure how they are used but they were on fish varients for rarity which influcend drop rates

rain rune
#

interesting hmmm

broken dragon
#

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

rain rune
#

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 ?

broken dragon
#

dunno, still figuring out how the ECS handles blocks at the moment

rain rune
#

yeahh me too :/

#

im dumb so i'm alot slower lols

broken dragon
#

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

rain rune
#

it still uses CommandBuffer<EntityStore> to get the component which i dont have access to

broken dragon
#

once I figure this out and get it working I'll share what I know. I don't like folks who gatekeep

rain rune
broken dragon
#

are youy trying to avoid the command buffer for permission reasons?

rain rune
#

no its just im calling a function from a TickingSystem that doesn't pass a commandbuffer

broken dragon
#

ok well reading this. the commandbuffer is only used for the logger and itemstack removal. it should function without it

rain rune
#

and i need the Tilled Soil component from the block entity which i have only found it being retrieved by a commandbuffer

broken dragon
#

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

rain rune
#

im so unsure what im doing lols

broken dragon
# rain rune and i need the `Tilled Soil` component from the block entity which i have only f...

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);
rain rune
#

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?

broken dragon
#

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

rain rune
clever horizon
broken dragon
rain rune
#

hmmm i think i might have something one second

broken dragon
# clever horizon Blame Java for that not ECS lol

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

rain rune
broken dragon
#

i was thinking more along the lines of it being how to add and remove components

rain rune
#

I will need to get the blockentity reference and then i can use the entity store to get the blockentity and make changes

broken dragon
#

that just store values

rain rune
#

true true

broken dragon
#

unfortunately it seems the world may require the command buffer to get

rain rune
#

yeah i cant get an entity reference from a position alone

broken dragon
#

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

clever horizon
rain rune
#

😮

clever horizon
#

It's also where all the raycast methods are hiding

broken dragon
rain rune
rain rune
broken dragon
#

getTargetBlock returns the transform but that seems limited to blocks

clever horizon
#

What are you actually trying to do?

broken dragon
#

what on earth is a BiIntPredicate

rain rune
clever horizon
broken dragon
#

oh never mind, its just a two int array

#

or whatever they call mini arrays in java

rain rune
#

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

clever horizon
#

You can get a reference to the ticked entity from the archetype chunk and index

#

archetypeChunk.getReferenceTo(index)

broken dragon
clever horizon
#

The game groups entities with the same components into archetypes. It's a memory locality optimization

rain rune
broken dragon
#

i mean i know the secular meaning but not the programming one

broken dragon
vocal kelp
#

anyone know how to edit the drop list for a block?

broken dragon
#

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

distant crane
#

How do you create sub commands? Like /world add or /world remove instead of /worldadd /worldremove which each is a different command ?

vocal kelp
broken dragon
#

what im trying to find is a way to get a custom interaction that chooses drop lists

broken dragon
clever horizon
rain rune
#

stop it

dim herald
#

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?

broken dragon
clever horizon
#

But if your array is large you may want to look at what that method does internally and optimize a bit.

rain rune
rain rune
broken dragon
#

right thats it. Im going to start a doc with notes on where to find everything before I forget

vocal kelp
clever horizon
#

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;
            }
        }
    }```
broken dragon
#

wait a sec, is BlockModule their main class?

#

i see what looks like the normal setuo() stuff here

clever horizon
#

Hytale is made up of a bunch of different plugins

broken dragon
#

ahh

clever horizon
#

If you look at the logs you can actually see them start up and shut down just like any other mod

lucid locust
#

hello, how you call the player on the plugin ? Player ? Uuid ?

broken dragon
#

if this was UnrealEngine I'd have made this in an afternoon

rain rune
#

Now i need to know what processes TilledSoilBlock to see if i can disable the decaying? ughh

#

hmm FarmingPlugin seems to be the originator

clever horizon
#

There is a lot of code in FarmingPlugin

rain rune
#

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

clever horizon
#

The FarmingSystems.Ticking class handles all of the ticking logic

#

But it looks like it uses scheduled ticks instead of ticking every block periodically

broken dragon
#

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

finite crane
#

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.

broken dragon
#

they have that for UEFN

clever horizon
finite crane
gritty current
junior kiln
#

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.

gritty current
#

placeholderapi[.]com/downloads

#

Jenkins

#

download version-hytale.jar

rain rune
#

i cant for the life of me find what external water does

gritty current
#

?

rain rune
#

the only place i see it is in computeBlockType

rain rune
gritty current
#

xd

low mortar
#

when you're pointing a prefab spawner at a directory, can I control the individual weights of the prefab selected?

junior kiln
clever horizon
finite crane
rain rune
#

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

clever horizon
#

How are you making the update?

dim herald
#

Anyone has an idea how to use the Asset editor with server started with intellij?

rain rune
#

or something equivalent in hytale

low mortar
dim herald
#

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?

rain rune
#

I have also noticed that it updates block visuals on adjacent and diagonal blocks when you place something say a seed or something

icy falcon
#

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

finite crane
#

@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.

dusky bobcat
#

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

rain rune
#

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

clever horizon
rain rune
opaque cape
#

is HyVault and VaultUnlocked the most popular Economy API Bridges right now? What are some others

ancient osprey
#

Hi, which event to prevent liquid propagation?

tranquil dagger
#

Does anyone know how to query entities OUTSIDE of a system? For example, I want to query all entites with a certain component

clever horizon
#

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

dim herald
#

If anyone is having difficulties on using the asset editor on plugins, the anwser is it just don't work on pre-release versions

half kiln
#

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 :)

misty gyro
half kiln
misty gyro
#

yop

half kiln
#

for now until this gets fixed

pale crest
#

Anyway to do gif like images with the hud? Tried .gif file but does not seem to work.

clever horizon
ornate raven
#

how to make the plugin early?

stark folio
#

How do I create a void world for my server? Could someone help me? I want a void world for my lobby.

ornate raven
#

close server
remove chunks
make gen type default_void
re-enter

#

thank you didnt answered me tho

#

thanks

ornate raven
#

i can send you void world file if you want

stark folio
#

default_void didn't work, but I put "Void" and it did.

#

yes

keen estuary
#

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

ornate raven
#

use

#

localhost to join

keen estuary
#

Its on a linux VPS and havnt had any issues till today

ornate raven
#

"my dedicated server"?

ornate raven
keen estuary
west elk
#

can you join via the ip?

keen estuary
#

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

sharp lake
#

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

lucid locust
#

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

west elk
#

why? ^^

lucid locust
#

on fiver they ask me thousand of dollars

#

for quest/job/instance

west elk
#

oh sorry, i mean why would we want to check out the gibberish your ai generated Hypixel_ThisIsFine

lucid locust
#

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

clever horizon
#

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

lucid locust
#

let's start Hytale Plugin Tutorial #1: from kaupenjoe

zenith moat
#

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.

clever horizon
#

Not before corporations use it as an excuse to try and force us all onto cloud computing platforms

zenith moat
#

Yeah. Run your own servers.

rain rune
keen estuary
rain rune
#

considering its in early access

clever horizon
#

Besides invalidating the whole section I guess

rain rune
#

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) ?

torn dirge
#

could someone help me out with why my server started not working after updating to the newer version? I have the log

clever horizon
rain rune
#

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

clever horizon
#

Did you try invalidating the whole section?

rain rune
#

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

rain rune
#

i could try that to be fair, let me give that a go

#

hmm i dont think it works unfortunatelyt

clever horizon
#

Weird. I found where updates are replicated, and it does look like that's how block changes are sent!

rain rune
#

maybe i am just targeting the wrong chunk

clever horizon
#

Can you post your code?

rain rune
#

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 ?

clever horizon
#

ChunkUtil.indexColumn()

rain rune
#

and then take the blockpos.x and blockpos.y ?

clever horizon
#

x and z, y is vertical

rain rune
#

sorry i meant z

latent turret
clever horizon
woven heart
#

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?

rain rune
rain rune
#

assumedly right

clever horizon
#

It looks like you can pass absolute position. The extra bits get masked off

signal vale
#

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.

rain rune
# clever horizon Can you post your code?
                        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

sweet bronze
#

Hi, did u find a solution for use CharacterPreviewComponent ?

wraith karma
#

I wish I'd have waited to decompileServer overnight lol it's holding my aging PC to ransom for 2.5hrs now 😅

clever horizon
#

If you update the target block and set it to the same block as the original, then nothing should happen

rain rune
# clever horizon If you update the target block and set it to the same block as the original, the...
                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
tiny vale
#

Is there something like Minecraft customModle Data in Hytale?

rain rune
#

what am i doing wrong , because worst thing is that even when using world.performBlockUpdate() it updates incorrectly / inconsistently

clever horizon
#

In code rather than from the asset editor. The field is protected, but I should still be able to set it with reflection

tall osprey
#

What's the easiest way to make a spawned NPC invulnerable / god mode

rain rune
#

it snot a global change? surely editing the asset itself makes it true for all no?

clever horizon
#

Oh I gotcha, nvm then

rain rune
#

i get you it would be easier

clever horizon
#

No I thought you were just trying to disable decay lol

rain rune
#

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

clever horizon
rain rune
#

bahaah yeah probably

clever horizon
#

You may want to try Instant.now().plusSeconds() instead

rain rune
#

hmm okay

clever horizon
#

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

pine holly
#

1970 was a dry year

clever horizon
#
...
 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
...```
snow cloud
#

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?

clever horizon
snow cloud
#

so create a new world and add the mod file name under plugins? Sorry whats the exact steps for this

rain rune
clever horizon
#

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

rain rune
#
    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?

pliant brook
#

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

tiny vale
#

Is there something like Minecraft customModle Data in Hytale?

rain rune
clever horizon
west elk
clever horizon
#

If you're making a sprinkler, then you may want to just water the block instead of trying to disable it.

clever horizon
#

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

rain rune
clever horizon
rain rune
clever horizon
#

Ticks don't happen unless you tell them to happen. You can tick your block as infrequently as you want

rain rune
hushed totem
#

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

clever horizon
#

That code decides if the block should become dry based on the watered timestamp

rain rune
#

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

clever horizon
#

Won't work. If the block is unloaded and then reloaded, OnSoilAdded will schedule a tick

snow cloud
#

how do I enable mods on a world?

ashen sparrow
#

Good evening, how do I change the spawn point on a server? Is there a command or do I need a mod?

rain rune
merry harbor
#

Hellooooo is there a way to do something like this?
World world = playerRef.getUniverse().getWorld(playerRef);

rain rune
#

my head hurts haha

clever horizon
#

You could even wet them until Instant.MAX, and only change the timer when your sprinkler turns off

rain rune
clever horizon
#

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.

clever raft
#

December 31, 100,000,000 at 23:59:59.999999999 UTC
Yea

rain rune
#

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

frail mason
#

may?

broken dragon
#

right so. when did i start on thi

clever horizon
round cove
#

Can someone help me with this "failed to load custom UIdocuments" error? I can't figure it out at all, I'm desperate.

broken dragon
#

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

pine holly
#

i wish i had some help

rain rune
#

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

stark folio
#

Could someone help me? I'd like to create a portal in my lobby world to access the survival world.

outer rain
#

Are there any player report plugins?

finite crane
stark folio
finite crane
stark folio
finite crane
quartz plover
# latent turret yeah im trying to use an alt, how do you launch the client with diff args?

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

stark folio
latent turret
quartz plover
latent turret
#

potentially, i'm using windows

finite crane
stark folio
finite crane
rain rune
#

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?

clever horizon
rain rune
clever horizon
#

Where are you storing that?

#

BlockState is deprecated if that's what you're using. You should create a component for any custom data

dusky bobcat
#

Anyone know how to validate if an itemContainer is hotbar or inventory?

sharp lake
#

no

rain rune
# clever horizon BlockState is deprecated if that's what you're using. You should create a compo...

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

dusky bobcat
#

damn chadlymasterson. I thought you were responding to me.... I was waiting here for hours till you finished typing all for disappointment

dusky bobcat
#

xD

tiny oyster
#

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.

tiny oyster
finite crane
tiny oyster
rain rune
#

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

finite crane
quartz plover
tiny oyster
#

and you get started with that where? I'll just use existing assets while practicing

finite crane
tiny oyster
#

most tutorials i've found online assume I have some baggage with how games work you see

surreal flame
#

how i can create a new world that is void /world add "NewWorld" --gen void seems not to work

alpine drum
#

Hey it seems that You've made it for Java 25 instead of java 21 which is what hytales on ?

clever horizon
rain rune
alpine drum
clever horizon
#

It would be nice to get some official info about stuff that's marked deprecated and what we should use instead.

finite crane
#

That's true, I have no clue what we're meant to do with half of it.

west elk
#

I expect that to come with the source code release in a couple months

rain rune
clever horizon
low mortar
#

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.

finite crane
low mortar
#

tried with and without.

subtle sage
#

Is there any way to display HUD over the crafting UI? Like z-index?

low mortar
#
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

finite crane
low mortar
#

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

finite crane
#

Hmm. Weird. Weird weird weird. I don't know what you could have possible done to make that occur.

cedar dust
#

does ANYONE have any idea how CustomConnectedBlockTemplates work?? 😭

#

jesus christ is it poorly documented

latent turret
#

anyone know why I get suck on loading an asset when loading into server sometimes?

#

i have to restart my game to fix it

low mortar
finite crane
dense moon
#

Does anyone have a link or a guide for setting up a server?

summer fulcrum
#

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!

low mortar
#

you can define the interactions in json

wraith karma
#

Starting to regret not using
hytale.decompile_partial=true
as I've been running decompileServer for 8 hours now... is this normal?

low mortar
summer fulcrum
# low mortar you can define the interactions in json

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"
  }
}
```⁩
summer fulcrum
low mortar
#

look in the tier checks to see which effects get applied

summer fulcrum
#

exactly what I was looking for, thanks!
⁨⁨Food_Instant_Heal_T1⁩⁩
⁨⁨json { "StatModifiers": { "Health": 5 }, "ValueType": "Percent", "OverlapBehavior": "Overwrite", "Duration": 0.1, "DamageCalculatorCooldown": 0 }⁩⁩

merry harbor
#

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

low mortar
#

use BlockHarvestUtils

merry harbor
quartz mist
#

Anybody here know a good way to suppress server Warnings in the logfiles?

craggy pollen
#

For your own mod?

#

@SuppressWarnings() works

vocal kelp
#

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)

quartz mist
#

@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 🙂

vocal kelp
#

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

low mortar
#

PlayerReadyEvent?

#

I'd try there or AddPlayerToWorldEvent

vocal kelp
#

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

dusky sable
#

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?

dusky sable
plain finch
#

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

signal vale
glad juniper
#

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

alpine drum
#
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?
glossy turret
tulip briar
glossy turret
#

I liked the ones by trouble dev

tulip briar
#

Its his vid

alpine drum
#

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!

charred yacht
#

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?

empty wyvern
#

I'm handling packet on PacketWatcher and register to PacketAdapters on setup
I'm confusing what type should I register, Inbound or Outbound ?

upbeat condor
#

how to check if entity has status effect applied

alpine drum
#

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!

velvet pivot
#

Is there any Hytale modding documentation? I can’t seem to find anything reliable.

crimson mason
quartz plover
high bane
#

Hytale themselves have provided docs to that website, and it's not AI-generated unlike most of the rest of the slop

frail mason
#

hi! anyone here know how to block commands? chat event dont block commands.

#

a command wrapper or smth

alpine drum
bronze granite
#

does anyone know how to bold the text in the server.lang file?

frail mason
#

like temporary remove their permissions?

alpine drum
frail mason
alpine drum
#

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

frail mason
#

I have Luckperms, ill check api

bronze granite
#

Does anyone know what the permission for the /transfer command is?

frail mason
#

how to cancel a certain palyer drop event? the ecs one just isnt possible

west elk
median lintel
#

you guys think it's possible to make fma style alchemy

twin jetty
#

Regarding custom instances - are you really limited to four concurrent ones using the spawnInstance method?

proven gyro
ornate raven
twin jetty
half kiln
#

can confirm I also have that! I need to delay it a second, then it wont crash.

#

getHolder now event.getPlayerRef().getHolder(); :D

dusky bobcat
#

Anyone come up with a solution on dynamically changing the description of an item? or something equivalent to that?

cerulean bay
#

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?

clear berry
#

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...)

west elk
clear berry
#

ah perfect

sharp lake
#

How can i display the metadata of an item when i hover over it

#

anyone know?
is there a hover event?

runic shard
#
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

hexed folio
#

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?

gritty warren
#

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

hexed folio
#

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?

spice oak
dusky bobcat
#

Anyone know if the devs are planning on making item translations dynamic at any point in the near future?

sharp lake
#

How can i display the metadata of an item when i hover over it
anyone know?
is there a hover event?

merry harbor
#

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);```
dusky bobcat
# spice oak 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

sharp lake
#

but how can i get the hovered item

rocky sonnet
#

Is anyone else experiencing this error when starting a Java server? Failed to load world: default

spice oak
dusky bobcat
sharp lake
#

so theres no way to display the items stats on hover for example

spice oak
spice oak
dusky bobcat