#help-development

1 messages · Page 1291 of 1

wet breach
#

a sneeze would collapse their server

sly topaz
#

I mean, fair enough. Not really going to tell anyone how to operate their servers 😛

#

I was mostly speaking from an architectural point

wet breach
#

but maybe you are right, and it wouldn't work for servers that constantly update

#

I haven't really tested it that way

thorn isle
#

honestly even scanning the entire world in-server through the bukkit api or nms wouldn't be that bad performance wise if someone optimized the nbt parser/object model a bit

wet breach
#

also, I did run custom implementations too where I only needed to update the protocol not everything else

sly topaz
#

unless you mean changing the algorithm altogether, which bears its own set of troubles

thorn isle
#

most of the performance impact comes from the nbt impl allocating gigabytes of trash that nukes the garbage collector

wet breach
#

the way mojang implements loading of chunks is actually not that optimal

thorn isle
#

just recycling the nbt objects would already make a huge difference

#

or using a stream based reader that doesn't allocate

#

but that's quite a bit more difficult

wet breach
#

for example remember how books could crash a server because the chunk became too large? yeah the reason that was even an issue was because mojang never bothered to check the size of the region file before loading it

sly topaz
#

I mean, that's just shifting the issue to IO which is often not ideal if you're not planning to scale vertically

wet breach
#

thus it sucked up all the ram and OOM'ed

thorn isle
#

i have plenty of threads on my machine and i'm not going to run out of io on a nvme; io is fine as long as it's async

wet breach
#

if they properly did memory mapping, loading a region file shouldn't cause OOM and only in rare circumstances

#

but that is mojang for you though

sly topaz
#

can't really blame them, their implementation is good enough for what the vanilla server is supposed to be

#

bugs aside, of course lol

wet breach
#

right, can't expect enterprise level software for free 😛

thorn isle
#

muh fucking realms shitting themselves to 11tps because 3 concurrent players at a village

sly topaz
#

they have no discoverability so probably hard to market it at all

thorn isle
#

they're only really used by kids and super-normies

#

like

#

nevermind

#

that would be offensive

sly topaz
#

I once remember a youtuber trying to setup a realm to play with their viewers

#

it lagged so bad someone in the community just setup a paper server that worked better lol

vast dust
#

How can i make my own Strucutre loot plugin, that refills a marked structure's random marked spots with loot crates

thorn isle
#

yeah the max concurrent players you can reliably get is like 10 for fresh servers, drops down to 4 after you have villagers and hoppers and shit

#

in this sense zero discoverability is more like a feature

twin venture
#

Hello guys .. i need some advice

#

so my system right now is like this :
redis cache -> local cache -> mysql
this is for loading users data like uuid , kills , etc ...

#

what do you think of alternative?
(large scale project must be really really fast on pulling data) .

wet breach
#

if you don't think it is, then that is because you have not set it up properly

#

mysql is capable of handling million + queries a second

#

having a redis cache and a local cache is really not necessary and you are using up more resources in doing this

sly topaz
#

well, local cache is necessary if your database isn't hosted on the same machine, just because of network latency

#

but if you do have the database hosted in the same cluster, then yeah, databases are often fast enough for most use-cases

wet breach
#

but yeah if we talking about a db server not even in the same center then yes you should have a local cache, but I was just pointing out that a redis cache and local cache is completely unnecessary

#

its redundant in other words

wet breach
#

couldn't you google this

chrome beacon
#

You want the build task

#

Well usually*

young knoll
#

It’s literally just build

chrome beacon
#

Looks like the build failed

thorn isle
#

it doesn't say, i don't know

chrome beacon
#

You tell us what the error is

#

There you go

#

It tells you what the issue is

#

Not on your desktop

#

Either you move the project there or you run the build command in the project folder

thorn isle
#

maybe you should watch that 16 minute video, it probably covers these basics like the concept of "working directory"

mortal hare
#

wtf

#

JVM cant allocate 1MB

#

what's going on

#

i have 32 GB of ram

young knoll
#

Yeah but how much did you give the instance

mortal hare
#

well i've left the defaults

#

i think there's memory leak

#

in one of my mods

chrome beacon
#

Yeah probably

#

I'd make sure drivers etc are up to date as well

thorn isle
#

thread 4400

mortal hare
#

yep

#

memory leak from a mod

#

i think it was duplicate fabric api mod that caused this it seems

#

not sure how did it end up here

#

bad autoupdate i guess

echo basalt
#

iCue has consumed more than that

sturdy reef
#

hey guys, i'm having trouble with the EntityDamageByEntityEvent

#

when a player hits a player and are both in creative mode

#

the event doesn't trigger at all

#

and the interact events doesn't catch it either

rotund ravine
#

I mean they’re not damaging each other in creative

#

And creative is sorta a rip for anything

nova notch
#

the real question is what the hell are you trying to do with a damage event in creative

short pilot
#

question here, not sure if this has any performance impacts

#

but how should these precondition checks be ordered in terms of performance ?

#
if (!(event.getEntity() instanceof final Item item)) {
    return;
}

if (event.getBlock().getType() != Material.WATER_CAULDRON) {
    return;
}

if (MaterialTags.CONCRETE_POWDER.isTagged(item.getItemStack())) {
    return;
}
#

would the materialtags check be the least costly or the ordering is negligable here

worldly ice
#

imo the ordering is negligible, it looks more like a micro-optimization if anything

sly topaz
#

didn't even know you could put a modifier there

#

as for the question itself, none of these are particularly slow operations so that you would need to worry about that. checking the MaterialTags is probably the most expensive one there

#

not to say it doesn't ever matter, getting a block's BlockState for example can often be expensive enough for one to worry about it. Just in this particular case, it doesn't

stiff harbor
#

I guess im going to learn about packets tomorrow... wish me luck

pliant topaz
sly topaz
#

people don't usually mark local variables as final since java will treat them as such if no assignment is made to them anyway, the so-called "effectively final" variables

torn shuttle
#

ai really ain't so great

#

I'm having a hard time usign it wihtout regretting it

rough ibex
#

I rarely have a case where I need to use it

#

It either doesn't understand what I want, or does and gives me the really easy solution that is very very inefficient

#

Any slightly more advanced implementations destroy it and it tries to loop back to basics

torn shuttle
#

where I'm too tired to really think about a problem but still really want a solution before calling it a day

rough ibex
#

💊 🕵️‍♂️ 💊

Spend time describing goal and waiting for response and tweaking generated code
Spend the same time writing it yourself for a better solution

torn shuttle
#

if the problems I wanted to solve were easy I wouldn't be too tired to just implement the solution

rough ibex
#

Oddly, even generating documenting sucks. Youd think a large language model could write good docs but no

#

stating the painfully obvious and also not noting any impl details or quirks

torn shuttle
#

tbf that's a lot of what documentation tends to be

rough ibex
#

The study on how using chatgpt rots your brain is also not a good motion of confidence

torn shuttle
#

I'm always skeptical on those kinds of studies

rough ibex
#

I did try it for a little while to say I did it and I've since just completely removed it from IJ

#

any boilerplate I need done, I can get done for much cheaper with templates

torn shuttle
#

when I use ai appropriately I don't use it to think on my behalf, I either use it to go do some preliminary research for me, as a more advanced search engine or to do some thing stupid repetitive on my behalf after setting the first example

#

more than once it has been pretty great at finding stuff that I can describe how I remember them being but would take a while to try to dig up

#

also pretty good when I know a better solution must exist but I have no reference point on where to start looking for it

rough ibex
#

I can see that. It is better when you dont know the name of something so you can just describe it. Google's not good for 'thing that looks like and acts like'

torn shuttle
#

it's like how for the longest time I halfway thought something like a slip ring device must exist for electronics but I had no clue on how to even start looking for what such a thing might be called so I just described it and immediately found it

#

basically just a little device that conducts electricity for stuff that spins

#

without requiring cables

#

of course it had to exist but it would be far more time consuming to try to find such a thing using conventional methods

nova notch
#

Honestly I probably use AI more than searching now cus it's just better

twin venture
twin venture
#

hi
using com.github.ben-manes.caffeine ? good for caching?

wet breach
#

depends on the type of caching you are seeking

twin venture
#

its for a big project kind of ..

wet breach
#

expiring cache is usually sufficient for most things

thorn isle
# short pilot ```java if (!(event.getEntity() instanceof final Item item)) { return; } if...

this looks about right, though as others have said the impact on ordering is going to be fairly negligible; instanceof is the cheapest and will most likely prune the most calls, but for Block::getType vs MaterialTag::isTagged, you'd probably have to benchmark to know which one is cheaper, and both will prune about the same factor of calls, so it's difficult to say which should come first

#

Block::getType has to go through several levels of abstraction and indirection to get the actual block type, so it's much more expensive than instanceof

#

similarly MaterialTag::isTagged queries i think a fastutil open hash set, which is also much more expensive than instanceof, but probably cheaper than Block::getType

daring light
#

Hey, I'm wondering if Inventory.getContents() is guaranteed atomic?

#

I'm making chestshops and I'm using it to determine stock. So I'm wondering if it's possible for two players to check the inventory stock at the same time and be able to duplicate items basically

thorn isle
#

depends a bit on how you define atomic here

#

if it's being accessed and read asynchronously from multiple threads, no; the retrieval of the itemstack list is not atomic; if another thread modifies multiple slots in the container, only some changes may be reflected in the getContents() result

#

if it's only being accessed from a single thread, "yes" in the sense that no other operation (unless called by you) may be interleaved between your own operations on it

#

that said just because listing the contents is or is not atomic doesn't guarantee that you can't dupe with it; that depends entirely on how your chestshop plugin works

rough drift
#

huge time saver imho

sly topaz
#

at least on spigot, it ends up on a map lookup

#

for some reason it doesn't use CraftBlockType#minecraftToBukkitNew (registry lookup) and uses the old one which goes through CraftMagicNumbers

thorn isle
#

it also has to find the chunk through the chunk map, the section from the chunk's sections array, then compute the index for the palettedcontainer nibble, then mask the nibble and query the palette (usually a hashmap) to get the nms block type

#

so for sure more expensive than a hashset query with a material

sly topaz
#

yeah, it is an unusually expensive method that is used all the time

#

well, "expensive", it probably doesn't matter but I would've expected to just have CraftBlock save the type on its impl instead of doing the lookup every time

#

I guess that is just asking for desyncs with minecraft internal data but still

thorn isle
#

for that to work we'd have to canonize blocks so there can only be one instance per block location, or yeah, desync town

#

now that's sort of feasible except we'd be relying on the gc to determine when those instances become obsolete (or make Block implement AutoCloseable lmao)

sly topaz
#

I mean, block instances are never created by users so they could easily be pooled if it were an issue

#

I find the idea of closing a block very funny though, so if I ever need to do that I'll go with that implementation

thorn isle
#

i do that for my own custom block data storage and it is kind of annoying

slender elbow
#

but it's iDioMaTiC

worldly ingot
#

What did you call me!?

vocal cloud
#

I called you DoGmAtic

slender elbow
#

speaking of

#

i need choco dog pics

daring light
#

It's single-threaded and my code is safe from those kinds of exploits I believe

#

Thanks

vocal cloud
#

just make the shop transaction-based. Then you'll be fine.

feral bear
#

Hi, do you know why my code doesn't show custom model data?

ItemStack sword = new ItemStack(Material.NETHERITE_SWORD);
sword.getItemMeta().getCustomModelDataComponent().setStrings(Arrays.asList("default"));

inv.setItem(0, sword);
vast ledge
#

Not sure, but getItemMeta might return a clone of item meta and not the origin object, so you need to .setItemMeta() the updated meta

thorn isle
#

yes, it always returns a clone

feral bear
# thorn isle yes, it always returns a clone

yeah

ItemStack sword = new ItemStack(Material.NETHERITE_SWORD);
                ItemMeta metaSword = sword.getItemMeta();
                CustomModelDataComponent componentSword = metaSword.getCustomModelDataComponent();
                componentSword.setStrings(Arrays.asList("default"));
                metaSword.setCustomModelDataComponent(componentSword);
                sword.setItemMeta(metaSword);
                
                inv.setItem(0, sword);

 
#

My code got bigger

vast ledge
#

Yea, happens

thorn isle
#

if you use paper, you can use ItemStack::editMeta

#

or maybe that also exists on spigot

feral bear
#

I'll create a function I think xD

#

And do you know how to add canBreak or canPlace to the latest version of spigot?

#

On itemStack

daring light
#

How would I go about cloning a player's inventory? I want to check if the player has enough space in their inventory.

        Inventory clone = Bukkit.createInventory(null, 54);
        clone.setContents(player_inventory.getContents());

        HashMap<Integer, ItemStack> map = clone.addItem(item);

        if(!map.isEmpty()){
            Log.playerMessage(player,"You don't have enough space in your inventory!");
            return;
        }

I currently have this, but being forced to have the inventory size at 54 isn't making this logic work. player_inventory.getStorage() returns 41, but that isn't a multiple of 9 as required by Bukkit.createInventory

thorn isle
#

that includes the armor/offhand slots

#

you could i guess bandaid it by trimming the last 5 array indices from getStorage() to get to 36

#

it'll mean that stuff won't get inserted into the armor and offhand slots, but that's kind of acceptable

#

alternatively just loop through the inventory manually and see if there's enough space

daring light
thorn isle
#

i don't remember, but they're always in the same order

#

i know offhand is slot 41 for sure

#

but armor might be 0-4

#

either way one Arrays.copyOfRange should do it

#

or List.subList if it's a list

eternal oxide
#

why clone? just add it and if the returned map is not empty the add failed and there is no room

thorn isle
#

he most likely wants to do it atomically, as in if some items don't fit, don't add any at all

#

by the time you get the map, some of the stuff is already added in the inventory

eternal oxide
#

ah

eternal oxide
#

so add all or nothing

thorn isle
#

personally i'd probably just drop the excess on the ground with the can be picked up uuid set to the player, and call it a day, but i guess that's not super ideal

feral bear
#

Hi, do you know how to add canBreak or canPlace to an itemStack in the latest version with spigot?

chrome beacon
#

?jd-s

undone axleBOT
daring light
#

I didn't know you could do that, so that only a certain player can pick it up

#

I didn't find this function in the Javadoc however

#

World.dropItem() doesn't accept any UUID parameter

#

Found it

chrome beacon
feral bear
chrome beacon
#

Yeah that'd probably work as well

noble current
#

can anyone help me with item model?

#

i want to create a custom item which appears when i kill a custom mob, the problem is that the item appears but without the custom texture

#

private ItemStack createCuernoDemoniaco() {
ItemStack cuerno = new ItemStack(Material.GOAT_HORN);
ItemMeta itemMeta = cuerno.getItemMeta();

    if (itemMeta != null) {
        CustomModelDataComponent customModelData = itemMeta.getCustomModelDataComponent();

        List<String> strings = Arrays.asList("permadeath:cuerno_demoniaco");
        customModelData.setStrings(strings);

        itemMeta.setCustomModelDataComponent(customModelData);

        itemMeta.setDisplayName(ChatColor.LIGHT_PURPLE + "Cuerno demoníaco");

        itemMeta.setLore(Arrays.asList(
            ChatColor.GRAY + "Un cuerno místico que emana",
            ChatColor.GRAY + "energía demoníaca..."
        ));

        cuerno.setItemMeta(itemMeta);
    }

    return cuerno;
}
grand flint
#

whys it an array

noble current
grand flint
#

an item only takes on single custom model data

#

also make sure ur resourcepack even works

noble current
#

my resourcepack works

grand flint
#

try to give ur self that item with that custom model data

#

proof?

noble current
#

i think the problem maybe is the word of the resourcepack

#

"permadeath:"

thorn isle
#

items now take custom model data as arrays

#

of booleans, floats, or strings

noble current
thorn isle
#

idk how that is represented in the api; i think the old int method translates it into a single-element float array

noble current
noble current
thorn isle
#

that sets the custom model data as a list of strings

noble current
grand flint
grand flint
thorn isle
#

presumably it should probably maybe work

#

do /paper dumpitem while holding the item created through your code

grand flint
#

i didnt know it took arrays though?

thorn isle
#

to see what the data actually ends up being

#

or whatever analog spigot may or may not have

thorn isle
thorn isle
grand flint
#

thats cool

noble current
#

but without his custom texture

thorn isle
#

what plugin manages the custom mob

noble current
#

im thinking that the problem maybe is the word "permadeath:"

noble current
thorn isle
#

how is the item dropped

#

are you dropping it?

noble current
#

wait

#

im trying to add it as recipe too

#

to see if i can see the texture

#

but its the same

stoic briar
#

Hello

noble current
stoic briar
noble current
#

im using item model

#

in 1.21.5

stoic briar
#

Eh i cant really help with that , i was here to ask if someone is willin to teach me how to develop mc plugins

thorn isle
#

are you adding the recipe through the bukkit api or through some other plugin

thorn isle
#

and when you take that untextured horn from the result slot, what does /paper dumpitem show for it

noble current
#

custom model data is the problem?

thorn isle
#

looks like somewhere along the way bukkit/nms converts the single string into an array of strings

noble current
thorn isle
#

and ditches the namespace from your string

#

it was permadeath:cuerno_whatever originally

#

now it's just cureno whatever

#

smells like an api/impl error i think, but you can probably bandaid it by not using a namespace

noble current
#

i can't use "permadeath:" in namedspacedkey because it don't supports the :

stoic briar
#

Can 1 of u teach me or atleast guide me with the roadmap to develop plugins?

thorn isle
#

there are many guides and tutorials online

noble current
#

you know how to use item model?

thorn isle
#

here is one that is probably 5 years out of date

#

intellij idea 2017

#

make that 8

grand flint
noble current
grand flint
#

so use the paper api

#

idek why people built on top of bukkit these days

noble current
#

how do i use item model in paper?

grand flint
#

idk

#

but its probs easier and safer 🙏

thorn isle
#

seach their javadocs for data component or whatever

#

ItemStack::get/setData and DataComponentTypes

noble current
#

thanks guys

#

this worked

#

ItemStack cuernoDemoniaco = Bukkit.getItemFactory().createItemStack("goat_horn[minecraft:item_model="permadeath:cuerno_demoniaco"]");

proud pendant
#

hello is ther anybody thnow , with ei editor can i make fishing rod which after shot enemy giving him effect slownes and blidness?

grand flint
#

yeah u can make that with ai

proud pendant
#

can you give me tutorial pleas bro

grand flint
#

no ask ai

#

its really easy

#

its like

#

1 event

#

and then 2 apply affects

#

thats it

thorn isle
#

i'm sure if someone put a bit of effort into it, one could create a pretty decent tutor/guide bot for picking up the bukkit api

proud pendant
#

but effects for enemy

trim lake
#

When the armor stand is passanger of an zombie for ex. can I make it it will not remove zombie name (if set ofc)? Bcs rn, its removing zombie name and displaying armor stand instead. Probably I will have to move armor stand with zombie than?

grand flint
#

kaperton

#

or something

#

its pretty good

thorn isle
#

is that specifically for bukkit?

proud pendant
#

how i can make this but effects for enemy and give cooldawn for this

#

is it possible?

thorn isle
#

yes, just only apply it to enemies and enforce a cooldown on it

grand flint
#

its a chat bot

#

it detects keywords in images and texts

proud pendant
#

is in abilityies blidnes and slowness?

thorn isle
#

yes, i mean someone should go and create a chat bot specifically for learning the bukkit api

proud pendant
#

i cant find aplly this on enemy

#

can i give you stream at vc and you teach me?

worthy yarrow
#

I feel like the underlying concepts of what you're writing is where a bot might be able to asist so you actually know what you're doing and why

#

It'd also be nice for it to analyze side effects of some api snippets and how they correlate to your impl, etc

thorn isle
#

a bot is probably objectively worse than a well structured and edited video or text tutorial, but the issue is that most people have maybe like 500ms worth of attention span

#

which is something that a bot works better with

worthy yarrow
#

Yeah I suppose that's true

#

Different learning models exist for that exact reason so yeah

#

Sucks you can't find someone who'll just sit down and read though

#

Imagine getting a tut on bukkit api in the form of a bedtime story kek

grand flint
#

we need videos

#

with subway surfers on the background

thorn isle
#

"bukkit api 101 part 31 out of 75" youtube short

worthy yarrow
#

31 out 75 more like 31 out of 1092

#

1 minute shorts over X methods in the bukkit api lol

grand flint
#

nah just show useful stuff

#

particles

#

custom item data and such

#

fuck packets aint nobody gonna learn that

#

on ytbe shorts

worthy yarrow
#

I mean

#

Who the hell is learning bukkit api through yt shorts kek

grand flint
#

real ytbe short users

worthy yarrow
#

Idk I particularly enjoy reading books

grand flint
#

hhhahha

#

nerd

#

i only read ytbe shorts 💪

worthy yarrow
#

I mean

grand flint
#

bro my attention spam is so small

#

i finish a round

#

then alt tab

#

its like a 15 sec intermission 🙏

worthy yarrow
#

Books are good for information when you're actually able to sit down and read it. I understand the appeal for that short attention span but it'll never be a good trait in the future

thorn isle
#

in my experience, the towny guys have been using chatpdf with pretty good results

grand flint
#

nah dude

#

ai is goated as long as u know how to use it

#

"generate me a plugin" ❌

worthy yarrow
#

What is chatpdf? essentially ai printed jdoc descriptions?

grand flint
#

"can u apply an effect to the player on the fishing rod event"

thorn isle
#

it's like uh

#

"chat with a pdf"

#

i.e. chatgpt but with file search that can read and search the pdf

worthy yarrow
#

Like a real time response q&a kinda thing?

thorn isle
#

myeah

#

basically javadocs on steroids

#

they have a free plan up to 10 page pdfs and n messages that anyone can use

worthy yarrow
#

Oh that's actually really cool

thorn isle
#

so they have a discord command that just links to it that they throw at anyone asking newbie questions

#

or it looks like they've upped it to 120 pages or something

worthy yarrow
#

That's a cool system, feels like it's the same as designing your own bot or perhaps worse... It's only context is what's given from the pdf I assume

#

I'd have to try it and see

thorn isle
#

that's what 99% of "bots" made using ai are

sly topaz
#

I prefer notebooklm, it generates podcasts about the PDFs I send to it

thorn isle
#

very few people actually train their own models for things like these

#

it's always just some basic function calls and files to search through

stoic briar
#

Uh can we make players glow for specific player only in vanilla bukkit?

worthy yarrow
worthy yarrow
grand flint
#

use packetevents

thorn isle
#

even then file search and function calling can be very powerful when done right

stoic briar
grand flint
#

no ew bro wtf

#

use packetevents

worthy yarrow
#

Who ever trusted these kinds of things to be done "right" It's alwyas just been "if it works it works" and even then that saying is so vague, you could return almost any result of it "working"

grand flint
#

protocllib is for old people who cant break their habits

#

also are u using paper? if not, why arent u

thorn isle
#

lmao

stoic briar
#

I used maven architect to setup plugin files , and paper for server

grand flint
#

yeah thast fine

sly topaz
#

you're going to end up muted like that fase lol

grand flint
#

now u can use packetevents which is another plugin that makes it easy to interact with packets

grand flint
#

i thought we supported paper 🙏

worthy yarrow
#

Don't let md see you

sly topaz
#

Spigot doesn't endorse any of its forks

grand flint
#

sorry papa md 😭

sly topaz
#

issue with it is that people will come here for issues which might be inherent to Paper and its APIs, which leads to all sort of issues

grand flint
#

yh ig

#

use spigot api ✅

worthy yarrow
#

I'm not an expert on spigot nor paper api, yet I'll still yell at you for using paper in a spigot server

sly topaz
#

well, use whatever you want, just choose the right discord to ask for help about it

hybrid spoke
#

?whereami

worthy yarrow
#

Perfect

winter jungle
#

How can I prevent a villager from shaking its head after interacting, especially when it has no trades? I'm already cancelling the PlayerInteractAtEntityEvent

daring light
worthy yarrow
hazy shell
#

Hey, I have a bunch of items stored in a database from a legacy version (1.20.2) and I want to update to 1.21.3 (another legacy version, but one with the updated Item Component system). How should I go about updating the items? Is there a legacy deserializer I could use that includes NBT data? (resent since I sent in the wrong channel)

thorn isle
#

as in it can give answers to the questions it's been prepared to answer

#

can't really expect more out of it

young knoll
#

Hopefully as NBT

#

The game should still be able to deserialize old NBT values

#

Even better if they have a data version so you can run it though DFU

thorn isle
#

if you know the version they're from you can determine the data version as well

#

pretty sure paper at least runs all items through the dfu to the current data version under the hood

young knoll
#

True

#

Yes paper stores a data version in the NBT when serializing to bytes

thorn isle
#

stopping at 1.21.3 specifically might be difficult though, or at least require a direct call to the dfu

#

or well unless the server is at 1.21.3 but since they described it as a legacy version i'm guessing it isn't

earnest girder
#

is there a way to "spawn" a beacon beam at a location using nms?

young knoll
#

You’d have to spawn a full beacon

#

With at least a 3x3 base

slender elbow
#

or use an end gateway

#

different colour but simpler to deal with

echo basalt
#

eh

#

tile entities

#

can you even color an end gateway?

buoyant viper
torn shuttle
#

I was a happier man before i learned to use maven and gradle properly

torn shuttle
#

why is it

#

ah man

#

it's one of those again isn't it

#

1.21.6 and 1.21.7 are both R5 internally?

buoyant viper
#

i was a happier person before i learned how to use a computer

torn shuttle
buoyant viper
#

D:

sleek hedge
#

good evening, I'm looking for a developer to start a Factions server project. If you're interested, send me a DM.

torn shuttle
#

?services

undone axleBOT
sleek hedge
#

thanks

wet breach
pure dagger
#

is there a way to prevent player from putting their item to a chests? i want them to have the item all the time in their inventory.. i dont know how to detect when they put it to chest because they can use number key etc

sullen marlin
#

thats still InventoryClickEvent Im pretty sure

thorn isle
#

you'll need to listen to click and drag events and account for shift clicks and a few other things

pure dagger
#

thats the problem

young knoll
#

Check if the clicked inventory is the top inventory and the cursor isn’t empty

#

Or if it’s the bottom inventory and a shift click

thorn isle
#

listen to the click event and have an exhaustive switch statement on the InventoryAction and use getCurrent and getCursor to determine whether to cancel it or not

young knoll
#

Time to make a util for this

#

And sell it for $4.99

thorn isle
#

there are lots of ways of inserting items into an inventory and taking them out, so the switch is useful as a checklist so you don't miss any

pure dagger
thorn isle
#

for HOTBAR_SWAP you'll want to check both the target slot and the hotbar slot

pure dagger
#

how

thorn isle
#

cursor doesn't matter for that one

#

getSlot

#

getCurrent

young knoll
#

I would just cancel that one if the clicked slot is the upper inv

thorn isle
#

depends on how strict you want to be, if some false positives are acceptable that's fine

pure dagger
#

they can put other items just not that one

young knoll
#

I see

thorn isle
young knoll
#

Then yeah check the item in the hotbar slot

pure dagger
#

its the item which is clicked

#

how does this help with checking if the special item was uhmm put into the chest

thorn isle
#

because the click event fires for that item and that item is the item that was clicked

#

check the item in the hotbar slot with getHotbarButton() and get the item in the other slot with getSlot() or getCurrent(); the items in those two slots will swap places

#

if the one in the hotbar slot is your item, and the getSlot() is in the chest, cancel

pure dagger
#

oh wait i didnt know there is some getHotbarButton method

#

thanskssss

topaz cape
#

what am i doing wrong here

#

o:

pure dagger
#

i dont thing you used this

topaz cape
#

the jar gets created, just not remapped

pure dagger
#

i mean the getSlot to check if the top inventory was clicked and not the bottom one right

thorn isle
#

it's just a shorthand for getting the item in the clicked slot; for hotbar_swap you won't need to check it, but you might for some other inventory actions

#

if you wanted to for example prevent an item from being taken from a chest you'd need to check it as well

pure dagger
#

thanks

sullen marlin
topaz cape
pure dagger
#

uhmm

#

do i use getClick or getAction

topaz cape
#

of 1.17.1*

sullen marlin
#

If you're going from Mojang you need two steps, Mojang to Obf then Obf to Spigot

topaz cape
#

oh

#

im assuming this is "obf"

#

but the thing is.. its not really?

#

idk

sullen marlin
#

pk at the bottom and atg at the top would be Obf. The rest isnt

topaz cape
#

ye but the thing is that why did they not change

sullen marlin
#

Because you reversed the spigot maps not the Mojang maps?

topaz cape
#

oh i see

#

im dumb

topaz cape
#

yeah i dont seem to find the srg mappings of mojang available online

#

they seem to provide json files

#

which is assume is yarn format or whatever

buoyant viper
#

i think mojangs mappings are just a dinky text file in the version json

#

it has a format but idr what it is

topaz cape
#

i found it as a txt file

#

O:

#

now converting this to SRG 😭

sullen marlin
#

specialsource can handle .txt

lilac dagger
#

Alex has a nice tutorial to convert nms spigot maps to mojmaps

topaz cape
#

I THINK I GOT IT WORKING

#

i wrote this util

#

which downloads the necessary mappings (if needed) 😄

#

then i updated the old gradle task

#

now the class looks like this 😄

fickle spindle
#

how can i use a placeholder like luckperms prefix in my p.sendMessage?

sly topaz
grand flint
#

thats literally what he asked 🙏

sly topaz
#

unless you specifically want just the luckperms prefix, in which case you can just depend on LuckPerms API and obtain the prefix from it

#

ig Vault API would work for that purpose too

thorn isle
#

vault is preferable

#

the luckperms api for "just get the thing" is really overkill because you can have multiple of "the thing" and there are context sets and weights and all manner of nonsense

#

good old vault just has a get and it gets you the thing you want to get

grand flint
#

lp metas are nice if u know how to use them properly

fickle spindle
thorn isle
#

vault is preferable over luckperms

#

papi is completely different from vault/luckperms

grand flint
#

@thorn isle

#

come

sturdy reef
#

Is there a way to check if a player closes a book gui or is if he has one opened?

sly topaz
thorn isle
#

i think it might fire an interact event but i'm not 100%

sly topaz
#

I'd just skip books altogether and use dialogs

#

no API for it yet I believe so it is all the more fun kek

young knoll
#

There is though

#

There has been since release

sly topaz
#

I thought that was just for bungeecord

thorn isle
#

but muh 1.8 players

sturdy reef
#

and i want it that if the console tries to open a book for a player and the player has an open book already, with a higher priority it just cancels the book opening. or else it opens the new book to the player

sly topaz
#

check if it triggers an interact event first

#

if it does not, then you might just be out of luck

sturdy reef
#

im trying to do that rn

#

I'm thinking of doing it that if a player interacts or moves, then i take that as he doesn't have an open book rn, and can open a new book.

#

but that's a pretty cheap way to do something like that

#

not reliable aswell

sly topaz
#

not reliable but realistically not like you have any other way to detect it

sturdy reef
#

true 😭

sly topaz
#

you can make it more reliable by checking more interactions types, i.e. if they scrolled their hotbar or opened a different inventory, etc

thorn isle
#

use the player input packet

#

i mean event

#

that should be more reliable than just checking for movement, because of e.g. water pushing and soft collisions

grand flint
#

well doesnt the player write the book to the server

#

it must be an event no?

thorn isle
#

only if it's a writable book

#

if its a written signed book, i don't think so

grand flint
#

wait i got an idea

#

what if u made a specific client launcher for ur server

#

then added a custom event to that client and server

#

so than u can listen to the book closing event

sturdy reef
#

man your a genius

grand flint
#

that might work not 100% sure though

echo basalt
#

let's get rid of husksync / its alternatives and just use luckperms

#

💪

pure dagger
thorn isle
#

you could listen to inventory close, check if the cursor is holding your item, try put it in the inventory, and if there's no room for it, toss/delete something from the inventory to make room for it

pure dagger
#

maybe

eternal oxide
#

if you want to ensure an item stays in the inventory lock it to a specific slot. prevent it being moved at all

young knoll
#

What if I don’t want to lock it to a specific slot

eternal oxide
#

go play teraria!?

#

however its spelt

thorn isle
#

what plugins usually do with items like these is shove them into a "quest backpack" gui where it can't be interacted with

#

just looked at

#

and maybe clicked to do some quest thing

young knoll
#

I don’t see what terraria has to do with this

silent slate
#

Hey, this is a pretty simple problem but i am not getting it.
How do i make it that if I want to have an item in the 8th slot (hotbar on the far right) to have an item there and the player shouldnt be able to move it, how do i do that? I already got it to be non dropable, but InventoryClickEvent is really weird its firing multiple times..

This is my code:

if (!player.getWorld().getName().equals("plotworld") && !player.getWorld().getName().startsWith("farmworld_"))
            return;


        if (event.getCurrentItem().isSimilar(getCbCyberMenu())) {
            event.setCancelled(true); 
            Bukkit.getScheduler().runTaskLater(getInstance(), () -> {
                if (player.getInventory().contains(getCbCyberMenu())) {
                    player.getInventory().remove(getCbCyberMenu());
                }
                player.getInventory().setItem(8, getCbCyberMenu());
                player.setItemOnCursor(null); // 
            }, 1L);
        }
silent slate
#

how do i even check if he clicked the item from InventoryInteractEvent?

hoary portal
#

@EventHandler
public void onInteract(PlayerInteractEvent e){
Player player = e.getPlayer();
if(e.getItem().getItemMeta()...){
e.setCancelled(true);
if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK) || e.getAction().equals(Action.RIGHT_CLICK_AIR)){
player.openInventory(...);
}
}
}

silent slate
#

PlayerInteractEvent ??

thorn isle
#

i don't think that has anything to do with what he's asking for

hoary portal
#

wait i selected the wrong event

#

wait

#

@EventHandler
public void onInteract(InventoryInteractEvent e){
Player player = e.getPlayer();
if(e.getItem().getItemMeta()...){
e.setCancelled(true);
if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK) || e.getAction().equals(Action.RIGHT_CLICK_AIR)){
player.openInventory(...);
}
}
}

this should work

young knoll
#

What

thorn isle
#

is this chatgpt

#

what he wants to do is to stop the item from being moved around in the inventory

wooden bay
trim quest
#

int slot = event.getSlot()
if slot = ...
setCancelled

mortal hare
#

this might sound weird but i wonder why dont we do plugins that rely on other plugins functionality just by dispatching plugin's commands like datapacks so that the code you write could be substituted easily without ABI breakage and less code overall, sure dispatching takes time, but does it really matter if some actions would dispatch slower than usual for an integration implementation, also it allows for access control like permission levels etc

#

you can treat commands as some kind of "RESTFUL api" where you input commands to do some things, suite of commands acts a set of service actions that could be done on the plugin

#

if you dont care about performance in certain contexts dispatching commands can be a lazy way to achieve very good backwards compatibility, access control and less depedencies on your plugin's codebase

wooden bay
#

most devs stick to APIs because they're just easier to work with i think

#

idk commands feel messier & slower a pain to debug maybe?

mortal hare
#

you can isolate plugins codebase from external dependencies

#

minecraft could for example expose /command add command which would register commands at certain privilege level

#

and plugins or datapacks would use that to register specific commands at minecraft level instead of tying your code with bukkit api wrapper on brigadier in backwards compat way

#

just like they did with /dialog command

wooden bay
#

one small change or typo can break things silently, right?

#

unlike APIs which catch issues early

mortal hare
#

well dispatching commands can return error results, they already do

#

JSON Restful API's essentially work like that, they send actions to a resource using HTTPS protocol via the URL

#

why not just do that with minecraft by dispatching commands for the sake of less hassle to maintain codebase in the future by loosely coupling your plugin's inner workings with another codebase

wooden bay
#

REST works because it returns clean JSON you can safely parse

mortal hare
#

for example if the command sender is plugin or mod type, you send message back to sender in JSON or other format

wooden bay
#

APIs just give you that structure and safety out of the box

mortal hare
wooden bay
#

Exposing more via commands makes sense for vanilla stuff ig

echo basalt
#

I've always had an internal debate about when a config system becomes a programming language

#

and IMO it's when you add strong typing

sullen marlin
#

JavaScript is a config language, got it

echo basalt
#

and maybe when you also add functions

#

either-or

#

it's why pkl or whatever didn't get wide adoption

#

ppl cba setting up a big ass editor

echo basalt
#

bruh why is there no player.setCooldown(namespacedKey, ticks)

#

nms has it

echo basalt
#

1.21.7 moment bruh

#

I'm on 1.21.4 and it no exist

rotund ravine
echo basalt
#

😔

#

half our dependencies haven't updated yet

#

will just do an nms one-liner

rotund ravine
#

Nuhuh 😤

grim hound
#

are my shaders a tad large?

rotund ravine
#

Nah

grim hound
rotund ravine
#

Good

grim hound
#

they do not compile

rotund ravine
#

Skill issue

grim hound
#

that this is fine

rotund ravine
#

Comment it out

grim hound
#

it's being a bit dramatic here

grim hound
young knoll
#

What on earth are you doing

grim hound
#

Uh

#

Very much

young knoll
#

I can tell by the 1.5 million vec4s

grim hound
#

#general message

#

I did this

#

But well

#

Mc textures are up to 256x256

#

So if you wanna have more than 16 frames

#

Of 64x64 textures

#

Gotta put them bytes directly

#

(I am artistic)

young knoll
#

I feel like it would be easier to just send multiple titles

grim hound
#

No no

grim hound
#

The command typing

#

Its rendered everywhere, and that's the point

young knoll
#

I see

grim hound
#

So uhhh

upbeat silo
#

Hey, I need a mob to only target one specific player and ignore everyone else. how do i do this

grim hound
#

Wtf do I do

grim hound
young knoll
#

What type are the vec4 parts

#

Double?

grim hound
#

Wdym?

grim hound
young knoll
grim hound
#

Not sure, lemme look it up

earnest girder
grim hound
#

I could make them bytes

young knoll
#

Huh

#

That’s only like 24mb

grim hound
#

Since they're colors and all

young knoll
#

Not a ton but yknow

grim hound
grim hound
young knoll
#

Oh god you pass each one manually

grim hound
#

Uhhh

#

Yeah

#

They repeat

#

A lot

grim hound
grim hound
#

Just see damage modifiers bruh

earnest girder
young knoll
#

Can’t seem to find it though

grim hound
#

So only textures that are being loaded rn

grim hound
# earnest girder what do you mean?

Calculate with damage modifiers including and excluding armor, this will be the damage negated by armor, multiply by 0.3 and set the final damage as the one excluding armor plus this

young knoll
#

At this point just give the player an attribute modifier to reduce armor

#

Granted idk if it can go below 0 and what will happen if it does

earnest girder
young knoll
#

Why

earnest girder
young knoll
#

Do attributes get lost on death? Either way that’s not a big deal

earnest girder
#

pretty sure they also get lost when you log

young knoll
#

They don’t

#

Pretty sure the damage modifier api is deprecated

#

No idea if it still works properly

#

Just try the original code with some print statements, see if the values match what you expect

grim hound
#

I cannot check the impl of this event rn

#

If there is an attr, it's way easier to use it

young knoll
#

What do you think armor uses :p

echo basalt
earnest girder
#

I forgot to mention I only want to reduce armor protection when players get hit by my custom projectiles

#

so is this the best option?```java
double originalDamage = event.getDamage();
double finalDamage = event.getFinalDamage();
double reduction = originalDamage - finalDamage;
double newReduction = reduction * 0.3;

event.setDamage(originalDamage - newReduction);
rotund ravine
#

If it works it works

echo basalt
#

bruh wish there was a way to pause gradle tasks

#

was pulling a project mid-game ts lagging my pc like hell

eternal oxide
#

Why are you playing games? Get back to work.

torn shuttle
#

@echo basalt hey, do you know of any way to batch packets

#

I haven't done enough packet work

#

basically a way to take a bunch of packets you were going to send and group them

sly topaz
#

You can just use a bundle packet

torn shuttle
sly topaz
torn shuttle
#

ok so it's not just me having a hard time finding a reference for this

#

thanks

mellow coral
#

Hi guys,
I'm trying to get the 1.8.8 jar with buildtools, but it gives me this classic error.
Please don't ask why I'm trying to compile the old version. Does anyone have any ideas for a solution to this issue?

Exception in thread "main" java.lang.RuntimeException: Error patching Block.java
        at org.spigotmc.builder.Builder.lambda$startBuilder$2(Builder.java:617)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
        at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
        at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
        at java.util.Iterator.forEachRemaining(Iterator.java:116)
        at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
        at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482)
        at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:472)
        at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
        at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
        at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:485)
        at org.spigotmc.builder.Builder.startBuilder(Builder.java:568)
        at org.spigotmc.builder.Bootstrap.main(Bootstrap.java:60)
Caused by: difflib.PatchFailedException: Incorrect Chunk: the chunk content doesn't match the target
        at difflib.Chunk.verify(Chunk.java:86)
        at difflib.ChangeDelta.verify(ChangeDelta.java:78)
        at difflib.ChangeDelta.applyTo(ChangeDelta.java:44)
        at difflib.Patch.applyTo(Patch.java:43)
        at difflib.DiffUtils.patch(DiffUtils.java:70)
        at org.spigotmc.builder.Builder.lambda$startBuilder$2(Builder.java:605)
        ... 13 more```
#

openjdk version "1.8.0_442"
OpenJDK Runtime Environment (Temurin)(build 1.8.0_442-b06)
OpenJDK 64-Bit Server VM (Temurin)(build 25.442-b06, mixed mode)

young knoll
#

You essentially just pass it a list of packets

#

Well, you did when the constructor was public

#

Mojaaaaaaaaang

sly topaz
sullen marlin
thorn isle
#

i wish bundle packets were compressed as one contiguous packet instead of individually

#

would really help with those "spawn 1500 particle effects" situations

#

or honestly even chunk packets

#

right now all i think bundles do is make sure the packets get received within the same tick and probably not interleaved with any other packets

sly topaz
#

It’d be more meaningful if bundles only contained packets of the same type, so that one could actually take advantage of that locality but they don’t necessarily have that restriction on their design

thorn isle
#

It wouldn't be redundant because small packets, like particles, don't get compressed

#

Also, compressing larger things in bulk is usually more efficient

mellow coral
#

@sullen marlin Should I run the './applyPatches.sh' file created in the spigot folder after the error?

sullen marlin
#

No, much more complicated

#

You'd need to run in craftbukkit, then commit to patched branch, pull spigot, run in spigot, then compile

#

?howold 1.8.8

undone axleBOT
sullen marlin
#

Idk what the issue is but I assume your block.java didn't decompile in the expected way

#

Worked fine for me though

grand flint
#

idek why u wouldnt use a fork for 1.8.8

#

using spigot / paper for 1.8 is just crazy 🙏

azure zealot
grand flint
#

just use flamepaper or imanity3

#

pandaspigot works too

azure zealot
azure zealot
grand flint
#

any server running 1.8 either uses a fork or maintains their own fork

azure zealot
grand flint
#

meh

#

he is just tryna make money

#

good marketting imo

azure zealot
#

maybe good marketing but no real improvements in his stuff idk

grand flint
#

w flamepaper?

#

its deff improvement and at least maintained

#

imanity3 is good if u have the budget

#

or if ur tryna make a actual big server then either use 1.21 or maintain ur own fork

#

but again

#

flamepaper provides more than enough functionality

#

are u accepting folia level threadding lmao

azure zealot
#

dont even understand who actually buys stuff like this if there are like better free stuff

#

that is fully open source

grand flint
#

like pandaspigot? 💀

#

its like 10 bucks bro

#

if u cant invest 10 bucks in a server u shouldnt be running 1.8

azure zealot
#

anyways you shouldnt use 1.8 in the first place

grand flint
#

i mean flamepaper does its job

#

it doesnt need to provide anything else apart from patching bugs and providing basic pvp funcitions like pearl fixings and kb

grand flint
#

u can fully replicate 1.8 pvp with the new components and such

#

1 to 1

azure zealot
#

nahhhh

#

the movement is still different

grand flint
#

no it isnt

#

skill issue if u cant replicate it

azure zealot
#

it is

sullen canyon
#

client side it is still very different

azure zealot
azure zealot
grand flint
#

lol

#

components are a part of the client

#

again if u cant replicate it skill issue

azure zealot
#

still very different movement

sullen canyon
grand flint
#

googo gaga

#

keep crying

#

skill issue

#

i had 10% of my players complain about the pvp not being like 1.8

sullen canyon
#

just in case you want to know here is a good list of things which have to be changed client side to make it feel like 1.8

grand flint
#

sword blocking LMAO

#

see clearly just shows ur stupidity

#

Sneaking Height & Interpolation u can change with resourcepacks

azure zealot
#

yes for example sword blocking

grand flint
#

Removes the blocking delay caused by high latency.
can be fixed

azure zealot
#

have you ever blocked with a sword in 1.8?

#

😂

grand flint
#

yeah its a component in 1.21.4/5 or sum

azure zealot
#

its totatly different than in latest

grand flint
#

clearly ur knoledge extends to 1.16

#

sure it is

#

Hides offhand hotbar slot and disable the swap hand hotkey.
easy to disable

#

these are all litearlly for a vanilla server

azure zealot
#

it does not behave the same clientside

grand flint
#

u can litearlly change all of these with plugins and resourcepacks

#

clearly 0 experience

#

Hides held shields. server sided change

#

Disables the enderpearl cooldown.
server side change

#

Disables automatic sneaking when in low height areas.
packets can be used for this

azure zealot
#

even if you do all that it does not feel like 1.8 pvp

grand flint
grand flint
#

who cares about u 🙏

azure zealot
#

bro has big player base 😂

azure zealot
vast ledge
#

Why everyone so toxic today

grand flint
#

yeah why would i

#

thats not how the world works

#

when 30% of people vote for a different president

#

that doesnt mean we dont care about them

#

its called opinion

#

if 90% of people have the same opinion

#

than that 10% is different

azure zealot
#

actually we talked about that you can 100% replicate 1.8 pvp in latest

#

thats no opinion if i say you cant

grand flint
#

well its not a fact

grand flint
#

bc if u go on my server

#

its replicated 100%

azure zealot
#

you switched my statement into an opinion when its not one

grand flint
#

it is though

#

if 90% of my playerbase

#

thinks its 1.8

#

then its 1.8

#

when u say u cant

#

then thats an opinion

#

bc 90% of my playerbase thinks otherwise

#

and they arent devs

#

they are players

azure zealot
#

bro just because 90% of humanity say that you are a snail, that does not make you a snail

vast ledge
#

I mean they start MC on 1.20 I don't know how they'd think it's 1.8

grand flint
#

yeah but why would 90% of humanity say im a snail

#

?

wet breach
#

because you are slow

grand flint
#

im not gonna engage any more of ur stupidity @azure zealot

#

if u cant replicate 1.8

wet breach
#

only reason I can think of calling someone a snail

ivory sleet
#

it feels like im reading some convo if 2 rage baiters met

grand flint
#

than skill issue

azure zealot
#

why are you calling me stupid now`?

grim hound
#

guys guys

grim hound
#

I know that this is some serious matter

#

but look

#

penguin

wet breach
#

these are the questions that need answers

vast ledge
ivory sleet
#

aight lets not go down the personal route, keep it civil

grim hound
#

okay, now, does anyone here know even a little bit about glsl?

azure zealot
grand flint
#

i hate rage baiters cuz i get rage baited so easily

azure zealot
#

you are litrally the rage baiter

vast ledge
grand flint
ivory sleet
grand flint
#

W

grand flint
# grand flint

at least i didnt put my elemantary school project on my site 🙏

azure zealot
azure zealot
vast ledge
grand flint
#

just cut the conversation

ivory sleet
grand flint
#

why even continue ? 🤷‍♂️

#

so basically ur telling me to go kill my self

#

nice one

azure zealot
#

it was i philosophical question

grim hound
grand flint
grim hound
#

so a max of 16 frames of 64x64 pixels

#

not a lot

wet breach
#

got to make them frames count

vast ledge
wet breach
grim hound
wet breach
#

sharing is caring you know 😉

grand flint
vast ledge
grim hound
#

which, you know, makes sense for 1.5 million vectors

grand flint
vast ledge
wet breach
vast ledge
#

Facts

vast ledge
azure zealot
grand flint
#

or maybe

#

i can swear at him in dms

wet breach
#

yeah, super jealous it works and theirs don't

grand flint
#

what gang up

#

so easy to say go kill ur self over text

#

but when it comes to dms

#

oo shiver me thimbers

#

if ur scared of ur squeaky voice dont bullshit over text

vast ledge
wet breach
#

but that is entirely different I think

grand flint
#

dont even gotta add me friend just join the call @vast ledge

grim hound
wet breach
#

Definitely screams trap

vast ledge
#

Anyways, node or go for a webserver

wet breach
#

I am not a fan of node unfortunately and biased on that

grand flint
azure zealot
#

@grand flint why are you harassing people now

grand flint
#

this guy took an hour to write a simple html header

vast ledge
wet breach
#

I am an apache fan

vast ledge
wet breach
grand flint
#

yeah proud to be ur 20th viewer

vast ledge
thorn isle
#

lol

grand flint
wet breach
#

You can use it as a reverse proxy if you want. Apache was first then nginx. Nginx excells at static content but apache beats it when it come to dynamic

grim hound
vast ledge
wet breach
grim hound
wet breach
#

ok, so no other limits?

grim hound
#

this whole is render and the shader chooses one frame and stretches it to the original size

wet breach
#

what you can do then is just record the changes between the first and last frames. And all you store for in between is only what changes

grim hound
wet breach
#

so essentially you just have a list of offsets and those offsets contain the changes

thorn isle
#

depends a bit, in that example like 95% of pixels don't change between frames

vast ledge
#

Flexibility:
ICO files are designed to hold multiple images, making them versatile for different display needs.

Resolution and Color Depth:
You can include images of different sizes (e.g., 16x16, 32x32, 48x48, 256x256) and color depths within a single ICO file.

grim hound
#

I'm speaking of a general system

grim hound
young knoll
#

Can you load an ICO file with GLSL

grim hound
#

I have no idea ;-;

young knoll
#

My guess is no

thorn isle
#

i mean a texture is a texture

young knoll
#

Since afaik GLSL runs on the graphics card

wet breach
#

you will have to pass the image data to a shader as a texture

grim hound
#

yes, and I need to reference it directly in the code

young knoll
#

Good luck with that

thorn isle
#

file format doesn't really matter, it all ends up in whatever format you use to upload the data to the gpu

young knoll
#

It’s already on the GPU

thorn isle
#

then the file format hasn't mattered for a while

young knoll
#

Afaik the gpu can’t upload something to itself

grim hound
#

minecraft has a fixed amount of samplers