#help-development

1 messages · Page 1306 of 1

mortal hare
#

that way you can manage permissions and other configurable stuff in the files and only the action logic inside the code, just like you already do with enchantments for example

#

commands/hello.json

{
  "type": "minecraft:literal",
  "nodes": {
    "world": {
      "type": "minecraft:literal"
      "nodes": []
      "permission": {
        "level": "minecraft:operator"
      }
      "action": "handlers:world"
    }
  }
}

example datapack json file

#

you would define permission levels are predicate handlers inside registries and actions as consumers of command dispatcher inside another registry

#

it even aligns with minecraft datapack fashion, i think its just a matter of time till this comes to vanilla NMS

echo basalt
#

didn't lucko do this

mortal hare
#

iiirc there's something like this but it it has its own syntax and uses some kind of weird configuration format

#

specifically for brigadier

#

what i would try to do is to make it as close to datapacks as possible

#

with json

echo basalt
#

lame

#

I wouldn't call it revolutionary

#

developers still need to link commands to actions

#

why use a config file for it over, let's say, a well built api

mortal hare
#

or change their behaviour in plug and play fashion

echo basalt
#

they'd need to know the full brigadier syntax

#

server admins don't care about that

#

they're really practical and would rather just have all commands that start with "/world *" disabled

mortal hare
#

either way configuration like this is hardcoded into source code with constants which do not change

echo basalt
#

what's the point of having hardcoded configuration in the first place, over, let's say, a typed API

mortal hare
#

so it must belong to config file

#

the same reason we have custom enchantments with actions we can have commands too

#

mojang already did something like this similar with custom enchantments in datapacks

#

where they assign actions of what enchantment does essentially but allowing you to register more enchantments in case you want to extend the NMS registry for that

echo basalt
#

It's a different scenario because we can already do custom commands

#

and even custom enchants don't use hardcoded json configs

unborn hollow
#

What exactly is ClientboundPlayerInfoUpdatePacket used for?

#

Like I know the name might be self explanatory but is there other applications than for making player npcs?

chrome beacon
#

It's used to inform the client of players

unborn hollow
#

Ty

young void
#

NOOOOOOOOOOOOO

pseudo hazel
#

lmao pay up

lilac dagger
#

ai is expensive

#

ah wait

#

this is pro+

#

i assume pro is less no?

burnt trench
mortal hare
# echo basalt and even custom enchants don't use hardcoded json configs
Minecraft Wiki

This tutorial explains how to create a data pack that adds custom enchantments.
The ability to add custom enchantments was added in 1.21, meaning this tutorial does not work in versions prior to it.
This tutorial assumes you know how to create a data pack.
Refer to Enchantment definition to learn about enchantment's JSON format used in this tuto...

#
{
  "description": "Reach",
  "supported_items": "#minecraft:enchantable/mining",
  "weight": 5,
  "max_level": 3,
  "min_cost": {
    "base": 1,
    "per_level_above_first": 1
  },
  "max_cost": {
    "base": 51,
    "per_level_above_first": 10
  },
  "anvil_cost": 4,
  "slots": [
    "hand"
  ],
  "effects": {
    "minecraft:attributes": [
      {
        "id": "block_interaction_range",
        "attribute": "minecraft:block_interaction_range",
        "amount": {
          "type": "minecraft:linear",
          "base": 1,
          "per_level_above_first": 1
        },
        "operation": "add_value",
        "uuid": "3a4f09dc-231d-41ac-8c6b-ba5adb86ac0c"
      }
    ]
  }
}
#

?

#

it does use operations, attributes which are registered inside NMS registries for custom enchantments

#

enchantments including vanilla ones are defined in the datapack itself

#

since 1.21

#

its just that bukkit api provides a programatic way to define them via the API

#

everything that can be configurable is being moved into datapacks and I adore mojang for this

#

datapacks already supports functions which are essentially a bundle of commands which can be executed in order to do something, you can use .mcfunction files to define command actions for brigadier registration
https://minecraft.wiki/w/Function_(Java_Edition)

Minecraft Wiki

Functions are data pack files, allowing players to run lists of commands.

This page covers how functions are defined and invoked in Java Edition.

#

of course you extend this with mods through injecting custom command handlers using NMS but the concept is already there

#

every component that mojang needs to make commands configurable and declarative is there

#

mojang is seeking to make datapacks its own server API but with commands in order to loosely couple version compatibility with newer or older minecraft versions

#

its starting to become a modern vanilla skript

#

advancements in datapacks already uses functions to give rewards to the players for example:

{
    "rewards": {
         "function": "test:test"
    }
}
#

tbh i more and more lean towards fabrics approach of modding minecraft client/server

#

it closely aligns with NMS

#

NMS is not what it was in 2013 anymore (spaghetti hardcoded mess)

#

and mojang refactors of NMS code are astounding since 1.13

#

i believe that developers should adopt datapacks as their primary source content creation, even if its limiting or can cause performance issues in some areas

#

if its limiting, you can always design a mixin for a fabric or a plugin for spigot which extends the datapack standard to add new functionality into the server which is not in the game server code yet, instead of hardcoding the rules into the .jar blobs or using server software specific configuration files like plugin config.yml

pseudo hazel
# lilac dagger i assume pro is less no?

yeah they have pro probably, but then they ran put so the only sane solution is empty your credit card a bit more so you can ask your ai how to write a progress bar or whatever

young knoll
#

I mean a lot of stuff is data driven now

#

But that’s really only for configuring things, like biomes and recipes

quaint mantle
ivory sleet
pseudo hazel
#

its a bit of a leap to go from 'nms has improved" to "we should all use datapacks for our plugins"

young knoll
#

Pfft

#

Use command blocks

ivory sleet
#

i do wonder whats the overhead if we regard executing a cmd through a datapack contrary to just invoking it directly w the command dispatcher

thorn isle
#

you say that as a joke, but aside from configuring the data-driven registries and such, datapacks are pretty much just copy pasting a bunch of command blocks and redstone into your world's spawn chunks

pseudo hazel
#

the command block, thats how it all started

#

classic

young knoll
#

I remember those old one command machines

#

Good times

mortal hare
#

without block ticking and other redstone nonsense with rideable commandblocks and other shenanigans

mortal hare
smoky anchor
mortal hare
#

it has more pros than cons imo

ivory sleet
#

since thats a more fair comparison since w datapacks u already know the command in mind

#

(usually)

mortal hare
#

I mean really how much can command handling really impact your server

#

i think its kind of cheap

ivory sleet
#

a lot of things are cheap on their own

mortal hare
#

not as cheap as API, but cheaper than entity ticking for sure

ivory sleet
#

its when you scale where issues start to arise

mortal hare
#

conceptually you can always register your own native mcfunctions inside registry via java if you care about performance

#

and just hook it up using namespace inside datapack

#

handling everything atomically through commands can be kinda awful for performance

ivory sleet
#

i mean yea but that wasnt exactly my point

young knoll
#

Datapacks are notorious for performance hits

#

If they do things onTick

mortal hare
#

well that can be performance hit even by using bukkit api by scheduling ticks

#

not as much as lets say datapacks due to overhead but if you suck you can make it happen 😄

young knoll
#

Yes but with Bukkit you don’t need to search through all entities every time you want to do something

#

You can just cache them by uuid

ivory sleet
#

i could see datapacks potentially being more performant than api in certain hotspots since they potentially receive better native support- correct me if im wrong but doesnt datapacks involve a lot of registry lookups, like a serious amount of it?

#

you obv cant create intrusives

mortal hare
ivory sleet
#

so lookup by namespace/resource key

mortal hare
#

by also providing the datapack standard suggestions to minecraft feedback

#

so that way they would be maybe implemented by mojang officially

#

just like with ecmascript standard

#

well this is an overstretch

#

but server modding community should embrace datapacks in a way to extend their functionality and then push them to the mojang devs as a PoC to implement them officially

young knoll
#

The biggest issue

slender elbow
#

mojang? standard?

young knoll
#

Is datapacks load before plugins

#

Shut up paper

ivory sleet
#

dovidas, so you still stand by this?

i believe that developers should adopt datapacks as their primary source content creation, even if its limiting or can cause performance issues in some areas

slender elbow
#

mojang standing by a "datapack standard" just means they can't refactor things when they should

mortal hare
#

yes, but i believe that developers shouldnt use scoreboards to store data in a ram and instead do mixins which extend datapack standard to provide more efficient algorithms

slender elbow
#

datapacks are already versioned and pretty extensively documented

mortal hare
#

basically instead of trying to avoid datapacks with custom API's which do not match NMS anymore that well, embrace them by wrapping extensions in a way that follows vanilla nature

ivory sleet
young knoll
#

How do you think datapacks store things

ivory sleet
#

but mixins n api dont go very well together

slender elbow
#

let me introduce you to the concept of
putting things in a map

mortal hare
#

by implementing those extensions through fabric mixins as server mods

thorn isle
#

anything remotely recursive or programmatic with datapacks is going to perform like shit

#

because your "stack frame" is now like 1,500 lines of command parsing code

mortal hare
#

you compute the command tree once and be done with it

#

im not saying write everything in .mcfunction

slender elbow
#

except that you can't do that for every command

young knoll
#

Datapacks still store data in chests placed in a force loaded chunk by the world border

thorn isle
#

that's called inlining, and we do it in the programming world, and there is a limit to it

#

you can't inline the entire application

ivory sleet
#

you sure?

slender elbow
#

one of the biggest performance hogs in data packs is the fact that so many commands need to be parsed every time they run

#

if you remove commands, data packs aren't really an issue

#

because it's just configuration

young knoll
#

Parsing selectors isn’t cheap

mortal hare
slender elbow
#

but then that is no longer a command tree you parse?

mortal hare
#
{
  "description": "Reach",
  "supported_items": "#minecraft:enchantable/mining",
  "weight": 5,
  "max_level": 3,
  "min_cost": {
    "base": 1,
    "per_level_above_first": 1
  },
  "max_cost": {
    "base": 51,
    "per_level_above_first": 10
  },
  "anvil_cost": 4,
  "slots": [
    "hand"
  ],
  "effects": {
    "minecraft:attributes": [
      {
        "id": "block_interaction_range",
        "attribute": "minecraft:block_interaction_range",
        "amount": {
          "type": "minecraft:linear",
          "base": 1,
          "per_level_above_first": 1
        },
        "operation": "add_value",
        "uuid": "3a4f09dc-231d-41ac-8c6b-ba5adb86ac0c"
      }
    ]
  }
}

this is not a command, this is declared enchantment type which is loaded

slender elbow
#

a command is a command, not a command is not a command

#

yes, that is not a command

#

shockingly

young knoll
#

That’s an enchantment definition

ivory sleet
mortal hare
#

commands/hello.json

{
  "type": "minecraft:literal",
  "nodes": {
    "world": {
      "type": "minecraft:literal"
      "nodes": []
      "permission": {
        "level": "minecraft:operator"
      }
      "action": "handlers:world"
    }
  }
}

example datapack json file

slender elbow
#

you compute the command tree once and be done with it

thorn isle
#

you can't replace a plugin with these

mortal hare
#

this is the command node declaration

slender elbow
#

but not all commands can be parsed once

mortal hare
#

what gets executed you implement it in java and register manually via nms registry or implement it via .mcfunction

slender elbow
#

that's the point

#

i'm talking about command execution, not definition

#

the definition happens once, yes

#

it has to

#

but every time you need to execute a command it needs to parse it

#

and that is the expensive part

mortal hare
#

and that's that im trying to achieve, declare command definitions, not handle everything in .mcfunctions

slender elbow
#

that is the sole reason data packs can be a performance problem

mortal hare
#

you can but its better to use nms registries for that

slender elbow
#

you can't do shit with simply a command tree declaration if you don't run it

young knoll
#

@e[scores={poop=1..5}]

mortal hare
#

expose brigadier definiitions through datapack config files

#

and attach actions through namespaced keys

young knoll
mortal hare
#

basically im trying to implement declarable command definitions in datapacks, and then command executions with specific namespaced key like "minecraft:warp:spawn" which will get bound either with .mcfunction file which executes command or you can use a mixin to register your own custom command executor via the code

#

"action" key is Consumer<CommandDispatcher> which will be either parsed .mcfunction file or your own custom implementation passed manually

#

just like they do with custom enchantments

#

or with advancements

#

with custom enchantments there a namespaced keys with registered effects for an enchantment in a registry

thorn isle
#

and i suppose all of these command executions will strictly be no-args consumers and receive no parameters, or we end up encoding the parameters as strings

mortal hare
#

why do you think so

#

for .mcfunction files the functionality would be limited but for manual registration you can expose the whole command dispatcher context

#

just like brigadier already does in NMS

#

the point is to remove hardcoded declarations of command nodes from the code and put it inside declarations so that you can tweak those things easier without recompiling code

#

bukkit plugin.yml already does something like this with its command section

slender elbow
#

lol

mortal hare
#

but its outdated in a way that it only supports handling root command node without any child nodes

#

its stuck in legacy era prior to brigadier

thorn isle
#

and how precisely do i for example pass a blockposition that isn't a "compile-time constant" to the command handler?

mortal hare
#

you pass it as a numeric argument inside a command and use brigadiers command dispatcher context to retrieve the value?

thorn isle
#

so we encode it as a string

mortal hare
#

bruh

#

if you do onCommand and get the argument is it int by default?

#

your argument doesnt make sense

thorn isle
#

commands parse strings

#

in the trivial case of a blockposition which is just three integers, parsing it is simple and fairly cheap

mortal hare
#

im not saying EXECUTION in a config files. DECLARATION of static command nodes should be inside configuration files

thorn isle
#

but for more complex data, this will not hold

slender elbow
#

what problem does this solve anyway?

thorn isle
#

and that means throwing strings back and forth

mortal hare
#

you already do this in bukkit command api

thorn isle
#

yes, for manually issued commands

#

now imagine if we did it for something that gets invoked on player move

#

every time damage is dealt to an entity? functions can be invoked very frequently

mortal hare
#

i clarified that .mcfunction files are just one way to create command executors. you can make your own custom command executors by doing a fabric mixing to nms registry which would handle things in java fashion for you

#

.mcfunction command handler are just being used for simple text based commands

thorn isle
#

yes and i'm saying that for those executors to do anything useful, they need to receive some kind of context to operate on

mortal hare
#

ofc, and im not negating that, but the same principle goes for custom enchantments

thorn isle
#

and to get that context to them, since they are commands, they need to be encoded as strings, which is haram

mortal hare
#

yet mojang implemented that knowing that

#

in 1.21 with enchantment effects are being in the code but declaration in config files

thorn isle
#

mojang is hardly a source of ground truth

mortal hare
#

it should be a hybrid nature. you can expect to put everything in commands

#

if you want performance register a custom command handler inside registry which handles things for you and then reference that handler via namespaced key in brigadier declaration configuration file

wet breach
#

have to realize that some things they do is in relation to realms

slender elbow
#

i still don't know what the problem is that this is attempting to solve

mortal hare
#

by providing access to child nodes

#

instead of whole ass command

slender elbow
#

and why does mojang care about plugin.yml when someone could PR a brigadier exposure api?

wet breach
#

never had an issue with plugin.yml and commands =/

mortal hare
#

by controlling permissions levels, executions aliases per child node declaratively instead of doing parsing outside manually

slender elbow
#

like, why is mojang the one responsible for doing this?

#

instead of the api responsible for requiring a plugin.yml in the first place?

mortal hare
#

...

wet breach
#

permission levels? What issue are you having with commands and permission levels?

mortal hare
#

its so hard to explain lmao

wet breach
#

there is only like 3 permission levels provided by the vanilla server

#

and you can set them in the plugin.yml if you really want to

mortal hare
#

because they know its used feature

#

they dont ignore server modders

slender elbow
#

you say the problem is "plugin.yml command section [not] providing access to child nodes"
then the people responsible for requiring a plugin.yml should be responsible to change that, not mojang in their game

thorn isle
#

i wouldn't mind having some expanded datapack api that lets us register a receiver for a function through the bukkit api, but then again the extant datapack api is basically not very extant so that goes for a lot of related things

wet breach
#

I don't use datapacks

#

have yet to really have a use for them

slender elbow
#

and you don't have to

mortal hare
#

because they're limited in a nature

thorn isle
#

only if you want to fiddle with registries without nms, really

wet breach
#

well I can't really see them being more free then default language either

mortal hare
#

and if mojang expanded it as it does now it can replace like 60-70% things that bukkit does just on configuration

#

there's a reason why they moved lots of server.properties rules inside nms registries too

wet breach
#

but the things it replaces in bukkit does it really matter though? o.O

mortal hare
#

and there would be better parity

#

with vanilla NMS

#

lets be real bukkit api is an outdated api

#

which works

#

but requires hacks to do so

thorn isle
#

some parts of it like world generation are, most of it not really

wet breach
#

outdated? And what has replaced it?

#

if nothing has replaced it, then it isn't outdated

thorn isle
#

tbf if you want to do custom world generation you would probably be better off with datapacks than bukkit at this point

mortal hare
#

i have high criticism for spigot for not adopting brigadier api or at least wrapping it in a decent way

wet breach
young knoll
#

Custom worldgen still doesn’t work on realms

thorn isle
#

i don't really think the solution is whatever we're talking about currently though, rather maybe a worldgen 2.0 api might be in order

mortal hare
#

the way spigot wraps brigadier is a massive hack just for the sake of legacy compatibility with old api standards

young knoll
#

That’s true for a lot of the api

wet breach
#

not sure why people care so much about command frameworks

thorn isle
#

never had a problem with them

mortal hare
#

we dont have neither proper text components nor commands which are miles better in NMS

wet breach
#

I have personally not cared much about brigadier and whatever it does.

thorn isle
#

it's alright but i'd rather not tie myself down to it

wet breach
#

I also don't attempt to block input either or whatever that preview thing is lol

#

since if you don't have access it doesn't really matter if you know the name of a command. I would make silly command names just to mess with people with that

young knoll
#

I mean we do have proper text components

#

They just can’t be used in most places

young knoll
#

Blame choco

wet breach
#

idk what is meant about there isn't proper commands either

thorn isle
#

personally i think bukkit does everything that needs to be done in terms of commands

#

string goes in, tab completions maybe come out, something maybe happens

#

everything else is up to what you want to do

mortal hare
#

it skips argument types which client supports and parses everything as string literals

#

when client supports parsing boolean, integers, floats out of the box

young knoll
#

Yeah sadly you don’t get the nice errors on the client like you do with vanilla commands

wet breach
#

not sure why I care about the client here with those things

thorn isle
#

well... the server receives a string from the client

#

if you want to parse it with your magic mumbo jumbo, you can do that, just like the client does

wet breach
thorn isle
#

precisely

wet breach
#

it starts to become a bit of a headache in terms of security if the client is sending anything other then a string when it comes to commands

slender elbow
wet breach
#

depends really

#

when ever I run a server, my players are not paying me and as long as that is the case then no I have no reason to really care

thorn isle
#

lol

#

well to be fair good error messages and feedback are always better

#

but i don't see what prevents you from emitting proper error messages with the current api

wet breach
#

that is what I have always done =/

#

always seems people want to do less and want more to happen all at once

thorn isle
#

not sure how it is on spigot but on paper at least you can register the command parameters through brigadier so the client gets the realtime parameter hints as well, but personally i think just tabcomplete is enough

mortal hare
#

why bother doing something that's already there

slender elbow
#

wat

wet breach
#

what source code are you reverse engineering?

eternal night
slender elbow
#

how did we get here

thorn isle
#

string goes in, feedback comes out; that is all

#

how you do that depends on you

young knoll
#

The error messages come before you even send the command

mortal hare
#

on server side

thorn isle
#

you can use an existing library or a framework if you want, or you can reverse engineer source code for ghidra or whatever if you like, or you can write something simple yourself

#

if parseint throws, reply with the exception message

young knoll
#

I mean the after sending ones are trivial with the existing api

#

It’s the before ones that aren’t

thorn isle
#

yeah for the realtime parameter hints you do need to register it through brigadier so that the client can see the definition

#

i'm not sure if spigot supports this, paper does but i've never used it because imo error messages + tabcomplete + command help is enough

wet breach
mortal hare
#

it declares the commands as one argument string literal ones

#

for every registered command

#

in a brigadier

#

which is a hack

slender elbow
#

i don't think it is

wet breach
#

it means I am using up processing for no reason though

thorn isle
#

it's limited to simple pattern matching which is an acceptable level of complexity imo

slender elbow
#

no you aren't

#

wat

mortal hare
#

oh no my precious 1ns

wet breach
#

it adds up

slender elbow
#

it really doesn't

#

it's a client thing, not a server thing

thorn isle
#

probably cheaper than spellcheck, plus it happens on the client so it's not my problem

mortal hare
#

you know what's more expensive? rendering the whole 3d scene on the gpu

slender elbow
#

okay

#

you know what is more expensive? calculating prime numbers up to a trillion

#

thank god i don't do that on my server

thorn isle
#

i don't do it on my server either, i hire third world people to do it for me by hand for cents on the hour instead

wet breach
thorn isle
#

depends on what you're doing sort of

mortal hare
#

someone had a thought about this but not sure who anymore

thorn isle
#

for example, there's a firm that hires indians to solve captchas despite image classification models being very cheap these days, because the indians are cheaper still

#

like cheaper than the electricity to run the model

wet breach
#

I was more or less talking about the prime number thing, but I guess anything else works too

thorn isle
#

all the reviews are 5 stars except the people working there who complain that they don't get paid

slender elbow
#

at that point just go flip burgers at maccas 💀

worldly ingot
#

mfw maccas 💀

#

You've been hanging out with too many Australians

slender elbow
#

i fail to see what the issue with that is

worldly ingot
#

You're right. Australians are kinda cool

slender elbow
#

i have met far more australians than canadians

#

so

worldly ingot
#

What are you getting at, huh!?

slender elbow
#

unless you come and fix that, australians are cooler

#

and they are funnier too

#

and they don't neighbour with the usa

worldly ingot
#

I mean...

#

TECHNICALLY

wet breach
young knoll
#

?services

undone axleBOT
tender shard
#

Is it possible to use Material#getMaterial without enabling legacy material support? It seems like using that method, even when setting the boolean param to false, it enables legacy material support

source: https://paste.md-5.net/axapajabuh.java

log:

[18:06:15] [Server thread/INFO]: [PrimeEssentials] Enabling PrimeEssentials v2.0.3-SNAPSHOT
[18:06:15] [Server thread/INFO]: [PrimeEssentials] Register LOCAL database provider for EssentialsDatabaseProvider
[18:06:15] [Server thread/INFO]: [PrimeEssentials] Schema is up to date
[18:06:15] [Server thread/INFO]: [PrimeEssentials] [ACF] Enabled Asynchronous Tab Completion Support!
[18:06:15] [Server thread/INFO]: [PrimeEssentials] Successfully hooked into PrimeFriends.
[18:06:15] [Server thread/INFO]: [PrimeEssentials] Register command defaults
[18:06:15] [Server thread/WARN]: [PrimeEssentials] Inventory Framework is running as a shaded non-relocated library. It's extremely recommended that you relocate the library package. Learn more about on docs: https://github.com/DevNatan/inventory-framework/wiki/Installation#preventing-library-conflicts
[18:06:15] [Server thread/WARN]: [org.bukkit.craftbukkit.legacy.CraftLegacy] Initializing Legacy Material Support. Unless you have legacy plugins and/or data this is a bug!
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type OAK
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type JUNGLE
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type DARK_OAK
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type ACACIA
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type BIRCH
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type SPRUCE
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 39 recipes for wood type CRIMSON
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 39 recipes for wood type WARPED
[18:06:21] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type MANGROVE
[18:06:22] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type CHERRY
[18:06:22] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 7 recipes for wood type BAMBOO
[18:06:22] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Registered 43 recipes for wood type PALE_OAK
[18:06:22] [Server thread/INFO]: [de.primecodes.essentials.manager.StonecutterWoodRecipeManager] Total Recipes registered: 472

anyone got any idea?

young knoll
#

Isn’t there a registry for material

tender shard
young knoll
#

No idea

#

Tbf I didn’t know it had one

thorn isle
#

enable verbose somewhere in the config and make sure the stack trace corresponds to what you think is triggering it; it could be something else

mortal hare
#

how does anti xray plugins like orebfuscator know which blocks are being visible in player's frustum?

#

anyone willing to explain the trick behind that

#

ray tracing could be one way but it sounds very expensive

#

i guess one way is to iterate over all ores and check immediate neigbours if it doesnt have air block nearby mask it as stone

#

or you can do BFS/DFS search for air pockets and not maskit only those pockets, if they're in certain range to the player

grand flint
#

why would ray trace be very expensive

mortal hare
#

basically if BFS search across translucent/air blocks doesnt reach the player's position, you can hide it

mortal hare
grand flint
#

🙏

#

first person to call raytracing expensive

#

also it can probs just get the chunk

#

and see the blocks above

smoky anchor
#

I mean raytrace for voxel structure has one very efficient algo

mortal hare
#

the problem with raytracing that it wont follow FOV

smoky anchor
#

doesn't have to

grand flint
#

xray

#

isnt that deep

#

have a smart staff team

#

have an ore logger

#

and use papers builtin

#

i just hate people who try to mitigate xray

#

like its a server crashing exploit

mortal hare
#

no i just cant find proper anti xray mod for fabric so im going over "fine ill do this myself moment"

grand flint
#

do what u can

#

its not that deep lol

#

do it ur self is crazy 🙏

smoky anchor
#

fun fact: the thing is opensource...

jagged thicket
smoky anchor
#

fabric ? no
that's a mod loader

#

it doesn't add anything by itself iirc

jagged thicket
#

nah like mods good enough

#

already

mortal hare
#

i think this is how it should work in naive impl:

  1. capture world gen y-levels where ores spawn in particular biome,
  2. then iterate blocks over that particular y-max value
  3. if it finds air or translucent block do breadth first search across those blocks, until the last block is reached
  4. if immediate neightbour is an ore - store that block position in a list of ores to be hidden
  5. capture all those bread first translucent/air block locations in a map
  6. check if translucent/air block position map contains players location
  7. if it doesnt contain player location, hide the ores from the list, if its not, keep it
#

that would hide cave ores, over other ore would be hidden and only air exposed ones would be unhidden

grand flint
mortal hare
#

right

#

what license is it

grand flint
#

copy paste license 🙏

#

i dont think using the same method it uses

#

is gainst anythin g

slender elbow
#

the code is licensed, not the algorithm :thinksmart:

umbral ridge
#

licensed code sounds like bs

worthy yarrow
#

I never license my projects so they all just fall under ARR

mortal hare
#

i still feel like its best to do xray which hooks to world gen in a way it unedited version of world and only obfuscating those blocks in real version of the chunk

#

or maybe not

#

we still want to hide player placed blocks hmm

#

you cant also trust player head facing vector position too since freecam exists

#

tbh this wouldnt be a problem if notch made chunks cubic

#

😔

young knoll
#

I mean they are

#

But only on disk and in memory

mortal hare
#

sure it would increase network bandwidth

#

but at least we would have less cheaters

thorn isle
#

chunk sections are cubic in memory and in the protocol

#

personally i find any kind of obfuscation type anti-xray to be futile, you might as well use analytics instead to honeypot players

#

no smoke without fire; if a player is willing to xray they'd probably cheat in other ways as well

#

and xray is much easier to detect than say a well-written aimbot

#

that said, paper does have ore obfuscation built in, although you can still see ores in cave walls; in practice this doesn't make a significant difference since you can also see the ores in cave walls by standing in a cave

#

if you really wanted to eliminate those ores, you could do something similar to what you suggested but coarser: find the translucent blocks on the surface of each its 6 faces, then use a*/floodfill to map the connections between those surface areas; discard the volume data, keep only the surface data and the mappings, and use the mappings as a node in a higher hierarchy a-star/floodfill search

#

this will very efficiently find any air volumes that any given player is "in" at any given time, and only needs to be updated when crossing chunk sections

#

i did something a little bit similar to hide blocks with laggy custom models to help with client fps, though the problem parameters were a bit different

echo basalt
#

write an algorithm that basically does a flood fill

#

except instead of it iterating over neighbours of the same type, it also has a failsafe if it finds air

thorn isle
#

this is a hierarchical version of that yes

#

where the flood fill results are cached per-section and only the connections on a section<->section level are retained to keep the memory footprint low

#

then a second "flood fill" goes over those connections, although it's more like a graph now than a volume you fill

#

also useful for e.g. pathfinding

tired elbow
#

Hi

#

Is anyone here xd?

rotund ravine
unborn hollow
#

how would you set the background color of an nms text display given that setBackgroundColor() has private access

rotund ravine
unborn hollow
#

if i say why does that help you answer my question

rotund ravine
#

Yes

unborn hollow
#

I want some players to see certain text displays exclusive from other players

rotund ravine
#

You can do that with the api

unborn hollow
#

set background color or have some players see certain text displays exclusive from other players?

rotund ravine
#

Both

unborn hollow
#

what if I don't want the text displays to exist in the world

rotund ravine
#

Why

unborn hollow
#

it's fine nvm i figured it out

zealous thistle
#

i dont understand why eclipse dont know org.bukkit.plugin and i put spigot.jar on the project

rotund ravine
tired elbow
#

Hey

#

It is possible for an entity to inherit the skin or texture of another entity.

#

Example, can a player inherit the texture of a zombie or a piglin?

#

Or that an armor stand looks like a zombie?

zealous thistle
rotund ravine
tired elbow
rotund ravine
tired elbow
#

???

pseudo hazel
#

ask libdisguises if its possible

#

we did not make that plugin

lavish folio
#

I want to make custom chat messages in my minigame using AsyncChatEvent. However I need to access HashMap which contains all my lobbies and then for each lobby check if player is in it (one boolean check and HashMap<> key check). Then I need to get player color and send a custom message to all players inside that lobby. Do I need to worry about thread safety and make all structures which get into contact thread safe or it's not necessary?

thorn isle
#

If you are executing code concurrently on multiple threads you need to worry about thread safety

#

In this case I guesstimate that using the Collections.synchronizedX wrappers or a concurrenthashmap would be enough

lavish folio
#

thanks

brazen badge
#

Hey! How can I disable chat ClickEvent command confirmation?

smoky anchor
#

Or, set your commands to have permission level of 0

#

It is impossible to disable this fully, it is a built-in safety feature, give the perm. level condition

brazen badge
smoky anchor
#

well the client recieves information that the command has permission level of 1 or above
somehow

#

This is vanilla permission level

slender elbow
#

or the command is not being sent to the client for one or another reason

brazen badge
#
ClickEvent clickEvent = ClickEvent.runCommand("/showinv " + invMessageUUID);
smoky anchor
#

What versions do you support ?

#

exactly

brazen badge
smoky anchor
#

so 1.21.0 and up

brazen badge
#

yeah

smoky anchor
#

well the simplest solution is: don't, support latest and use CUSTOM
I do not know how or even if it is possible to change the permission level of a command

#

Actually I might

grand flint
slender elbow
#

do you see your command in chat when you start typing /sho ?

smoky anchor
# smoky anchor Actually I might

Ok so the way I did this I think is: use NMS and register the command as a vanilla command would - use Brigadier
Which I probably would not recommend

slender elbow
#

i mean, registering your command as usual will work fine

#

as long as you don't stop it from being sent to the client

#

whether that is via a permission or removing it from the send commands event

#

if you have plugins like "plugin hider" or "command hider" etc those are probably interfering with that shit

slender elbow
slender elbow
#

well that's the issue

#

check my messages directly above

#

something, either you or another plugin, is preventing the command from being sent to the client

brazen badge
slender elbow
#

that's your problem

#

the command needs to be visible to the client

brazen badge
eternal oxide
#

context

slender elbow
#

run command click event warning

slender elbow
eternal oxide
#

silly question, but is your command even registered? Others may have asked already but I didn't see you answer

eternal oxide
#

if you OP yourself and still can;t see the command I doubt it is registered

slender elbow
#

can you run the command even if you type it out?

brazen badge
#

I solved! EasyCommandBlocker was blocking my command, now it works, thank you for the help.

slender elbow
#

yep

#

i really don't see the point in those plugins

#

just configure your permissions properly

wet breach
#

seems it worked by blocking command easy

smoky anchor
brazen badge
slender elbow
#

a) configure your permissions properly b) what's the issue with that?

worldly ingot
#

We have a lot of public commands on Hypixel and do just fine

smoky anchor
#

well since 1.21.6+ there should be 0 need for those in any scenario
for chat click - use custom
and permissions

worldly ingot
#

/thiscommanddoesliterallynothing for instance

slender elbow
#

I LOVE THAT COMMAND

slender elbow
worldly ingot
#

It is a good command

slender elbow
#

what does it do

worldly ingot
#

Literally nothing!

slender elbow
#

i don't believe you

worldly ingot
#

The implementation is quite literally {}

wet breach
brazen badge
slender elbow
#

you are selling my personal data to the chinese

slender elbow
worldly ingot
#

Code leak alert! It's just { }

smoky anchor
#

lemme report you to mr Simon Hypixel on Twitter for leaking internal stuff

eternal oxide
#

Oh noes, Choco getting sacked!

worldly ingot
#

I do wish it kept track of how many players ran the command

#

That would be awesome

smoky anchor
#

But then it would be doing something 😟

slender elbow
#

yeah then it wouldn't do literally nothing

#

the command dispatcher could keep track of that info, but not the command itself!

#

it must remain empty

echo basalt
#

I'm surprised you guys don't have global command metrics

#

It feels so easy to implement

ancient plank
#

time to apply to hypixel again

echo basalt
#

They'll never accept me lmao

ancient plank
#

I think I almost got accepted, I'm fairly certain I messed up an answer on a code review but I can't remember it because my brain doesn't work correctly anymore

grand flint
ancient plank
mortal hare
#

i cant believe im so impressed with software tool from 1975

#

TeX is so awesome

smoky oak
#

are PDCs no longer part of whatever /data get entity spits out?

pseudo hazel
#

should be

#

I think it might be saved in the custom_data component, but that might be paper only

#

but it should be in something like bukkitValues

smoky anchor
misty ingot
#

how can i check if an item has a durability at all?
like for example a pickaxe would have some usable durability whereas a snowball would not

chrome beacon
#

See if the item meta is damageable

slender elbow
#

well, just checking if it is will always be true

#

gotta check hasMaxDamage or whatever the has method is called

chrome beacon
#

ah I see

#

right since any item could be damageable now

orchid furnace
#

Does anyone know how I could update tab since I'm wanting to have it display the number of players but it's only static it seems

        Player p = e.getPlayer();
        int playingWith = Bukkit.getOnlinePlayers().toArray().length - 1;
        String header = "\n§6§lTango§2§lNet\n§7Season 3\n\n§f Currently playing with §7" + playingWith + "§f others. \n";
        String footer = "\n§7IP REMOVED\n";
        p.setPlayerListHeaderFooter(header, footer);

This is called on Player Join

#

Not sure if I would have to keep playingwith updated or what

slender elbow
#

you need to either run that code on a scheduled timer task, or run that code whenever a player joins/leaves

orchid furnace
#

Ahhh I see.

slender elbow
#

for that specifically I'd run it in the join and quit events

orchid furnace
#

Thanks!

#

As in a loop for like all players?

slender elbow
#

yea

orchid furnace
#

Alright, thanks!

slender elbow
#

btw you can do Bukkit.getOnlinePlayers().size() - 1, no need to convert it into an array you're not using otherwise

orchid furnace
#

ahhhh, cheers!

hardy garnet
#

So i've run into a problem where I want to have custom helmet/armor models, but minecraft (base anyway) doesnt support that very well even with resource packs (helmets are possible). I do not want to make installing any mods a requirement, so plugins that don't have mod dependencies would be great

grand flint
#

are u stuck in 2020

grand flint
#

its the best one currently

orchid furnace
grand flint
#

and has the best custom stuff of all

grand flint
orchid furnace
#

Hello

grand flint
#

hru

orchid furnace
#

alr, you?

grand flint
#

ok, buddy

#

anyways wy coding

orchid furnace
#

Nothing much atm, had to deal with some linux stuff and not got much to code atm

slender sphinx
#

If I use Adventure API from Paper as my dependency, the plugin will not work on Spigot servers, correct?

#

According to their website, their API is not included in Spigot

eternal oxide
#

correct

#

unless you add it as a dependency in the plugin.yml

young knoll
#

It won’t work even if you do include it

#

Since the one built into paper api is actually built into paper

#

And relocated and whatnot

slender sphinx
#

Yes, that's what I understood from reading. So what's the best approach here?

eternal oxide
#

test if paper or spigot and handle your adventure appropriately

slender sphinx
#

If I switch to Spigot as a dependency for my resource to work and be accepted on SpigotMC, what should I do to use the API?

eternal oxide
#

yes

#

?maven

undone axleBOT
young knoll
#

You can shade adventure and use the built in Bukkit adapter

#

But it’s minimal, only really supports chat, boss bars, and titles

young knoll
#

Yes

slender sphinx
#

Okok, thanks

oblique furnace
#

Hi, I am currently working on a plugin with abilities. I have an ability, where when the ability is activated, the player should tp to the block they are looking at no matter how far away it is. I have tried, but only got it to tp to the block when the block is in mining distance (/ has a Black outline). Does anyone have an idea to get it to tp to the block you're looking at although its further than your reach? Thanks for any help.

thorn isle
#

World::rayTrace

#

Player::getTargetBlock or whatever you're using only gets the block if it's actually targeted, i.e. within interaction distance

oblique furnace
#

Ok, thanks a lot

tired elbow
#

Hi

#

Does anyone know about nms packages?

#

I want to learn that 😄😄😄

echo basalt
tired elbow
#

Installation

#

Using gradle

chrome beacon
#

Assuming a modern version

tired elbow
#

Thank you

#

Groovy?

#

Install for groovy 🤔🤔🤔

echo basalt
#

it's not that different

tired elbow
#

Mmm

tired elbow
#

Okay, but literally the "protocollib" plugin is the same, right?

sullen marlin
#

What's the best paste site these days, or is Discord good enough (or limits too short for not nitro)?

#

Yes protocol lib is a Spigot plugin

tired elbow
chrome beacon
#

no

tired elbow
#

Or not🤔🤔🤔

#

XD

#

What is the difference?

chrome beacon
#

What I linked is a Gradle plugin

tired elbow
#

The part that says groovy?

#

I heard that groovy is already a pre-Hispanic language.

chrome beacon
#

?

slender sphinx
young knoll
#

Can’t resist

undone axleBOT
chrome beacon
#

pastes.dev or mclo.gs (for Minecraft logs) are pretty good

safe beacon
#

good morning

grim hound
#

is it possible to create like a field change listener?

chrome beacon
#

context?

acoustic siren
#

Ah I cannot post images

slender elbow
#

discord is far from the best, text file embeds do not show on mobile and I don't wanna be downloading lots of tiny files

#

using a web paste is best regardless of which

short pilot
#

how do I set a sign to be "waxed" ? The docs said it does not persist / has some special usage

chrome beacon
#

Where does it say that?

sly topaz
#

pastes.dev is nice if it is something you don't care about, but it doesn't have any kind of permanent storage or write history like gists do

mortal vortex
echo basalt
reef orbit
#

Is this where we go to find developers ?

mortal vortex
undone axleBOT
wintry breach
#

I want xtokensmp texturepack 1.21.8

#

@undone axle

placid estuary
#

how would i go about having a spigot server plugin communicate with a fabric mod client to verify that both are installed?

young void
#

grok is this true?

mortal vortex
#

aight bro you aint me, change the pfp

smoky anchor
#

Oh that's why I was confused

mortal vortex
#

smh bruh everyone tryna pretedn to be me

placid rivet
#

i want to make a menu, but the items in it have the informations like attack dmg, attack speed etc.

can i hide it without hiding the displayname and lore? i know there's a method called sethidetooltips but it does hide the name, my server is on spigot and idk if it's possible here

chrome beacon
placid rivet
#

if (hideTooltips) {
itemMeta.addItemFlags(
ItemFlag.HIDE_ATTRIBUTES,
ItemFlag.HIDE_ENCHANTS,
ItemFlag.HIDE_UNBREAKABLE,
ItemFlag.HIDE_DESTROYS,
ItemFlag.HIDE_PLACED_ON
);
}

that's what i do

#

then apply it to the item
and still doesn't work

chrome beacon
#

I assume you're not running Spigot then

#

If you are running Paper or any of its forks you need to add an attribute modifier for the hide flags to work

winter jungle
eternal oxide
#

There is a really good one, but I forget its link

jade bone
#

Hi there, does anyone have experience with customizing the default spawner properties? I'm working on a spawner upgrade plugin, and each level should have more mobs spawning (configured in config). To apply these effects i'm using the following method (yes the values are passed through correclty)

public static void applyEffects(Block block, int spawnAmount, int maxNearby, int distance) {
        if (block.getState() instanceof CreatureSpawner cs) {
            cs.setSpawnCount(spawnAmount);
            cs.setMaxNearbyEntities(maxNearby);
            cs.setRequiredPlayerRange(distance);
            cs.setMinSpawnDelay(200);  // 10s
            cs.setMaxSpawnDelay(400); // 20s
            cs.setDelay(20);

            cs.update(true, true);
        }
    }

But the spawner doesnt seem to care about the spawnCount (didnt test the rest yet). My testing setup is a Zombie spawner high in the sky so no other mobs are nearby.

Anyone knows how i can fix this?

slender elbow
#

"by lucko again" sounds like a surprised expression from someone who's never sworn before

ivory sleet
#

lucko goated

quasi gulch
young knoll
#

Pretty sure it’s in Bungeecord chat

#

?jd bcc

undone axleBOT
young knoll
#

Nope it’s a separate module

quasi gulch
#

Okay thanks

eternal oxide
hardy garnet
#

I can't seem to find nexo available for download anywhere?

#

I mean i see it on polymart but its not on the spigot website

#

im unsure if polymart is a safe website to buy from though

thorn isle
#

i don't quite remember what your issue was, but if it's just custom models for armor and suchlike, you don't need a plugin for it

#

all those plugins really do is act as item managers

#

and possibly resourcepack aggregators, building a resourcepack from multiple components

#

nothing that you can't do by hand

hardy garnet
#

I know all that, but there is one issue

#

As far as im aware, vanilla minecraft resource packs do not support custom models for armor

thorn isle
#

they do

#

and if they didn't, a plugin couldn't change that

hardy garnet
#

Well I havent managed to figure it out yet then lol

#

Do you have a resource you can point me to? Even just a resource pack that has custom armor models would be enough for me

thorn isle
#

nope, i haven't worked with custom equipment models either

#

if you can't find one you could log on a server that has a server resourcepack with some, and then look at the pack they send you

grand flint
grand flint
#

however tryna manage all those without a plugin is completely stupid

thorn isle
#

not necessarily

#

if you are making all of your models yourself, and don't need to bundle together model/texture definitions from multiple sources, there's no need for a manager plugin to manage them

grand flint
#

so what would u manage them with

thorn isle
#

there's no management to be done

grand flint
#

what would u easily give ur custom items, custom armor

#

easily update them for all players

thorn isle
#

./give

grand flint
#

add furniture

#

add craft recipes

thorn isle
#

and/or any plugin config

grand flint
#

lol

#

so again

#

stupid

#

as i said

thorn isle
#

nuh uh

#

you're stupid

grand flint
#

so u want to manually

#

run a give command

thorn isle
#

and/or configure it into a plugin

grand flint
#

with a bazillion

#

attributes

grand flint
#

what nexo does

#

?

#

so ur saying

#

instead of buying nexo

#

remake nexo

#

very smart

thorn isle
#

you can configure it directly into essentials, mythicmobs, or any other plugin of your choice that supports custom model data

smoky anchor
#

holy crap can you send a message with more than 3 words

grand flint
#

no

thorn isle
#

this isn't rocket science

thorn isle
#

nuh uh

grand flint
#

for custom resources on mythicmobs

thorn isle
#

mythicmobs allows item definitions through the bukkit serialization api

grand flint
#

otherwise there isnt an option to set the texture / model of the item

thorn isle
#

which means you can define any item with any properties you want

grand flint
#

apart from texture stuff

sly topaz
#

custom armor models can only be done with core shaders right now, so if Nexo has an easy way to integrate into that, then I'd just use it to be honest

thorn isle
#

any property you want

sly topaz
grand flint
#

its litearlly an item component

#

are u guys stuck in 1.20

thorn isle
#

it literally loads an org.bukkit itemstack from a ConfigurationSerializable

sly topaz
smoky anchor
#

the 3D model can only be done with core shaders, if that's what the plugin can do

grand flint
#

its so stupid of me to argue with stupids

#

idek why i continue

thorn isle
#

dum dum

sly topaz
grand flint
#

like ik im better than u

#

ik i know more than u

#

idk why i contribute to ur stupid argument

thorn isle
#

mythicmobs is 🚮 btw

grand flint
#

kinda ur problem if u cant afford it

#

but sure

thorn isle
#

i maintain a fork of it

grand flint
#

equip -> model id

hardy garnet
grand flint
#

it provides everything i promise u its the best plugin u could get

#

u can run a server purely by just using nexo

thorn isle
#

omegalul

#

mythic shill

sly topaz
grand flint
smoky anchor
#

not it does NOT

grand flint
#

yes it does, i have them

smoky anchor
#

That is simply not a vanilla feature

grand flint
#

it quite litearlly is

#

but again

smoky anchor
#

proof then

grand flint
sly topaz
#

why are you guys so hellbent on arguing here, go to #general. This conversation isn't helping anyone

smoky anchor
grand flint
#

idk then maybe im stupid

#

i do use nexo for the armor, and i do have custom modelled armor

#

apart from the helmet obv

thorn isle
#

i was under the impression that custom equipment models were doable as of like 1.21.4 or something. without core shaders, but i don't know the specifics

grand flint
#

so maybe it is a shader

thorn isle
#

i very vaguely remember looking at the changelogs and going "hey, neat"

#

and then never got around to setting it up

grand flint
#

tbh all these item component stuff are sick

hardy garnet
#

It's only the head slot that supports custom models

grand flint
#

and nexo makes so much use of them

#

custom tridents, elytras

#

horse armor, wolf armor

#

dude it litearlly has a connectable furniture mechanic

#

and everything is well made idk why all of u just hate nexo

#

its super well made, well maintaned and mostly bug free

smoky anchor
#

https://minecraft.wiki/w/Equipment
This is the whole definition of the equipment thing, only texture for hardcoded model
Meaning it is only possible to use core shader to change the model

thorn isle
#

i have no idea what it is and i've never used it but i have great inherent distrust in anything even remotely associated with the mythic ecosystem, and also anything involved with custom models

grand flint
#

its not a mythic plugin

thorn isle
#

because historically both have been mostly just grifts to get easy lunch money from beginner tier server admins

grand flint
#

its boy's

#

just bc he is a mythic admin doesnt mean nexo is

hardy garnet
thorn isle
#

yea but like custom spawns and custom item models are the 2 cash cows of the server scam industry

grand flint
#

have u sen the types of mobs people make iwth those

thorn isle
#

prospective entrepreneurs go on mcmarket to buy a premade server or a bunch of cosmetic packs and paid plugins and a spawn and try to grift money from their players, then go bankrupt because everyone else has the same shit

grand flint
#

id much rather config, than code it by my self

grand flint
#

but i wouldnt hate mythic for that, their plugins imo is well made and works as intended

thorn isle
#

i don't hate mythic because of that, but i do distrust anything related to custom item models because of it

#

i hate mythic because their codebase is a disaster

grand flint
#

is it 😭

#

well the config is the main reason i use it

#

u can do anything u want with ur mobs or items

smoky anchor
#

One day these things may just die out in favor of datapacks :)

sly topaz
#

I don't know their codebase, but I do know their API is kinda horrible to work with. Helped people with it more than a couple of times and it is very restrictive

thorn isle
#

it's very flexible and robust yes, that's the only reason i still use it

#

but what goes under the config and api is utterly horrid

sly topaz
grand flint
#

u still need a plugin to manage it

thorn isle
#

or maybe a datapack 🤡

grand flint
#

however a lot of features that stuff like nexo use

#

it makes use of datapacks

thorn isle
#

i'm super disappointed now that we don't have custom entity models after all

#

i don't really want to require my players to use core shaders either

smoky anchor
#

One day for sure

young knoll
#

Soon™

hardy garnet
thorn isle
#

blocks are a bit later down the road since they'll need the block/item registries to become network synchronized to the client

sly topaz
#

does nexo deal with the core shaders part for you or does it just let you register custom textures

thorn isle
#

but i see absolutely no reason why entity/equipment models couldn't already be customizable

hardy garnet
young knoll
#

I believe they have started poking at entities with the component system

#

So it’ll probably happen soon

grand flint
#

rp management, shader management

#

the furniture is one of my favs cuz its the best one

#

itemsadder is so fucking buggy

#

i had like half the furniture dissapear into barrier blocks

#

and u cant even break them

#

never had that with oraxen which now moved to nexo

thorn isle
#

how do core shaders work when players have their own shaderpacks they want to use?

young knoll
#

Ha

sly topaz
#

then yeah, just use Nexo. It is open source so at least you can poke at it if things don't work out

thorn isle
#

i remember server resourcepacks having issues with conflicts, not sure about shaders

young knoll
#

Most shader/optimization mods break core shaders

#

Sodium does

thorn isle
#

good shit

young knoll
#

Pretty sure optifine does too

thorn isle
#

yeah i won't be getting that then

sly topaz
#

well, optifine is no surprise but I am surprised Sodium does

smoky anchor
#

iirc there is some mod that makes core shaders compatible with sodium :D (or was it iris)

sly topaz
#

so I guess even when using Nexo it is pretty futile then, most players use optimization mods like Sodium

young knoll
#

I know there’s one that lets resource packs edit sodium’s shaders as well

#

Idk if it magically makes the vanilla ones work tho

thorn isle
#

personally i probably would just wait for mojang to properly support equipment models rather than hack it together with shaders

hardy garnet
#

Wait for something that might never happen :\

#

or happen years later

sly topaz
#

people do a lot of cool stuff with core shaders tho, mods should probably try to keep compatibility given Mojang itself tries

smoky anchor
#

ye, mainly with the graphics rewrite where things may work only specifically on 1.21.7 and then break forever

thorn isle
#

cue that meme of the skeleton in a chair in front of a computer with cobwebs growing on it

grand flint
#

it breaks mythichud though

#

i hate mythichud

#

dogshit plugin

thorn isle
#

yes

grand flint
#

betterhud better

#

but overall i hate hud systems they are always dogshit someway

#

why does bedrock get OreUI and we dont 🙏

thorn isle
#

i know right

#

bedrock gets all the nice things

grand flint
#

dude bedrock is so fucking good for custom stuff

#

its a built in mod manager

smoky anchor
#

you do not want OreUI
laggy mess

thorn isle
#

we're stuck with fucking chest guis and horrible negative space custom font black magic for custom uis

#

even the dialogs we got look terrible

grand flint
smoky anchor
#

whose idea was it to implement a browser view in a game

sly topaz
#

hey, at least we don't get microtransactions

sly topaz
grand flint
#

in terms of servers

thorn isle
#

i would like some microtransactions in my back pocket

sly topaz
#

just like most desktop software

grand flint
#

rather than like avatars

smoky anchor
sly topaz
#

eventually someone will care enough to make it good, but in the meantime we settle for good enough

thorn isle
#

ha

young knoll
#

Electron in minecraft when

thorn isle
#

i'm sure that's what the guys working on win95 told themselves

#

"someone will fix it eventually"

grand flint
#

anyways sorry guys i hate being ragebaited

sly topaz
#

hardware will continue getting faster

grand flint
#

ima go get ragebaited in ranked instead bye

hardy garnet
#

I just joined the nexo discord and asked about the core shader conflict with sodium and optifine.

#

Briefly, from looking through some chat history, people say some things might not work

#

its not total incompat

young knoll
#

I believe sodium has said they won’t hesitate to make further breaking changes if warranted though

sly topaz
#

fase here seems to have equipment models which work fine even with sodium, so it is probably fine

young knoll
#

Optifine who tf knows

sly topaz
#

performance is already fine, if they want to go for harder optimization tactics involving just breaking stuff then they should do that in a different mod altogether

young knoll
#

¯_(ツ)_/¯

grand flint
#

my poor donator capes 🙏

#

like i mean on new versions

#

ik they obv do on 1.8

sly topaz
#

you would be surprised how many people still use optifine

grand flint
#

on new versions?

sly topaz
#

yes

grand flint
#

crazy shit

sly topaz
#

I've seen a ton of youtubers using it at least

#

most people who aren't really in the modding community just don't care, and when you search for how to make minecraft run faster, optifine still comes up

hardy garnet
#

I seem to have found a way to do custom armor models in vanilla. Gonna do a bit more digging before I say for certain though

grand flint
#

make the armor visible

#

and put a disp[lay entity

#

that rides the player

smoky anchor
#

that... doesn't seem possible ?
how do you solve these problems:

  • you can see the armor in first person
  • the armor would have rotation delay
#

I might have something else in mind than you tho

grand flint
#

the rotation delay idk i forgot

#

u can do something by using multiple models

#

the armor in first person

#

i dont solve it 🙏

#

however if u do use it for any other reason, there is a shader boxic made that hides it in first person

#

but is visible on 3rd person and such

hardy garnet
#

Not a work around hacky solution but an elegant one. If it does work ill post code in here

#

well, maybe in general if thats a better place for it

thorn isle
#

all these problems are roughly solvable if you make the cosmetics invisible to the player wearing them

smoky anchor
#

which then eliminates you being able to see them in third person

thorn isle
#

of course that kind of defeats some of the point of cosmetics

smoky anchor
#

ye

thorn isle
#

but most of the point of cosmetics is to make other people jealous

#

as long as you provide some controlled facility where you display a dummy player wearing the cosmetics, so the player can have a rough idea of what they look like, it'd probably be good enough 👍

#

a "dressing room" gui

oblique furnace
#

I want to make an ability, where when the ability is activated, the player should tp to the block they are looking at no matter how far away it is. now I have following code, but when I tested it, I was only able to teleport to blocks, that have black outlines/ blocks, that were in my reach. can someone help me?
RayTraceResult result = p.getWorld().rayTraceBlocks(
p.getEyeLocation(),
p.getEyeLocation().getDirection(),
500.0,
FluidCollisionMode.ALWAYS,
true
);
if (result != null && result.getHitBlock() != null) {
Block hitBlock = result.getHitBlock();
Location tp = hitBlock.getLocation().add(0, 1, 0);
p.teleport(tp);
}

smoky anchor
#
  1. don't use single letter variable names, use more descriptive ones
  2. to me the code looks fine, are you running on Spigot ?
  3. maybe try with not 500 blocks distance, just like 16 ?
young knoll
#

I’m going to take a wild guess

#

How are you activating this ability?

worldly ingot
#

$20 says right click air isn't being sent PES2_LulPoint

hardy garnet
#

After a lot of digging, nexo has the same limitation. You can't have 3d models for leggings, chestplates, and boots lol

worldly ingot
#

Yes because Mojang has a hard-coded armour renderer which is 2D

#

Nothing you can change server-sided or with resource packs. It's just a straight up layer renderer

#

Helmets are different because technically you can put a block on the player's head and it's a "helmet", so it will render using the head transform

young knoll
#

Chest leggings and boots transform when

#

Smh

worldly ingot
#

Just 3d armour rendering would be nice to start with

#

You can already make custom 2d armour now

hardy garnet
#

Yea ik that lol

oblique furnace
oblique furnace
young knoll
#

With an item in hand?

hardy garnet
hardy garnet
#

for event listeners I almost always do SomeEvent e

smoky anchor
#

I mean sure, but I'd still say to use them as little as you can

oblique furnace
hardy garnet
oblique furnace
#

It still doesnt work after changing it to 16

young knoll
#

No data is sent to the server when you right click air with no item in hand

#

Therefor no click event is fired

oblique furnace
smoky anchor
#

yes, 'cause you're clicking the block then, that sends a packet to the server

young knoll
#

^

#

If a block is within range of your cursor it’ll work

oblique furnace
#

if I look at a block 10 blocks away it wont work tho...

smoky anchor
#

yes, in that case you're clicking air

#

which as stated above, does not work without an item in hand

#

if "no block has an outline" then you're clicking air

oblique furnace
#

so you need to hold a block so that it works?

smoky anchor
#

you either need to hold an item in your hand, or click a block (or both)

ivory sleet
echo basalt
#

who the fuck decided that having a key called "on" in a config makes it a true/false

#

config.getConfigurationSection("on") doesn't work

oblique furnace
#

Oh man. I need to start making comments in my code and sort it a bit. I did it so the ability doesnt work when I hold an item but I cant find it...

rustic meteor
#

how to i add nms to my 1.8 spigot/bukkit plugin

chrome beacon
#

Depend on spigot instead of the spigot-api artifact

rustic meteor
echo basalt
#

Run BuildTools

rustic meteor
chrome beacon
#

You don't need to set one

#

Having it build in the folder where the BuildTools jar is works fine

wraith delta
#

In game my plugin name is the same as the command which creates a annoying extra command tab complete like /plugin:plugin. I renamed the plugin in the plugin.yml but that also changed the config.yml folder. Is there any other way to remove the extra commands?

mortal vortex
#

Thats apart of how bukkit works

wraith delta
mortal vortex
#

r u opped?

wraith delta
#

its a plugin for ops

mortal vortex
#

If you see it, its because you're doubling up, you shouldn't register the command the same as the plugin name,