#help-development

1 messages · Page 1156 of 1

wheat kiln
#

Anyway I'm going to go sleep now. gn

#

feel free to give me feedback or constructive criticism if you want

smoky anchor
#

Good to see usage of guard clauses
Personal nitpick, a space behind each comma. (Just like in this sentence)
And I would not use Objects.requireNonNull like this, simply create variable, check if null, if null just return

smoky anchor
#

Using requireNonNull will just mean you get an exception in the logs, which may confuse whoever is using the plugin into thinking there is a bug in it.

wheat kiln
#

Knew it most likely wouldn’t be the issue but no harm in trying

eager flame
#

Sorry if this is a dumb question but I'm trying to figure out how to create a command, I know you can do it in the plugin.yml or whatever but I was wondering if there's a a way to register it differently

#

I'm new to Java development as a whole

smoky anchor
#

There is, but plugin.yml is the only supported way I know of
Just do it there

eager flame
#

Ok

smoky anchor
#

And I would recommend first learning Java before making plugins

eager flame
#

Yes sir

smoky anchor
#

Here, have some resources

#

?learnjava

undone axleBOT
#

For Beginners:

Codecademy - Learn Java: Interactive Java programming course from basics to more advanced concepts. Perfect for absolute beginners.
https://www.codecademy.com/learn/learn-java
JetBrains Academy - Java Developer Track: Learn by doing with projects and challenges. It covers Java fundamentals to advanced topics.
https://www.jetbrains.com/academy/
Udemy - Java Programming Masterclass for Software Developers: Updated courses that cover Java 8 to Java 17 features. Suitable for those who prefer structured learning.
https://www.udemy.com/course/java-the-complete-java-developer-course/

For Intermediate to Advanced Learners:

Oracle Java Tutorials: The official guides by Oracle for Java programming—great for understanding the depth of Java.
https://docs.oracle.com/javase/tutorial/
Baeldung - Learn Java and Spring: Focus on Spring Framework and modern Java technologies. Best for intermediate learners aiming to expand their knowledge.
https://www.baeldung.com/

Practice and Hands-on Learning:

Exercism - Java Track: Solve exercises and get feedback from mentors. Great for practicing coding skills.
https://exercism.io/tracks/java
LeetCode: Practice your coding skills and prepare for technical interviews with Java.
https://leetcode.com/

Free Resources and Documentation:

Java Programming and Documentation: A comprehensive collection of Java programming guides, tutorials, and API documentation.
https://docs.oracle.com/en/java/

Community and Support:

Stack Overflow: A vast community of developers. Great for getting help with specific problems or understanding concepts.
https://stackoverflow.com/questions/tagged/java
r/learnjava on Reddit: Join the community of Java learners and get advice, share resources, and discuss projects.
https://www.reddit.com/r/learnjava/

Remember: Learning to program takes practice and patience. Don't hesitate to experiment with code and participate in community discussions. Happy coding! 🎉

eager flame
#

Awesome thank you

wheat kiln
smoky anchor
#

Ye it is much, much easier to learn a new language once you know one.
But if you're new to programming as a whole, def. start with pure java basics.

wheat kiln
#

Yeah honestly if someone wants to learn a language I would recommend a really simple language just to get the basics and “programmer” thinking down

#

As that makes other languages way easier to learn then just throwing them in the deep end and making them demotivated and unhappy with the results

smoky anchor
#

I don't mean to say "if you want to do programming, learn java"

wheat kiln
#

Java promotes itself as a versatile language that can run on lots of different devices

#

Is there many things Java can do (not just easier but that cannot be done otherwise) than python?

#

Because I would assume python is available on most of the same devices as Java

mortal hare
#

is there any better way to delegate all existing functions inside class when declaring its value class wrapper

#

its kind of very bloaty to write all of them

#

especially with operators

#

as im implementing value class of a data type

smoky anchor
#

Are you doing java ?
Valhalla is not out yet..
(I probably just don't know the thing you're talking about)

young void
#

hi
some roleplay servers use item frames as atm gui interface and you can interact with buttons and text inputs and ...
and a couple of servers have very similar atm gui's which work in the exact same way. is there a famous plugin that i cant find or they just hired the same developer?

smoky anchor
wheat kiln
#

How hard are sign shop plugins to make is it not just commands and then logic to process the information written in the sign?

wraith delta
wheat kiln
#

Also if I wanted to make a skyblock like server would it be best to incorporate everything into 1 plugin or to use multiple plugins?

wraith delta
wheat kiln
wraith delta
wheat kiln
#

Or I could make a gui thank then gives you a custom nbt sign could I not that already has the writing and maybe even incorporate clicking on signs with a block to set the item to buy / sell

wraith delta
#

its really easy you just need to break it down in your mind

wheat kiln
wheat kiln
#

I was wondering on how to check an items nbt tags

#

Like for example I could give a stick a magic tag and when you right click a dirt block with it then it gets turned into a grass block

wraith delta
# wheat kiln Also do you have much experience with nbt management

if you are going as far as being able to sell custom items with custom tags, you minus well save the itemstack, or when someone clicks the sign duplicate a item from the chest. I honestly blacklisted selling custom items in a chest shop since it is complex to ensure people are not scamming

wheat kiln
#

I believe I can set nbt tags in a /give command

eternal oxide
#

when using spigot its better to use pdc over direct nbt

#

pdc is stored in nbt

#

?pdc

wheat kiln
#

But I don’t know how to edit them with plugins / read them atm

#

So maybe signshops / claiming plugins are my next steps as well as learning persistent data

#

And slowly working my way towards being able to recreate my old favourite economy skyblock that ran out of funds for me and my friends

#

I’ll also fully comment, open source and upload the finished projects once I know they are solid and I start making user friendly configs for them so that then other people can enjoy them as well

wraith delta
wheat kiln
#

Ignore the text blob

#

I am not using proper grammar on my phone lol

wraith delta
wheat kiln
#

Basic summary:
I find chatGPT helpful in some scenarios but usually it causes more harm than help. It stops me learning from my mistakes and understanding what I did wrong so I’ll just make more in the future. It also is not creative and can only give ideas based off of already created things so original plugins with cool new features which are what people like to see. Nobody wants a clone of the most popular plugin with nothing new to offer.

wraith delta
#

it sounds like you used a older model. try 4o, current lol

wheat kiln
wheat kiln
#

Maybe it’s changed but I’ll see

#

I’ll feed it some prompts and see if I get anything good or that aligns with my plan

wraith delta
#

3 is a joke compared to 4

wheat kiln
#

Alright

#

Also I just realised I have 863 messages to MEE6 as I use it as a notepad

#

Lol

wraith delta
#

paste your existing script in the chat box and ask away. might be surprised

wheat kiln
wraith delta
wheat kiln
#

I can’t get the chatGPT app as my iOS is not new enough 💀

#

Apple keeps delaying the updates

#

It’ll be 3 years before I get the current update

wraith delta
wheat kiln
#

I think I’m logged in on the phone browser anyway

wraith delta
#

maybe its just me but when im in bed using it for code, i always have to ask again when i get on pc cuz i forget my thought process

wheat kiln
#

Ooh actually another thing I haven’t looked at is making certain blocks allow special redstone interaction or something like being able to make quartz blocks have a gui when you right click them and set the block to while it has redstone going in to pulse every so often or maybe redetone rng where it gets a pulse and “randomly” chooses a strength output

#

Idk if that’s easily possible tho but that’s going in the notepad

#

Gui and saving the data might be the harder parts

wraith delta
smoky anchor
#

For saving the data look at

#

?blockpdc

undone axleBOT
wraith delta
#

depends on what you are saving.

nova notch
#

like I get it's useful, I use it too, but why is that the first thing

wraith delta
nova notch
#

until it gives you misinformation or straight up hallucinates

wraith delta
nova notch
#

idk I don't have experience with 4 since it's paid but I've seen it make up shit a lot

nova notch
#

it is not

wraith delta
#

just need to be logged in

wraith delta
smoky anchor
#

It has limited usage tho, no ?

nova notch
#

it gives you a certain amount and resets

#

yeah

#

anyway idk why we're recommending people to use ai for learning

wheat kiln
#

I used it to make me a plan and order to develop the plugins in

#

I’ll leave the features and coding fully up to myself

nova notch
#

yeah it's good for that sort of thing

#

but as a learning tool no

wraith delta
# smoky anchor It has limited usage tho, no ?

for free a certain amount of messages then it has a 2h cooldown. during that period it switches to model 3. I bypass that by just switching tabs in chrome to another acct. i definitely would not recommend bothering with 3, it does hallucinate sometimes. but 4o... quite impressive

wheat kiln
#

I assume for a skyblock plugin it’s just making a new dimension where no blocks naturally generating and then creating the starting template they chose and allocating it to a spot in that other dimension and teleporting the player there

#

Then save the players uuid and the assigned positions to a file so you know where to teleport them and where to end their claimed land

#

And stop them building outside land they don’t have permission to

wraith delta
wheat kiln
#

Should I use umm or json files?

#

I forget the pros and cons of each

wraith delta
wheat kiln
#

But I think I’ll store player data in one folder of saved data and island data in another but it would store coordinates permissions upgrades and settings in the island one so I feel like I should use json

wraith delta
sly topaz
#

what the heck is umm files

wheat kiln
wheat kiln
#

There are many different types

sly topaz
#

smh

#

I am asking what file type umm is

#

oh, I read that wrong, it might not be a file at all

wheat kiln
#

Wdym I don’t really understand the question?

#

Give some context and I can probably help more

sly topaz
wheat kiln
#

That was autocorrect

#

It was meant to be yml

#

.yml

sly topaz
#

ah, makes sense

#

thought there was some new storage format that I wasn't aware about

wheat kiln
#

Lol no my phone just autocorrects everything and if I turn it off I end up with so many wrong letters in words it’s not worth it

#

Especially annoying with names of things and anagrams

#

Always autocorrects them

sly topaz
#

see, I also was the same

#

but then I figured that I write perfectly good english in my laptop, so what's really the issue? That I have fat fingers

#

so I just bought a bigger phone kek

wheat kiln
#

I’m rather accident prone

#

Then after spending a total of $500 on screen repairs for a new phone screen I cut my losses and went back to my old one I’ve had for years and never broken the screen of

#

Still debating whether to repair the newer one to use or if I just repair and sell it

wraith delta
#

use screen protector or change your diet

wheat kiln
#

I use a screen protector

wheat kiln
#

I’m 78kg

#

14% body fat percent last time I checked

wraith delta
sly topaz
#

I am 55kg bro, I just got fat fingers because that's my disposition lol

wheat kiln
#

The other time it fell out of my pocket and landed face down on a concrete floor as I turned around

sly topaz
#

it is just inevitable when you use your phone a lot

wheat kiln
#

The third time it fell off my desk when my cat hit it and landed on the corner of a metal box

sly topaz
#

also the fact that one trusts pockets way too much

knotty meteor
wheat kiln
#

12 hrs in 2 weeks

wraith delta
wheat kiln
#

The most annoying part is it looks perfectly fine

#

Not so much as a scratch in the screen

#

You power it on and it’s black and blue swirls

#

A single white line through a black screen

#

Or in the case of it landing on the metal box that one actually made a dent in the screen

torn bough
#

How do I play variations of sounds?

#

Oh, no images here

wheat kiln
#

Should have switched to #general

wheat kiln
#

Or ambient sound?

smoky anchor
undone axleBOT
#

Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.

Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org

torn bough
#

Like an enderman teleport has two different sounds to it

#

mob/endermen/portal and mob/endermen/portal2

wheat kiln
#

What is the issue? Are you unable to play them both?

torn bough
#

I'm asking how because the variables in spigot are only pitch and volume

wheat kiln
#

It will be a different sound thing or are you trying to make an entity play sounds

#

I’d have to take a look at the docs

#

I’m still very new to spigot / plugin development

quaint mantle
#

World#playSound

torn bough
#

Yes but how do I play the variations?

#

Because I have this player.playSound(player.getLocation(), Sound.ENTITY_ENDERMAN_TELEPORT, 10, 1);

#

But there is no option to play "variation 2"

smoky anchor
#

Take my word with a grain of salt, but I believe you have to use an RP with custom defined sounds to do this.

vital ridge
#

Not sure why but whenever i teleport my player to a different world and set his gamemode to creative, MC sets it back to survival mode.

p.teleport(spawnLoc);
        MAIN.getPlayerStateManager().setState(owner, PlayerState.EDITOR);
        p.setGameMode(GameMode.CREATIVE);
        genTerrain(voidWorld);
slate siren
#

I designed a death system and when a player hits another player the lastdamager is added, but there is a problem

When a player hits someone in a closed area in pvp, when I look at the console, it shows a damage of 0.0002, which causes the lastdamager to be added. And when the player jumps down and dies, the kill is added to the person who last hit in the pvp indoor area. What can I do about this?

vital ridge
#

Could I somehow set a world's gamemode type maybe?

#

None of my own plugins functions mess with the gamemode

#

Other than this code I just sent

chrome beacon
#

Is Mutiverse installed?

slate siren
#

Download Multiverse Core

vital ridge
slate siren
#

I forgot exactly though

vital ridge
#

Im also using it as a dependency in my plugin

chrome beacon
slate siren
#

/mv modify It was something like that, I forgot the rest

vital ridge
#

Maybe I could force the gamemode from my code?

smoky anchor
#

try the "do it a tick later" trick :D

chrome beacon
#

First try the mv api

#

and disable the gamemode changing there

slate siren
#

/mv modify gamerule adventure

Was it like this?

#

🤔

vital ridge
vital ridge
#

Would need to hire someone to just run the command all day long

wraith delta
vital ridge
#

Thanks

slate siren
vital ridge
slate siren
vital ridge
#

I got it fixed alrdy

wraith delta
slate siren
#

?paste

undone axleBOT
pseudo hazel
#

how would I go about finding out how minecraft's magic text source (obfuscated text) works? I wanna make a separate app that mimics this text effect but idk how it works

blazing ocean
#

I'd recommend setting up a fabric dev env

pseudo hazel
#

okay, how does one "check the client code"

blazing ocean
pseudo hazel
#

yikes

#

okay

blazing ocean
#

It's not as bad as it sounds

#

genSources does take a good bit tho

slender elbow
#

mache client my beloved

eternal night
#

🙏

#

literally perfection to just throw a debugger at client code

river oracle
#

Mache more like mid

#

Satellite stays winning

river oracle
eternal night
pseudo hazel
river oracle
#

Kinda an invasion of privacy

eternal night
#

"stays winning"

river oracle
#

I actually use satellite over mache thoigj

#

For no other reason than I have it readily setup xD

frosty geyser
#

Hi, I'm currently trying to move a packet based Armor_Stand using ProtocolLib in 1.20.4. When the player moves around (they are a passenger of the armor_stand and I'm detecting the STEER_VEHICLE packet), the current code I have creates the armor stand, places the player ontop of it, and I have checks for when they move & output it to the player, my issue is when calling the Server.ENTITY_VELOCITY packet, it doesn't change anything on the player's screen or any other player and I'm not sure how to go about fixing it.

This is my code so far:
Armor Stand Spawn: https://pastebin.com/2NTpp9uV
Player Vehicle Steer: https://pastebin.com/aTwhaRxj

Any help would be amazing

shadow night
dry orbit
#

Is there a way to test bukkit plugins directly in the IDE? (I'm using eclipse)

river oracle
dry orbit
#

thanks

slate siren
#

Now let's say I saved the players' exit point, but when I say /mvtp skypvp, how will I teleport back to the exit point?

I want the players to be born in the same world they came from

noble flume
#

anyone know how work with item displays

#

cause im actualy tweaking out over i

#

im tryna set a rotation to face the player at a specified distance

#

but its like jumping about whenever I move my players pov around

eternal oxide
#

yesterday you said you wanted it to face teh same direction the player was looking. Today you want it facing the player?

noble flume
#

this was my code for handling the rotation of it

eternal oxide
#

None of what I told you to do yesterday is implemented in that code

#

You have gone off on a wierd cross product mess

noble flume
#

so i just tried like some random stuff to make it work

#

ima retry today tho

#

?paste

undone axleBOT
noble flume
#

this is the new one

eternal oxide
#

no need to rotate about Y if you are already calculating teh vector from direction

#

well thats a lie

#

you do need to rotate, but its not going to work as you expect

#

Your ItemDisplay is always at the players location,m just translated to a distance

#

when you rotate its going to rotate about the ItemDisplays center

noble flume
#

sometimes the visible part of the model isn't 3 blocks away

#

but i got the angle down

cinder abyss
#

Hello, how can switch my whole minecraft server project using spigot mappings 1.7.10 to searge mappings 1.7.10 ?

chrome beacon
#

Good old find and replace

cinder abyss
#

thanks anyway

#

let's do that

real swift
#

Hello, I have a problem: Enderpearls don't work on my server because of Spigot, and I have BungeeCord. How can I fix this?

river oracle
#

fabric should have tooling

#

figure it out yourself <3

cinder abyss
cinder abyss
#

let's see that

river oracle
#

didn't you have another project to do completely with mappings

#

I feel like its kinda sad you don't know this

cinder abyss
real swift
#

me

#

and me

#

Hello, I have a problem: Enderpearls don't work on my server because of Spigot, and I have BungeeCord. How can I fix this?

river oracle
#

?notworking

undone axleBOT
#

"Does not working" is a useless statement. Please describe what exactly is not working, what you expect it to do, and what actually happens. If you get any console errors, also ?paste the entire stacktrace.

cinder abyss
river oracle
# blazing ocean CVN

so you have 1 project, that atleast teaches you something valuable and take away nothing from it? wild ah shit

worldly ingot
#

searge mappings
... are you... trying to write code using func_xxxxxx_x notation? Why? lol

blazing ocean
cinder abyss
worldly ingot
#

Searge mappings are intermediary mappings

cinder abyss
pseudo hazel
cinder abyss
blazing ocean
#

not sure

river oracle
#

maybe idk if there was in 1.7.10

#

there is now 100%

cinder abyss
#

there is

shadow night
cinder abyss
#

the only problem is :

  • server (spigot mappings / searge mappings available, currently using spigot)
  • client (searge mappings available, using them)
blazing ocean
cinder abyss
cinder abyss
#

I see

blazing ocean
cinder abyss
#

forgot about it

blazing ocean
#

Voldemap

shadow night
#

Ngl I'd rather use backported yarn

cinder abyss
#

on both server and client ? could be interesting

blazing ocean
#

Those who shall not be mapped

shadow night
#

Our little CVN group is doing mappings again, ah, fuck this life

cinder abyss
#

the good old time

noble flume
shadow night
noble flume
#

how might i fix the slight ofset caused by the display entity

cinder abyss
#

wait

blazing ocean
cinder abyss
#

I'm using the spigot base

#

so using mcp to decompile the server part will not be good ?

eternal oxide
#

wrong discord

cinder abyss
#

IODEZHQ

#

spigot 🤓

cinder abyss
#

(shit I'm cooked)

sly topaz
cinder abyss
sly topaz
#

if you do that, you won't

#

I'd just use legacy-fabric's yarn port if I were you, though

cinder abyss
#

I can run mcp on the produced spigot jar ?

shadow night
cinder abyss
#

Idk much about mcp actually

cinder abyss
sly topaz
#

yes

#

for the server it would be more complex since you'd have to adapt the legacy-fabric tooling but there's no way around that

cinder abyss
#

this search remember me of old times...

cinder abyss
#

It will works if the current code base was actually edited ?

#

because I've already done changes to client

shadow night
blazing ocean
cinder abyss
#

btw, I always knew this page like that

blazing ocean
#

MCP my behated 💔

cinder abyss
#

and it's wrote in kotlin @blazing ocean 😎

sly topaz
#

you're aware that this is kind of massive work just to have a common module for your plugin right

blazing ocean
sly topaz
#

because it is fun

cinder abyss
#

I'm on the second floor and I've got a window next to me

#

I'm ready to do this

sly topaz
#

if they are aware that it is dumb, then go off sis

cinder abyss
#

nah, maybe I'll not merge

#

if you say that it's a massive amount of work, I don't have time for it

blazing ocean
#

I would FUCKING LOVE if there was a way to run the FIR parser on a kotlin snippet and turn it to FIR

cinder abyss
#

maybe

dry hazel
#

what's it for

cinder abyss
sly topaz
blazing ocean
#

Rust :o

dry hazel
#

🤢

blazing ocean
cinder abyss
#

interesting

#

that's not what I want

blazing ocean
#

Why is it open in google docs

cinder abyss
#

"pretty good mappings actually" 🤓

slate siren
#

If we make a Days top statistic, I will record how many days the player has logged into the server every day and make a top 5 statistic, how should I calculate the day count to be correct

cinder abyss
#

but I need to find mappings i think

pseudo hazel
#

and at the midnight point, reset the count

#

and then count all online players again to be sure

#

because that means they have played on 2 days technically

slate siren
cinder abyss
#

that's literally in the readme...

slate siren
#

like

#

?paste

undone axleBOT
slate siren
#

this

#

The date when a player logs in is recorded

slate siren
pseudo hazel
#

do you just care about when they log in or when they keep playing

slate siren
pseudo hazel
#

then this is fine

slate siren
#

but sqlite is not created

pseudo hazel
#

what does sqlite have to do with this

#

also

#

do you just wanna keep track of how many days they have logged in

#

or also specifically the dates they did

slate siren
#

nevermid nevermind I chose this because it will contain many systems to saved xd

slate siren
#

If they did not log in on October 18 and 19

pseudo hazel
#

okay

#

then store the last day they logged in

slate siren
#

and logged in on October 20

#

this is also counted as 1 day. And they would have participated for a total of 2 days

pseudo hazel
#

along side the total amount of days they logged in

#

since time does not go backwards, you only need the last login

#

or I guess you can also save the first login for fun

#

but p sure mojang also saved that information

slate siren
#

its good

slate siren
nova quail
#

Hello! How to open an anvil inventory for a player? I have created it but when I try to do any actions with that inventory it sends me an error. As I understood because it can't find location of anvil. How could I fix this?

My error:
https://paste.md-5.net/erahalasuf.cs

obtuse hedge
#

it was part of the teams prefix/suffix

torn shuttle
#

guys

#

I shot myself in the foot with this wave function collapse system

#

turns out this really doesn't work with module units bigger than the base module

#

I am not a happy camper right now

#

man oh man oh man this absolutely sucks ass

slate siren
#

WAAAA

wraith delta
#

Why is there a method for openWorkbench but none for any of the other gui. i tried to create a gui with a InventoryType but it appears they have no functionality except for crafting table

nova quail
wraith delta
#

oh, someone else is requesting gui as well lol ^^

#

thats anvil tho, wheres one for cartography, loom, stonecutter...

river oracle
wraith delta
river oracle
#

See MenuType

#

?jd-s

undone axleBOT
wraith delta
wraith delta
river oracle
#

I have a few more additions yet to be merged but thosell be coming post 1.21.2 release

slender elbow
#

is that in 1.8?

river oracle
#

I forgot we are 10 years ago mb

wraith delta
quaint mantle
#

Is CraftInventoryAnvil a thing for 1.8.9?

river oracle
river oracle
blazing ocean
#

miles rewrite menutype in 1.8

river oracle
slender elbow
#

yeah backport it

blazing ocean
#

then I'll rewrite pineapple in kotlin

#

fair deal

wraith delta
# river oracle No it doesn't idk what you're on about

im on about the fact that openWorkbench exist which opens a functional gui. however you cant do that with cartography, loom, stonecutter etc. it only opens a fake version that deletes your items when you place it in

river oracle
#

It's kinda weird which is why they're being replaced

#

Use latest and reap the benefits of my work :P

pseudo hazel
#

does anyone know when a MapRenderer's render() method is getting called

#

I am trying some stuff out related to images

#

but as soon as I save my image on the server resource files, the map is updated in game

#

leading me to believe render is called a ton of times

#

is that true?

sullen marlin
#

it's called pretty frequently but I'm not sure what that has to do with your question

pseudo hazel
#

actually I can just print in the render method

#

well I was just wondering if there is any trigger for it

#

or if its just periodically

#

it seems to just be like every 5 ticks when the map itself is present in the player's inventory

#

I guess I just answered my own question

#

thanks

quaint mantle
#

is here any diferrence between serverPlayer.connection.connection.send() and serverPlayer.connection.send()?

blazing ocean
quaint mantle
blazing ocean
#

because that does not have a send function

quaint mantle
#

ServerGamePacketListenerImpl

#

serverPlayer.connecntion.send()

blazing ocean
quaint mantle
#

but the method is from

blazing ocean
#

oh yeah that's athing

quaint mantle
proud badge
#

hi, how could I change the icon on my resource?

#

cant find the option anywhere

sullen marlin
#

its in the right hand sidebar

proud badge
#

ah found it thx

glossy laurel
#

Can someone somehow execute a command whilst they have an inventory open

proud badge
#

what could be the problem? its a 300x300 png

sullen marlin
#

with a mod, sure

quaint mantle
#
public static void roundStart() {
        for (Player attack : getTeams()[0]) {
            attack.teleport(ATTACK_HAVEN);

            attack.getInventory().clear();
        }

        for (Player defense : getTeams()[1]) {
            defense.teleport(DEFENSE_HAVEN);

            defense.getInventory().clear();
        }

        currentRound += 1;
    }
public static Inventory getInventory() {
        return INVENTORY;
    }

it makes to close everyone's ui when one player close. how to fix it?

glossy laurel
#

so you should probably stop opening the same inventory to everyone

quaint mantle
#

that solved

#
if (attackWin >= 1) {
                    for (Player p : players) {
                        p.getInventory().clear();
                        p.teleport(new Location(Bukkit.getWorld("world"), -158, 95, 45));
                        if (isAttack(p)) {
                            p.sendTitle(ChatColor.AQUA + "승리", ChatColor.GRAY + "게임 종료  " + attackWin + " | " + defenseWin);
                        } else if (isDefense(p)) {
                            p.sendTitle(ChatColor.RED + "패배", ChatColor.GRAY + "게임 종료  " + defenseWin + " | " + attackWin);
                        }
                    }
                } else if (defenseWin >= 1) {
                    for (Player p : players) {
                        p.getInventory().clear();
                        p.teleport(new Location(Bukkit.getWorld("world"), -158, 95, 45));
                        if (isAttack(p)) {
                            p.sendTitle(ChatColor.RED + "패배", ChatColor.GRAY + "게임 종료  " + attackWin + " | " + defenseWin);
                        } else if (isDefense(p)) {
                            p.sendTitle(ChatColor.AQUA + "승리", ChatColor.GRAY + "게임 종료  " + defenseWin + " | " + attackWin);
                        }
                    }
                }

this code makes spectators not to do tp

#

how to fix it

low marlin
#

anybody that understands crash reports and help me figure out why my server is crashing?

slate siren
#

Guys, I'm preparing a day tops, I'll write it in hologram style, but I can't find the Api, is there any other method

quaint mantle
#

In the loop just check if player is in spectator mode.

mortal hare
#

ok i take back my words about kotlin

#

why compilation of kotlin in JVM is so shitty

#

also, for default implementations in interfaces instead of using default keyword, just like in java, it creates a static class with static methods which it calls if method is not overridden in the implementation of the interface? like wtf

#

i like the syntax of kotlin, but i feel like unless they develop their own implementation of virtual machine, it would just be as always a hack on top Java syntax oriented JVM

nova notch
sly topaz
#

besides, it doesn't really affect performance in any way

#

if they remove the main method with no arguments, then they'd have to change all references to it from outside kotlin, which is just a mess

mortal hare
#

but this just shows that JVM is really not a solution for Kotlin in long-term

sly topaz
#

I don't understand how you came to that conclusion

mortal hare
#

as it has to be compliant with JVM's rules of first-class citizenship to Java's syntax

#

sure JVM bytecode is abstract and doesnt really describe the syntax

#

but the thing is that JVM features is tailored for Java programming language

sly topaz
#

and outside of the JVM, they have to comply with LLVM rules or whatever other compiler imposes

mortal hare
#

and modifications and additions to the JVM bytecode instruction set would only happen only if Java lang needs it, not Kotlin or Scala or Groovy

sly topaz
#

you're right in the sense that Java is the one first-class citizen in the JVM, however that means little in terms of language archquitecture

#

the point of it being in the JVM is that in the end, it all ends up reduced to JVM bytecode, and so the top-class garbage collectors as well as the JIT compilers at hand, as well as huge instrospection features for free and the whole set of APIs that the JDK provides. The whole point of languages like kotlin, scala, groovy or jruby even is to take advantage of that and provide better DX

blazing ocean
mortal hare
#

but there's a toggle to use native default support

#

sadly its not turned on by default

#

thus you get mess like this

glossy venture
#

anyone know why this prevents the packets from ever being sent and lags the server

#

the server receives packets from the client fine

#

delayed with the same code

#

its prob some infinite loop but i should be filtering out the delayed packets

slate siren
#

I am preparing a top 3 list, for example, let's say the one with the most kills,

I want to write how many kills these players get with their skins, but the skin thing is confusing.

quaint mantle
#

Are you able to turn off enchants showing up in lore for custom enchantments

wheat kiln
#

What is the “correct” or standard method for multi-menu interfaces using inventories. Also, what is the “correct” way to add descriptions and custom names to itemstacks

dry orbit
#

are all plugins loaded by the same class loader? ( in spigot)

junior pewter
#

Is there any way of getting all players on server and then calling method as many times as how many players are on server, and for each player independently?

remote swallow
#

loop Bukkit.getOnlinePlayers

umbral ridge
#

store it in array first

#

dont call it more than 1 time

pure dagger
#

i would need a plugin that could generate plots (in the same world, not another world with only plots)
and i would need to be able to interact with that plugin from my plugin, remove players from plots, add them etc

i dont really know if that makes sense, what do you think, do you know such plugin? maybe plotsquared but idk

umbral ridge
#

you can make that yourself

#

XD

junior pewter
pure dagger
junior pewter
umbral ridge
#

you can randomly select players from the list without repeating with List class

pseudo hazel
#

i think they just want a foreach

misty garden
#

hi, do you have idea how i can create a license for my plugin ?

pseudo hazel
#

or a for loop over the player list

mortal hare
#

this question might seem kind of wack, but im going insane about this.

So basically i've recently saw article about Parse, dont validate approach which is basically handling validation at compile-time instead of runtime, so i've decided to experiment and i have this simple interface:

interface Registry<I : Registry.Identifier<V>, V> {
    fun register(data: V): I
    fun unregister(identifier: I)
    fun get(identifier: I)

    interface Identifier<V> {}
}

in this interface, register function returns Registry.Identifier object, which allows you to retrieve the data you've passed to the registry earlier via get function.

class TileRegistry : Registry<TileRegistry.Identifier, Tile> {
    override fun register(data: Tile): Identifier {
        TODO("Not yet implemented")
    }

    override fun unregister(identifier: Identifier) {
        TODO("Not yet implemented")
    }

    override fun get(identifier: Identifier) {
        TODO("Not yet implemented")
    }

    @JvmInline
    value class Identifier private constructor(val key: Int) : Registry.Identifier<Tile>
}

this is a skeleton of registry implementation class, which in theory would return TileRegistry.Identifier, which you would use on only TileRegistry concrete class to get Tile objects.

so this part is fine,** i can only access the object with identifiers i've retrieved by registering object in the registry. Neat. i dont need to check at runtime if the provided key exists, because code already ensures its not going to happen.**

the problem now is that i cant do proper polymorphism anymore. I can downcast this concrete class down to Registry<TileRegistry.Identifier, Tile> which really brings no benefit since im still using concrete type of Registry.Identifier or Registry<*, Tile> which allows you to register Tile objects to the registry, but not retrieve it.

#

So, is this a good case to depend your code on concrete implementation of registry, instead of interface, because DIP principle states that you should rely on abstractions and not on concrete classes, but this doesnt get into account the fact that in that case i lose the ability to check the values at compile-time?

#

NOTE: i've provided code in kotlin, but you should get the point. Its more of architecture question

#

probs nobody here would understand what i meant by this, but i've tried sadcat~1

pseudo hazel
#

sounds like overengineered drivel

#

if you need concrete classes, use them

#

if the downside of this system means that you have to work around it to great lengths, its simply not worth it

#

if you want to get registered tiles, ofc you would use the concrete tileregistry

#

unless you mean something else

#

at what point does something become abstract enough to be used by other things

#

if you make your tileregistry an interface and only have 1 implementation, does using this tile registry interface now suddenly mean its abstract

mortal hare
#

i guess it perfectly fine to use concrete impl in this case

pseudo hazel
#

well they need an interface if you are gonna have multiple implementations or if its API for something else

mortal hare
#

there's no multiple impls of same thing

pseudo hazel
#

right

#

so then you should use the tile registry as is

#

the registry itself is already abstracted as the way its meant to work is covered by your interface (somewhat)

#

i.e. the place that gets these registered tiles does not need to know how the registry works, just how to use it

mortal hare
#

Well i'd have to pass this registry to the instance of World2D class, so i would probably allow generics to pass the Registry as Registry<T, Tile> and then if i would need to expose call to the registry i would use T as a identifier for that registry to fetch the Tile

pseudo hazel
#

so the most straightforward approach is to just use that tile registry

#

what do you gain from this

mortal hare
#

that way i wouldnt tie the World2D implementation to only TileRegistry implementation

pseudo hazel
#

because there is gonna be another registry that registers Tiles?

mortal hare
#

No, i just want to make this code as modular as it can be

#

in perfect sense i want to reinvent minecraft's registries in a way for my own standalone code

pseudo hazel
#

okay

#

well imo that doesnt make any sense

#

its just adding more layers for no reason

#

if you ever need a different way of registering tiles than what tile registry does, you either can just make tile registry more abstract and have multiple implementations, or you need other methods which means you probably have to change world2d to account for those changes

#

if using a registry of T and Tile means you need to cast in your world2d class, then you gain nothing, if that's not the case, i guess it doesnt matter either way

#

thats like arguing if its better to create an ArrayList list = new ArrayList() or List list = new ArrayList() if you just return a List anyways

mortal hare
#

no, i wouldnt use T for denoting Registry, i would use T for denoting Registry.Identifier

#

which would allow me to pass any Registry to World2D which returns Tile

pseudo hazel
#

right

mortal hare
#

might be overengineered for now

pseudo hazel
#

so you can register tiles with diferent keys?

mortal hare
#

currently no

pseudo hazel
#

but I mean

#

thats what the only goal of this would be

mortal hare
#

im looking for a way to open up all the classes for extensions of my application

pseudo hazel
#

idk what you mean by that

mortal hare
#

basically im making a headless game without any rendering stuff and i want to have multiple renderers which would instanciate game logic later

#

Tile object currently holds only the basic intial logic part of the game, but i might need to hold Tile data which holds texture data for the renderer, etc

#

that's why i want to pass different types of registries

#

eh forget about it

wet breach
mortal hare
#

wdym

wet breach
#

are the types always known or are they unknown types because they can be anything

pseudo hazel
#

right but you can only have 1 type of registry at the same time I imagine

#

otherwise you would just make new variables for the other regitry types

mortal hare
pseudo hazel
#

yes, unless im missing some other benefit

#

but I think there is none

#

I usually design for the end use, not for the class itself, like in the end your world might have different tile registries sure, but they would probably either be separate registries altogether or your Tile object has all information possible about a tile, in which case you only need a single registry. and then you agree on some key to access those tiles with (in this case an int I guess looking at your example)

#

in both cases you really need this abstract way of referring to your tiles, because the world knows exactly what it wants

nocturne snow
#

what is the best free host wwith like 4gb of ram

#

247

#

?

quaint mantle
#

There's no free host with that specs

#

Even without 24/7

pseudo hazel
#

your own pc 🙃

#

i guess your own pc wasnt free either

#

but you already have it

regal karma
#

hello everyone, can you tell me if there is a way to create an inventory that will be displayed with a modified gui from optifine?
Something like that: Inventory inventory = Bukkit.createInventory(null, 36, "name");?

cedar flume
#

Hey,
When a chunk is loaded by a plugin (without a ticket)
how long will the chunk stay loaded assuming there are no players nearby?

does it unload again straightaway the next tick?

eternal oxide
#

undefined

sly topaz
#

who the heck uses optifine custom GUIs tho

#

nowadays people use fonts instead to achieve that, though it isn't as straightforward, it doesn't depend on optifine being present

#

which most people don't use in modern versions anyway

sly topaz
#

I assume it is dynamic for the most part, as it may unload chunks depending on RAM or so I imagine, but you can still test it out

cedar flume
sly topaz
#

is there something I must do for this to be published to my local

#

I'm trying to look at the spigot source

#

will read the contributing guide ig

#

do I have to run applyPatches if I already ran buildtools, I wonder

young knoll
#

You probably don’t want to depend on the raw server

river oracle
#

The fact I've been contributing to spigot for a year and never actually git cloned spigot is wild

young knoll
#

Depend on spigot

sly topaz
#

I am not trying to depend on spigot, I'm not making a plugin

#

I just want to look at the spigot source

#

I could just look at craftbukkit but I assume spigot is the one source of truth

young knoll
#

?stash

undone axleBOT
sly topaz
#

I mean the decompiled source lol

river oracle
young knoll
#

Most of it is in CraftBukkit

sly topaz
#

yeah but I want to make sure it is the same as the source that people are running

river oracle
sly topaz
#

there's also some chunk patches, and I'm trying to look at the chunk loading/unloading behavior in spigot so eh, counter-productive to just look at craftbukkit but it'll do I guess

young knoll
#

What are you trying to do

sly topaz
#

I am trying to look at the spigot source, no more, no less

#

rather specifically, I am trying to see when Spigot decides it is time for chunks to unload

river oracle
#

pretty sure chunk tickets are a CB thing

slender elbow
#

tickets are a vanilla mechanism

river oracle
#

yeah but I think its handled within CB not spigot

#

I don't ever remember it being under a Spigot interface

sly topaz
#

it isn't an issue of whether spigot handles it in the API or not, but I'm more worried that Spigot may unadvertely have a patch that changes this behavior, hence why I'd rather look at that source

#

I don't know if it is the case, and it sounds counter-productive to look at every single patch to make sure it doesn't when I don't even know what affects the behavior

river oracle
#

only patch spigot has relating to chunks is this onehttps://hub.spigotmc.org/stash/projects/SPIGOT/repos/spigot/browse/CraftBukkit-Patches/0071-Allow-Reading-Old-Large-Chunks.patch

sly topaz
#

there's also the add unload frozen chunks option

regal karma
young knoll
#

Probably differences in how the inventory name is encoded

#

Spigot does some strange things with legacy text -> components

ocean hollow
#

does Interaction have a BoundingBox? If not, how do I create one for it?

young knoll
#

It has a size

#

You should be able to easily create a box from the width and height of it

#

Assuming just getting the bounding box doesn’t get you the right size, which it might

sly topaz
#

why not just get its bounding box

#

Entity#getBoundingBox exists

young knoll
#

Like I said I don’t know if that gets the right bounding box

#

But it might

still jacinth
#

If I wanted to send an action bar message, and have it with 0 fade in/out time, how would I go about that?

grim hound
#

Doesn't have

#

Fade in or out

still jacinth
grim hound
#

It has like 0.75s fade-out

#

And no fade in

young knoll
#

I’m not sure if the title timing affect the fade out

#

You could try that

still jacinth
still jacinth
young knoll
#

Otherwise you can cancel the fade out by sending a blank action bar just before it fades out

grim hound
grim hound
#

Was just about to suggest that

#

Okay, now my question. If I wanted to create a minigame where after each game the world should be reset to its primordial state, what would be the most efficient way of doing so?

#

Like there's a custom build

grim hound
#

But after each game the world should come back to its original state

still jacinth
still jacinth
#

(if you are restarting to get it to reset the state)

#

Or probably just having a second world

#

Have the first world inaccessible with the map, make another world that copies the first one, and then just delete the second one and keep making new ones

#

(I have no idea if this is possible or efficient whatsoever, it's the first thing to my mind)

sly topaz
young knoll
#

Huh there isn’t a method to just set title timings

#

I thought there was

still jacinth
grim hound
still jacinth
grim hound
#

Not sure if bukkit has a supported way of dynamically erasing worlds

#

Time to skid multiverse core

sly topaz
#

what do you mean by that

#

you just unload the world and then you can delete it fine

grim hound
sly topaz
#

Bukkit#unloadWorld

grim hound
#

Ah

#

xD

#

Is there a loadWorld?

young knoll
#

I suppose you can send an empty title and subtitle either way timings to set the times

sly topaz
#

it is a sync operation so I wouldn't recommend doing it too much

grim hound
#

That's sad

#

Is it explicitly sync?

young knoll
#

Yes

echo basalt
#

paper 👀

grim hound
#

Like AsyncCatcher guarded

sly topaz
#

it is the same in Paper

young knoll
#

But unloading a world is fast

echo basalt
#

sadge

grim hound
sly topaz
#

unloading is fine, loading is what causes troubles

young knoll
#

Loading one is also fast if you have a fixed spawn location and disable spawn chunks

echo basalt
sly topaz
echo basalt
#

might need to init it sync

young knoll
#

It’s like 4ms

#

Is that not fast enough

echo basalt
#

no

grim hound
still jacinth
sly topaz
sly topaz
young knoll
#

Not if spawn chunks are disabled and spawn location is fixed

sly topaz
#

hence why people just avoid creating worlds dynamically, you don't want to freeze the server while players are playing

sly topaz
grim hound
young knoll
#

WorldCreator#setKeepSpawnInMemory

#

Spawn location requires a custom chunk generator

#

Though if you are loading a pre made world it should already be set

still jacinth
dawn flower
#

What is the easiest way to make a circle that no mob can enter, but players can

lilac dagger
#

use location distance

#

and check nearby chunks for entities and players from the world

dawn flower
#

That's to check if the mob is in the circle if I'm not mistaking

restive mango
#

How do you avoid triggering PlayerInteractEvent when dropping an item from an open inventory?

lilac dagger
restive mango
#

I have found that DropItemEvent occurs after that event (so I can't e.g. add the player to a map and check that map in PlayerInteractEvent to cancel the event).

lilac dagger
#

dropping items don't trigger that

restive mango
#

They do.

lilac dagger
#

do you press q to drop?

restive mango
#

Both pressing q or dragging the item outside of the inventory space and clicking trigger it.

lilac dagger
#

are you using vanilla client?

restive mango
#

Yes.

#

Okay, solution is to just also listen to the inventory event.

lilac dagger
#

just wait a sec, i'm testing

restive mango
#

NW, I solved it

lilac dagger
#

oh you're right

#

interact does trigger

#

is this a bug?

dawn flower
#

Can you estimate the location an entity was at 1 tick ago

nova notch
#

i think its to do with dropping an item causing your hand to swing or something

lilac dagger
#

is this recent tho?

#

Cause i'm not even sure

#

all my plugins seems to work fine despite this

nova notch
#

idk, been a thing at least as long as i remember

torn shuttle
hoary matrix
#

Is it possible for me to interact with modded blocks usiing a plugin. I'm making a mine regeneration plugin and want it to handle modded blocks too. This is on a hybrid arclight server. Just want calrification what is possible, Thanks.

chrome beacon
#

How you do that though is entirely up to arclights implementation

#

Usually they just extend the material enum to contain modded blocks as well

hoary matrix
#

Got it thanks so the Arclight API will also be needed

chrome beacon
#

Not necessarily

#

You should ask them for help

torn shuttle
#

everyone asks whereami

#

no one ever asks whoami

nova notch
#

no one ever asks how am i 😔

torn shuttle
#

well no one cares about that

nova notch
#

real

sullen marlin
#

How are you Banana?

torn shuttle
#

well at least md5 doesn't need to ask who I am

#

check out my cool module generator

#

the rollback feature is really annoying to get right

sullen marlin
#

Nice debug

#

I vote that guy for most professional plugin developer

torn shuttle
#

aaaand that's going into my saved screenshots from md5 folder

nova notch
#

fix the rails pls it hurts

torn shuttle
#

actually it's not even really bugged I'm just doing a shortcut on the paste

#

I just need to unshortcut it

#

was looking into the nms way of writing data faster because the large pastes are stupid slow

lilac dagger
#

do you need it? ^

#

i have it in my code

torn shuttle
#

@echo basalt told you

nova notch
#

why make fancy debug system when you can spam sout?

lilac dagger
#

lol

nova notch
#

oh wait actually i just remembered i made something cool too

lilac dagger
#

how would that work out here?

nova notch
#

it wouldnt

torn shuttle
#

the debug did turn out pretty great

#

really useful too

lilac dagger
#

is every hologram a slice of the dungeon or it's just a location in the chamber?

torn shuttle
#

there's a text entity at the center of each module stating what the module is and its rotation, then at all borders of each module stating all the valid borders that it can have

#

as well as what the border is

lilac dagger
#

ah nice

torn shuttle
#

if the system is working correctly (and it currently does) every border shares a common tag

#

which is why they always appear in pairs

lilac dagger
#

like here?

torn shuttle
#

right now I'm working on a somewhat tricky implementation of the rollback for the wave function collapse because it is not practical to keep a paste history (you run out of memory insanely quickly) and nuking a cell and neighbor cells does not work when you're working with compound modules that are multiple modules in size

#

like here

#

also every module randomizes a color so you can tell them apart

#

you see west takes path as a tag and east takes path as a tag so that's correct

lilac dagger
#

you have schems for everything, is it not efficient to just paste back visited chambers?

#

or is there information specific to the seed

#

but even then, you could just paste the seed changes

torn shuttle
#

it's not seeded, and keeping any kind of history is going to result into instantly running out of memory when we're talking about millions of modules

#

that's potentially hundreds of millions of datapoints you'd keep in a history

lilac dagger
#

what about block states and restoring just the damage?

#

wait, does this infinitely generates?

torn shuttle
#

it generates up to a radius you can pick, mostly just limited by server memory

#

I'm trying to get the benchmark to be that you can generate 50 chunk radius on 4gb of ram

lilac dagger
#

i still think loading schems from disk, and having a history of the schems names to restore chambers is the best idea

#

not familiar with your work tho

torn shuttle
#

the history would still be too large

#

I've tried it

lilac dagger
#

how many players are supposed to be in this?

torn shuttle
#

since it's a radius the scaling get whacky

lilac dagger
#

flyweight it then

sullen marlin
#

Why do you need history

lilac dagger
#

use ints

torn shuttle
#

there's no target player count, the core metrics are trying to generate up to 50 radius with 4gb of ram in a reasonable timespan but pregenerated

#

you don't need history

#

also reverting history is incredibly tricky

#

say that I have a chunk problem at 100, 20, 100

#

last time history saw that chunk might've been 100k chunk generations ago

#

are we going to roll back 100k chunks to fix that?

#

it would never end

lilac dagger
#

what's a chunk problem?

torn shuttle
#

it's sort of hard to explain but let me see what I can do

#

imagine two 3x1x3 modules

#

imagine they are getting generated simultaneously, alternating between the two

#

then it turns out their corners overlap

#

in a simple approach this is unfixable, because the simple approach just causes all neighbors of that corner to regenerate

#

but since both modules are 3x1x3 that only deletes the edges and it will invariably try to generate the same thing

#

now to compound the issue imagine this is something that happens at the very corner of a very large gen

#

that basically guarantees that the modules will have potentially tens or hundreds of thousands of modules generate before the collision is detected

lilac dagger
#

oh, so it's a fit all the pieces in a given space problem

torn shuttle
#

assuming you even have the memory overhead to do something like this you're stilli n trouble because you might be undoing minutes worth of generation per collision, and collisions are extremely frequent when you're dealing with compound modules

torn shuttle
lilac dagger
#

maybe you can fix this with math

quaint mantle
#

if i do Bukkit#getOnlinePlayers() inside of a runtasktimer will it update everytime?

lilac dagger
#

you can quickly do calculations on bounding boxes

#

than generating the modules

torn shuttle
#

the solution I currently have is an evolution of the simple solution, where I keep a map of the chunks and if a chunk fails to find a solution within X attempts it increases the radius of neighbors it erases around itself, and then keeps growing the radius until it works

quaint mantle
torn shuttle
#

the tweak I want to do now is to instead of bruteforcing neighbors I am going to check every possible combination of the already generated neighbors with all of their viable alternatives for the chunks they're in and see if any given combination results in any viable module getting placed in the module that is impossible, and if not to immediately do the radius culling of neighbors

#

which should be significantly faster and more accurate

sullen marlin
paper viper
quaint mantle
#

thxx!

lilac dagger
#

there's also the option of making chambers that have sealed of entrances

torn shuttle
#

that doesn't fix it AND it's bad for gameplay

#

the problem is overlapping compound modules here

lilac dagger
#

i know

#

but i guess it changes your chunk where no space is empty generator to a a to b path

#

oh yeah, i forgot this is pre generated

#

so a to b is boring

#

my solution to this i think is to first get the list of the bounding boxes of the schems, then simulate with the bouning boxes the possible combinations to fit in a given space

torn shuttle
#

that wouldn't work

lilac dagger
nova notch
#

i love veritasium

torn shuttle
#

there's just a lot behind this system

#

surprisingly also a lot of the stuff that is recommended as the fastest solution for this online is just patently wrong, like prioritizing the modules with fewest options

#

that really doesn't work well

#

center out is basically infinitely better

#

I do center out then fewest options in my order

#

though fewest options might work if you have a lot of flexible/dead space, especially if you're only working in 2d

lilac dagger
#

yeah, but where's the fun in that

torn shuttle
#

I mean I'm sure there's a legitimate use for it in games that require a 2d map

#

I'd do it

lilac dagger
#

oh yeah

#

i'm thinking of playing enter the gungeon

#

it has a dungeon like system for 2d

#

altho the number of chambers as far as i know is like 15

#

pretty much constant

torn shuttle
#

actual wfc use is rare in games

#

honestly it's not trivial to use it as someone who is trying to get this to work in a way that makes sense

#

it's not the easiest to develop and worse yet it's not all that easy to make the initial modules for it either

#

plus if you're doing what I'm doing and want compound modules... honestly I haven't seen anyone do it

#

but it introduces some real problems on the base system

lilac dagger
#

it's hard, but i'm sure there's a way to do it

torn shuttle
#

I mean, there is

#

my way of doing it already currently works

#

it's just too slow for my liking

worthy yarrow
torn shuttle
#

yeah I saw it as well, not to diss 2d but 3d and compound modules is just a world apart

lilac dagger
#

see spelunky

torn shuttle
#

also it's very easy to do it for a few tiles but I am aiming to pool from hundreds or thousands

lilac dagger
#

but nvm

#

spelunky has a a to b generator

torn shuttle
#

seems reasonable

#

also it looks like I optimized the memory situation way more than I thought

#

I'm actually using something like 2-3 gb of ram for that radius of 50

#

that's actually real nice

lilac dagger
#

good job 😄

torn shuttle
#

yeah I had to get rid of like 10 iterations of caching strategies for this one

#

but if I'm this good on memory I might reintroduce a couple of critical ones

young knoll
#

This is why my dungeon generator was based on the jigsaw system Mojang uses

torn shuttle
#

🥱 boring

lilac dagger
#

what is that exactly?

torn shuttle
#

my dungeon generator will have wfc and blackjack and hookers

young knoll
#

It’s just a system to generate branching paths

#

Place starting room, loop over each connection point and attach another room to it, loop over all connection points in that new room and attach rooms to them, etc

lilac dagger
#

ohh, so basically what i was talking earlier about enter the gungeon

torn shuttle
#

yeah that's the very basic way of doing it

#

I was thinking of doing something similar at the start

#

but this just seemed like way more fun

#

and tbh it is

young knoll
#

Isn’t wave function collapse designed to work on a grid though

torn shuttle
#

yep

young knoll
#

So you won’t get fancy branches going in all different directions

torn shuttle
#

😏

#

that's why you do compound modules

#

and this is very early stages

#

you can design any kind of branching and pathing you want so long as it is built on top of a 16x16x16 basis, but you can string as many of them along as you want

#

so it shouldn't be constraining the design of what you're doing

#

though obviously some design choices will ultimately make the generation a bit slower

torn shuttle
#

did you really not make it 3d?

young knoll
#

It can do 3D

#

There’s just no up or down connections in that video

torn shuttle
#

I mean yeah I'm sure that can generate dungeons alright, though it would make unique module design pretty hard

torn shuttle
#

it's basically the opposite approach from mine where I am trying to place modules together, where it seems like you're trying to do rooms first and then presumably fill them at the end

young knoll
#

They don’t get filled in

#

It just places templates

torn shuttle
#

what does the final result look like?

young knoll
#

I never built any actual rooms, so idk

torn shuttle
#

lol

remote swallow
#

you built the floor

young knoll
#

Just picture a village or ancient city

#

Since it’s the same system

torn shuttle
#

yeah so for my system

#

just picture it instantly generating

#

and being perfect

lilac dagger
#

that'll require some work tho 😄

torn shuttle
#

you can also picture me riding a yatch into the sunset

lilac dagger
#

yacht in sunset sounds cool

torn shuttle
#

if you visualize it hard enough it will come true

#

for me, specifically

young knoll
#

Actually building things is hard smh

torn shuttle
#

I know buddy

#

I did it

#

I'm hoping to release this next week

young knoll
#

Server owners can build their own dungeons gosh, they don’t pay me to do it

torn shuttle
#

I even have models for the bosses that will be in there

blazing ocean
#

build me 2837 iterations of a maze

#

you have 20 minutes

torn shuttle
#

da boys

#

just some of them

remote swallow
torn shuttle
#

00:34:59 good lord

#

that 34 min 50 radius generation

#

well

#

mission complete on the memory, time to sacrifice some of that for caching

#

good math

young knoll
torn shuttle
#

damn

#

I really need to switch out of worldedit I think

#

I swear it's leaking memory

young knoll
#

It does on reloads

torn shuttle
#

on mass pasting

young knoll
#

Ah, not sure