#help-development

1 messages Ā· Page 707 of 1

quaint mantle
#

like why couldnt they use an actual language

fervent robin
#

ik it doesnt matter too much

onyx fjord
#

Useless boilerplate nobody will ever remember

fervent robin
#

but still confused on why that part doesnt send

kindred sentinel
#

How to make clicking animation when you click at block

young knoll
#

Isn't it just an arm swing

#

There are swingMainHand and swingOffhand methods

subtle folio
fervent robin
#

Is there an easy way to test backwards compatibility other than testing every single version

young knoll
#

Test the min version

#

If it works there it probably works on others

#

I would test min, max, and maybe like 1.13 or 14

ancient plank
#

^

fervent robin
ancient plank
#

ngl most of my plugins work on any version above 1.13, and the only change I'd need to make is to change the api-version in the plugin.yml

ancient plank
#

I mean there's a flag you can run to allow unsupported java versions for your server Kappa

subtle folio
#

oh

kind hatch
#

It's kinda just sittin there right now needing review. I've already pushed the scope of the PR once, not trying to make it extremely massive by redoing everything.

dull root
#

Hey there, I am trying open a sign to the player which is used as a way for them to input information. This code worked in lower versions but now the sign instantly closes due to Player IGN just tried to change non-editable sign(unless the player is really close to the sign). Is there another way to do this that works in newer versions?

  Location location1 = location.clone();
  location1.setY(base.getHeight() - 3);
  Block block = location1.getBlock();
  block.setType(Material.OAK_SIGN);
  Sign sign = (Sign) block.getState();
  sign.line(1, Component.text("Type ^^^^^ Type"));
  sign.line(2, Component.text("Set the maximum"));
  sign.line(3, Component.text("Delete value"));
  sign.setEditable(true);
  sign.update();
  Bukkit.getScheduler().runTaskLater(Main.plugin, () -> plr.openSign(sign), 5);
river oracle
#

this is now intended vanilla behavior

dull root
#

yes... but is there a way for it to not do that? Or another alternative to have editable signs that dont close?

river oracle
#

no

#

probably could send a packet with NMS

dull root
#

uhh okay....

tender shard
#

I want to kill myself now

river oracle
#

kotling

tender shard
#

it's so weird that in forEach I can give the "element" a name, e.g.

something.forEach { element ->

but with all { I cannot & have to use this@all instead

#

and many things are hidden in some extension methods that are lying around at random places instead of inside the class where they should belong to

lost matrix
#

kotlin moment

tender shard
#

you also never really know what type something has unless explicitly specified - who knew that e.g. tasks.register<MyTask> returns a TaskProvider<MyTask> instead of a MyTask, while tasks.withType<MyTask> does return a MyTask and not a TaskProvider<MyTask>

lost matrix
#

i mean kotlin is cool and all, and it has its use cases but some features like extension methods are a design nightmare

tender shard
#

yeah extension methods are horrible

#

they make sense for foreign classes, but why the hell is org.gradle.kotlin.dsl.register an extension method and not directly added to TaskContainer? I mean, both were written by the gradle guys

#

why do they add extension methods to their own classes instead of adding them directly to the class?

fervent robin
#

Hey I am making a plugin backwards compatible how do I get around this error?
org.bukkit.plugin.InvalidPluginException: java.lang.UnsupportedClassVersionError

tender shard
tender shard
#

-source and -target

fervent robin
#

alright but wouldnt this prevent it being used for newer versions?

lost matrix
#

no

#

a newer jvm can run older bytecode

echo basalt
#

hello daddy smile

lost matrix
#

im not that old

echo basalt
#

you're almost in your 30s

#

old enough to be a dad

#

shit my mom was a mom at my age

tender shard
#

i know a woman who became a grandmother with 36

slender elbow
#

a series of unfortunate events

#

after another
after another

icy beacon
#

where do you get your java versions? I'm trying to get java 17 and then some, but every "legacy" download from the oracle website requires witchcraft and logging into something

#

(windows)

quaint mantle
#

OpenJDK

icy beacon
#

can I have the link?

kind hatch
icy beacon
#

ty šŸ™‚

rapid trout
#

How to make a player's compass spin as if he was in the nether?

lost matrix
#

i think thats a client side effect from being in the nether

echo basalt
#

or could be that their compass target is in another world

#

let me check protocol

lost matrix
#

that would make sense

echo basalt
#

fun why's this a packet

#

nms time

lost matrix
#

Just set the compass target to a dummy world

echo basalt
#

oo someone's doing hacky business

#

yeah it might be client side

#

shitty fix: make a scheduler that constantly switches the target

#

compass behavior is 9/10 times just a client-sided mess

#

which is probably why compasses work on menus and other player's hands

dry hazel
quaint mantle
#

it is simply good to make extensions functions instead of adding another methods to your class

#

and intellij will just help you lol

dry hazel
#

no reason to make something an extension method if it can be in the class

lost matrix
#

no reason to make something an extension method if it can be in the class

dry hazel
#

yes and?

hazy parrot
#

and this doesn't apply to your class

quaint mantle
#

and it doesnt?

#

wait

#

it says that you should do it on own classes so

hazy parrot
#

well second link does lol

worldly ingot
#

This will help you clearly show to the reader what is the core functionality and what isn't.
That's so ass-backwards, wat

#

That completely breaks OOP principles

lost matrix
quaint mantle
worldly ingot
#

Preferably an OOP language would

echo basalt
#

yeah but android apps tho

quaint mantle
#

but OOP language can handle functional programming

echo basalt
#

It's still an OOP language

quaint mantle
quaint mantle
worldly ingot
#

I should be able to see what a class can do by looking at it

quaint mantle
#

so you look at it

echo basalt
#

I'm tired of all these kotlin supremacists saying kotlin is better because it does something slightly different to java

worldly ingot
#

Not if the extension methods are defined elsewhere I can't

quaint mantle
#

extension functions are made to interact with the class easier

echo basalt
#

even though java does it because it's specifically engineered to be boilerplate and all strict about oop

quaint mantle
#

java isnt strict OOP

echo basalt
#

sure static is a thing

worldly ingot
#

As far as I'm concerned, this is an extension function:

public static R extension(T input, ...)```
If you're accessing a class' internal data from an extension function, you're doing it wrong. Breaking encapsulation principles, single responsibility principles, etc.
#

This is no better than C++'s friendship concept

quaint mantle
#

thats not a function

worldly ingot
#

Kotlin will compile it down to that because extension functions don't exist in the JVM

echo basalt
#

public interface Function<T, R>

#

that's a function

quaint mantle
#

thats a functional interface which implements type for lambda

worldly ingot
#

They compile to static utility methods

remote swallow
#

i thought extension methods just compiled from "cool guy".print(); to ExtensionClass.print("cool guy");

worldly ingot
#

That's correct

quaint mantle
worldly ingot
#

No...?

#

Dude, shut up lol

echo basalt
#

inferior

worldly ingot
#

Kotlin just makes it look pretty (which I sort of refute tbh, it's more confusing than anything), but if you're going to argue something at least know what you're talking about

echo basalt
#

I mean

#

p sure that facebook rewrote all their java code into kotlin

quaint mantle
#

what if we use kotlin/native then, no java

echo basalt
#

and it was like 11% smaller or somn

quaint mantle
#

kotlin isnt jvm only language

worldly ingot
#

Which is also pretty ass

quiet ice
#

Does anyone have any samples of Multi-release jars that are built via gradle?
Despite already having two samples (one even being from another project of mine) Javac really doesn't want to compile correctly

hazy parrot
#

what

worldly ingot
#

C doesn't have friendship

#

wtf are you on about?

worldly ingot
#

C doesn't even have classes

remote swallow
worldly ingot
#

jfc I'm wasting my time lol

#

I'm going to go spend time with my girlfriend instead

remote swallow
#

choco are you a java developer

echo basalt
#

prob multi jdk version

echo basalt
remote swallow
#

shit

quaint mantle
#

lol

quiet ice
# echo basalt what you strugglin with

Basically my Java 9 source set doesn't have the dependencies.
I was able to hack it in (although I usually shouldn't) but then javac will fail to resolve classes from the Java 8 source set

quaint mantle
#

java 9????

#

what r u doing

zealous osprey
#

When can OfflinePlayer#getName return null?

quiet ice
#

So basically dependencies are all fucked up

quaint mantle
echo basalt
#

uh great

#

each module has a build.gradle file

quiet ice
echo basalt
#

just put em there

#

and your root build.gradle just shades all your submodules

quiet ice
#

MRJs as multi-module makes no sense at all

quaint mantle
zealous osprey
quiet ice
quaint mantle
#

Mac OS Runtime for Java?

hazy parrot
#

eg. player haven't joined before if its offline

quaint mantle
#

thats what i could find

zealous osprey
quiet ice
#

Multi-release jars are those fancy META-INF/versions/<X>/ directories you can find in some jars from time to time

quaint mantle
#

eh???

quiet ice
#

Under maven it is dead easy. Under gradle it should generally only need a plugin (or you can do it yourself). But this time it seems to not like me

quaint mantle
#

oh you mean you want multiple versions of your app/library inside the app/library, but... why?

quiet ice
#

No, I want to target multiple versions of java

#

But as I said, you don't understand the idea behind MRJ

quaint mantle
#

why?

echo basalt
smoky oak
#

i thought multi version stuff is by just being like function -> version switch -> correct nms call

quiet ice
quaint mantle
#

ah, a company moment lmao

echo basalt
#

grr 3d math fucks with my head

quiet ice
#

Right now I am "only" at Java 6 though, but using Maven

quaint mantle
#

however have fun rewritting your app for java versions lol

quiet ice
#

To support Java 5 I need to use Gradle though, but it seems to not like my MRJ setup

quiet ice
kind hatch
#

Java 5?!?!

quiet ice
#

Since it was written for Java 8 originally. The Java 6 port came very early in the lifecycle.
The only worrying change is that I'd need to get rid of a lot of @Override

quiet ice
quaint mantle
quiet ice
quiet ice
#

Plus that means I need to cross-compile C/C++/whatever executables

quaint mantle
#

if you cant install java you cant install any apps, how the hell can you even use computer???

kind hatch
quaint mantle
quiet ice
#

If people were to only use linux there would be no problem

#

I'd be able to use a bash script (hashbang ā™„ļø ) to write the bootstrap in that case

#

However for Windows I cannot use hashbangs and thus not replace a .exe with a bash script. Thus I'd need to cross-compile

quaint mantle
quiet ice
#

I'm talking about consumer software, not server software. I wish it'd be that easy lmao

upper hazel
#

who knows how to create your own api and how to do it right? I know that interfaces are needed there, but I don’t know where they should be used in api. And also how to make api online access for other plugins

remote swallow
#

interfaces arent required in an api

upper hazel
#

but bukkit api have

remote swallow
#

yes because bukkit doesnt contain the impl

quaint mantle
hazy parrot
#

i wouldn't call designing api basic knowledge

upper hazel
quiet ice
#

In fact, designing APIs is one of the hardest tasks out there

upper hazel
#

oh demm

quiet ice
#

Well if you want to do it correctly that is

quaint mantle
#

it is not like i sit hours on end designing apis

remote swallow
#

i should update that lib

upper hazel
#

well, this is how it serves as an interface for CraftBukkit api

quaint mantle
#

i mean api is made for outside user of app to interact with the app by libraries

quaint mantle
lost matrix
#

Was trying to decipher this as well. I think he means the end user needs a user interface to interact with an api.

quaint mantle
#

*SHE

quaint mantle
#

api is user interface to interact with app

quiet ice
# quaint mantle *SHE

Don't be hard on him, they are german. We don't have something like that here
Which imo is a shame

quiet ice
remote swallow
#

women dont exist in germany

quiet ice
#

tru

upper hazel
quaint mantle
#

yeah

ivory sleet
#

rest api with spring lmao classic one

quaint mantle
#

api is something tht you need to look at other apis implementation and just find the best way to make it for your own app lol

lost matrix
quaint mantle
#

and Rast API is great way to make your first api

lost matrix
#

i think

quiet ice
#

At least in german

#

In english there is they for that

quaint mantle
ivory sleet
#

I mean an api can be on many different levels, for instance every class u write with its set of functions is an api of how that class wants it data managed to some degree

lost matrix
#

Ok i need to look that up...

ivory sleet
#

Yeah they/them

quiet ice
# lost matrix Ok i need to look that up...

There are important corrections to this video. Visit here: https://www.tomscott.com/gender-neutral-pronouns/ or pull down the description to read them. Original description: Grammatical gender is a silly concept. So I'm about to go against my vow of descriptivism, and risk being run over by the Linguistic Mafia's bus, and say this: it's a silly ...

ā–¶ Play video
remote swallow
#

love a good tom scott video

upper hazel
#

But in general, api is like a full-fledged plugin or will it not start without using it by other plugins?

echo basalt
#

finally something that smile can't beat me at

#

the english language

ivory sleet
#

no ilmir

quaint mantle
# upper hazel But in general, api is like a full-fledged plugin or will it not start without u...

first you need to know what is API... https://en.wikipedia.org/wiki/API

API

An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software interface, offering a service to other pieces of software. A document or standard that describes how to build or use such a connection or interface is called an API specification. A computer system that m...

ivory sleet
#

The api is the set of functionalities your plugin provides to some api consumer

#

how those functionalities work and are implemented is implementation

#

what they do, thats the api

upper hazel
#

and it is purely interfaces means or an abstract class yes?

quaint mantle
#

no

ivory sleet
#

It can be bith

#

Both

#

Api is wider than just some interfaces or abstract classes

quaint mantle
#

aaaaaaaa

ivory sleet
#

But usually in java we use interfaces to design apis since they are the right tool to avoid writing implementation code/concrete code

lost matrix
ivory sleet
#

I think a good api or well just interface is a keyboard

#

You know what it does, for example when you press Enter

#

But you don’t know how it works under the hood

echo basalt
quaint mantle
#

they is someone

upper hazel
#

I imagined api in this way: There is a plugin with its implementation (Realization) as well as interfaces to it and abstract classes (API)

echo basalt
#

they is neutral, both singular and plural

ivory sleet
upper hazel
#

hah?

ivory sleet
#

Realization is probably a misleading term though

quaint mantle
#

now imagine api as interface that other app and library can use to access your app/library

#

interface not as data type in a language

upper hazel
#

as I was told before, the remote is an api, and the TV with all the logic is the implementation

lost matrix
# echo basalt he is male, she is female

You dont say. But i was under the impression that there is also a neutral he. For example in the sentence
"Each student should save his questions until the end."
Wouldnt that mean the word 'student' is male while the actual persons gender is unknown?

ivory sleet
ivory sleet
#

Although its not really an api

echo basalt
#

Each student should save their questions until the end

quaint mantle
#

his isnt neutral gender

echo basalt
#

Words in english don't really have a gender

quaint mantle
#

germans when they realize that words can have no gender

lost matrix
#

Ah makes sense. Ugh thats my germanic roots. Here a chair is male, the glass is neutral and a clock is female.

echo basalt
#

chair is female here

#

clock is male

quaint mantle
#

looks at polish

upper hazel
#

so I need to first write the implementation of the plugin and then shove everything into the interfaces?

ivory sleet
#

You don’t have to use interfaces

#

But its strongly encouraged

quaint mantle
upper hazel
echo basalt
#

make interfaces of how you'd like the logic to flow

ivory sleet
#

Its a pretty bad way of explaining something, to circle the definition that is

echo basalt
#

So you don't fall into too much tech debt

#

And once you actually understand how it'll flow, you're free to write impls

lost matrix
#

api = application programming interface
An interface for an application which can be accessed through programming

ivory sleet
#

Try to phrase it w/o using the word interface tho

echo basalt
#

an interface is just a class template let's be honest

lost matrix
#

not in this context

ivory sleet
quaint mantle
#

An API is like a gateway that allows programs to interact with and utilize the functionality of an application. /j

lost matrix
#

This sounds correct

quaint mantle
#

(chatgpt wrote it btw)

upper hazel
ivory sleet
#

Ilmir you can think of a java interface as a type/class/structure that just specifies/promises a functionality/behavior, when we write code against a java interface we don’t know how it will work, just what it does

upper hazel
ivory sleet
#

Myeah

#

I mean to some degree its not wrong to say normal classes are apis as well against their own instance variables and such

#

But that’s a very low level api perspective

upper hazel
ivory sleet
#

Myea

quiet ice
#

Okay I think it's just that the multi-release-plugin I've been using simply does not support module-infos.
PAIN

upper hazel
#

very informative video about this, you can only watch it in Russian https://www.youtube.com/watch?v=qYJX_1uMKb0

ЗГарова пацаны. А тут у нас новый виГосик по интерфейсам ŠæŠ¾Š“ŃŠŠµŃ…Š°Š».

Дсылка на Š³Ń€ŃƒŠæŠæŃƒ: https://vk.com/extremecodetv
Дпонсор: http://deadline.name/

P.S. Если я Š³Š¾Š²Š¾Ń€ŃŽ слишком быстро просто ŠæŠ¾ŃŃ‚Š°Š²ŃŒŃ‚Šµ ŃŠŗŠ¾Ń€Š¾ŃŃ‚ŃŒ Š²Š¾ŃŠæŃ€Š¾ŠøŠ·Š²ŠµŠ“ŠµŠ½ŠøŃ пониже.

ā–¶ Play video
#

use subtrits

quiet ice
#

Or well I mean I could probably hack the system because this is gradle babyyyyy

lost matrix
#

I always watch my vids in russian

upper hazel
#

i am making api because of this problem

#

this is not a complete structure

#

if I open it does not fit in the screen

ivory sleet
#

in larger projects you will usually end up coding layers of api

#

module apis, system apis, and so on

upper hazel
#

really

lost matrix
upper hazel
#

I already felt it myself

remote swallow
#

what would be the better-ish way to store pdc in yaml thats human editable

upper hazel
ivory sleet
sterile token
#

what the best way for doing a chat filtering system? Is better to do it via regex - Thanks

ivory sleet
#

i think its fine if u just compile the regex

echo basalt
#

phonetic filtering

sterile token
#

raight. thanks for both of you

remote swallow
#

i cant understand half of what i wrote for it

#

thats whats currently in it

#

i know its so fuckin bad

upper hazel
#

okay, I think to write my own api ranks, I'm too lazy to advise which realties on 1.20.1šŸ˜€

ivory sleet
#

luckperms

#

bro

remote swallow
#

i cant decide if i go with a spigots serialization or i write an snbt impl which i really dont want to do

ivory sleet
#

isnt it alr implemented in like nbt/snbt

#

with nms

remote swallow
#

yeah

tranquil beacon
#

how can I see from what name sound X has changed from version Y to version Z? For example, the sound NOTE_PLING changed to BLOCK_NOTE_PLING in one version, and then to BLOCK_NOTE_BLOCK_PLING. But for some sounds, the change isn't as obvious to manually assign. What I want to do is to support sounds across multiple versions

remote swallow
#

current V snbt

upper hazel
remote swallow
#

luckperms is great

#

what are you on about

ivory sleet
#

u're trolling if u dont wna use luckperms I would say

upper hazel
#

I need a simple

ivory sleet
#

unless u're doing some very specific stuff

remote swallow
#

i think i have to go with current format to make this do its job

echo basalt
#

luckperms casually being a 120k line menace

remote swallow
ivory sleet
upper hazel
#

bruh ok

#

someone told me that api Luckperms is shit

ivory sleet
#

its not

upper hazel
#

so idk true or not

ivory sleet
#

that someone is trolling you

upper hazel
#

lol

remote swallow
#

can i access a package private class through reflection

ivory sleet
#

yes

#

Class#forName or if u grab it through Object#getClass

tranquil beacon
upper hazel
#

well, I escaped the ranks, but I will have to write the cases myself

tranquil beacon
sterile token
#

lol IJ rip?

upper hazel
#

bruh what the

sterile token
#

yeah idk

#

i cant use the terminal

upper hazel
#

lol maybe viruc check

sterile token
#

oh its git bash terminal

#

will see normal pc terminal, maybe its bug the git one

#

yeah, its git bash terminal bug

quaint mantle
#

why does Bukkit.broadcast(msg, permission) not log in theconsole

fervent robin
#

How do I only shade de.tr7zw.nbtapi and nothing else? With this current pom it shades protocolib and that causes an error

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>shade</id>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <outputDirectory>I:\Test server 1.8\plugins</outputDirectory>
                    <relocations>
                        <relocation>
                            <pattern>de.tr7zw.nbtapi</pattern>
                            <shadedPattern>dev.blackgate.NBTApi</shadedPattern>
                        </relocation>
                    </relocations>
                    <minimizeJar>false</minimizeJar>
                </configuration>
            </plugin>
        </plugins>
    </build>
lilac dagger
#

the default is compile

remote swallow
#

pretty sure that nbt api package is the wrong one too

fervent robin
remote swallow
#

no the pattern

fervent robin
#

oh well it works

#

and i copied from guide

remote swallow
#

you removed the .changeme.

fervent robin
#

well arent you supposed to change it?

remote swallow
#

relocation changes that

fervent robin
#

ic

quaint mantle
#

why does Bukkit.broadcast(msg, permission) not log in theconsole

remote swallow
#

it probably only loops players

unkempt peak
echo basalt
#

Damn I forgot to charge my phone

#

At the gym with 12%

austere cove
#

F

echo basalt
#

Ultra battery saving is my savior rn

kindred sentinel
#

How to create custom block?

austere cove
#

tbf 12% should last you a few hours

#

when just listening to music

quaint mantle
#

Bukkit.broadcast(msg)

#

sends to console

remote swallow
#

am i correct in saying calling a Class.forName on "org.bukkit.craftbukkit.inventory.CraftItemMeta$SerializableMeta" would give me the SerializableMeta class

#

or is there a specific way to get a declared sub class from a Class<?>

ocean hollow
#

what does it mean

echo basalt
#

Corrupted jar

ocean hollow
#

:((

#

thanks

quiet ice
ocean hollow
#

no, I closed the server, made a build, and the plugin does not start

#

idk why

quiet ice
#

Something is closing the classloader then

remote swallow
quiet ice
#

If the plugin tries to update itself that could cause it - otherwise you may try to load classes on a plugin that is already disabled but that is rather unlikely

smoky oak
quiet ice
#

If you don't do Windows that would be the obvious cause

smoky oak
#

im on windows so eh

quiet ice
#

Otherwise it may also be possible that you are not loading additional classes after replacing the jar

sterile token
remote swallow
#

its not legacy

#

its 1.18

sterile token
#

you using nbt api

#

when you have PDCs šŸ¤”

remote swallow
#

nbt api is for something entirely different

sterile token
#

oh right

remote swallow
#

i could use it for pdc, but i use it for base potion effects

sterile token
#

nice, can be used for particles?

remote swallow
#

no clue

sterile token
#

i mean, not sure right?

remote swallow
#

yhea

ocean hollow
#

is that normal?

#

It just worked before, but now it doesn't.

quiet ice
ocean hollow
#

In general, then I have no idea what is wrong, I do everything as before.

#

other plugins work fine, but why this one does not work now is not clear.

quiet ice
#

At worst fork me over that jar and I can take a quick look for any obvious explainations

sullen marlin
quaint mantle
smoky oak
#

Is here fine to ask about vector math?

quiet ice
#

Considering the types of questions I personally ask here, yes.

smoky oak
#

lright, so I have a set of three vectors - pivot, start, end - and i need some way to get the shortest path between those points. The problem is that i dont need a straight line, but the shortest path along a sphere (with the pivot being the center of the sphere and the start/end on it's surface)
Additionally, I have a double representing the distance i want to set the vector points to mark that path, so that it appears continuous when represented with particles.
I know that i can figure out the plane in which that radial path moves can be determined by just taking the cross of the start-pivot and end-pivot vector, but I do not know how to do that rotation or determine the value for it

lilac dagger
#

a*?

smoky oak
#

its not pathfinding

#

its geometry

#

also a* may work but it has massive drawbacks

lilac dagger
#

probably there's a math way to get it done true

echo basalt
#

You drawing arcs or what?

smoky oak
#

yes

echo basalt
#

You want a bezier curve or what

eternal oxide
#

its just cos/sin and rotation

upper hazel
#

wouldn't it be so bad to store player data in 2 files? 1)player-RankName 2)player-blockCount

#

Or is it a database?

smoky oak
quaint mantle
#

Can’t you do just player uuid

upper hazel
#

yes

#

i mean this

#

uuid - name

quaint mantle
#

No

upper hazel
#

uuid - int

echo basalt
#

Yeah bezier works in 3d

quaint mantle
#

Just uuid

#

Just do uuid

#

Idk why you need anything else besides uuid

upper hazel
#

I have 2 different plugins

quaint mantle
#

Do like blahblah.yml or .json depending on how you are managing stuff

quaint mantle
echo basalt
#

Man doesn't know how to communicate between 2 ploogin

upper hazel
#

i want save player: rank / player: blockCount

quaint mantle
#

Can’t you do that in the same file

echo basalt
#

Or a database

quaint mantle
#

Yeah

#

Look at like sqlite or if multi server something like mongodb

upper hazel
#

i do rank api

remote swallow
#

reflection confuses me

quaint mantle
remote swallow
#

just does

upper hazel
#

so i need save and not depend entirely on 2 plugins

echo basalt
#

Reflection is ezpz

quaint mantle
remote swallow
quaint mantle
#

But it sounds like you could use files or database

smoky oak
quaint mantle
smoky oak
#

got anything

#

i dunno

quaint mantle
#

Then do like .createInstance

smoky oak
#

readable

remote swallow
#

i have an instance of it from ItemMeta but i need to access its Craft class to do pdc jank

#

class also doesnt have a setAccessable

quaint mantle
#

Oh

remote swallow
#

did that earlier

echo basalt
remote swallow
#

calling Class.forName on it throws a ClassNotFoundEx

echo basalt
#

this works well enough

#

interpolation might be brokey

quiet ice
#

Heck yeah. Finally fixed my multi-release-jar build.
It's inefficent beyond belief but it's gradle so who cares about performance anyways?

remote swallow
# ivory sleet yes

conclube you lied, i cannot access a package private class through Class.forname

smoky oak
echo basalt
#

yea

#

mine & gpt's

smoky oak
#

credit: Illusion + the hive mind ā„¢ļø

#

:D

lilac dagger
#

you're probably looking at setting the constructor accessible

remote swallow
#

i dont need to use a constructor though

#

i have an instance i just need the class to cast it and access a field

lilac dagger
#

then why not meta.getClass?

remote swallow
#

would what actually give me CraftItemMeta

lilac dagger
#

it'll give you the top

#

but you can go lower if you need to

#

by using getSuperClass

#

or something similar

#

i don't know the exact name

remote swallow
#

getItemMeta().getClass().getSuperclass()

lilac dagger
#

yes

smoky oak
#
java.io.IOException: An established connection was aborted by the software in your host machine
        at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[?:?]
        at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:46) ~[?:?]
        at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:330) ~[?:?]
        at sun.nio.ch.IOUtil.read(IOUtil.java:284) ~[?:?]
        at sun.nio.ch.IOUtil.read(IOUtil.java:259) ~[?:?]
        at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:417) ~[?:?]
        at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:258) ~[netty-buffer-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) ~[netty-buffer-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:357) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.82.Final.jar:4.1.82.Final]
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.82.Final.jar:4.1.82.Final]
        at java.lang.Thread.run(Thread.java:833) ~[?:?]

I swear i didnt do anything

remote swallow
lilac dagger
#

hmm

#

i see this

#

but it will confuse you more

#

i just recommend using class for name

remote swallow
#

doesnt work

#

its inside CraftItemMeta

lilac dagger
#

can you use $?

#

for inner classes?

remote swallow
#

tried it

#

class not found ex

lilac dagger
#

can you tell me the path of the class you're trying?

#

maybe i get a better picture of what you're trying to do

remote swallow
#

version specific org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemMeta$SerializableMeta

#

i need to access the persistentDataContainer field in craft item meta to use it to serialize and i need to access the subclass to deserialize

lilac dagger
#

it's CraftMetaItem

remote swallow
#

im fucking dumb

lilac dagger
#

well, let's hope this is it

remote swallow
#

yeah

#

im hoping

remote swallow
#

turns out i was doing a dumb

ivory sleet
#

oh

remote swallow
#

i had ItemMeta not MetaItem

ivory sleet
#

ah

#

well i would have trusted u if u told me i lied since i havent touched reflection for ages

slender elbow
#

i can tell you you lied to me if that makes you feel any better

ivory sleet
#

i feel better now, thanks emily :3

slender elbow
smoky oak
#

seemed to be connected to players leaving the server

quaint mantle
#

When transferring servers anyone know what causes the loading terrain screen to appear

remote swallow
#

can someone use there eyes for me, is my spelling right

quaint mantle
#

What’s your IJ theme

#

Shit looks nice

remote swallow
#

dark purple

remote swallow
#

okay, frook then

#

i cant access the class while its public

#

what the frick

slender elbow
#

i mean in reality you don't need to separate the getServerVersion

#

just
Bukkit.getServer().getClass().getPackageName()
then concat the rest

remote swallow
#

oh true

#

ill do that once ive got it working to start with

#

i dont get how it cant find it

#

the spelling is right

dry hazel
#

peristence

remote swallow
#

you said it looked fine

#

smh

dry hazel
#

it did before

lilac dagger
#

^

remote swallow
#

loving the fact my jar refuses to update now

nocturne root
#

Anyone know how to send fake chunk packets to players using ProtocolLib, with 1.20.1?

chrome beacon
#

Chunk packets are pain

nocturne root
#

or without protocollib

lilac dagger
#

you probably wanna get a chunk while it's being sent and edit it

#

but i never worked with them so i can't help you further

kindred sentinel
#

how to track custom block in chunk?

lilac dagger
#

map or persistent storage

#

do blocks have pdc?

nocturne root
#

i need to send the packet, not edit it

remote swallow
#

what in the frook

lilac dagger
#

then same thing, only you need to send the whole thing yourself

remote swallow
#

the jar on the server has perisistence in the decompile but its still peristence

#

wtf

lilac dagger
#

but i'm sure there are other things to account for

#

did you switch versions in your modules?

#

i had the same issue myself once

remote swallow
#

yeah

#

its shaded in the plugin

lilac dagger
#

i forgot to switch it in 1 place

echo basalt
#

is pain

remote swallow
#

the shaded thing uses persistence, but the end code is still trying peris

nocturne root
remote swallow
slender elbow
#

xd

remote swallow
#

wait

#

am stupid

#

its a different file

#

helps to use your eyes

lilac dagger
#

you need sleep that's for sure

remote swallow
#

yeah

#

yeah i do

#

it doesnt error but it doesnt work at the same time

nocturne root
# nocturne root i did but protocollib is broken
// ....
chunkPacket.getLevelChunkData().write(0, WrappedLevelChunkData.ChunkData.fromValues(nbt, buffer, new ArrayList<>()));
protocolManager.sendServerPacket(player, chunkPacket);

this should send an empty chunk, the IDE shows no errors, and it also compiles.
but when i run the function i get:

java.lang.IllegalArgumentException: handle (com.comphenix.protocol.wrappers.WrappedLevelChunkData$ChunkData[handle=net.minecraft.network.protocol.game.ClientboundLevelChunkPacketData@52daa9b3]) is not a class net.minecraft.network.protocol.game.ClientboundLevelChunkPacketData, but class com.comphenix.protocol.wrappers.WrappedLevelChunkData$ChunkData
    at com.comphenix.protocol.wrappers.AbstractWrapper.setHandle(AbstractWrapper.java:31) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.wrappers.WrappedLevelChunkData$ChunkData.<init>(WrappedLevelChunkData.java:62) ~[ProtocolLib.jar:?]
    at com.comphenix.protocol.wrappers.WrappedLevelChunkData$ChunkData.fromValues(WrappedLevelChunkData.java:142) ~[ProtocolLib.jar:?]
    at "chunkPacket.getLevelChunkData().write(0, WrappedLevelChunkData.ChunkData."
remote swallow
kindred sentinel
#

How to save that certain block in chunk is custom block, using pdc?

lilac dagger
#

i don't know exactly how protocollib works

young knoll
undone axleBOT
young knoll
#

So the screen appears

kindred sentinel
lilac dagger
#

but chunks hold their data in blocks

remote swallow
#

use custom block data

young knoll
#

No

#

Chunks hold their data in themselves

#

Block pdc makes use of the chunk to attach data to a block

kindred sentinel
remote swallow
#

why

quaint mantle
remote swallow
#

i would much rather use a premade lib that has probably accounted for edge cases rather than making my own impl that misses 24 edge cases and doesnt work properly

kindred sentinel
#

hmm because i'm doing every task like "workout for the brain" and i would like to do everything by myself...

remote swallow
#

check the internals of it then

quaint mantle
#

I’m not sure if intercepting the world change packet and changing the id would cause weird client side stufff

kindred sentinel
#

oh ok thx!

kindred sentinel
young knoll
quaint mantle
#

And it’s not even bungee’s doing

#

I’m gonna dig through spigot and client code when I’m home

young knoll
#

I mean the alternative is changing everything while the player can still see

#

Which would look… interesting

lilac dagger
# young knoll No

wait tho, the chunk holds the blocks and the block holds the block data, or am i wrong?

lilac dagger
#

i haven't looked into what chunks do

young knoll
#

The chunk holds the pdc directly

#

Blocks do not have pdc

lilac dagger
#

ohh

quaint mantle
#

Or maybe that would be a mess with player list and stuff

lilac dagger
#

it made sense to me for blocks to manage their own data

young knoll
#

Only tile entities hold extra data

#

Regular blocks just end up as a number

lilac dagger
#

i see

young knoll
#

?services

undone axleBOT
lilac dagger
#

oh, it makes sense now, like the flyweight pattern, where you don't really wanna create a huge structure

worldly ingot
#

What you know as block data is just a whole new block in the pallet

lilac dagger
#

to save on space

worldly ingot
#

chest[facing=north] and chest[facing=south] are two different blocks

lilac dagger
#

so the data is stored in chunk

worldly ingot
#

The chunk stores which blocks are in it, as well as a bit of extra chunk-specific data

#

It also stores the data of tile entities as NBT separately from the blocks in the chunk

#

Bukkit's Chunk PDC just adds an extra entry into the NBT to store any arbitrary plugin data and Alex's block PDC library takes advantage of that to store an x, y, and z coordinate of a block alongside the associated data

lilac dagger
#

i see

weak meteor
#

Im trying to do GET Request to MojangAPI to verify if player has a cracked account or not.

If the player payed minecraft returns the ID and the Name, but if not returns this:

{
    "path": "/users/profiles/minecraft/DrSimi12381",
    "errorMessage": "Couldn't find any profile with name DrSimi12381"
}```

My problem is, when i try to read the response from API, it goes ok when is premium acc but when its not crashes with FileNotFoundException and the link, now my problem is i want to handle this, what can i do?
#

dont want to crash,

young knoll
#

I mean you could catch the exception

weak meteor
#

ig yes

#

but its not what i should do, right?

hazy parrot
#

Why would request to rest endpoint throw filenotfound lol

weak meteor
#

well code is 404 when theres nothing

#

but actually responses smth

hazy parrot
#

BTW what if someone joins with online nickname

#

Your system wouldn't work then

sterile token
weak meteor
#

when you try to join

#

even if online mode is false

#

will kick you out with

#

"Restart your session"

#

or smth like that

#

lemme try now i got the doubt

hazy parrot
#

fun fact, you can differate online and offline accounts by uuid (atleast u could before, not sure if something changed in recent versions)

#

but just dont support offline šŸ˜›

weak meteor
#

WELL ig

#

offline is dead

#

cuz now u cant play multiplayer

young knoll
#

I

#

Don’t think that’s the case

weak meteor
#

i thought it was

wet breach
#

the header will give an appropriate response

eternal oxide
#

enable follow redirects in your request

weak meteor
zinc iris
#

so i tried using BukkitRunnable but you arent allowed to, so i turned it to just a regular Runnable but how do you stop it / cancel it?

remote swallow
#

You can use bukkit runnable just not how you were

zinc iris
#

ah how do you use it now

remote swallow
#

new BukkitRunnable(){}.runTaskX(plugin, etc)

zinc iris
#

ah ok

remote swallow
#

I dont remember if anonymous classes have start brackets

zinc iris
#

ah i see it now

#

make the runnable like before with the code etc then do .runtask at end

#

ty

weak meteor
#

just to know

hazy parrot
#

that is lambda, not anonymous class

remote swallow
#

^^

wet breach
weak meteor
#

this is cause it took too much time?

remote swallow
lost matrix
weak meteor
#

should be PostLogin?

wet breach
#

you can block t he prelogin for like up to a minute

#

login at most like 20 seconds

#

this has to do with that prelogin isn't the mc protocol just yet, and is the TCP timeout that applies

lost matrix
#

Are we on bungeecord?

wet breach
#

once you hit the login portion you are now in the MC protocol and it dictates like 20 seconds max with no response

weak meteor
wet breach
#

however generally you shouldn't block if you can help it and instead passively load the data you need

#

that is maybe put them in a holding area or something

weak meteor
#

cause, what i want to do in Bungee

#

is cache the player

#

verify with MojangAPI

#

and with the pl db

#

and then let them into the fallback server

wet breach
#

not sure why you need to do that if you are in online mode

#

if you are trying to do this with offline you are going to have issues with chat and some other things in trying combine online and offline

#

also, if the player is online you are going to have to track the UUID and change accordingly on the player

#

but you shouldn't be supporting offline mode at all

#

the only advantage I can there would be to using such a mixed system is if you have such a large player base that you need to allow players on and wait to be verified because of the API limit from Mojang

#

but you would need to be a network near as large as hypixel for needing something like that

vernal marsh
#

how do I run methods from a another class in the main class, im used to C# and thought this would work.

sullen marlin
#

Why doesn't that work?

#

It's bad but should be static

vernal marsh
#

I don't know why it doesn't work, I can paste the custom items class

drowsy helm
#

is it printing out "DONG"?

#

or just doing nothing at all

vernal marsh
#

it's not printing it

#

plugin is on the server

quaint mantle
#

please

#

its not capitlized

#

it would be customitems.enableDylanItems();

sharp bough
vernal marsh
#

that prints

sharp bough
#

make sure its the latest version and that you didnt add an old version to the server

#

(in my case when i compile and the file already exists it doesnt override the old one)

vernal marsh
#

could this big error be the problem

hasty prawn
#

yes

vernal marsh
hazy parrot
sharp bough
#

remove extends JavaPlugin

hazy parrot
sharp bough
#

in the customitems class

hasty prawn
#

Yeah he's right

#

It just needs to be removed from that class

#

onEnable isn't even in the class he sent

vernal marsh
#

thanks

#

IT WORKS

bitter rune
#

I have zero experience with Java and plugins and so far I've made a weather plugin (with sleet, and tornados), a block logging plugin, a thirst and climate plugin, a rpg plugin, it was all done with chatgpt he also can scan Minecraft 1.20.1 paper api but you need to talk in circles until you trick him a little bit, then he has access to the Internet. You need to be detailed as long as you understand what you want and how to get there (example to walk you put one leg in front of the other) you have to explain in that level of detail in English, and it translates it to Java

bitter rune
young knoll
#

The point of it is to do things on disable?

#

Should be fairly obvious

bitter rune
#

But the server says it's illegal to do because the server is already off, it literally denies anything put into the method I've tried

young knoll
#

Idk what you’ve tried but most stuff works fine

#

Can’t use schedulers tho

bitter rune
#

Stuff like saving files is what I've mainly tried

hasty prawn
#

I've never had an issue with it, as long as the server closes normally onDisable should be part of the normal shutdown cycle.

young knoll
#

Yeah saving files should be fine

wet breach
bitter rune
#

Pretty sure one thing I have is a catch exceptions and it throws the errors

burnt sand
#

Hi

#

How to get a player from a uuid

drowsy helm
#

Bukkit.getPlayer(uuid)

fickle rivet
#

Does anyone know if the spigot 1.8.8 is source code? If yes, if I modify it and try to use it, will the members enter my game normally as if it were the default spigot?

opal juniper
#

you can edit the default spigot 1.8.8 code to change behaviour yes

fickle rivet
opal juniper
#

yes, the server is what everyone is connected to. i’m not sure what you are talking about is possible but idrk

fickle rivet
#

Thank you, I think concrete answers would have to come from md_5

pseudo hazel
#

spigot is just whatever runs on your server

#

you can change code all you want but the client needs to be able to still interact with the server correctly

upper hazel
#

Who knows the player has his own nickname and the visual display of his nickname can be different?

#

or not

pseudo hazel
#

what do you use a nickname for if not to display it

upper hazel
#

I need to change the rank of a player without affecting his nickname

#

change the visual but so that when getting player.getName - I didn't get the rank name as well

smoky anchor
#

team and prefix

upper hazel
#

so I wanted to know is it possible or is his nickname and the visual part of the nickname the same?

hybrid spoke
pseudo hazel
#

right, I guess you just mean the username by nickname here

upper hazel
#

tab separately need to be changed?

#

I don't see a prefix in tab lol

hybrid turret
#
  public boolean onCommand(@NotNull CommandSender sender, @NotNull Command cmd, @NotNull String label, String[] args) {
    if (!sender.hasPermission("serversystem.coords")) {
      sender.sendMessage(Errors.getPermissionError());
      return true;
    }
    if (args.length > 1) {
      sender.sendMessage(Errors.getSyntaxError(label + " [Player]"));
      return true;
    }
    Player target = Bukkit.getPlayer(args[0]);
    if (target == null) {
      sender.sendMessage(Errors.getOfflineError());
      return true;
    }
    if (!(sender instanceof Player player)) {
      if (args.length == 0) {
        sender.sendMessage(Errors.getConsolePlayerError(label + " [Player]"));
        return true;
      }
      handleBroadcastForTarget(sender, target);
      return true;
    }
    if (args.length == 0) {
      Bukkit.broadcastMessage(formatColors(ServerSystem.getPluginPrefix() + "&b" + player.getName() + "'s &7coordinates are: &f"
          + "&6X: &f" + (int) player.getLocation().getX() + ", "
          + "&6Y: &f" + (int) player.getLocation().getY() + ", "
          + "&6Z: &f" + (int) player.getLocation().getZ()
      ));
      return true;
    }
    handleBroadcastForTarget(player, target);
    target.sendMessage(formatColors(ServerSystem.getPluginPrefix() + "Your position has been &4broadcasted"
        + (!GlobalHashSetUtils.getVanishedSet().contains(player) ? " &7by &b" + player.getName() : "")
        + "&7."));
    return true;
  }

  private void handleBroadcastForTarget(CommandSender sender, Player target) {
    Bukkit.broadcastMessage(formatColors(ServerSystem.getPluginPrefix() + "&b" + target.getName() + "'s &7coordinates are: &f"
        + "&6X: &f" + (int) target.getLocation().getX() + ", "
        + "&6Y: &f" + (int) target.getLocation().getY() + ", "
        + "&6Z: &f" + (int) target.getLocation().getZ()
    ));
    target.sendMessage(ServerSystem.getPluginPrefix() + "Your position has been &4broadcasted &7by an &4administrator&7.");
  }
#

Can someone tell my why in the !(sender instanceofPlayer)-block the args.length checks say that they're always false?

#

I'm currently in the proccess of refactoring everything to early returns and sometimes it's harder than expected

#

I'm confused bc I check for args.length > 1. But if that applies it's supposed to return so for the rest of the code args.length should only be able to be <= 1, right???

hybrid spoke
#

so it cant be 0

hybrid turret
#

oh, right

hybrid spoke
#

and if it is it will error

hybrid turret
#

Damn okay, different structure it is then. Thank you.

echo basalt
#

I might be hella late

vapid anvil
#

yeah I figured it out

kindred sentinel
#

I have problems with changing relocation, did i do this right?

drowsy helm
#

What problems?

kindred sentinel
#

i'm not sure that i did this right because idk what should happen after changing relocation

eternal night
#

your output jar should have the shaded library relocated into your package

kindred sentinel
#

I'm not sure that this is working

#

i relocated it to org. ... but it's in com. ...

smoky anchor
#

try newer version of the plugin ?

kindred sentinel
chrome beacon
#

Oh wait you're missing a relocation tag

kindred sentinel
chrome beacon
#

Relocation

kindred sentinel
#

where should i put it.. and what is it..

#

sorry this is my first time using it

chrome beacon
#

Surround the pattern and shadedPattern with it

kindred sentinel
chrome beacon
#

?tas

undone axleBOT
kindred sentinel
#

Nothing changed..

chrome beacon
kindred sentinel
chrome beacon
#

Artifact???

#

How are you building the jar

kindred sentinel
chrome beacon
#

So you're not even using maven šŸ¤¦ā€ā™‚ļø

kindred sentinel
#

._.

chrome beacon
#

See the maven tab on the right side of the screen

#

Open it and run package

kindred sentinel
#

this one?

chrome beacon
#

No

#

Close project settings

kindred sentinel
#

i closed

chrome beacon
#

Now right side

kindred sentinel
#

oh yeah i see

#

now does it work?

chrome beacon
#

If you use the jar in the target folder it should work

kindred sentinel
chrome beacon
#

You don't

kindred sentinel
#

do you mean that i can't do it?

chrome beacon
#

If you’re using maven for your Spigot plugins (which you should do), it’s easy to make maven automatically save your plugin’s .jar in your plugins folder. There’s two ways of doing this: 1. The lazy way (not recommended) If you only work alone on one computer, you can just directly declare the output location in...

Many people who are using the maven-shade-plugin commonly set to false for reasons beyond my grasp. This is generally a bad idea, as it can lead to problems if you’re writing a library, and has absolutely no advantages. Here’s a rule of thumbs: If your project shades dependencies, it should create a dependency-reduced-pom.xml. The...

chrome beacon
#

Artifacts isn't maven

#

And maven isn't artifacts

#

They are two different build systems

kindred sentinel
#

oh

drowsy helm
#

Maven is much better so stick with it

chrome beacon
#

IJ artifacts is Intellij only and requires the IDE

#

Maven can work is most IDEs or without one

kindred sentinel
#

oooh

#

ok i understand, thanks!

#

I just started working using tutorials, and did not go into jar file generation much... But now i got it, thanks

abstract spindle
#

If I change a Title for a Inventory with a ClientboundOpenScreenPacket the contents of the Inventory are not rendered only after a InvenoryClickEvent - What must I change in order for it to render the Items

    public void updateView(MyObject myObject, int state, boolean isAsync) {
         for (HumanEntity viewer : myObject.getInventory().getViewers()) {
            try {
                Player player = (Player) viewer;
                CraftPlayer craftPlayer = (CraftPlayer) player;
                AbstractContainerMenu container = craftPlayer.getHandle().containerMenu;

                //TODO: Content is not rendered
                ClientboundOpenScreenPacket clientboundOpenScreenPacket = new ClientboundOpenScreenPacket(container.containerId, MenuType.GENERIC_3x3, Component.nullToEmpty("§6§l State: " + state));
                craftPlayer.getHandle().connection.send(clientboundOpenScreenPacket);
            } catch (Exception e) {
                DA.log.logException(e, isAsync);
            }
        }
    }
young knoll
#

Why not use the api method

smoky anchor
#

Are you using older version of spigot ?
There is an API method for this.

young knoll
#

Assuming you are on a modern version

vernal marsh
#

would it be possible to limit a crossbow to a certain custom ammo type?

#

like if i made special arrows you have to buy from a villager, then certain crossbows can only use that ammo?

young knoll
#

Idk if there is some kind of event for crossbow loading

#

You can cancel the loading using the player interact event tho

vernal marsh
#

i'll check it out

abstract spindle
young knoll
#

InventoryView#setTitle iirc

abstract spindle
spare hazel
#

Do you guys think 10MB of ram would be enough for a mysql database? There isnt gonna be a lot of querying and the data is simple (<2KB).

And also, can mysql store uuids?

spare hazel
#

Anyone there?

analog igloo
#

hi, i want to download spigot to create a pllugin but i dont find any downlaod button for the API file
help me plzzz šŸ™

eternal oxide
#

use maven and you don;t need the api

#

?maven

undone axleBOT
spare hazel
analog igloo
spare hazel
#

Plugin developmnet

analog igloo
#

ah okay

eternal oxide
#

My advice is the opposite. If you are a beginner DONT use the MC plugin. Learn how to create a plugin from scratch

analog igloo
#

yeah i follow a tuto and i create it in the same time

#

so i need spigo

eternal oxide
#

The MC plugin for InteliJ is ment to remove the mundane tasks in creating plugins once you already know how to do it

analog igloo
#

ah ok

#

but i dont understand where can i find the aAPI file

spare hazel
#

You dont need that

eternal oxide
#

?maven

undone axleBOT
analog igloo
#

BUT WHATS MAVEN

eternal oxide
#

read a tutorial on creating a spigot plugin using maven

#

maven is a dependency management system

sterile token
#

Why all none native english devs, code scoreboards and tablists updsting with shity threads. Instead of using spigot schedule taskings

analog igloo
eternal oxide
analog igloo
#

visual studio code

opal carbon
#

what

eternal oxide
#

oh my

spare hazel
#

Wtf

analog igloo
#

what

#

there is a probleme ?

spare hazel
#

Visual studio code is more like a text editor to me

eternal oxide
#

Good luck with that

opal carbon
#

download community edition

#

scroll down past the one that costs money and download the free one

analog igloo
spare hazel
#

Use eclipse or intellij idea
They are more optimized for java development

sterile token
# opal carbon all none

That all spanish speakers devs all code using what i mention using threads rather bukkit scheduler

spare hazel
# analog igloo they are ugly

Eclipse is ugly but intellij idea is great

And there are a lot of customization features so you can make them look the way you want

opal carbon
#

ig spanish devs are silly sometimes

#

summer123 ong

analog igloo
#

where can i send some screens ?

opal carbon
#

wha

eternal oxide
#

?img

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 can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org

opal carbon
#

fym screens

eternal oxide
#

!verify

undone axleBOT
#

Usage: !verify <forums username>

opal carbon
#

ohhh

analog igloo
#

!verify

undone axleBOT
#

Usage: !verify <forums username>

analog igloo
#

!verify Bavouille

undone axleBOT
sterile token
# opal carbon why tf?

I font know, they just use threads with this:

new Thread(() -> {
while (plugin.isEnabled()) {
getBoards().forEach(Board::update);
Thread.sleep(300L);
}
}).start();```
#

All spanish dev use that weird thing for updating

glad prawn
#

They can use TimerTask tho

#

Why sleep

sterile token
glad prawn
#

Ik bit

#

but

sterile token
#

Since MC Is single thread the Sever frozes until the update Is done

#

šŸ’€

glad prawn
#

šŸ’€

analog igloo
#

!verify Bavouille

undone axleBOT
#

A private message has been sent to your SpigotMC.org account for verification!

sterile token
eternal oxide
#

he's not

analog igloo
#

how can i do that ?

sterile token
analog igloo
#

yeah

#

but how can i do that witthout send the command ?

sterile token
#

Oh you finally do it

eternal oxide
#

now you can paste SS in here

analog igloo
#

what must i choose ? all the otions are paying

smoky oak
analog igloo
#

where is it ?

smoky oak
#

scroll down lol

spare hazel
#

Do you guys think 10MB of ram would be enough for a mysql database? There isnt gonna be a lot of querying and the data is simple (<2KB).

And also, can mysql store uuids?

analog igloo
spare hazel
#

Yes

analog igloo
#

ah ok i hadnt understand befor

spare hazel
smoky oak
#

u can store uuid as string

analog igloo
#

yes i think

smoky oak
#

no idea about the ram requirement

analog igloo
#

i have 12 and i use mysql

sterile token
analog igloo
#

i think its sufficient

smoky oak
#

i really doubt u have 12 MB ram

#

r u on a raspi or smth

sterile token
#

Must he trolling

analog igloo
#

why its impossible ?

sterile token
#

Not even Raspberry, they hace 1gb and up

analog igloo
#

sorry

sterile token
#

GB

analog igloo
#

its was a mystake haha

sterile token
#

Lmaoo

#

Hhaahah

echo basalt
#

I've seen keyboards with more ram

sterile token
#

12gb != 12mb

hybrid spoke
#

bro got some 1950 nasa computers

analog igloo
#

i didnt know that it exists some pc which only have 12 mo

analog igloo
sterile token
#

He Is trolling bruhh

#

Not even Raspberry has 12mb, they old one has 1gb of RMA

smoky oak
sterile token
#

I have saved and till keep my first father pendrive which has 1mb

spare hazel
# hybrid spoke mb?

Yeah
I hardly managed to fit a bungee server, skyblock server with 45 plugins, redirecting express.js server, player stats discord webhook and win server 2012 in 4GB of ram and i want to migrate my PDC storage type skills plugin to MySQL so i can create an api for my server so i can have a discord bot so players can view their skills without joining the server

young knoll
#

The change in storage over the past several decades is crazy