#development
1 messages · Page 89 of 1
Which then start to be corrected to HAHAGAGAHHA
Because I've misspelt in that way
Sounds like a skill issue
oh lol
what keyboard?
Gboard
Although I don't have that issue anymore since I've disabled autocorrect
oh I rely too much on autocorrect
When I want to correct a word I tap the middle suggestion it's usually right
Typing using suggestions is quite fast
No way I'm typing out suggestions
I type sugg (deez nuts) and I can immediately tap that suggestion while not relying on goofy auto corrects
Anyhow, how's our FileManager guy doing?
giving up hope and stuff you know
Sounds like it hurts
nah IT was so FUN
Spring boot gives me enterprise fizzbuzz vibes every time I look at it
nah dont say that word
fizzbuzz
working with a freaking module to get to an answer nobody likes
soo instead of making my own crap
apparenlty JAVAPLUGIN ALREADY HAS THOSE THINGS
getResource("config.yml");
getResource("deathMessages.yml");
saveResource("config.yml", true);
saveResource("deathMessages.yml", true);
sad dayz
Yeah it works pretty well for simple stuff
for now I just want it to get my files so I can do stuff in the config
https://paste.helpch.at/kiporigoyo.php this was the old code
There seems to be some invalid syntax in your config! You can paste it into https://yaml.helpch.at/ in order to find out where your issue is!
from 2021
sorry @dusty frost @hoary scarab didnt see ur msgs about this
unfortunately the ppl hosting events are not the brightest sometimes (ive had to add so many warnings/guides so that they didnt screw up the process somehow 😭), so im afraid theyll more often than not forget to end the event
im also afraid of asking ppl when their event will end cause some ppl just dont know. some events can last for 30-60 mins but end early, later, etc..., ppl just dont know
being able to add time on might work, but ending early is still a problem (ppl might also forget to add time unless reminded somehow which is another problem in itself)
and we're currently working on in-game integration + website if that helps at all
what inventory gui library do u guys use/recommend ping if reply
triumph-gui
🙏
r there docs for it
yesno
is it on mvn
docs are pretty small
and uncompleted
v4 is quite new
but you can check examples in the repo
v3 it is then 💀
it's essentially a reactive gui library
nha trust, if you have the option, try using v4
thanks
someone can help me with this
what im using 💀
libby supports repos besides maven lol
ye ik
is v4 on another repo
probs shouldve asked that
o didnt see setup page cause wasnt on v3 docs so assumed id find setup stuff on v4 readme
o im just blind v3 has page too
How would you store custom data from players (input) like 2500 characters?
I mean, to save player saved patterns, modifiers, etc
When I was working on my skyblock plugin I would use a json string and compress it. Idk which compression I used though.

GZIP, ZLIB, Base64 + GZIP/ZLIB, LZ4, Snappy? (Yes, chatgpt xd)
Here are the sizes of your string after applying different compression methods:
Original size: 2520 bytes
GZIP compressed size: 102 bytes
ZLIB compressed size: 90 bytes
GZIP + Base64 encoded size: 136 bytes
ZLIB + Base64 encoded size: 120 bytes
Actually yeah I think that's it lol
Base64 and gzip

I'll be on pc in a couple hours and check.

Yeah used it for saving schematics for island generation.
Makes me want to work on it again. sigh
shows code 
...

Still not on pc

//Base64.encode()/.decode()
public byte[] compress(String data) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream(data.length());
GZIPOutputStream gzip = new GZIPOutputStream(bos);
gzip.write(data.getBytes());
gzip.close();
byte[] compressed = bos.toByteArray();
bos.close();
return compressed;
}
public String decompress(byte[] compressed) throws IOException {
ByteArrayInputStream bis = new ByteArrayInputStream(compressed);
GZIPInputStream gis = new GZIPInputStream(bis);
BufferedReader br = new BufferedReader(new InputStreamReader(gis, "UTF-8"));
StringBuilder sb = new StringBuilder();
String line;
while((line = br.readLine()) != null) {
sb.append(line);
}
br.close();
gis.close();
bis.close();
return sb.toString();
}
```Old &/or bad code adjust accordingly.
@shell moon ^^^
Why not a database
And also, why are you trying to compress 2 kb of data??
Even if you have a server like Hypixel that’s 50k players, that’s not going to be much
If you really have to, use the built in DB compression if it’s supported

I want to store like this:
c=AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC t=1 a=lmno|c=AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC t=1 a=lmno|c=AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC-AABBCC t=1 a=lmno
but not three times, probably up to 15 times (in a column)
Yes but still, are you sure you really want to write the code to compress and decompress 2 kilobytes of data
And also what if server owners want to change something
They shouldn't all handled by the plugin
i dont think they should change something
i mean, its not an important info for the player
they can always delete the row
I think everything I had to say was already said in the other channel
also, this looks like it defies DB principles
lol
one of the most basic ones
You could even use an ORM and let the library handle seeialization and deserialization into the database for you
I use Hibernate ORM to do that
Just create java objects and let it handle the database for you
well, I'd learn about DBs better then
cause the format you just described sounds like you do not know the principles
and are treating it as a "I'll use the same method I used to store data in files, but in an sql db"
this is very strange
what exactly
this
you?
Joe mama
I agree
heyo, question for y'all
with our texturepack we wanna do an animated emoji in chat, we have a system for static images but not sure how to go about doing animated (if possible) so if anyone has some insight let me know :D
impossible without shaders iirc
like 90% sure
with shaders it's not hard but it's not going to work for most people
You can bump that to 100%
make it 101%
Does anyone know how to make a good looking solid bar in chat in vanilla?
This used to work with strikethrough and the hyphon character in older versions, but now looks bad for some reason
why no just use square unicode?
No, it doesnt, but looks good still
You have a lot to choose from
▄▁▁▁▁▁▁▁▁▁▁ 4%
⣦⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀⣀ 4%
◐○○○○○○○○○○○○ 4%
▥□□□□□□□□□□□□ 4%
▰▱▱▱▱▱▱▱▱▱▱▱▱ 4%
if you want resources on how to do it https://github.com/Vekhove/Minecraft-Text-Shaders (#showcase message)
Not exactly what Im looking for
Im looking more for a border that separates chat messages for formatting
I would prefer it to be seemless
if you want a solid line just do strikethrough with a bunch of spaces
Can you strikethrough a space?
yes
you may just need to add &f on the end so it recognises the spaces and isnt trimming it
Ori Solutions Inc.
Thank you :)
guys how would i fix "Expected whitespace to end one argument, but found trailing data", i wanna use a url as one of the arguments in a command but that error appears when i try
show the command you ran
/cd download https://drive.google.com/uc?export=view&id=16FbY0XZd3t6YjkNryIaaxM4adnAscNh6 campanella.mp3
Hi guys! I was wondering what a fair price is for a dev on an hour rate?
depends on what they do
Recoding a plugin currently
what plugin is that? the error is very likely plugin specific
nah like i said before, its a fork of a different plugin, im tryna fix the thing in the code causing this
where did you say that
i must be missing context
i really have no idea how to begin helping without more info
oh my bad imagining things
yeah i've forked a plugin and im trying to fix this
you want me to send the code for it?
Also like to think that also depends on where the dev lives, every country has its economy
sure
one sec not sure if i have image perms here
ofc lol
from the docs of the command argument library that plugin uses
in your code url is handled by a TextArgument:
this.withArguments(new TextArgument("url"));
this.withArguments(new StringArgument("filename"));
so basically, wrap the url in quotes
happy to help
thank you very much
Any way to create a (format, idk the name) using adventure, like gradient or something like that, and later, set the string content? I dont mean like
MiniMessage.miniMessage().deserialize("<rainxow>"+text+"</rainbow>")```
as text can contain also tags and it will be taken incorrectly (havent used adventure that way yet) any ideas?
I mean something more like
SomethingComponent sc = Adventure.something(color1, color2, color3, etc).style(BOLD, etc);
Component c = sc.content("This will be a rainbow text!")
so it can be reused
have a look at this?
Hello everyone, I have been having issues compiling this plugin from source. I'm not sure what I'm doing wrong, if I understand it right the dependencies are not being found because they're not available in the urls defined. Is anyone able to give it a try to see if I'm the issue or if this is an issue?
https://github.com/kangarko/ChatControl
I take it the development chat is for general development, not only papi related? Don't wanna break any rules
Did you get the dependencies?
Is it throwing any errors?
All except foundation-* dependencies, it seems to be seeking for them in repositories but not finding
Hm
Ah okay
Change the foundation stuff to be local and specify the directory for it
Can just compile it too
@marble gull ^
God no, do not use that
(Ik it's for compiling chatcontrol, which btw, do not use that either but to whoever sees this, do not use it)
XD
Yeah I’ve tried that too 😦
Are there any devs here with experience in Gradle?
I'm new to this and don't want to use Maven anymore.
I managed to set everything up properly, the plugin builds correctly, and I can also start the plugin on the server.
However, I'm having issues with the relocations. They are not being shaded into the .jar.
The whole thing is supposed to be uploaded to Jitpack as an API, including the relocations.
This is my current build.gradle.kts: https://hastebin.skyra.pw/fubohebadu.pgsql
try
./gradlew shadowJar --info
look for relocate process
also not sure if it makes any difference but move out shadowJar { } out of tasks { } (maybe thats just .kts thing though) I have my shadowJar non-scoped at it works correctly
anyone knows what the DamageCause that the worldborder does?
does it count as custom?
nvm
Hi! Has someone ever used PluginLib to download and relocate libraries? I'm having some trouble setting it up. I can't use Spigot's own library loader bc it seems that it doesen't like library relocations
You don’t need to relocate if you use spigot’s library loader ideally
Only when shading
I used libby
I don't recommend using spigot library loader
it downloads from maven central, which is against their ToS
libby allows for much more and using third party repos
The thing is that I need to relocate my libraries bc it conflicts with some versions of spigot
I'll try it out. Thanks!
Which ones specifically
... isn't that the whole point? Centralized place to store libraries, api, etc...?
It does violate ToS but I personally am fine with using it
I didn't say it doesn't. Just questioning why their TOS would be against its use case lol
Twitch4J, specially fasterxml.jackson. I've been having issues with the library since spigot 1.21.3. I've talked to a mantainer of Twitch4J who recommended me to shade and relocate the libs directly (which worked, but I don't want a large file size)
I had PluginLib almost completely set up, but couldn't get it to import correctly and load the libraries
for DEVS, not to be downloaded at runtime
Personally, I would prefer to use PluginLib, as I almost got it but I think I'm missing something
and the current one provided isn't compatible with Twitch4J I'm guessing right
It doesen't seem to. The problem wouldn't resolve until the library was shaded or the server was downgraded to <1.21.3
And seems that spigot's loader doesen't support relocation
When I buy a pickaxe from the menu on my minecraft server for 5000 game money, I want that pickaxe to be magical in the game, for example, efficiency is 5, how do we do this, the following does not work
give %player_name% netherite_pickaxe{Enchantments:[{id:"efficiency",lvl:5}]} 1
if the Collider classes are extends of Component, will isAssignableFrom still work normally ?
public void resetCollider(FlatPhysicBody flatPhysicBody, Component colliderObject) {
Body body = flatPhysicBody.loadInstObjectBody();
if (body == null) return;
int size = fixtureListSize(body);
for (int i = 0; i < size; i++) {
body.destroyFixture(body.getFixtureList());
}
if (colliderObject.getClass().isAssignableFrom(FlatBoxCollider.class)) {
addFlatBoxCollider(flatPhysicBody, colliderObject);
}
else if (colliderObject.getClass().isAssignableFrom(FlatCircleCollider.class)) {
addFlatCircleCollider(flatPhysicBody, colliderObject);
}
else if (colliderObject.getClass().isAssignableFrom(PillBoxCollider.class)) {
addPillBoxCollider(flatPhysicBody, colliderObject);
}
body.resetMassData();
}
Not sure what you‘re trying to do there
I think you are looking for colliderObject instanceof SomeCollider
Determines if the class or interface represented by this Class object is either the same as, or is a superclass or superinterface of, the class or interface represented by the specified Class parameter
I think it will always return true for the first check
https://www.baeldung.com/java-isinstance-isassignablefrom
Your case
Shape shape = new Triangle();
assertFalse(shape.getClass().isAssignableFrom(Shape.class));```
The class of shape (Triangle) is not a supper class of Shape
i read the article and it seems like for my use case it will be instaneof instead of isAssignableFrom
Heyo, anyone here used the Incendo/cloud project for managing commands? Im trying to use the new system in beta.10 and im wondering if anyone managed to get the MinecraftExceptionHandler to work?
Cool
I have! I did do it in Kotlin, but this is what it looks like for me, pretty simple!
val manager = LegacyPaperCommandManager.createNative(this, ExecutionCoordinator.simpleCoordinator())
MinecraftExceptionHandler.createNative<CommandSender>().defaultHandlers().registerTo(manager)
I believe if you are using the modern PaperCommandManager, the typing and everything is different since you need to use their mapper from the Brigadier type, but it should be pretty similar!
mm i tried legacy and the new one and in both it just doesn't work at all i just get exceptions in console whenever any like parameter error or anything occurs,
Code: https://hastebin.skyra.pw/ehamuyonef.java
error: https://hastebin.skyra.pw/ajevoyuqep.prolog
(i tried paper and purpur jar)
have you tried MinecraftExceptionHandler.createNative()?
i'll try
then you don't have to deal with the sender type mapping and everything
i just followed the example on the github they have
and you can use .defaultHandlers() to add all the handlers automatically
ye ye i tried both cuz that didnt work so i tried if doing it seperately would work even tho code is the same in the bg haha
though I also have a sneaking suspicion that something is afoot with your .decorator(), since the exception complains about serializing Components, and you're doing component stuff where I'm not
oh and double, try also using LegacyPaperCommandManager.createNative() instead of the constructor with identity, though that might matter less?
will also try that, also trying to use it with the new PaperCommandManager will see how that works out
yeah my biggest gripe with the new one is that you have to use their wrapper type for senders and validation instead of just like CommandSender or Player from Bukkit
just adds a bit of overhead all so you can access the brigadier tree, which is probably useful for some stuff, but I haven't had any issues without it
which versions of libs do u use?
compileOnly("org.incendo:cloud-paper:2.0.0-beta.10")
compileOnly("org.incendo:cloud-minecraft-extras:2.0.0-beta.10")
compileOnly("org.incendo:cloud-kotlin-extensions:2.0.0")
compileOnly("org.incendo:cloud-annotations:2.0.0")
compileOnly("org.incendo:cloud-kotlin-coroutines-annotations:2.0.0")
kapt("org.incendo:cloud-annotations:2.0.0")
though half of those are for kotlin specifically lol
oh well seems to not work still same errors haha
https://hastebin.skyra.pw/erewisecom.css
yeah im ngl, i swear there was a big change in the way text components were serialized in one of the 1.21 versions, so i thought that might be it
because i'm using that setup on 1.21.1 with no issues, but i noticed you're on 1.21.3 so maybe something changed internally with how text components work that cloud hasn't updated to?
possible i'll try 1.21.1 to see if it works there
yeah i wasn't gonna suggest that cause it seems like a lot of work if you're not like using a gradle plugin to runServer automatically but yeah definitely worth trying imo
eh i have all the servers setup i just drag and drop plugins ^w^ so should be fine
ah sweet!
hmm okay so, more digging, possibly your Paper jar might be messed up? if you could, try opening it with an unzipping program and see if there's a META-INF/services/io.papermc.paper.command.brigadier.MessageComponentSerializer file with that class plus Impl in it.
cause it looks like it can't find an implementation via the Java ServiceLoader to dynamically instantiate
theres no services folder in the META-INF if you mean in paper.jar?
i downloaded it from papermc.io
hmm
looking at my paperweight jar, it contains META-INF/services/ a bunch of stuff, but maybe actual paper jars don't?
possible, maybe its in the libraries folder jars
i also tried on 1.21.1 now still no work
tho help generator works just fine?
https://hastebin.skyra.pw/cayebehana.prolog
the paper jar you download from the website won't contain the service file
it's the patched server jar that has it
ah is that in /cache/mojang_1.21.1.jar then?
yea it is there
but if that's failing then something is fucking up the environment in general, some plugin or library messing with the thread context classloader
i was experimenting with externally loading .jar files before so thats probably causing the problems
ah yeah that would probably do it
was that for library loading purposes? if so, you can use either the spigot library loader or the new paper plugin library loader to accomplish the same thing but way easier
oh i was just playing around, its H2 driver
but i guess i can just add that to plugin.yml yeah
ah yeah that'd be good for either of those, if you actually do want it!
wuh added pluginloader to paper now plugin isnt even detected haha
oh god lol, did you add the Loader + Bootstrapper + paper-plugin.yml pointing to those?
oh i need both bootstrapper and loader?
yeah cause the bootstrapper provides your plugin instantiation
🤷♂️ no workey haha added both
and your paper-plugin.yml points to them correctly?
should i think, i just used gradle plugin for making plugin.yml and paper-plugin.yml
oh, well check that it's good in the actual .jar, and maybe get rid of the plugin.yml as it might conflict? i don't remember tbh
you don't need both bootstrapper and loader, you can have one or the other, they do different things, and paper will ignore plugin.yml if paper-plugin.yml is present
oh shit, i didn't even know that!
just assumed it'd require a bootstrapper, that's sweet
oh well for some reason when i add loader it just doesnt find plugin anymoer haha
no messages in the console or anything? it should do something, even if it just immediately fails on startup lol
well i get the
[15:06:31 INFO]: [PluginInitializerManager] Initializing plugins...
[15:06:31 INFO]: [PluginInitializerManager] Initialized 9 plugins
[15:06:31 INFO]: [PluginInitializerManager] Bukkit plugins (9):
and plugin is not included in those haha
no other errors or anything in the log? then the plugin is not in the plugins folder 
nothing at all, plugin is clearly in plugins folder tho hm
if the server is not picking it up at all then it isn't
if it does not show up in the log
share the whole server log?
oki sec
adding a file in your jar won't make the server not show up your plugin in the log at all
even if it's an error
looking for plugin called
AdvancedCrops
that really just sounds like it isn't in the plugins folder; what's the log like when the plugin loads?
very strange, it works fine for me
which version of paper?
Maybe my configuration is wrong?
api-version: "1.21"
name: AdvancedCrops
version: 0.0.1
main: eu.virtusdevelops.advancedcrops.plugin.AdvancedCrops
loader: eu.virtusdevelops.advancedcrops.plugin.AdvancedCropsLoader
description: Advanced crops for your server.
load: STARTUP
authors:
- VirtusDevelops
folia-supported: false
dependencies:
server:
Vault:
load: BEFORE
required: true
join-classpath: true
oh maybe get rid of the load: STARTUP? that and the folia-supported are the only things I don't have in mine
nope still same issue
also i assume this is fine?
class AdvancedCropsLoader : PluginLoader {
override fun classloader(classpathBuilder: PluginClasspathBuilder) {
val resolver = MavenLibraryResolver()
resolver.addDependency(Dependency(DefaultArtifact("com.h2database.h2:2.3.232"), null))
classpathBuilder.addLibrary(resolver)
}
}
ohhh
you probably need to add Kt to the end of your package name
since it's Kotlin and it renames the .class files
interesting, main works just fine tho :o.
ngl I live in fear and just do those in Java anyways lol
so if that doesn't work, guess you'll just have to embrace the old ways and do it in Java
the PluginLoader has to be in Java
unless you are shading kotlin, uh
something like that
oki
oh also, don't you have to add Maven Central manually as a repository? or am I just discovering other unnecessary things i'm doing lmao
i just followed the instructions on papermc website this.
public class TestPluginLoader implements PluginLoader {
@Override
public void classloader(PluginClasspathBuilder classpathBuilder) {
classpathBuilder.addLibrary(new JarLibrary(Path.of("dependency.jar")));
MavenLibraryResolver resolver = new MavenLibraryResolver();
resolver.addDependency(new Dependency(new DefaultArtifact("com.example:example:version"), null));
resolver.addRepository(new RemoteRepository.Builder("paper", "default", "https://repo.papermc.io/repository/maven-public/").build());
classpathBuilder.addLibrary(resolver);
}
}
I have ```java
resolver.addRepository(new RemoteRepository.Builder("central", "default", "https://repo.maven.apache.org/maven2/").build());
man you have a cursed setup lmao
pl
yeah still doesnt work, i dont even know, theres no debug logs or anything
is there any flag that would enable any extra debugging?
i added -Dpaper.log-level=FINE but that didnt change anything
This is the first time I do something that I need to take into consideration concurrency. For a plugin I have something like a goal, where players have to deliver x items (e.g. 1000 oak logs) and receive money for how much they deliver. The goal is global, meaning that all players can deliver different amounts until the total amount is reached.
How can I process each deposit sequentially so that players don't deliver more than is required?
so it's across multiple servers or what?
push them to a queue? or if you're doing it in a database, they already lock correctly
yeah we'd need more details on like database/redis/server setup to help more
ReentrantLock?
How is the delivery even done?
import java.util.concurrent.locks.ReentrantLock;
public class Goal {
private final int goalAmount;
private int currentAmount = 0;
private final ReentrantLock lock = new ReentrantLock();
// Getters, Setters
public int deposit(int amount) {
lock.lock();
try {
int remaining = getRemainingAmount();
if (remaining <= 0) {
return 0;
}
int toDeposit = Math.min(amount, remaining);
currentAmount += toDeposit;
return toDeposit;
} finally {
lock.unlock()
}
}
}
though not exactly sure what are you trying to do
Yeah that's why I'm asking, because if it's done by like dropping an item or something like that it'll already be on the main thread so I wouldn't worry about it
well either by dropping or a command, I would guess at least
@dense drift more context required 🚨
Place items in an inventory and then click on a button
No but multiple players can attempt to deliver at once
But it‘s all on one thread?
maybe have it take items from their inventory instead? then you can obtain a lock, take the the min of the amount they have in their inventory and how many are needed to complete it, then release the lock
ngl the last time i did something like this for a holiday event, we just had a straight competition with no upper limit, so it didn't matter the order/concurrency people submitted them
because if it's just closing the GUI you'd have to give the extra items BACK to them afterwards
mutex moment
Does anyone have a github actions example to publish a plugin jar to releases using maven? (please ping me)
not really a mutex if it's all on one thread
If it’s all on one thread this shouldn’t matter
and it sounds like it is, if you’re just handling inventory click events
If I want to "license" my code, do I just add the license to the top of each class?
I usually stick to all rights reserved but figure I'll post something GPL or similar.
the header in files isn’t necessary. just placing a license file in your repo should be enough. afaik don’t even really need that either as long as you just specify somewhere in the repo what it’s licensed as.
I just stick with only a license file in my repo
Ok so as long as its mentioned. 👍
If I have 1 interface and multiple classes but they essentially all do the same thing is that an API or a Library?
the terms are more or less synonymous
so "both" is the short answer
the long answer: depends on the visibility of the classes. if they're private implementation detail then they are part of the library but not part of the API
eg all the nms code is part of the spigot library (arguably not even this) but not part of the api
Yeah thats the way i was thinking
would you say API also usually implies working with some larger structure? I don't think I'm wording it well, but like for example a Library containing math equations I would say is a Library, but not an API
Yes I would think API has in interfaces, headers, like the bare bones while library contains implementations as well
API implies working with something with an interface
everything is an interface
even a static utility class is still an interface
it doesnt have to be a java interface
maybe in technicality but like
the infamous "left pad" by most people's opinions would probably be a library but not an API
if you have a public static String leftPad(String s) that's an interface
yea fair enough
Is there a way to not modify the variable of a string but to edit the string itself?
Example; string = string.replace("key", "value");
I might be wording it wrong so google only shows the methods of String which doesn't help.
the interface is how you interact with the library
like mutate the contents of the string object?
no java is only pass by value
i think that counts as editing the string itself
what do you mean
oh nvm i read it wrong
it says "not modify the variable but edit the string itself" i read it as "modify the variable but not the string itself"
silly me 😅!
you'd still be right with the correct reading i think
pass by reference would be modifying the variable tho no?
sparky more like
you could interpret it either way
They can select how many they want to deliver. I'll think about it.
By lock do you mean a java Lock or because it runs on a thread it will block it?
Yeah it will most likely be on one thread
I mean, I would say that they can select how many they want to deliver by having that many in their inventory. if they want to turn in less, they can put it in their enderchest or something.
Fair point
if you're doing this synchronously, then yeah you can just have it execute in order on a thread, but if you're doing it async you should definitely use some sort of locking mechanism externally to have tasks wait until it's their turn in the queue or whatever
I can just put a warning that all items will be taken
well that's the whole point - if they have more than what would be required, it won't take those extra items
whereas it would take however many are put in the gui and/or you'd have to reimburse them somehow which seems error prone to me
Yup
I know that Placeholder#setPlaceholders will parse the color for you, but is it possible to make PlaceholderAPI not to parse colors?
As of PAPI v2.11.2 (released July 3rd, 2022), it should no longer parse color codes for you in any way, shape, or form. https://www.spigotmc.org/resources/placeholderapi.6245/update?update=462869
Oh wow, could've swear I've experienced color parsing on newer version but could be tripping, thanks for the information!
I asked this in #placeholder-api but ive realised it probably makes better sense asking here. I dont know the first thing about Java and im relatively slow with files altogether. I tried manually adding Quintillions, Sextillions and Septillions to vaults open-source placeholders so I could display Qi, Sx and Sp for money. To upload them I need to save them in the placeholders vault folder, but i noticed they're .class files in there and my ones I edited are .java files. Is this fine can i save them as .java files, or do i need to figure out how to save them as .class?
EconomyHook.java = https://paste.helpch.at/izavalatum.java
VaultExpansion.java = https://paste.helpch.at/decoyitofa.typescript
^ Incase I did it wrong btw
You need to compile them
@plucky maple run gradlew shadowjar and you should find a jar in build/libs afterwards
where am I running this sorry?
oh I never downloaded the folder I just downloaded the singular file
i didnt realise i needed the folder
Erm
You can not edit a java program like you edit a skript xD it needs to be recompiled into a .jar
Make your edit in this EconomyHook file and then run the command
And VaultExpansion*
Ngl, im still trynna figure out how to download the folder LMAO
Like I said, im so so slow when it comes to this kinda stuff
Okay think I figured it out, didnt realise you needed a third-party to do it
Thats all good I managed to download it via the third-party, now im just working out how you run gradlew shadowjar in the folder
I downloaded Eclipse IDE because I assumed thats what you needed to do it
Okay i've definitely done something wrong I think. It says "gradlew is not recognised as an internal or external command, operable program or batch file."
it should work, as there is a gradlew.bat file
try gradlew.bat
And make sure you are in the folder you downloaded
It says deprecated gradle features were used in this build making it incompatible with Gradle 8.0
I've got a mate who was able to compile it so he's going to try to compile it for me instead, not sure why it wasnt working for me
try --warning-mode all and itll tell you what deprecated features u used
Weird though, we are using the same version and it should work just fine.
I've already deleted the folder and all that stuff, my mate got it working for me and now its doing what I wanted and formats numbers up to $999Sp :)
Cool
Appreciate all the help, sorry i was a bit troublesome lol. I dont plan on doing this like ever so probably wont have to deal with me in here again thankfully 😂
No problem
Any reason why File.createTempFile(String, String) doesn't make the file with the proper ext?
ext?
extension
suffix - The suffix string to be used in generating the file's name; may be null, in which case the suffix ".tmp" will be used
so what do you have in the suffix param and what extension are you getting?
are you sure?
I tested java public static void main(String[] args) throws IOException { File file = File.createTempFile("name", ".txt"); System.out.println(file.getName()); System.out.println(file.exists()); file.delete(); } on my pc and it works: ```
name6104929944890761521.txt
true
\Local\Temp\56017f11-6da8-44fe-b0f5-19fba37b56223637234225750069121txt
did you forget the .? 🙃
It says "suffix", it can be anything, so you probably need the dot as dkim showed 
Yeap just found that name.substring(name.lastIndexOf(".") + 1)
Need to remove the + 1
👍
Why is a prefix required if it already randomizes the name?
it isn't requried tho?
Can't be null & can't be shorter than 3 char
ah, you are using the old File API
java 23 File
Ah yeah didn't want to use the attributes
you don't have to pass any tho?
no?
I was putting null 🤦
yeah got that
any people good with vps' able to help me out real quick
I just cant get into my vps with ssh ive reset it and all
so confused
wassup peeps: is there a better way to call listeners/events, instead of calling each one everytime for it to work?
https://paste.helpch.at/ehociwinuh.csharp
What?
use a command framework i suppose
but that's maybe making things much more complicated
You can clean it a little but thats about the "best" way.
He doesn't like having to instantiate everything
use Reflections library 🤓 (or write class finding yourself)
Interface for listeners (same for commands):
@Retention(RetentionPolicy.RUNTIME)
public @interface Listener {
}
Your listener classes:
@Listener
public class PlayerJoinListener implements Listener {
public PlayerJoinListener(MyCoolPlugin plugin) {
// I asssume you register it here
}
}
Your instantiation logic in your main class:
public void instantiateListeners() {
new Reflections("my.cool.package.listeners").getTypesAnnotatedWith(Listener.class).stream()
.forEach(listenerClass -> {
try {
listenerClass.getConstructor(MyCoolPlugin.class).newInstance(this);
// It would be better to register it here instead of in the constructor
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
This way all the listener classes annotated with @Listener will be registered automatically. No need for a "command framework".
ping
it's like using a nuclear reactor to power a toaster
not really worth it unless you have a very big project
and in that case i'd generally favour something like Guice modules rather than magic searching
yes thank you for the ping 🙂
it's not like I don't like doing it, but maybe there is a better way yk
I don't like doing it 🤷
nobody likes it
it's like doing your dishes
you can do them by hand or you can buy an industrial dishwasher if you have a shit ton of dishes to do
but if you only have a few plates it's probably not worth it
Pffft You don't know me. I don't care how many dishes there are, they are getting washed by hand.
bro would NOT survive in the catering industry
I don't care if others use a dishwasher but I don't
how is Guice any less than this
sure I mean if you have two commands why bother with reflections and class searching
I understand that Reflections might be a "big" library for such a simple use case, but you can write the search logic yourself if you wish
personally I just go with Stream.of(new MyListener(), ...).forEach(listener -> ...), but to each their own
yeah it’s not really, I’m just saying if you have to choose between the 2 I’d pick guice
Yeah or use constructor method references in this case
reflections bad
But you can also generate code at compile time that does what you need
I had a plugin that had 100 different implementations so I had to use class graph to get them all lol
I will die on the Guice hill
Especially for stuff like that, encouraging compartmentalisation
dagger >>
Anyone have example usage editing a string in a constantpool using the new api? Google search fucking sucks.
I can read the strings I need but can't figure out how to modify them.
You mean the jdk classfile api?
yes
I don’t think you can patch the constant pool directly
You can build, parse it. I don't see why you can't edit it.
Google keeps showing ways that don't aline with the actual use case so there must me something its just showing the wrong shit lol
because directly patching it would be a pretty broken implementation
Can also "add" but thats useless to me.
if you want to rewrite class references, there is ClassRemapper
if you want to rewrite string values, you can use that as an inspiration I guess
oh wait is ClassRemapper one of the classes moved into internals extremely late?
Maybe I'm explaining wrong.
Its possible to edit a constant pool with ConstantPoolBuilder. I and google can't figure out how 😉
I'm currently reading the strings I want with```java
ClassFile cf = ClassFile.of();
ClassModel model = cf.parse(FileMethods.asBytes(toParse));
ConstantPoolBuilder constantPool = ConstantPoolBuilder.of(model);
constantPool.forEach(ent -> {
if(ent instanceof StringEntry)
String asString = ((StringEntry) ent).stringValue();
});
.
ASM does it
ASM is extremely low-level and allows you to generate any waste you want
(more or less)
Google thinks in java 22 you can return an entry to modify it but thats wrong.
google is flooded with ai shit
you most likely want to remap ldc instructions, probably also annotation values
cant u js rebuild it?
Anyway to pass the entry to another pool?
Something simple like ConstantPoolBuilder.add(PoolEntry) I only see methods for each individual entry type.
How would that help you?
Rebuilding the pool with different values
I'm really confused by what you are trying to do.
And you mentioned that ASM can do it, why aren't you using that?
I am currently. But want to use base java
I told you already that’s not how the API works
Have I ever cared how it works?
I know its possible to do it. I just can't figure it out.
💀
@hoary scarab
https://m0dii-dev.xyz/paste/66698b9b
is this what you're looking for?
Yes and no. I can already edit strings in my .class files with ASM
I'm looking to do it with the Java api
what do you mean java api?
...
oh thats a new thing lol
yeah I havent used it so not sure tbh
I mean I already gave the answer but 
ASM?
.
Have you tried ASM?
lmao
we need a MC server implementation in ASM
different asm
Anyone wanna help me with abit of python spent 2 hours trying to get a cog to do as its told and it doesnt want to work 😦
whats a cog
like cogs?
extensions?
i see
yeah tbh i said i see but i still have no idea what you are talking about
make a discord bot im trying to put a cog/extension to run off the main file to run all the games from
what libraries are you using
ok that is very helpful
do you care to share your code which isnt working
i suggest pastebin
So how is it not working
Ive not done anything like this for years its my first time going back to it hense why im abit confused and yes, what im trying to do to try and explain abit better ive got a main file called bot.py ive also got a folder called cogs inside of the folder is a file named games.py im attempting to use games.py for all my game stuff on my bot and keep bot.py clean / ready for other cogs/extensions ive got 2 commands inside of the games.py file but they are not being registered like when i try and run the commands it says command not found ( but when i restart the bot it says games cog loaded successfully)
hopefully that is a bit better explained
Share your code
https://pastebin.com/Z4UHFXfL
thats the bot.py file obvs with the bot token bit removed
https://pastebin.com/DRJuFsSE
thats the games.py file nothing removed.
hmm odd
Do you see anything major wrong?
nope
hold on ill send the folder when my laptop decided to respond
thats the folder the files are in
https://imgur.com/a/AIfqo6y and thats the console log
^ did manage to get it to work adventurly changed from discord.py to py-cord
There is something wrong with it.
Let's figure it out shall we?
On the console, there is something wrong with Coroutine Not Awaited that happened to be (RuntimeWarning). Which lead to Commands Not Found even you command for (start_game, hello) so that not working. Maybe there is Incorrect Syntax for Loading Cogs.
Replace your load_external('cops.games') to await bot.load_extension('cops.games')
In cops/games.py, define commands like this:
class Games(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command()
async def start_game(self, ctx):
await ctx.send("Game started!")
async def setup(bot):
await bot.add_cog(Games(bot))```
For Await Coroutines Properly
await bot.load_extension('cops.games')
bot.setup_hook = setup_hook```
Anyone that got experience with a Rainbow Cycle class?
I'm trying to add the Cycle so it goes from red to yellow ect. It's for my Trails plugin.
hello can somebody review code for the plugin i made and tell me what i can do better?
Hi! I'm trying to implement Libby into my project, as some transcendent dependencies of my plugin conflicted with a different version of said dependencies of Spigot. I'm using AlessioDP's Libby 2.0 snapshot, which allows to manage transitive dependencies. I've ran into an issue. First, if I download a library (A) with all its transitive dependencies (B,C) it will only relocate the main library but not its other dependencies. And then, if I try to add the dependencies (B,C) as libraries, the "main" library (A) will fail to use the relocated version of B,C and instead will use the server's version, which causes conflicts as are not compatible versions.
What should I do?
https://github.com/TigerTheBoss/HomesV5/blob/master/src/main/java/org/slimecraft/homes/api/impl/dao/UserHomeManyDao.java#L48 doesn't this return a Home with just the identifier set, no location or name?
ah you are reading the rest in UserServiceImpl, cool
https://github.com/TigerTheBoss/HomesV5/blob/d58faf3ea4e0282a033e7f91f51c6d6e3c27b4f0/src/main/java/org/slimecraft/homes/api/impl/service/UserServiceImpl.java#L42
this will throw concurrentmodificationexception, no?
seems like using removeIf would be cleaner
I think you should definitely incorporate a caching layer into your data storage
and probably refactor it to use Futures or some other async mechanism
Hey! I have a problem, I want to center messages without taking into account parameters such as &#(HexCode) &l ...
The problem is that it does weird stuff, and I'm not at all confident about doing it myself, so do you know any methods or libraries for this kind of thing?
private String centerText(String message) {
int lineWidthPx = 154;
int messagePxSize = 0;
boolean previousCode = false;
boolean isBold = false;
StringBuilder currentLine = new StringBuilder();
List<String> lines = new ArrayList<>();
for (char c : message.toCharArray()) {
if (c == '§' || c == '&') { // Codes de formatage
previousCode = true;
} else if (previousCode) {
previousCode = false;
isBold = c == 'l' || c == 'L';
currentLine.append('§').append(c);
} else {
messagePxSize += isBold ? 6 : 4;
if (messagePxSize >= lineWidthPx) {
lines.add(currentLine.toString());
currentLine = new StringBuilder();
messagePxSize = isBold ? 6 : 4;
}
currentLine.append(c);
}
}
lines.add(currentLine.toString());
StringBuilder centeredResult = new StringBuilder();
for (String line : lines) {
int lineLengthPx = 0;
isBold = false;
for (char c : line.toCharArray()) {
if (c == '§' || c == '&') {
previousCode = true;
} else if (previousCode) {
previousCode = false;
isBold = c == 'l' || c == 'L';
} else {
lineLengthPx += isBold ? 6 : 4;
}
}
int offset = (lineWidthPx - lineLengthPx) / 2;
for (int i = 0; i < offset / 4; i++) {
centeredResult.append(" ");
}
centeredResult.append(line).append("\n");
}
return centeredResult.toString();
}
}
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
tysm <3
👍
Is there a website with a list of premade functions ? ( or useful libraries )
I would say just use google but its gone to shit.
Use a search engine of your choosing and just search for what you need. More then likeley you can find what ever you're looking for already made.
Ty but for example for this I did not find anything interesting
I mean if you want to be technical... github.com lol
But like I said if you search for it there is usually already a lib/api for it.
ClassModel unparsed = ClassFile.of().parse(FileMethods.asBytes(toParse));
ConstantPool unparsedPool = unparsed.constantPool();
System.out.println("Unparsed Size: " + unparsedPool.size());
ConstantPoolBuilder poolBuilder = ConstantPoolBuilder.of();
// Loop through unparsed modify & write entries to poolBuilder
System.out.println("Parsed Size: " + poolBuilder.size());
byte[] parsed = ClassFile.of().build(unparsed.thisClass(), poolBuilder, t -> {});
FileMethods.writeToFile(file, parsed);
```Unparsed/parsed size match but when I decompile the class its missing the variable...
Unparsed:```java
package com.thecrappiest.module;
public class Test {
private String test = "%%__USER__%%";
}
```Parsed:```java
package com.thecrappiest.module;
public class Test {
}
I also debugged both unparsed and poolBuilder and they are the same besides the string being changed.
well you're building an empty class with t -> {} I guess
// Loop through unparsed modify & write entries to poolBuilder is this showing that there's more code you're not sharing?
yeah lol
Yeah tried using my looping with on the builders constant pool with the same output.
Its a switch with all tags because the pool doesn't have a method with 1 param type for PoolEntry
the constant pool is only one part of the whole class
it doesn't define fields or anything
you need to actually add stuff to your class
it's for the api to add constants it needs
I don't think it should ever be the case that you use it directly
So what is the point of having it as a parameter if Its not used by the builder?
this way you can share constant pools in case most of it just stays the same
Maybe I'm reading this wrong. How would it be shared... if its not used by the builder?
wait, why do you think it's not used by the builder
I have to build the class still.
None of the entries are converted to elements.
it's the constant pool, not the rest of the class file
The constant pool does not describe the class
You are not building the class, you're just ignoring it t -> {}
Updated:```java
byte[] parsed = ClassFile.of().build(unparsed.thisClass(), poolBuilder, builder -> {
unparsed.forEach(ele -> {
builder.accept(ele);
});
});
Yeap still can't solve it.
Try again tommorow.
I assume the result now is just the original class?
Yeap was hoping one of the elements would be the constant pool
what
was hoping one of the elements would be the constant pool
I already told you that you can't patch the constant pool directly like a week ago
are you still trying to do that anyway?
Ofcourse 😉
incredible
the api just does not allow to arbitrarily patch the constant pool
no matter how hard you try
you need to remap the ldc instruction
That required manipulating the bytecode. I want to make some use of the API rather then just writing it all out.
what
your words don't make any sense
you are doing everything but using the api in the way it is designed
Class -> Read -> Edit String -> Write
out of curiosity, why not
because people smarter that any of us decided it would be a bad idea if they did
that's exactly what you'd achieve by remapping the ldc but sure
Same reason were still forced to use ASM or similar.
i think it would be a nice and fun idea
thats not what im asking
Again... I would have to read through all bytes while also manipulating them and I just didn't want to get into the byte data.
when I'm on a computer, sure
Unfortunately
asm has to copy everything once you rewrite a single constant pool entry too
Yeah but its not my code
Yeah went through all those. Didn't do exactly what I want so went to constant pool.
it does do exactly what you want to do
it does exactly what you want
you want to find all the ldc instructions and modify them
SON OF A BITCH!
Weeks wasted 🤦
Saved 200kb lol
...
I work better with code then "explanations"
A simple java library for parsing placeholders in files. - TheCrappiest/Parseit
Why is it not embedding the image?
Hi all! Where can I create a ticket or where is a special chat where they can help me with the plugin? I'm new here, I don't understand.
Just put your message in the most relevant channel, most likely #general-plugins for your case.
hey lads
I want to go through a class with multiple listeners and enable each one individually based off the config, but well that isn't quite working
is this even possible without doing some funniness like making a class for each listener
my current attempt
// Connect listeners
PluginManager pm = getServer().getPluginManager();
if (channelSettings.replicateMinecraftMessages()) {
pm.registerEvent(new Minecraft().ReplicateMessages(), this);
}
do you mean multiple @EventHandler's? you don't need to do anything extra for that
ya
there's nothing extra you need to do for that
just have multiple @EventHandler annnotated functions in the class
also your functions should never start with an uppercase letter unless you'e doing some kotlin dsl stuff
why are you trying to do that
"enable each one individually based off the config"
ah mb
dw
well it's not silly at all to create different classes
eh I suppose so
people tend to do that anyway
I just felt like it would be nicer to have them all in 1 class
im still learning naming schemes
doing whatever looks nice to me
don't be afraid to split up code between functions and classes as necessary, ofc there is "too much" and "too little" but you will learn
the alternative to creating multiple classes is having something like a check at the start of every listener method and "if (!config.thisEventEnabled) return" which is also a reasonable option
that would be a waste of resources though
even if it's not much it's still doing something
well no
if it's already being defined in your config then it's not anything extra
and i guarantee you, 1 extra if statement has zero measurable impact on your code
avoid premature optimization
well, it would be run every time the listener got fired wouldn't it?
yea
that has no impact on anything
no
it's just
almost nonexistent
you have a million other things to be worried about before that is something to be worried about
fair enough
performance is not always a priority either
didn't read the article but considering the title... probably accurate
I'll have to read that later then
any updates on this?
Not sure if anyone can help, but haven't got anything back in the MythicCraft Discord yet about it:
Hello! Anyone know how to apply an offset to a ModeledEntity or ActiveModel? I'm trying to use MEG models for hats/in-game items and I can't really find a way of doing so. I've tried ItemDisplay with a translation offset and it didn't seem to work.
HOW
HOW
banned sir ty 🙂
"pog champ"
Im getting an error message in my console and its taking me to this
https://api.minecraftservices.com/minecraft/profile/lookup/bulk/byname
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>Microsoft-Azure-Application-Gateway/v2</center>
</body>
</html>```
This is the error message
Any clues what the hell is going on because im so lost
rate limit issues with mojang services
it's kinda absurd, everyone has been experiencing an increase in rate limit errors even if it just shouldn't happen lol
Yeah right, im not sure if this is the cause or not but ever since they started players on my server have been getting lag issues where they simply cant load in and then they time out
Hey, when a player creates a coinflip using DeluxeCoinflip, relogs and opens a gui menu it "desyncs" the menu and allows players to take items out. I thought the plugin was not closing the gui correctly but that isnt the case; i tried this
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "dm execute " + player.getName() + " [close]");
}
if (loser.isOnline()) {
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "dm execute " + loser.getName() + " [close]");
}```
In the console it confirms it has closed, but the gui doesnt reflect it
I tried delaying the animation start by 2 ticks to allow this to happen incase that was the issue and that still didnt work
What even is that?
What is what
That code, what is it doing, why is it using dm execute?
Other things do not work
thats the original report
Im pretty sure there is a method in bukkit to close the inventory of a player, or just smth like Player#getOpenedInventory().close()
It's just Player#closeInventory
yeah well guess what
it doesnt do shit
Does anyone know how to setup Pterodactyl on cloud server using cloudflare domain DNS ?
its a secret
Anyone got some recommendations for a license system for minecraft plugins?
None
enable the command block setting in server.properties
please google things before going to discord to ask
you will get a quicker answer
i did i alr
bro
still i cant place
be in creative, be op, paper adds a permission I think
ooh yeah thats certainly a good thing
I am not sure on how to apply this end portal shader to entities like endermen
My papi addon stopped working after 1.21 update, i will see better the details later, but wanted to ask if there was a major change or smth
No
k uploaded the fix (it was an issue on my implementation) only needs verify https://api.extendedclip.com/expansions/movecraftpapi/
Is there any possible way to apply slow-falling to a non-living entity?
Or would you have to simulate it with some velocity shenanigans
I need help with the new item displays, I summoned 4 of them, but the problem is since its a custom border on a big map, it'll scale hundreds of blocks when its big, even when its small, it will still extend that way vertically. When I scale that large, it stretches the texture out so much that it literally changes it's colour to light blue, how can I keep the original colour? it's just a completely purple texture with less opacity, but still gets scaled out like that. is there anything I can do with the texture to maybe solve this issue? Or some property im missing?
what exactly is that non-living entity?
if you mean instance of Entity but not LivingEntity thn you can probably do some "hacks" like spawning invisible LivingEntity, applying slow falling to that entity and setting passenger
java.lang.NoClassDefFoundError: net/minecraft/network/NetworkManager```
I know NetworkManager was changed to Connection, and I'm using Connection, but why am I still getting this error? Is there a way to fix it?
Still being referenced somewhere in your code
uhm
iirc only living entities can mount things, but I found a different solution.
Thanks
its a method from Entity class
Anyone know how to make a rideable controllable ender dragon
Hello, I feel insane right now but how on earth do you detect merchant trades, as in from a MerchantView, in a way where you can cancel it? It feels like there should be a PlayerTradeEvent.
https://jd.papermc.io/paper/1.21.4/io/papermc/paper/event/player/PlayerTradeEvent.html paper is here to help
declaration: package: io.papermc.paper.event.player, class: PlayerTradeEvent
that's great and all but I'm developing for Spigot
Why
I prefer to develop for Spigot because it just works on more places
and im developing for a server that will be running Spigot
?
Spigot is worse than paper in every aspect
it has a habit of changing vanilla gameplay mechanics
That‘s what spigot does, yeah
it's what paper does
Paper fixes some of the things spigot breaks
like?
Well, good luck implementing that in spigot with nms and whatever
thanks, I get the feeling I'll need it
False lol
Bstats says otherwise https://bstats.org/global/bukkit#serverSoftware
And why
Spigot plugins work for Paper + Spigot servers, so yes, more platforms
I get why one would use spigot for a public plugin, but for a private plugin?? 
Misleading, paper legit fixes spigot's fixes of vanilla things, besides allowing you to disable those fixes
Well that is useless when paper has over 85% of the market share
And when paper hard forked, meaning spigot support will slowly fade away
True, they do allow disabling
Exactly so no reason to use spigot
eh
Using spigot api (or well spigot itself) in 2025 is sad
And that is a well known statement
Paper API pretty much encapsulated the spigot api
Then you will know why your statement is irrelevant
are you telling me that at this moment they aren't almost entirely the same?
Their foundations are the same due to it being a fork, do they provide the same? Def. Not, registeries alone are enough to destroy spigot lol, but paper has even more than that
the linux version diversity is beautiful
And that does not change the fact that your previous statement (or well, this one) is irrelevant to the convo lol
i was just looking lol
it looks nice
I used paper before
and there was a reason, I was having issues with it so I started just using Spigot
lemme see if i cant find my test server
That is called user error and skill issue my friend
Chances are 98% that it was
cmd errors (on builtins)
I had issues driving a car so I stuck to riding horses
Perfect analogy
this is just preference
any public plugin I would never target paper
so why would I on any other project?
What
point is your solution of just using a different platform is unhelpful, but thanks anyway
But it fixes your problem
definitely leave me alone, im not sure how exactly I've been brainwashed, clearly the secret spigot spies or whatever
and I do use paper? all the time
i just haven't this time and want to leave the option not to open
I'm sorry that this decision has personally offended you
good night fellow interneters 👋
its 1pm
because it offers api with the very solution to the exact problem you are currently facing?
and tons more api for other problems you might run into
but alas
Some people don't want solutions 
yeah idk what they were asking for then
"hey i have this problem" damn bro that sucks
The amount of issues I have had open that only affects spigot is crazy, things as simple as InventoryClickEvent simply just not triggering on hopper inventories on Spigot for absolutely no reason
lmao
because inside the request method you are checking the identifier as well (playercheck whatever). That's not part of the string argument.
^
in your case the placeholder would be %playercheckexists_playercheckexists_<...>%
Hello can someone help me Im trying to install a plugin I got from github into my intellIjidea project so i can edit the contents of it and add fetures but im having trouble and is lost.
So first you need to download the zip file.
Drag it into a folder in your pc.
Open ID and click on a open a projet.
Choose the project folder 😉
Hi I got a question I have a serious problem I created my own server a few weeks ago rent it on gportal. So today I stupidly showed the ftp data so the IP the port the username the password and the link to a unserious Developer now he blocked me on dc and left our Server what is he still able to do now and How can I disallow him to do anything. Hopefully somebody could help I would be really grateful
He can literally do anything he wants with your files.
You should contact your suupport
ok and what should I ask for
How to edit your creditentials for FTP
ok
and could anyone translate what this does he set it up
[21:20:19 WARN]: [SimpleScore] Task #34025 for SimpleScore v3.12.5 generated an exception
java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2
at java.base/jdk.internal.util.Preconditions.outOfBounds(Unknown Source) ~[?:?]
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Unknown Source) ~[?:?]
at java.base/jdk.internal.util.Preconditions.checkIndex(Unknown Source) ~[?:?]
at java.base/java.util.Objects.checkIndex(Unknown Source) ~[?:?]
at java.base/java.util.ArrayList.get(Unknown Source) ~[?:?]
at SimpleScore-3.12.5(1).jar/com.r4g3baby.simplescore.scoreboard.models.PlayerLine.getShouldRender(PlayerLine.kt:22) ~[SimpleScore-3.12.5(1).jar:?]
at SimpleScore-3.12.5(1).jar/com.r4g3baby.simplescore.scoreboard.tasks.ScoreboardTask.getPlayerScoreboard(ScoreboardTask.kt:133) ~[SimpleScore-3.12.5(1).jar:?]
at SimpleScore-3.12.5(1).jar/com.r4g3baby.simplescore.scoreboard.tasks.ScoreboardTask.getPlayerScoreboards(ScoreboardTask.kt:102) ~[SimpleScore-3.12.5(1).jar:?]
at SimpleScore-3.12.5(1).jar/com.r4g3baby.simplescore.scoreboard.tasks.ScoreboardTask.run$lambda$8(ScoreboardTask.kt:76) ~[SimpleScore-3.12.5(1).jar:?]
at org.bukkit.craftbukkit.scheduler.CraftTask.run(CraftTask.java:78) ~[paper-1.21.4.jar:1.21.4-138-5395ae3]
at org.bukkit.craftbukkit.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:474) ~[paper-1.21.4.jar:1.21.4-138-5395ae3]
at net.minecraft.server.MinecraftServer.tickChildren(MinecraftServer.java:1659) ~[paper-1.21.4.jar:1.21.4-138-5395ae3]
at net.minecraft.server.MinecraftServer.tickServer(MinecraftServer.java:1529) ~[paper-1.21.4.jar:1.21.4-138-5395ae3]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1251) ~[paper-1.21.4.jar:1.21.4-138-5395ae3]
at net.minecraft.server.MinecraftServer.lambda$spin$2(MinecraftServer.java:310) ~[paper-1.21.4.jar:1.21.4-138-5395ae3]
at java.base/java.lang.Thread.run(Unknown Source) ~[?:?]
the SimpleScore plugin seems to be accessing an index in a list that doesn't exist
A plugin is a software component that adds specific features or functionality to an existing program without modifying its core structure. Plugins are commonly used in various applications, including:
Web Browsers (e.g., browser extensions like ad blockers)
WordPress (e.g., SEO tools, security plugins)
Media Players (e.g., codecs for additional formats)
Development Tools (e.g., VS Code or JetBrains plugins)
They allow customization and enhancement of software without needing to alter its original code. Do you have a specific plugin type in mind?
ok
the genius
As Web developer, I can do plugin.
I think you have got any problem.
Say me. I can give advice for you.
ok
???
???
ok??? Thank
welc
I love plugin
You think wrong, I don't have any problems, my job is to solve problems, I am a professional problem solver.
welcome.
I have a problem
Seems like you really do
okay
welcome you too
too welcome
thanks
There is no time to wait! Ask your question @misty prism
what is your job?
Professional discord moderator
I am a professional liaison with your mother
I'm web and blockchain engineer. Can you introduce client and task for me?
ofc I will pay
What blockchains have you made
name every blockchain
Do you know $HAWK
2blockchainz
Yes not only $HAWK but also w3, and solidity and so on
thank you for your care
Don't think I've ever heard of that blockchain, is it new?
what's the mean?
Yes
did you also do ww3?
okay
hawk tuah
you are welcome I love you
thank you. can you help me?
yes I do
nice
I'm looking for client.
chain block
Yes, but I prefer Crypto.
What can I do for you?
HAWK is a crypto
as i said, i would like a blockchain
i would like my own coin
I sent request friend.
Would you click accept?
place a barrier in front of that and you have block chain
you have not send me
Excuse me, would send me D M?
Excuse me, would send me D M?
Aright!
Do you know about blockchain?
I am blockchain
what? You are blockchain? lol...

