#server-plugin

1 messages · Page 2 of 1

spiral fern
#

How do I reset a mod without being in game? Accidentally changed a setting in bettermaps menu and it keeps timing me out before I can change it back

remote chasm
#

I liked maven, tried gradle, and then was very grateful for maven for existing.
There are moments that starting an ide and letting gradle load takes up to 10 minutes

hearty sinew
tawdry geode
#

does this mean a block with decayBlock component was expected but the block ticked didnt have it?

#

"-" represent . in package order so the dc automod doesnt think its a website

devout sable
#

my mod broke with the new update while I was working on it. is their going to be documentation updates soon because I kinda need them.

tawdry geode
# tawdry geode ```java.lang.IllegalStateException: Invalid component at index 43 expected class...

is there any chance blocks.forEachTicking(blockComponentChunk, commandBuffer, chunkSection.getY(), ((blockComponentChunk1, commandBuffer1, localX, localY, localZ, blockID) -> { Ref<ChunkStore> blockRef = blockComponentChunk.getEntityReference(ChunkUtil.indexBlockInColumn(localX,localY,localZ)); if (blockRef == null){ return BlockTickStrategy.IGNORED; } else { DecayBlock decayBlock = (DecayBlock) commandBuffer1.getComponent(blockRef, DecayBlock.getComponentType());

can produce that error?

twilit talon
boreal topaz
#

Someone also experience Black UI issues? And knows what the Problem is

strange otter
#

Hello, if I attach a component in asset json like so:

"BlockType": {
    "BlockEntity": {
      "Components": {
        "MyComponent": {},
      }

How can i setup so i can provide values within brackets, like so:

"BlockType": {
    "BlockEntity": {
      "Components": {
        "MyComponent": {
          "Value1": "Text",
          "Value2": 12
        },
      }
#

I want multiple items to use the same component but have different value initialized

tulip parcel
#

Does anyone know what tints the Player and Weapon when a signature move is used?

mellow jasper
#

I think i'm hitting a limitation with my UI... what is the maximum element count?

blissful sail
#

Hey guys, I am currently searching for the file / class that handles the UI / HUD that displays when you have a compatible block for the builders hammer.
any clue what the name of it is? I want to change the value of blocks that can be displaced, seems to be hardcoded atm

humble yew
blissful sail
ruby arrow
#

How can I check from the list of players on the network which player is standing next to my block if I have a custom block component?

ExampleBlock exampleBlock = (ExampleBlock) commandBuffer1.getComponent(blockRef, ExampleBlock.getComponentType());
                    if (exampleBlock != null) {
                        WorldChunk worldChunk = (WorldChunk) commandBuffer.getComponent(section.getChunkColumnReference(), WorldChunk.getComponentType());
                        World world = worldChunk.getWorld();

                        int globalX = localX + (worldChunk.getX() * 32);
                        int globalZ = localZ + (worldChunk.getZ() * 32);
                        // We need to execute setBlock on the world thread as you cannot call store functions from a system
                        // This is because of the architecture of the server, depending on your needs you can also use the CommandBuffer

                        world.execute(() -> {


                            List<Player> test =  world.getPlayers();

                            final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
                            LOGGER.atInfo().log("Gracze " + test);

                            for (int offsetX = -1; offsetX <= 1; offsetX++) {
                                for (int offsetZ = -1; offsetZ <= 1; offsetZ++) {

                                    if (offsetX == 0 && offsetZ == 0) continue;
                                    world.setBlock(globalX + offsetX, localY, globalZ + offsetZ, "Rock_Ice");
                                }
                            }
                        });

                        return BlockTickStrategy.CONTINUE;

                    } else {
                        return BlockTickStrategy.IGNORED;
                    }```
gilded arrow
#

is there a way to mirror the way your hair is in avatar? (and ig other cosmetics too)

humble yew
#

There's a selection wheel with the build hammer?

blissful sail
sterile forum
#

atleast something along those line, gradle have broken my entire dev environment so can't confirm right now.

tawdry geode
#

wait not frost walker its around a block

ruby arrow
latent vapor
# ruby arrow How can I check from the list of players on the network which player is standing...

Hey! so I wrote code that grabs entities from a certain distance around the block pos, feel free to steal it and twist it for your need

fun collectEntities(entityStore: Store<EntityStore>, blockPos: Vector3d) {
    val spatialRes = entityStore.getResource(EntityModule.get().networkSendableSpatialResourceType)
    val results = SpatialResource.getThreadLocalReferenceList<EntityStore>()

    results.clear()
    spatialRes.spatialStructure.collect(blockPos, 1.0, results)

    for (entityRef in results) {
        if (Belt.isItemRefBeingPush.contains(entityRef) || mobsOrPlayerOnBelt.contains(entityRef)) {
            continue
        }

        val itemComponent = entityStore.getComponent(entityRef, ItemComponent.getComponentType())

        val transform = entityStore.getComponent(entityRef, TransformComponent.getComponentType()) ?: continue
        val pos = transform.position

        val centerBlockPos = Vector2d(
            blockPos.x + 0.5,
            blockPos.z + 0.5
        )

        val distance = centerBlockPos.distanceTo(
            Vector2d(pos.x, pos.z)
        )

        if (distance >= 0.7 || pos.y <= (blockPos.y - 0.25) || pos.y >= blockPos.y + 1.5) {
            continue
        }

        if (itemComponent == null) {
            mobsOrPlayerOnBelt.add(entityRef)
            continue
        }

        val startPos = transform.position.clone()
        startPos.y = blockPos.y + 0.5
        val boundBox = entityStore.getComponent(entityRef, BoundingBox.getComponentType()) ?: continue

        itemsOnBelt.add(ItemOnBelt(
            ref = entityRef,
            progress = 0.0,
            startPos = startPos,
            boundingBox = boundBox
        ))
        Belt.isItemRefBeingPush.add(entityRef)
    }
}

Basically it scans in diameter defined by spatialRes.spatialStructure.collect

also sorry it's in kotlin, you'll need to convert it into java, but shouldn't be too difficult

twilit talon
#

I'm thinking about developing an open-source plugin similar to LWC/GriefPrevention.

latent vapor
#

I don't believe there's any inbuilt way config wise.

but it'd be a very simple server plugin to make. all chat messages are cancellable server side.

so you can code up a simple plugin to when the server receives a message in game chat, it cancles it before it even reaches any other players

#

there is also Mute Chat Server Admin Plugin on curseforg, but im unsure if that's enabled by default or need to do a command first.

#

if you don't trust other tools.

it really is a very simple first mod / plugin you could make yourself.

kind osprey
#

I'm getting a message on my dev server: One or more plugins are targeting a different server version. It is recommended to update these plugins to ensure compatibility. Problem is i have set the server version to *. I was planning on ignoring this but my only issue now is that my asset pack isn't showing up in the asset browser. Anyone know what is going on?

red marsh
kind osprey
#

What is the current version? How do i find out?

red marsh
#

2026.02.18-f3b8fff95 i think

neat pelican
neat pelican
kind osprey
#

im going to try directly targetting the version instead to see if that fixes it

red marsh
#

is that prerelease

kind osprey
#

does * automatically update to prerelease?

#

or at least target the prerelease?

neat pelican
#

I believe * is unsupported now and it always should be explicit

kind osprey
#

Yeahh.... im just lazy i see

#

okay, can i at least give a range or like from version x and newer?

neat pelican
#

well for now it's just a warning, not a strict requirement ^^

#

there will be a better system for this in the future but this is it for now

kind osprey
kind osprey
neat pelican
#

I've repeatedly said this in the past: We aim to have a proper deprecation policy in place to prevent this but right now the logistics of imposing that on the team while keeping updates up is not feasible.
I gave us 3 months of "breaking mods" post release to develop this deprecation policy and we aim to implement it by the end of the 3 months.
Right now the best you can do is to prepare you mods on the final build of pre-release to ensure compatibility when release drops.
I know it is a pain but in order for the game to thrive, we need to make significant progress on the game and technological foundations. It sucks and sadly this is something we'll have to suffer through for a little longer. It's the cost of rapid progress that keeps the player base alive. Sorry 😥
slikey via twitter slikey/status/2023806743700992489

kind osprey
#

No i totally agree with their stance, not throwing shade or shitposting but i just wanted to know what is best practice for right now. all good

#

fixed the warning, however the assetpack isn't showing up in my asset editor... ermm am i supposed to be doing something different or...

#

"IncludesAssetPack": true, is in the manifest soooooo am i doing something wrong or....

red marsh
#

you cant edit plugins resources right?

kind osprey
neat pelican
kind osprey
red marsh
#

uh can i send you image in dm

kind osprey
red marsh
kind osprey
#

it still doesn't show up 🙁

#

wth am i doing wrong v_v

neat pelican
#

any error messages?

kind osprey
kind osprey
#

The assets already present that i was working on before are loaded, just not picked up by the asset editor

neat pelican
#

if it's part of your .jar, you don't need to manually add it to the asset editor

kind osprey
#
{
  "Group": "${plugin_group}",
  "Name": "${plugin_name}",
  "Version": "${plugin_version}",
  "Description": "${plugin_description}",
  "Authors": [
    {
      "Name": "${plugin_author}"
    }
  ],
  "Website": "${plugin_website}",
  "ServerVersion": "${server_version}",
  "Dependencies": {
    "Hytale:AssetEditor":  "*",
    "Hytale:EntityModule": "*",
    "Hytale:BlockModule": "*"
  },
  "OptionalDependencies": {},
  "DisabledByDefault": false,
  "IncludesAssetPack": true,
  "Main": "${plugin_main_entrypoint}"
}
#

is it the * versioning xD or...

red marsh
#

problaby not you just need to make it i need it not specific one

kind osprey
#

not me losing my damn mind

#

if anyone figures it out, @ me plz

twilit talon
kind osprey
#

but the asset pack is still loaded from what was there prior to the pack but i now cannot edit it because it doesn't appear anymore. I have added the asset editor to the dependencies but it still doesn't load. I cant seem to find any errors

twilit talon
kind osprey
#

How do i do that?

twilit talon
# kind osprey How do i do that?

I usually do it directly through the IDE's terminal, but if you're using IntelliJ, you can also do it via the interface. In the upper right corner of IntelliJ, there's Gradle; click on it and it will open your project's Gradle file. Then click on "Tasks" and then "Build," then double-click on "Clean."

#

I usually use "gradlew clean build" in the terminal, it works too.

kind osprey
#

unfortunately didn't help. When i used runServer and join it, after opening the asset editor it still doesn't appear x_x

#

ohh idk if i was clear, im talking about editing it on the server live

blissful elm
#

im having an issue trying to implement the scythe into the game and for some reason it wont gain signature energy on a light attack however it does on a heavy attack any idea what i messed up or am missing i managed to give it a signiture attack currently just using the battleaxe whirwind but it takes forever to gain the energy since its heavy attack only

gilded wind
#

does anyone know of a plugin that makes memories player-specific instead of shared?

tulip parcel
#

@real cave Sorry to bother you, but does your particle tool allow me to view and pinpoint specific particles? There is a specific spawner I am trying to track down so that I can change the particle color. At the momement I am just fumbling around in the dark so to speak.

real cave
#

Hmm, kind of, You could load each particle spawner and look at it. And maybe 60% look pretty close. Or you could load the entire Spawn system then check each spawner. Most the systems load. There are a few that access spawners in a few locations I can't easily get to so those need extra work

but yeah you could try it that way. Its an interesting problem.
What is the particle spawn by/or attached to?

#

I think the best option is to identify which texture it uses then check all the particles that use that texture would also be an option

#

I've thought about a particle/system gallery where you could load lots of them in a 3d space to see what each looks like. I'm not sure if it would be better to make this in a game map you move around in or in an app you see them in. But making a gallery of all the particles would be helpful

tulip parcel
# real cave Hmm, kind of, You could load each particle spawner and look at it. And maybe 60%...

Its at the tail end of the Vortexstrike Signature Move. As the Stab animation finishes, there is a final blue particle that makes its way don the hilt of the sword. I've checked all of my particles and I can't find anything blue. Two of the 3 Swords I have made so far have it. The second sword I've made is lacking this particle all together. I've compared the particles of all three weapons. did that for the past two hours. Having a gallery like you mentioned would be a MASSIVE HELP!!!! For now though, I have no clue what affects that particle. Its quite literally the very last particle on the sword, when Vortexstrike ends.

fallow flint
#

I'm working on a Hytalor-based patch that fixes issues in NoCube's mod series as the original author isn't updating the mod anymore
Currently looking for issues you have encountered - Search "Fix NoCube's Mods" in CurseForge

tulip parcel
real cave
tulip parcel
real cave
#

maybe they are status effects? for the hud?

#

oh then ModelVFX what the hell is that? it's nother folder of stuff

#
{
  "SwitchTo": "PostColor",
  "EffectDirection": "BottomUp",
  "AnimationDuration": 1.0,
  "AnimationRange": {
    "X": 0.19,
    "Y": 0.4
      },
  "HighlightColor": "#94f9ff",
  "HighlightThickness": 5.0,
  "UseBloomOnHighlight": true,
  "NoiseScale": {
     "X": 1.0,
    "Y": 100.0
   },
  "PostColor": "#9ef7ff",
  "UseProgessiveHighlight": false,
  "LoopOption": "Loop",
  "PostColorOpacity": 0.192,
  "CurveType": "QuartOut"
}
fossil adder
#

How to focus TextInput with code? ( Make TextInput active )

vale elbow
#

The correct way to do it


{
  "SwitchTo": "PostColor",
  "EffectDirection": "BottomUp",
  "AnimationDuration": 1.0,
  "AnimationRange": {
    "X": 0.19,
    "Y": 0.4
  },
  "HighlightColor": "#94f9ff",
  "HighlightThickness": 5.0,
  "UseBloomOnHighlight": true,
  "NoiseScale": {
    "X": 1.0,
    "Y": 100.0
  },
  "PostColor": "#9ef7ff",
  "UseProgessiveHighlight": false,
  "LoopOption": "Loop",
  "PostColorOpacity": 0.192,
  "CurveType": "QuartOut"
}```
#

It needs to be set as a code block on discord for better reading

real cave
#

lol

vale elbow
#

<suffix>

sterile forum
#

need to use the java keyword. 😮

vale elbow
#

Im suprised you call yourself a dev but cant embed correctly, lol

cyan hare
sterile forum
#

I wonder how many people calling themselves developers would make it if they just had the compiler, base provided libraries, and no external dependencies to make a projekt.

shy narwhal
#

are there any good plugins for providing in-game information to players yet? Like signs or something alike

tawdry geode
#

There is the hologram feature in vanilla

sterile forum
#

We had a problem at one place i worked, where they recruited a web developer with long experience with a large javascript project to make some webstuff for the company.
The main issue was that they couldn't do anything, since the company did not have typescript setup, did not use angular, and did not have the build pipeline for the webproject.
So they had no idea what to do, it turned out their actual job title should have been typescript angular developer, because they had no idea how to even write basic javascript or set it the environment, unless they where in a pre configed project that was explicitly angular and typescript.

shy narwhal
tawdry geode
#

There is a sektion on hytalemodding

sterile forum
#

The hologram stuff is the same logic as being used for when placing large items or if you turn hologram/placement allway on right?

#

OH. Someone did ask about items only visible to specific players. You can't see other players holograms as is, right?

strange otter
#

Is it possible to spawn particle but somehow specify its starting position and ending position so it flies from point A to point B and dies?

fossil adder
#

does anyone know how to remove the leave message in hytale (i.e. player left from world "world name")

cyan hare
#

I could be wrong but I think I saw someone saying it was hard coded for now

neat pelican
#

But in the next update, there will be an option for it on the RemovedPlayerFromWorldEvent

cyan hare
#

Was trying stuff yesterday for that seeing that code make me feel a bit dumb 😆

tawdry geode
#

has anyone here gotten an error when placing a custom block before, it kicks me of the testserver (server stays running) and throws an error while verifying components
" expected (custom component) but found null"

sterile forum
#

Code builds again.

astral cedar
# tawdry geode has anyone here gotten an error when placing a custom block before, it kicks me ...

Are the parameters of your block and related json files valid? (Like editor might not throw invalid json error, but some systems may or may not support lists/only single value, maybe you have a file which has overrite method trying to overrite a function (compute) and not a value, some systems might not support functionality you are trying to implement from other systems (lets say entity can have particles attatched to it, but they may be triggered by state but not by different animation (like you can't attatch special particle to death animation (from my experience, may be wrong, it's just example) but can attatch to block changing state from inactive to active)), are there no null fields? (Like when you press add lets say new entity to entity spawn list (which defines what entities where, how often and when spawn in different biomes) it will show error smth smth cannot be null, so then you expand you new key (lets say id:0) then press entity id and enter/select your entity). Just some fixes which had helped me

tawdry geode
#

In the hytalemodding wiki under ECS -> block components -> 5. Configure in-game is this json style view how do i get to this? seems to be in asset manager but i cant find it

tawdry geode
astral cedar
#

Best way to learn this at the moment is probably to take existing hytale block, press Override Asset in top right in the orange bar, add your own block name (it will have all properties from the original), then search some other parts (lets say recipie, sounds, animations) and do the same.

tawdry geode
#

what i have done (i think) was create new pack, copy a block (bedrock) into pack under DecayBedrock and added my decay component with all values initliazed

astral cedar
# tawdry geode In the hytalemodding wiki under ECS -> block components -> 5. Configure in-game ...

in the very top right, light grey bar, you have buttons editor and source. editor is the ui, source is plain json.. some systems do not have editor set up yet, and also sometimes editor may not show some/many parameters, while json shows all, but in json you cannot select specific entities (where you press, select folder, another folder, entity you want to use), you can only input entity id directly

fossil adder
#

How do I prevent players from placing markers on the map?

tawdry geode
cyan root
#

NoesisGui date :? (For intended imp ?)

neat pelican
ionic ermine
#

Could anyone tell me where a weapon is defined as two handed or one handed? Testing some node assignment stuff but not having any luck in the asset editor

ionic ermine
#

I think it's the Compatible checkbox under Utility. That's the only actual difference I can observe between single and two handedness

sterile forum
#

Have you looked at the json files and also its parent file of each?

ancient smelt
#

Hey, i have a problem with adding recipes, if i create them for bocks everything works untill i reenter the world, after that some are existing and some are missing, anyone knows why?

fresh lintel
sterile forum
#

Is there a way to genarate a world only from connected templates, no terrain and not pre built?

ancient smelt
severe torrent
#

Hello, I have a legal question regarding Hytale modding. The EULA states that you own the mods yourself, but Hypixel Studios can also use the mods entirely for their own purposes. But what if someone creates a mod that costs money and contains mechanics that they have patented? Can Hypixel Studios still use the mods, or can the owner of the mods sue Hypixel Studios for patent infringement?

neat pelican
# severe torrent Hello, I have a legal question regarding Hytale modding. The EULA states that yo...
  1. Not a lawyer
  2. The license you grant Hypixel Srudios only pertains "To the extent your Mods are used with or shown within the Game or the Service". This essentially means they can only use your mod in connection with services they provide (or will provide), like an in-game mod discovery feature. If you do not publish your mod in the official store, they won't have any reason to touch it.
  3. The license you grant Hypixel Studios as part of the EULA is separate from the one you grant your customers when they buy your mod
  4. It would be copyright, not patent right
severe torrent
#

If I patent mechanics that are in the mod, then it is very much a patent right, and they do not seem to be covered by the EULA.

neat pelican
#

Even if the EULA would allow it

#

Which I also doubt

severe torrent
#

I mean i heard they are patents of photoshop plugins which is also third party api i wonder how the courts allowed that

#

but i mean it kinda weak because even if you try to protect your mod with the patent system the patent only is only valid for limited years and after that you don't have any right on your side

neat pelican
#

You have copyright

#

And you don't have to pay $10k for an application

wanton holly
#

is there anyway, to remove invisible block after mods uninstalling? Like the purple/black blocks

neat pelican
tawdry geode
#

This is from the Archetype.class file, and it gives me the second IllegalStateException. This means, to my understanding that the list of component types for the asset (customblock with custom component as only active component) is longer than the list of components, but I have no idea how that happens or how it could be fixed

        int len = Math.max(this.componentTypes.length, components.length);

        for(int index = 0; index < len; ++index) {
            ComponentType<ECS_TYPE, ?> componentType = index >= this.componentTypes.length ? null : this.componentTypes[index];
            Component<ECS_TYPE> component = index >= components.length ? null : components[index];
            if (componentType == null) {
                if (component != null && (ignore == null || index != ignore.getIndex())) {
                    throw new IllegalStateException("Invalid component at index " + index + " expected null but found " + String.valueOf(component.getClass()));
                }
            } else {
                Class<?> typeClass = componentType.getTypeClass();
                if (component == null) {
                    throw new IllegalStateException("Invalid component at index " + index + " expected " + String.valueOf(typeClass) + " but found null");
                }

                Class<? extends Component> aClass = component.getClass();
                if (!aClass.equals(typeClass)) {
                    throw new IllegalStateException("Invalid component at index " + index + " expected " + String.valueOf(typeClass) + " but found " + String.valueOf(aClass));
                }
            }
        }

    }```
#

For context, clearing the "DecayBlock": { "TicksUntilDecay": 120, "BlockIdAfterDecay": "Rock_Ice", "TicksPassed": 0 }
from the json file using the asset editor no longer makes me get the error, but the moment DecayBlock is added, even without initializing any values, it throws the error

any ideas would be appreciated, kinda stuck rn

verbal kelp
#

Hi
Does anyone know if its possible to get a players head via commands?

brave mural
#

Is it possible to get the username of a user from its uuid but even when he is not online ?

sterile forum
#

You could read it from the stored data.

#

But that obviously would mean they have tried to connect at some point and the server have stored their information.
Essentially its as simple as looking at the player folder on the server, i think the file name itself is their uuid.

brave mural
#

Yea so im now storing it is it possible that users like change their username or something?

sterile forum
#

The server can override the packages, a users name might change namechange requests.

near onyx
#

another option you could use is look at the arg types class.
Theres an arg for PlayerLookup or something like that.
(take a look at how they do it)
This is the one i was thinking ArgTypes.GAME_PROFILE_LOOKUP_ASYNC

sterile forum
#

So its not a secure system to store any data you think will be infinitly accesible trough the data provided.

neat pelican
brave mural
#

Oh Nice

#

That was exactly what i was looking for! Thank you!

#

Do you know if it is possible to also when aggain a playerRef arg to a command to check for the offline thing or does that do that automaticcally ?

neat pelican
#

I don't know if the ArgTypes.PLAYER_REF does offline players by default, but I suspect not. But you can easily implement a custom argument type for this yourself

brave mural
#

Is there an example on how to do a custom arg?

sterile forum
tiny sequoia
#

hi, i'm trying to make an system for detecting if a player is close enough to my block but how to get the position of my block when using TickingSystem<ChunkStore>


public class PlayerAlarmTickSystem extends TickingSystem<ChunkStore> {

    private final Query<ChunkStore> blockQuery;

    public PlayerAlarmTickSystem() {
        this.blockQuery = Query.and(PlayerAlarmComponent.getComponentType());
    }

    @Override
    public void tick(float v, int i, @NonNullDecl Store<ChunkStore> store) {

        store.forEachChunk(blockQuery, (archetypeChunk, commandBuffer) -> {
            store.getExternalData().getWorld().execute(() -> {
                int size = archetypeChunk.size();

                for (int index = 0; index < size; index++) {
                    Ref<ChunkStore> ref = archetypeChunk.getReferenceTo(index);
                    
                    PlayerAlarmComponent device = archetypeChunk.getComponent(index, PlayerAlarmComponent.getComponentType());

                    if (device == null) {
                        continue;
                    }

                }
            });
        });
    }

    
    private boolean isAnyPlayerInRange(PlayerAlarmComponent device) {
       return true;
    }
}
brave mural
#
public class CustomPage extends BasicCustomUIPage {
  public CustomPage(PlayerRef playerRef) {
    super(playerRef, CustomPageLifetime.CanDismiss);
  }

Does anybody know why we have to pass in the playerRef here? We pass the playerref of the player we will show the ui to or what?

brave mural
sterile plank
#

Hi, is QUIC or TCP more stable in your experience?

ashen storm
#

hi iv been working on a weapon mod and 3.0 hit when the first weapon was done i updated the version check on the mod but still cant launch with out validation off the weapon works perfectly fine and iv encountered no errors is there anyway to figure out what part of the mod is broke/incorrect for validation

neat pelican
neat pelican
neat pelican
neat pelican
ashen storm
fresh lintel
#

@ashen storm and did you update your manifest.json to the current version/ build number? if the error is still happening you can check your logs of the world where the mod is loaded there are some extra infos what is broken (search for SEVERE errors)

brave mural
ashen storm
sterile plank
lofty obsidian
#

Hello,
I need some help. To access a workbench, I’m still using the BlockState class, which I populate with chunk.getState(targetX, targetY, targetZ);, and then I cast it with if (state instanceof ProcessingBenchState bench) { ... }.
I don’t understand how I can adapt my code to retrieve the same thing.
I know I need to use Component<ChunkStore>, but I don’t know which component to use.
can you help me ?
I find this method to get Ref<ChunkStore> :

    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;
            }
        }
    }
fresh lintel
#

can someone explain to me what i can do with earlyPlugins? i guess is that i can do some kind of byetcode injection... if yes is there already some examples on how to do so?

neat pelican
neat pelican
#

that's not the kind of context that's relevant when choosing between tcp and quic. if you're not knowlegable enough about this stuff, don't overcomplicate it and simply use tcp for the integration support and fewer headaches.

#

no need for microoptimizations

slender crater
#

How does item metadata work? Is it possible to change an item's name via a plugin?

neat pelican
slender crater
ruby arrow
#

how to limit the execution of actions in a custom block component, e.g., once every 3 seconds

earnest seal
#

has anyone replicated the npc cmds into pure java methods yet (i.e. not relying on the tree/or the json but rewriting how an npc interacts with the internal java methods)

burnt eagle
#

What is the beast way to modify areas in a World (replacea Ton of blocks)

neat pelican
sterile forum
#

[2026/02/21 20:49:13 WARN] [EntityRefSystem] Added Entity with uuid: 0657d10b-d53b-3ca4-ae10-1e9eafb422c7
Yay. got my own list of all entity uuids i can track. Wooo. woo... wo... ...

slender crater
#

What is the most comprehensive Essentials plugin currently available?

fresh lintel
#

does someone know how you can load a machinima "cutscene" via plugin?

ionic ermine
#

What points weapons or items in hand to attach to R-Attachment? Trying to see if I can shift that up to shoulder level instead, or more

#

Chest armour allows for armour assigned to multiple bones to be separately attached to and animated with the body (shoulder, chest, belly, pelvis), would love to bring that to weapons as well

hexed valley
#

Does anyone know if there is any async player pre login event planned or way to achieve that currently? Because Ill have to freeze the players waiting for the data to be fetched

slender crater
#

To-do rank up system do you all use just Luckperms plugin or also other plugins?

severe torrent
#

Is there an confirmation if there would be an big official mmo mode to the "mini" games in hytale would be insane?
maybe with an own story line own bosses and so on

neat pelican
#

They'll have an official minigame server, but have said nothing about an mmo. I think it's unrealistic

#

leave that to third parties, they're already cooking

slender crater
#

Essentials Plus or Elite Essentials for server?

near onyx
#

hytale has been out for a month, so all these mods are new... and have yet to build a reputation.
So in my opinion, I'd most likely just write my own stuff rather than relying on others' plugins.
It would suck to download a bunch, and then said plugins get abandoned
(see this all the time in the MC community for newer stuff lately)

cyan hare
#

Which is usually not unfortunately so better to create you own plugins

near onyx
#

i like to create my own stuff, so i dont have to rely on others, and i get what i want (or hopefully get it 😂 )
Obviously everyone is different.

nova bronze
#

i tend to do the same

shy kite
#

Yo chat, I'm working on a project and we need a coder
So if u like Ben 10 send a dm

nova bronze
#

and it only took me like a week to update my server lmao

near onyx
#

i havent had anything break yet.... knock on wood.
But i havent creatd any custom stuff (assets)... just commands and simple event handlers

void wagon
#

Can I append an item to Kweebec_Merchant's trades without having to override the entire asset? Would much rather just append to avoid overriding another plugins potential trades?

kind osprey
#

I am still trying to figure out why my asset pack has disappeared from the asset editor after the latest version and there are some things that pop up in the console that i can't quite figure out if it is a problem or not. I can't pastebin here, can i get someone to have a look for me who is exponentially more intelligent than me xD

#

but like things like:

[2026/02/21 23:31:12   WARN]                 [RangeValidator] Can't handle: string as a range: com.hypixel.hytale.codec.schema.config.StringSchema@36e4272a
[2026/02/21 23:31:12   WARN]                 [RangeValidator] Can't handle: min is not a Number: PT0S, class java.time.Duration
[2026/02/21 23:31:12   WARN]                 [RangeValidator] Can't handle: string as a range: com.hypixel.hytale.codec.schema.config.StringSchema@9c72a60f
[2026/02/21 23:31:12   WARN]                 [EqualValidator] Cannot compare class java.lang.Float with class com.hypixel.hytale.codec.schema.config.StringSchema
[2026/02/21 23:31:12   WARN]                 [RangeValidator] Can't handle: string as a range: com.hypixel.hytale.codec.schema.config.StringSchema@36e4272a

Is there something in my assets that are breaking it?

#

😮 the plugin is no longer being loaded, i tried loading it through: /plugin manage and i get the following error:

However i do have it as a dependency o.0

[2026/02/21 23:46:48 SEVERE]         [PluginManager] HySprinklers:HySprinklers is lacking dependency AssetEditor at stage SETUP
[2026/02/21 23:46:48 SEVERE]         [PluginManager] HySprinklers:HySprinklers DISABLED!
#

manifest.json

{
  "Group": "${plugin_group}",
  "Name": "${plugin_name}",
  "Version": "${plugin_version}",
  "Description": "${plugin_description}",
  "Authors": [
    {
      "Name": "${plugin_author}"
    }
  ],
  "Website": "${plugin_website}",
  "ServerVersion": "${server_version}",
  "Dependencies": {
    "Hytale:AssetEditor":  "*",
    "Hytale:EntityModule": "*",
    "Hytale:BlockModule": "*"
  },
  "OptionalDependencies": {},
  "DisabledByDefault": false,
  "IncludesAssetPack": true,
  "Main": "${plugin_main_entrypoint}"
}
#

did i do this wrong?

acoustic shuttle
#

Does anyone know why "Primary" and "Secondary" interactions aren't working? "Use" interaction works fine

        store.putComponent(ref, Interactable.getComponentType(), Interactable.INSTANCE);

        Interactions interactions = new Interactions();
        interactions.setInteractionId(InteractionType.Use, "UseNPC");
        interactions.setInteractionId(InteractionType.Secondary, "UseNPC");
        interactions.setInteractionId(InteractionType.Primary, "UseNPC");
        store.putComponent(ref, Interactions.getComponentType(), interactions);```
#
public class NPCInteractAction extends SimpleInteraction {

    public static final BuilderCodec<NPCInteractAction> CODEC = BuilderCodec.builder(NPCInteractAction.class, NPCInteractAction::new).build();

    public NPCInteractAction() {
        super("NPCInteraction");
    }

    @Override
    public void handle(@NonNullDecl Ref<EntityStore> pRef, boolean firstRun, float time, @NonNullDecl InteractionType type, @NonNullDecl InteractionContext context) {
        if (type != InteractionType.Primary && type != InteractionType.Secondary && type != InteractionType.Use) {
            return;
        }

        PlayerRef playerRef = context.getCommandBuffer().getComponent(pRef, PlayerRef.getComponentType());
        if (playerRef == null) {
            return;
        }

        UUIDComponent uuidComponent = context.getCommandBuffer().getComponent(context.getTargetEntity(), UUIDComponent.getComponentType());
        if (uuidComponent == null) {
            return;
        }

        List<CitizenData> citizens = HyCitizensPlugin.get().getCitizensManager().getAllCitizens();
        for (CitizenData citizen : citizens) {
            if (citizen.getSpawnedUUID() == null || !citizen.getSpawnedUUID().equals(uuidComponent.getUuid())) {
                continue;
            }

            if (type == InteractionType.Use && !citizen.getFKeyInteractionEnabled()) {
                break;
            }

            CitizenInteraction.handleInteraction(citizen, playerRef);
            break;
        }
        super.handle(pRef, firstRun, time, type, context);
    }
}```
twilit talon
#

@kind osprey Were you able to solve the problem?

oak jungle
#

Anyone know if its possible to change the scale of images within UI files to use nearest neighbor instead of bilinear? So that pixel art doesnt look blurry?

frail tusk
#

Has anyone found where you add your custom Icon for the new interface in the pre-release version?

red marsh
acoustic shuttle
red marsh
acoustic shuttle
red marsh
#

not right now

#

i hope they fix soon

acoustic shuttle
kind osprey
red marsh
#

does syncinteractionchains work with primary and second

kind osprey
#

if you need something, you can listen for SyncInteractionChains and then decode what has been used. Inside it has an interaction type that can be compared to InteractionType for things like primary, secondary, dodge etc...

kind osprey
acoustic shuttle
kind osprey
#

or in essence, i skipped that step and for my use case, checked to see if the block had become a farmland or not, but that its due to the niche of myh mod

kind osprey
acoustic shuttle
kind osprey
#

which i would execute inside of this for thread safety

world.execute( () -> {
// Code here
}) 
kind osprey
red marsh
#

you could get SyncInteractionChain.data.entityId to check if its entity and you can check if its your npc with a component

acoustic shuttle
#

I'll try that out, thanks

kind osprey
#

np

kind osprey
red marsh
#

with raycastselector its very easy to do use

kind osprey
# red marsh try with optional or both

tried, doesn't work. It seems that when i load the AssetEditor, it unloads my plugin without giving me any real error and then when i try to re-enable it through /plugin manage , it gives me the error that it doesn't have the dependency at setup

#

Has there been any changes with this release in regards to the asset editor? Is it still bundled with the server or has it been attached elsewhere? I'm thinking ridiculous now ig

#

I wonder if anything like the server version check for asset packs have created issues with asset pack creation and the such

Added mod enable and disable support from UserData/Saves/<save>/mods
Added server version checks for plugins and asset packs
Newly created asset packs are now enabled by default
Added option to skip mod validation in single player
Mod validation issues now block server startup unless flagged
Added a warning when loading into worlds with missing mods
Added duplicate plugin detection warnings
red marsh
#

they did add new things to node editor but i dont think that would affect it

kind osprey
#

tbh i might just have to create a whole new project from scratch and port everything over -.-

#

i can only assume that there might be some form of corruption that might have happened, invalidating the assetpack and thus creating issues now. I really dont know

red marsh
#

why you need in that in manifest anyway

#

is something gets disabled when you remove that

kind osprey
#

The whole plugin gets disabled and can't be loaded after the asset editor is opened:

[2026/02/21 23:46:48 SEVERE]         [PluginManager] HySprinklers:HySprinklers DISABLED!```
#

do i need to add the asset editor as a dependency to the whole damn project? if so how the helly do i do that

#

I don't have the time nor energy to be recreating this damn project for it to potentially break again with a future update though x_x I get that it is early access so i might just hold off developing for a while

tranquil raft
kind osprey
#

Unless i did that wrong...

#

which i am unsure what part of that would be wrong but if i did the dependency wrong then that would make sense. Unsure if i need to target a specific version of the asset editor, only problem is that i don't know what the version would be to target it to test if thats a problem. Only inconsistency is that the other dependencies are doing their job, so * is working for those dependencies soooo idk

tranquil raft
#

oh well then i sadly dont know

kind osprey
#

been kinda trying to fix this for 2 days and im feeling fairly defeated lols. So i might just put developing mods for hytale of pause for a bit xD

acoustic shuttle
acoustic shuttle
kind osprey
acoustic shuttle
#

Ah hmm

acoustic shuttle
#

But like I said, I've never messed with depending on internal features like that, so I have no idea

acoustic shuttle
kind osprey
#

@acoustic shuttle
Let me prefice that i am very hacky, i will just figure out a way that works and if it works.... it works... I dont try to find the quote "best"


            PlayerRef playerRef = Universe.get().getPlayer(packetHandler.getAuth().getUuid());
            Ref<EntityStore> entityRef = playerRef.getReference();
            if (entityRef == null || !entityRef.isValid()) {
                return;
            }
            Store<EntityStore> store = entityRef.getStore();
            World world = store.getExternalData().getWorld();
acoustic shuttle
kind osprey
#

OHHHHH

#

I read that wrong my bad, give me one min. I am sure i also did this one second

acoustic shuttle
#

syncInteractionChain.data.entityId returns the entity's ID. For the entity I'm comparing against, I have it's ref

red marsh
acoustic shuttle
kind osprey
#

I think you can get it, i have just... forgot. Give me a moment and i will see what i can do.

red marsh
kind osprey
#

Try this?

            PlayerRef playerRef = Universe.get().getPlayer(packetHandler.getAuth().getUuid());
            Ref<EntityStore> entityRef = playerRef.getReference();
            Store<EntityStore> store = entityRef.getStore();
            store.getExternalData().getRefFromNetworkId();
acoustic shuttle
kind osprey
acoustic shuttle
#

Haha yeah will do

acoustic shuttle
#

Unfortunately this doesn't seem to work with right clicks. Any ideas?

    @Override
    public void accept(PacketHandler packetHandler, Packet packet) {
        if (!(packet instanceof SyncInteractionChains interactionChains)) {
            return;
        }

        try {
            SyncInteractionChain[] updates = interactionChains.updates;

            if (packetHandler.getAuth() == null)
                return;

            // Get player from packet handler
            UUID playerUuid = packetHandler.getAuth().getUuid();
            PlayerRef playerRef = Universe.get().getPlayer(playerUuid);

            if (playerRef == null || !playerRef.isValid()) {
                return;
            }

            World world = Universe.get().getWorld(playerRef.getWorldUuid());

            if (world == null) {
                return;
            }

            // Process each interaction
            world.execute(() -> {
                for (SyncInteractionChain chain : updates) {
                    handleInteraction(playerRef, chain);
                }
            });
        } catch (Exception e) {
            getLogger().atWarning().withCause(e).log("Error handling player interaction");
        }
    }```
#
    private void handleInteraction(@Nonnull PlayerRef playerRef, @Nonnull SyncInteractionChain chain) {
        InteractionType type = chain.interactionType;
        if (type != InteractionType.Use && type != InteractionType.Secondary && type != InteractionType.Primary) {
            return;
        }

        if (chain.data == null) {
            return;
        }

        if (!checkCooldown(playerRef.getUuid())) {
            return;
        }
        
        Store<EntityStore> store = playerRef.getReference().getStore();
        Ref<EntityStore> entity = store.getExternalData().getRefFromNetworkId(chain.data.entityId);
        if (entity == null) {
            return;
        }
        
        List<CitizenData> citizens = HyCitizensPlugin.get().getCitizensManager().getAllCitizens();
        for (CitizenData citizen : citizens) {

            if (citizen.getNpcRef() != null && citizen.getNpcRef().isValid() && citizen.getNpcRef().getIndex() != entity.getIndex()) {
                continue;
            }
            
            if (type == InteractionType.Use && !citizen.getFKeyInteractionEnabled()) {
                break;
            }

            CitizenInteraction.handleInteraction(citizen, playerRef);
            break;
        }
    }```
#

It looks like right clicking with an empty hand doesn't send an interaction packet

kind osprey
#

Also side note why type != InteractionType.Use && type != InteractionType.Secondary && type != InteractionType.Primary ? Surely you want to use || instead of && ?

acoustic shuttle
acoustic shuttle
kind osprey
#

If you're looking for any and all interactions of InteractionType.use || InteractionType.Secondary || InteractionType.Primary ?

#

It will always return because the interaction type will never be all three at the same time?

#

The easiest but most primitive:

boolean isCorrectInteraction = false;
if (type != InteractionType.Use && !isCorrectInteraction) {isCorrectInteraction = true};
if (type != InteractionType.Secondary && !isCorrectInteraction) {isCorrectInteraction = true};
if (type != InteractionType.Primary && !isCorrectInteraction) {isCorrectInteraction = true};

if(!isCorrectInteraction) return;

// continue with code

Easily cleaned up with.

acoustic shuttle
kind osprey
#

Im sleepy so i might be reading wrong, you're probably right. XD

acoustic shuttle
#

Anyway, thanks for your help!!

kind osprey
#

goodge luck

kind osprey
acoustic shuttle
#

Although that's because the player can attack with an empty hand, and they designed it to be able to interact with Use with an empty hand

kind osprey
#

weirdge

acoustic shuttle
#

In the vanilla game, there's nothing that requires Right Click interactions without an item in hand, so I guess they didn't bother sending a packet

kind osprey
#

i guess also the design choice for coherency is to only interact npcs with the Use keybind right?

acoustic shuttle
kind osprey
#

Makes our lives hard for sure. I wonder through the power of reflection, if we could hack together a solution for that thought

acoustic shuttle
#

Yeah, I'm not sure how they messed that up haha

acoustic shuttle
#

Oops, I just corrupted my world by giving NPCs an interaction, then later removing the interaction .json to replace it with my new interaction system... lol

kind osprey
acoustic shuttle
kind osprey
acoustic shuttle
kind osprey
acoustic shuttle
#

I have no idea

#

I just checked, and the server doesn't appear to be filtering the packet. I don't see why it would anyway since the packet would already be sent which would be wasting bandwidth if it's not used

acoustic shuttle
kind osprey
acoustic shuttle
#

Its a one line mistake which breaks chunks and causes world corruption... lol

kind osprey
acoustic shuttle
#

It's literally a one line mistake in the server.jar haha

#

More specifically, a "0" that needs to be changed to a "1"

kind osprey
acoustic shuttle
#

That's too much effort. I already submitted a bug report, and found a workaround, so I'm happy

unreal dust
#

dw when devs fix that bug they'll rename a thousand ids and functions so all the mods break anyway :p

#

idk why the instancing updates to this last release made it in, the thing is even more unstable than before attm D:

acoustic shuttle
unreal dust
#

server is all nice and dandy until peeps start playing in instances then it's disconnects here, pls refund the portal key the instance kicked us mid-run, etc D:

acoustic shuttle
unreal dust
#

now I get why dungeon mods started putting up warnings about how unstable this last update is

maiden galleon
#

I added a refund on keys for the upcoming pre-release if there's an error while the portal is initializing, but not for 'DCing mid-fragment' yet. To do so we'd need something like the stash or lost & found in SkyBlock.

vivid terrace
#

is there a way to use i18n params in descriptions?
items.foo.description = {a, select, true {{b}} false {{c}}} would be super handy for dealing with custom properties.

#

Message.translation().param() for when I'm dealing with it on my own, but in the description tooltips is what I'd like to see this in

lethal roost
fossil adder
#

Good day! For some reason, when I open the UI for the player after they connect, they can't type in the TextField. They have to press ESC twice to be able to type. How can I solve this issue?

burnt eagle
#

how can i get the Player object in the PlayerDisconnectEvent ? ( I will clear the Player inventory on Disconnect )

strange otter
#

I know you can get Store<ChunkStore> From World instance but is there a way around? In EntityTickingSystem i want to get world from my chunkStore so i can spawn particle during tick

brave mural
#

Whats the proper way to get the world ?

public class DamageSystem extends DamageEventSystem {

  @Override
  public SystemGroup<EntityStore> getGroup() {
    return DamageModule.get().getFilterDamageGroup();
  }
  @Override
    public void handle(
      int index,
      @Nonnull ArchetypeChunk<EntityStore> archetypeChunk,
      @Nonnull Store<EntityStore> store,
      @Nonnull CommandBuffer<EntityStore> commandBuffer,
      @Nonnull Damage damage
    ) 
    {
      if (damage.isCancelled() || damage.getAmount() <= 0) return;
      var entityStore = archetypeChunk.getReferenceTo(index);

strange otter
brave mural
strange otter
#

Not sure, just writing from memory on the phone, maybe you just need entity ref and try getting world from entity

brave mural
#

Mhh, isnt there like a component or something i could get to see in which world the damage occured?

astral vault
#

Anyone here worked with prefabs and could tell me if there's a way to store custom block component data (like stuff set in block UI) in prefabs?

acoustic shuttle
#

Does anyone know how to set max health?

astral vault
#

for a Player or an NPC?

acoustic shuttle
#

Nevermind, I think I figured it out. Thanks.

sterile forum
#

Have anyone started to make any component library for the Custom UI? I know the common have default elements we can use.
But it seems like it could be a early on popular dependency project of some kind, then again there where changes coming to the ui right, some XAML built version like in SS14?

Sidenote, does the common UI elemenets contain or is there an easy setup to create a UITree, you know expandable collapsable nodes etc.
I assume not, just hopeful that i missed it. ^^

bitter shoal
brave mural
knotty bear
#

Hello, I'm currently doing some "basic" things at UI Pages and whenever I want to append to the CODEC data as a boolean it only gives me the option of sending a string, so it would make sense and work if I do this?

.append("ReloadAll", "true")```
Not sure, but I'm going to test it out...
sullen marlin
knotty bear
#

Im cooked Failed to apply CustomUI event bindings

sudden crag
bitter shoal
#

Dang, you were faster 😛

bitter shoal
knotty bear
bitter shoal
#

nah uh

sudden crag
bitter shoal
#

I mean you could. But first of all enable this Settings -> General -> All the way to the bottom -> Diagnostics Mode -> On

knotty bear
#

Already fixed that little problem. Was just the selector

bitter shoal
#

"Use Alternative Network Stack"?? I saw an enum inside the server source, which mentioned TCP and QUIC, but now there's also a client-setting? 🤯

knotty bear
#

Unexpected character: 22, '"' expected 'true' or 'false'!
Alright, how to append a boolean? Should I create my own class of EventData for building a String as Key and Boolean as Value? I'm confused

#

I will try just to create a constructor... Should do I thing

bitter shoal
#

What are you doing exactly? The thing you posted earlier? Could you post the whole codec?

knotty bear
#

I'm doing it wrong, probably I just need to declare a constructor and do a new instance by the constructor

bitter shoal
#

Or as lambda:

CODEC.addField(
  new KeyedCodec<>("ReloadAll", Codec.BOOLEAN),
  YourObject::setValue,
  YourObject::getValue
)
knotty bear
#

I resolved my problem... I was using the EventData Class of Hytale instead mine, I named it same "EventData"

                        .append("ReloadAll", true)```
bitter shoal
#

Happens, dw 😄

knotty bear
#

Better call it ReloadEventData 😅😂

worldly cave
#

Anyone ever get this error I dont know if it's a plugin doing but it happens every so often

[2026/02/22 11:08:37 SEVERE]                [Hytale] Exception in thread Thread[#141,WorldThread - default,5,InnocuousForkJoinWorkerThreadGroup]:
java.util.concurrent.CompletionException: java.nio.file.AccessDeniedException: universe\worlds\default\resources\ReputationData.json -> universe\worlds\default\resources\ReputationData.json.bak
    at java.base/java.util.concurrent.CompletableFuture.wrapInCompletionException(CompletableFuture.java:323)
#
    at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:359)
    at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:364)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1828)
    at java.base/java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1817)
    at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:511)
    at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1450)
    at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:2019)
    at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:187)
Caused by: java.nio.file.AccessDeniedException: universe\worlds\default\resources\ReputationData.json -> universe\worlds\default\resources\ReputationData.json.bak
    at java.base/sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:89)
    at java.base/sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:103)
    at java.base/sun.nio.fs.WindowsFileCopy.move(WindowsFileCopy.java:310)
    at java.base/sun.nio.fs.WindowsFileSystemProvider.move(WindowsFileSystemProvider.java:287)
#

cant even paste the rest it thinks im adveritsing 😭 cause of the com.hypixel.server

cyan hare
worldly cave
#

lol ik too funny

cyan hare
#

There’s a file mentioned multiple times though

#

Reputation.json.bak corrupted data in the “normal” one ?

worldly cave
#

yeah i do see that but idk why that file

#

the file literally just says

{
  "Stats": {}
}
neat pelican
#

You don't have it open in a text editor while it's trying to move it, right?

worldly cave
#

yeah nah i was just afk and it did that

cyan hare
#

Interesting

worldly cave
#

1 st timed it happened

cyan hare
#

What I clearly understand though is that

java.nio.file.AccessDeniedException: universe\worlds\default\resources\ReputationData.json -> universe\worlds\default\resources\ReputationData.json.bak

This is what your server is trying to do but your windows block that action somehow

worldly cave
#

yeah codex said it could be a antivirus/windows defender
Most likely cause: external file lock (Defender/AV, backup/sync, indexer, editor/tool) while Hytale core was saving.

#

it checked all my mods and plugins to see if anything even access that and no which makes sense none of my mods would have a need to

cyan hare
#

Doesn’t seem like a mods but a server action to create backups files

worldly cave
#

yeah i dont have any backup scripts running either or mods

cyan hare
#

Locally hosted ?

worldly cave
#

yeah this is my test server

cyan hare
#

Try to restart your pc and see if that’s still blocking atp

fossil adder
#

Is there any event that cancels mob spawning in the world?

hexed valley
#

Does anyone know if there is any async player pre login event planned or way to achieve that currently?

sterile forum
# bitter shoal Try HyUI. They have very cool features and started as a java-wrapper around the ...

Yeah I saw that, probably going to set up something similar to output hytale ui from java, either if i can use direct functions and just return that instead of a resource file, or if its not possible, with some kinde of (source) generator.

But it won't go html, since the there is an additional layer of interpretation, and pretending that it is full html just add expectations that probably won't be possible to deliver. I rather they keep the track of having xaml or some other defined format thats been used in uis that doesn't at the same time have a underlaying expectations of the features.
Same probably with any kind of libraries that aim to replace be their own thing drifting to far from the root structure of the server implementation, since the chance of it breaking with updates becomes two or three points of failiure instead of just the connection towards the base systems and my code. External tools sounds interesting.

bitter shoal
# sterile forum Yeah I saw that, probably going to set up something similar to output hytale ui ...

You can inline generated documents using UICommandBuilder#appendInline or smth. No resource files or asset files needed. BUT a .UI file for opening a Page is required AFAIK. You basically provide a blank "Root" .UI File with just an empty Group element, generated the document based on the UI elements of the java api and then inline them to your blank root ui.
I wanted to create a lib as well, but im not sure if it's worth, because of the switch to noesis.

If you want to continue your throughts and need some more documentation, check out hytalemodding docs. There's the official UI documentation posted 🙂

tawdry geode
#

when i create an asset on my testserver using asset editor, but the testserver runs from intellij using HytaleServer.jar, where do i find the Mods folder so i can delete the asset? its making me unable to launch the server rn so i cant go back into asset editor

torn shard
#

yeehaw, my heightmap import mod works. except for the translations and a few rendering bugs whilst the place clipboard brush is selected, probably a client side bug

tawdry geode
#

@sterile forum @neat pelican thanks so much for all the help with the client getting kicked with my custom block and stuff i found the issue after over like 6h of trial and error and giving up multiple times

#

my clone method returned null instead of "new decayBlock" ffs

#

my function now works properly, however I have an issue with the values I set for a block in the asset editor / json file dont get imported into the block i place

neat pelican
tawdry geode
#

i can report the program works fully as intended when hardcoding in the values:

            generator.setTicksUntilDecay(120);```

block will be replaced perfectly
neat pelican
#

I had a similar thing where I spent hours debugging my custom asset where the getID() function returned a hard coded empty string 🤦‍♂️

tawdry geode
sterile forum
#

I currently have the problem that i have tried to figure out the gradle setup and what it does, I am not sure anymore what project folder compiles, or not. ^^

#

well to figure out of it compiles or not is easy, but the version i was sure i was running was lacking the logic to specifiy the asset file. ^^

#

ah probably just forgot to set add assetsdependency

#

And now that i keep mixing up guid and uuid when typing. 😄

ionic ermine
#

What points weapons or items in hand to attach to R-Attachment? Trying to see if I can shift that up to shoulder level instead, or more
Chest armour allows for armour assigned to multiple bones to be separately attached to and animated with the body (shoulder, chest, belly, pelvis), would love to bring that to weapons as well

sterile forum
# ionic ermine What points weapons or items in hand to attach to R-Attachment? Trying to see if...

The armor pieces and up in place i think, because the block bench model layout defines the hierarchy of the object they attach to, already with correct offsets and bones named.
while i think items in hand end up there by a different route since with those the majority should probably draw relative to the hand with the item at zero. To not have to offset every single block in the game that you might hold. Not sure. But if they can be offset its certainly a base item attribute somewhere.

unreal dust
#

Does anyone know what's up with the fog this update?

Players exploring around are dealing with vast amount of fog, wasn't like this before this update, and this is happening on chunks that were already pregen.... So why all the fog??

ionic ermine
#

My problem is what happens in blockbench stays in blockbench. It'll correctly inherit bone hierarchy there, but in game it only reflects R-Attachment and nothing else

unreal dust
#

Seems all this fog is client-side because the server viewradius is 32, but the clients ain't getting that unless they like... stand still

ionic ermine
sterile forum
#

if you would open a model file from the assets. Like the battleaxe/Adamintite.blockymodel.

you can read

"nodes": [
    {
      "id": "9",
      "name": "R-Attachment",
      "position": {
        "x": 0,
        "y": 33,
        "z": 0
      },

that would be the definition of the object to be relative to R-Attachement bone i am kinda sure.

by opening different armor and items in blockbench or text editor you can probably figure out the name of the other nodes, if they are viable or not.

#

replacing it with "name": "Head",
would probably give a fair chance of the axe sticking out of the players head instead when equiped.

#

if there are not other overrides taking part of hard expectations in the client or server otherwise that certain nodes can be found for certain item types.

#

Ah. If you have changed it there is probably other logic overriding it, probably have to do with changing hands etc

sly onyx
#

How can I contact the developers to suggest adding a core functionality?

#

thank you

brave mural
#

Whats the proper way to disable building and such in a world or instance? Is that possible or a plugin required for it?

Like Blocking building, dealing or receiving damage and so on?

sly onyx
#

i did it like this, i dont know if its the best way tho

#
public class PlayerBlockPlaceSystem extends EntityEventSystem<EntityStore, PlaceBlockEvent> {

    public PlayerBlockPlaceSystem() {
        super(PlaceBlockEvent.class);
    }

    @Override
    public void handle(
            int index,
            @Nonnull ArchetypeChunk<EntityStore> chunk,
            @Nonnull Store<EntityStore> store,
            @Nonnull CommandBuffer<EntityStore> buffer,
            @Nonnull PlaceBlockEvent event
    ) {
        event.setCancelled(true);
    }

    @Override
    public Query<EntityStore> getQuery() {
        return Query.any();
    }
}

public class PlayerBlockDamageSystem extends EntityEventSystem<EntityStore, DamageBlockEvent> {

    public PlayerBlockDamageSystem() {
        super(DamageBlockEvent.class);
    }

    @Override
    public void handle(
            int index,
            @Nonnull ArchetypeChunk<EntityStore> chunk,
            @Nonnull Store<EntityStore> store,
            @Nonnull CommandBuffer<EntityStore> buffer,
            @Nonnull DamageBlockEvent event
    ) {
            event.setCancelled(true);
    }

    @Override
    public Query<EntityStore> getQuery() {
        return Query.any();
    }
}

public class PlayerBlockBreakSystem extends EntityEventSystem<EntityStore, BreakBlockEvent> {

    public PlayerBlockBreakSystem() {
        super(BreakBlockEvent.class);
    }

    @Override
    public void handle(
            int index,
            @Nonnull ArchetypeChunk<EntityStore> chunk,
            @Nonnull Store<EntityStore> store,
            @Nonnull CommandBuffer<EntityStore> buffer,
            @Nonnull BreakBlockEvent event
    ) {
            event.setCancelled(true);
    }

    @Override
    public Query<EntityStore> getQuery() {
        return Query.any();
    }
}
brave mural
#

Ok so you did that yourself ? I see

#

BTW how do i set the death config inside the worldconfig Via Code?

#

I couldnt find a way besides like actually writing in manually to the config.json

open chasm
#

guys, does anyone knows why did configs become broken after the update?

Id: CustomSpawnDeployableInteraction
Path: D:\Hytale local server\mods\ExtractionRPG.rpg\Server\Item\Interactions\CustomSpawnDeployableInteraction.json
Key: Config
Results:
    FAIL: Can't be null!```
neat pelican
tawdry geode
#
                
commandBuffer.addComponent(ref, RegenBlock.getComponentType(), regenBlockComponent);
                
worldChunk.setTicking(x,y,z, true);
                
LOGGER.atInfo().log("New RegenBlock added at [" + x + " " + y + " " + z + "]");```

This is in an onEntityRemove function, the code works and places the block specified in regenBlockComponent at the position the block was just broken to trigger this code to run. 
My goal now is to attach the RegenBlock component that the old block had onto the new one that was placed, but i think the ref cannot be used as its for the old block, not the new. 
Anyone know how i can get the ref from the new block just placed?
sterile forum
tawdry geode
#

there is getBlock (int) and getBlockType (BlockType)

sly onyx
#

how do i detect shift key press?

quartz gyro
#

Recently just learned that mods can have a icon called icon-256.png, where does this normally live in a mod jar?

sterile forum
quartz gyro
ruby arrow
#

What is the name of the element in the Hytale API responsible for the notifications that appear in the lower right corner after, for example, raising an object?

quartz gyro
#

Also, how are we using mod vs plugin nomenclature? I am working on a server manager and I currently have everything listed under "Mods" but it just feels wrong coming from Minecraft, haha. I believe we could seperate out the folders with startup arguments but not sure if it's worth.

neat pelican
neat pelican
quartz gyro
#

Yep that's what I gathered, thanks

sly onyx
#

is there a way to detect space key and shirft ?

inner fossil
#

anyone heard or seen someone having a problem where players are losing their items stored in basegame chests?

tawdry geode
#

how can i turn the index of a block into the blocks entity

sterile forum
tawdry geode
lunar schooner
#

i have one player trying to join my server, and keeps reporting that the only error hes getting is, failed to load customUI, any one know how to trouble shoot this, as everyone else is on the server and has no issues

#

i deleted his save file on the server and was able to connect for a few hours before getting that error again

hoary obsidian
#

you’ll probably get more traction in #community-help this channel is for discussing the creation of server mods/plugins

lunar schooner
#

ill give it a try though

hoary obsidian
#

where is he seeing the error? probably need to dive into client logs assuming it’s an issue on his end and not the server

severe torrent
neat pelican
strange otter
#

If i call blocks.forEachTicking i get local X,Y and Z, how can i transform that to global ?

sterile forum
neat pelican
#

yeah, ChunkUtil has those conversion functions

strange otter
#

Great thanks

hexed valley
#

Hi guys do you know how to cancel wheather change events?

blazing coyote
#

Yup, totally not agreeing for personal reasons but leave the MMO stuff to third-party creators.

trim gyro
#

Hey guys, i think i found something suspicious in a mod i was looking at tweaking a bit on CurseForge and i need someone with a bit more knowledge able to confirm. but this one mod called "RPGLeveling" has classes in it that refer to all kinds of WindowsAccount authentication, Domain, Identity and Security. These DO NOT sound like something that is typical with a mod and need confirmation if this absolutely needs to be dealt with

near onyx
#

that sounds suspicious, i would report it to curseforge

trim gyro
#

you got it

#

my Dad learned it started with v0.2.1

sterile forum
#

Yeah. It was just a question of time before it would start or be a case.
As soon as you have source level mods, people will realize there is some way to insert trojans or other malware trough it.

trim gyro
#

yeah, it was very sus, i opened it in Intellij to decompile the class and it was not looking good

sterile forum
#

And since people don't validate and just accept that everything should be fine, they install anything. ^^

#

Cities Skylines 2 had its fair share of cryto wallet stealers.

neat pelican
sterile forum
#

Well glad thats the case.

neat pelican
#

It's just included as part of the database driver. They could have cleaned it up when building the jar, but it's just a missing optimization, not anything malicious or harmful

trim gyro
#

hm, got it thanks for the info

neat pelican
#

Good vigilance though!

tawdry geode
#

Hytale entering the hypixel skyblock mod experience earlier than i thought

sterile forum
#

I should be able to find this in the documentation i think, but I don't.
I have a SplitPageView UI containing two groups #LeftView and #RightView, that both in turn contain a group called Content.

I would include it like commonUI but with a relative path to the ui file its used in.

$CommonUI = "../Common.ui";
$SplitView = "./SplitView.ui";

To add it i I would add it the same way as with a common ui declared

$SplitView.@SplitPageLayout #SplitPage;

How would I append data at this depth to the #SplitPage.LeftView.Content
is it with a #SplitPage.@LeftView.@Content {}
...

ruby arrow
#

Is it possible to somehow remove the block animation using a custom block component?

nova bronze
#

yo nice, i got my hytale server running on it's own hyper v vm on my network instead of wsl. using way more ram now lol

ruby arrow
kind osprey
#

POV: Day 3 of figuring out why my mod deactivates due to something about not having AssetEditor as a dependency. Can i add the AssetEditor as a dependency for the whole mod and not just in the manifest?

nova bronze
ruby arrow
hoary viper
#

Hi i am work with the UI a lot
but i cant get a pop up thing to work like a UI on top of another UI like a popup ?

any idea on how to do it

#

the hack i come with is to visable false the old up and show the next one

knotty vigil
#
private void onPlayerJoinWorld(AddPlayerToWorldEvent event) {
        event.setBroadcastJoinMessage(false);

        World spawnWorld = Universe.get().getWorld(
                FileConfiguration.getConfig().getSpawnLocationWorld()
        );

        if (spawnWorld == null) return;

        Vector3d spawnPos = new Vector3d(
                FileConfiguration.getConfig().getSpawnLocationX(),
                FileConfiguration.getConfig().getSpawnLocationY(),
                FileConfiguration.getConfig().getSpawnLocationZ()
        );

        Vector3f spawnRot = new Vector3f(0, 0, 0);

        Teleport teleport = new Teleport(
                spawnWorld,
                spawnPos,
                spawnRot
        );

        event.getHolder().addComponent(
                Teleport.getComponentType(),
                teleport
        );
    }

Event fires, how is teleporting meant to be done? Am I missing something?

ruby arrow
#

Is it possible to somehow remove the block animation using a custom block component?

vivid bone
#

Hello, hello!
I want to set up a server for my class. Hytale seems to manage a lot of things on the server side, so as soon as I have a few people on my server, the TPS drops quickly. My only solution at the moment is to limit the render distance.
I saw that you've done a good job on the optimisations and it's running well 💪.
Have you discovered any tips that you could share with me, please? 🙂

neat pelican
nova bronze
#

it's p good yeah, i use that and one other one for performance and they work p well so far. and a low tps isn't exactly bad either. you want stable tps

vivid bone
neat pelican
#

improve the cpu or split people up into different worlds

vivid bone
#

by improve you mean upgrade ? or there are options in JVM, or serverside improvements i can do ?
IF possible yeah i can split people, maybe there is a way to improve multi threading ? idk

neat pelican
#

nah it's still early days

vivid bone
#

i get it, thanks !

sterile forum
#

ok you declare the things you want to be exposed as components with @name and assign the component itself to that.

acoustic shuttle
#

Does anyone know how to set the max health of an NPC?

lone parrot
#

I may be late to the party here, but I updated my server and plugins, but I’m still getting a world that all the blocks are invisible. I’ve added the new assets.zip and am still having the issue. Any ideas?

acoustic shuttle
lone parrot
#

Yes

acoustic shuttle
#

It sounds like your world got corrupted

near onyx
sterile forum
lone parrot
viscid lily
#

can i find some world with full chunk save?

acoustic shuttle
near onyx
#

oh wait, i dont think you can set it.... but you can apply a modifier

acoustic shuttle
acoustic shuttle
# near onyx oh wait, i dont think you can set it.... but you can apply a modifier

Hytale doesn't appear to support using modifiers on NPCs.

java.lang.UnsupportedOperationException: Only static modifiers supported on the client currently.
        at com.hypixel.hytale.server.core.modules.entitystats.modifier.Modifier.toPacket(Modifier.java:45)
        at com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap.addChange(EntityStatMap.java:676)
        at com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap.putModifier(EntityStatMap.java:295)
        at com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap.putModifier(EntityStatMap.java:267)
        at ThirdParty(com.electro:HyCitizens)//com.electro.hycitizens.managers.CitizensManager.applyHealthOverride(CitizensManager.java:1418)
        at ThirdParty(com.electro:HyCitizens)//com.electro.hycitizens.managers.CitizensManager.spawnPlayerModelNPC(CitizensManager.java:1382)
        at ThirdParty(com.electro:HyCitizens)//com.electro.hycitizens.managers.CitizensManager.spawnCitizenNPC(CitizensManager.java:1220)
        at ThirdParty(com.electro:HyCitizens)//com.electro.hycitizens.managers.CitizensManager.lambda$spawnCitizen$1(CitizensManager.java:1190)
        at com.hypixel.hytale.server.core.universe.world.World.consumeTaskQueue(World.java:959)
        at com.hypixel.hytale.server.core.universe.world.World.tick(World.java:451)
        at com.hypixel.hytale.server.core.util.thread.TickingThread.run(TickingThread.java:95)
        at java.base/java.lang.Thread.run(Thread.java:1474)```
near onyx
#

weird

acoustic shuttle
#

Maybe I'm doing something wrong?

    public void applyHealthOverride(@Nonnull Ref<EntityStore> entityRef, @Nonnull CitizenData citizen) {
        if (!citizen.isOverrideHealth()) {
            return;
        }

        Store<EntityStore> entityStore = entityRef.getStore();
        EntityStatMap statMap = entityStore.getComponent(entityRef, EntityStatsModule.get().getEntityStatMapComponentType());
        if (statMap == null) {
            return;
        }

        int healthIndex = DefaultEntityStatTypes.getHealth();
        EntityStatValue healthStat = statMap.get(healthIndex);
        if (healthStat == null) {
            return;
        }

        float defaultMaxHealth = healthStat.getMax();
        float targetHealth = citizen.getHealthAmount();
        float difference = targetHealth - defaultMaxHealth;

        Modifier modifier = new Modifier(Modifier.ModifierTarget.MAX) {
            @Override
            public float apply(float v) {
                return v + difference;
            }
        };

        statMap.putModifier(healthIndex, "hycitizens_max_health", modifier);
        statMap.setStatValue(DefaultEntityStatTypes.getHealth(), targetHealth);
    }```
near onyx
#

use StaticModifier

neat pelican
#

via statValue.synchronizeAsset()

sterile forum
#

Yes. manged to get the splitViewPage working. Next thing will be adding a click event to the list so i can populate specific data in the right side view.

acoustic shuttle
acoustic shuttle
near onyx
#

yes, so use a StaticModifier as its asking for, rather than the abstract Modifier class

neat pelican
#

but your call if editing the base or applying a modifier makes more sense for your use case

acoustic shuttle
# near onyx yes, so use a StaticModifier as its asking for, rather than the abstract Modifie...

How would I change this to use a static modifer?

    public void applyHealthOverride(@Nonnull Ref<EntityStore> entityRef, @Nonnull CitizenData citizen) {
        if (!citizen.isOverrideHealth()) {
            return;
        }

        Store<EntityStore> entityStore = entityRef.getStore();
        EntityStatMap statMap = entityStore.getComponent(entityRef, EntityStatsModule.get().getEntityStatMapComponentType());
        if (statMap == null) {
            return;
        }

        int healthIndex = DefaultEntityStatTypes.getHealth();
        EntityStatValue healthStat = statMap.get(healthIndex);
        if (healthStat == null) {
            return;
        }

        float defaultMaxHealth = healthStat.getMax();
        float targetHealth = citizen.getHealthAmount();
        float difference = targetHealth - defaultMaxHealth;

        Modifier modifier = new Modifier(Modifier.ModifierTarget.MAX) {
            @Override
            public float apply(float v) {
                return v + difference;
            }
        };

        statMap.putModifier(healthIndex, "hycitizens_max_health", modifier);
        statMap.setStatValue(DefaultEntityStatTypes.getHealth(), targetHealth);
    }```
near onyx
#
Modifier modifier = new Modifier(Modifier.ModifierTarget.MAX) {
            @Override
            public float apply(float v) {
                return v + difference;
            }
        };

Just change this to use the StaticModifier class instead of the Modifier class

#

exhibit A from my code:

StaticModifier modifier = new StaticModifier(target, type, amount);
acoustic shuttle
near onyx
#

its either ADDITIVE or MULTIPLICATIVE
Whichever suits your needs

#

you could use add and just add whatever amount you want

acoustic shuttle
#

I'll try that out, thanks!

near onyx
#

You’re welcome

ionic ermine
#

How would I go about creating a new armor slot/type?

#

Or, alternatively, is there a way to call an item as an attachment and equip that to a player, without overriding the current item in that slot? Simply having a model display while an item is held, essentially

#

Idea: Having a weapon-item that allows for two different models in each hand, or...
Having a weapon that mutates your arm, or shoulder, making another arm come out (Animations would be handled by current attachment+animation methods, that's the easy part)
Problem: An item or weapon only displays in the R/L-attachment slots, or whatever it's bound to, and will not render onto other nodes without the Render Dual-wielded option, which simply mirrors the held item into the other hand.
Blockbench displays items correctly/intuitively. When imported as an attachment, each object will go to the parent node/bone that it is named after.
In game, weapons deny this and only animate as a single item, and do not render in other nodes unless it is an equipped piece of armour.

sterile forum
#

by the design any model can have attachments, if those attachments in turn by their own data know if they should attach to the internal specified attachment point or not i do not know.
I guess the best idea would be to read in closer on how they are used in general.

NPCs seems to be built by weighted attachments that can attach parts to different body parts.
So could just be that you need to attach an additional component that does similar logic un realted of the weapon equipped, or make the weapon in hand invisible, and only depend on attachements for the actual visual effects. I haven't dug into it yet. But I will do that when i start with my custom village npcs.

ionic ermine
#

From that idea then, since it does seem to have a default attachments section for ModelAssets, would it be possible to just throw that line into an item/weapon? This is where my experience thins a bit

void wagon
#

Can I do 8 rotations for blocks? I made a surprise plush for my wife, and I want her to be able to rotate it in 45 degree increments, so 8 rotations. Or would that have to be 2 separate models where one is rotated 45 deg to start with?

near onyx
#

im no expert, but based on what ive seen in the code, for packets... theres only the 4 rotations
(on each axis)

celest rapids
#

How do I load a model from its path?
For example, how do I get the model from this path:
Blocks/Decorative_Sets/Crude/Chest_Small.blockymodel

#

I want to replace the player model to this model. But I can't figure out how to get the actual Model of that block through code.

neat pelican
celest rapids
neat pelican
neat pelican
#

The server only uses the id to tell the client to load it in this or this situation

#

Or I may be misunderstanding something

#

There is the ModelAsset.getAssetMap() if you are looking for that?

nova bronze
#

seeing my name out of context for someone else gives me whiplash I swear

neat pelican
ionic ermine
#

Anybody know if there's a way to attach an attachment through an interaction? Only seeing shears as an example, and it goes through contextual use actions, npc and harvest specifically. Would love to do it as an interaction from holding an item

celest rapids
uneven verge
#

heyy, since the new update my whole server.lang is broken in my mods..
any known issues?

celest rapids
hoary obsidian
#

hmm im having some serialization woes, I have a component with this definition

  private String handlerId;

  public String getHandlerId() { return handlerId; }
  public void setHandlerId(String id) { this.handlerId = id; }
  public static final BuilderCodec<Component> CODEC =
      BuilderCodec.builder(Component.class, Component::new)
          .append(new KeyedCodec<>("HandlerId", Codec.STRING),
                  ((data, value) -> data.handlerId = value),
                  Component::getHandlerId)
          .add()
          .build();

And am placing the component on my block via an interaction

        Component component = chunkStoreStore.ensureAndGetComponent(
            blockRef, Component.getComponentType());

        component.setHandlerId(this.handleId);

When I then use the component in my system it all works fine

But if I leave/restart the server and come back it will give me this error in my system

    Component component =
        chunk.getComponent(entityIndex, Component.getComponentType());

    assert (component != null);

    if (!component.isStateDirty())
      return;

    String handlerId = component.getHandlerId();
    if (handlerId == null || handlerId.isEmpty()) {
      Plugin.LOGGER.atSevere().log(
          "Handler not set for component on entity at index %d. Disabling it.",
          entityIndex);
      component.markClean();
      return;
    }

So I'm thinking for some reason the handler String is not being saved properly but unsure why

neat pelican
celest rapids
neat pelican
#
ModelAsset modelAsset = (ModelAsset)this.modelAssetArg.get(context);
float scale = this.scaleArg.provided(context) ? (Float)this.scaleArg.get(context) : modelAsset.generateRandomScale();
if (!this.bypassScaleLimitsFlag.provided(context)) {
    scale = MathUtil.clamp(scale, modelAsset.getMinScale(), modelAsset.getMaxScale());
}

Model model = Model.createScaledModel(modelAsset, scale);
store.putComponent(ref, ModelComponent.getComponentType(), new ModelComponent(model));
celest rapids
#

Yes but I am having difficulties understanding it.
Like, the ModelComponent thing is pretty clear, but everything before that is confusing to me.

neat pelican
#
  1. Fetch the ModelAsset from the asset map (ModelAsset.getAssetMap().getAsset(key))
  2. optional: Compute scale as necessary
  3. Create a Model from the ModelAsset and scale
  4. Create a ModelComponent and assign it to the target entity
celest rapids
#

Oh I see now, I overcomplicated myself on the scale and could't see that clearly.
Thank you, I should be able to do it now.

hoary obsidian
# hoary obsidian hmm im having some serialization woes, I have a component with this definition `...

ok figured this out so my component is fine but it's that when the chunk gets unloaded for some reason the game doesn't save it so I needed to manually mark thechunk for saving so on load it would load the most up to date state for the component

    // Mark chunk as needing to be saved after modifying component
    Vector3i position = component.getPosition();
    WorldChunk worldChunk = world.getChunkIfInMemory(
        ChunkUtil.indexChunkFromBlock(position.x, position.z));
    if (worldChunk != null) {
      worldChunk.markNeedsSaving();
    }
celest rapids
#

Oh wait, my bad, its "Furniture_Village_Chest_Small" that's why xD

#

Hmm, still return null, well I guess I got to try things until it works.

celest rapids
#

Well, I have no idea why it doesn't work. Seems like it's the key which is wrong but no idea why. Or perhaps it's the wrong AssetMap. Idk.

tribal hinge
#

lol they moved server plugins to category and took me time to find it

ionic ermine
#

How would I analyze the code behind an Interaction Type or Context?

#

I have IntelliJ Idea installed and all

wraith sleet
#

when i use set block how do i set air?

near onyx
#

"Empty" is the BlockType

wraith sleet
near onyx
#

You’re welcome 🙂

tardy vortex
#

Bro im ngl i just bought supporter cause i thought thats what it meant by verify oh well lol

#

I just wanted to be able to talk in here again

near onyx
#

oops, but also good on ya

tardy vortex
#

right? lol

near onyx
#

Simon: "Thank you"

#

if anything ive reported as issues ever gets fixed... i might bump up to supporter 😂

tardy vortex
#

Anyone know what handles the ghost blocks that spawn in when you're pasting something in creative or how i can interact with those?

#

Or even just a class related lol

near onyx
#

im going to guess theyre client side, but i could be wrong

tardy vortex
#

That would makes sense, would it not still be in the server jar though?

near onyx
#

id assume not, if its client only

tardy vortex
#

Well the server jar is the whole game other than assets if im not mistaken

#

Im probably mistaken

near onyx
#

the client (written in C#) is going to handle all the rendering.
So if its client side only, the server wouldnt need it.
(again, im just guessing)

ionic ermine
#

I'm in desperate need for somebody who can code, I promise I've done as much work as is possible of my feeble mind, and anything requested would be minimal I assure you

#

I want to create a new contextual interaction, so that it can be used to attach an attachment similar how to ContextualUseNPCInteraction does for harvesting sheep

#

The aim is to create one that isn't based on engaging with an NPC. The trigger is holding an item, and the effect is to add/remove a declared attachment from the player.

#

I found the ContextualUseNPCInteraction.class in the server.jar, and it seems like the easiest place to start for those with the knack and more than 1 week experience with java

#

It extends SimpleInstantInteraction.class, which might be easier to work from? idk

#

Rough layout, working from harvesting sheep with a shear as an example:

"HoldInteractionContext": "PossessedItem",
"HoldInteractionRequiredItems": [
"Weapon_Item_Possessed"
],
"ModelSlots": "Head", "Chest", "R/L-Forearm", etc
"ModelAttachmentEquipped": "Possession",
"ModelAttachmentUnequipped": "",

and separately, under the item itself

"Interactions": [
{
"Type": "HoldItem",
"Context": "PossessedItem"
}
]

tardy vortex
#

I'm trying to figure out how i could automate making a particle out of every single block

ionic ermine
#

Perhaps a termination criteria removing those attachments upon no longer holding the item would be wise as well.

celest rapids
#

Does anyone know what "key" this function needs?
Is there any information about that?
ModelAsset.getAssetMap().getAsset(String key)

acoustic shuttle
#

Is anyone here familiar with NPC roles?

#

I'm having an issue where if I create a role in an asset pack while the server is running, it has no problem loading the role, and hot-reloading it, but once the server restarts, it fails to load the role.

#

Well, it appears that the role loads, but it fails when an entity uses it

warped mirage
#

hii, i have a little question for me. Is it possible to import for a custom ui, different images for buttons, change it when the mouse hover it and show a custom tooltip ? (image too)

#

im a not a devlopper but anyone want to know how my ui work so i need to dev the .ui for him

hoary obsidian
ionic ermine
#

Have two different weapon models in each hand.
Or have a weapon that corrupts the arm, or has runes that travel up to the back, etc.
Multi-nodal inheritance of appearance from the held item. Currently this is only possible through equipping the item, like armor.

Best method I see for it rn is finding a way for attachments to be dynamically applied to the character through a Held-in-hand contextual interaction, and removed conditionally so that they aren't stuck permanently like that.

hoary obsidian
# ionic ermine Have two different weapon models in each hand. Or have a weapon that corrupts th...

like how daggers are in both hands? or do you mean how the game has an off hand? it should be possible to just swap the model if the first for the second unsure how that would work

Or have a weapon that corrupts the arm, or has runes that travel up to the back, etc.
Multi-nodal inheritance of appearance from the held item. Currently this is only possible through equipping the item, like armor.

Best method I see for it rn is finding a way for attachments to be dynamically applied to the character through a Held-in-hand contextual interaction, and removed conditionally so that they aren't stuck permanently like that.

I'm not exactly sure what this means but sounds like an animation?

Also what do you mean by attachment?

ionic ermine
#

Sheep wool works as an attachment, as do varieties in goblin armour/weapons, etc.
Sheep wool is removed through an ContextualUseNPCInteraction called HarvestInteractionContext, meaning you are able to "use" the sheep within the right context (having shears) and remove the attachment.
I want to do the opposite, and have holding a particular weapon in the right hand attach an item as an attachment in the left hand.
This will allow dual-wielding without having to rely on the mirror method with Render Dual-Wielded, and allow for holding something in the hand to cause other appearance changes on the body

#

A model is able to have multiple attachment sites by naming bones in the folder structure in blockbench, and this accurately reflects when importing attachments to animate on the player model in blockbench. However, in game, items that are held in hand on the hotbar do not care about folder structure beyond the hand holding the item, and cannot divide between the L and R hands each. There can only be one parent.

So the idea is to compromise, and have a weapon that has the model for the R hand weapon, and an interaction in the json that calls for the other model weapon to be attached as an attachment to the L-hand. (To keep two-handed restrictions, ticking the Compatible box takes care of that in the Asset Editor).

sly onyx
#

is there a vanilla way to visualize a collision/hit box of a entity ?

ionic ermine
#

I saw a plugin on blockbench that apparently allows for it, maybe check hytale plugins there

knotty vigil
#

How are ya'll creating void worlds?

UUID uuid = UUID.randomUUID();
Path path = Path.of("worlds", uuid.toString());
        
WorldConfig worldConfig = new WorldConfig();
worldConfig.setPvpEnabled(false);
        
World createdWorld = Universe.get().makeWorld(uuid.toString(), path, worldConfig).get();

I tried this, I got nothing...

#

Wait... I found IWorldGenProvider

near onyx
fringe harness
#

Question, has anyones whitelists been funky or not worked? noticing a empty whitelist despite being able to add people to one

#

can a whitelist be corrupted?

knotty vigil
#
[2026/02/23 06:34:57   INFO] [World|51b26f06-0cf6-4787-8d2d-4a4708106e66] Loading world '51b26f06-0cf6-4787-8d2d-4a4708106e66' with generator type: 'dev.swiss.worldgen.VoidWorldProvider@3a74488a' and chunk storage: 'DefaultChunkStorageProvider{DEFAULT=IndexedStorageChunkStorageProvider{}}'...
[2026/02/23 06:34:57   INFO] [World|51b26f06-0cf6-4787-8d2d-4a4708106e66] Added world '51b26f06-0cf6-4787-8d2d-4a4708106e66' - Seed: 1771828497338, GameTime: 0001-01-01T05:30:00Z
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                           [SOUT] [SpawnGrid] Loaded block: Rock_Stone_Brick -> ID 928
[2026/02/23 06:34:57   INFO]                     [Universe|P] Removing world exceptionally: 51b26f06-0cf6-4787-8d2d-4a4708106e66
[2026/02/23 06:34:57   INFO] [World|51b26f06-0cf6-4787-8d2d-4a4708106e66] Removing individual world: 51b26f06-0cf6-4787-8d2d-4a4708106e66

Could someone help me out with generating a void world with a predefined prefab?

tawdry geode
#

How do you currently spawn in the prefab

acoustic shuttle
#

Does anyone know why the NPC is using the run animation while it's moving towards its target?

{
  "Type": "Generic",
  "Appearance": "Player",
  "MotionControllerList": [
    {
      "Type": "Walk"
    }
  ],
  "MaxHealth": {
    "Compute": "MaxHealth"
  },
  "Parameters": {
    "MaxHealth": {
      "Value": 100,
      "Description": "Max health for the NPC"
    }
  },
  "KnockbackScale": 0.5,
  "Instructions": [
    {
      "Sensor": {
        "Type": "Target"
      },
      "HeadMotion": {
        "Type": "Watch"
      },
      "BodyMotion": {
        "Type": "Seek",
        "StopDistance": 1.5,
        "SlowDownDistance": 4.0,
        "AbortDistance": 200.0,
        "UsePathfinder": true
      }
    }
  ],
  "NameTranslationKey": "Citizen"
}```
knotty vigil
# tawdry geode How do you currently spawn in the prefab
for (SpawnPrefab.BlockEntry entry : spawnPrefab.blocks) {

                if (entry.blockId == Integer.MIN_VALUE) continue;

                int worldX = spawnPrefab.origin.x + entry.x;
                int worldY = spawnPrefab.origin.y + entry.y + 1; // raise prefab above floor
                int worldZ = spawnPrefab.origin.z + entry.z;

                if (worldX < chunkMinX || worldX > chunkMaxX || worldZ < chunkMinZ || worldZ > chunkMaxZ) continue;

                int localX = worldX - chunkMinX;
                int localZ = worldZ - chunkMinZ;

                blockChunk.setBlock(localX, worldY, localZ, entry.blockId, 0, 0);
            }
tawdry geode
#

Thats over my head sorry, i thought first it might be a prefab floor issue but idk

tawdry geode
acoustic shuttle
#

Never mind, figured it out!

sterile forum
#

What was the issue?

tawdry geode
sterile forum
#

SMURF!

acoustic shuttle
#

BodyMotion has a configurable "RelativeSpeed". By default, this is set to "1", which is fast enough for the run animation. Lowering it to "0.5" slowed the speed which resulted in it not using the running animation. It's just strange that it ignored my Run Threshold. According to the description, the run animation should never be triggered if the run threshold set to "1", which I did.

tawdry geode
#

i saw a tutorial where someone made an npc frozen in place but still walk it looked funny

stark holly
dark heart
#

how do u make sure asset1 will load first before asset2

sterile forum
maiden socket
sterile forum
#

did you change from the hytale default package to your mod package?

tawdry geode
#

yea this seems like being in Hytale:hytale (read only) on the top left, switch that to your pack

twilit talon
#

gm

hasty falcon
maiden socket
worldly cave
#

is it possible to like rename an item like how in minecraft u can use Anvil to rename item?

tawdry geode
#

only a specific item or the entire item (like the base name can be changed from e.g. "adamantite pickaxe" to "shiny rock pickaxe" using asset pack)

worldly cave
#

through code

tawdry geode
#

i dont think such a mechanic is in vanilla rn, but should be quite easy to mod in

#

idk about vanilla that much barely played

worldly cave
#

yeah i am trying to make a plugin where u can rename items but not even sure if its possible

sterile forum
#

there is a nameplate component, that is used for monsters and players and some other things that need names.
You could probably add that component and add events to update the displayed named based on that somehow.

tawdry geode
#

yea either that or work with some custom component, i saw someone work on an mmorpg server and had like stat buff runes being able to be applied to an item and it would list all of them

sterile forum
#

Or you could make your own component. since the names would probably need to be stored with the item in someway for restarts etc.

#

that way there is not risk of crossing over or replace a nameplate that something might need logic wise.

tawdry geode
#

yea probably easiest to make like a CustomName component. You can probably play around with that and make other methods that even change CustomName to something like [Lvl 4] Adamantite Pickaxe or similar

worldly cave
#

bet ill look into it

tawdry geode
#

just by being able to call CustomName with "[" + levelInt + "] " + itemName

sterile forum
#

I can now list all active entities in my custom ui page and get a list all their components when clicked, next up is being able to click the component and see specific data in it.

tawdry geode
#

idk if you saw but i got my decay block system working, i will in a week or so try myself with npcs and try to make one that changes the blocks in walks on

sterile forum
#

Cool. Once i get this up and running, I will add my StoreFront and LivingSpace Block Components, and start working On my Travelling NPCs

tawdry geode
#

i dont wanna get into UI yet as they said they wanna change that system

#

so i would rather do some basic systems in java like currencies/stats/custom weapon assets and similar

worldly cave
#

how is the UI system changing and is it gonna be drastic? I have made so much UI already 😭

tawdry geode
#

my next project is a DamageLeaderboard component that can be used to track dmg in group fights and be exported to use in loottables and similar

sterile forum
tawdry geode
lofty obsidian
#

I would like some help regarding double chests.

I’m trying to retrieve the PlacedByInteractionComponent from a chest to know who placed it.
It works fine with a single chest, but with a double chest I’m unable to retrieve this component.

So I’m wondering: is this normal? Is my base approach correct?

Thank you for your help.

worldly cave
#

it is possible to rename items just made it :)

sterile forum
sterile forum
#

Right, you can do so much with the metadata without needing to modify the base object.

worldly cave
#

yeah its peak

distant rapids
#

Hey everyone! 👋

Is it currently possible to have a separate log file per plugin, instead of everything being mixed into the main server log? If not, is it something that's planned for a future update?

It would be really useful for debugging — especially when running multiple plugins at once. 🙏

Thanks!

maiden socket
distant rapids
tawdry geode
tribal patrol
#

most plugins by default have the plugin name near the start of the log, so that should help, particularly for filtering as mentioned above ^
nothing is stopping a particular plugin creating their own log file though

tawdry geode
#

like log entire chat from player x in "playerX.txt" and every new message just gets put in there

maiden socket
slender crater
#

Is there a sales mod that allows you to add sales bonuses based on group/permission?

tawdry geode
#

sales as in shop system or different

slender crater
distant rapids
#

That's really helpful, thanks everyone! 😊

What I'm actually looking for is separating my plugin's own logs and events from the main server log — I think it would make it much easier to track and trace bugs specific to my plugins, rather than having to dig through the entire server log each time.

The idea of writing to a dedicated file directly from the plugin sounds like the way to go then! I'll look into implementing that on my side.

sterile forum
#

There is the ability to do
public static final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
Just saying.

tawdry geode
#

that still sends it to the console log

#

i think what it does is it puts the [Filename] prefix

distant rapids
#

👍

sterile forum
#

talking about logs. Anyone have any clues about sentry, since there is implemented support for it.

tawdry geode
# slender crater shop system

there might be an extension of the bartering shop system, but most people i know work on server shops/upgrade uis etc that take items or custom currency are still in the working or concept stage rn

ruby arrow
#

Is it possible to somehow remove the block animation using a custom block component?

zealous elm
#

Hey, quick API question.
I noticed Entity#getUuid() is marked @Deprecated(forRemoval = true) in the current server jar.
Is there a planned replacement for accessing a player’s UUID in PlayerReadyEvent, or is this just part of an internal identity refactor?
Just want to future-proof my plugin.

tardy tree
#

anyone can help with why i can't see all mod directories in my asset editor?

#

just got a mod and the dev mentioned i should be able to customise things through the asset editor, but i dont see it as a pack to be selected

maiden galleon
#
ref.getStore().getComponent(ref, UUIDComponent.getComponentType()).getUuid();```
Will probably last longer than getUuid() Ardent.
zealous elm
maiden galleon
tawdry geode
neat pelican
#

I think both. Eventually, most things will get replaced by Noesis, but that's still some way out. If you want to interact with UI now, don't wait on future updates

nova bronze
#

i would stick to their philosophy, you can make something that works in the meantime and come back to it later once things are more finalized

maiden galleon
#

Exactly what Dani said.
Besides as a dev there's knowledge to be gained from UIs in general. The ideas come back.

neat pelican
#

Also, when it comes to overhaul your UI for Noesis, having an existing UI to act as a goal/guide will make it easier than starting from scratch at that point.

tawdry geode
#

Okay ty

robust yoke
#

Does anyone ever tried to handle Model transformation in a plugin?

shy narwhal
#

Have anyone tried to determine if a server is working as intended programmatically?

#

Basically, my VPS lost connection to the internet for a while today - but the instance never actually shut down and now when I try to join all it says is "Failed to obtain authorization grant from session service" - but how can I make the server aware of this problem and trigger an automatic restart?

#

Like can I connect to the server via sockets and get some kind of "a-ok" response?

#

I do have some plugin installed already that tells server listing websites whether the server is online, but it simply considers the server to be in working condition although its really not

ruby arrow
#

Is it possible to somehow remove the block animation using a custom block component?

white crest
#
Error saving prefab test.prefab.json: Cannot invoke 
"com.hypixel.hytale.server.core.asset.type.fluid.Fluid.getId()" 
because the return value of 
"com.hypixel.hytale.assetstore.map.IndexedLookupTableAssetMap.getAsset(int)" is null

Has anyone ever gotten this error?

burnt eagle
#

Which event can I use to save a player’s inventory when they leave the server?
In the onDisconnect event, I can’t access the inventory anymore. 😭

vagrant blade
#

Can I run multiple clients for testing?

neat pelican
#

Not yet, but that will be possible in the next update

onyx atlas
#

Is it possible to open a custom UI with the user inventory?

cyan hare
neat pelican
cedar root
#

Hey i was curious but, is there concept of keys / lock door in hytale yet? I wanted to practice some coding and do some plugin and was wondering if it existed already?

ruby arrow
#

It is possible to assign, for example, two animations to a single block and manipulate them using a plugin and play them at specific moments during code execution.

neat pelican
#

Yes. For example chest open & close animations

fossil adder
#

Can I run the server on TCP?

sterile forum
nova bronze
#

no?

#

like maybe but like in the sense you can do a lot of things if you really put your mind to it

heady locust
#

Is there a way to send an image in chat?

cyan garden
heady locust
#

Is there any way to override Client UIs? like the Chat.ui and Hotbar.ui?

half heart
#

yo is the asset editor fixed in the pre-release/update 4? if your unaware it currenlty (as of update 3) cant view Plugin assets

terse citrus
#

In case you were wondering... I got a gameboy emulator working using the map. Hypixel_HeartEyes

tardy vortex
#

Anyone know if its even possible to spawn the ghost blocks that are used in the builder tools?

#

Ive searched like everything i can think of and cant find a thing to help me

#

someone told me that they might just be client sided and the server doesnt even see them, if thats the case @lilac notch 😉

craggy geyser
#

Whats the most efficient way to reset a world when like a minigame round ends? Preferably without Server-Restart? I cant have a normal survival map, so I think just deleting the whole universe isnt an option, it should load my arena template.

I was thinking about removing all from the specific world and copying the file contents from a folder and then teleport everyone back into it.

Is there a better approach? Would mine even work? Hope someone that has something like that already could help me :D

brave mural
#

BTW, any recommendations where to advertise for my server ? Are there like good website you guys would recommend or discords ?

tawdry geode
tawdry geode
craggy geyser
sterile forum
tawdry geode
#

hytalemodding wiki under World and Entities -> Instance System would be the passage for you

brave mural
#

since there already are /instance commands

craggy geyser
#

thank you anyway

brave mural
#

Thats good!

#

If thats enough of course 🙂

torpid radish
#

Hey, is there a way to easily make your mods install to the server and write themselves into the config.json so they are active?
It's rather annoying to have to copy/remove them each time i change something, let alone the need to adapt the .json every time

brave mural
torpid radish
brave mural
# torpid radish and where would i need to find that information?

Thats in your Main Plugin Entry point

public class Main extends JavaPlugin {
  public final Config<PluginConfig> Config;

  public Main(@Nonnull JavaPluginInit init) {
    super(init);
    this.Config = this.withConfig("Plugin-Config", PluginConfig.CODEC);
  }

  @Override
  protected void setup() {
      super.setup();
      this.Config.save();
  }
}

torpid radish
#

okay, i admit, i have not the slightest clue what or where that is, how to find my own class/data type and where to put it.
my server knowledge is from 15 years ago setting up an ark server that basically did everything itself.
Kindly help me out? @brave mural

sterile forum
#

What you are talking about that you are not making your own mods, you just want to be able to configure existing one without source access?

brave mural
#

I assume you have your own Plugin that you are developing. If Yes - Watch this guy: TroubleDev - Hytale Dev Tutorials on youtube

#

If Not and you are playing around with other peoples plugin, then there is not much you can do besides praying that they have a command that lets you update the config while ingame

warm heart
#

Does anyone know if its Possible to load custom Fonts in hytale or u can just use the default one?

torpid radish
# sterile forum What you are talking about that you are not making your own mods, you just want ...

i have the issue that my non-.jar based mods aren't loading on my server that i set up.
all .jar mods get loaded no issues.
i figured out that it can be fixed by this method:
Same Issue, but i have found a rather wierd fix for it. Apperently in the Server Config is written wich mods are active. Now since you would need to write them out by your self i recommend to create a world with all mods active you want (wich is kinda annyoing considering you add more mods afterwards). Go into the Save faile located at "C:\Users\<YourUser>\AppData\Roaming\Hytale\UserData\Saves\<YourWorldName>. Open the config file and copy the "mods section" which could look like this and paste it in your server config:
This seems rather a workaround than a long term solution

sterile forum
#

but there are probably third party tools that help with server maintaintance and setup but i have no idea what they are.

celest rapids
#

Hello again, does anyone know what I should put in that function?
I tried a lot of block names and it always return "null", is there a specific key format?

ModelAsset.getAssetMap().getAsset(String key)

I am stuck on this since monday.

unreal dust
#

Is there any plugin letting saplings drop from trees that hasn't broken last update and hasn't been abandoned?

#

ik Serilium tree harvest still works, but he isn't maintaining his mods at all, just did the version bump, no bug fixes, etc... I really dodge mods with no maintenance is asking for problems if you want a lasting world save.

#

too many mods being abbandoned, even if they work just to see modders not even bothering with the version bump is depressing tbh

rough magnet
#

Well, how about you just do the version bump?

neat pelican
#

No wait, .keys() instead of .values()

floral rune
#

Hi, Is there a way to store information linked with no game object ? Just linked to a server (any world)

sterile forum
#

Its essentially asking, is there a way to save and load data with java without using hytale.
People have done it before.

#

or for anyworld

#

ignore the uuid and just save a file for data persistance and create a singleton class for the data or what ever its supposed to manage.
Or a plugin that does the same.

celest rapids
neat pelican
sterile forum
#

I mean the plugin can store config info given in a earlier example the plugin config could at a streach hold the server information if one does not even want to make another data object to hold the information.

maiden socket
sterile forum
#

"IncludesAssetPack": true,

maiden socket
#

yes, the mods contain asset packs, (manifest contains "IncludesAssetPack: true") and the items and blocks are also valid and useable inside the game. it's just the asset editor won't show the (read-only) asset packs

celest rapids
neat pelican
#

That's where I would look on first glance

sterile forum
#

also look if there are any events that set that value, in that case you can register your own system with event listeners to just see what data you get in.

#

I have a question.
Can you set breakpoints in the server jar you depend on and hit those in debug? Or are you limited to your functions in your source?

#

in C# i know you need to activly browse into the dependency and add the breakpoints in there unless the project have straight source access.

tawdry geode
#

I would never call entitiystore with blocktype

neat pelican
sterile forum
#

nice, good to know for the future.

celest rapids
#

I still don't know how to get a block model from code, but yeah that's still progress.

sterile forum
#

I thought it looked like the id might just be the modelfile name when going trough some codec nesting and where it got the id in some places.
But the reality might be that any class may store the asset id as it please and then the context defines how to load it again.

The assetid seems to be more of a look up for a value that will be used in later systems. But i am not sure.

fossil adder
celest rapids
#

Hmm, I really don't know how to do then.
Getting a block model should't be that complex I am pretty sure, but without any documentation it gets really tricky to find the intended solution.

sterile forum
celest rapids
#

But this seem to be especifically for the coop?

sterile forum
#

no it especially for the BlockEntity

#

My understand is that the assetmap will in majority of cases be a reflection of the json file, so the id is often the name of the json file it loaded from.
models in turn are also assets and also json files. (assets all the way down...)

#

in that json file and asset map in turn it referens to
"BlockType": {
"Material": "Solid",
"DrawType": "Model",
"Opacity": "Transparent",
"CustomModel": "Blocks/Farming/ChickenCoop.blockymodel",

#

where the asset for the coops block type specify what model to use instead of the default block model.

celest rapids
#

Yeah I check the structure, and actually I would want to get the Model that the "CustomModel" is pointing at.

sterile forum
#

So then you could query the blocks entitystore for the BlockType component and get the CustomModel value.

#

hmm maybe not

#

ignore me for a while i forget that blocks sometimes do things a bit differently.

#

as long as you have a entity store you can allways try to get the component with componentype ModelComponent.getComponentType()

#

the thing is if you have a "pure" block i am not sure if it got a model without custommodel being set, since at least I would generate the mesh for the chunk in code and not hold a block type. And the block type i would hold would be a default cube with texture overrides for the inventory.

#

I should stop talking like i know anything.

fossil adder
#

I’m running a Hytale server for the Russian community. Many ISPs in Russia currently block or restrict QUIC (UDP traffic), which prevents players from connecting to servers that use QUIC transport.

I’m starting the server with the --transport TCP flag, expecting it to fully switch to TCP. However, players in Russia still cannot connect. It seems like the server may still rely on QUIC/UDP in some way, even when TCP transport is enabled.

Has anyone experienced this issue or found a working solution to force pure TCP mode?

I would really appreciate any help or guidance. Thanks!

atomic zinc
#

Has anyone figured out how to apply speed boosts to entities?

tawdry geode
#

i now rewrote my lootcrate function to be used in item interactions, now I got myself loot crates into the game. It uses an axe texture so far because i needed a placeholder but it feels so cool alr

nova bronze
night igloo
#

Hello !
How do you read the plant harvest information inside a Hytale plugin?
Are you accessing it through an event listener, a specific API method, or custom data attached to the crop block?

sterile forum
night igloo
#

Which event do you use to detect plant harvesting in the Hytale plugin?

sterile forum
#

Think its one of the interaction events for when you harvest.

#

Searching on harvest quickly for instance give a hit for "HarvestCropInteraction"

lunar schooner
#

Where can i find the file thats called from this block of code,

{
          "Type": "OpenCustomUI",
          "Page": {
            "Id": "ItemRepair",
            "RepairPenalty": 0.1
          }
        }

im trying to find "ItemRepair" as i wanna make it so you keep the item, but i cant find the code used in any of the folders and its driving me up the wall trying to find it

sly onyx
#

how can i get the server version?

neat pelican
# sly onyx how can i get the server version?
  • In the bottom-left corner of your launcher
  • At the start of your server log at Booting up HytaleServer - Version: xxxx.xx.xx-xxxxxxxxx
  • Via the /version command
  • With java -jar HytaleServer.jar --version
sly onyx
#

thank you

lunar schooner
#

how do i make it so when i use a repair kit it does not consume it? im trying to make a "legendary repair kit" for my server, and i cant seam to find where it says it consumes it

sterile forum
lunar schooner
sterile forum
#

RepairItemInteraction in HytaleServer.jar

#

com.hypixel.hytale.server.core.entity.entities.player.pages.itemrepair

lunar schooner
#

willing to learn today if thats the case haha

sterile forum
#

Well you are asking in the java plugin channel so I assume you wanted a java plugin answer.

lunar schooner
#

is there a way to do it threw json? if not i can go learn java, i did learn lua

neat pelican
#

I doubt you'll find an ItemRepairInteraction that doesn't remove the repair item by default

#

In any case, you'll have to look at the code

sullen marlin
lunar schooner
sterile forum
#

If I would make a legendary repair kit i would focus on it not decreasing durability as much to begin with.
but i don't think thats exposed either.

ocean swallow
#

hi guys

fresh niche
#

HI

sterile forum
#

I'm off. D&D time.

lunar schooner
neat pelican
ocean swallow
#

in the interaction json files, is it possible to check for keyboard input? i want to make an interaction that checks for left and right movement keys

sullen marlin
ocean swallow
lunar schooner
sullen marlin
lunar schooner
#

how do i edit a class file? as VSC does not support it lol

sullen marlin
#

i thought you wanna edit a ui file?

lunar schooner
neat pelican
ocean swallow
lunar schooner
ocean swallow
#

i imagine there would be some object type, but i'm not sure what it would be

wraith pecan
#

btw after the auth login, does the server already work or do I have to do something else? I downloaded the file and did the auth. but I cant really change the port, or atleast I dont know how

neat pelican
wraith pecan
#

first hytale downloader.exe and then I started the start.bat file, which downloaded the HytaleServer.jar

sterile forum
lunar schooner
#

o java is just like lua but more complex i can read it though 😄 was finally able to decompress the class file 😄

neat pelican
wraith pecan
neat pelican
#

java -jar HytaleServer.jar --bind <address>:<port>

ocean swallow
wraith pecan
neat pelican
wraith pecan
#

cmd.exe

neat pelican
#

I don't understand your question

wraith pecan
#

I tried to put it in the console and it tells me the command doesnt exist

sterile forum
#

There is a great difference between executing a lua script and compiling java.

#

go read the hytalemodding dev documentations on how to create a plugin project.

neat pelican
wraith pecan
neat pelican
#

If you use a start.bat file to start your server, then yes

wraith pecan
neat pelican
#

maybe ask the person who made it for you if you're having trouble with it

lunar schooner
#

so i got JD-GUI but when i try to open the file it does nothing anyone else here use JD-GUI

wraith pecan
#

okay now I got a new error xd
"Connection handshake was canceled due to the configured timeout of 00:00:10 seconds elapsing."

#

where can I configure that...

neat pelican
sick ridge
#

why my sevrer is not detecting my new prefabs?

lunar schooner
sick ridge
#

i restart it but it only detects the old ones

lunar schooner
sick ridge
#

oh im trolling it had a space in between the name and the dot

wraith pecan
lunar schooner
#

i cant get any of the decompiler programs to work and im about to put a hammer threw my pc

prisma wadi
#

So I used to be able to override files in my mod, but now after updating, it doesn't appear in the asset editor anymore. The mod still functions, its just the asset editor it seems. Has anyone else had this issue?

sterile forum
lunar schooner
#

like right now im using a decompresser for VSC but i cant edit a thing in it

heady locust
#

Does anyone know how I can run multiple instances of hytale at the same time for testing purposes?

neat pelican
#

for now you'd have to use a vm for each isntance

sterile forum
lunar schooner
#

im not liking Modding by Kaupenjoe

stark holly
# sterile forum using intellij you can just browse into the jar. With for instance kaupenjoes pl...

KaupenJoe said he isnt updating his anymore But as an alternative i would suggest just getting the plugin straight from intellij's plugins list called Hytale Modding by HyContent. it auto decompiles the jar AND it has everything built into it upon creating a mod to run a server right inside intelliJ so you dont have to move mods into folders and mess with a bunch of things you just hit start server then in game you connect to "localHost"

wraith sleet
#

when using on the map right click teleport (feature after update) people get disconnected saying with the disconnect message: "You are not allowed to use TeleportToWorldMapMarker!" anyone has the same issue?

#

but they have hytale.command.teleport.all

neat pelican
#

is that what the code asserts?

wraith sleet
#

whats the permission for teleporting to via map in creative/op?

cyan garden
sick ridge
#

how can i execute an interaction when a block breaks?

lunar schooner
#

Asset Editor Question : When i make a .json of another mods item to give it a different rarity and tooltip gui but when the server restarts it converts them back to the original item from the other mods, is there a way to get my asset to override theres?

Or would i have to manually need to go in and edit there files

neat pelican
wraith sleet
neat pelican
#

sorry, didn't intend to throw shade

lunar schooner
neat pelican
#

the mod that loads last overrides the mod that loads first

#

you can try adding them as an optional dependency. I suspect that will guarantee load order

lunar schooner
neat pelican
lunar schooner
# neat pelican yep, exactly

where it says OptionalDependencies do i just put true in the brackets or do i need to write all the mods names?

void wagon
#

I'm going to guess it is not at all possible to modify builtin plugins? I was looking at modifying how residents spawn from coops. Them spawning in a radius is kind of icky as it means you need at least 2 blocks behind the coop itself to prevent them from spawning outside of said fenced area.

neat pelican
lunar schooner
neat pelican
#
  "Dependencies": {
    "Hytale:OtherPlugin": ">=1.0.0"
  },
  "OptionalDependencies": {
    "Hytale:SomeOptional": "*"
  },

Not 100% sure on the >= syntax

neat pelican
lunar schooner
neat pelican
#

yes

lunar schooner
#

okay cool thank you!

void wagon
sick ridge
#

Hello, i need help idk how to get this 3 T_T


        if (chunkRef == null)
            return;

        ComponentAccessor<EntityStore> entityAccessor =
                commandBuffer.getEntityAccessor();

        ComponentAccessor<ChunkStore> chunkAccessor =
                commandBuffer.getChunkAccessor();```
sick ridge
#

oh yep, i need them to place them in the naturallyRemoveBlock funct so i can remove a block

neat pelican
#

I don't understand what you're asking, what you're trying to do, and what you have already tried

sick ridge
#

I’m trying to simulate a special block that, when broken, destroys a 3×3×3 area around it using the normal mining/loot via BlockHarvestUtils.naturallyRemoveBlock(), but inside BreakBlockEvent I don’t know how to obtain the required Ref<ChunkStore>, ComponentAccessor<EntityStore>, and ComponentAccessor<ChunkStore>

tardy vortex
neat pelican
ruby arrow
#

Is it possible to add some kind of custom interaction after clicking a button?

sterile forum
# tardy vortex not much

Ah sorry, someone talked about i was sure it was a thing. But ok, you can set a block types material to be Transparent. So its probably done that way some how.
It all falls under block preview visability i am not sure if the build tool display is the same i realize. Sorry.

tardy vortex
tardy vortex
balmy terrace
#

Ok so I’m pretty new to modding and I’m attempting to create a pet NPC. I’ve created custom animations for it but after I’ve set up the model and the NPC behavior I wanted it just sits there stuck in its idle.

balmy terrace
#

Oh I did not I’ll take a look at this thank you

unborn nebula
lunar schooner
#

anyone know if theres a load order mod?

unborn nebula
neat pelican
crude apex
#

interesting
is that because its not filtered or are you bypassing somehow?

neat pelican
#

no, because those official guides are so often recommended. I felt bad about bypassing them every time and asked them to add it to the whitelist

crude apex
#

ah alright
thats kinda neat

hexed valley
#

Hytale is not giving 🙁

inline fun<T: CancellableEcsEvent> cancelledEcsEventListener(clazz: Class<T>, query: Query<EntityStore> = Archetype.empty()): EntityEventSystem<EntityStore, T> {
    return object: EntityEventSystem<EntityStore, T>(clazz) {
        override fun handle(
            index: Int,
            chunk: ArchetypeChunk<EntityStore>,
            store: Store<EntityStore>,
            commandBuffer: CommandBuffer<EntityStore>,
            event: T
        ) {
            event.isCancelled = true
        }

        override fun getQuery(): Query<EntityStore> = query
    }
}
java.lang.IllegalArgumentException: System of type net.pseudow.minecraft.hub.listeners.protection.CancelledEcsEventListenerKt$cancelledEcsEventListener$1 is already registered!
crude apex
#

now we just need that for the wiki
at least we can bypass it

neat pelican
hexed valley
neat pelican
#

oh I see

remote chasm
#

you're basically adding the same class, since it gets optimized by the compiler most likely

hexed valley
#

because in the context it seems it(s useless to have an inline keyword

hexed valley
#

Any idea why event fires, but not cancelled when picking up flowers for instance?

class InteractivelyPickupItemListener: EntityEventSystem<EntityStore, InteractivelyPickupItemEvent>(InteractivelyPickupItemEvent::class.java) {
    override fun handle(
        index: Int,
        chunk: ArchetypeChunk<EntityStore>,
        store: Store<EntityStore>,
        commandBuffer: CommandBuffer<EntityStore>,
        event: InteractivelyPickupItemEvent
    ) {
        println("HSUIAJUISOA")
        event.isCancelled = true
        event.itemStack = ItemStack.EMPTY
    }

    override fun getQuery(): Query<EntityStore> = Archetype.empty()
}

version: "0.7.2-alpha"

neat pelican
hexed valley
sterile forum
#

Is the field example i find for the ui deprecated because the ui is changing or because you are supposed to declare it in a different way.

.addField( new KeyedCodec<>("NODE_EXPAND", Codec.BOOLEAN),

or because there is another you are supposed to use that i don't find a good example for?

#

Ok i could chain add().append( ...) instead of using pure addfield.
Will check tomorrow if it works.

zealous nova
#

I've got a UI related question. Are we able to create responsively sized ui elements? For example, creating a page that is 50% the width of the player's screens.

If not, how is everyone accommodating different player screen sizes? my current approach is to just make it work for 1080p for now

sterile forum
#

you have a flex value you can set for elements, where the size flexed will be the remainder of the parent size, and the values from all flexible elements are divided.
so if two have flex 1 and one flex 2, then then flex 2 will be as large as the two ones in the remaining space.
so if the width was 400, you had something width 200 then two object with flexwidth 1 and one with flexwidth 2, then the flex width 2 would be 100 of the remaing and the flexwidth 1s would be 50 wide each

I am not sure if you can just set the the default page to have a flex size, because then that would be relative to the screen.

#

I am kinda sure the new ui system with xaml will use roughly the same.

#

but the best would be if you could make a flex width/height for the the page and just state it in fractions. Like make a page cover 0.8 width and 0.9 height.

heady locust
#

How do I add new Instances?

zealous nova
lunar schooner
#

is there a way for me to get my json file to overwrite someone elses? for example.

Warp book mod, i want to add my own custom quality level to it, and when i make the changes in my own folder it works till the server resets, i was wondering is there a way to get it to retain during the reset? as i cant seam to find a way to get the mod to load last

#

iv also noticed that my asset pack is not loading in as a plugin..

stark holly
lunar schooner
stark holly
lunar schooner
stark holly
#

i get that but capitalization is not always "Yelling" go beat up your teacher for pounding that into your head if thats what you still believe in this day and age not me lol i dont know anyone who Yells the word LOL instead of laughing.

lunar schooner
stark holly
#

OH

lunar schooner
stark holly
#

a thought maybe its alphabetical by the mainfests main name

lunar schooner
#

i could try that didnt think to look in there

stark holly
#

"Main": "com.oregenlib.OreGenLibraryPlugin", so instead of that try something like "Main": "zzz.oregenlib.OreGenLibraryPlugin", or "Main": "aaa.oregenlib.OreGenLibraryPlugin",

lunar schooner
#

its also a asset pack so it loads before all the plugins do, maybe i just cant overwrite other peoples mods >.<

#

can i turn it into a plugin? iv never made a .jar file before