#help-development

1 messages · Page 1455 of 1

tardy delta
#

?

shy wolf
#

soooo how to do that?

tardy delta
#

huuh whats wrong here?

keen kelp
#

does setMaxStackSize change the entire inventory?

#

like if I set it to 2 all slots in the menu can only stack up to 2

quaint mantle
#

why when you break a flower it doesnt go in "blockbreakevent"

wraith rapids
#

you shouldn't declare wildcard permissions yourself

#

leave *'s to the permission plugin's parsing

shy wolf
#

how to set the slot of the item

wraith rapids
#

if you want to create a parent permission that gives a player a bunch of different child permissions, name it something like MagmaBuildNetwork.all

#

an item does not have a slot

#

you can not set the slot of the item

#

because the item does not have a slot

#

the slot has an item

#

you can set the item of a slot

shy wolf
#

how to do that??

wraith rapids
#

get the inventory and call the right method

#

see the javadocs

keen kelp
#

still confused

wraith rapids
#

i don't know whether it works that way, try it and see I suppose

keen kelp
#

Im doing new Inventory()
{}

wraith rapids
#

yeah don't do that

keen kelp
#

is that what youre suppose to do

wraith rapids
#

use Bukkit.createInventory or whatever

keen kelp
#

ok

wraith rapids
#

i hardly ever use the max stack size attribute since it doesn't work well on the client-side

#

the client doesn't get any information about your max stack sizes so shit will jitter and flicker around a bunch

keen kelp
#

ok

shy wolf
wraith rapids
#

that is the wrong method

#

use the right method

shy wolf
#

how

wraith rapids
#

setContents takes an entire Array of itemstacks

#

it sets all of the items in the inventory at once

#

see the javadocs for the right method

quaint mantle
#

whats the even when a block is placed

wraith rapids
#

it isn't that hard

quaint mantle
#

event*

quaint mantle
#

is BlockPlaceEvent deprecated?

eternal night
#

check it ?

shy wolf
#

oh

quaint mantle
#

i did

shy wolf
#

ok ty

quaint mantle
#

but it says it doesnt find it

eternal oxide
#

?jd

eternal night
#

javadocs are pretty helpful

wraith rapids
#

if it can't find it it isn't deprecated; it doesn't exist

quaint mantle
#

but i see it on the docs lmao

#

bruh

keen kelp
#

setContents takes a 1D array of ItemStack yes?

shy wolf
wraith rapids
#

yes

keen kelp
#

thanks

wraith rapids
#

if it were a 2D array it'd be ItemStack[][]

keen kelp
#

oh right

tardy delta
#

why is that stupid yml not working :/

keen kelp
#

what method creates a ItemStack

wraith rapids
#

the itemstack constructor

#

new ItemStack(params)

keen kelp
#

so this
FillerPanel = new ItemStack(Material.GRAY_STAINED_GLASS_PANE,1);

wraith rapids
#

variables should start with a lowercase character

#

capitalized names are reserved for classes

#

ItemStack fillerPanel =

tardy delta
#

lmao forgot to put : true inside my yml

#

huh still does not work

#
name: MagmaBuildNetwork
version: 1.0
main: io.github.FourteenBrush.MagmaBuildNetwork.MagmaBuildNetwork
author: FourteenBrush
soft-depend: [LuckPerms]

commands:
  reload:
    description: Reloads the plugin
    usage: §2/<command>
    permission: <plugin name>.reload
    permission-message: You don't have <permission>
  ignite:
    description: Sets a player on fire
    usage: §2/<command> [player]
    permission: <plugin name>.ignite
    permission-message: You don't have <permission>
  freeze:
    description: Freezes a player
    usage: §2/<command> [player]
    permission: <plugin name>.freeze
    permission-message: You don't have <permission>
  heal:
    description: Heals a player
    usage: §2/<command> [player]
    permission: <plugin name>.heal
    permission-message: You don't have <permission>
  lock:
    description: Allows you to protect a container
    usage: §2/<command>
    permission: <plugin name>.basic
    permission-message: You don't have <permission>
  store:
    description: Stores a message inside the NBT tags of an item
    usage: §2/<command> [message]
    permission: <plugin name>.store
    permission-message: You don't have <permission>
  stats:
    description: Shows player stats
    usage: §2/<command>
    permission: <plugin name>.basic
    permission-message: You don't have <permission>

permissions:
  MagmaBuildNetwork.*:
    description: Gives access to all MagmaBuildNetwork commands
    children:
     MagmaBuildNetwork.reload: true
     MagmaBuildNetwork.ignite: true
     MagmaBuildNetwork.freeze: true
     MagmaBuildNetwork.heal: true
     MagmaBuildNetwork.store: true
     MagmaBuildNetwork.basic: false
  MagmaBuildNetwork.admin:
    description: Gives access to all admin commands
    default: op
   MagmaBuildNetwork.basic:
    description: Gives access to all player commands
    default: true
eternal night
#

?paste

queen dragonBOT
eternal night
#

is crying

wraith rapids
#

read what I told you earlier

tardy delta
#

it always worked with .*

wraith rapids
#

i didn't tell you not to use .* because it breaks the yml

#

i told you not to use it because you're not supposed to use it

tardy delta
#

even if i change it

#

it does give me an error

wraith rapids
#

but at least you've made progress

tardy delta
#

well tell me any idea what's wrong?

eternal night
#

your basic permission is intended wrong

#

3 spaces, should be 2

wraith rapids
#

MagmaBuildNetwork.basic:

#

MagmaBuildNetwork.basic:
vs
MagmaBuildNetwork.admin:

eternal night
#

does your IDE not have autoformatting ?

tardy delta
#

bruhhh

#

intellij

eternal night
#

it has formatting

#

use it

tardy delta
#

idk if its enabled or something

wraith rapids
#

it does have formatting but it doesn't have proper syntax highlighting for stuff like indents

tardy delta
#

it said line 45 wrong but it was 57 ._.

eternal night
#

it

hollow canopy
#

@eternal oxide

#

what is the difference between gm+ and gm?

tardy delta
#

for some reason my cursor keeps being like this in intellij :(((

eternal oxide
wraith rapids
#

gm+ is better than gm because it has a +

eternal oxide
#

Of course

sleek pond
#

Obviously

tardy delta
#

premium

robust creek
#

Is there 1.16 version of packetwrapper?

quaint mantle
hollow canopy
eternal oxide
tardy delta
#

uhh
[19:38:46] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to MagmaBuildNetwork v1.0
org.bukkit.event.EventException: null

eternal night
#

is that the only exception ? xD

#

usually it is followed by a Caused by somewhere down the line

tardy delta
#

well now i have a nullpointer

#

Error occurred while enabling MagmaBuildNetwork v1.0 (Is it up to date?)
java.lang.NullPointerException: null
at io.github.FourteenBrush.MagmaBuildNetwork.MagmaBuildNetwork.onEnable(MagmaBuildNetwork.java:40) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:351) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:480) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugin(CraftServer.java:494) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.enablePlugins(CraftServer.java:408) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at net.minecraft.server.v1_16_R3.MinecraftServer.loadWorld(MinecraftServer.java:435) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at net.minecraft.server.v1_16_R3.DedicatedServer.init(DedicatedServer.java:218) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:808) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$0(MinecraftServer.java:164) ~[spigot.jar:git-Spigot-37d799b-3eb7236]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_291]
[19:40:56] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
[19:40:56] [Server thread/INFO]: Done (14.230s)! For help, type "help"

eternal night
#

well then there you go

tardy delta
#

:/

#

does not really says alot

eternal night
#

what

#

it literally tells you the line and class to look

#

what more do you need lol

tardy delta
#

line 40 you mean?

eternal night
#

yes

tardy delta
#

is it normal that this gives an error?

Block block = event.getClickedBlock();
        Player p = event.getPlayer();
        TileState state = (TileState) block.getState();
#

last line

eternal night
#

not every block state is a tile state

#

you will need to check it

#

using instance of

tardy delta
#

look this is the code (to lock a chest/barrel etc)
```java
@EventHandler // Lock method
public void onContainerClick(PlayerInteractEvent event) {
Block block = event.getClickedBlock();
Player p = event.getPlayer();
TileState state = (TileState) block.getState();
PersistentDataContainer container = state.getPersistentDataContainer();
NamespacedKey key = new NamespacedKey(plugin, "MBN");

    if (MagmaBuildNetwork.playersWantingLock.contains(event.getPlayer().getUniqueId())) {
        if (event.getAction() == Action.RIGHT_CLICK_BLOCK && block.getState() instanceof InventoryHolder
                && block.getState() instanceof Lockable && block.getState() instanceof TileState) {
            event.setCancelled(true);
            container.set(key, PersistentDataType.STRING, p.getUniqueId().toString());
            state.update(); //apply the lock!
            p.sendMessage(ChatColor.DARK_GREEN + "Locked!");
            MagmaBuildNetwork.playersWantingLock.remove(event.getPlayer().getUniqueId());
        } else {
            p.sendMessage(ChatColor.DARK_GREEN + "This block can't be locked");
            MagmaBuildNetwork.playersWantingLock.remove(event.getPlayer().getUniqueId());
        }
    }
    if (!(container.has(key, PersistentDataType.STRING))) {
        return;
    }
    if (event.getPlayer().getUniqueId().toString().equalsIgnoreCase(container.get(key, PersistentDataType.STRING))) {
        return;
    } else {
        event.setCancelled(true);
        p.sendMessage(ChatColor.RED + "You cannot open this!");
    }

}
chrome beacon
#

?paste

queen dragonBOT
tardy delta
#

yea i know...

wraith rapids
#

again

eternal night
#

please use it then xD

wraith rapids
#

not every blockstate is a tilestate

#

check instanceof before casting

eternal night
#

also, you are casting this before you check

#

not like you would smash your head into a wall and then afterwards check if there is a wall or not

tardy delta
#

wait uhh where exact?

eternal oxide
#

top, storing state

eternal night
#

in the line where you cast it ? TileState state = ...

shy wolf
#

can some on help me?

#
        Player p = (Player) ball.getShooter();```
#

java.lang.NullPointerException: Cannot invoke "org.bukkit.entity.Player.getWorld()" because "p" is null

tardy delta
eternal night
#

not if it "has"

#

I believe all blocks return a state

wraith rapids
#

yes

eternal night
#

but if that state is a "TileState"

wraith rapids
#

the method returns a BlockState, which may or may not be a TileState

eternal night
#

only blocks with like persistent inventory or other fun stuff are TilEStates

wraith rapids
#

it returns a Vehicle; it could be a Car

#

but it might not be

#

it might be a Bicycle

#

don't treat it as if it were a Car without checking whether it's a Car

shy wolf
#

tell me whan u done

eternal oxide
shy wolf
#

what

eternal oxide
#

For p to be null it must have got past that code, in which case p can;t be null

tardy delta
#

so if (block instanceof TileState)

shy wolf
#
    public void onProjectileHit(ProjectileHitEvent e){

        Arrow ball = (Arrow) e.getEntity();
        Player p = (Player) ball.getShooter();```
eternal oxide
#

for p to be null the cast to player of getShooter() would be impossible if getShooter() was null

eternal night
#
BlockState state = block.getState();
if (state instanceOf TileState) {
  TileState stateButAsTileState = (TileState) state;
}
shy wolf
#

idk

#

bruh

eternal oxide
#

also shooter may not be a player

#

and projectile may not be an Arrow

shy wolf
#

no i make a particle gun like on hive

#

?paste

queen dragonBOT
eternal oxide
#

My statements still stand

shy wolf
eternal oxide
#

projectile may not be an arrow and getShooter may not be a player

shy wolf
#

so make an if?

eternal oxide
#

you can getShooter from event.getProjectile()

#

it will be an Entity, you need to test to see if its a player before casting

#

getShooter() can also be null or a dispenser

shy wolf
#

oof

eternal oxide
#

same with Arrow. You need to test the return from getProjectile to make sure it is an Arrow

#

eg, Ghast shoots a fireball. Not an Arrow and not a Player

shy wolf
#

yes

eternal oxide
#

yes, method is correct. all his code is wrong

eternal night
tardy delta
#

try and catch?

shy wolf
#

so how to fix ittt

eternal night
#

no xD

tardy delta
#

or is there an easier way?

eternal oxide
#

if (!(state instanceof TileState)) return;

granite stirrup
#

wait wait wait i used in my plugin the 1.16.5 api but it still works on 1.14.4 what????

eternal night
#

I mean, I'd suggest a layout as follows: ```java
Block block = ....
BlockState state = block.getState();
if (!(state instanceOf TileState)) return;
TileState tileState = (TileState) state;

#

ye

#

what elgar said

granite stirrup
#

i swear i used 1.16.5 spigot api in my mc plugin and it works on a 1.14.4 server i didnt know that would work lol

eternal night
#

if you don't call methods that are specifically only available in the new versions

#

it isn't an issue

wraith rapids
#

as long as you don't use any methods that didn't exist at the time, it'd work on 1.8 for all it gave a shit

eternal night
#

you obviously also did not set your api-version in your plugin yaml

tardy delta
#

and a chest has a tilestate?

eternal oxide
#

and you forgot to specify an API version in your plugin.yml

eternal night
#

Yeah, if you would it would explode

#

which is good, because if you want to officially support 1.14 code against that version

granite stirrup
#

i didnt want to set a api version really and i dont think im gonna use any new stuff XD

eternal night
#

then make sure to actually code against the lowest version you support

granite stirrup
eternal night
#

if that is what you want to support you should switch to that version

#

plugin will work in 1.15 and 1.16

wraith rapids
#

more or less

#

it'll "work"

eternal oxide
shy wolf
wraith rapids
#

because md69 would rather die than have an old plugin not "work"

wraith rapids
#

whether it works properly is another matter

granite stirrup
#

i dont get any message

odd sentinel
#

so a custom plugin of mine that uses Towny's API is breaking on recent paper or spigot builds. https://paste.gg/p/anonymous/a0eb0a632ade46ff9ae8f0d4c35757ad - the error is an NPE in towny but they're saying it's likely my code, but this code worked fine on paper b674. the line in my plugin is TownyAPI.getInstance().getResident(player.getName()) which seems pretty clear it's not me doing something insane. the paper guys say it's due to spigot changing classloaders recently? I don't know what that affects. https://paste.gg/p/anonymous/fe97b5f922f9414382b99170fad7cfb0
towny itself works fine, so idk wtf is wrong

granite stirrup
#

it only just adds a * on the plugin name

eternal oxide
chrome beacon
shy wolf
wraith rapids
#

learn java

shy wolf
#

nop

#

jk

chrome beacon
#

...

#

Yeah java basics is required

shy wolf
#

oof :(

#

i dont have power to learn

eternal oxide
# shy wolf nop

if (!(event.getEntity().getShooter() instanceof Player)) return;

sharp bough
#

what are ```public enum PlayerRole {

IMPOSTER, CREWMATE, LOBBY, GHOST;

}```
called?

eternal night
#

an enum ?

#

what

chrome beacon
sharp bough
#

like i saw it a few times

#

i have no idea what it is or how to use it

shy wolf
granite stirrup
sharp bough
granite stirrup
#

lol

sharp bough
#

but i was just wondering what that code is

wraith rapids
#

instanceof

eternal night
#

it is a java enum

granite stirrup
#

its a enum lol

wraith rapids
#

an enumeration

eternal oxide
granite stirrup
#

enums are final i think

eternal night
#

yes

wraith rapids
#

an enumeration declares a set of constants

#

called enum constants

shy wolf
#

i dont know java :(

eternal night
#

go through some online tutorials first then

sharp bough
#

hm let me google it

wraith rapids
#

each value declared in the class is a singleton instance of that enum class

shy wolf
eternal night
#

biting your teeth out trying to code a plugin when really not knowing the basics won't get you anywhere

granite stirrup
eternal night
#

what

#

👀

granite stirrup
#

cuz i never had anything that i had to use them for yet

eternal night
#

report

wraith rapids
#

Material is an enum

#

it declares a lot of constants

eternal night
#

^^

wraith rapids
#

Material.STONE is an enum constant

eternal night
#

ChatColor used to be one

wraith rapids
#

it still is on bukkit's side

#

but not on bungee

granite stirrup
#

no i meant making my own enums lol

eternal night
#

I mean, adventure components for the win

wraith rapids
#

because making the bukkit chatcolor enum not an enum would break ABI

#

which would bork old plugins

eternal oxide
#

99% of Bukkit/spigot is Interfaces and Enums

wraith rapids
#

and that cannot be allowed to happen

#

not in any circumstance

granite stirrup
eternal night
#

for pain

#

so developers are sad

granite stirrup
#

theres not even any abstract classes really if u know one tell me but i dont think spigot has abstract classes in it

eternal night
#

oh boy

eternal oxide
#

There are a few, Abstract event classes

eternal night
#

all events are classes for that matter

granite stirrup
#

oh lol

#

if u extend another class isnt it technically extending two classes in java like the Object class and the class your extending

eternal night
#

most of the configuration framework is abstract

granite stirrup
eternal night
#

the conversation api has major parts written in abstract classes

shy wolf
eternal night
#

Enchantments live in an abstract class

shy wolf
#

so what now

tardy delta
#

how can i exclude entities from getting the persistent data container?

granite stirrup
shy wolf
#

yes

eternal night
#

the MapRenderer class is also abstract

granite stirrup
eternal night
#

point being xD A bunch of stuff is abstract

granite stirrup
shy wolf
granite stirrup
#

i thought there was none

eternal night
#

all entities provide a PDC

#

whether or not you set values in it

granite stirrup
# shy wolf

i guess the shooter isnt a instanceof player

#

XD

eternal night
#

your decision

eternal oxide
wraith rapids
#

there are a bunch of concrete classes as well

#

f.e ItemStack

eternal night
#

which still makes me sad to this point in time

wraith rapids
#

it's a kind of strange design choice but ig i can see why it was made

eternal night
#

ItemStack could have been such a cute Builder and Interface combo

#

then we would not be cloning item metas left and right

wraith rapids
#

i don't know if that can be blamed on it being a concrete class

eternal night
#

we would also have consistency between ItemStack and CraftItemStack

#

I mean, ItemMeta mainly has to be cloned because the ItemStack cannot directly wrap the nms variant

granite stirrup
#

why would u need a craftitemstack

#

why cant it just be itemstack XD

eternal night
#

because they are slow

wraith rapids
#

i mean yeah but making it not concrete wouldn't help

visual tide
#

what happens when i remove something from an arraylist thats not actually in it

wraith rapids
#

you would still have to convert the nms meta into bukkit meta

wraith rapids
#

at least with the way how itemmeta is set up rn

eternal night
#

Well, true the meta would need to be updated to just wrap

#

instead of deep copy

granite stirrup
#

you might get a error i dont know tbh but i dont think you do

visual tide
eternal night
#

nah, removing something from a list that isn't there just returns false

#

but that is it

granite stirrup
visual tide
#

k ty

wraith rapids
#

yeah, i've been working on a live-view wrapper itemmeta impl on and off for a while

#

to complement my hitlerstacks

#

which is my implementation of itemstack

eternal night
#

oh were you the one that PRed that to paper ?

wraith rapids
#

probably not

eternal night
#

or different guy

#

ah

wraith rapids
#

i don't really contribute to things

eternal night
#

sadness

granite stirrup
#

whats the difference between CraftItemStack and ItemStack?

wraith rapids
#

one is api and the other is not

#

craftstack is just a wrapper over nmsstack

eternal night
#

the CraftItemStack basically just points to the mojang version of an itemstack

#

which is a lot faster than the ItemStack class

#

which copies all of the tags over

granite stirrup
wraith rapids
#

itemstack aka bukkitstack is a cloned bukkit representation of the nms stack

eternal night
#

has nothing to do with versions

wraith rapids
#

the only thing you have to care about is that craftstack is better for comparisons

granite stirrup
#

well yeah but nms only supports one version

wraith rapids
#

and bukkitstack is better for repeated edits

eternal night
#

but craftbukkit wraps that version

#

that is the entire point of it

granite stirrup
#

when do you use ItemStack lol

eternal night
#

in your plugin

#

when you want to create an item stack

#

you don't ever actively use CraftItemStack

#

it is part of the server not the spigot-api

#

CraftItemStack extends ItemStack and hence is sometimes returned to you when you receive an ItemStack from the API

#

like in case of an event

granite stirrup
eternal night
#

what

wraith rapids
#

they don't distribute it

eternal night
#

that is the reason why you build it using build tools

wraith rapids
#

they distribute a script that downloads nms code from mojang

#

and applies spigot's changes to it

#

and shits out the server jar

#

since it doesn't contain the nms code in the script itself it's fair game

granite stirrup
#

wait then how is it legal then

wraith rapids
#

it's legal because they don't distribute it

#

they distribute a thing that downloads it

eternal oxide
#

We should stop using "deploy" and use "shit out"

shy wolf
wraith rapids
#

maven shit out plugin

eternal night
#

it is the scientifically accurate version

granite stirrup
# shy wolf

its cuz the shooter isnt a instance of player

#

lol

eternal night
#

latey my ci pipeline has been shitting out a lot of helm charts onto my cluster

shy wolf
#

i am not a player :(

granite stirrup
#

nah its just that shooter must not be a instanceof player

visual tide
#

is there a way to get the item names as String[] from Material#values();

eternal night
#

Java Stream API

granite stirrup
eternal night
#

go go google

wraith rapids
#

streams are haram

eternal night
#

concerning their speed, probably

granite stirrup
eternal oxide
#

If you are using launchProjectile method, but sure to use the one where you can pass the player as the entity

ivory sleet
eternal oxide
#

I cant remember teh actual method

granite stirrup
#

pterodactyl doesnt support java 16 lmao

#

it only goes up to 11

ivory sleet
#

Lol

shy wolf
granite stirrup
granite stirrup
shy wolf
eternal oxide
shy wolf
shy wolf
#

with an event

eternal oxide
#

ItemEvent.java:32

shy wolf
shy wolf
granite stirrup
#

ball.getShooter() is null

eternal oxide
#

Your arrow is never going to have a shooter, because you never set one

granite stirrup
#

lol

shy wolf
#

how to set one?

wraith rapids
#

read the docs

eternal oxide
#

cast to Projectile and .setShooter()

shy wolf
#

and how i get the player?

eternal oxide
#

your player is teh one doing the clicking

shy wolf
#

yes?

eternal oxide
#

that was a statement not a question

shy wolf
#

idk

eternal oxide
#

I have no idea how your code isn't blowing up trying to cast null to Player

granite stirrup
eternal oxide
#

anyway, set the shooter in yoru PlayerInteractEvent

granite stirrup
#

lmao it wont blow up tho if u try catch the exception

#

XD

eternal oxide
#

but its only blowing up on 32

granite stirrup
eternal oxide
#

You never used to be able null is null

#

possibly something in that java version

ivory sleet
#

you can’t cast null to Player lol

granite stirrup
#

i dont think it blows up if u cast null tho

ivory sleet
#

Wat

#

You would get another exception instead idk

eternal oxide
#

I would have thought so, but he's not

granite stirrup
#

it says this online tho

ivory sleet
#

Oh lol I have been living under a rock then

#

My apologies

granite stirrup
#

idk if its true tho

eternal oxide
#

I'm suprised

granite stirrup
#

but i think i casted null before

#

and it hasnt errored

shy wolf
#

oh sory i wes in a call

eternal oxide
#

I guess my null handling is so perfect I've never tried 😛

granite stirrup
#

i mean if u cast null wouldnt it just be null

shy wolf
#

howwwwwwwwwwwwwww

#

i dont know any thing of my lifeeeee

eternal oxide
#

I would have expected a class cast exception

wraith rapids
#

bombing intensifies

granite stirrup
shy wolf
granite stirrup
eternal oxide
shy wolf
#

how

granite stirrup
#

lol jk

eternal oxide
shy wolf
eternal oxide
#

Howeverm, it seems we can cast null to whatever we like

granite stirrup
#

im dumb idk

eternal oxide
#

No clue, I learnt something today though

wraith rapids
#

well

#

anything can be null

#

therefore null can be anything

granite stirrup
#

i wonder what null really equaLs

eternal oxide
# shy wolf how

You have your drop entity, cast to Projectile and setShooter

shy wolf
granite stirrup
#

its broken ;-;

shy wolf
#

F5

eternal oxide
granite stirrup
#

its broken still

#

i cant view ur code lmao

shy wolf
#

    public static Arrow ball;


    @EventHandler
    public void onProjectileHit(ProjectileHitEvent e){
        Bukkit.broadcastMessage("test 1");
        Arrow ball = (Arrow) e.getEntity();
        Bukkit.broadcastMessage("test 2");
        if ((e.getEntity().getShooter() instanceof Player)){
            return;
        } else {
            Bukkit.broadcastMessage("test AAAAAAAA");

        }
        Bukkit.broadcastMessage("test 3");
        Player p = (Player) ball.getShooter();
        Location aloc = ball.getLocation();
        World world = ball.getWorld();
        Bukkit.broadcastMessage("test 4");
        if(p.getInventory().getItemInMainHand().getItemMeta().getDisplayName().equals("§6§lרובה פארטיקלס")){
            Bukkit.broadcastMessage("test 5");
            world.spawnParticle(Particle.FLAME, aloc, 20);
        } else {
            Bukkit.broadcastMessage("8444444444444444444469");

        }
    }


    @EventHandler
    public void gun(PlayerInteractEvent event) {
        Action action = event.getAction();
        Player player = event.getPlayer();
        Location loc = player.getLocation();
        ball.setShooter(player);
        ItemStack item = player.getInventory().getItemInMainHand();
        ItemMeta meta = item.getItemMeta();
        String name = meta.getDisplayName();

        if ((action.equals(Action.RIGHT_CLICK_AIR) || action.equals(Action.RIGHT_CLICK_BLOCK)) && name.equals("§6§lרובה פארטיקלס")) {
            new ItemStack(item.getType(), 1);
            final Entity drop = loc.getWorld().spawnEntity(loc, EntityType.ARROW);
            drop.setVelocity(loc.getDirection().multiply(2));
        }


    }

}```
eternal night
#

?paste

queen dragonBOT
eternal oxide
#

impossible, you added ball at line 50. ball doesn;t exist there

wraith rapids
#

you're casting before checking

granite stirrup
eternal oxide
#

I told you twice already. When you spawn your Arrow it gives you back the Entity. Cast drop to Projectile and setShooter

glad hamlet
wraith rapids
#

if (player.getInventory().getHelmet().getType() !=Material.AIR) {

#

something on this line is null

glad hamlet
#

hmm

wraith rapids
#

rack your brain a bit and see what it is

glad hamlet
#

i dont have a brain 😔

granite stirrup
#

lmao

glad hamlet
#

So nullcheck?

shy wolf
glad hamlet
#

aaah sorry im new to development for spigot.

granite stirrup
#

idk if this is a thing player.getInventory().getHelmet().getType()

glad hamlet
#

All im trying to do is check if someone has an item in their helmet slot

#

if they do they get the message, if they dont it does the thing below.

granite stirrup
#

maybe do a check to see if the helmet isnt null

#

if that doesnt work

#

idk

wraith rapids
#

bukkit is incredibly inconsistent with whether it returns air or null for empty slots

granite stirrup
#

cuz i dont think it is air when its in the armor

#

i think it might be null

#

;-;

wraith rapids
#

you will save yourself a ton of headache if you just nullcheck and check for air every time

#

if (item == null || item.getType() == Material.AIR)

shy wolf
#

i want to die

glad hamlet
#

so if (player.getInventory().getItemInMainHand().getType() == null) {

#

Oh wait

#

scrap that.

granite stirrup
#

lmao

glad hamlet
#

So its not air

#

its just null

shy wolf
#

bruh how to cast

granite stirrup
#

yeah its either gonna be air or null like nny said

glad hamlet
#

meaning != Material.AIR would be != null

#

Both dont work or Im stupid

shy wolf
#

public void Main{

Brain;
Brain.work;

}

glad hamlet
#

?

wraith rapids
#

lmao

shy wolf
#

yes brin

granite stirrup
glad hamlet
#

i know

#

but i swap the air thing with null

shy wolf
granite stirrup
wraith rapids
#

the issue is that the ItemStack might be null

shy wolf
wraith rapids
#

and since you are calling getType on the ItemStack, you know what happens if it's null

glad hamlet
#

hmm

wraith rapids
#

if (item == null || item.getType() == Material.AIR)

tribal holly
#

someone know how to cancel saturation use when a player regen ? (i cancel the event of FoodLevelChange)

glad hamlet
#

I just put that in?

granite stirrup
#

idk XD

wraith rapids
#

you read that and you figure out what it does

#

and then you apply that understanding into your own code

shy wolf
wraith rapids
#

here we are checking whether ite itemstack we're working with is null

granite stirrup
wraith rapids
#

if it is, we know that we can't do anything with it

#

if it isn't, we proceed to check whether its type is air

shy wolf
#

@granite stirrup help me

tribal holly
wraith rapids
#

if either is true we can return or whatever

tribal holly
#

nop i wanna decrease it but by my self. Just something touching it and i don't know what and don't know how to cancel this unknow change

granite stirrup
#
class Main {
  public static void main(String args[])
  {
    Brain brain = new Brain(Ages.teen,BrainStatus.decreased);
    brain.start();
  }
}```
shy wolf
#

f

#

all caps oof

#

nOW HELp Me

tribal holly
#

no one know about this mystical stuff that decrease saturation with a canceled event ?

wraith rapids
#

fork the serbur and throw a stack trace every time saturation is modified

wraith rapids
#

is that a reply

tribal holly
#

yep

#

this is the stack trace

wraith rapids
#

what are you replying to

#

i can't see replies

tribal holly
#

i repost the creen

wraith rapids
#

that's not a stack trace

#

this is a stack trace

tribal holly
#

but there is no error

wraith rapids
#

stack traces aren't exclusive to exceptions

#

you can print one whenever you want

tribal holly
#

well how can i show you this stack trace ?

wraith rapids
#

to know what is being called and by whom

#

you fork the server and modify the setter of the player's saturation to print the stack trace whenever it's called

tribal holly
#

heuuuuuuuu

shy wolf
#

plz some one tell me HOW TO cast?

tribal holly
#

(Object)objectToCast

#

learn java before doing plugins bro

wraith rapids
#

or learn to google

shy wolf
#

AaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAaAa

tribal holly
shy wolf
#

ik

eternal oxide
wraith rapids
#

spoooon

tribal holly
#

spoonFeed

#

Elgar you disappoint me

eternal oxide
#

He wasn;t going to get it himself

wraith rapids
#

then he wasn't ready

eternal oxide
#

He got frustrated enough to remember for next time though

shy wolf
tribal holly
#

hoo common

eternal oxide
#

oh my

wraith rapids
#

he won't get anything himself because he refuses to use his brain or google anything

#

he's just sitting here like a sponge and waiting for people to drip everything into his mouth

#

one spoonful at a time

eternal oxide
shy wolf
#

drop

eternal oxide
#

sounds similar doesn;t it

shy wolf
#

maybe

#
    @EventHandler
    public void IDK(PlayerInteractEvent event) {
        Action action = event.getAction();
        Player player = event.getPlayer();
        Location loc = player.getLocation();
        ((Projectile) drop).setShooter(player);
        ItemStack item = player.getInventory().getItemInMainHand();
        ItemMeta meta = item.getItemMeta();
        String name = meta.getDisplayName();

        if ((action.equals(Action.RIGHT_CLICK_AIR) || action.equals(Action.RIGHT_CLICK_BLOCK)) && name.equals("§6§lרובה פארטיקלס")) {
            new ItemStack(item.getType(), 1);
            final Entity drop = loc.getWorld().spawnEntity(loc, EntityType.ARROW);
            drop.setVelocity(loc.getDirection().multiply(2));
        }


    }```
eternal oxide
#

I think you are pulling my leg now

shy wolf
#

oh f

tribal holly
#

dude really learn java before saying something here

shy wolf
#

ok ok

wraith rapids
#

this isn't even an issue of not knowing java anymore

tribal holly
#

maybe he will learn how to learn by trying to learn java

wraith rapids
#

the issue now is that he doesn't use his head

#

i don't know if his blood sugar or something is low or what

tribal holly
#

hahaha

shy wolf
#

my brarin not wotking any more

#

sory

wraith rapids
#

yeah you should go take a break

#

and come back when you're fit to actually do something and have a legible conversation

#

and be able to learn from what we tell you

wraith rapids
#

right now you're just wasting everyone's time

shy wolf
#

sory :(

alpine urchin
#

learn java

eternal oxide
#

lets just say you have all the code you need. Its just in the wrong places

alpine urchin
#

then it will be easier

opal juniper
#

What is this text

#

and how do i set it

silver cove
#

actionbar

#

uh i forgot how to do it in spigot API hold up

opal juniper
#

Text Components right?

chrome beacon
#

Yes

opal juniper
#

player.spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent("This message will be in the Action Bar"));

According to google ^^

chrome beacon
#

Yep

silver cove
#

yeah

eternal oxide
#

something Spigot().sendMessage("blah", ACTION_BAR)

silver cove
#

that xD

eternal oxide
#

or something close

wraith rapids
#

there is something sad about plastering a bold and all caps DON'T LEAVE on a player's screen

opal juniper
#

Yeah

hollow canopy
eternal oxide
#

good

wraith rapids
#

gm+ good

opal juniper
#

((Player) event.getPlayer()).spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent("This message will be in the Action Bar"));

How do you set the colour

#

(The casting is because the event returns HumanEntity)

granite stirrup
#

theres some letters to but

opal juniper
#

oh can you not use chat colours?

granite stirrup
#

0-9 and c are the main ones used

granite stirrup
opal juniper
#

Ok

granite stirrup
#

u can also do hex i think but u need to do ChatColor.of i think

opal juniper
#

oh im being dumb

#

put it in the wrong bit

granite stirrup
#

idk

wraith rapids
#

0-9, A-F, lmnkor

opal juniper
#

Ok

Petition for a ChatColor.Orange

granite stirrup
#

orange isnt a color in mc

#

oh wai ti

#

is

#

sorry

wraith rapids
#

the named color for that is gold

granite stirrup
wraith rapids
#

it's pretty orange

opal juniper
#

But i want orange

#

like actual orange

#

how many times do i have to ping md_5 until he adds it do we reckon

wraith rapids
#

threaten to pr it in paper and he'll do it by tomorrow

opal juniper
#

too true lmao

granite stirrup
#

lmao

#

if ur 1.15+

opal juniper
#

tbh if i could work out how the spigot repo works i would pr it myself

granite stirrup
#

i think

opal juniper
#

Its fine, ill use red

eternal night
#

Use minimessages :>

granite stirrup
#

why would u want orange

cold tartan
#

how would you store data on players?

granite stirrup
eternal oxide
#

depends on what data

opal juniper
wraith rapids
#

or pdc

granite stirrup
#

mongodb or mysql is pretty good i think

granite stirrup
cold tartan
#

just like their team

opal juniper
cold tartan
#

or should i just use /team

wraith rapids
#

i prefer pdc because it's easy and low overhead

eternal night
#

"low"

opal juniper
#

i mean, it depends. Why aren't u using /team

granite stirrup
#

whats pdc

eternal night
#

Compared to direct nms access it's trash

wraith rapids
#

compared to a network db request, anything is low overhead

opal juniper
#

Persistent Data Container

eternal night
#

Tho tbhz less PDC fault than itemmeta

opal juniper
#

There is a spigot guide

cold tartan
granite stirrup
#

i mean u could store a file on disk

#

;-;

#

with everyones team

opal juniper
wraith rapids
#

at the very least it outperforms disk io and network io

granite stirrup
#

disk is slow tho

wraith rapids
#

and that's good enough for me

eternal night
#

True by a long shot

cold tartan
#

how would you use teams tho?

eternal oxide
#

Pencil and notepad

wraith rapids
#

it does have its fair share of issues though

#

like not being able to reliably clean out your plugin's data

cold tartan
#

is there a way to get the player's team's color?

granite stirrup
#

why not just a .db file lmao

eternal night
#

True. Cleaning is just rip

wraith rapids
#

if you install 2000 plugins that use pdc and then get rid of them, you'll have 2000 useless pdc entries on your players

eternal oxide
#

ah

eternal night
#

Yeah get keys could enable it

wraith rapids
#

yeah but you'd have to have a dedicated cleaning plugin for it

#

a plugin can't clean its own data

eternal oxide
#

Yeah, I alwasy clean up unused PDC data when my plugins finished with it

wraith rapids
#

like, if you're storing something persistently in the long term

#

a player logs offline and has your data on him

granite stirrup
#

i dont know how to use/what is pdc

wraith rapids
#

what'cha gonna do

granite stirrup
#

;-;

eternal night
#

Nothing Xd but like how would that ever work out 😂

wraith rapids
#

i guess you could have some kind of an /uninstall command that loads the playerdata of every player who has ever played and cleans it

#

but that's a server killer

granite stirrup
#

i mean why cant u just do a .db file on disk

opal juniper
eternal night
#

And evert chunk

#

And their tile entities

wraith rapids
#

yeah chunks and entities are basically impossible

#

players are like barely manageable

eternal night
#

Would be so much effort to clean, you basically just gotta hope the plugin removes temporary ones and live with the permant values

wraith rapids
#

200 plugins later

#

"why is this playerdata file 60mb"

eternal night
#

Yea. Gotta know your limits

granite stirrup
#

why not just store a file on disk with every ones team data lmao

eternal night
#

Like bigger player data should probably go into a dB XD

tribal holly
#

is there a SaturationLevelChangeEvent ?

granite stirrup
opal juniper
tribal holly
#

if i cancel foodChangeLevel it don't cancel the saturation change

granite stirrup
#

i dont think thats a cancelable event

#

lmao

#

¯_(ツ)_/¯

tribal holly
#

huuuuuu

#

god nooo

#

how they do for making 1.8 regenration ?

#

wanna kill myself

granite stirrup
#

setting the food level?

tribal holly
#

no the saturation

#

it decrease all the time

#

untill the player is not full regen

eternal night
#

But there is foodlevel change event

tribal holly
#

yep but for Food

eternal night
#

And it cancellable

tribal holly
#

not saturation

eternal night
#

Oh

tribal holly
#

not the same

eternal night
#

Yeah you fucked

#

Maybe paper has something

#

Seems like a paper thing to have

eternal oxide
#

If your fool level starts going down, you have no saturation

tribal holly
#

not food

eternal oxide
#

Why do you need saturation?

granite stirrup
#

isnt saturation and food the same

wraith rapids
#

not really

#

saturation is invisible

#

food is shown in the bar

#

it's a weird mechanic that has been basically unchanged since it was introduced in 1.8 beta like 10 years ago

granite stirrup
#

why not use the food one tho

eternal oxide
#

I believe there is a saturation bar

tribal holly
#

i try to make player regen slow so i make a cooldown to heart regen (2seconds) but in this cooldown the saturation is decresaing and i can't cencel it

eternal oxide
#

small

tribal holly
#

so the player loose his saturation very fast

wraith rapids
#

saturation can be sort of gauged by looking at how fast the chopsticks jiggle

opal juniper
#

There is a saturation bar but it is just a hidden stat

wraith rapids
#

i don't remember seeing a bar for it though

cold tartan
#

do you guys know why this doesnt work?

event.getPlayer().getServer().broadcastMessage(ChatColor.YELLOW + "Yellow bed was broken by " + player + "!");
eternal oxide
#

There is a bar, its tiny though

wraith rapids
#

where is it

granite stirrup
eternal oxide
#

just above teh hotbar slots

wraith rapids
#

screenshots or it didn't happen

cold tartan
#

thanks tho

opal juniper
tribal holly
#

so impossible to control saturation change ?

opal juniper
#

afaik, yes

wraith rapids
#

i'm not seeing any events for it

opal juniper
#

paper probs has a way

tribal holly
#

so how they do haaaaaaaaaaaaaaaaaaaaa

wraith rapids
#

on paper either

granite stirrup
tribal holly
#

i saw a lot of plugin handle this

tribal holly
wraith rapids
#

i'm not seeing a bar

granite stirrup
#

u probs have to make custom saturation idk

tribal holly
#

seriously recode stauration ?

#

is it really necessary ?

granite stirrup
#

i think so

wraith rapids
#

what are you trying to do anyway

tribal holly
#

i try to make player regen slow so i make a cooldown to heart regen (2seconds) but in this cooldown the saturation is decresaing and i can't cencel it

granite stirrup
tribal holly
#

yep something like this

granite stirrup
#

idk

#

how

#

you

#

do it lmao

#

look through the code of the plugins u found

#

u might have to recode stuff lmao

opal juniper
#

Sometimes you must accept that things are gone

granite stirrup
eternal night
#

You could PR the event to spigot XD

tribal holly
#

haaaaarg

#

well

#

i come back

opal juniper
#

Does it exist on paper ?

tribal holly
#

i just go jump from my building on the first flrour

opal juniper
#

if so you could just do a little copy and paste

#

and md_5 can't moan too much if it is actually paper's code

#

cause it gives them one less edge over spigot

tribal holly
warm galleon
#

can i try catch sendpluginmessage? I want to catch the err if i send a player to a offline server, in order to test somethig

tribal holly
#

yep but that don't change today

#

"If you wanna cancel the FoodLevelChangeEvent... That would be kinda useless. Because even if you cancel it, saturation and exhaustion still change, which will later on still change the food level by a certain amount. There is just no way to stop saturation and exhaustion from changing without saving the values somewhere and stuff."

#

it still actual work

#

maybe i should ping md5 kappa

opal juniper
tribal holly
eternal night
#

📎

opal juniper
#

Nah, maybe just wait till you see him around or wait for choco or some1

#

im not familiar with the other mods

eternal night
#

Or you ask for progress on the issue :)

opal juniper
#

^^

eternal night
#

Kindly bump it and hope someone implements it

open vapor
#

i'm trying to set max health of entity. LivingEntity.setMaxHealth is depreciated

warm galleon
#

can i try catch sendpluginmessage? I want to catch the err if i send a player to a offline server, in order to test somethig

chrome beacon
quiet ice
#

Why would you not be able to?

granite stirrup
#

who cares if something is depreciated i mean you probs shouldnt use depreciated stuff but doesnt mean its gonna break anything

eternal night
#

The deprecation notice even tells you what method to use instead tho

#

so like, just use that one ?

chrome beacon
#

Yeah

eternal oxide
granite stirrup
#

what reason

eternal oxide
#

attributes

chrome beacon
#

It got replaced

open vapor
chrome beacon
#

?jd

eternal oxide
#

The reason you should ALWASY check the javadocs```
getMaxHealth
@Deprecated
double getMaxHealth()
Deprecated.
use Attribute.GENERIC_MAX_HEALTH.
Gets the maximum health this entity has.

Returns:
Maximum health

open vapor
#

ok

tribal holly
#

?paste

queen dragonBOT
tribal holly
#

finally

open vapor
#

i got it working

tribal holly
#

from OldCombatMechanics plugin

eternal night
#

the code computes how much saturation was lost since the last heal

#

and grants it back to the player

tribal holly
#

hoooooo

#

fuck smart

#

well i think problem solved

warm galleon
#

how would i check if a server is online? (without plugin emssagingif possible but i can use it if its the only way)

twilit birch
#

ILoveToCode will be assisting you today

#

Dw

#

Hes the man for this job

opal juniper
warm galleon
opal juniper
#

not bungeecord?

#

you said opposite things

warm galleon
granite stirrup
#

not use the bungeecord api

warm galleon
#

because i am using spigot api?

granite stirrup
#

it will be easier ;-;

warm galleon
#

because you cant install bungeecord plugins on a spigot servre?

granite stirrup
#

if u use the bungeecord api

#

you can

eternal night
#

what

#

no you cannot

#

a bungeecord plugin has no place on a spigot server

granite stirrup
#

doesnt the bungeecoord api work on spigot

eternal night
#

no

granite stirrup
#

i used it before

#

?

eternal night
#

Parts of the bungeecord api are shared

#

and included in spigot

#

like the chat api

#

but that is it

#

methods like server queries etc cannot be executed on a spigot server

warm galleon
#

^

granite stirrup
#

i swear u use the bungeecoord api to connect people to different servers

eternal night
#

Are you thinking of bungee cord message channels ?

granite stirrup
#

no

eternal night
#

Yeah nah, the bungeecord api cannot be used on a spigot server, your memory must be failing you rn

warm galleon
#

not bungeecord api

granite stirrup
#

no i swear u use the bungeecoord api if u want to make a server connect you to a different one on the network

warm galleon
#

omfg

#

youy cannot run a bungee plugin

eternal night
#

dude it doesn't work xD

warm galleon
#

in a spigot server

dusk flicker
#

You use Plugin messaging to connect people to servers from the Spigot plugin side

warm galleon
granite stirrup
#

i swear i have run a bungee api on a spigot server

warm galleon
#

oh

#

my

dusk flicker
#

Then you are a dumbass

warm galleon
#

freaking

#

god

eternal night
#

Keep swearing on that then xD

dusk flicker
#

As it's impossible.

eternal night
#

also, I only know as much as the docs say

#

you could try however to write a custom bungeecord plugin

granite stirrup
#

¯_(ツ)_/¯

eternal night
#

that does that logic for you

dusk flicker
#

Why is this server on a new level of shit today

granite stirrup
#

bro two of the same messages is not spam @queen dragon

eternal night
#

dang bot xD

cold pawn
#

How do I check if a player has a helmet on or an item in there helmet slot?

warm galleon
#

do you know how to check if a server is online with idk pluginmessagin maybe?

eternal night
#

null check the item

warm galleon
#

reeeeeeeeee

granite stirrup
#

yeah i dont do bungeecord stuff lmao

dusk flicker
granite stirrup
#

to complex for me

eternal night
granite stirrup
#

u could use sockets ?

#

or something

#

java idk

dusk flicker
#

On the other topic, you would have to create your own system if you wanted to do it through PMCs, Woulden't be that hard just would need to make a send and receive system that every server has.

eternal night
#

redis might fit well

dusk flicker
#

Yeah redis would work good, much faster

warm galleon
#

what

eternal night
#

Does bungeecord even know if servers are online

warm galleon
#

redisbungee is 20 usd ff

dusk flicker
#

Not RedisBungee.

#

Redis.

eternal night
#

you can implement it yourself lol

dusk flicker
#

And I don't believe Bungee has a check for if servers are online

#

Not standard bungee atleast

granite stirrup
warm galleon
#

redis is a database

eternal night
#

Yeah, I don't think bungee attempts to ping servers

warm galleon
#

?

eternal night
#

Well, it also has great pub/sub support

dusk flicker
#

^

warm galleon
dusk flicker
#

Personally I woulden't use sockets for something that has a ping function callback already implemented

granite stirrup
granite stirrup
dusk flicker
#

Yes

granite stirrup
#

hes using spigot api

dusk flicker
#

Oh are you talking about from the Spigot side?

#

Ah

#

Yeah sockets are prob one of the easier ways then.

granite stirrup
#

so sockets is probs the easiest way

#

its probs fine along he doesnt do it every second lol

wraith rapids
#

real men use sockets

#

plugin messaging is for pussies

dusk flicker
#

agreed

#

but I use redis instead of sockets lol

warm galleon
dusk flicker
#

Read that thread that was linked

wraith rapids
#

real men just reimplement a pubsub system with sockets

granite stirrup
granite stirrup
warm galleon
#

im using mariadb for sql bt

granite stirrup
#

lmao

tranquil viper
#

whats a different way to use Thread.Sleep

#

without blocking threads

granite stirrup
#

uh multithread

#

¯_(ツ)_/¯

tranquil viper
#

well i mean

#

like

#

could I use a runnable or smth

dusk flicker
#

Id just recommend you stay away from Thread#sleep

tranquil viper
#

yea ik

#

it causes a lot of issues

#

thats why im trying to find a different way to put intervals in between somethign

#

i was thinking runnables

granite stirrup
#

bukkit scheduler

tranquil viper
#

ok

#

ty

granite stirrup
#

i think theres a way to delay stuff to happen like every 20 ticks or whatever

#

or 5 ticks

#

or 10 seconds

#

idk

#

with the bukkit scheduler

tranquil viper
#

i am trying to make a cps check

#

i need to add a delay between when someone recieves the cps report

weak berry
#

Quick question is there anything that would prevent a post request from being sent from a plugin?

tranquil viper
#

cause i dont want it to spam their chat lol