#dev-general

1 messages · Page 3 of 1

static zealot
#

is there a recommended way to read files in java? I know I Could use a scanner or a buffer reader, just wondering. Since I Usually use kotlin, and there I just use Files.readLines(). or whatever the method is.

#

the files can have anywhere from 50 to 1k+ of lines.

oblique heath
#

i was taught to use a scanner in HS

#

i'm sure there are dozens of ways each with their own usecase

static zealot
#

yeah, that's why I'm asking. there's loads of ways. wondering if there's one that's usually recommended over all the others. I'll just use the scanner for now I guess

oblique heath
#

what kind of files are you reading

#

what's the context

static zealot
#

yml files. don't want to read them key by key. I want the actual file contents. creating a dump command for deluxemenus

#

just hoping there's no way for me to corrupt the files tho. bcz if that happens, people will hate me xD

#

well, more like hoping I Won't do it

tranquil crane
#

In Java 8 you can do something like this too if you wanna use streams

try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
    stream.forEach(System.out::println);
}
sly sonnet
static zealot
#

oh wait. there's a Files class in java as well. how did I miss that? xD

tranquil crane
#

there sure is YA_Strong

sly sonnet
cobalt marlin
#

ye combine files with buffered reader imho

tranquil crane
#

there's also still Files.readAllLines like you were using lol

static zealot
#

yeah. I'm going to use Files.readAllLines lmao

#

readLines

tranquil crane
#

the java one is readAllLines

static zealot
#

is it?

tranquil crane
#

java.nio.file.Files.readAllLines

static zealot
#

oh yeah. I imported the guava one

tranquil crane
#

it uses a bufferedreader internally

weary epoch
#

D:

static zealot
obtuse gale
static zealot
#

:))

static zealot
obtuse gale
#

Line streams 😌

#

reading the whole thing at once 🤮

eternal compass
#

Anyone have experience writing authentication for an API that's not hosted on the same domain as the page it's being used on?

#

tldr; I can't set the JWT as a cookie on the domain that the page you access it from

#

since the JWT is returned on a different page

old wyvern
#

Have a callback to ur original website

boreal needle
#

how ugly does this look?

#

ignore the unparsed html

half harness
onyx loom
#

take the request mr. kotlin = best

half harness
#

Busy 😭

#

This is so sad

half harness
sly sonnet
#

also no semicolons

agile galleon
#

Gimme darkmode

boreal needle
#

dark mode coming Soon™️

agile galleon
#

No not soon

#

Now

boreal needle
sly sonnet
#

yes

agile galleon
#

No light mode

sly sonnet
#

that's the problem

agile galleon
#

Only darkmode

agile galleon
sly sonnet
#

also maybe add multiple colors for private/public, datatypes etc

boreal needle
#

oh that’s a fun idea

half harness
#

I'd also add some colored boxes or something to "organize"

#

Idk I like regular javadocs but only if it was "more modern" and dark mode :))

#

Since atm it sort of looks like an article

#

Idk

#

I'm nowhere close to being a web designer

obtuse gale
prisma wave
#

😍 the good old days

distant sun
#

her inspiration probably kek

half harness
#

💀

distant sun
#

what sites do you guys use for portfolio?

ocean quartz
obtuse gale
#

mongodatabase

hot hull
#

What's a portfolio

static zealot
#

frosty. hi ❤️

hot hull
#

If you mean showcasing your previous work, I use pornhub for that

hot hull
#

Ayo

static zealot
#

what?

hot hull
#

Also howdy

static zealot
#

I want to learn from the best

distant sun
pastel imp
sinful blaze
#

HELLO guys

#

I use a plugin on Intellij called Minecraft Development to make my life significantly easier whilst coding mods, plugins etc

the lowest a mod can go is 1.12, however I would like to downgrade to 1.8

how would I about downgrading from 1.12 to 1.8?

ocean quartz
#

Manually change the version, if it's forge though remember it's not supported anymore and iirc it's pretty hard to get it working for 1.8

sinful blaze
#

well I manually changed it

#

however

#

its asking me for a different forgegradle version

#

and I cant find the version im meant to be using

#

nor where I could change my current version

#

alright I found it

#

but not sure whcih version im meant to use

pastel imp
#

lets be honest, chances you get support are low since 1.8 isn't supported anymore, outdated af.

narrow tartan
sly sonnet
distant sun
#

at this point you can just learn java LOL

remote goblet
#

people love creating entirely new things

#

to avoid having to use a specific language for something it excells or is required in

#

truly incredible

distant sun
#
import:
    java.lang.Integer
    java.lang.String

preimport:
    org.blub.Blub

public skript class org.blub.Blub:
    public String name = "Blub"
    protected char blubSymbol = 'B'
    public and static Integer[] IDs

on load:
    set {_name} to new Blub().name
    broadcast "%{_name}%"```
Literally java
sly sonnet
#

nvm, i can;t think

static zealot
distant sun
#

public and static Integer[] IDs
kek

static zealot
#

🤣

prisma wave
#

oh my that's horrid

brazen ether
#

lmao

pastel imp
#

my eyes are burning rn

#

far worse than discord light mode

sweet cipher
#

Is there any way to detect all blocks that are added to the world? Mostly looking for blocks added by plugins.

last nacelle
sweet cipher
#

I want to cache blocks without having to loop through them every time the chunk loads

#

And I need to know when blocks are added right when they are

half harness
sweet cipher
half harness
#

Custom server jar 🙃

#

Bc note that physics also get applied

half harness
#

Since nearby blocks might update

#

Some plugins don't to optimize

#

I think that includes worldedi5

hoary spear
half harness
#

Lol np

sweet cipher
#

Actually just realized what I can do

#

Thanks for the help

half harness
#

What you can do

sweet cipher
#

Just listening to block change packet and updating the cache based on that

cursive jolt
sweet cipher
#

No

cursive jolt
#

anyways packetevents 2.0 can read chunk data packets, multi block changes, block changes, explosions (which do block changes)

sweet cipher
#

Yeah I'm using packet events for it

cursive jolt
#

2.0 branch

sweet cipher
#

Yeah

cursive jolt
#

hope you enjoy my abstraction then

sweet cipher
#

I do enjoy it

#

What was it before?

cursive jolt
#

bukkit based

#

but retrooper and I are on a mission to rewrite the entirety of minecraft

#

So we have a version abstract platform abstract block data implementation

#

it's like you are on the flattening even on 1.8 which is nice

sweet cipher
#

Are you going to make a new server jar?

cursive jolt
sweet cipher
#

I would support it, but its not written in Skript so I can't

obtuse gale
#

legally can't

sweet cipher
#

^

ocean quartz
#

Oh boy if it isn't another "minecraft server from scratch" I am sure this one won't be abandoned

cursive jolt
#

and a way to showcase how you can write a minecraft server with packetevents 2.0 - try getting protocollib to do that

#

might be useful for proxy limbo plugins... or to not go insane writing cross version. But yes it's completely overkill

half harness
#

Oh I thought packet events was a library as a plugin

gilded granite
#

Anyone know where I can sell domains?

hot hull
#

Anyone got any ideas/suggestions on what I should use for connecting multiple controller modules together, wirelessly is my goal, and preferably still being optimal for a battery, by controller I mean an led controller

#

And by connecting I mean: having them be able to send and receive a command

quiet depot
thick bronze
#

Hey how to get players current cordinates, also place block, also tp player to specific world with specific cordinates and give essentials eco to player which run command

spring canopy
#

Hey, how can I check if the key exists? NamespacedKey use_key = new NamespacedKey(plugin, "Amount");

#

because when I update the plugin and players who got the older "item" now issues console errors since they do not have the meta obviously. but not sure how I can check if they have that key exactly

#

if(meta.getPersistentDataContainer().equals(use_key)) maybe? :x nope

hot hull
#

Get the container, retrieve the value, and check if it's null

pastel imp
#

or just use #has()

agile galleon
hot hull
pastel imp
#

ye whatever works xD

#

just feels easier to use has

half harness
#

In spigot how do you use hex? Ex in item name and lore

Could only find a video on it but can't watch one atm

pastel imp
half harness
#

I'm just curious

#

Since ChatColor doesn't have hex

#

Soo

#

At least afaik it doesnt

pastel imp
prisma wave
half harness
#

Oh

prisma wave
#

Chatcolor.of

pastel imp
#

&#FFFFFF

#

np

half harness
#

Oh wait

half harness
#

Since it's not in bukkit

static zealot
#

yeah\

half harness
#

Ah

#

And I'm guessing that goes to &x&blah

#

Symbol chars

static zealot
#

yeah

#

it takes in a #aaFF00

#

format

half harness
#

Oh

#

And returns a string

#

Right

static zealot
#

and it basically replaces it with the §x§a§a§F§F§0§0 format

half harness
#

😬

static zealot
#

you pass in just the hex

half harness
#

Ohh

#

Do u have to use ur own method then

#

For the whole string

static zealot
#

yeah. I Can just give you the one we use in DMenus if you want

#

probably no the best but it works.

half harness
#

Nono it's alr

static zealot
half harness
#

I was just wondering how it was done without reflection

static zealot
#

the version helper just checks if its 1.16 btw

half harness
#

Alr

#

Ty

static zealot
#

so if you know you ain't using 1.15 or lower remove that extra check

prisma wave
distant sun
#
{
  // Other properties
  "icon": {
    "url": "https://trello.placker.com/power-up-mirror/current/img/mirror-logo.png"
  }
}```
If I got this object inside another object, is there any way to tell gson to look at `icon.url` for it, instead of making a whole class with an `url` property?
old wyvern
#

Decode it to a JsonObject and use get calls

distant sun
#

ah I wanted to deserialize the json to an object, I guess there's no other way than creating a class

half harness
#

Btw can't u add final?

#

To the fields

distant sun
#

no as far as I know, gson requires an empty constructor and will initialize the fields based on their name / @SerializedName

half harness
distant sun
#

but for what reason

static zealot
#

@half harness still on holiday?

old wyvern
#

You dont need to create the class tho

#

JsonObject lets you interact with it as with a Mao

#

Map*

distant sun
#

I know, but I want it as a class because is easier to deserialize the json xD

old wyvern
#

Oh 😂

distant sun
#
class SomeClass {

  @Path("icon.url")
  String iconUrl;

}```
I was looking for something like this
potent nest
#

you could use a custom type adapter for that

distant sun
#

also, can I do something regarding to the boilerplate of an empty constructor and n methods? I guess a record won't help, right?

static zealot
#

can someone please explain me what the difference between java double random = ThreadLocalRandom.current().nextDouble() * 100.0; random = Double.parseDouble(getDecimalFormat().format(random)); return random <= parsedChance; and

    double random = ThreadLocalRandom.current().nextDouble() * 100.0;
    return random <= parsedChance;``` would be? the getDecimalFormat method returns ```java
    if (df != null) {
      return df;
    }
    df = new DecimalFormat("#.##");
    df.setDecimalFormatSymbols(DecimalFormatSymbols.getInstance(Locale.US));
    return df;```. I'm so fucking confused.
potent nest
#

lol, that's just a very bad way to round the number

static zealot
#

wait. omg is that what this is for?

#

to round it to just the last 2 decimals?

potent nest
#

I guess

half harness
static zealot
#

why clip? why? 😭

onyx loom
half harness
distant sun
#

😦

half harness
#

📉

static zealot
#

oh. I could just do /100.0

#

so no need to cast

potent nest
#

you can also use nextDouble(100000) instead of the two multiplications

static zealot
potent nest
#

if you want to round, you're having one multiplication to scale from [0, 1) to [0, 100), one multiplication from [0, 100) to [0, 10000), then the round call, then the division from [0, 10000) back to [0, 100]

static zealot
#

oh. wait. I see. that makes sense. so we could have 0 to 10000 and then divide by 100 to get the final number.

#

I was confused double confused bcz you also said 100k. makes sense now. ty

potent nest
#

yeah I'm just bad at multiplication

static zealot
#

its alright. I'm way worse. thank you once again

obtuse gale
obtuse gale
distant sun
#

Ah, ok

potent nest
distant sun
#

Wait, not a good thing to have none or what java does?

obtuse gale
#

The fact it adds one for you when you have none is a weird default thing to do

#

But oh well, so many defaults from 1995 have stuck around

distant sun
#

Ah ah

onyx loom
#

would u rather have to deal with the extra boilerplate?

old wyvern
forest pecan
#

Somebody have expierinnce with Box Server plugin?

#

Looking for a Custom Shopkeeper plugin

ocean quartz
last nacelle
#

In protocolllib is it bad to have a lot of addPacketListeners? Just wondering for the future of performance.

brittle echo
#

Hey guys!
Any person knows how to display an animation when a player death?

#

im working with fabric

rapid hull
#

Im trying to use deluxemenus to charge xp for a purchase but how do i make it so if they dont ahve the xp they cant get it?

forest pecan
#

Somebody knows a plguin for to use hexcolor

#

's ?

gusty glen
last nacelle
oblique heath
#

your code might be used on the ISS one day so you should optimize it to run on a realtime system

#

:/s emote:

last nacelle
#

feel bad for those on the ISS the day my code gets deployed

sick belfry
#

Lil or not so lil question for all lib devs out there, so I have been designing for the past months an all-in library for all of my minecraft related future projects, but the problem is that I cant decide how should I structure the project due to that I need (or want) that it can support 3 different types of platforms: paper, fabric and forge, support for forge is planned but not in the instant goals.

I have been thinking and I believe that a structure like this could work:

Project/
   core/
     All the abstract providers and systems that do not require an specific type of Minecraft.
   api/
     Uses core's providers to access each thing, separated into 3 platform modules.
     paper/
        Lib's Api paper support
     fabric/
        Lib's Api fabric support
     forge/
        Lib's Api forge support
   paper/
     Paper support, uses core's providers to make the lib's api requests work on the fabric platform
   fabric/
     Fabric support, uses core's providers to make the lib's api requests work on the fabric platform
   forge/
     Forge support, same as above

I do know that this is a huge structure but I want to structure this project in a way that in the future I can add support to more platforms and work continuously on it without needing to rewrite or re-structure it in the future; Also the way I will be adding support to each of the platforms will be periodically, so I wont work on all of them at once.

Sorry for this wall text but this is something that has been bugging me for a while and I want to get it clear asap

#

thanks in advance

ocean quartz
#

API and its sub projects aren't really necessary when you have a core

rotund egret
#

Isn't core usually a lib?

sick belfry
ocean quartz
#

That'd be done by the specific platform modules you have there

#

Which all would implement core

obtuse gale
#

lib-paper depends on lib-core
lib-forge depends on lib-core
lib-fabric depends on lib-core

my multi-platform plugin's "common" module depends on lib-core
the paper implementation of my multi-module plugin depends on lib-paper
the forge implementation of my multi-module plugin depends on lib-forge
the fabric implementation of my multi-module plugin depends on lib-fabric

sick belfry
#

what do the lib-paper modules do?

obtuse gale
#

it's the paper implementation of the library API

sweet cipher
obtuse gale
#

true

#

sorry

#

i will use skript's implementation instead

prisma mountain
#

so is extracting a .jar file to get the messages.properties and stick it in the folder for that plugin (this way the messages are editable and it overrides the one inside the jar) actually considered illegal? it's not code, nor is it redistributing it

obtuse gale
#

the legality of the matter is very dubious

#

it depends on the plugin's license

prisma mountain
#

how can i find a plugin's license?

obtuse gale
#

it should be mentioned in its resource/github page, or ask the author otherwise

obtuse gale
# obtuse gale it depends on the plugin's license

in theory every single plugin should be GNU GPL v3 because they are forced to
in practice.. that does not apply, but in a legal scenario where that actually mattered (and the plugin's license was not GNU GPL v3), you would win the case

#

odds are that will never ever happen

prisma mountain
#

i don't see anything more than a basic disclaimer at the bottom of this plugin's spigot page

obtuse gale
#

mandatory "i am not a lawyer"

prisma mountain
#

theres no github

obtuse gale
#

also so long as you don't actually tell anyone what you're doing, you can do whatever you want, lol

prisma mountain
#

i'm just tired of all the plugins that claim to be "customizable" but then package the message.properties within the executable

sweet cipher
fleet dagger
#

I need some assistance with Rich Presence - it doens't work for me at all and I have ran out of ideas what to try

sly sonnet
#

What exactly doesn't work?

fleet dagger
#

it doesn't appear on discord when pressing the plus button.
I have tried everything I could think of, apart from new account on a freshly installed computer, but don't want to do that

#

it used to work a long time ago, so probably i messed up some settings on DC, but no idea what.
Do any of you know the exact things that need to be enabled for rich presence to work correctly? probably from technical side. I am also running WARP dns if that has any effect

compact perchBOT
#
FAQ Answer:

Looking for discord support?
HelpChat is a Minecraft plugin and development support server and is not affiliated with discord in any way.
If you require support from discord, we recommend you to visit their official support website at https://support.discord.com
On this website, you can read their FAQs, or open a support ticket if necessary.

fleet dagger
#

oh

#

thanks bot

urban sleet
#

Best intellij theme?

static zealot
#

I know a lot of people in here do the same

obtuse gale
#

I use the new Dark theme with a slightly adjusted New Dark colour scheme, used to use the combo Blitz mentioned

sly sonnet
gusty glen
#

Guys I think I did it, I was able to generate serialVersionUID using a plugin compiler I created!

#

Btw this is kotlin compiler AST dump for those not familiar with

obtuse gale
#

uh

#

that's neat i guess

gusty glen
#

create compiler plug-ins is extremely hard because Kotlin compiler API has basically no documentation whatsoever, or at least I found it very hard

potent nest
#

a compiler with documentation wouldn't be a compiler

red atlas
#

MessageAnnouncer Dev for 1.19.1

prisma wave
#

ok

distant sun
pastel imp
#

What am I missing lol

static zealot
pastel imp
#

No idea how to use it but I will discover it

#

Thanks.

static zealot
urban sleet
#

Does anyone know how much (on average) an experienced developer charges per hour?

static zealot
#

that really depends. if they're from the west, they'll most likely charge US$25+

#

but you'll find that some developers from more underdeveloped countries will charge less. not always but sometimes yes

pastel imp
#

I would say a good average is 18-22?

#

unsure

surreal quarry
#

Yea 20-25

static zealot
#

nah gaby

#

good developers in romania will charge us rates

sick belfry
#

crap I'm gonna go blind

static zealot
#

hmm?

sick belfry
#

too bright

pastel imp
static zealot
#

yeah. its 16 by default, I changed it to 13

#

ingame rn, will tell you where after

surreal quarry
#

Settings > Editor > Color Scheme Font

#

IJ has like 10 different font settings, just search font or size and they'll all come up. change whatever you need

static zealot
#

yeah. lmao

cerulean cloud
#

Anyone know a DEV looking for a new project?

dense dew
static zealot
surreal quarry
#

Yea same. It shows u that one isn't affecting anything and i just follow the hotlinks until i get to the right one, but once i got there i just told him the path lol

worn trout
#

Hey guys

sweet cipher
#

I'm getting unmappable character (0x90) for encoding windows-1252 with IntelliJ even though I changed the encoding to UTF 8
Why is this still happening?

cursive jolt
#

notepad++ can try converting encodings

#

@sweet cipher

wide verge
#

does anyone know how I would stop someone from interacting a bed if they right click it?

#

I'm trying to implement it into this

@EventHandler
public void onLeaveBed(PlayerBedLeaveEvent event) {
    Player player = event.getPlayer();
    if (player.isOp() == false)
    player.damage(1);
    player.sendMessage("§7[§3K-Events§7]§C§LSleeping is not enabled on this server!");
frail glade
wide verge
#

alright thank you pepefedora

hot hull
static zealot
#

Nah. At least freelancers. They might charge lower rates bcz they can afford it

ocean quartz
#

@half harness Since you like pvp stuff, have you played wool wars yet on Hypixel?

static zealot
#

sucks

half harness
distant sun
#

Isnt it just CTF?

static zealot
#

oh. is it a new one?

#

I thought its the old one they had that was capture the flag yeah

ocean quartz
#

Yeah it's a "copy" of our BattleBox

static zealot
#

I love it when you say "ours". turns me on.

#

:kek:

ocean quartz
#

Lol
I mean mcc's BattleBox I guess

distant sun
#

Lmao

ocean quartz
#

Btw close beta will be this month, soon™️ so I might be able to share things very soon

last nacelle
#

Where do I find happiness again? Is there a PlayerSad event or packet I can cancel?

ocean quartz
#

Don't think you can, but you can send a few PlayerDopaminePacket

last nacelle
#

That should do the trick, thanks

weary epoch
#

how do i set the dragons AI phase?

#

like to set it to phase 0 or something?

sly sonnet
#

How can I split this in to 2 seperate lines?

distant sun
#

<br>

sly sonnet
#

oh shoot, thanks 👍

jovial warren
#

just treat JavaDoc comments as HTML, then think "how would I <do some thing> in HTML?", then you'll have your answer

potent nest
#

uh oh sometimes javadoc has a better approach than writing html

cosmic zealot
#

Hey guys can i ask help for logging into my discord account here

#

its the one im currently speaking to you on

compact perchBOT
#
FAQ Answer:

Looking for discord support?
HelpChat is a Minecraft plugin and development support server and is not affiliated with discord in any way.
If you require support from discord, we recommend you to visit their official support website at https://support.discord.com
On this website, you can read their FAQs, or open a support ticket if necessary.

cosmic zealot
#

lol ive already tried there.

remote goblet
#

okay but we're not discord

oblique heath
#

hi yes i would like one (1) discord please

static zealot
oblique heath
#

what a scam

#

you're just trying to make me pay extra

static zealot
#

but it costs the same as a 1 pack tho

oblique heath
#

oh

#

what a deal!! i'll take 12

static zealot
#

12 2 packs? or 6 2 packs which is 12 discords?

oblique heath
#

yes

static zealot
#

ok sir. it will cost you

oblique heath
#

i have no moneys

static zealot
#

well then get the hell out of my bed

oblique heath
#

sir you can't use the furniture before you buy it

#

now get out of my store

static zealot
#

I'm not using it. just testing it

#

be careful. don't step on my bag. I'll be sleeping here this night

oblique heath
#

we will leave the thermostat unlocked just for you

static zealot
#

thank you

half harness
#

Anyone have a reliable method to convert 9 (for example) of one item to 1 (for example) of another but in an inventory?

like if I have 16 gold, the 16 gold in my inventory gets replaced with 1 gold block and 7 gold ingots are added to my inventory

#

Tried creating my own, but I keep getting dupes and it's pretty annoying to fix them

#

and also the same the other way, 1 gold block -> 9 gold

#

I also want to make it so that it if the inventory becomes full while converting (ex if half the inventory is full with gold blocks, it can only convert some), it will still convert as most as it can

oblique heath
#

use math

half harness
#

but my brain is too small to think of how to do that

oblique heath
#

count up the number of materials, how much space is in the inventory, and extrapolate to see how many resulting items you get

half harness
#

and then I also have to calculate how many items to convert

#

and how many to keep

oblique heath
#

yep

half harness
#

😖

oblique heath
#

use math though

half harness
#

Maybe that's simpler than what I'm doing atm

onyx loom
#

items /9 = blocks
items % 9 = remainder

oblique heath
#

i think trying to do it iteratively and looping is a recipe for disaster

half harness
onyx loom
#

lol

half harness
half harness
#

worked, but so far players have found 2 dupes

oblique heath
#

sounds right

half harness
#

💀

#

and now the current dupe... I can't find out why it's happening and I don't really want to debug every single thing

oblique heath
#

leverage math

#

💪💪

#

i'd help more but at work

half harness
#

ah alr

#

ty anyways though

#

forgot about the option of doing math

#

👍

half harness
#

oh wait

#

you mean cloning itemstacks

static zealot
#

yes

half harness
#

nope 😭

#

I wish I did forget so that it could be ez fix

#

:(((

static zealot
#

umm

half harness
#

I will probably just do the math thing that ivan mentioned

static zealot
#

you're subtracting the amount from the clone

half harness
#

yes

#

well

#

my thing is pretty complicated
which makes it also pretty difficult to debug

static zealot
#

well, the original itemstack will still have the amount right? idk. that line shows nothing

half harness
#

so I have had a bug previously where the slot would be modified twice

#

but fixed that

pastel imp
ocean quartz
#

MCC Island yes

pastel imp
#

god that's really poggers ngl matt

ocean quartz
#

It's pretty fun to work on it ;p

pastel imp
#

well, congrats? only found out about it now so, late congrats? xD

jovial warren
static zealot
#

go on

jovial warren
#

Wdym

#

All of Krypton's item stacks are immutable :)

static zealot
#

go on

half harness
#

do u have to set the slot again

jovial warren
#

inventory.set(index, inventory.get(index).withAmount(4))

#

For example

half harness
#

hmmm

jovial warren
#

It's a bit finicky but means the item stacks can be used safely across concurrency barriers

onyx loom
#

mutable inventories 😕

jovial warren
#

And there's also no chance of your item stack being modified by others

jovial warren
onyx loom
#

don't care

jovial warren
#

And also, they don't have the issues that mutable item stacks do

half harness
#

mutable entities!!!!

half harness
onyx loom
#

immutable everything

jovial warren
#

The problem with mutable item stacks is that it's easy to get lost and have others modify your item stacks that you thought were safe to share

half harness
#

orr you can clone

#

👍

jovial warren
#

With immutable item stacks, you don't have to worry about cloning everywhere, you can have one stack and share it between a lot of things

prisma wave
#

imagine having mutability anywhere

#

yeah u aint got a response to that do u

onyx loom
#

^

#

😄

obtuse gale
#

Pain

ocean quartz
#

Minecraft's ItemStack is also immutable iirc

#

Just Bukkit that fucks it up

half harness
#

oh
btw sort of offtopic but how did they deobfuscate it?

#

before the mappings were released

static zealot
#

as a great man used to say, PR or shut up :)))

#

for safety concerns, I have to say this was a joke

ocean quartz
#

Not sure if I would call that person a great man kek

half harness
#

💀

static zealot
#

yeah. we all miss chazza but unfortunately he's not amongst us anymore.

#

I wanted to say ||among us|| so badly

#

||serverworldfiles|| tho.

obtuse gale
ocean quartz
#

Not fully sure, but I believe so, the tags are immutable mutable but ItemStack's only way to set a tag returns a clone

#

I could be very wrong though

obtuse gale
#

the tags are immutable
err, no?

ocean quartz
#

I meant mutable there

obtuse gale
#

get/getOrCreate don't return copies

#

99.999% sure

ocean quartz
#

Like I said I could be wrong

jovial warren
#

Unfortunately

jovial warren
gusty gale
#

Need to ask something or any staff

ocean quartz
# gusty gale Can you DM me

Uh no, if you have any question ask in the correct channel, if you're looking for discord support you're in the wrong place

jovial warren
#

Why do people do that. Don't reply to a message with something completely unrelated just so you can ping someone without just pinging them

prisma wave
jovial warren
#

Lol

hot hull
#

I swear to god this shit literally never works properly

sly sonnet
hot hull
#

Dracula

sly sonnet
#

Oh, i use it too, but I have never seen such popup

hot hull
#

A corrupted file mostlikely, but I can't be asked to figure out which one

fossil quarry
#

@lime kayak bro ur token logged u sent me a dm and you blocked me

#

check it

calm gyro
#

Hello

obtuse gale
#

anyone remember what's the IJ registry entry for max file undo action?

potent nest
#

no

prisma wave
#

me neither

hot hull
#

neither

obtuse gale
#

damn

#

okay

#

guess i'll have to deal with it

quiet depot
#

undo.documentUndoLimit

#

there's also another registry for undoing file changes, i.e. deleting files and making files

obtuse gale
#

yesss that's the one

quiet depot
#

if that's the one you meant, undo.globalUndoLimit

obtuse gale
#

thanks piggy ily

#

no no, the document one

quiet depot
#

emily

obtuse gale
#

you are a LIFE SAVER

#

pig

quiet depot
#

i'm going to show you something

obtuse gale
#

;o?

quiet depot
#

this is how I answered your question

#

I went through my brain for about 10 seconds to see if I could remember it

#

I couldn't

obtuse gale
#

well yes but you see here's the difference

#

I didn't bother

#

you did

quiet depot
#

but like

#

it's the same amount of effort

#

typing in discord vs typing in google

obtuse gale
#

well you aren't wrong

half harness
#

ok discord

#

plz embed

#

thank you

obtuse gale
#

skill issue

distant sun
jovial warren
# quiet depot it's the same amount of effort

the former is more effort, because you have to reply to questions made by confused helpers who don't understand what you're trying to ask or questions like "why don't u just google it bro" lol

prisma wave
#

i disagree

last nacelle
#

Anybody know about making a snowball in projectile form disappearing from client (invisible projectile)

#

Or projectile in general

hot hull
#

I believe there's a method to make it invisible, not 100% sure tho

cursive jolt
#

Yeah all entities have invisible metadata

last nacelle
distant sun
last nacelle
cursive jolt
#

Are you sure the bukkit object doesn’t have a set invisible property?

last nacelle
#

you would think right?

last nacelle
#

am I doing this incorrectly? Trying to set the fireball projectile invisible, with its entity metadata of 0x20. I can still see the fireball.
https://prnt.sc/Mv_0bU0kfcDR

Is there a packet on the client I have to change as well?

inner umbra
#

So annoying when you can't cast IntTag as int/Integer (Not asking a question)

distant sun
karmic fjord
#

is there a good config api

#

i don't want to shade if that's possible

rotund egret
#

configurate is great

karmic fjord
#

lucko's fork or the sponge one

#

ah the sponge one is

#

idk why the lucko's one coming first on search

#

but i am looking for something like bukkits

#

just need to preserve comments actually

inner umbra
frail glade
#

Hold up configurate YAML saves comments now?

inner umbra
frail glade
#

Oh nvm damn

prisma wave
#

bukkit uses snakeyaml

obtuse gale
#

It also uses ThreadLocals because snakeyaml is not thread safe 🤬

#

face with symbols over mouth

inner umbra
rotund egret
#

face with symbols over mouth

#

\🤬

rotund egret
karmic fjord
#

🤬

prisma wave
#

why are java devs addicted to making random things stateful

#

why does a yaml parser and number formatter need state

half harness
#

what are states?

prisma wave
#

mutable variables

#

actually thats not even true

#

it's presumably not thread-safe because it has global state

#

which is dumb

obtuse gale
#

it's so fucking stupid

prisma wave
#

state itself is safe as long as it's constrained properly

obtuse gale
#

in a single thread troll

rotund egret
#

Single threaded environments are the only real-world environments anyway

#

Nothing is multi-threaded at all

#

(this is a joke)

obtuse gale
#

if you live in the 1990's it isn't

potent nest
#

I'm living in 2022

obtuse gale
#

why

potent nest
#

not sure

prisma wave
#

i was born in the wrong generation

#

kids these days dont appreciate "the beatles" and "skrillex"

rotund egret
#

Who

static zealot
#

Asked

prisma wave
#

it's not state if it's final

old wyvern
#

USA soon to dissolve

prisma wave
#

thank god

old wyvern
#

thank simon

prisma wave
#

tee hee

#

omw to sue premium plugin devs

distant sun
#

so what should we use after all?

prisma wave
#

well the point is that technically all you can use is GPL

#

or a GPL derivative

#

since subclassing JavaPlugin is making a derivative

cinder flare
#

yet another reason GPL is poison

#

tbh

prisma wave
#

yeah i dont necessarily agree

#

but threatening legal action on the loser premium plugin devs could be funny

obtuse gale
#

LGPL relieved

cursive jolt
prisma wave
#

not necessarily

cursive jolt
#

Yes, you will, it’s not your copyright to enforce

#

For all you know, the plugin dev got permission from every dev to not follow GPL

prisma wave
cursive jolt
#

Sadly I think effort would just be wasted

prisma wave
cursive jolt
#

Spigot is hosted on DMCA ignored servers

prisma wave
#

and therefore you must provide the source to any consumers on request

cursive jolt
#

So you’ll need real legal action to do anything, costing 5 figures for what? Getting another website to do the exact same thing?

prisma wave
#

If the main program and the plugins are a single combined program then this means you must license the plug-in under the GPL or a GPL-compatible free software license and distribute it with source code in a GPL-compliant way. A main program that is separate from its plug-ins makes no requirements for the plug-ins.

prisma wave
cursive jolt
#

They get enough of those

prisma wave
#

however i could make a legitimate case for getting the source code if i had bought the plugin

cursive jolt
#

It won’t work

half harness
#

paid anticheat devs would never (or would probably not) release their source code 💀

cursive jolt
#

I’ve tried it with LiteBans and the author told me GPL doesn’t apply because he doesn’t shade bukkit

prisma wave
#

well then he is wrong

obtuse gale
#

Tell him he lacks chunks of brain

prisma wave
#

GPL applies if you're extending any bukkit classes

half harness
#

Btw if java for example was GPL
would that mean every java app would have to be open source
since that would be quite interesting

cursive jolt
#

I’ve tried cracking Litebans and it’s very difficult

half harness
prisma wave
half harness
#

oh

cursive jolt
#

I don’t trust DRM systems when I buy plugins

#

So I usually remove DRM on my own plugins I’ve bought before running in production

#

One less point of failure

half harness
#

Oh like if it makes it so that only 3 servers can have the plugin?

cursive jolt
#

Such as when their auth servers have downtime or go down

#

Your server can still use the plugin

urban sleet
#

At least Spigot doesn't allow DRM that uses license servers iirc

inner umbra
cursive jolt
#

What if it’s half down?

#

It’s just a risk that I don’t see the point of taking

prisma wave
#

premium plugins have to work offline is the point

inner umbra
#

Basically, if the plugin can function with no internet connection and if your DRM is down for some reason, you can have any DRM.

prisma wave
#

not that spigot actually enforce that

prisma wave
cursive jolt
#

Technically not everyone

prisma wave
#

what that does mean is that you don't have to give source to non-buyers

cursive jolt
#

Just the person you got it from

#

Meaning that piracy site is illegal if the uploaded also doesn’t give source to downloaders

prisma wave
#

yeah

#

any distribution

#

what GPL also allows you to do is resell the software which is amusing

cursive jolt
#

I don’t like the right to redistribute the sources provided though

pastel imp
#

joining this whole GPL license thing, wouldn't making your plugin OS solve the issue?

#

and if you wanna go with Premium, then just go Freemium lol

pastel imp
#

oh ye

#

thats stupid

pastel imp
#

but people could resell it which is an issue for Freemium plugins

prisma wave
#

yeah im not saying GPL is necessarily a good thing

#

it does have some flaws

#

some quite big ones

#

however it allows me to hypothetically make threatening emails to premium plugin devs which is fun

pastel imp
#

so what license would serve a Freemium software better?

cursive jolt
#

Usually it’s just GPL, large sites don’t just let you resell plugins

cinder flare
#

MIT gang 4 lyfe

prisma wave
#

mit would also permit reselling lol

#

but i guess with MIT you could change the license

#

not that it's gonna matter anyway, this is all hypothetical since none of us can afford a lawyer

static zealot
#

I am not a big fan of mit

#

I mean as a business mit would be pretty bad.

surreal quarry
old wyvern
obtuse gale
#

smiling face with tear

static zealot
#

I have something more suitable

obtuse gale
#

ah yes

#

807456604810772480.webp

onyx loom
pastel imp
#

I am so confused rn

#

about which license if technically the best for freemium

#

but whatever

#

I suppose I won't try to understand it

rotund egret
#

There isn't 1 right answer

pastel imp
#

even more confusion

rotund egret
#

Also worth noting that "No license" is still a license, and that license is "All rights reserved"

onyx loom
#

choosing a license is entirely up to u

cursive jolt
#

MIT = people can close source your code

#

GPL = people can’t but they can redistribute and sell

pastel imp
#

what's an in the middle one

rotund egret
#

Not publishing it

pastel imp
#

bruh

rotund egret
#

What exactly are you looking for from a license?

half harness
cursive jolt
#

Yes

rotund egret
#

Yeah

half harness
#

ah

pastel imp
#

Open source but can't redistribute nor sell lol

cursive jolt
#

Redistribute, close source, and sell

rotund egret
#

Then closed source?

cursive jolt
#

That’s why companies love MIT

pastel imp
half harness
half harness
#

but aren't comments removed?

cursive jolt
#

Similar bugs is a good indicator

half harness
#

on decompilation

half harness
#

besides the comment block at the top

cursive jolt
#

Oh, MIT requires giving credit

half harness
#

it's usually (afaik) done by having a comment block at the top, but if it's compiled then how would anyone know?

#

or does it have to be in like a text document in the jar or something

cursive jolt
#

Discord has a nice open source libraries credit somewhere

half harness
#

oh

cinder flare
cursive jolt
#

Acknowledgements in settings

half harness
#

oh so you can just list it in the app

#

thats nice

cinder flare
#

they already have the code, it doesn't really matter if someone else takes it and does whatever

#

freemium is that you pay for support

half harness
rotund egret
#

That's not to stop any community from just offering free support at the same time either, though obviously the level of support you need might warrant first-party support.

cinder flare
#

I mean yeah but GPL won't protect you from other people offering free support either lol

rotund egret
#

Things I didn't say

last nacelle
#

invisiblity is the goal : )

cursive jolt
#

Are you sure you can make non-living entities invisible?

#

I see the a reference to isVisible() in LivingEntityRenderer but not where it renders arrows

#

f3 + b might show if it's rendering despite being invisible, if it has a hitbox then it's visible

#

You could also use MCP-reborn to debug this

last nacelle
cursive jolt
#

It's weird... Entity most definitely has the metadata

last nacelle
#

Did I just waste my day trying to figure out something that’s not possible

#

😵‍💫

cursive jolt
#

did you try splashing potion of invisibility on arrows?

last nacelle
#

No, I was stubborn on getting the entity meta thing to work

#

I’ll probably try that next when I’m home

sick belfry
#

since when did I opt into the technical preview

#

or wait

#

is my copilot access gonna get revoked?

#

wasnt it permanent

#

I just googled

half harness
sick belfry
#

bruh

#

I liked that man

half harness
#

💀 I'm guessing you aren't a student

cursive jolt
#

or have a lot of stars

sick belfry
#

indeed

half harness
sick belfry
#

breh

#

I have not done anything at all thats public

#

but finally I'm settling in a full minecraft lib and a mod

gusty glen
#

on the plugin I'm currently maintaining haha

karmic fjord
karmic fjord
prisma wave
#

labels are pure evil

obtuse gale
#

nah

potent nest
#

the more the better

oblique heath
#

what do labels do

distant sun
#

Allows you to continue or break a specific loop

#

continue bigassloop

oblique heath
#

i see

#

kinda cool i guess

distant sun
#

They aren't very used but is nice to have such feature I guess xD

oblique heath
#

most clean code fanatics probably loathe the idea of labels

#

since nesting loops in the first place is considered bad

unreal briar
#

Nesting loops is fine in some situations

hot hull
#

"some"

#

not most

obtuse gale
#

I mean in many cases it's just unavoidable

hot hull
#

Indeed, if you can avoid it, why wouldn't you tho

obtuse gale
#

But if you can't ¯_(ツ)_/¯

potent nest
#

there are a lot of things that are considered bad practice but sometimes just are the only viable solution

unreal briar
#

I see this issue with students and people just learning programming.

hot hull
#

It should be nice in a sense of readability

#

That's why most programs are fucked when it comes to maintability, cause the code was rushed and noone knows what anything does anymore

tranquil crane
#

my code is self documenting wearycry

potent nest
unreal briar
#

As a startup, one of the essential starting points for your product is creating a MVP. That is a product that does the bare minimum to satisfy your project, with the least possible cost, so you can launch with it, and see if clients bite. If they do, keep working on it. If they don't, stop working on it.

#

More times than not, the MVP is trash code, because making it efficient would mean time spent in not cutting corners, redoing major parts when some idea changes as part of normal startup development, etc

#

So it's a good idea actually to do "trash code" in an MVP, if this can save you a large amount of money, which is often the case if you do skip on some good practices

#

Now, it's obvious in the future that will bite you in the arse, but at that point your client base should be enough to pull investors willing to put their money for you to build a good product

#

At that point, scalability matters since you've already tested out if your product is worth developing further on, and you want a good foundation to build your business upon

#

Obviously everything matters on the financial situation, the strategic interest of the company (startup, growup, established), and the resources the company can leverage

#

Businesses do the best of what they have, or at least they try to

hot hull
#

Businesses do the best of what they have, or at least they try to
Yeah in 90% of cases that ain't true

#

But yea I get what you're saying

unreal briar
#

But idea is, people generally only focus on growdth when it's worth it

#

There are many businesses that did a great product and realized they have f all clients when they eventually release after millions in expenditure

potent nest
#

oh yes, the "I don't have time to care about my work" argument

rotund egret
#

I think that's a fair point.
if the difference is between code that comes out on time and functions or is late and doesn't function there's a clear choice.

The downside is obviously that fixing bad code can be harder once it's in production, then you get into the rut of legacy debt a la bad code that might be difficult or not possible to rewrite properly.

obtuse gale
#

if only MVPs were about keeping it minimal rather than rushing everything to a huge product no matter what

rotund egret
#

relieved

half harness
#

Most Valuable Product

oblique heath
obtuse gale
#

for x y z

oblique heath
#

i feel like ive never seen nesting not be avoidable

#

you can make 3 methods and pass them in as params

#

instead of nesting

obtuse gale
#

that's just moving the issue around so they aren't visibly nested, they still are

oblique heath
#

well yeah

#

the whole point is to not visibly nest imo

#

so you have more readable code

obtuse gale
#

I would argue splitting them into separate functions that all they do is call the other function inside a loop makes it less clear

#

But hey to each their own

oblique heath
#

🤷

#

i can agree that it's probably best to decide case by case

potent nest
obtuse gale
#

true...

oblique heath
#

based

hot hull
#

imo, clean as shit

#
    public void remove(final World world) {
        manage((x, y, z) -> {
            final Block block = world.getBlockAt(x, y, z);
            if (block.getType() != this.material) {
                return;
            }

            block.setType(Material.AIR);
        });
    }

    private void manage(final TriConsumer<Integer, Integer, Integer> logic) {
        for (int x = (int) this.boundingBox.getMinX(); x <= this.boundingBox.getMaxX(); x++) {
            for (int y = (int) this.boundingBox.getMinY(); y <= this.boundingBox.getMaxY(); y++) {
                for (int z = (int) this.boundingBox.getMinZ(); z <= this.boundingBox.getMaxZ(); z++) {
                    logic.accept(x, y, z);
                }
            }
        }
    }
oblique heath
#

nested loops 😔

hot hull
#

Ivan, boutta chop your nuts off

oblique heath
#

:(

hot hull
#

Propose a nicer way of doing it

#

I'll wait

oblique heath
#

lemme get my laptop

sly sonnet
obtuse gale
#

Ivan I don't know what you think but I don't think this

void setBlocks(World world, BlockData data, int minX, int minY, int minZ, int maxX, int maxY, int maxZ) {
  for (int x = minX; x < maxX; x++) {
    setBlocksInX(world, data, x, minY, minZ, maxY, maxZ);
  }
}

void setBlocksInX(World world, BlockData data, int x, int minY, int minZ, int maxY, int maxZ) {
  for (int y = minY; y < maxY; y++) {
    setBlocksInXY(world, data, x, y, minZ, maxZ);
  }
}

void setBlocksInXY(World world, BlockData data, int x, int y, int minZ, int maxZ) {
  for (int z = minZ; z < maxZ; z++) {
    setBlock(world, data, x, y, z);
  }
}

void setBlock(World world, BlockData data, int x, int y, int z) {
  world.getBlock(x, y, z).setBlockData(data);
}

is any more readable, clean and/or maintainable or even just practical than this in any way, if anything I find it less understandable

void setBlocks(World world, BlockData data, int minX, int minY, int minZ, int maxX, int maxY, int maxZ) {
  for (int x = minX; x < maxX; x++) {
    for (int y = minY; y < maxY; y++) {
      for (int z = minZ; z < maxZ; z++) {
        world.getBlock(x, y, z).setBlockData(data);
      }
    }
  }
}
oblique heath
#
public void remove(final World world) {
        manage((x, y, z) -> {
            final Block block = world.getBlockAt(x, y, z);
            if (block.getType() != this.material)
                return;
           
            block.setType(Material.AIR);
        });
    }

private void manage(final TriConsumer<Integer, Integer, Integer> logic) {
    for (int x = (int) this.boundingBox.getMinX(); x <= this.boundingBox.getMaxX(); x++)
        manageWithX(logic, x);
}
private void manageWithX(final TriConsumer<Integer, Integer, Integer> logic, int x) {
  for (int y = (int) this.boundingBox.getMinY(); y <= this.boundingBox.getMaxY(); y++)
    manageWithXY(logic, x, y);       
}
private void manageWithXY(final TriConsumer<Integer, Integer, Integer> logic, int x, int y){
  for (int z = (int) this.boundingBox.getMinZ(); z <= this.boundingBox.getMaxZ(); z++)
    logic.accept(x, y, z);
}
hot hull
#

Absolute madlads

oblique heath
#

i think with enough thought into the naming scheme this could be much better than a bunch of loops

#

brb

obtuse gale
#

you are still nesting for loops but moving it around and pretend it isn't there and call it "clean" and "maintainable"

#

it's garbage

#

it's more layers of indirection you need to follow and keep in mind

prisma wave
#
[(x, y, z) | x <- [minX..maxX], y <- [minY..maxY], z <- [minZ..maxZ]]

Relieved

hot hull
#

Any volunteers to shoot him in the knee?

ocean quartz
#

o/

hot hull
#

Too powerful to be left alive

prisma wave
#

😌

old wyvern
potent nest
#

I'd argue there's a difference between three nested loops that make sense because you're dealing with actual dimensions of something or three nested loops that just do totally different things

obtuse gale
#

it's super maintainable, SRP and what have you!!

potent nest
#

stop right there

wind patio
#

why is groovy so fkn weird

obtuse gale
#

it's literally java without the constraints of java

#

so JavaScript

wind patio
#

why is it null if I specifically tell it that it should return that

obtuse gale
#

what the fuck is that function below

wind patio
#

huh

#

wym

#

>> ?

obtuse gale
#

def "supply-state validate ...."()

#

it's so cursed

wind patio
#

it's a test

obtuse gale
#

doesn't make it any less cursed

wind patio
#

I didnt invent it

obtuse gale
#

I'm not blaming you

#

I'm blaming groovy

wind patio
# wind patio

so yeah, if anyone knows what the fuck is the solution to this, let me know
other tests work correctly

wind patio
#

still gRoOvY

last nacelle
#

=

wind patio
#

!=

oblique heath
#

not=

prisma wave
#

ironically, groovy is not groovy

#

it is sad

wind patio
#

I restarted all the tests and now it works

#

ah yes

#

nevermind 💀

sly sonnet
#

Gosh i fucking hate windows

#

Literally cant allocate any ram to ij

potent nest
#

what

wind patio
#

what

#

now u know how

#

🤠

sly sonnet
#

Problem is windows eating almost 50% of my shit

obtuse gale
#

Consider not using Windows

sly sonnet
#

I am dualbooting windoesn't from now on

jovial warren
prisma wave
#

based

brazen ether
#

Okay I need to speak out about this

#

Why do all custom uis look so FUCKING corporate

#

Like think of something actually stylized instead of copying everyone else's big head blocky style

#

Like if you're gonna make uis even if ur not good at pixel art bad looking pixel art still has more potential than this corporate art style

potent nest
#

UIs aren’t just art

brazen ether
#

They are

#

In their own way

#

There are people who design uis for a living

#

Oh shit I misread

#

Well yeah they need other functions as well but you don't see CSGO or league or even Minecraft have that type of ui. Sure it's poppy and maybe I'm the only one with this opinion but it's tiring seeing the same shit everywhere

winged oyster
#

Yeah i've thought this too

#

I saw mineclub do it and thought it looked cool but I feel like i see it everywhere now

#

I don't even know if mineclub was the first to do it, probably not

#

it definitely feels very reminiscent of a corporate art style

still portal
#

Luckily the bigger servers are working on/have their own style

#

Smaller servers tend to commission UIs that look like mineclub’s or just yoink the guis

distant sun
#

new badge for bots, wot

lavish notch
distant sun
#

I just noticed ¯_(ツ)_/¯

static zealot
#

its new news for me

#

never seen that

#

oh its a badge duh

distant sun
#

um I can't remember but do you have to do some extra steps for IJ annotations to work?

#

Or are they only for IDE warnings and have no effect on the jar

#

ah there we go nope

inner umbra
#

Thought you had streamlabs open for a sec xD

jovial warren
distant sun
#

I think jetbrains annotations are just for the IDE

hot hull
#

Wouldn't make sense to be anything else

obtuse gale
#

Yes, they are for static analysis tools only

distant sun
#

I need something to actually add these assertions (@NotNull, @Range etc)

obtuse gale
#

During compile time or runtime?

distant sun
#

runtime

obtuse gale
#

not possible without a compiler plugin that adds such assertions in your code

distant sun
#

I see

obtuse gale
#

\

ocean quartz
#

Might be worth looking into checker framework

obtuse gale
#

Yeah but that is compile time purely, no?

ocean quartz
#

I thought that one added runtime checks

obtuse gale
#

No idea, never seen that being a thing honestly lol

potent nest
#

lombok (🤮) does that, but I don't think checker framework messes with the AST that much

half harness
#

Anyone have a repo of deluxechat's api?

static zealot
#

there's only a few events really. not much else

half harness
#

Unless there's a way to add code to a project without making it compile into the jar

distant sun
#

DeluxeGFYEvent

half harness
#

just seeing if someone has a jar or maven repo for it already

static zealot
half harness
#

oh wait i found it

#

ty

distant sun
#

1.14.4 from 2019 🤣 not like many things changed, just saying

half harness
#

oh a maven repo :D

#

thanks

distant sun
#

I might be wrong but clip has a maven repo for it
yes

half harness
#

i found a github repo

#

🥲

static zealot
#

mind linking?

half harness
#

still seemed to have the api that i needed tho

static zealot
half harness
#

dont know who markozmc is

#

¯_(ツ)_/¯

static zealot
#

oh lmao

#

they just copy pasted the classes there

mighty finch
#

Does anyone know if it's possible to apply a glow to a placed block based on where the player's cursor is looking?

sly sonnet
#

with particles probably yes