#help-development
1 messages · Page 937 of 1
nothing will change
you're storing a reference to the skin texture rather than the players active skin
Check for errors in the gradle log
Ah so you wanna store that in a database instead of getting it everytime onEnable
yeah if you want to keep using the same skin just save the url somewhere
alright thanks
where would I find that?
in the ide when you reload
the thing is that it doesn't show anything, that's why I'm so confused
mhm
yeah I got this:
TreasureBattle:main: Could not find com.github.StillLutto:LuttoLib:0.0.1.
Searched in the following locations:
- file:/C:/Users/iAmEi/.m2/repository/com/github/StillLutto/LuttoLib/0.0.1/LuttoLib-0.0.1.pom
- https://repo.papermc.io/repository/maven-public/com/github/StillLutto/LuttoLib/0.0.1/LuttoLib-0.0.1.pom
- https://hub.spigotmc.org/nexus/content/repositories/snapshots/com/github/StillLutto/LuttoLib/0.0.1/LuttoLib-0.0.1.pom
- https://oss.sonatype.org/content/groups/public/com/github/StillLutto/LuttoLib/0.0.1/LuttoLib-0.0.1.pom
- https://repo.maven.apache.org/maven2/com/github/StillLutto/LuttoLib/0.0.1/LuttoLib-0.0.1.pom
- https://jitpack.io/com/github/StillLutto/LuttoLib/0.0.1/LuttoLib-0.0.1.pom
Required by:
project :
Possible solution:
- Declare repository providing the artifact, see the documentation at https://docs.gradle.org/current/userguide/declaring_repositories.html
Looks like it can't find your lib
I assume you didn't publish it to your local maven repo
which is weird since I grabbed it from jitpack
well it is jitpack
you have a build error on JitPack
Finally after getting yelled at , and bullied by someone xD
i finished my sql lib :p
if i want to create a new table with data :
just like that
nice
Thanks
also
you can make your own Data class for example a user class with uuid , wins , kills , deaths
uhmmm, so it's trying to build with gradle 4.8.1...
mhm and it's saying why and how to fix it
There's also another issue which it also tells you how to fix
yes. thank you for your help, I was dumb and didn't realize that after I added the gradle-wrapper before I even asked here, I was still using the release that didn't include that commit
How do you handle N-to-many relations? Like a List for example.
if(player.hasPermission("antiillegals.bypass")) {
return;
}
if(item != null && item.getType() != Material.AIR) {
if(AntiIllegals.getInstance().getIllegals().contains(item.getType())) {
item.setType(Material.AIR);
return;
}``` Did I mess something up? The line of code is fired, but the item does not get removed
don't set the type to air
Is it fine to create entities not with packets when i turn the ai off, or do they still take lots of memory?
It's fine
i want to do this to save my sanity from maintaining packets, but im not sure how expensive it is to cancel all the events and handle the visibility.
what events
EntityCombustEvent, or EntityTrqckEntityEvent (paper) to handle them
I mean you can make them invulnerable which probably disables catching fire
Okay then this is fixxed, but the tracking one is needed to Show it to only specific playerd
Yes but when i cancel the tracking they are never shown and this means less iterating over all players and hiding the entity
setVisibleByDefault
Im not sure what hideentity does internally but i think its more expensive then cancelling
And when i setai to false they dont tick anymore so performance 📈?
I mean they still tick some things
it still has to be visible when in range and handle gravity
Ans when i turn gravity off too?
What can the entity tick at this point?
it's best if you check the nms and see what setai does
i dont know how to decompile stuff
this is not expensive tho even if i would spawn 1000 of them?
?tas
im not experienced, i dont even know if 1000 entites spawned with packets cause lag
That’s what testing is for?
Too old! (Click the link to get the exact time)
We can’t magically tell you how well your server will handle it
?
yes, i think i should rephrase my question then.
are 1000 packet based entities as expensive as 1000 noai real entities?
No
so 1000 packets entities are cheaper. do you know by how much? or is the amount so low to not care about?
No idea
I can
His server will crash
As long as you follow ocp you'll be fine
:(
does some1 know if an entity doesnt see another entity, for example a zombie doesnt see a turtle. Will the zombie also not react to the turtle?
i think you need entity ai implement for that
not sure
Does anyone know how to cancel blocks sent by packets disappearing when the player leaves the area using ProtocolLib?
anyone know how i can make the library i have be loaded inside my main plugin?without the need of having the lib in plugins folder?
Resend them the server is overriding the old ones as the client loads the chunk again
Shade it inside the plugin jar (or gradle uses shadow)
or have your lib on a Maven repo (Maven central) and add it to the libraries section of your plugin.yml
how long it takes to be accepted in the maven central?
Hey, I'm looking for a way to use a BaseComponent as the title of an inventory in order to use a custom font
I believe you need to use either NMS or paper for that
There's no native way in the spigot API
If you're using paper, you can pass a component on the inventory title
WIth NMS you need to be inventive
Hello so , iam trying to remake my skypvp plugin from zero , iam working on lootbox now , and i just wonder what is the best data base i can use to save lootboxes , and load them when i need?
in the past i used json for each lootbox
so common.json , rare.json
it was great , but it was hard for some users to use it
any advices :p?
JSON is pretty easy to edit.
You can try switching to YAML if you want even more leniency
and less structural rigidity
i was thinking about using Packets to spawn the Custom Entity
but again , i need to support every version :L
old 1.8.8 and new , cuz my customers 90% use 1.8.8 ..
well not for them
Json or yaml is probably the most human readable one before you start using a language interpreter lol
then they are dead
yeah i will use it again i think json
Is there a method I can do to wait x miliseconds without spinning up a new thread?
You can use an ExecutorService to run a task after X time
Or the bukkit scheduler if that's your thing
That is by definition using a new thread...
You can make it a constant and reuse it
private static final ScheduledExecutorService EXECUTOR = Executors.newScheduledThreadPool(1);
EXECUTOR.schedule(() -> {
}, 123, TimeUnit.MILLISECONDS);
Can you tell me more about the latter?
?scheduling
It's not millisecond accurate but the server uses ticks
And "so should your code"
Each tick is 50ms under perfect conditions but things can deviate if the main thread hangs
I dont care about the code, I am extremely familliar with lambdas and runnables. I need to know how to actually use the sheduler
90% of this is just code
I know how to use it all
Great so let's be brief
You have 4 variants:
- Delayed tasks on the main thread
- Repeating tasks on the main thread
- Delayed tasks off the main thread (async)
- Repeating tasks off the main thread (async)
And at least 2 methods to schedule each variant, one's the schedule... and the other is the runTask...
You want to use the runTask methods
Javadocs tell you everything
So for scheduling a delayed task on the main thread, the method's runTaskLater(Plugin, Runnable, Delay Ticks)
Etc
runTaskLater, runTaskAsynchronously, runTaskTimer and runTaskTimerAsynchronously are the methods you want
The only difference is that the timer methods (repeating) have a second parameter
The first parameter is the delay ticks until the first iteration and the second parameter is the amount of ticks between iterations
You can also replace your Runnable with a Consumer<BukkitTask> on the timer methods in case you want to cancel the task from itself
Thanks
I have 2 minecraft instances open right now, and on one of my accounts if I do anything that swings my arm, it wont show that it swinged my arm from the other instance
but if I swing my arm from the other minecraft instance it shows that im swinging my arm just fine? anyone got a clue why this is happening
starting to think my account is cursed 💀
player.swingMainHand(); doesn't do anything for only one of my accounts aswell so idk whats going on
Okay I found the problem, I think it was something in the playerdata file that was making it so that it wouldn't send the arm animation packet to the players around and it would also ignore swing arm packets getting sent from the server to the client, cause clearing the playerdata file just magically fixed the problem
@EventHandler
public void onChatEvent(ChatEvent event) {
ProxiedPlayer p = (ProxiedPlayer) event.getSender();
String msg = event.getMessage();
if (msg.startsWith("#")) {
event.setCancelled(true);
for (ProxiedPlayer online : ProxyServer.getInstance().getPlayers()) {
online.sendMessage(ChatColor.translateAlternateColorCodes('&', msg));
}
}
}
Trying to setup a bungee staffchat plugin but getting kicked for Received chat packet with missing or invalid signature.
anybody knows how to fix?
ProxiedPlayer#sendMessage(String) seems outdated. Use an newer BungeeCord version.
It's deprecated, I'm new with bungeecord so I'm just testing some stuff
You should generally avoid using any deprecated methods in java.
If its deprecated then there is an alternative.
Noted
Is velocity related to ai for mobs?
This question is too general. Each mob has its own specific AI and some might take their current velocity into account.
I want to set a velocity for a zombie for example
and i dont want it to move
so i turned off ai

I mean movin around
That wont work. setAI to false will prevent it from being ticked for movement as well.
Im working on an expeirmental project that uses various algorithms to navigate and pathfind
And I dont want the zombie to move around but i want to set a velocity to it
what should i do
Implement a custom pathfinder in nms
and i want to avoid nms if unnecessary
Just setting the velocity will look weird. You need to actually add your own pathfinder goals.
still having this problem
declaration: package: net.md_5.bungee.api.connection, interface: ProxiedPlayer
It's not about the send message
it's about the Received chat packet with missing or invalid signature.
What method do you call?
@EventHandler
public void onChatEvent(ChatEvent event) {
if (!event.isCommand() && !event.isProxyCommand()) {
ProxiedPlayer p = (ProxiedPlayer) event.getSender();
String msg = event.getMessage();
if (p.hasPermission("BungeeCord.StaffChat")) {
if (msg.startsWith("#")) {
event.setCancelled(true);
ProxyServer.getInstance().broadcast("test");
}
}
}
}
Cancelling the event does this but I have no idea how to fix it
by cancelling the event you stop the message which ig mojang class as changing it
Disable chat signing
how
enforce-secure-profile is already on false
The thing is I tried putting on a different plugin using the same prefix and cancelling the message event and it does work
Remove the EventHandler annotation and check if you still get the unsigned message error
I was just checking if you have other listeners which could cause this
oh
is it because of the bungeecord version maybe?
or something I set up wrongly in the pom.xml
<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>Bungee</groupId>
<artifactId>BungeeCord</artifactId>
<version>0.0.1-SNAPSHOT</version>
<repositories>
<repository>
<id>bungeecord-repo</id>
<url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>1.20-R0.1</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>net.md-5</groupId>
<artifactId>bungeecord-api</artifactId>
<version>1.20-R0.1</version>
<type>javadoc</type>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
I would def change your group and artifact id...
Not that it causes this problem. But still
Update your Bungeecord server to the latest version
What happens if you just broadcast the message without any event being cancelled?
And what happens if you cancel the event without broadcasting a message?
kicks me with the chat packet with missing or invalid signature
waiting
Try this (cleaned up your code with guard clauses a bit)
@EventHandler
public void onChatEvent(ChatEvent event) {
if(!(event.getSender() instanceof ProxiedPlayer)) {
return;
}
if (event.isCommand() || event.isProxyCommand()) {
return;
}
ProxiedPlayer p = (ProxiedPlayer) event.getSender();
String msg = event.getMessage();
if (!p.hasPermission("BungeeCord.StaffChat")) {
return;
}
if (!msg.startsWith("#")) {
return;
}
event.setCancelled(true);
ProxyServer.getInstance().broadcast("test");
}
Alright, then the only way is not cancelling the event.
Combining a spigot plugin that does the same thing with the same permissions and stuff is also possible and then the cancelling will be spigot sided
But yeah thanks for trying anyways
appreciate it
yeah I did
does anyone have nice small/medium plugin ideas?
Respawnable ores
Can you help me with PathfinderGoalSelector?? whats its name in 1.20.4?
its GoalSelector
right?
I do not understand the point of this plugin, is it something related to mojang mappings because I am using spigot mappings because in 1.8 those were the only mappings:
<plugin>
<groupId>net.md-5</groupId>
<artifactId>specialsource-maven-plugin</artifactId>
<version>1.2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>remap</goal>
</goals>
<id>remap-obf</id>
<configuration>
<srgIn>org.spigotmc:minecraft-server:1.20.1-R0.1-SNAPSHOT:txt:maps-mojang</srgIn>
<reverse>true</reverse>
<remappedDependencies>org.spigotmc:spigot:1.20.1-R0.1-SNAPSHOT:jar:remapped-mojang</remappedDependencies>
<remappedArtifactAttached>true</remappedArtifactAttached>
<remappedClassifierName>remapped-obf</remappedClassifierName>
</configuration>
</execution>
<execution>
<phase>package</phase>
<goals>
<goal>remap</goal>
</goals>
<id>remap-spigot</id>
<configuration>
<inputFile>${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar</inputFile>
<srgIn>org.spigotmc:minecraft-server:1.20.1-R0.1-SNAPSHOT:csrg:maps-spigot</srgIn>
<remappedDependencies>org.spigotmc:spigot:1.20.1-R0.1-SNAPSHOT:jar:remapped-obf</remappedDependencies>
</configuration>
</execution>
</executions>
</plugin>
is it possible to cancell the event of a player quitting 💀
What the hell are you trying to achieve with this ?
XD
no but you can prevent them from opening the pause menu with constantly opening a gui 💀
but anyways now i want that when the player quits the player should die
XD
alt f4 works btw
it reobfuscates the mapping
Why would I want that?
You want your plugin to run
to use it?
so you need to do that
Sinde 1.17 we have mojangs official mappings. So this basically deobfuscates the code for development and reobfuscates it when compiling.
if you dont reobfuscate it it wont work
I mean you could just write obfuscated nms directly
but that's harder and custom entities won't compile
I am not used to it since the only nms I've used is 1.8 and there I did not need that
Ok nice then I am assuming that the old way of just importing spigot instead of spigot-api will not bring offical mojang mappings?
In 1.8 importing spigot gave you debfuscated code iirc
(With spigot mappings)
Hey, im making a plugin that gives a player the ability to cast thunder from the sky. The problem is that i cant seem to detect the fires that bukkit strikeLightning method does around the strike location. I want to put them out. Anyone got any ideas for this
i am having trouble making it so that when a player types a command that my plugin makes it actually does anything, could anyone help lead me in the right direction or some resources i could look into regarding this?
?nocode what are you having trouble with exactly? are you getting an error? no response? have you registered the command? etc
https://www.spigotmc.org/wiki/create-a-simple-command/
It’s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.
i have coded 2 commands, and implemented them properly as far as i know, when the server boots up it says the plguin is running, but when a player types the command there is no response
?nocode
It’s hard to answer a programming question without code
Oh no! You ran into a problem. But no worries, people are willing to help, but first they need to see your code. This is because otherwise, they would be providing help based on guesses instead of concrete knowledge. Whether it be a compile error, runtime error, or an unexpected output, I'm sure that if you were to provide code, you'd receive a quick solution.
what is the most appropriate way to send my code in this discord?
?paste for large code blocks
You can use the discord code block format to display code or just text in a more pleasing way:
```java
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
}
}```
Becomes:
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
}
}```
here is my code
main class: https://paste.md-5.net/topugigidu.java
currencymanager: https://paste.md-5.net/vayirayeqo.java
player balance: https://paste.md-5.net/azogumogig.java
balance command: https://paste.md-5.net/orabuzukek.java
balancetop command: https://paste.md-5.net/mexigedumi.java
plugin.yml: https://paste.md-5.net/ocuzozebac.http
if (label.equalsIgnoreCase("balance") || label.equalsIgnoreCase("bal")) {
This is redundant. The onCommand only eve gets called with the command you registered it with, in your case it's "balance":
getCommand("balance").setExecutor(new BalanceCommand(currencyManager));
Try removing it and running the command again
Also show your plugin.yml
label probably shouldn't be used
you should be using command.getName() I think it is, if you want to check the command
label is for aliases
when there is no aliases registered, which you don't always have control over it defaults to the main command
however the user could create aliases in the appropriate commands.yml
if an alias does get registered to your command, your command eval there will not work
your second label check is an appropriate alias, and you should register it as such
then you effectively remove the double check
because aliases always invoke the commands they are registered to and you could just check the command 🙂
as such?
'''java
if (command.getName().equalsIgnoreCase("balance")|| label.equalsIgnoreCase("bal")) {
// Check if the sender is a player
if (!(sender instanceof Player)) {
sender.sendMessage("Only players can use this command!");
return true;
}'''
well its a start
should learn how to register aliases for your commands
then you would reduce it to no checks needed 😄
unless you wanted to do something different based on the alias used
alright i have followed the advice that has been given however, it still looks like i am not getting a response either in game or from consol
Yep
The plugin should crash if you try to call getCommand on an unregistered command iirc
So not sure how yours wasn't lol
thats what i thought too, hence why i thought it was all good
Doesn't the plugin crash if an exception is uncaught in onEnable?
Yeah from my experience the plugin shuts down if an error is uncaught in onenable unless i'm confusing smth
Bad wording on my part ig. I used "crash" and "shutdown" synonymously
right but then my on disable code wouldve been shown in consol right?
which was not the case
Not sure if it runs the onDisable if it gets disabled because of an exception
Maybe some other plugin registered a "balance" command and Bukkit found it
^^ this too
thats most likely the case i think, there are no other plugins on the server atm because i plan on having this one manage the bulk of it
This is for you to decide, but for commands you could use a library, such as ACF, which would handle some heavy lifting for you and only leave the command implementation itself to you
Though if you're just learning to make plugins I'd say it's better to first experiment with just spigot
I prefer Commandapi by jorel
zoltus
There is no good reason why commands should be defined in-line vs in their own class, just makes it messy
I’d say that in Kotlin this is perfectly acceptable, I usually declare my commands at the top level of the file in which most of the same behaviour happens
For example for parties
:D
I have a party.kt file where the data structure for parties is declared, the main manager which handles storage and various other events, and the commands
One of the blessings of Kotlin really
Being able to declare more than just a class and interface in a single source file without creating inner class porn
Technically you can declare classes and interfaces without access modifiers but they cant be referenced outside of the file
when using the RLiveObjectService, how can i count all live entities of one class?
count?
yes counting them?
Literally
The function called „count”
yes but there a parameter called condition
Yes
Pass null
Lol
Condition seems to be an empty interface
So it probably does instanceof checks
And logically speaking if the condition supplied is null, it is “unconditional” therefore it should return all entities
i tried
Thats my hypothesis this is my first time seeing this library code
illegalargumentexception
not needed it doesnt allow null as condition
Yes i am aware of thst
Im asking for the trace to make my life easier as github source viewer doesnt have reliable xref
I can see it calls into SearchEngine#find
Ok well
Idk how the fuck they expect you to do it
But logically i would make an “unconditional” condition
i think that doesnt work sadly, thanks for trying to help, im gonna look into the method more
Yeah it does do what I thought it would do though
Except instead of falling through snd adding all entities
It gives you an exception
How does textDisplay interpolation work? I set the delay to 0, duration to 20. And there is no animation
You need to set the delay and duration each time you change the transformation
most certainly not because of that
well then why is it that you cant place blocks because of a tab completer then?
are you sitting in spawnchunks without op?
tell me your reasoning why you think thats the case because thats not the issue
yeah what do you expect
a tab completer is 100% unrelated to block placement
try printing player in the event
because it likely has yourself in it because you ran the command
how can I make sure that the message is not replaced, but the animation is played again as the message appears? I thought about doing this, but nothing has changed (I think the problem is that the code is executed in a split second, and it does not have time to execute 2 animations one by one).
what works
guys you should checkout scoop for windows
such a good package manager
you can install many of the programs at the user level
without having to go through all all setup wizards
windows doesn;t need a package manager
it does
yes it does; still off-topic
pacman for windows when
Been using it since Win 3.0 and never even been tempted by a package manager
scoop is the closest imo
or chocolatey, but i dont like choco
winget is also good
but scoop is the best for me imo because it install per user not system wide
that means you can use scoop for whatever pc you want even without admin access to get those programs without searching for portable versions
and you can make your own repos (buckets) by just creating git repo with a simple json file that would point what to do for a package manager
pacman is the best package manager for linux (i use arch btw)
i agree pacman is great and the best
core 2 duo?
what potato are you running arch on 😄
thinkpad t400
thats why im running arch :p
Yay moment
Hello, how can I update the %update% placeholder in my menu every second, so that when the player hovers over an item and time passes in real time, and not every time he opens the menu
you can;t
as the item meta is sent on opening the inventory
you'd have to keep updating the meta in a timer, but then the item will flash as its updated to be a new item
i dont think it would flash if he only updates the lore
lore is in the metas
it would flash if he is setting it to a new item
but if he is editing the current item?
put a compas in your hotbar and constantly update teh tracked location. it will flash constantly
a lot of servers update their menu's items and they never flash tho
It wouldn't flash
^^
interesting
ive tried working with updatable items myself and they dont flash
I know hotbar items do, like the compass
They will look weird if you are holding them in your hand
I've done it many times through my library
https://github.com/aparx/bukkit-gui
But they won't flash just being in an inventory
I guess its different for an inventory
yeah well that flashes, and if youuse a /rename command for example it would flash because its in your hotbar and being held, but if its in an inventory it doesnt
good to know
yeah well that's a different thing
then his answer is, to use a repeating task
^ this
thank
yeah, some GUI libraries have an updateInventory method that you could use in a repeating task instead of manually updating each item again
?
Mine has that for example, you can define the interval
CustomInventoryBuilder.builder()
.title("Teleport inventory")
// we update the inventory every second
.interval(TickDuration.ofOne(TickTimeUnit.SECONDS))
.populate(InventoryStoragePopulator.create()
.fill(Material.GRAY_STAINED_GLASS_PANE)
.outline(Material.RED_STAINED_GLASS_PANE)
.set(InventoryPosition.ofPoint(4, 1), (accessor) -> accessor.getUpdateTicker().getElapsed() % 2 == 0 ? Material.REDSTONE : Material.EMERALD, (item, event) -> {
event.getWhoClicked().sendMessage(ChatColor.AQUA + "You clicked the redstone or emerald!");
})
.getView())
.build(plugin)
.show(player);
This shows alternates between being a redstone and an emerald every second
wow thats built in nice
Thanks
Although this is the not yet finished version, and it's been sometime, you may have to return an ItemStack still
Not just a material
you could include a built in ItemBuilder in the lib, it would be useful
You can also have like layers, and multiple pagination and shit (already in the current version) just have a look in the readme
anyone here has any idea on how to make a flying mob that can melee attack?
It basically already exists. There is an InventoryItemFactory that acts as an ItemBuilder but not in the classical sense
look at vex
@rapid vigil
😦
No default methods allowed in bukkit :c
pretty sure I already discussed this on paper, having this on block is pretty useless
Also you scuffed the formatting of the Block class
RegionAcessor or World makes a lot more sense
*You mean i fixed it
That's up to MD :p
otherwise you are going to limit yourself for 0 gain to a floored centre value
Yeah thats what i thought as well
I agree tho, default methods that do this heavy lifting in the API seem rather meh
I do like the strategy stuff tho
I mean
its the common spigot issue of "oh lets shit class types into the API"
I'd argue go for an adventure style of package local impl and then static constructor methods
otherwise, you need to be locking these types down heavily so no one does dumb shit with them
Or service provider them
tho, neither are the true and tried spigot way I guess ™️

probably not even the worst idea honestly
sigh
Yes I only make the best code
I mean, in the end, a glorified service provider
Example:
but better than having public classes in the API
I mean... Registry sounds like an idea. But i see how all of those classes add nothing to the actual API, so it makes sense to hide them somewhere.
Beyond that, unsure if this could nicely be moved onto the ChunkSnapshot
or well
some parent type
Heavy collection operations like this on the main thread sound annoying
especially if you are going to filter shit
FAWE moments
*That ugly stream was meant to be temporary for testing but it does work so...
*
Since it doesnt directly use Blocks, it should be possible to find a common use point for RegionAccessor and ChunkSnapshot
How would it work with snapshot if it goes outside the snapshot tho
You die
RegionSnapshot incoming
idk, I mean, I am unsure how useful the predicate in the method for the block is too tbh
It doesn't prevent you from any of the heavy lifting that is World#getBlockAt
you already allocate the array list to the full size
I guess its API sugar for people that don't want to then filter?
Was trying to add this for consistency with getNearbyEntities
I mean, given how completely different it functions from that method I doubt that is really needed 
getNearbyEntities actually has a usage as the server can heavily optimise it
this is just syntax sugar for some basic math
which is nice, don't get me wrong
No, makes sense
So:
- Hide implementations (possibly in Registry)
- Move up to World or RegionAccessor
- Move impl to CraftBukkit
- Remove Predicate
- Think about maybe finding a use in ChunkSnapshot
(I'd probably not do a registry, iirc they are pretty close to minecraft things. Either do service provider or adventure style, iirc choco's scoreboard format PR also uses package local constructors for its impl)
this one ^
Yeah the bukkit registries are meant to mirror minecraft ones
Hopefully 1.20.5? MD+Choco plz

So break into mojang and sneakily PR a registry for this. Got it.
I'd be surprised, 1.20.5 is already going to be such a clusterfuck
Shh you guys have mojang contacts right
Tell them not to break anything else
And tell them to add waterlogging to doors
given that all of items are broken, I don#t think you could break more in a single development cycle
Mojang I will, for free, add waterlogging to all the stuff missing it :c
Yeah looks good. Ill do that.
plz
I'll leave a review after too for md, as realistically, those classes could be package private in their entirety
but yea
the heavy core is waterloggable
But not the heavy anvil!
But im not too sure about the static constructor methods...
I mean, or shared accessor
your stuff is stateless anyway
Just like VoxelStrategy.edgyCollectionAlgo()
Use the versions that take a Runnable
You pass a Runnable to it, or if you extended BukkitRunnable you use the method runTaskAsynchronously on BukkitRunnable
Which part?
Runnable is an interface in Java
Which class?
You guys just assume every beginner that asks for help in this server knows java basics. 95% if not more of people that begin to program using the Spigot API started without learning java basics
You add nothing to this.
Your Task class either needs to implement Runnable or extend BukkitRunnable in which case you dont use the Scheduler but the
.runTaskAsynchronously() method on your class which extended BukkitRunnable
thats what we are supposed to assume.. People that dont know basic java shouldn’t do spigot to beginn with
If we would assume every person here is incompetent it would be so much more pain helping people
„How do i set a lore“
„okay first if all let me explain to you what a object is…“ like imagine
yeah exactly but you just have to know that so you dont get confused when people dont understand what you're trying to get them to do
?learnjava
For Beginners:
Codecademy - Learn Java: Interactive Java programming course from basics to more advanced concepts. Perfect for absolute beginners.
https://www.codecademy.com/learn/learn-java
JetBrains Academy - Java Developer Track: Learn by doing with projects and challenges. It covers Java fundamentals to advanced topics.
https://www.jetbrains.com/academy/
Udemy - Java Programming Masterclass for Software Developers: Updated courses that cover Java 8 to Java 17 features. Suitable for those who prefer structured learning.
https://www.udemy.com/course/java-the-complete-java-developer-course/
For Intermediate to Advanced Learners:
Oracle Java Tutorials: The official guides by Oracle for Java programming—great for understanding the depth of Java.
https://docs.oracle.com/javase/tutorial/
Baeldung - Learn Java and Spring: Focus on Spring Framework and modern Java technologies. Best for intermediate learners aiming to expand their knowledge.
https://www.baeldung.com/
Practice and Hands-on Learning:
Exercism - Java Track: Solve exercises and get feedback from mentors. Great for practicing coding skills.
https://exercism.io/tracks/java
LeetCode: Practice your coding skills and prepare for technical interviews with Java.
https://leetcode.com/
Free Resources and Documentation:
Java Programming and Documentation: A comprehensive collection of Java programming guides, tutorials, and API documentation.
https://docs.oracle.com/en/java/
Community and Support:
Stack Overflow: A vast community of developers. Great for getting help with specific problems or understanding concepts.
https://stackoverflow.com/questions/tagged/java
r/learnjava on Reddit: Join the community of Java learners and get advice, share resources, and discuss projects.
https://www.reddit.com/r/learnjava/
Remember: Learning to program takes practice and patience. Don't hesitate to experiment with code and participate in community discussions. Happy coding! 🎉
no one is following that unfortunately
we have this for a reason
Hi, i need help for something
I used hidePlayer(), but we can't hurt him
I have alternative ?
give him invisibility effect
that show item in hand :/
although its correct to assume that they know java basics because they mustnt get into the spigot api without knowing it. as i said 95% people dont follow that so you gotta keep that in mind when they dont understand what you're talking about
so you want them completely invisible but not hidden
if(player.hasPermission("antiillegals.bypass")) {
return;
}
if(item != null && item.getType() != Material.AIR) {
if(AntiIllegals.getInstance().getIllegals().contains(item.getType())) {
broadcastStaff("Illegal item "+item.getType()+" removed from player "+player.getName()+"'s inventory");
inv.remove(item);
player.sendMessage(MiniMessage.miniMessage().deserialize("<red>An illegal item has been changed/removed from your inventory"));
return;
}``` How come this doesnt remove the item if Inventory is a player's inventory and not a chest one?
nms ig
?paste please
Cause hidden we can't hurt the player.. 😦
first solution that comes to mind is using NMS to hide held items and equipment
yh thats what i said
but
there may be a better one
theres probably a library for that you could use it to avoid NMS directly
just invisibility effect?
a displayEntities follow the hiden player, can i add a Damage event on it ?
You can do equipment with the api
it would still show equipment
sendEquipmentChange
he wants tools and armor to be invisible too
oh yeah
Then yeah just make the entity invisible and send packets to fake the thing being empty
^
Or make an armorstand that follows the player's location and redirects clicks
which is probably the less nms hackery way
sounds way less efficient
If you'd like to take a look at it
just do that.
When made invisible:
give effect
disable equipment sending
send 1 fake equipment package
yh, i've a displayEntites following, but idk how can i redirect it, i try to create class and extends but crash 😦
whut
show me
just do
on entity damage entity event
entity.damage
show the error log and class
Can't show screenshot not verified xd
?paste
screenshots are never a good option anyways
Does anyone here specialize in bot attacks?
I need someone who can started attack over 10,000 bots per second on my server
This is a legit stress test for my own server 🤝
you can? dm me
@quaint mantle
also
?ask
If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!
Implemets EventHanlder
extends ItemDisplay and implements EventHandler ?
no item displaz
the class shouldn’t implement ItemDisplay
can't find EventHanlder
oh mb didnt saw..
annotation :p
he but i didnt assume he knows that word
like u said
„dont assume people know java“
i followed ur advice
well if you say annotation he'll learn what it means
-_-
explain in propper or noob terms
Only Listener ?
yes
only Listener
make sure to always use the Bukkit Listener and not some normal java class when importing
thats the case for everything obviously
common mistake
playerInfo.block = (hidenBlock) p.getWorld().spawn(loc, ItemDisplay.class);
Here i let the cast ?
cause always crashing :x
what is hidenBlock
You need to cast it to ItemDisplay
and what is playerInfo.block
im not really sure what you are trying to do there
ohhh its an abstact class
well
uh
are you sure you wanna do this?
i can tell you a million easier ways
rly ? idk Java warn me to do this 😂
xd
well what i would do is
have 1 class named InvisibilityManager
this class should implement Listener
1 static void: makePlayerInvisible(Player, durarion)
1 eventHandler onEntityDamageEntity
a static hashmap<player,int> to store the duration
i think thats it
Hm
And the fonction PlayerInivible give potionEffect ?
not needed
just do all that in makePlayerInvisible
u dont need a potion effext
@vivid zodiac
yh sry i was trying something.. probably better to cancel heldItem packet
how can i did it ?
Hi. Can anyone help me with fixing something in my plugin?
?ask
If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!
I'm trying to make that if I place a specific chest it will drop me an item.
And it works but not when I hold more than one Item
BlockPlaceEvent ?
You are checking your custom chest with .equals() arent you
please click format document in intellij
what if they're using eclipse or vs 😜
I'm using idea 😛
I read this message and clicked on the link, wondering "it can't be that bad"
It was, in fact, that bad
thought so
it was just a joke, i know almost all people here use intellij
Chest and command https://paste.md-5.net/xugadigiwe.java
Place event https://paste.md-5.net/emebakelug.java
it should be more readable now
ItemStack is;
ItemMeta im;
is = new ItemStack(Material.CHEST);
im = is.getItemMeta();
No reason to split up declaration and assignment in your case
?conventions
Player player = (((Player) sender).getPlayer()); The outermost parentheses do nothing here
if (command.getName().equalsIgnoreCase("premiumcase")) { This is redundant for commands, because they will only be executed with the name that you registered them with
giveitem should be giveItem (see conventiones Porey linked)
it's only used in giveitem(player);
Also no reason for this method at all, just inline it
It's actually useful in a way, if you dont have this and they dont write your command all in lowercase(how you registered it) it wont perform it
Hello, I'm trying to make leaves fall of trees, can someone tell me if this should stop overspawning leaves when there is a lot of players under a tree?
https://github.com/Paulem79/FallingLeaves-spigot/commit/2e09c9ead8cab28474086801d83ebb612d40d4b6
I thought same thing
Why would this matter? If you register the command with getCommand("abc"), the onCommand is only called when /abc is done. no?
Yes, but if they wrote /ABC or /AbC it wont work. its handy to support all cases.
Yes, it wouldn't work. But like... would this method even be called??
it would be called
Then it should work
I mean command works no matter how i type it so...I think I'll leave it as it is, also thanks for your feedback I made that changes
but what about placing chests if I have more than 1 in stack?
Some more changes to do:
- No need for your pcase() method, because you only use it locally. Inline it, OR BETTER YET:
- Create an ItemStack and initialize it when PremiumCommand is initialized, then reuse it
Also its recommended to use the label for checking the command name instead of command.getName(), because label will allow you to use aliases but command.getName() wont
actually It's only for this one command but I'll remember that
Visiting your listener...
Player p = (Player)event.getPlayer();
String placer = (String)p.getName();
Block b = (Block)event.getBlockPlaced();
Why are you doing this??? Casting Player to Player or String to String will do nothing and your IDE should be telling you about this
I use it when I try to specify a block in BlockPlaceEvent
return; This statement is the last statement in your method, it's redundant
ok
Block b = (Block)event.getBlockPlaced(); is completely equal to Block b = event.getBlockPlaced(); because event.getBlockPlaced() returns a Block so there's no need to cast it to a Block.
that's strange beacuse I have no warning there at all
new PremiumCommand().pcase();
Yeah.. no. If you are using pcase() globally in various places, move it somewhere like an ItemUtils class and make it static. It should NOT be residing in your PremiumCommand class, let alone be class-scoped instead of static in this case
okay...
static Main plugin;
If you don't reassign plugin somewhere like your onEnable to your actual plugin instance, this will do nothing. It's just a null variable. Perhaps you were trying to do dependency injection?
?di
Guide to dependency injection: https://www.spigotmc.org/wiki/using-dependency-injection/
I've never thought about that
I register events in my Main. Just wanted to reffer to my Main as "plugin"
This is not what I mean
You create a static variable static Main plugin and don't assign any value to it.
This will do nothing and, better yet, when you call plugin.anything() it will throw an exception, because plugin is not initialized.
I presume you were trying to do dependency injection, to which I've sent a link above
yeah so I moved my item to Items class so I leaved only adding item on command
https://paste.md-5.net/urunuzimiy.java
and that's my listener
https://paste.md-5.net/rovaqesutu.java
You should not keep a hard reference to an ItemStack.
And if you want to check if an ItemStack is a custom one, then you should check if it has a custom tag on it. Not if its equal to another ItemStack.
So your pcase() method should always create a completely new ItemStack with a custom tag on it.
no hard reference even if I'm only using it twice and I'll never use it again?
So I should create a custom tag instead and check if item has it?
Yes, your method should just create a completely new ItemStack every time.
And you should check if your ItemStack has a custom tag on it or not.
okay I understand
how can I make sure that the message is not replaced, but the animation is played again as the message appears? I thought about doing this, but nothing has changed (I think the problem is that the code is executed in a split second, and it does not have time to execute 2 animations one by one).
("how are you" should have the same animation as "hi")
The client receives two packets in the same tick for an entity. This means it will only value the latest state it has received and apply it to the entity on its side.
You need to delay the second change by a tick.
okay, thanks
But the straight forward way would be to just .remove() the old TextDisplay if it exists, and simply spawn a new one.
Thank you guys so much for help. I took your advice and did changes and It's working as it should.
Noice
If you are speaking about implementing the protocol, then i would say its labour intensive
The minecraft protocol simply builds on TCP over IP
Sure
anyone know how to make custom biomes
imma rewrite it to use websockets
Minecraft uses IP on layer 3 (obsly) and TCP on layer 4
do i just extends Biome
Thats right. And the data frame of the TCP packet contains the custom data from minecraft.
And server/client send TCP packets to each other, interpreting and updating their state accordingly.
damn, I'm, at this right moment, working with packets
.
Custom biomes are not something your can achieve with the API.
You need to register your custom BiomeBase implementations in the nms Biome Registry.
i mean with nms
There is quite a lot that goes into this. Mainly creating a new Biome through the registry and configuring it afterwards.
You might want to search for something online because nms is generally not supported.
alr
K' i used ProtocolLib and cancel Equipment paquets, and that's work, ty for help 🙂
is there a difference between .runTask and .runTaskLater(delay: 1 tick)
No
unless, it's run inside another task
who doesnt love a good ol nested runnable
are they? I thought they are handled at the end
Can i remove feet particles ?
Walking particles
Feet particles 
yeah
hey so im working on making it so when players break an ore type block that ive defined, it turns the ore block into stone and then after a set amount of time it regenerates, but instead of turning it into stone it just made it drop stone 😂 if it's not block.set() what am i supposed to be using
You have to save the originial block state in order to restore it at a later period
When u walk u did particles, i want cancel it
Cosmic prisons had like 3 steps to this iirc, ore, stone, cobble, then it turned to a piece of bedrock for a while, so for each block state that isnt the original you'll run a timer in order to determine when the block should be returned to it's original type. @calm lichen
It's client side
if player is running
2 sec ill just post the code
im going for a similar idea yea
?paste
i wonder how many % code minecraft with vscode
So.. need to cancel running packet
yes using paste
k coolio
not many probably
i hate vscode
i mean it has its purpose and users, but still, been using it for 2.5years for school and still i hate it:D
Main Class: https://paste.md-5.net/xalulifuwo.java
MiningListener: https://paste.md-5.net/ijozukotad.java
OreRespawner: https://paste.md-5.net/idaseyumoc.java
same
what the hell is going on, it was working and suddenly its not working
So as far as I can tell, it looks pretty good. I'd however, implement different "states" of blocks that you're tracking ie: ore, block, stone, or wtv your cases are. Depending on the state of the block is how you should handle the actions. For each block in minedOres should be checked against the original state + it's timer. I feel like this system will make your plugin easily expandable / 2x as maintainable.
The issue that you're having is uh
thanks for the advice, i'll look into implementing that as soon as i figure out how to actually get the ore to turn into stone rather than just dropping stone when its mined
Well I'm still trying to find it
yea im lost 😂
take ur time im in no rush, im in it for the long haul on this project as its more of a personal thing that i want to do anyways
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
Block block = event.getBlock();
if (block.getType() == Material.STONE && minedOres.containsKey(block.getLocation())) {
// Cancel the block break event
event.setCancelled(true);
}
}```
If anything I think it'd be handled here...
Er
I think it's the other one actually, the other blockbreak listener
Wait lol, you didn't register the ore respawner as a listener
Pretty sure that's your fix
This method actually never gets ran... that's why it still gives you stone, it's just taking the blockbreak listener in your miningListener
nicee
😂 i just need another set of eyes whenever i work on something I swear, thank you so much
Haha no worries
anyone knows what could cause this?
bungee chatcolor is required
youre using bukkit chatcolors
still
That doesn't matter
bukkit chatcolors are diff to bungee chatcolors
even on bukkit
no idea why that is the case tho
BungeeCord is a bukkit plugin too but it offers a different chatcolor import as they use a different system iirc
lemme check it another time if that is it then bruh
^
i was looking for it thru all code
I wan't to say different system... it's the same implementation as the reg bukkit import but I'm pretty sure their colors are handled differently
mmmm
That's neat
ChatColor.of("#123456") is a thing
?1.8
Too old! (Click the link to get the exact time)
but why it worked before and now its not working
ik , that's not helpful 🙂
youre playing an 8yr old version
youre not gonna receive support for that
then where i can find for version 1.16.5 ?
Does some1 know what instance is meant? I dont get what i need to put there for T?
rmap instance?
i dont have it tho.
do you know what redis is?
basically, its a map that exists in redis, which is a distributed cache
its a map to cache java objects across an entire proxy :)
Intellectuals, i require your help once again
how can you get generic attack damage attribute from an entity? (1.19.2)
Should just be getAttribute(Attribute.GENERIC_ATTACK_DAMAGE)
Hii, how are you? Let say you are designing a minigame based on custom items. Would you all the time look for the item details in the items section at the config? Or you will load each section item on plugin start to then compare the object itself?
Load on start
Just give every item a unique id of some sort in pdc and then use that as a map key
I thank you Col. because I did it before in another plugin and I was branded as bad practice. And not only that, they said that the method I did was inefficient 💀
because their argument was so simply as "you are creating innecesary objects" which takes memory 💀 💀 💀
Imagine if hypixel skyblock loaded items from its database on demand
wait
i think i miss understand
im not sure if you understand what i meant
I mean something more like this, where I have a plugin where everything is based on custom items that are added in a configuration. And then they are used in the game. What would you do?
a) You would find it directly through the config.
b) Load each item from config to an object when you start the plugin, and then compare them against the in-game one.
Due to the issues that come with shading. The unnecessary additional processing when multiple instances of packetevents are present on the server. The fact that you would need to relocate if you want to ensure no errors with other instances of packetevents that might be running on a different version. It is more difficult to override packetevents behavior from an external plugin since there are multiple instances. But we might say that providing the option to shade was one of our "selling" points during our come up and helped us grow as a project since developers like to use dependency-free as a selling point for their projects. Years later we reflected and realized that shading comes with some negatives.
hi iam using protocollib , i just have a question about something
23, EntityDataTypes.ITEMSTACK, SpigotConversionUtil.fromBukkitItemStack(getSkull()));
the first thing is index , where i can specfiy the slot of the itemstack?
NanoEvents
which packet
also is index the id of the packet or just the slot
that's what iam asking ..
i got name working
and invisiablty
now i only needto make it equip a custom item
iam using EntityLib [its a library that should support all ver but it does not throw its api , i need to set index of old versions [i dont mind as long as i get it working.]
You're probably better of just using ProtocolLib directly
yeah i started to learn how to read , and create packets
i must make a moudle system for it if i want to support 1.8 -> 1.20.4 [only 2 versions]
yeah
isnt that a packetevents lib
the one from tofaa
Sooooo. Does anyone know the best way to run a BukkitRunnable a certian amount of times?
?scheduling
packetevents has grown, we now have addons made by the community
I cant change variables within the task so I cant do traditional loop stuff
:)
You can if you want to
It's all about how you setup the task
idek what you would need to have add-ons for in a library 
I did, and it says I cant do that
because packets are complicated. i don't want to implement and maintain metadata stuff and have abstraction for every concept in the game. so community can make addons that implement things that the community can use optionally.
If a count is inside wouldnt it set back the the original number every time?
It can be in the runnable but outside of the run method
Make a custom class for it
^^
And have the counter as a an instance variable
Oh right.... I dodnt know why that never registered to me
(BukkitRunnable is something you are allowed to extend)
I plan to
You could reset it when it hits 0
i think i noticed you are in my server, try asking in the entity-lib channel instead of publicly so that the person who made that addon can help you
I just did that
you didnt, you just cancelled the task
cause not everyone uses entitylib
Yea. I canceled it after the number of loops
"i" being the loop number
I meant
if(i == 0) {
i = 5;
cancel();
} else {
i--;
}```
Its off an event so Itll only happen when the event runs
So no cancel needed
Or restart i mean
read what i said
.
Does anyone know why my worldgaurd depdency dosent work?
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-bukkit</artifactId>
<version>7.0.0</version>
<scope>provided</scope>
</dependency>
org.bstats:bstats-bukkit:jar:1.4 was not found in https://hub.spigotmc.org/nexus/content/repositories/snapshots/ during a previous attempt. This failure was cached in the local repository and resolution is not reattempted until the update interval of spigotmc-repo has elapsed or updates are forced
Try to run Maven import with -U flag (force update snapshots)
did you add the repo?
<repository>
<id>sk89q-repo</id>
<url>https://maven.enginehub.org/repo/</url>
</repository>
Isnt this the right one?
how can i make the reload command for the plugin like /spigotmc reload and it reload my plugin?
quick reminder that reloading is not supported
wdym?
show the output of mvn dependency:tree
causes lots of bugs and memory leaks
issues with other plugins
tl;dr: set up a dev environment or restart
hotswapping is painful so just stick to restarting
Simply load the config again
if you're using the builtin getConfig you can use the reloadConfig method
I don't think that's the case
and do all the packet hackery myself
Where is that? is it the bar at the bottom?
actually entities are a thing hm
run that in your terminal
click this, then enter mvn dependency:tree
i will try with the reloadConfig() for see if it's helping me in my case Btw thanks yall for the help!
it should then output some tree-like text thingy, ?paste that
?img
Can't send images? That's because you're not verified! Use !verify to complete verification.
Alternatively, you can upload screenshots to any image hosting site and share the link.
Here's some screenshot utilities that you can use to upload images.
Lightshot: https://prnt.sc
Imgur: https://imgur.com/upload
Flameshot: https://flameshot.org
Can i send the photo to you? its taking some time to upload it and send the link
Ohh
that's not the full output
it is?
no
I took everything from there and copyed
did you select the root entry next to the console before copy/pasting?
anyway, then just ?paste your whole pom.xml
you need to exclude bstats-bukkit from worldguard, alternatively update worldguard
however 7.0.0 won't work with 1.8.8 anyway
Do you know which works? i googled it but i didnt find anything
So i just need to update worldgaurd no exclude bstats right?
<dependency>
<groupId>com.sk89q.worldguard</groupId>
<artifactId>worldguard-bukkit</artifactId>
<version>7.0.0</version>
<scope>provided</scope>
<exclusions>
<exclusion>
<groupId>org.bstats</groupId>
<artifactId>bstats-bukkit</artifactId>
</exclusion>
</exclusions>
</dependency>
but for 1.8.8 you need an ancient worldguard version, probably 6.something
6.0 or 6.0.0 do you know that?
probably latest 6.X
Seems to work with 7.0.0
try this version
Im getting this error when im trying:
Could not find artifact com.sk89q.worldguard:worldguard-bukkit:pom:6.1 in spigotmc-repo (https://hub.spigotmc.org/nexus/content/repositories/snapshots/)
Could not find artifact com.sk89q.worldguard:worldguard-bukkit:pom:6.1 in spigotmc-repo (https://hub.spigotmc.org/nexus/content/repositories/snapshots/)
^
i am using 6.1
Oh sorry, didnt see that
Do you know why everytime i reload maven (the reload button or what its called) all my libraries i have manual added are being disabled?
wdym with "manually added"?
Adding them though project structure under "libraries" on the "+" button
Its not a public plugin
doesnt matter
you have to add them using your pom.xml if you're using maven to compile
if the dependency is itself a maven project: run mvn install on that dependency, then you can add it to your pom.xml on the other project.
if the other project is not a maven project: https://blog.jeff-media.com/manually-installing-jar-files-to-your-local-maven-repository/
Sometimes you have a certain .jar file that you need as dependency, but the author of that .jar was too lazy to properly upload it to a public repository. That’s bad, but not a problem. There are two ways to solve this, but only one proper way. The proper way: install the dependency The proper...
It is a maven project, but i dont know how i run maven install on it
after you did that, you can just add it using the groupid and artifactid in the pom of your other project
yeah then run mvn install on the project
I dont have the project
you said you have the source?
I have the source in a src.rar file
and that does not include a pom.xml ?
The source that i have dosent but the plugin does
He sent me the "src" folder that he had in his idea projects
But i can get the pom.xml
pretty weird way to share a project lol
but you do have a .jar file for that friend's project right?
Yea
then do this: https://blog.jeff-media.com/manually-installing-jar-files-to-your-local-maven-repository/
Sometimes you have a certain .jar file that you need as dependency, but the author of that .jar was too lazy to properly upload it to a public repository. That’s bad, but not a problem. There are two ways to solve this, but only one proper way. The proper way: install the dependency The proper...
Alright its working now, thanks alot for the help
np
Or use file:// repos in relation to the project's working dir, a practice I personally prefer
I changed from a BukkitRunnable to a Runnable for reasons. Now I cant cancel it :I
Did I mention I bad with runnables.
And I cant just do task -> for other reasons
So im not sure what to do here
Use a BukkitRunnable if you want to cancel from inside
I cant use a BukkitRunnable
Why?
I don;t believe you
One sec. Ill get the logs for you
For one its depreciated.
And Two:
I have to use the new version, aka the one that uses Runnable instead of BukkitRunnable
no
Since when was that a thing wtf
Its literally telling you to use BukkitRunnable
