#help-development
1 messages ยท Page 181 of 1
kek
true
starting up my test server
if im using spigot maven, for the class body do i have to add extends JavaPlugin, because when i try to do that it gives me an error
nah
i had 2 eat
@fluid river
doesnt work
spams this
@last temple
@fresh timber
pls
@everyone
I wasnt keepin up with conversation hold on
bascialyl they ffixed it bujt now i havfe a new erorrr
ok im lookin
my new soruce kcodehttps://paste.md-5.net/sataqeporo.java
btw im kinda new too so I might not be able to solve everything, I started like a month ago
im lookin tho
yea idk
I cant read errors lol
I mean
full error
https://paste.md-5.net/odefapazey.cs
I dont have enough experience with a lot of them to know what it means
how can i fix
shud i give u my source code/
then wut
im doin it anyway
yea its the operation
how fix
bruh
k
maybe cause reader is greyed out
theres a docs on it
lemme give it to u
btw
i tried that
?
o
im cofused
which try functin
k
errooor at format
this is wut i have now
v
where sud i put it
ok shud i try it ๐ค
show what once again
public void chunkLoad(ChunkLoadEvent e) {
if (e.isNewChunk()) {
try (EditSession editSession = WorldEdit.getInstance().newEditSession(BukkitAdapter.adapt(e.getWorld()))) {
Operation operation = new ClipboardHolder(clipboard)
.createPaste(editSession)
.to(BlockVector3.at(e.getChunk().getX() * 16, 40 ,e.getChunk().getZ() * 16))
.build();
Operations.complete(operation);
}
}
}```
public void onEnable() {
// Plugin startup logic
System.out.println("Backrooms Plugin enabled");
ClipboardFormat format = ClipboardFormats.findByFile(file);
getServer().getPluginManager().registerEvents(this, this);
try (ClipboardReader reader = format.getReader(new FileInputStream(file))) {
// Stuff here
} catch (FileNotFoundException ex) {
Bukkit.getLogger().severe("Schematic file doesn't exist!");
ex.printStackTrace();
} catch (IOException ex) {
Bukkit.getLogger().severe("Error reading schematic file!");
ex.printStackTrace();
}
}
File file = new File("Backrooms.schem");
Clipboard clipboard;```
public void onEnable() {
// Plugin startup logic
System.out.println("Backrooms Plugin enabled");
ClipboardFormat format = ClipboardFormats.findByFile(file);
getServer().getPluginManager().registerEvents(this, this);
try (ClipboardReader reader = format.getReader(new FileInputStream(file))) {
// Stuff here
} catch (FileNotFoundException ex) {
Bukkit.getLogger().severe("Schematic file doesn't exist!");
ex.printStackTrace();
} catch (IOException ex) {
Bukkit.getLogger().severe("Error reading schematic file!");
ex.printStackTrace();
}
}
File file = new File("Backrooms.schem");
Clipboard clipboard;
clipboard = reader.read();```
theres an erroor tho
kinda stupid ๐
ooooooooooo
yea
im confirmed idito
i thought u meant lke the wordledit command
//br
and shit
ong im not
๐
ok
i built the plugin
testing time
why
@last temple
uhm
it crashed
kek
how 2 optimze
im not good at java
๐
yea playerloaded
@last temple
how to make the world a flat world
pls telll
where should I go to report that the javadocs are wrong?
?support prob
temporary support?
Whats wrong with them
in potion effect it says its in ticks but its really in milliseconds
is there a way to store a Consumer<> in PDC?
Doubt that
even if, potioneffect is not the one to blame
Oh it might not be milliseconds actually
Either way when using it 100 is worth 1 second
Thatโs what happened when I used it
100 would be 5 seconds
can someone help me with a problem? so basically i am using spigot maven for a 1.19 project and my main class looks like this:
`package scribble2;
public class Main extends JavaPlugin{
public void onEnable (){
}
}
`
For some reason it gives me an error on the JavaPlugin
part
it says it cannot be resolved to a type
Don't name your main class main btw
ok
Did you import javaplugin?
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>me.scribble2</groupId> <artifactId>scribble2</artifactId>
` <version>1</version>
<name>scribble2</name>
<description>A very scribbly project</description>
<repositories>
<!-- This adds the Spigot Maven repository to the build -->
<repository>
<id>spigot-repo</id>
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
</repository>
</repositories>
<dependencies>
<!--This adds the Spigot API artifact to the build -->
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.19.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project> `
my xml file looks like this
I'm telling you what to do
oh ok
Hover on it and IDE should help you importing
You need to import the JavaPlugin class in your Main class
Hey guys I have a question. You know that Minecraft have a World NBT where you can add data to the World and then get it etc. And my question is can we get this World NBT and edit it? Like in Minecraft modding this World NBT can be useful for saving blocks and many other things
something like a PDC for a world?
it does inherit from PersistentDataHolder, so it has that
yeah
yeah, since World is a pdh, you can just use https://hub.spigotmc.org/javadocs/spigot/org/bukkit/persistence/PersistentDataHolder.html#getPersistentDataContainer()
otherwise chunks also have pdcs
which are probably just the worlds pdc with their own section
whats the saying? even a seeing chicken misses seeds?
Thanks guys for showing me
that makes 5โฌ
5? thats cheap af
i am cheap
weak
dont I know it
5โฌ for just showing a method that exists
it mainly costs sanity and social life time usually
I destroy many things
destroy yourself please
been doing that since day one
imagine this existed everytime you use a method in Spigot and it charge you some money
good
now its your turn on the destruction cipher
a god cant be destroyed
let me show you
a god without following is nothing but a person
and people can be destroyed
so as long as i believe in myself i will stay undestroyed
whats the dnd rule for when someone becomes a god?
dont worry, the world will break that self belief at some point
but you are gladly invited to join the men religion
radical feminists would like to have a word with you
๐ฆ
so i will have to break the world first
hold on, is this your super villain origin story?
every non-member of the men religion is our enemy
sounds kinda racist
its not racist if you arent racist
simple as that
its not racist, its classist since not only men can join, right?
request to rename religion to "man religion"
but we are many, so men ๐ค
good point, man-y
I hate the fact that theres no #offtopic channel
not anymore at least. there once was one
goddamnit, who messed it up
who needs an offtopic channel if we have #help-development
true
Jebaฤ disa
Well I managed to create the backrooms
But
It needs serious optimization s
It crashes my 4 gb test server
Every 5 mins
๐
No
Y
I mean, you did not provide anything concrete to help you with
Should I give you my source code??
Eh, I mean what is your concrete issue
Lag
That usually is somewhat hard to find. Have you run a spark profile ?
To figure out what is taking up most of your tick
It was local hosted
But
it will be fairly easy to find if it's crashing it every 5 minutes
I did not have a spark profuler
Well yea if it crashes I'd presume you have an error
Well heres what I'm attempting to do with my plugin
Oh no the backrooms still generate
No errors
Other than
wtf are the backrooms xD
its a memory leak#
Ran out memory
you are creating sometrhign over and over
Yea
I'm pasting schematics in every loaded chunk..
then you are doing it too fast
Probably didn't specify how fast to paste them
easiest would be to just have the jvm give you the heap dump
how would fast printing the schematic lead to an OOM
wouldn't that just end up in an angry watchdog
pasting a schematic can force load adjacent chunks
Well how do I delay the scemhatic
Still, should not eat memory
Pastong thing
There has to be somethign else too
Welll ill give h my source code
@eternal oxide
https://paste.md-5.net/regeluromi.java
@eternal night
it can also lead to OOM if objects are not being freed up to give new objects room
other then the other chunks loading
I mean, then you'd have the GC run aggressively
Eh
The only obvious thing I see is, you should register your event listener after you have loaded your schematic
Alr
declaration: package: org.bukkit.generator, class: BlockPopulator
use this if its suppose to be something for new chunks all the time
Well wbu this: paste schematics as far as only the player can see
it will be more efficient then waiting on the chunk to generate first before adding in your change
K
this will cause the chunk to generate with your changes already added in, then it shouldn't matter if adjacent chunks load
Wait I'm confused on how to use it however
It says you need a custom chunk generator
Which i don't have
it says you can use it with a custom chunk generator
A BlockPopulator can be used in combination with a custom ChunkGenerator by returning it in the method ChunkGenerator.getDefaultPopulators(World) or by adding it manually to the worlds populator list returned by World.getPopulators().
When adding a BlockPopulator manually to a world it is recommended to do so during the WorldInitEvent.
One last question
Before I tyr to implement it
Where do I put it ๐๐
Anyway ty doe
@wet breach does blockpopulator also apply to 1.19 api?
Hi. I'm trying to add an NBT tag to an item to store a value. I'm following "The complete guide to itemstack nbttags and attributes" at the moment. It requires CraftBukkit as a dependency. I am just wondering if there is a simpler way someone knows that I can do this with? I've discovered setLocalizedName but not sure if it would be correct to use it
what exactly is the purpose of using NMS to set NBT tags?
depending on your purpose you probably could just use the API ๐
I want to store a value that I can use for further work in my plugin, but that is not visible to players
you can easily use the metadata api for that then
also players have persistent data as well
so you could even use PDC API
Same thing I'd use for setting item lore and such, I assume? How do I set data there that is not visible to player but useable in code?
declaration: package: org.bukkit.persistence, interface: PersistentDataHolder
Yeah like they're their own database for things like inventory etc stored in playerdata files?
kind of
but it is something that will let you do what you are wanting
and it doesn't require NMS, just all with the api ๐
Hmm... That's good to know for future plans, but for now I just need to store data in the item itself
What does the worldinit event docs mean by this
To get every world it is recommended to add following to the plugin.yml
items have pdc too
as you can see above, items are part of the subinterface of that api
I'll have to do some reading, I'm still a bit confused as to how I should use this.
?pdc
Thank you, Lynx
I just linked the thing, thank frostalf ๐
I was about to, but I will now, thank you @wet breach
confusing wording, regardless. Thank you both, this will help
how can i have an event of falling blocks placing themselves?
declaration: package: org.bukkit.event.entity, class: EntityChangeBlockEvent
u sure?
NamespacedKey key = new NamespacedKey(pluginInstance, "our-custom-key");
ItemMeta itemMeta = itemStack.getItemMeta();
itemMeta.getPersistentDataContainer().set(key, PersistentDataType.DOUBLE, Math.PI);
itemStack.setItemMeta(itemMeta);```
So that "pluginInstance" it's looking for there, am I right to assume I need to give it my main class?
yes
Does anyone know how to update a player's command tree? I was successfully able to register/unregister commands at runtime, I just need to figure out how to update the client's command tree
Is there any forum on spigot/bukkit websites about this?
Didn't even know players had a command tree
The server sends a list of all commands and arguments to the client upon joining, the client then stores this and uses it for auto completion or something
There is a client side command tree though
I am sure about that
I think you can just send the packet
Couldn't you just resend that packet ^
Idk why but I thought you were doing this for your fabric integration lol
Give up on that yet xD
Nope
Aye maybe in a year or 2
My work style right here
Last "burst" I got plugins loading with dependencies and stuff
Glad to see I'm not the only person with that arguably not very good work style lol
There's a Player#updateCommands method, but as of what version, I'm not sure. https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Player.html#updateCommands()
declaration: package: org.bukkit.entity, interface: Player
Also not sure if that does exactly what you're looking for, manually modifying/sending the packet may be better if you need strict control over the result for any reason.
How can i raycast for multiple entities? I looked into World.rayCastEntities but the RaycastResult only supports one entity
Invalid key. Must be [a-z0-9/._-]: Does this mean the key must be lowercase?
yes
Thanks! I do not need full control so this is perfectly fine
for loop
Please read the whole statement
Perhaps you could use a predicate as a crude stand-in for a consumer, just add it to a collection and return false in your predicate for all entities so that it continues until it's exhausted all entities that could possibly be a raytrace result.
What its the best way for coding, coding everything and testing or coding and testing each new feature?
actually the predicate might only apply to the first raytrace result anyway
thonk
So there isn't any method for doing it? Like am I the only one that needs multiple entity raycast? lol
Loop thru the collection and predicate each index
i think i will make my own raycast system with entities
that's not even really applicable to what either of us are saying, lol
No need to reinventa the wheel when it was al ready invented
yeah, i'd guess people who really care about it have probably come up with their own solutions
Hi maow, how are you?
but there isn't any method to do what i need
what should i do?
What do you need to doP
I didnt understand raytraxing thing
Raycast for multiple entities
What that!!
why are you trying to give advice if you don't even know what it is, lol
i have a raycast
Hey maow you changed a lot
i want to get every entity it hits
You werent like that
not just one
I don't even know you ๐คจ
Ohh ok I realize if do a proper method Implement it into spigot making a pull request
Verano, they're not the same person
Oh that makes sense
Maow still left this community
I thought he was Mao
rip
ye. i'm just mauwh. formerly escad. lmao
?paste
maow returned didnt he?
dont think so?
no good reason to imo, lol
just seems nosy in a community like this
or any community really
Would I need multiple keys if I want to store two different string values? java NamespacedKey testKey = new NamespacedKey(plugin, "testItem"); ItemStack testItem = new ItemStack(Material.DIRT, 1); ItemMeta testMeta = testItem.getItemMeta(); testMeta.getPersistentDataContainer().set(key, PersistentDataType.STRING, "String Value");
your key is gonna give you an illegalargumentexception though, "testItem" needs to be completely lowercase
Or could I theoretically store a json string in the persistent data container? Would it be better?
Thanks, I discovered this earlier and forgot to edit my example code before pasting here
Well you could store json for sure
tho like
for custom items, just have a single key for the item id
if that is what you are going for
Thanks for the answers :)
What are the best libraries for Java Spigot?
none
you decide what plugin you are going to write, then decide if you need a library
^
I just have a set of utilities that I pick and choose across projects
so things like clean scheduling, menus, yml files, itemstacks
Some math for things like getting body parts and raycasting ig
Anyone knows how to serialize block data to base64?
base64 is just a way to represent binary data
I was searching for something like that
Ik but when I try to serialize it, it throws an error
I want a clean code
then maek it
java.lang.RuntimeException: java.io.NotSerializableException
huh?
that's a really good point, thank you
BlockData needs to implement serializable
you could make your own wrapper class that copies all properties
or just gson it or something
I'm using a custom block object because I need to store additional data but could I make my own block data object that implements (or extend, always mix those two) block data then reference that class instead?
Also how would I go about doing the same for block state
what's causing this error?
Like inventories, player heads, banners, spawners, etc...
and yes if i run it outside of runnable still problem
ArmorStand#remove() isn't a static method
Your instance is called "stand"
stand.remove();
๐คฆโโ๏ธ how am i that dumb
man should try reading his IDE's warnings
i cant believe myself
It would probably suggest making the method static, Illusion ;p
it wasnt showing up
intellij weird
sometimes
if he forked the spigot project
How can I insert a texture into a block with custommodeldata?
Blocks do not support CustomModelData
nice
I can explain some alternatives in a VC if you want?
take a look at rusts Optional<T> class
im basically recreating the same thing in java
Just don't overuse Optional, or you end up like Sponge and you piss off anybody using your API
There's a time and place to use Optional
Optional only nice for method chaining
imho, if you fully expect to do some terminal operation with the result, or if you want to do something else if it's not present, then use an optional
("terminal operation" being some function you call at the end of another method)
If you use Optional for everything, you're going to end up with either unreadable chained code or nesting hell
I was mainly concerned about error handling in api development, that's why I also created the Thread
object.getSomething().ifPresent(something -> {
something.getSomethingElse().ifPresent(somethingElse -> {
somethingElse.getAnotherThing().ifPresent(anotherThing -> {
anotherThing.foo();
});
});
});```
I will cry if you do this
Don't do this
map is a thing
That's a bare-bones example, presumably you'd be doing other things lol
but i understand the point lol
Nope, it was just meant to be used as a nice form of exceptions. Instead of having to use a try-catch, you can rather just check the if the output is present
Yeah, you can use Optionals, just use them sparingly and where it makes the most sense
If you end up writing code that looks like something above ^, you've used too many
my current code does things like this
formatting goes brr here
should probably be able to chain onSuccess().onFailure() but idk how to handle it in the class itself
have a Consumer<T> and Consumer<Exception> probably
meh i dont really
It does
yes
just looks like ij with the new ui
too much white and blue
imagine not returning Collections.emptyList()
why is onSuccess a consumer?
@tardy delta
it should be a function
since it shouldnt take any arguments
since it shouldnt return anything?
Lol what the fuck
6 gigs of memory jesus christ
What cpu you got
Uhm idk ryzen lol
But is that goid
Ahh ok so fleet is like vscode but it's a resource hog has no plugins and it's by jetbrains
Hmmm yes ofcourse you do
I'm that one weird mf who uses vscode
Idk why I use vscode tbh every time I try to switch I'm back on vsc the next day
same thing happened to me lmao
Is there any reason why the [imgs] dont show up sometimes, they are showing within the edit description but not on the actual page when it appears? Its like its an on and off switch
for spigot plugin descriptions
The image proxy is having issues
It happens at times
How to use the blockpopuqltor function
less memory
How do I use the Blockpopulator function
Arrays are usually fixed-length and support null elements
still not worth it
Good for things like inventories
in most cases
where in minecraft's code is a block's correlating tool defined? i.e. pumpkins mine faster with axes, leaves mine faster with shears
ArrayLists are a list implementation based on arrays, which resizes the list etc
๐ Multi ๐ map ๐
They have different queue types is all, but yeah I'd use a Deque instead too
fwiw, those queues should probably be separated into their own objects, but meh
Does anyone know how to use Blockpopulator -_-
let that enum hold a function to create that obj
honestly, no. lemme google it rq
oop I cut it a bit early
I would really love to add a getDestroySpeed() method to Bukkit, but I'd rather types be interfaces first
There's an internal registry (found in the game files themselves) that contains all the block keys for diggable stuff
I don't want to route through UnsafeValues
It matters on some conditions
Like mining fatigue, aqua affinity n all
ty i must dig thru the classes and see if mc has something similar, im doing this in 1.7.2
Sure, but getting the base mining speed is useful
i found itemstack getdestroyspeed but its weird
True
you need to implement the abstract BlockPopulator class and then:
A BlockPopulator can be used in combination with a custom ChunkGenerator by returning it in the method ChunkGenerator.getDefaultPopulators(World) or by adding it manually to the worlds populator list returned by World.getPopulators().
Thats where I have trouble unfortunately
Do i create a class
Or use worldinitevent
just have a method that adds on removes a game?
You need to create a class that implements BlockPopulator and then, if you arent doing complete custom generation, add it with the init event
World.getPopulators().add(WhateverCustomGenerator());
gimme code
If I'm not doing complete custom gen
Do i still add the plugin
To bukkit.yml
no
then you would need multiple deques, probably wrapped in a map
isnt a deque just an example of a queue?
thats what i thought, never used it actually
Use Deque<UUID>
I'm still pretty confused
Where do I add the worldinitevent
you just need a listener somewhere. It just adds to the list
So I can put it in start up logic?
And then make the plugin laod before the world does?
https://docs.papermc.io/paper/dev/event-listeners
Read this. its for paper but it has the same content
My plugin doesn't work in paper for sum reason
Completely breaks down
Hi, does anyone know how I can create a new world with a roofted forest at the center each time I create a world ?
Hi, know I asked this before but is there a way to serialize block data and block state (detailed explanation would be appreciated)
Exactly
I want to store a structure in a file (similar to schematics) but I want to inject my own information into the schematic. So far I'm making a file called name.struct which is a text file with base64 in it
All the information
yeah good luck then. Work out what data you need, work out a structure for serialization and then go from there. Anything more than just materials is hard
gl
That ain't an answer
Well, block data can be serialised into a string
that is API exposed iirc
block state, you are fucked
you'll need to save it into a CompoundTag internally
and then serialise that
Thats really helpful actually
my advice would be to use world edit 
and then just store the extra data somewhere else
yes
except it's not really serializing, you can serialize it to the world's data file tho
take reference from my entity serializer library
use structures
if ur using 1.17.1+
basically,
hello folks, can you tell me how it is possible to have such a good performance ? https://youtu.be/-E1Kx0Z11I0
my entity serializer library, makes a structure of a 1x1x1 block
then saves it with a key
and then kills the entity
then whenever u spawn the entity u spawn the structure
eitherway
just use the same mechanic
but with blocks instead of entities
afaik state and such is saved with structures
can someone help me pls ?
there is nothing in the world?
its just flat terrain
also jeez
that shit is fast
@opal juniper its exceptionally fast
thats probably not normal
yes. but its also using one file per chunk
the file size of that world is gonna be kinda astronomical
No :/
Hi, does anyone know how I can create a new world with a roofted forest at the center each time I create a world ?
yes?
I know the developer behind this project and no, he doesn't use one file per chunk
well im looking at one of his other videos and it says he does with the same code in the background
at the beginning of the video you can check the tps is very low
and after it is very fast
one file per chunk vs one file for a group of chunks
Check the name of the video
repo they reference is here @steep hearth
Im just reading the blog post. If you know so much about it feel free to enlighten us
how would i get the name of a created item in 1.16.5?
because of me creating the itemstack the getItemMeta is null,
so tried the itemfactory to get the meta of the material, but this also gave all null values
as it's a modded item i have, the gettype.name does start with mod_xxx , trying to cut it off wouldn't take care of special characters ( like รฉ ) as i want ofcourse
Thing is as well, you can load a chunk as fast as you want but the generation will still be slow
the generation of the chunk is client side
and its not really slow even if he has a potato pc
cuz it is
the generation of the chunk is client side
ew no
someone is here to help. thank god
I mean, not much to say.
random private project that might be doing fuck what
ยฏ_(ใ)_/ยฏ
I was talking about the rendering of the chunck
the rending isn't the issue, the generation of the terrain is.
but again
private projects are pretty useless
what did we say about storing player objects
there is no issue with this system it is faster than spigot that's it
For the moment yes but in the future no
dm me the repo and then we talk
those claims are useless
does the server do anything else ?
are the chunks ticking ?
like all the demos are on custom cheap chunks
it will do as much as spigot is doing
Yes for sure
You know "a private project" or no ?
I mean, if that system is written into spigot then the world choice is weird
we know what you mean
PRIVATE PROJECT
u know you can make it not private
if your project is private, its useless to ask "how to get that performance"
thats what i meant
its a magical video no one can verify
copilot got some stuff in mind
nor checkout what improvements were made
its a video to show improvements the message asking how to get that performance is a joke
oh
Yes but it's not the objectives for this project
that is a rather boring joke then
Well, GG enjoy your system then xD
and punching really fast in 1.8

oh wait was it 1.8
and ?
For the moment yes
spigot 1.8 is not that fast
Okay so launch spigot and make this test please
what is the point of this ๐
it seems like they are trying to flex
but i literally am only a little interested in how it was implemented and they wont show me
and let's talk about libs to manipulate packets with spigot, just because no one got the idea to implement a system to manipulate packets because they are lazy to create wrappers for every version
Because it's not the objective for today
Conversation adjourned 
heheh
I see nothing wrong. Normal Minecraft ๐
Lynx is at the far lands!!!!!
fax
copilot started writing reflections for me now
its not a server jar to make a server with 5 slots
about dam time!
spigot team should use copilot
i like the thing intellij does where you can control click to the method / field you are reflecting
:'(
spigot should go private, upload a random video of them flying over terrain as basic as the music chosen and then join other discords asking if they can implement that
and how do you live if every project just go open source ?
open source is great?
smh I always knew redhat is a dead company ๐ญ
this open source stuff just
you cannot make money off it
omg true!!!
hmm
well its not a spigot fork, ofc the aim is to make something better and sell it
dunno if thats valid java lmao
mfw paper be like: we have too much money so we are giving it away to contributors
also if isn't based on spigot, you are pretty fucked anyway
Its not a fork but its okay
you are going to implement the entire bukkit API into a fresh project ? ๐
what the
oh GOD
yeah lmao
No ?
how will your server run plugins
spigot plugins ?
spigot plugins will be supported on the project ofc
not a fork lmao
If you are supporting Spigot plugins I'm 99.9% certain you are a fork
^
No
its not a fork
aims to replace the entire Spigot that you all know, with a totally asynchronous and cross-language alternative.
So you are not using ANY Spigot code in your project which is going to support Spigot plugins?
Its not the project haha
Well, I'll look forward to your project ๐
glad you are using spigot to showcase your project
the project must be basically ready ๐
Where can I learn about obfuscation?
Do you have a brain ? Its not the project
but nah, tbh enough hate. If you are working on a cool new project that is not a fork of spigot but supports spigot plugins and has a lot of performance improvements
then I'll look forward to it ๐
What do you want to learn? How to obfuscate? What it is?
How to incorporate it into my project and how it just works in general.
its okay we don't want to provide hate ๐
why ?

you did promote the github x)
this is a spigot discord ?
I'm not contributors
^^
I'm a graphics design
I mean this just looks like you are advertising a competitor of spigot that is apparently going to be sold ?
who's talks about competitors ?
I'd be interested to hear what the mods have to say to that ๐ค
your project aims to replace spigot does it not
nop
i-
okay this is too stupid, gl with the project, whatever fork not fork, api not api, spigot replacement but not replacement but super fast and private it is
Lets keep it to spigot only
not private for long time
i hate normalising databases
its more for servers that wants best performance without using weird systems that synchronize the same world across multiple spigot servers
i did it with suppliers before and that was way easier
paper and spigot are still based on that yk
wha the heck
Drop it. This server's for spigot only
bruh
Advertising competitors is not allowed ๐
ah looks like it can only handle one throws declaration
side note, keep it english only
wondering how to do that with a lambda
bifunction exists in java
bruh
i seem to understand
wrong generic exception type
yessir
hmm legacy go brr
sorry for flooding the chat tho
Not happy ๐
Yea me neither ๐
atleast were able to generate this based on a class' annotations
even I don't advertise my project here lmao
just in paper general 

Nah, not the Anti-Malware
hehe
I mean thank god that existed
if more people asked how to run the one line grep command
I would have died
yee
also, if you're in the support server Lynx, you can see what project I was actually talking about in announcements
I am not ๐ญ
You can find a link on literally any of my resources then :p
:>
the ask questions / get support one iirc
Yee
I have other plans, but I'm focusing on that part first and getting that as best as it can be before general things
ye ๐ a nice integrated anti maleware thing sounds cool
I wonder how far one can go with that
Farther than I am currently lol
i mean if you have CI optic, there would be no reason to not use it over paper
on paper release -> patch urs
CI?
continuous integration
jenkins / gh actions type stuff
Help me set it up after I'm doing w/ Verdun and we can make that a reality lol
Pretty sure the repo will already auto-sync
iirc they have functionality for that
yeah... i mean it isnt the best idea to auto pull
noah might change some patches by hand again
Well, regardless it would still be useful lol

and no, the fork landscape is good
I can always figure out something better
giant projects become slow
Would be even better if I can get host support ๐
I do wonder tho, what was your reasoning to shade it into paper instead of like, just running it in paperclip ?
e.g. before server start
ud have to make some changes to paperclip tho no?
Less hassle lol
I can always modify paperclip or whatever to use my repo anyways lol
I guess if you want to change server impl and API down yea
again, things slow down too much
if you have 50 people working on a single thing
^ especially given the main focus is Anti-Malware related
Red-tape massively gets in the way
if every single person used one fork, imagine the amount of testing needed for each release
there are huge stakes
also, fuck paper. The less I need to use of theirs, the better
I mean ehh- fixing later is not really a nice way to do things tbh
especially with rolling releases like spigot and paper do
exactly why you keep it small
and think a lot about changes
if 50 people work on paper
and someone just shoves in new API that they want
Yea, I'd have some CI or something to auto-pull/verify
and then everything breaks down the line because the API is garbage
now you are fucked because you have dead API
Yes and now you slowly start to notice how this is not a business
but open source software
that no one gets paid for
This is also why my project's not public yet, I want it as perfect as possible on first release lmao
I mean, imo you can have it open early just don't publish jars
dunno
but probably ?
they have a lot of infra structure to maintain
I presume md takes a cut ?
I'm doing a lot of changes, including a new DB. not really an option lol
but like
dunno
Yea but like, again, open source software does not really work in motivated timelines imho
Easiest to get it right on first release and go from there, given the amount of sweeping changes I'm doing in terms of the merge
if it isn't backed by a company
I mean, managing a giant group of contributors all with different goals in an OSS project that does not pay enough to survive off
just sounds like pain to happen
especially in rolling releases
when so many people depend on your work
that would kill it
instanly
^
^
What
paper is based on spigot
if spigot requires you to pay to run it
it has to be closed source
else you just go ahead and compile it
and use it anyway
Well yea, for support
which, I guess spigot could do that ?

but yea, I think things would work fine if we just shoot more stuff back upstream
after it lived long enough in downstream
but spigot is in a weird place there with their stash and CLA
won't happen lol
and then there is also just patches that don't have a place in upstream. E.g. optics malware shit 
or like purpurs gameplay changes
both of them are cool for certain users
Or like papers everything
but out of papers scope
Yea, doesn't really belong in paper itself either tbh
If it weren't true no one would use it ^
Purpur is fine
And in my case, it would literally be drag & drop lol
who needs base paper lmao

๐
I wonder where the world would be with spigot as a base
we would still be at bash scripts
lol
In my case? The project would be dead
Doesn't paper still use bash and shell scripts though lmao
Fuck gradle
well
we have bash scripts to update upstream
but most of the tooling is a gradle plugin (paperweight ๐)
So much stuff about paper that I don't like, but it's the most popular so i need to fork it ๐
I mean, always depends if we are talking API wise
or impl wise
I see how a lot of people dislike @Deprecated
or at least a few loud people
Regardless, if I forked spigot instead the project would be dead lmao
probably
I mean, leafs chunk rewrite is pretty damn sexy
Well yes, bash has its place 
but doing everything needed to setup the spigot or paper workspace
in bash
is pretty painful
big W
Honestly Lynx the hard part's just gonna be getting server hosts to adopt it lmao
Imagine not using a server manager and instead using a bash script
yea probably. I wonder if adoption would be better through a fork or a third party tool/loader
Most hosts, e.g. server.pro, have a way to support that stuff already
I know certain hosts recommend my AV, so it's likely I can get them to adopt and recommend that as well lol
hey quick questions guys what was the syntax to sending a message to player chat again?
player.sendMessage()
tysm
|| player.sendMessage(Component.text("Message"));
||
ok thx
no that isn't it xD
thats why its in a spoiler
just "this is a message" or "ยง6This is gold"
but yea, it shouldn't be too difficult. Just gonna be a pain to write a bunch of emails lol
Regardless I highly doubt there'll be mass adoption quickly lol
hey guys. any method of grabbing the owner (entity) of an inventory from a InventoryClickEvent ?
whoclick is the player,
Inventory#getHolder() may be what you are looking for. I don't use it myself, but you may need to cast to what you are looking for.
For plugin help please use #help-server
Honestly @eternal night like the only thing I really need to do is the new DB, the rest (excluding the XF site) is pretty much finished for a first release
oh
I thought you need help
Also repesct please
Its the 2nd time i saw it to you in 1d
okay im not going to answer because its simple
๐คฃ
I mean i dont lost my time with this type of childs
This has been a rather confusing conversation
Yes bruh he is so unrespecful
Same 
๐
Hey stop it law is here
Only reason the DB is taking so long is because it'll be more through, follow stricter naming conventions, and be proper
oh and it's boring as fuck
After casting around to entity, it works like a charm :) thnx
Player giocatore = (Player) poliziotto.get(player.getName());
I tried to take the player via hashmap, but it marks it in red, how can I solve?
It should have a message telling you why it's red
Inconvertible types; cannot cast 'java.lang.String' to 'org.bukkit.entity.Player
What's your HashMap storing?
Ah, right, it contains strings
And it returns what exactly?
string
That's why you're having issues.
A String cannot be a Player
ok
What are you trying to do exactly?
What is the best way for saving/loading a map from/to config?
iirc you can just do ConfigurationSection#getMap
cant?
Confirmation stuff, however I fixed it, thanks


