#server-plugins-read-only
1 messages · Page 114 of 1
actually it used to not be, funnily enough
then one version, they started changing every update
and ever since, using integer block ids will break your software every version
Not really?
If I have a block ID (for the core elements, minus wools really) from Classic, it maps the exact same (I would know because ive made kinda garb classic map loaders for modern MC, the IDs map almost 1-1)
yes, but the block ids have shifted lol
they are broadly in the same order though
either way, I would seriously suggest looking up block ids, caching the results as an integer, and just using that
If they did then the IDs wouldnt line up almost 1-1, as said, the only issue loading a classic level is quite litterally the wool, everything else has been the same for over 15 years.
do you mean from region formats?
Just the raw TILE ID, not properties, not subtypes
for instance, stone has ALWAYS been id #1, though other stone types would be subtypes of id #1.
thats correct, but what about 1.13
I made my loader for 1.21.
Though I dont know if the servers deal with IDs different than clients
1.13 changed a huge amount of block ids lol, just not the super low ones
actually if you go up like, 3 from stone, you wouldve hit a "wrong" block id
Okay?
Im not talking about blocks past classic LOL
And as said, I am aware of shifts given WOOL has shifted a ton.
If that's the case, my worlds wouldn't have loaded without issue, but anyway this is off topic.
if your reading them from a reigon file, then that wouldnt matter
reigon files do not store numerical ids for blocks
how would one even turn a string into a block ID
by looking it up via the registry that stores block names
And how would I do that
yeah im looking for the answer lol
com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType.getAssetMap().getAsset("hytale:stone").getBlockId()
assuming this doc site is correct
No candidates found for method call com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType.getAssetMap().getAsset("hytale:stone").getBlockId().
also "hytale:stone"???
In creative it says "Rock_Stone"
depending on the source of the docs, they may have looked at AI generated stuff. most of them are
where the hell are the docs for this game anyway???
for the Java API???
Unless the docs are in some plugin i can install or smth for Intelli
hytalemodding dot dev & decompiled server jar
honestly I always forget what ones are ai generated, they all look about the same
Definitely AI generated for hytale:stone. However, I use hytale as the mod identifier in GriefDefender. Hytale should be introducing this concept into its id's too...
so for your case, just pass Rock_Stone
public static int getBlock(String ID) {
int mtl = BlockType.getBlockIdOrUnknown(ID, "", 0);
return mtl;
}
or create your own sane registry like I do 🙂
anyone experience with replaceComponent on block/item entities?
when I replaceComponent after the entity is already spawned it does not update the entity.
if I disconnect and quickly reconnect the change is applied
if I disconnect and wait for some time the (they get a new Ref) and the change is NOT applied when I reconnect
does anyone know how to print a list of components on an entity so we can figure out how they are made?
Can i get someone to help me test my minigame scoreboard system rq?
-# Copied from the #discussion channel, but no one answered, figured I'd give this channel a shot
Can anyone tell me how to point the "Appearance" key of the of an NPCRole to the model? I keep getting: /Server/NPC/Roles/my_npc.json: java.lang.IllegalStateException: The model with the name "my_npc" does not exist for attribute "Appearance"
I have the .blockymodel and .png in Server/NPC/my_npc/
I have the my_npc.json in Server/ModelAsset
I have the my_npc.json in Server/NPC/Roles
I think it needs to be in a common folder as well.
Which does? or all of it?
Well for mine I have modname/common/NPC/factionname/model/(files here)
I watched @fading walrus on YouTube, though the asset editor didnt find my file contents until I put the /model inside /common and restarted the entire launcher and everything. Sorry im not much more help than that rn
Hmmm. I wonder of "factionname" is relevant :/
Well mine for instance was "undead"
Thats how shadowknight is referenced in the hytale files, so i kept that to make an edited version.
what do you need?
Hmm okay, thanks!
does anyone know how to limit certain item types for custom container blocks?
hey does anyone know which component is the item quality particle called? whenever a high quality item drop is floating in the world that colorful particle that displays on it
white, green, blue, etc
I get this person on mine as well, constantly trying to connect
Do you guys wanna try out a survival server with some features on it? Like veinminer for everyone for example. Pie clicker. Voice chat. Claiming and parties? Its evolving too
hytale is kinda addictive ngl,every single day i want to play it, i cant get enough
Are you preaching to the choir
important question, when i place water via. a server side plugin, the water seems to be solid, is there a way i can fix that?
is that a bad thing?
Hi, what do you guys think about Endgame&qol mod?
g
Hi everyone, can someone help me, I'm duing a VIP mod with Voucher, but when I creat the Item unsing ItemStack, I'm tring to creat with a Lore from my json file, but the Item don't came with this lore only with the Name I set
with lore you mean description?
does someone knows if there's a way to spawn particles or highlight a block but just for one player, i mean only that player can see it
ParticleUtil.spawnParticleEffect takes a list of playerrefs to show the particles to
thank you !
Yes descripition, I would like that My Voucher get the name of the VIP the server gave to the player with discription Like [JVIPS] Thorium Voucher Duration 30d Boud to: players name
if you're trying to make per itemstack descriptions, its not supported yet
you placed it in the wrong layer
Dam It
how would i fix that LOL, i didnt know i had to do layered stuff
try looking at FluidSection.class
I've read that Holograms are unable to have colors in them. Is that true? If not, how do you do it?
nameplates specifically can't have colour
but there are certainly ways around it, i think a plugin called TextUtils does it?
Hmm, alright. Thanks!
i made BanIP able you should be able to find it in hytale forge mods, just waiting for a mod to look at it so its actually able to download
or try find achymake on github, released it there to 8 hours later on forge still Under Review
Hey, anyone had the problem that all their entities placed with the entity placer got randomly deleted?
Hey, did anyone try making a zoom mod? I'm currently using a method of initializing a custom camera with negative distance, however this can glitch through the ground. If i enable clientside camera raycasting so it doesn't glitch, it only works in positive distances, negative ones crash the client. Does anyone have any other idea?
I assume this has been reported (or is false positive?) But just in case:
WARNING: sun.misc.Unsafe::getLong has been called by com.hypixel.hytale.codec.util.RawJsonReader (file:/C:/Users/***/Server/HytaleServer.jar)
WARNING: Please consider reporting this to the maintainers of class com.hypixel.hytale.codec.util.RawJsonReader
WARNING: sun.misc.Unsafe::getLong will be removed in a future release```
Oh hey that's me o/
Item drops are way too close to the ground when they hover. I want to raise their height. Would I want to be looking to change the Transform position or the bounding box you think?
I can't say anything about that, but I can tell you that transform position will interfere with picking up items (the distance calculation for picking up is done using position), and bounding box won't. So I'd suggest trying bounding box first. (since the default pickup range is already pretty low)
how can i make event, which will trigger when i click on entity? and get UUID of it, so i can trigget GUI opening based of that?
create a custom interaction
You could always use HyCitizens, the API is easy to use 😉
this game hytale is insane. npc role support InsteractionRoot item with attack action
Hello guys. How do I execute a command as a selected player? For example, I have a registered /dosomething command and I need to call it in the script to execute it as a selected player so that under certain conditions I can call commands from other installed mods? Thanks.
does anyone know of a good guide for using tools like rechunk to reset my chunks outside of protected areas?
trying to release banIP to forge for hytale but it gets rejected for some reason, and it works perfectly fine for me hope hytale make a site for mods like spigot
i've gotten close but the item keeps bouncing up and down for some reason. I'm trying to figure out when BoundingBox gets added to an item entity so I can change it but cant find it anywhere in the server code. I'm thinking the hover effect is done in the client?
trying to find support and write to them why it gets rejected but i can't find any support for that
Hey did you found a solution?
are you creating an entity through code? Make sure to remove the Despawn component
Nope i take the Entity Tool
Then i place NPC´s like a Frog and link it to the npcdialog for example, or just a sign, a stone with /entity nameplate name and then thats it
I just joined my server and after 3-4 days out of nowhere half of my entities are gone D:
Hi does someone know how I can spawn in image as hologram?
Does anyone know how to listen for the unload chunk event?
my old project for minecraft Health enchantment hasn't event been looked at by forge so the banip might never come how do people release mods for forge...
ugh, i finally figured it out after 6 hours of hair pulling. NEED MORE DOCUMENTATION
what was the solution out of curiosity
Hi, I installed hyfixes plugin for my server. How to check if it is properly loaded?
what did u find out
Is there no rejection reason? There's so much slop on the site, I doubt they would reject a release unless they had a good reason for it
how can I leave the hytales console in linux without stopping the server?
heard from one that others mods would be looked at within an hour but for me its been 11 hours now, still under review and my old project for minecraft Health enchantment sep. 2025 has never been looked at
have a feeling someone else gonna take the credit for the code i made
If you have it on docker you could ctrl+d ctrl+p iirc
Otherwise it might be better to make it a systemd service
Or you'll need to use a tool like tmux or screen
how can I start the server with tmux?
How can I start the server with tmux?
That, I don't know. I just know that's a thing you can do in tmux.
Personally, I prefer systemd services since, why would I want the overhead of tmux
ok thanks
Systemd is also really convenient with its own logs, the ability to restart, depend on other services etc.
You can do stuff like making it autostart on device boot if the service provider you're using decides to shut it down for some reason
Pterodactyl works great for Hytale
got rejected cause it was duplication of the first one just lazy for them to not look at it, they might never look at it like my minecraft projects
You could publish it on modtale too if you're having a poor experience with cf
Though, if you're planning on making revenue off the mod I doubt modtale has anything in place for that rn, it's very new
or nexus
Can someone here help me with setting up a hytale server?
I have followed the exact setup steps and yet it still wont let me connect
or itch dot io
why is it so hard to find correct mob data, every single website seems to have like 50% or 10% or 90%, kinda annoying when trying to build my mod.
because they have not released the official documentation
for making mobs, there actually is official documentation already:
hytalemodding dev/en/docs/official-documentation/npc/1-know-your-enemy
Sure
I understand that, my issues is i need to find out what zones they spawn in, how much hp they have, how much dmg they do. That type of stuff. besides manually doing it myself i dont know another way.
Im really not sure what I have done wrong here, I never had issues with setting us a Minecraft server but idk
Do you think you could give me some troubleshoot ideas.
I know the server is running cause i can connect using local IP, but I cant using global
Are you trying to connect with the global ip from outside your local network?
No I am using the pc that is connected to my Local IP but I have also tested this with a friend and he cant use the global IP to join
you need to set the port in your router if its local, if its a server you have to have them have that server IP and port. in netorking you have nat on your personal router and your ISP that converts your internal ip to a public ip address. there a specific port for hytale you need to set in your router so that the translation from your isp can occur, if its not that check for a white list
Did you open the utp port?
I think its 5050 if i'm not mistaken. You need to open it in your firewall or no one can connect from the outside
its 5520 and yes I did ahaha
Oh yeah 5520, thats right. So when you're trying to connect do you use the ip or ip:5520?
Try using the port as well, also does the server even receive the connection attempt or does it display nothing in the console?
nothing displays in the cosole
Hi, is this the correct way to send a packet to a player?
packet = new UpdateWorldMap(
null,
new MapMarker[]{marker},
null
);
}
playerRef.getPacketHandler().write(packet);
Because i'm getting NPE
You might have to portforward the port with your provider as well
not too sure how to to that?
Its diffrent for each provider but usually its in the router console
Try looking up your provider +router console ip on google
Or how to portforward on x provider
I think AGL does not allow portforwarding and that is my ISP, apparently I can call and get them to fix this.
AGL seems to use DS-Lite (you communicate via CG-NAT), therefor don’t have a public IPv4. Either use your IPv6 (if Hytale supports that, I don’t know), check if DynDNS is suitable / works or ask for a public IPv4
how do you get the attacker in the DamageEventSystem?
Looking for someone to code a custom check for me. I have a shop barter from hytale and it should only open when you´re a certain class from Orbis Dungeons Plugin^^ (dm)
that wonderful feeling when you get your code to work 😄
damage.getSource and check if its of type EntitySource, then you have the ref
Hello everyone! I have a dumb question, but is it possible to expand the vanilla chests to add a "filter" option so that the chest only accepts a type of resource? For example, i want a chest that only accepts wood, but maybe i also want a chest that only accepts softwood and so on, i can't seem to find any documentation to where i can get the chest entity nor anything that i could use to at least start and try anything
doesnt really work, since damage.getSource() is Source and cant be cast to Ref<EntityStore>
you cast it to EntitySource... which has the ref
Is it possible to hide custom items from creative inventory?
Have you tried checking UpdateWindow packet?
Good morning everyone!
I have a problem and I'm looking for someone who can help.
We run a server.
Every time someone dies, the world in which they died is paused. We currently have two worlds (lobby and survival). If you rejoin twice, you spawn in the lobby, but you can't enter the survival world because it's paused. Using /word load worldname, I can re-enter the world until someone dies.
So whats the problem?
I found an alternative event for PlayerInteractEvent:
import com.hypixel.hytale.component.Archetype;
import com.hypixel.hytale.component.ArchetypeChunk;
import com.hypixel.hytale.component.CommandBuffer;
import com.hypixel.hytale.component.Store;
import com.hypixel.hytale.component.system.EntityEventSystem;
import com.hypixel.hytale.server.core.Message;
import com.hypixel.hytale.server.core.event.events.ecs.UseBlockEvent;
import com.hypixel.hytale.server.core.permissions.PermissionsModule;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class KarinOnUseSystem extends EntityEventSystem<EntityStore, UseBlockEvent.Pre> {
public KarinOnUseSystem() {
super(UseBlockEvent.Pre.class);
}
@Override
public void handle(int index, @Nonnull ArchetypeChunk<EntityStore> chunkArchetype,
@Nonnull Store<EntityStore> store,
@Nonnull CommandBuffer<EntityStore> buffer, @Nonnull UseBlockEvent.Pre event) {
}
@Nonnull
@Override
public Archetype<EntityStore> getQuery() {
return Archetype.empty();
}
}
Was I the one being referred to?
yes
Well, is it intentional that when someone dies, the world stops and all players are kicked out?
the best hardcore world is the one shared with friends.
Can someone please help me fix this issue:
private final RequiredArg<PlayerRef> playerRefArg;
public OpenCommand() {
super("open", "Opens the shop for the specified player");
this.playerRefArg = withRequiredArg("player", "Description", ArgTypes.PLAYER_REF);
}
@Override
protected @Nullable CompletableFuture<Void> execute(@NotNull CommandContext ctx) {
PlayerRef playerRef = playerRefArg.get(ctx);
Ref<EntityStore> ref = playerRef.getReference();
if (ref == null) {
return CompletableFuture.completedFuture(null);
}
Store<EntityStore> store = ref.getStore();
Player player = store.getComponent(ref, Player.getComponentType());
if (player == null) {
return CompletableFuture.completedFuture(null);
}
ShopPage page = new ShopPage(playerRef);
player.getPageManager().openCustomPage(ref, store, page);
ctx.sendMessage(ColorUtils.color(ConfigRegistry.messages().getShopOpenedForPlayer()));
return CompletableFuture.completedFuture(null);
}
}```
Error:
```[2026/02/03 12:09:53 SEVERE] [CommandManager] Failed to execute command shop open xavo for Console
java.lang.IllegalStateException: Assert not in thread! Thread[#123,WorldThread - default,5,InnocuousForkJoinWorkerThreadGroup] but was in Thread[#96,ForkJoinPool.commonPool-worker-4 -- Running: shop open xavo,5,InnocuousForkJoinWorkerThreadGroup]```
Guys, does anyone know is it ok to not to update server.jar? Sometimes some methods from server.jar are being changed/removed, and to be honest I'm tired of fixing my code by finding out what hytale devs changed this time
Not updating causes that you cant connect to the server, they also stated the will slower the update rate so you dont have that issue that often during development
execute method for AbstractCommand is called on a worker thread but you are accessing an EntityStore which can only be done on a world's main thread. You need to either:
- put the code that deals with the store into
world.execute(() -> {});to make sure it runs on the world thread, or - change your command to AbstractTargetPlayerCommand. That deals with the threading for you and, as a bonus, also does the
--playerargument parsing for you
The reason I am not using AbstractTargetPlayerCommand coz I want the command to be executed like this: "/shop open shadowx". I will try the world.execute method
AbstractPlayerCommand then and add the target argument yourself
But will it work in console?
Only if a player is passed as an argument. then the command will be executed on behalf of that player
What causes the Could not find document XXX for Append command?
- using the wrong path to try to load it
- ui file is in the wrong spot
- syntax error in the ui file, making it invalid
If it says:
Could not find document Common/LevelingCore/xpbar.ui for Custom UI Append command
Where does it expect the file to be?
I have it here
src\main\resources\Common\LevelingCore\xpbar.ui
Yeah that will have to do, you can't connect from the outside if the port isn't actually open.
I'm loading it from
private static final String[] HUD_UI_PATHS = new String[]{
"Common/LevelingCore/xpbar.ui",
"HUD/LevelingCore/xpbar.ui"
};```
I have mine in Common/UI/Custom/file.ui and uiCommandBuilder.append("file.ui");
Do you have a folder in your mods where the UI stuff is or is it only in resources within the jar?
it's in src/main/resources, next to the manifest. Make sure to turn on "IncludesAssetPack": true in the manifest
I moved the UI to src/main/resources/Common/UI/Custom/xpbar.ui
and I set the path to "xpbar.ui" in the builder but I get this error
Crash - Could not find document xpbar.ui for Custom UI Append command. Selector:
Manifest has "IncludesAssetPack": true,
Moved it to src\main\resources\xpbar.ui also does not work
how complex is the ui file? Any chance there is a syntax error?
Its prety simple
Group {
LayoutMode: Bottom;
Anchor: (Bottom: 36 + 74 + 24 + 6, Width: 634, Height: 12);
Label #Level {
Anchor: (Left: 0, Width: 4, Height: 24, Right: 4, Top: -6);
Style: (FontSize: 16, Alignment: Center);
Text: "MyText";
}
Group {
LayoutMode: Middle;
Group {
Anchor: (Left: 0, Width: 634, Height: 12);
Background: "XPBackground.png";
ProgressBar #ProgressBar {
Anchor: (Width: 634, Height: 12);
BarTexturePath: "XPFill.png";
}
ProgressBar #ProgressBarEffect {
Anchor: (Width: 634, Height: 12);
BarTexturePath: "XPEffect.png";
}
}
}
}
Sooo I found a way to color nameplates and what not.... but It requires Hyxin and I need to learn how it work.
I search the deafult server config.
My has no Death block
{
"Version": 3,
"ServerName": "Die Bruderschaft der Xarocianer",
"MOTD": "Die Bruderschaft der Xarocianer",
"Password": "XZMX",
"MaxPlayers": 500,
"MaxViewRadius": 12,
"Defaults": {
"World": "CelestoriaPalace",
"GameMode": "Adventure"
},
"ConnectionTimeouts": {},
"RateLimit": {},
"Modules": {
"PathPlugin": {
"Modules": {}
}
},
"LogLevels": {},
"Mods": {},
"DisplayTmpTagsInStrings": false,
"PlayerStorage": {
"Type": "Hytale"
},
"Update": {}
}
Maybe is this my world problem
I figured it out thank you
👏 👏
What was it?
I had a folder in my plugins folder whic hwas messing it up :/
Yup, this is what you must use. Note that the Pre or Post subclass is mandatory for the event to listen to anything.
the main problem is that i can't find any documentation at the moment on how to even properly begin. I tried hytalemodding but no luck
Hi, is there some way to create event, which will trigger based on clicking on entity?
Okay, that wasn't the reason:
When someone dies, the world in which they died freezes and everyone is kicked out.
The server remains active, however, and the other world still functions.
I'm still getting these errors:
[2026/02/03 13:42:29 SEVERE] [Hytale] Exception in thread Thread[#205,WorldThread - Xarocianer001,5,InnocuousForkJoinWorkerThreadGroup]:
java.lang.NullPointerException: Cannot invoke "com.hypixel.hytale.server.core.Message.getAnsiMessage()" because the return value of "com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent.getDeathMessage()" is null
at ThirdPartyPlugin//com.jemsire.events.OnPlayerDeathEvent.onComponentAdded(OnPlayerDeathEvent.java:27)
at ThirdPartyPlugin//com.jemsire.events.OnPlayerDeathEvent.onComponentAdded(OnPlayerDeathEvent.java:17)
at com.hypixel.hytale.component.Store.datachunk_addComponent(Store.java:2412)
at com.hypixel.hytale.component.Store.addComponent(Store.java:1118)
at com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent.tryAddComponent(DeathComponent.java:285)
at com.hypixel.hytale.server.core.modules.entity.damage.DeathComponent.lambda$tryAddComponent$0(DeathComponent.java:274)
at com.hypixel.hytale.component.CommandBuffer.consume(CommandBuffer.java:520)
at com.hypixel.hytale.component.Store.tick(Store.java:1984)
at com.hypixel.hytale.component.system.tick.ArchetypeTickingSystem.tick(ArchetypeTickingSystem.java:36)
at com.hypixel.hytale.component.Store.tickInternal(Store.java:1930)
at com.hypixel.hytale.component.Store.tick(Store.java:1900)
at com.hypixel.hytale.server.core.universe.world.World.tick(World.java:406)
at com.hypixel.hytale.server.core.util.thread.TickingThread.run(TickingThread.java:89)
at java.base/java.lang.Thread.run(Thread.java:1474)
geht eigentlich noch weiter.
[2026/02/03 13:42:29 INFO] [World|Xarocian001] Stopping world Xarocian001...
[2026/02/03 13:42:29 INFO] [World|Xarocian001] Stopping background threads...
[2026/02/03 13:42:29 INFO] [World|Xarocian001] Removing players...
[2026/02/03 13:42:29 INFO] [PlayerSystems] Removing player 'XarocTV (XarocTV)' from world 'Xarocian001' (50ac6cac-e258-4de1-825a-262b04bf9f8d)
[2026/02/03 13:42:29 INFO] [World|Xarocian001] Waiting for loading chunks...
[2026/02/03 13:42:29 INFO] [World|Xarocian001] Shutting down stores...
[2026/02/03 13:42:29 INFO] [World|Xarocian001] Shutting down chunk generator...
[2026/02/03 13:42:29 INFO] [World|Xarocian001] Saving Chunks...
[2026/02/03 13:42:29 INFO] [World|Xarocian001] Queuing Chunks...
[2026/02/03 13:42:29 INFO] [WorldGenerator] ChunkGenerator-0 executor shutdown complete
Remove the plugin causing the issue. Its literally in the trace
But which one is causing the problem...
remove one by one until you identifiy the issue
ThirdPartyPlugin//com.jemsire.events.OnPlayerDeathEvent.onComponentAdded(
that is death handler
Is there a way to schedule things? Something similar to BukkitRunnable?
So, a mod that has something to do with death?
Yes, you stated server freezes when player dies so clearly its a mod hooking into death and thats the only one shown in stack trace
Yes: HytaleServer.SCHEDULED_EXECUTOR
Awesome thank you.
Okay, phew... except for furniture mods, MMOSkill coins, BetterMap, and a few other minor things.
Actually, I don't have anything that has to do with death.
But then I'll just try things out.
? I pasted the mod hooking into death
ThirdPartyPlugin//com.jemsire.events.OnPlayerDeathEvent.onComponentAdded(
Remove it and test
Looks like the mod is called JemDeath
Can I send you a picture of the mod list?
Just list them if you can?
I found a mod under jemsire
Discordwebhook
Let's see if that was the problem.
is a user of curse
Yes... that was the problem -.-
I would never have thought of that -.-
THANK YOU!
BIG THX
THX
i keep trying to release banIP mod and forge just said "We do not allow mods that target specific users" what does that mean? we are not allowed to ban ip address?
does your mod come with included IPs?
wouldn't see how a plugin for banning ips would be different to banning usernames
no it just check players ip and if the ip is inside the ip-banned.json, then making the player disconnect
forge is so dumb with this extra step to release a simple mod sad times we are living in
people can see how i made it in github when the ip-banned.json is created from new its just empty array list string, i just dont get why i am not allowed to release anything in forge always been so complicated
I there a way to detect actual keybinds like the jump button and know :
- When it pressed
- What keybinds is assigned to it
- When it released
?
No, we can only react to specific interactions, not the keybinds that caused them
OK thanks I'll wait until it's possible to make custom keybinds
anyone know how to intercept the harvest event? I need to inject code when the user presses "F" to harvest or uses the sickle (or any tool) to harvest crops and cannot find the event to do so
public static final BuilderCodec<PlayerInteractSystem> USE_CODEC =
BuilderCodec.builder(PlayerInteractSystem.class, PlayerInteractSystem::new, SimpleBlockInteraction.CODEC)
.documentation("Interaction Use Event")
.build();
protected void interactWithBlock(@NonNullDecl World world,
@NonNullDecl CommandBuffer<EntityStore> commandBuffer,
@NonNullDecl InteractionType type,
@NonNullDecl InteractionContext context,
@NullableDecl ItemStack itemInHand,
@NonNullDecl Vector3i targetBlock,
@NonNullDecl CooldownHandler cooldownHandler) {
}
extends UseBlockInteraction
When making commands I see you can have sub commands... If I add a sub command does it just listen for that command as an argument and if it doesn't find it run the execute method?
Are hourly reboots for a hytale server bad?
i do daily at morning just keep bots away from the server they can unstable the performance
And how do I cancel the harvest?
context.getChain() using the chain to cancel
interactionManager.cancelChains(chain); otherwise super.simulateInteractWithBlock() to make it happen
// Inside UseBlockProtectionSystem.handle(...)
val target = event.targetBlock
if (!plugin.protectionManager.canModify(playerRef.uuid, target.x, target.y, target.z)) {
event.setCancelled(true)
// Cancel the active interaction chain (prevents harvest from continuing server-side)
val context = event.context
val chain = context.chain
val manager = context.interactionManager
if (chain != null && manager != null) {
manager.cancelChains(chain)
}
playerRef.sendMessage(plugin.config.messages.formatMessage(plugin.config.messages.cannotInteractHere))
}
This worked for me, thank you.
yeah, but i had to do it this way
if (getWorldGuard().getUniverseHandler().isProtected(world)) {
if (!getWorldGuard().getPlayerRefHandler().isBuilder(playerRef)) {
if (!getWorldGuard().getUniverseHandler().isWhitelisted(world, "UseBlock", blockId)) {
interactionManager.cancelChains(chain);
} else super.simulateInteractWithBlock(type, context, itemInHand, world, targetBlock);
} else super.simulateInteractWithBlock(type, context, itemInHand, world, targetBlock);
or i didn't test enough
hunm, nice
be sure you did use the F interaction which would be this inside that class you created
if (type.equals(InteractionType.Use)) {
Bro .. Is there any sane way to kick a player..
Trying to do getPacketHandler().disconnect("message") on ref (PlayerRef) results in an error
java.util.concurrent.CompletionException: java.lang.IllegalStateException: Invalid entity reference!
It works and the player gets disconnected and gets the message but I still get errors in console?
I wish the API was more user-friendly and there were things like p.kick()
Is it just the fact that the API isn't developed further atm? Will it become more user-friendly?
Hey, what are we supposed to do about all these economy API plugins? I keep adding support for new ones, but it never ends xD
Only implement the ones your users ask you about
.
imagine wasting all day to try release a BanIP mod on forge, they say what does this "BanIP" mod do? we need more description, ok i add more detail in the description now waiting for next respond, few hours later they say no rejected we do not allow mods that target specific users, is this weird or just me?
One day in modding is nothing 
does anyone know how to remove the leave message in hytale (i.e. player left from world "world name")
speaking portugues
AddPlayerToWorldEvent
seems like they haven't done that yet means we can't remove it only join message
I’m doing exactly that, but it never ends 😄
Only with an earlyplugin like Nozemi/hytale-server-patcher on GitHub
i've seen it done it seems possible
oh you said leave message
What can I do to not loose the credentials on stopping the server?
/auth persistence Encrypted
that puts your account tokens into a file on your server
Thanks, so now I never have to authorise the server again?
you might need to re-authenticate if it fails to load the tokens for some reason, but yes that's the idea
Ok, now I understand
can you tell us how to remove the leave message?
seems like the patcher can remove it
you can look at the code on github: Nozemi/hytale-server-patcher
What does the connection error "invalid identity" mean?
Something like this should work shouldn't it? I may be misunderstanding the translation stuff. public void sendPlayerInfoTranslated(PlayerRef playerRef, String info, Map<String, String> params) { Message message = Message.translation(info); params.forEach(message::param); messagePlayer(playerRef, message.color(INFO)); } It doesn't seem to be replace the params.... in the file I do %param% then when passing it I do ("param", value) is this right? EDIT: Figured it out I was just misunderstanding the translations. I swear somewhere I saw it was %param% in the lang file but it is actually {param}
anyone know the file path for damage config? ult damage specifically
Can I read the position of specific bones of a model of a block?
Hello i have a problem with a code, the ui is never detected even tho is in the resources folder and i have used the exact path for it can some1 pls help me? T_T
Is Invalid entity reference expected for getPacketHandler().disconnect()?
I have mine in Common/UI/Custom/MyUI/file.ui and uiCommandBuilder.append("MyUI/file.ui");
What paths do you have?
me too but it keeps crashing cus it doesnt find it
idk if its the code its my first time doing ui
package com.example.rankup.ui;
public class SimpleRankupPage extends InteractiveCustomUIPage<SimpleRankupPage.RankupEventData> {
public static class RankupEventData {
public static final BuilderCodec<RankupEventData> CODEC =
BuilderCodec.builder(RankupEventData.class, RankupEventData::new).build();
}
private final PlayerRef playerRef;
private final World world;
private final int currentRank;
private final double cost;
public SimpleRankupPage(@Nonnull PlayerRef playerRef, @Nonnull World world, int currentRank, double cost) {
super(playerRef, CustomPageLifetime.CanDismissOrCloseThroughInteraction, RankupEventData.CODEC);
this.playerRef = playerRef;
this.world = world;
this.currentRank = currentRank;
this.cost = cost;
}
@Override
public void build(
@Nonnull Ref<EntityStore> ref,
@Nonnull UICommandBuilder commandBuilder,
@Nonnull UIEventBuilder eventBuilder,
@Nonnull Store<EntityStore> store
) {
commandBuilder.append("Pages/SimpleRankup.ui");
commandBuilder.set("#Headline.Text", "Rank Up!");
commandBuilder.set("#Message.Text", "Your current rank: " + currentRank + "\nCost: $" + (long) cost);
eventBuilder.addEventBinding(CustomUIEventBindingType.Activating, "#RankUpButton");
}
@Override
public void handleDataEvent(
@Nonnull Ref<EntityStore> ref,
@Nonnull Store<EntityStore> store,
@Nonnull RankupEventData data
) {
Player player = (Player) store.getComponent(ref, Player.getComponentType());
RankupCommand.performRankup(null, playerRef, world);
player.getPageManager().setPage(ref, store, Page.None);
}
}
Another option might be that the ui file has a syntax error which is causing it to fail parsing and become invalid
Hi, is this the correct way to send a packet to a player?
packet = new UpdateWorldMap(
null,
new MapMarker[]{marker},
null
);
}
playerRef.getPacketHandler().write(packet);
Because i'm getting NPE
is getPacketHandler().disconnect() safe to use to disconnect players or is there a better way?
oh makes sense
here it says im missing a semicolon
Default: (Background: #3a7bd5, LabelStyle: (FontSize: 16, TextColor: #ffffff, RenderBold: true, RenderUppercase: true, HorizontalAlignment: Center, VerticalAlignment: Center)),
Hovered: (Background: #4a8be5, LabelStyle: (FontSize: 16, TextColor: #ffffff, RenderBold: true, RenderUppercase: true, HorizontalAlignment: Center, VerticalAlignment: Center)),
Pressed: (Background: #2a6bc5, LabelStyle: (FontSize: 16, TextColor: #ffffff, RenderBold: true, RenderUppercase: true, HorizontalAlignment: Center, VerticalAlignment: Center))
);```
Looking for builders and staff to help with my server nexus this is not a paid position but you will be commissioned at a later date.
Is there a way to add ui to the players inventory screen?
eh nvm it doesnt work
does anyone has any good docs site for ui updates and how you do it the proper way?
I learned it from Hyphen45 on YouTube
had anyone had any issues with its still demanding that it needs WebServer as a dependency
prometheus.jar is being automatically extracted by EndgameAndQoL mod every time the server starts, which is why it keeps coming back after deleting it. Since prometheus requires the "WebServer" mod
Nitrado Webserver, its easy to set up
that will work for Endgame & QoL? @summer ibex
lmao adding mention after the fact wont ping someone
oh i know that lmfao wanted to just add it for my sake
Its the only webserver plugin I've seen. Not sure why Endgame requires it?
I had nitrado webserver installed before Endgame mod
well after the last 2 update endgame got its been the issue ive been having and i just added webserver and it has not fixed it im not sure whats going on at this point
If you don't want/don't need the prometheus/webserver functionality, does the QoL mod not give you an option to disable it?
anyone have a problem where deathComponent.setShowDeathMenu() just isn't actually disabling the respawn menu
Might be worth asking in their Discord then
i have have not gotten a single response other than adding HyFixes but that wasnt a fix eithder
does hytale have some kind of support for an emmision map of some sort?
just to make the texture glow
How?
Sorry for the necro, but did anyone figure this out?
When selecting a Cube/Quad in Blockbench, you can go to the Element tab and set the Shading Mode to "Always Lit". That makes it always full bright.
alr thx
maybe thats gonna be enough for hytale
can i do it for specific pixels on a texture or does it have to be a whole cube/quad
Direct solution: Builtin plugins like MantlingPlugin (in builtin/mantling/MantlingPlugin.java) are registered as core plugins via PluginManager.registerCorePlugin(PluginManifest) (server/core/plugin/PluginManager.java: ~line 140). They load automatically during PluginManager.setup() unless explicitly disabled in HytaleServerConfig.ModConfig.
Steps to disable:
-
Via server config (prevents boot loading, recommended):
- Edit
HytaleServerConfig(loaded from config file, e.g.,hytale-server.jsonor equivalent). - Under
modConfig(aMap<PluginIdentifier, ModConfig>), add/set:"modConfig": { "<mantling-plugin-id>": { "enabled": false } } - PluginIdentifier for MantlingPlugin is derived from its
PluginManifest.corePlugin(MantlingPlugin.class)(likely"builtin.mantling:MantlingPlugin:1.0.0"or similar; check/plugin listin-game orPluginManager.getAvailablePlugins()). - Restart server.
PluginManager.canLoadOnBoot()(server/core/plugin/PluginManager.java: ~lines 120-140) skips it:if (!enabled) { availablePlugins.put(...); return false; }.
- Edit
-
Via in-game command (unload after boot):
- Run
/plugin unload <id>(e.g.,/plugin unload builtin/mantling). - Uses
PluginManager.unload(PluginIdentifier)(server/core/plugin/PluginManager.java: ~lines 700-750), which callsplugin.shutdown0(false)ifPluginState.ENABLED, removes frompluginsmap. - To prevent reload:
/plugin load --boot=false <id>or config as above. - Reload with
/plugin reload <id>re-enables if available.
- Run
sorry for the big text, I found it all relevant
Whole thing from what I can see. You'd have to split it up or overlay a separate "glowing quad" for localized effects
dang i dont think i can split it up like that
maybe i'll just make the whole thing fullbright and call it a day 🥀
What are you trying to do?
just have glowing pixels on my sword
like an outline and other stuff
Can't you just make a quad with a transparent texture that's 0.001 units above your model and copy the glowing pixels onto that?
Hi
sure ig i can
just gonna take a bit longer but i can do that
Maybe someone in #blockbench has a better idea if you're not happy with it
oh yea forgot it was a channel
anyone know of a good way to append to existing loot tables w/o directly changing them in the resources?
Can anyone help me? My server is online and running, but nobody can connect.
did you auth?
do you get any connecting log in console?
I'm making an API Library for it right now.
sure thing.
Failed to bind to ::1/[0:0:0:0:0:0:0:1]:10170
I receive this message from the server.
can you show your jvm args
I'm not extremely knowledgeable about this sort of thing.
do you launching server from hosting or dedicated
does anyone know how to prevent disconecting during pvp?
nitrado
does nitrado use ptedtoractly
I don't know
Possible you have another copy of the server running?
go into your server settings can you take a screenshot and send there to me?
if nitrado is a dedicated server host, you should also try asking their support
Server gui is avalible?
why are entities so glichy :/ i swear every bug i fix just spawns 3 more
Does anyone know of a plugin that lets one switch between a survival and a creative inventory?
should i make one :/
i need a break from making this physics engine
I feel like it would be pretty useful!
ill see how easy this will be to make/ if its even possible
Might not be the cleanest or best way but could just store a Map<Slot, ItemStack> for each gamemode then switch with a command or something?
Or even just switch it using the ChangeGameModeEvent
Any Scripters/coders that want to join a project? we are working on making a highly runescape inspired server and are looking for more people who want to join the cause 😄 if you want to join or just want more info hit me up!
Do these have a Pre event? If so this should work pretty well yeah
Store the inventory in the pre event, replace it in the main event
I don't think there is a pre event no
Shame
Is there a way to get the world config? I want the worlds display name but when I call getWorldConfig I always get a NPE and I know the world isn't null because I can use world.getName() just fine.
How can I check code-side whether an entity is hostile to the player or not?
i added friendly entityID and if player attack the friendly cancel, lots of hostiles
can't believe i wasted the whole day to try release banip, should just had wasted time on the server
i need to check if the entity is hostile or not and if possible change the status
Looking to get more granular control over Mod permissions for our server, I'd like to open up mod controls for mods like SimpleClaims or GhostBlockRemover without granting everyone full OP. Anyone have any resources on how to do this?
NPCEntityComponent, get their id such as Kweebec_Seedling, etc.
Does anybody know about how many threads hytale uses
Debating if ~10-30mb per thread is a good idea
im going crazy .... is there a way to to actually know what prevents to load all ui files? i get only the typical "could find documents ...." but they all worked before i changed a lot which says me something about the changes i didt was wrong and the hytale dont like it 😛 but is there a way to actually see a parse result where its not valid?
world.getWorldConfig.getDisplayName can be null
If one errors it's that non descript messgae
??
does anyone have experience with WorldEventSystem?
Do you wanna know how the event system as a whole works?
@drowsy solar im not sure if i understand you right, by message you mean the actual hytales message or my message 😛
That error message means one of the UI files has a syntax errorr
Hello!
I have a quick question, is there any reason why CraftRecipeEvent doesn't trigger when player crafts something from Workbench? It does work just fine while crafting from the inventory.
My code;
public class CraftRecipeSystem extends EntityEventSystem<EntityStore, CraftRecipeEvent.Pre> {
public CraftRecipeSystem() {
super(CraftRecipeEvent.Pre.class);
}
private final Logger LOGGER = LogManager.getLogManager().getLogger("ConsumeDurability");
@Override
public void handle(
int id,
@NonNull ArchetypeChunk<EntityStore> archetypeChunk,
@NonNull Store<EntityStore> store,
@NonNull CommandBuffer<EntityStore> commandBuffer,
CraftRecipeEvent.@NonNull Pre craftRecipeEvent
) {
// Called when CraftRecipeEvent is called.
LOGGER.info("CraftRecipeEvent hit");
}
@Override
public @Nullable Query<EntityStore> getQuery() {
return Query.any();
}
}
Hytale just throws that if any error
@drowsy solar i notices yeah ^^
(also does anybody know how many threads hytale uses)
Just having problem trying to listen Blockbreakevent with worldeventsystem, i mean i can get it to work with entityeventsystem, but would be nice to know how worldeventsystem works, i basicly copied how it worked in simpleclaims but yet still it didnt work
class BlockBreak : WorldEventSystem<EntityStore, BreakBlockEvent>(BreakBlockEvent::class.java) {
override fun handle(
store: Store<EntityStore>,
commandBuffer: CommandBuffer<EntityStore>,
event: BreakBlockEvent
) {
println("asdasd")
}
}
// And on setup:
this.entityStoreRegistry.registerSystem(BlockBreak())
Basicly that
Ah, so you do know register vs registerGlobal? Only main issue I would see
Oh not using that event system-
hello may i ask what are the mods that mainly needs Hybrid?
go look at any mod on cursforges WEBSITE (not app) you can click relations and then change the dropdown to dependents to see what depends on it

looks like there are 15 dependents for the Hybrid mod
what is a InteractionVars? from looking a the weapon_sword_iron Swing_Left_Damage interaction var it seems to overide an existing interaction Weapon_Sword_Primary_Swing_Left_Damage but when I create my own one it doesn't seem to work that way. (I might be doing something else wrong) This is in the Json files.
For anyone searching this up later on I found out the issue. Basically I was missing what the replace section of code did and I messed up the Var thinking it was being decaled in the InteractionVars and wasn't being referred to later on. In the Instance (example Iron Sword) the InteractionVars code replaces the interaction with it's code. (doesn't replace all code just the sections in the InteractionVars) in the sword this happens just before the code is called.
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import com.hypixel.hytale.component.Component;
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
import org.jetbrains.annotations.Nullable;
public class PlayerDataMenager implements Component<EntityStore> {
public static final BuilderCodec<PlayerDataMenager> CODEC = BuilderCodec.builder(
PlayerDataMenager.class,
PlayerDataMenager::new
)
.addField(new KeyedCodec<>("NextLevelPoints", CODEC.INT))
.build();
private int NextLevelPoints = 100;
private float CurrentLevelPoints;
private int Level = 1;
@Override
public @Nullable Component<EntityStore> clone() {
return null;
}
}
Does anyone know why I get this error: Cannot read value of field ‘CODEC’ from inside the field's definition when creating custom playerdata? Does anyone know how to fix it?
Do we know if it will ever be possible to run the server without the asset pack. The memory floor (about 3GB) is huge. It'd be great if the server could just load the essentials like UIs and lang files. Since clients already have the assets locally, the current memory usage feels like a steep tax. @random magnet?
Not sure if it is exactly what you want but there is Gamemode Inventories
Codec.INTEGER
does your IDE not tell you this?
I just don't know why
I use IntelliJ IDEA Community Edition. Maybe it needs to be enabled somewhere.
If you're using a hytale plugin template project from somewhere it should just work
anyone else not "loosing" some items when drop partial is set in death penalty? Im not loosing things like Gems, Stairs, Stone, wood blocks that are decrorative like golden/tropical wooden planks even Amber logs (im testing a plugin that allows you to adjust the drop rate and damage rate in game) but some of the things i gave myself in creative arent dropping at all even if its set to 100% is that intentional by hypixle?
Check the "DropOnDeath" property of items. It's part of the interaction category in the Asset Editor. If that's false, they never drop
Im not sure if this will ever be fixed, a lot of their design philosophy is to have everything on the server end to allow for better synchronization of all clients and servers, and to prevent hacking/cheating/glitching. that being said, it could change, and i dont see why not validate if the server will mostly be using vanilla stuff, as i agree it is a huge resource cost
Got it thanks yeah just went into a unmodded version and set the drop rate to 100% partial and died with the same items and they stayed there too lol not a me problem then LOL didnt know that was a thing LOL
If i'm not wrong you can create a custom component and make it serialize on the player right, what would be the benefit of storing data that way over writing it to a customer json file or mysql database?
convenience and maybe performance
depends on how much data you're trying to serialize
Probably not a lot lol, thinking of adding custom player statistics to my plugin but that would only be a few int or something
What is the best way to save arbitrary data on world level?
I need to save data for a world-level system but I'm not sure where to save the data 😅
Resource<ECS_TYPE>
IIs there no way to get the weapon type im holding??? for example melee ranged etc
the server doesnt actually send the vanilla assets to the client, unless the client does something stupid
the world settings packet includes a list of asset names and hashes, and if the client has the assets cached, it doesnt request them, and the server doesnt send them
Oh, I completely missed that type, thanks!
Is anyone else experiencing server issues with players disconnecting for no reason, even though the host and internet connection are good?
im not sure if it utlises codecs for serialization though, let me know if you get something working 🙂
I believe it does. From BlockModule:
this.blockMapMarkersResourceType = this.getChunkStoreRegistry()
.registerResource(BlockMapMarkersResource.class, "BlockMapMarkers", BlockMapMarkersResource.CODEC);
but also, the protocol currently allows for clients to request assets that they dont have(including vanilla ones), so I think this would be useful if it were a flag, so that the server loaded only the assets requested, and cached them, instead of loading the gargantuan zip into memory 24/7
Can't wait to see what bug networks do to handle that. Optimize the compression, its data, or find a way to add a CDN which will require client support, or fancy routing.
currently the compression is pretty good, its just zstd under the hood
I never thought it was bad, but smaller is always better. 😄
tbh a root proxy that loads the vanilla assets.zip once and injects them would be good
Yeah, but each server claims ownership of that, i would assume a fork of the server to allow master -> <insert name that gets blocked here> architecture may help here.
What is the best way for me to get in .txt a list of all the ids of the items I have on my server? including the mods? I had previously found a mod that did item dump, but unfortunately it no longer works. Does anyone know how I can do this?
You can use SimpleScripting to create mods in javascript 👀
Hey, I want to get started on hytale modding and I want to ask you some help, I can't setup a correct maven/gradle setup :' )
Does anyone could explain me how to do it, I've already checked tutorial but I can't make it work
Just keep banging away at it for an hour, you have to set the maven thing to the jar correctly.
x)
Okay just to know how should I setup the maven ? 'cause, like, I'm never able to "deploy" the thing up
You can find some templates in github that already has gradle configured for any OS (windows, linux and macos)
you probably just need to index your Server/Item directory and then remove the .json ending. Sound like a task made in heaven for any kind of AI
Gotta check that then
Does anyone know how I can simulate the opening of any UI, Chest, Furnace, etc.? either the method or the class that this function is in
Hi, I'm working on a mod, and it seems I cannot make a custom chest. I've copied the Furniture_Crude_Chest_Small .json, but when I press F to interact I get a "Cannot perform OpenContainerInteraction interaction on unsupported BlockState type null" if I've defined a "BlockType.BlockEntity" property
Did anyone get a workaround ?
I followed the setup guide from hytalemodding and worked just fine (not allowed to post link though, so just google it). It uses Maven
I use package not deploy.
Do you prefer maven or gradle?
under "BlockType" you need to add State: { "Id": "container" }as well. Your block currently lacks a BlockState and chests use the default "container" state. Then the OpenContainerInteraction should work fine
Ok... But in it they tell me that this is fr maven and then the given project is for gradle... and tried to use java 17 instead of 25...
Honestly Maven, but if I can make it work using grale I won't say no
Gradle should be pretty easy, you can simply depend on the locally installed server jar or use the maven artifact
Lets go w/ that then
Gradle is evil, avoid at all costs.
Here is my current BlockType, it has the State: { "Id": "container" } but does not work :
"BlockType": {
// ...
"State": {
"Id": "container",
"Capacity": 18,
"Definitions": {
"CloseWindow": {
"InteractionSoundEventId": "SFX_Chest_Wooden_Close",
"CustomModelAnimation": "Blocks/Animations/Chest/Chest_Close.blockyanim"
},
"OpenWindow": {
"InteractionSoundEventId": "SFX_Chest_Wooden_Open",
"CustomModelAnimation": "Blocks/Animations/Chest/Chest_Open.blockyanim"
}
}
},
"Interactions": {
"Primary": "Break_Container",
"Use": "Open_Container"
},
"BlockEntity": {
"Components": {
"ExampleBlock": {}
}
}
}
i see what you mean, it seems they have changed that to gradle yesterday (commit 0a897e0). Before it was Maven. Perhaps try to check out an older version.
Do you have the project set up? You'll need to gradle init to create the wrapper
Alternatively use a project template that already has the gradlew so you don't need to install gradle to get started
Then the choice is groovy or kotlin for the build script
Gonna try that after if this doesn't work
I'm at the start line, so i don't even have a project setup ^^'
Would you prefer to install gradle or use a project template
Kaupenjoe has a nice example plugin that could get you started
First, I would preferably install Gradle and if it doesn't work just go w/ a project template
Lmk after you install it
Can continue from dms as well
Okay, and let's go from dm if it doesn't bother u
If I'm using intelliJ, installing gradle just mean start a new gradle project, right ?
You could do that as well, both will work
Does anyone know how I can simulate the opening of any UI, Chest, Furnace, etc.? either the method or the class that this function is in
@static shadow you seem to have encountered the same issue, were you able to solve it ? (sorry for the ping, couldn't contact you otherwise)
hello, does anyone here can help a little for dev? at least find a method
I would like find chest in a defined area I have selected
I made my completely own interaction instead of relying on the "Open_Container" interaction.
I'll send an example in DM if you want
what do mean by "simulate"? The interaction "Use" (press F to open) is defined under interactions. It will change the BlockState on the Chest. The new block state has an animation defined that will play once and hold on last frame. When closing, the state is changed again with another animation.
Thank you for explaining, this makes a lot more sense
Does anyone know if it's possible to dynamically adjust the speed of an entity?
Does anyone know if its possible to entirely disable pocket crafting UI from being opened?
Does anyone know if the devs are looking at the inability of server multiplayer games to use portals individually? Currently it seems like the portal limit is set to the board as opposed to the individual. Couldn't they alter the mechanism to keep the area in front of the sanctuary on multiplayer games as an unclaimable area and then tie portals to individual accomplishments?
What if a client requests everything😭server DOSing through RAM overload
the good news is that the vanilla server already loads everything into ram anyways
so worst case you have the same amount of ram used
the real issue would be how fast you can load from disk though
Does anybody know how to run an interaction on player using their reference?
aa
Im tryna find something like an interaction manager or something in store
And if I may give you a piece of advice: google 'The Hytale Modding Bible: Full Server API Reference'.
is this int persistant playerRef.getReference().getIndex() ?i mean can i use it instead of UUID?
you should search the wikis on how to do interactions, there are examples
no thats not persistent
thank you
is there way to make a item number 1000000 to 1m etc
how do i make my custome machne drop contents ? i have machine customemachine state and 2 simpleItemConteiners inside , state implements ItemContainerBlockState
Is a mod and server plugin the same thing?
wtm
yes
no
on hytale it is
add a block with a plugin
So could you elaborate please?
for activating an interaction using plugins?
i have been looking but I havent been getting very lucky
the interactions I am tryna activate doesn't exist on the item, im tryna find a way to reference it and activate it
do you telling tell difference here didnt get that
you won't activate an interaction for the player. Instead blocks enable the possibility to have an interaction with the player, which is defined in their properties. In code you can implement custom interactions
well I know that lolol.
I got custom logic working plugin wise, but Im making a tool is the issue.
And my last task in it is making it so that people can put in the vanilla interactions to activate logic as an alternative.
I know there's a command to start an interaction on an entity where you can input the params on what logic to activate; use, secondary, primary, ability1... But im tryna skip that part, and just give the interaction ID rather than that interaction variable
So that if I wanted to activate dodge or double jump, I can do that without having it be attributed to anything.
So that's what Im tryna find is some kind of interactioncomponent/handler
cant figure it out, do i get the fluid blocks from the chunk or are they in a "seperate chunk" of sorts?
Is there actually a server I can join?
FluidSection.setFluid(x,y,z, ... )
How would I get the fluid chunk?
Also is the "fluidID" the same as the block ID?
public boolean setFluid(int index, @Nonnull Fluid fluid, byte level) {
return this.setFluid(index, Fluid.getAssetMap().getIndex(fluid.getId()), level);
}
its a chunk component
look at PlaceFluidInteraction if you need an example
A mod is defined as something added or removed to change/modify the game a plugin is a serverside modification to the game so yes, plugins are mods
sure
I... don't get it LOL
did you look at PlaceFluidInteraction
yeah im looking at it, dont entirely understand how to access the fluid
it's the second line of interactWithBlock
Fluid.getFluidIdOrUnknown(this.fluidKey, "Unknown fluid: %s", this.fluidKey);
uh
"Water_Source"
in hytale this is easily possible
the vanilla protocol is much more flexible than mcs, and you can add arbitrary blocks, just like mc lets you add arbitrary textures to existing blocks using a resource pack(except hytales system is much more flexible)
I'm trying to register a handler for the BreakBlockEvent but it nevers seems to be called when I break a block
In my plugin setup I call this.getEventRegistry().register(BreakBlockEvent.class, new BreakBlockHandler()) but the `accept method of my handler is never called
Any block or specific?
for now I just wanted to see any block breaking, I wanted to filter later then
or is there another way of detecting when my custom block is broken?
override fun start() {
eventRegistry.registerGlobal(BreakBlockEvent::class.java) { event ->
logger.info("Block broken at ${event.targetBlock}")
}
}
Since BreakBlockEvent is keyed, that registration silently matches nothing.
oh
Block events are keyed by World. Your handler never fired because you registered it as unkeyed.
hmm, so will registerGlobal fix that or do I need to register it per world?
Use one of these and you’re golden:
eventRegistry.registerGlobal(BreakBlockEvent::class.java) { ... }
eventRegistry.register(BreakBlockEvent::class.java, world) { ... }
need to sleep but it will work
i wonder if hytale will do something about bots making servers unstable do hytale allow that or will they take action?
been 3 days now and i just see my logs filled with Ariorh trying to join and make the server unstable whish i could remove the bots connection logs entirely but i have to accept it i guess making things more complicated
I don't know anything about defending yourself, but you can filter your logs using your server config file
why not just ban/delete the user Ariorh, its their game and i am not the only one who has to deal with the bot
i would see deleting a bot is a win for them, they keep getting money from it the people who made it has to buy another profile i would assume
banning the bots ip or username has worked fine with server performance, just the logs it is crazy every 5 min now
is ther a way to teleport a player with the same pitch, yaw ?
Did you ever figure this out? This would be huge to be able to call interaction like how the command does.
yeah i have no idea.
static void setBlock_manual(int x, int y, int z, int id) {
try {
WorldChunk wc = w.getChunkAsync(x / 32, z / 32).get();
Ref<ChunkStore> section = w.getChunkStore().getChunkSectionReference(
ChunkUtil.chunkCoordinate(x),
ChunkUtil.chunkCoordinate(y),
ChunkUtil.chunkCoordinate(z));
Store<ChunkStore> store = section.getStore();
FluidSection fluidSectionComponent = (FluidSection)store.getComponent(section, FluidSection.getComponentType());
int fluidIndexW = Fluid.getFluidIdOrUnknown("Water_Source", "Unknown fluid: %s", new Object[] { "Water_Source" });
int fluidIndexL = Fluid.getFluidIdOrUnknown("Lava_Source", "Unknown fluid: %s", new Object[] { "Lava_Source" });
Fluid fluidW = (Fluid)Fluid.getAssetMap().getAsset(fluidIndexW);
Fluid fluidL = (Fluid)Fluid.getAssetMap().getAsset(fluidIndexL);
int bID = id;
switch (bID) {
case(8):
case(9):
case(10):
case(11):
wc.setBlock(x % 32, y, z % 32, blockTiles[id]);
if (fluidSectionComponent == null)
break;
if (fluidW == null)
break;
if (fluidL == null)
break;
if ((bID == 8) || (bID == 9)) {
fluidSectionComponent.setFluid(x % 32, y, z % 32, fluidIndexW, (byte) fluidW.getMaxFluidLevel());
} else {
fluidSectionComponent.setFluid(x % 32, y, z % 32, fluidIndexL, (byte) fluidL.getMaxFluidLevel());
}
break;
default:
wc.setBlock(x % 32, y, z % 32, blockTiles[id]);
break;
}
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
}
tried to follow the function provided, but it just doesnt run at all, maybe im doing the variable setup wrong for the index and Fluids?
It does just NOT run when i do that
this is a function that places based off the int ID of a block as per the classic mapping I have (the actual ids passed are grabbed from Hytale using the function to get a int ID from a string key)
public static int[] blockTiles = {
0,
getBlock("Rock_Stone"),
getBlock("Soil_Grass"),
getBlock("Soil_Dirt"),
getBlock("Rock_Stone_Cobble"),
getBlock("Wood_Hardwood_Planks"),
getBlock("Plant_Sapling_Oak"),
getBlock("Rock_Bedrock"),
getBlock("Fluid_Water"),
getBlock("Fluid_Water"),
getBlock("Fluid_Lava"),
getBlock("Fluid_Lava"),
getBlock("Soil_Sand"),
getBlock("Soil_Gravel"),
getBlock("Ore_Gold_Stone"),
getBlock("Ore_Iron_Stone"),
getBlock("Ore_Coal_Stone"),
getBlock("Wood_Oak_Trunk"),
getBlock("Plant_Leaves_Oak"),
};```
im doing the block placements based off these because the level loader just processes the bytes from the level block array directly
you have the fluid id you can just call setFluidRaw you dont need to look up the fluid again
also for source blocks set the level to 0(?) idk the deprecated code is a mess maybe it should be max.
so i just get the fluid id then setFluid?
just seems weird they don't do anything about it, makes me feel they made the game by ai and has to rely on ai asking it how do we get rid of botting 
ok for anyone who is interested in an update on this. I was interested in how to programatically disable the mantling plugin, and I have figured it out:
CommandManager.get().registerSystemCommand(new DisableMantlingCommandBase());
Very important, you have to register the command as a system command!
Then, in the Main plugin file, override the start and run:
CommandManager.get().handleCommand(ConsoleSender.INSTANCE, "byemantling");
Where "byemantling" is the name of the command. Then here is the body of the executeSync function (where command class is an extension of CommandBase):
HytaleServerConfig serverConfig = HytaleServer.get().getConfig();
HytaleServerConfig.ModConfig.setBoot(serverConfig, identifier, false);
if (serverConfig.consumeHasChanged()) {
HytaleServerConfig.save(serverConfig).join();
}
PluginManager.get().unload(identifier)
This is the same way that the hytale-server.jar file handles it from the programatic perspective
where do u report exploits?
https://hytale.com/security wouldnt this be
yes ?
nvm lol
Has anyone else had their components get wiped from blocks when interacted with? I'm currently having this when trying to implement my own workbench
No, not yet.
I imagine the devs will reveal it at some point if it exists.
Wish I could just ask them directly tho to see if I can initiate interactions by ID through plugins
Looking for builders and staff to help with my server nexus this is not a paid position but you will be commissioned at a later date.
Does anyone have an idea on when server hosts will be able to have a server host license again?
Anyone know where asset editor documentation is? Trying to equip and npc to spawn with armor but cant figure out what to type, only have weapons figured out.
{"enabled":true,"list":["<Hannafive>"]}
??
I am trying to join the sevrer
Idk how to Whitelist my username to join @quartz plover
The format you have is correct, but the list needs UUIDs, not names
Where do I find UUID?
Uhhh, there should be plenty of options but I can't recall any specific one
Does it not get logged when trying to join the server?
And that's to join the main server?
Wdym
So like Im tryan join hytalepvp
But it wont let me into the server bc im not whitelisted
You are the server owner, right?
Wait what No
???
I thought this was a public minecraft server? Like hypixel
You can't just force yourself into a whitelist
then how do i join the game
That's the whole point of a whitelist, to only allow specific people to join
I have no idea as I don't know that server
How do I teleport the player to a Vector, not a world?
Someone should make a plugin that makes it so i can block certain commands in certain areas
Griefdefender will support that. I’m still working on porting to Hytale
create a new Teleport component and assign it to the player
any servers
is there any way to prevent my server from automatically reducing render distance when i use terrain tools? Its really annoying me... I dont care if theres some massive latency in return, i just hate the render distance going tiny coz then i cant see at all
Do you have a mod installed that does this? I would be pretty sure that this is not a vanilla behavior.
No this is vanilla, unless BisectHosting has its own mod that does that
Check if they installed Nitrado:PerformanceSaver
I only have 2 mods but it did this before adding them
The performance saver mod has a config where you can disable the dynamic render distance
yeah it has it
👏
According to the readme, mods/Nitrado_PerformanceSaver/config.json
If the file does not exist, it will be automatically created with default values on first startup.
Im pretty confident they didnt vibe code the game lol
also, not having instant moderation bots is not a sign of vibe coding lol
its not there so idk
Well, make it yourself 🤷♂️
Does anyone know how to listen to the chunk unload event?
and the mod has clearly been here a while
You can find the values the config needs from the mod's github page
The mod's jar is in your mods folder, but the Nitrado_PerformanceSaver folder is not?
I disabled the whole mod and it forced itself back on...
Correct.
is there a way to edit the speed of consuming items?
Is there any way to make an entity not persistent, so it gets despawned when the chunk unloads?
@loud minnow might be a case for Bisect support then
dang
@faint fable Do you have a page about Bisect's use of the PerformanceSaver plugin on your Help Center? I couldn't find it
For some reason, my game keeps crashing. I doubt it's from Teleport, but it is crashing.
What's the error message?
it just kicks me out of the world and says player disconnected
Are you testing your plugin on a local server or in singleplayer?
singleplayer
Is it fine if I just dm you the code? I think it's because of my variables or something.
no
I'm happy to teach you how to read your logs and understand them, but I won't solve your problem for you
oh, ok
your singleplayer server logs are in
%APPDATA%\Hytale\UserData\Saves\<save-name>\logs
does anyone know of a mod or anything that allows for polygon slection of worldedit?
@west elk Your sure there is a config file supposed to be there? Bisect said that the mod does not currenlty have a config file, they did tell me how to disable the mod for now though..
If we're talking about the same mod, PerformanceSaver by Nitrado, then yes. I'm using it myself.
Now that you mention it though, the very first version of the mod didn't automatically create it's config file. My recommendation is that either you or Bisect should update it to the latest version
Roger that
Is there anyone that knows the item entities fairly well?
hmm, i feel like the way they created item quality is pretty short sighted. how they have it now the quality is hard coded into the item asset, its not changeable in a mod. So if you wanted to spawn a specific item with varying levels of quality it's not feasible. You would have to create multiple versions of the item asset for each quality level.
when an item with rare quality is spawned there is a blue particle shown but that is not a component on the item entity. I'm guessing its hard coded into the client. they should have added quality as a component instead
i'm curious if they will change it in the future. i would hate to spend a lot of time creating a solution only for them to change it in a future update
Yes, that is the type of feedback they're looking for when prioritizing future updates
where can I give feedback? lol
https://accounts.hytale.com/feedback for general feedback.
But for modding-related topics, Kaupenjoe (Hytale Modding Ambassador)'s discord has a channel "#hytale-modding-wishlist" that is currently the best place for feedback and improvement ideas.
ok thx man, i'll check it out
@west elk Im supposed to disable "ViewRadius" right? coz its still shrinking my view radius when i use editing tools even with that disabled
Yes, that's right
idk then.. i disabled it...
and restarted the server after saving?
yea
this stinks coz i need to make a 1:1 rust map for a client and this is making that impossible
Anyone know why I cannot see the entire map on the map screen? The area is a 2000x2000 block area, so i know its big but isnt it supposed to show all revealed land?
what you see on your map is what you personally explored in the current session I believe. This will get changed in the next few updates
yep
Why is my game crashing in Creative, i swap to Creative and i can't move, i can't fly, if i try i just crash. I re-installed the server, the game, and its still crashing.
hey guys anyone keen on working on a server together and developing a few plugins? My idea (HyHaven) is an all-in-one sort of ultimate survival server im working on and need a few things like a casino plugin, a mobarena-esque plugin, a few different things. if you're keen let me know! 🙂
Hello, I am experiencing issues with my Hytale server. The server is completely vanilla, I have not installed any mods, but when a player enters the portal of forgotten memories and then exits it, the game crashes and the player is kicked. At this point, the game cannot unload this world of forgotten memories, which clogs up the RAM and increases the load on the processor. Here are the logs showing what it looks like, Java 25 is installed:
[2026/02/03 15:28:21 SEVERE] [World|instance-Forgotten_Temple-a5d559b8-0ac0-4c27-a321-027a02f250f3] Exception while shutting down world:
java.lang.UnsupportedOperationException
at java.base/java.lang.Thread.stop(Thread.java:1557)
at com.hypixel.hytale.server.core.util.thread.TickingThread.stop(TickingThread.java:164)
at com.hypixel.hytale.server.core.universe.world.World.stopIndividualWorld(World.java:370)
at com.hypixel.hytale.server.core.universe.Universe.removeWorld(Universe.java:734)
at com.hypixel.hytale.builtin.instances.removal.RemovalSystem.lambda$tick$0(RemovalSystem.java:24)
at java.base/java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1825)
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)
What's the error message?
have you tried deleting the instance?
Yes
I recreated worlds, wiped the server, tried the pre-release and release versions, and this error appeared everywhere.
do you happen to have a weird path name to the server/universe folder? containing non standard characters?
The server is hosted on EnviroMC Servers, and as far as I can see, everything is fine there.
/home/container/universe
/home/container/universe/worlds/default
2026-02-04 17:05:05.0226|WARN|HytaleClient.Networking.PacketHandler|A Equipment packet had been received on the local player
2026-02-04 17:05:06.6528|INFO|HytaleClient.Utils.SentryHelper|Sentry event captured: 5039358d64614b458dda6dc393840fe1
2026-02-04 17:05:07.7484|ERROR|HytaleClient.Application.Program|System.AggregateException: One or more errors occurred. (Index was outside the bounds of the array.)
---> System.IndexOutOfRangeException: Index was outside the bounds of the array.
at HytaleClient!<BaseAddress>+0xa9b4c4
at HytaleClient!<BaseAddress>+0xfc676d
at HytaleClient!<BaseAddress>+0x46d2ea
at HytaleClient!<BaseAddress>+0x46b809
at HytaleClient!<BaseAddress>+0x46b6c8
at HytaleClient!<BaseAddress>+0x6d319f
at HytaleClient!<BaseAddress>+0x11a552c
--------------------
2026-02-04 17:05:07.7484|INFO|HytaleClient.Utils.SentryHelper|Sentry event captured: e694e478dd2a41c7b89e3b63bb0c204d
try bringing it up with EnviroMC support -- if you really have tried all the steps above I think its probably out of your control
I have already contacted them, they started checking, but have not yet found a solution to the problem, so I wrote here, because maybe someone else has had this problem before.
Also happens in singleplayer worlds with no mods.
Is there any way to make an entity not persistent, so it gets despawned when the chunk unloads?
not sure if theres a built-in way already (haven't checked) but you could always attach some arbitrary component to the entities you want to remove and then later check if the AddReason is LOAD and then remove the entity
i fixed it
Well, actually I want to make sure they don't load again. Hytale is having issues loading some of my Player NPCs using a player skin with occasionally corrupting the chunk when they unload and reload
ahh yeah okay then im not sure
Any idea how to listen to the chunk unload event? I tried a few things, the closest I got was that the server crashing when a player joins lol
if its a plugin for your own server you can replace the IChunkSaver, just wrap the original one
Good server client for someone in Australia??
Now.. How is that done? lol
ChunkLoaderSaverSetupSystem
Thanks. How would I replace the existing IChunkSaver using that?
is there a wat to render the debug selctino of builderTools to show a ragion?
So two things:
- Yes, Bisect should update to the newest version.
- This here would be a minimal config to adjust the behavior (going into mods/Nitrado_PerformanceSaver/config.json)
```
{
"ViewRadius": {
"Enabled": true,
"MinViewRadius": 2
}
}
You could turn it off completely (`"Enabled": false,`) but I would rather recommend to increase the min view radius to something you are comfortable with (e.g. `"MinViewRadius": 4`).
Anyone else has bunch of errors regarding assets and chunk loading etc in server console? Can play fine tho.
Hey! Can I add you by chance?
i just need to discuss this in more depth and i dont want to flood this chat
Any idea how to clear ghost particles spawned by ParticleUItil
They don't want to disappear 🤣
Hi everyone, I have a Hytale server and this keeps appearing in the console.
[2026/02/04 07:52:02 WARNING] [Spawning|P] Removing Tang_Sailfin type NPC due to overpopulation (expected: 4.785720, current: 11)
[2026/02/04 07:52:02 WARNING] [Spawning|P] Removing Clownfish type NPC due to overpopulation (expected: 4.785720, current: 10)
[2026/02/04 07:52:02 WARNING] [Spawning|P] Removing Tang_Sailfin type NPC due to overpopulation (expected: 4.785720, current: 1)
However, my server has 120 online players all day and I need to increase the number of mob spawns. Where can I increase this?
sure!
Added
How do I do a Database Transaction? So that if the Server Crashes mid code, Then the transaction isnt committed
That's a question for your database library
hello how do i improve the TPS of the server
Either increase server resources (cpu, ram), or reduce load (render distance, npc ai, recurring tasks)
does someone know how to render the white transparent bock that appears with the buildtools?
On top of DaniDipp's suggestion, you could also use the Spark plugin from CurseForge to figure out what's taking so much time that it's contributing to the TPS loss
you can type /uuid in game or explore logs
Does someone has made a plugin interacting with a websocket ? Im thinking about making one with this but im not sure about the way to implement this, the structure of the code.
So if one of you is ok to share me a Github repo just to see how you handle this, it would be really nice
I'm looking at the player input guide on hytalemodding to listen to interactions on a block but I can't seem to make it work, is there any other way to get interactions on a block?
Or is there no way to add a custom component to a block and then listen to an interaction to that block?
Do you want your server to connect to a websocket in the internet, or do you want your server to provide a websocket that other applications connect to?
what have you tried
So far I tried listening to the packets and then doing something but turns out you can't listen to block interactions like that
I can listen to interactions with entities similar to minecraft but I'd prefer doing them with a block instead
is this an interaction for a custom block you've added?
No, more like adding an interaction to an existing block
Websocket Client on the plugin, that will connect to a webscoket server
Wouldn't I need to put the block file in the game itself directly if I make a custom block? idk if the mod I make would automatically download it but when I tried, the server wouldn't work unless if I put the custom block in the server files
everything is server-sided, so any item or block you add will get sent to the clients
oh wait are you saying you were trying to add the block through java code and not the asset editor?
Yeah, well more like I find the block in the world and then try to add a component to it
And that component would then be used as a marker to determine whether if the interaction is done on that specific block
is this still for the same premise you mentioned last time? Mine a block -> something spawns you interact with -> play a minigame -> get rewards?
Yeah, the same
whats stopping you from just adding a custom block (through the asset editor) and replacing the block that gets mined with this new block?
and then add your interaction to the block
Wouldn't I need to get new textures for this block though?
do you want your block to take on the texture of the block that was mined to spawn it or something?
No, just spawn a treasure chest
then you're all good, just duplicate a chest you want to use from the base game and name it something like "Gamble_Chest"
it will then take that chest texture/block model -- then you can just use your custom interaction
I just looked at the code and Hytale already includes io.netty.handler.codec.http.websocketx. So if you are comfortable with using that, you probably don't have to ship your own websocket client
Last time I tried to add a custom block like that, I couldn't do it
I may give it another shot and see if I missed a step or two, ty
it should be as simple as duplicating a block you want to use and adding it to your own asset pack
Oh afaik I just didn't follow all the steps at creating-block in hytalemodding
Like the folder structure
I will check that. Thank you for the answer 👍
Hey, I noticed that Simon talked about the current mod/plugin system should change. Do we have any more information or updates about the changes?
Not sure what you're referring to. Has he said anything recently that differs from the vision laid out in the Modding Strategy blogpost?
https://hytale.com/news/2025/11/hytale-modding-strategy-and-status
The only recent development on that front that I'm aware of is that Kaupenjoe is now the Modding Ambassador for Hytale, which means he is collecting and organizing feedback about modding tools and APIs
trello com/b/BrIJDc31
Bro just like you, I have no idea why that fixes it, but you helped me a lot by pasting that piece of code hahaha
So I did that, the item's name and ID are correct but once I place the chest, it says Small Ancient Chest instead of Artifact Chest
Make sure you're changing the translations in your Server/Languages/en-US/server.lang file too
Hahahaha yeah It was awesome, i got so mad
I'm kinda using a different configuration of the server where it automatically uses my current mod files without me having to build and replace the jar file
I made that directory under run/.cache/prefabs/Hytale_Hytale
I'm assuming that's where the server files are, as there's nothing else related to a server in any other folders
it needs to be in your src/main/resources directory...
It was there in the mod files, do I have to add that to the server too?
Oh wait, think it was in Common, not Server
that'll do it
Nope, still won't work
Made sure the directories were correct, maybe I should send the json here instead?
I have no idea without looking at your project setup
I'd send a ss but I don't think I can here?
add and send it to me if you want
or hop in a less restrictive modding discord like the hytalemodding one 🙂
Oh there's a seperate discord like that?
Pm u
for what?
Is it true that hytale is changing its UI Creation System? Or is it there to stay
Less restrictive moddin discord
its just the hytalemodding discord
Hi, is there a way to bulk set blocks through code?
yes, but you'll have to do a deep-dive of the api for the BuilderToolsPlugin to find out how it works. In it's current state, it's very verbose and doesn't seem to have many "ease of use" utility methods.
wondering how u guys stress test your plugin
Hey does anyone know how I could include my static assets from the asset editor inside of the compiled jar file?
Yes you can. Put them into the src/main/resources folder, next to your manifest.json
src/
main/
java/
my.package/
...
resources/
Common/
Server/
manifest.json
build.gradle
Thank you :]
Oh also make sure to enable "IncludesAssetPack": true in your manifest
Oh yeah that was probably the thing that was missing, thanks a lot lol
you mean like adding some custom assets to a mod/plugin?
ohh you got answer nvm lol
Hi, I handle parkour timing server-side only, and since we can’t access client-side data, run times are affected by player ping and server TPS.
Has anyone found a reliable way to make timings fair or reduce ping/TPS impact?
You can deal with tps variation by using the deltatime you get from the tickingsystems
TPS variations can happen but are very unlikely, the main problem is player’s ping
Let me take a look 😄 @rugged drift Anything you would have more info on?
We use the 1.0.0 version of the Mod as it doesn’t create that config~ if you disable it on the Startup tab it’ll get rid of it 😉
Just a temporary measure we we build our own 👍
how can I check for players in the vicinity of a block from within the block?
please give me interesting plugins for your server, survival + RPG theme (levels, quests, bosses)
How can i make a timer for respawning ? (and prevent the players to respawn before the timer runs out ?)
Finally able to gain server mods from other servers
how i can PreventPickup items? exist some event?
InteractivelyPickupItemEvent
Keep in mind that only prevents the item from being added to the player's inventory. It will drop to the ground instead
like stay ground or come in inventory and drop immeditaly
the block will be broken and will be dropped in item from on the ground in the same position
"If I were a Hytale modder today, I would heavily focus on making mods accessible and growing my brand/name."
- Simon on x website
Does this mean Hytale will give out all plugins and mods of a server to all players?
Or is he only talking about maps and assets? Because if Hytale is giving away jar files to people that would suck
Does the server run the plugins and the end user consumes them?
OR
Does the server send the plugin jar to the end user?
I believe the server runs the plugins! Security issue if .jars being sent over.
That would be really bad if the end user got the java plugins - imaginge every newbie that hardcoded database access in the plugin for example
also its so stupid that people are buying maps and assets now that it will all be given away for free in the future
problaby only assets
Assets will need to be distributed.
I'm all for in-game mod browser (IF the creator decides to publish there)
the auto mod on here is silly
I cant post anything lol
Imgine spending 100s of hours creating assets for your community then it just gets stolen lol
Both "Plugins" and "Assets" are mods. Only assets are being sent to the client. Code will always stay on the server
Do we know that for sure?
Well I am talking about the future, that in-game mod browser
but this has always been clearly communicated. The client doesn't even have the capability to run java code
in-game mod browser will either only be for single-player, or for server owners to download mods into their server. Not to their users
I just feel bad for the kids that buy assets now and then those assets will be published for everyone lmao
But yeah I'm happy the code stays on the server - that way servers can be unique
Does this mean Hytale will give out all plugins and mods of a server to all players?
Only for people who want to use the mod discovery feature. You will always be able to sell plugins via your own website or third parties
If its like this then I am all for it - Simon wasn't very clear so there's a lot of discussion going on
and if you write private plugins you don't give to anyone and only use them on your servers, that is also completely fine
Great. Big Plugin Energy.
dani do you know if there way to edit client render
I see that servers are packed with a Assets.zip, could the data from that zip be accessed from a server plugin ? Does it requires the plugin to unzip ? ... I'd need to read the .png, stuff on runtime
The only methods I found was about the asset map, but not the assets itself
We can mess with most UI rendering, but that's about it at this point. Shaders are coming in the future for example
guys how did u enable the hitbox debugging line ingame?
is it possible to make million zero to 1m billion zero to 1b? with current
UI sprites are very limited
/hitdetection i believe?
I don't understand the context of what you're asking about
let say there currency mod with gold coin is it possible to make items show not 1000000 in inventory but say 1m etc 10m 100m
I haven't seen anything to do that
Maybe you can introduce higher denominations? Like 1000 copper = 1 silver, 1000 silver = 1 gold
okay thanks
Where do I find the reference stuff for mod making?
hmm doesnt seems to show anything
you can decompile the jar file and look at the inbuilt plugins, or check the source code of plugins on curseforge. I also learned a lot from youtube tutorials by TroubleDEV, Kaupenjoe, and Hyphen45
Is there support for any animation in Custom UI? I'd like to add a fade in/fade out style effect on some things
There is support for animated sprites. For more complicated things you might need to send an update to the client every tick
Kaupenjoe was just recently (~2d ago) enlisted as the official Hytale modding ambassador as well.
Has anyone messed around with large quanities of aggressive npc's? Ive been working on a plugin thats for horde based combat, and it seems that when the entity count is greater than around 100 targetting the player, npc's stop being able to properly target the player. Even if the count then drops well below 100 (to 10 for example), those npc's that werent able to target the player seem completely unable to target the player, even if they are directly attacked by the player, they will continue to ignore them. Is there any knowledge of how to fix this kind of issue? Or is the only way around this to simply keep entity count below the threshold where targetting starts to break?
i have this error:"failed to connect to server, An exception occurred when adding to the universe" some one can help me?
guys stop lying the games fine
bro i have this problem...
Where can I get a list of all available block ids in hytale i.e. "Rock_Rubble"
google hytaleitemids cant link site here
Thank you!
If you want it in code: BlockType.getAssetMap().getAssetMap();
Legend
Okay, update: the hosting admin installed Java 21 for me, the problem with the world disappeared, but another problem appeared: now mods written in Java 25 don't load. So it's a vicious circle.
java.lang.UnsupportedClassVersionError
Short question, did anybody Figure Out the Pipeline for npc healthbars? They seem to be the only Thing that I could Transform into a skyrim-like Quest Marker. The Game seems to have No other overlay that snaps to Something and is visible from very far away?
And through Geometry ofc*
whats yalls favorite bedwars server
That sounds bad.
is it normal that I save a prefab then try load it and it says it doesn't exist
What about particles? 😄 I don't know if they struggle very far away?
It seems like its more like there is some list with a maximum amount of entries stored somewhere in the games files, and as each npc over 100 tries to join that list, the npcs that were in the list get pushed off, and not properly removed from the list, so the npc still thinks its supposed to be targetting something but doesnt know what its targetting, so it cant be added back to the players targetting list. Would anyone happen to know where a list like this, or where the config file for npc targetting could be?
You could attach a Nameplate component to an invisible entity and keep it at a fixed distance between the player and the target
Unsure if they're visible through blocks though
Anyone else dislike the use of encapsulation when it's stuff like:
private String foo;
public String getFoo() {
return this.foo;
}
public void setFoo(String a_foo) {
this.foo = a_foo;
}
At that point it should just be a public variable. (Asking because they do this in the Universe class with the playerStore member.)
Are there any animation options for custom UI? I want to create translate, fade in/out, etc. and just looking at options.
How do i force an asset to start in on state when placed? it seems to be in neither. I am using the lantern as a starting point but isn't technically in the on state so doesn't have the on animation or particle effects
it's just OOP conventions, setters-getters
Yeah, but like, using it when they do nothing just feels stupid. Setters and getters that do stuff I can understand, not when it's literally just reinventing public variables but it's slower because function calls add extra overhead.
I dislike the boilerplate too. C# at least has a mechanism to reduce it. You can do things with a method that you can't do with a member, like taking a method reference
Use kotlin 🤷♂️ kt var foo: String has all 3 of those
Well C# is the better Java.
@quartz plover I would, but I abhor how they do typing syntax.
Is anyone aware of a method to forcefully change one chunk to a different biome. Or a specific portion of the map to another biome?
Something akin to //setbiome in Minecraft? Via either commands or a brush, anything?
Is it really that bad? Types on the left vs types on the right doesn't sound that big of a problem to me, there are many languages that do either one
Yeah, it exists, it's a default command in the game.
@quartz plover I know it's a personal thing, but I always want my types on the left, because I care about the type of the variable first, and then what it's called.
it just makes more sense to say "I want a string named foo" rather than "I want a variable named foo that is a string"
Do you know what the command is? I've been trying to look for it and can't seem to findout what/where it is wherever I look
Less important if you make liberal use of implicit typing
I despise implicit typing with a passion. I explicitly type my C++ foreach loops because of how much I hate it.
@pseudo prawn Have you checked with the /help menu?
personally I don't hate it, but it does help my head get around what each thing is without relying too much on names
The distinction in kotlin is var vs val vs fun, all of them can be foo that yield you a String in with different behaviours
Implicit typing isn't that bad with proper IDE support with inlay hints
only mention of biome is the /player zone to show what biome they're in :/
You know what the type is, it's not like python or javascript
I think python and JS have permanently turned me off from any type inference. Then again, I do a modified version of Hungarian and prefix my arguments with a_ because it helps me tell arguments at a glance, so maybe i overcorrected.
You're talking about dynamically typed langauges, not type inference though
You still have to type your class fields, method params. It's just local variables within scopes that don't need explicit types
Just upcast everything to Object /s
Yeah, what I'm saying is that dynamically typed langauges turned me off of type inference.
I believe I found the reference to the collector of combat targets, but I have no Idea how to find the file that defines it. In the Component_Sensor_Standard_Detection.json file, each sense has:
"Collector" : {
"Type": "CombatTargets"
}
So im assuming there should be a collector class that is what stores and manages all combat targets.
Anyone happen to know of a way to find a collector class, or where this field is referencing to?
You are an evil evil person.
If this were C# I'd say mark everything dynamic :3
: |
I'm getting flashbacks to people using var and auto.
var != dynamic
Again, the distinction between type inference and dynamic typing
Two very different things
there's absolutely nothing wrong with defining variables with var in C#
On statically typed languages with type inference there's no chance you're going to use an Int variable as Float, any good IDE will show you the actual type without you having to type it all out
I know, I'm saying the dynamic keyword reminded me of the var and auto keywords.
Nah, I always want to know the type of my variables by their type, var always feels like it's jabbing a coal into my lower stomach and rolling around in there.
I almost always use inference when declaring a variable where the type is obvious. Like
var str = "String"```
just hover over the variable with the mouse, it will tell you the type
: |
@median lintel When I'm programming I don't want to have to move my mouse over a variable I can see on screen to see it's type (when it's declared), I want to keep typing what I'm typing.
okay now that's just criminal
And you're using inference every time you skip explicit type parameters
you cry too much about simple things
ANY good IDE will render the type inline, without having to hover over it
Yeah, I'm a programmer, what is the point of being a programmer if you don't preferences for how you code?
@quartz plover I, have never seen that, except in python for some reason.
my preference on how to code is that it should work and the file structure shouldn't look like a mess, that's it
Var is a bad pattern. It is code obfuscation.
Not even an opinion on how the brackets should be formatted?
: |
I can't even imagine using newline bracket openings.
All jetbrains IDEs, vscode, zed etc. have this feature. You might just have it toggled off
I use vscode and nvim as my two mains.
good practice
You are actually the kind of person whose code makes me want to break my head on a desk.
I mean I prefer them like this:
public string Example() {
//blah blah blah
}
but my IDE forces it to be like this:
public string Example()
{
//blehhh
}
Hm??
: |
Just override it in the IDE so it does the first one, think about all that wasted vertical real estate.
@thorny minnow That pattern is one that brings trauma flashbacks from Python and JS. I hate it so much.
it's not really a problem to me, I can get used to it
Intellij doesn't really care about brackets luckily
what 🥀
Yeah, but why on earth would someone willingly use Intellij. That editor is cancerous to use.
What do you use sockmit
At least it's not Eclipse
That's true.
@thorny minnow VSCode because windows, and NeoVIM.
if you use any jetbrains ide for something that isn't Java then you're just a corporate drone
VSCode for Java dev 💀
Anything is better than jetbrains. Sans eclipse. Eclipse is worse than jetbrains.
10/10 ragebait
You think I'm joking? I'd use notepad over Intellij. I did for like half a year.
what is that one java ide that is a cube logo? i forgot the name, but whatever that was, it is NOT better than intellij
NetBeans?
YES
Intellij user of 4 years, can never imagine using another editor as an IDE. For small config tasks other editors might be fine but never for full-on programming
If you're going to do full on programming, then why would you do Java?
wdym lmao?
vscode is just fine for java dev, and can be on par with jetbrains with some work to configure it
it's good for enterprise systems
Bruh apparently stating my IDE preferences is advertising
Because java is an actually great language. I actually prefer kotlin but java is good on its own as well.
Oh, you're an enterprise dev. That sounds really sad.
@quartz plover : | Next you're going to defend JavaScript.
no one said anything 🥹
No the server blocked my message!
ok to be fair, js is impressivly fast for what it is, but only because the best minds of a generation spent years trying to make it less horrible
Even javascript has its uses. If you use it on the backend you're committing war crimes, but it's the standard for the web
Yeah, and the web is wrong for using it. I am not weak willed enough to not call them out for their abject horrendous failure of a language choice.
Yeah, wasted time, they could've just made a good language.
And what is a good language in your opinion?
after using typescript I refuse to use javascript for frontend
You can write bad code in any language
the one that doesn't exist yet. all programming languages are bad, some bads are not equal tho.
though some make it easier
cough cough skript
Hmm, I like C, Zig and Odin both seem pretty good, I dislike odin syntax, but that's just preference.
just write in Go
C????
im a C user, trust me, C is full of odd choices, and the standardization is kind of nightmarish sometimes
though I know a lot of go haters
I've heard go isn't that bad, but I haven't personally tried it yet.
@strong musk I just said I like C, not that it was good.
Back to Fortran with you!
I like C as well, Zig sucks though. There's literally no formatter, the existing formatter can not be configured and you're stuck with the preferences of its creators
yeah fair I like C too
actually I like zig too, the comp time stuff seems really nice
That's true, I just ignore the formatter and manually format.
Now a really bad language that I enjoy is C++, but I would never dare to call that a good language. I just enjoy it because it lets me do whatever I want.
Manually formatting is a nightmare, who has time for that. I'd rather spend time making the code better than making the code look better
oh I dont like working with C++
it has some cool stuff, but its always hacked into the language, and usually is weird to work with
I mean. I type my code formatted. Because I'm not lazy.
I like Swift a lot, like a lot a lot, but the server community is at odds with what I want, so I'm mostly using C#, and TypeScript
though my favorite language to work in is clojure(sometimes scheme, if I want to be interoperable with other langs like C)
I think C++ is fine, but the build tools for it make my head hurt sometimes
I remember heavily disliking clojure syntax.
@clever horizon I... I would say C++ is a bad language.
its actually very nice(imo)
Swift is really nice as a language ngl, I just wish it had more uses beyond on apple products. They're working on making it open source and stuff but it's still so bad
WORLDGEN V2 SUCCESS: We were able to get a Prefab to Generate as part of Worldgen V2 in a Plugin/Mod. It was very difficult and the documentation is sparse. So I thought I'd provide some detailed information in a GitHub repo: github -> papercraftgames -> motivations-of-gaia. You can also find it from our site easily at Papercraft dot Games.
@silver jolt @icy cove @real minnow @violet vine If you can help me find a better place to make sure people get this information to use Worldgen V2, please let me know.
Special thanks to @finite crane for helping me finally break through my log file errors and warnings.
Fair enough, I always liked more C style snytax.
@real canyon You're welcome.
even its creator says that "Within C++, there is a much smaller and clearer language struggling to get out."
The language being C
C syntax is fine, but it makes comp time macros a lot weirder
It's been open source since year 2, the issue is just the surrounding community. Of course there's Vapor, but that's unfortunately the only non-apple tool that's worth mentioning. The C and C++ interop is great!
Yeah. C++ is fun because you can just play god and do anything. Very bad lang though because you can play god and do anything.
A good language has a god mode, a great language makes it clear that it's an escape hatch
Very true.
~~please don't look at all the UnsafeMutableRawPointer<T> in my Swift code ~~~
lisps get like, literally the cleanest, and probably easiest to use(if you know the lisp your programming in) macro system for free
I can't stand writing S-expressions
The downside is that the syntax is polarizing.
yeah the syntax is weird, but it does wonders for macro systems
you get used to it eventually
Most likely inspired by Lisp, I really like both Swift's and C#'s macro systems (Swift's moreso than C# because it's way more traceable heh)
I hate that java lacks one tbh, and that most people just modify the bytecode to do stuff like it(thats awful)
I just hate Java.
What do you mean by C# macros? Do you mean generics?
C# RoslynAnalyzer just going "if you can write a parser, then yes, by all means make a YAML to C# thing"
Annotation processors and compiler plugins are like the only option
yep(and its horrible, why would we implement macros at the bytecode level for anything non-trivial 💀)
honestly, even C has a far better macro system than java, and while yes, its frequently misunderstood and abused, it can be a life saver
Well, kotlin is doing pretty good on that end imo with ksp and kotlinpot, it makes generating new files pretty nice
Tbf you could just run a C preprocessor on java before compilation as a gradle task 💀
Fastutil is created this way
c preprocessor being (mostly)language agnostic moment
Oh, the other thing about Kotlin that makes me annoyed, is the lack of semicolons. That one is pure preference though.
RoslynAnalyzer allows to analyze the C# code (and even more than that) and produce more C# code from that, so you can annotate something and then get code generated. This is btw how the regex annotation work
tbh I get it, but its annoying to me that it both allows them, and doesnt require them, because it means that you end up with a bunch of inconsistent projects
There are semicolons, nobody is stopping you from using them. In fact, you need semicolons to put multiple statements on the same line
Oh, I didn't know that. I do not like that at all. That's an issue odin has as well.
Java's type system is a joke. You lose all generic info at runtime. That's my biggest issue with it imo
: |
Yeah but multiple statements on the same line is usually something annoying.
but like, look at this C source code, doing this in vanilla java would be god awful
STRUCT_S(con_connect,
NULL_BITS(1,
NULL_BIT(identity_token, 0)
NULL_BIT(referral_data, 1)
NULL_BIT(referral_source, 2)
)
F(int, int32_t, protocol_crc)
F(int, int32_t, protocol_build_number)
F_FXD_L(ubyte, uint8_t, client_version, 20)
F(ubyte, uint8_t, client_type)
F(uuid, uuid, uuid)
OFFSETS(,
VAR(username,
F(var_str, lstr, username))
IF_VAR(identity_token,
F(var_str, lstr, identity_token))
VAR(language,
F(var_str, lstr, language))
IF_VAR(referral_data,
F_VAR_L(byte, int8_t, referral_data))
IF_VAR(referral_source,
F(host_address, host_address, host))
))
PACKET(con_connect, PACKET_CONNECT_ID, false)
STRUCT_S(con_disconnect,
NULL_BITS(1,
NULL_BIT(reason, 0)
)
F(byte, int8_t, type)
IF_PRESENT(has_reason,
F(var_str, lstr, reason))
)
PACKET(con_disconnect, PACKET_DISCONNECT_ID, false)
Is this windows code. Why is everything MACRO_CASE?
because those are macros
its the connection packet definitions from my C hytale server
those define readers, writers, uniform pretty printers, and free-ers for my server, along with structs
Java's generics being lost at bytecode also means the JIT can't optimise stuff that might've benefitted from it (no vtable lookup anyone?)
Okay so, i know i asked this before, but does anyone have a good idea on how to place water/lava PROPERLY?
: |
Imagine typing Macros in MACRO_CASE.
I have one of those as well: rs define_packet! { Connect { fixed { required protocol_crc: i32, required protocol_build_number: i32, required client_version: FixedAscii<20>, required client_type: ClientType, required uuid: Uuid, } variable { required username: BoundedVarLen<AsciiString, 16>, opt(1) identity_token: BoundedVarLen<String, 8192>, required language: BoundedVarLen<AsciiString, 16>, opt(2) referral_data: BoundedVarLen<Bytes, 4096>, opt(4) referral_source: HostAddress } } }
yeah yours is a lot nicer because rust
the OFFSETS macro is already kind of weird, while I could probably do it again to get something similar, it would be god awful
So for the ForgottenTemple does it create a new world everytime?
I do not like how that looks. Granted, I never did like rust syntax.
You have a C hytale server? 👀
I'm currently looking into the cursed task of splitting a hytale into microservices for cloudnative scalability. How invlolved is it to implement your own thing?
No, it creates a new instance per portal.
Well no, generics are purely compile time in Java. An ArrayList<Integer> and am ArrayList<String> are both the same at runtime
horrible, the hytale protocol is actually massive, and dramatically more involved than the mc protocol
it also requires implementing a huge amount more stuff before making it into a world
ArrayList<Integer> is gross
IntArrayList please
Is there a way to create an instance through code?
Yeah, but I'd use interations if I where you, because those already have ways to handle consistency. No need to reinvent the wheel.
Okay thank you I will look into it, I assume I can just look at the portal and see what interaction it uses?
I agree. Type erasure also prevents you from using primitive types with generics
Yep, it also has an extra key: "InstanceKey" which if set lets you make that interaction always send you to the same instance.
Swift is getting more and most Rust features, with an (IMHO) more sane syntax (just a shame it's not really popular on non-Apple)
also my C hytale server is kind of funky, but at least it no longer leaks half its memory every time a player joins
there is a list of issues I have to fix still, some being worse than others
Oh that is perfect thanks for the info
My issue with swift is dumb:
I hate lack of ;
And I hate let and right hand typing.
That and it does the same stupid thing odin does where () are optional.
How would that work? There's a rather large app state (mostly assets) that most parts of the server needs to touch, that would be hard to split up. I've never dabbled much in microservices, do lmk if I'm just being dumb and don't know
Anytime.
oh thats true too, unless you mean splitting worlds and stuff
but scaling a single instance would be hard, really hard to do right
Actually that makes me think, maybe we could offload the asset packets to a different server, that may be a proper cdn, or like cloudflare storage
How would i go about making something happen in the future?
For example player eats magical apple and after 3 in game days something happens to him
I actually had this idea yesterday
so that you just send over your custom assets, and the proxy would inject all of the vanilla assets
That would solve the "player being able to request all assets" thing
I think there might be a way to add a persistent timer to an arbitrary entity.
I'm new to Hytale (just got it today), can you elaborate on app state? If it's "just data" it might be implemented with something like REDIS, or it can have dedicated service for it
If it's absolutely everything, see, that's what I fear might be difficult to pull out heh
Yeah but if player leaves the game then wont reference to him be wrong and this timer wont work? Or should i use username to identify player or something
The Hytale team is planning to support that as well
You would probably add a component that includes the timestamp for the event and a system to check them
What I meant by persistent timer is that it's saved across saving and loading the game.
oh thats good lol
They have something similar to that with the git integration right? Well, not really like that, but in the vein of an external thing providing stuff.
ooh, nice, so it could be any server
though I hope they make it so that the server doesnt load the assets already in the cdn into ram
mostly because the server would never need to use the oggs and stuff
Sending a link would mean not doing that
eeh, the server would still do it if they did what they did currently(ie: load the whole assets.zip into ram)
and the approach would still be better even while doing that(albeit not perfect), because it would take network strain off the main server
my microservice based hytale server might actually not need to work, how much RAM does hytale require for say 5 players, what about 50?
they also need to load part of the assets.zip into ram even if they do that
Might require an overhaul of the asset pack structure. Because right now there are assets both in the Server and Common directories the server needs to function
Something like this might actually be perfect candidates to split into seperate servcies
just 10x the wattage of your microwave, should work fine
yeah I agree, assets cdn would be a good idea