#help-archived

1 messages Β· Page 44 of 1

tiny dagger
#

put that in server then at portforward

rotund fulcrum
#

ok

silver pewter
#

What else can I use?

limpid thistle
#

Just a normal runnable

tiny dagger
#

at port your mc server

rotund fulcrum
#

imma just use 25565 as port

silver pewter
#

okay thanks

tiny dagger
#

do it everywhere

rotund fulcrum
#

ye

tiny dagger
#

and protocol both

#

udp tcp

rotund fulcrum
#

enabled = on

tiny dagger
#

yeah apply

rotund fulcrum
#

funny thing is

#

i did this before

tiny dagger
#

restart server

rotund fulcrum
#

but it didn't let people connect

#

so

#

idk

tiny dagger
#

i'm not in your shoes

#

but these are the steps

rotund fulcrum
#

well should i just give people the connection IP

#

the ip i use in server.properties

runic wadi
#

it doesn't have to be there as far as i'm aware

#

not sure what that setting does

tiny dagger
#

you need to give them your internet ip not local one

rotund fulcrum
#

so...

tiny dagger
#

look at what is my ip online

#

you can put it to reduce user error

rotund fulcrum
#

the IPv4

tiny dagger
#

yup

rotund fulcrum
#

ok here we go

tiny dagger
#

this is what you give people to connect with

#

is that ipv6 wut?

#

i haven't enabled mine :p

rotund fulcrum
#

IT WORKED

tiny dagger
#

grats

rotund fulcrum
#

(ipv4)

tiny dagger
#

lol

rotund fulcrum
#

let's go...

#

tysm

crimson sandal
#

When building the API im getting this error at the tests

#

Failed tests: testAll(org.bukkit.AnnotationTest): There 1 are missing annotation(s)
Tests run: 1074, Failures: 1, Errors: 0, Skipped: 3

#

I've no idea where I'm supposed to look for the annotation that's missed and why its an error?

tiny dagger
#

well

tiny horizon
#

does anybody know why this error happens?

tiny dagger
#

doesn't look public made

#

chunk gens at best

#

or map on wrong version

grave epoch
#

Anyone know what’s causing this?

tiny dagger
#

minereset

#

@grave epoch

tiny horizon
#

@tiny dagger is my problem chunk gens?

grave epoch
#

is the mine too big? @tiny dagger

tiny dagger
#

i think

#

i dunno ethal

tiny horizon
#

how do I fix

tiny dagger
#

badly made plugin

grave epoch
#

alright thank you

tiny dagger
#

red check them out and find alternative

tiny horizon
#

wdym

#

@tiny dagger

tiny dagger
#

i told what are my possible bets

torn siren
#

at what level efficiency would it stop being more effective

sage flame
#

Does anyone know of a way to send a title to everyone?

#

without iterating through every online player

#

I'll do that if necessary, I'm just wondering if there's a cleaner way to do it

wanton delta
#

i mean you could do Bukkit.getOnlinePlayers().foreach(p -> /*code that sends title here*/);

#

but that does the same thing

#

its just nice to look at

sage flame
#

Yeah, that's what I was planning on doing if there isn't a way to do so directly in the api

wanton delta
#

i doubt it, considering that vanilla works the same way

sage flame
#

Oh does it?

#

I haven't looked at vanilla code before

wanton delta
#

well like when you want to send a title in vanilla, you need to specify @a

#

its not really the code

#

its just the idea of how its done

sage flame
#

I see

wanton delta
#

but even when u do broadcast message i think its iterating through all players

sage flame
#

Oh okay, I guess I'll just have to do that then

wanton delta
#
    @Override
    public int broadcast(String message, String permission) {
        Set<CommandSender> recipients = new HashSet<>();
        for (Permissible permissible : getPluginManager().getPermissionSubscriptions(permission)) {
            if (permissible instanceof CommandSender && permissible.hasPermission(permission)) {
                recipients.add((CommandSender) permissible);
            }
        }

        BroadcastMessageEvent broadcastMessageEvent = new BroadcastMessageEvent(!Bukkit.isPrimaryThread(), message, recipients);
        getPluginManager().callEvent(broadcastMessageEvent);

        if (broadcastMessageEvent.isCancelled()) {
            return 0;
        }

        message = broadcastMessageEvent.getMessage();

        for (CommandSender recipient : recipients) {
            recipient.sendMessage(message);
        }

        return recipients.size();
    }```
#

thats what broadcast message is doing, if youre curious

sage flame
#

oh so it's literally just looping through

wanton delta
#

yep

sage flame
#

Well it works so might as well

gloomy flower
#

for a bungee cord network, how do I whitelist my bungee cord proxy? please @ me

kind cove
#

heyyyy. Spigotmc will not send me a verification email despite me requesting one over and over. My spam is also empty, I am on the correct email. SpigotMC says that making a new account is bannable. This is infuriating because a page I would like access to requires verification.

#

Is there any way to fix this ?

subtle blade
#

What email service are you using?

golden vault
#

give it some time and check again. the server may be slow

kind cove
#

only gmail

subtle blade
#

Then yea, give it some time. Someone else was also having issues a few days ago

kind cove
#

I requested the verification yesterday also

subtle blade
#

Unless maybe that was you having issues in here lol. Don't remember who it was

kind cove
#

I just joined this discord. It was not me.

subtle blade
#

So yea, I'd give it some time πŸ˜„

#

They were using gmail as well but it eventually came through

#

If it's been like 6 hours and you still haven't gotten it, you can contact support@spigotmc.org. Don't know the response time on that email but that's the appropriate place to contact

kind cove
subtle blade
#

Because it's premium, we can't do that

#

Hell, wouldn't do it if it were free either. Not really great to distribute someone else's software without their permission

wraith seal
#

Hey, does anyone perhaps know how/where the pathfinder/targetselector of mobs calculates whether it attacks a player/entity or not? I want my custom NMS mob to target players through walls/without having line of sight, however I was looking through the source and it's kinda messy and not documented and I'm confused.

#

Looking at this specifically:

tiny dagger
#

goal

#

that's just looks at it

#

or follow

#

if i remember correctly

#

you should look at zombie for example

warm herald
#

I've got a big problem with my server. Someone DM me pls.

wraith seal
#

That code is literally from the EntityZombie class. I want the NMS mob to target players through walls without using gimmicky for loops and distance comparing.

#

I wondered if the flags passed for PathfinderGoalNearestAttackableTarget did anything, but they don't sadly.

tiny dagger
#

i doubt mc does it differently let me see

ocean coral
#

I do not know if this is the right place to ask but I am looking for a plugin. I am trying to find a plugin that lets players do a command like /helpop but it lets staff claim the request. I have seen it before but I have not found a plugin for it.

tiny dagger
#

okay i think i got it

#

so the base logic is in pathfinders

warm herald
#

@ocean coral i doubt that you are gonna get an answer

tiny dagger
#

then entity insentient creature calls goal selector based on type

#

move look etc

ocean coral
#

ok

wraith seal
#

so uhhhh

#

I think i want to reach the setGoalTarget part

tiny dagger
wraith seal
#

Where's this from?

#

version too please

tiny dagger
#

1.15

#

wither tho

#

i just remembered i had to do a custom wither and i had most done already

wraith seal
#

oh wait

#

withers do attakc players through walls

#

right?

tiny dagger
#

it does shoot witherskulls yes

#

the logic is somewhere else tho

#

this just targets

wraith seal
#

right

hoary parcel
#

is it just me or does that code look super unreadable?

#

oh its decompiled

#

this looks better

tiny dagger
#

you got used to it that's all

hoary parcel
#

I dont mean the colors

#

look at the code

#

its different

#

I have the original code (so decompiled MC + CB sources), you have decompiled CB

#

you can see that the breaks are very different

fleet burrow
#

It's the white theme

hoary parcel
#

as the compiler inlined the continue -> break thing

fleet burrow
#

And you know it

hoary parcel
#

do you really not see that the actual code is different? lol

tiny dagger
#

oh i see

#

but it's reference anyway

#

i don't copy paste this all

hoary parcel
#

every developer should have a workspace where he can read spigot code

#

as you can use your IDEs tool to jump to declaration and find usages etc

tiny dagger
#

what can i say i got attached to jd gui's search function

hoary parcel
#

yeah but surely, your IDE has a better one, lol

tiny dagger
#

i noticed

fleet burrow
#

Inorder to jump to references you need the build tools decompiled source though

#

Which doesn't contain lots of classes

hoary parcel
#

I dont know how spigots dev workspace looks like

#

I use the fork that shall not be named

#

and we have a mc-dev folder

#

where we have the other classes

#

so it works as expected

subtle blade
#

work/decompile-somehash

#

Changed files are in CraftBukkit/src/ or Spigot/Spigot-Server/src

tiny dagger
#

i don't have a workplace that is

#

i mean its basic

hoary parcel
#

yeah, would be surprised if spigot didnt had that

wraith seal
cloud sparrow
#

With the Java class itself from java.lang.Class. Is there a way to check if it is a instanceof another class? been trying to figure out the method I may need to call to check if it's a instanceof to another class.

crimson sandal
#

Okay so I finally got a custom build of the API running but now weird things are happening.. I was trying to check if a block was an instance of Chest but BlockPlaceEvent.getBlockPlaced() is returning a CraftBlock now?

#

!CraftBlock{pos=BlockPosition{x=223, y=64, z=111},type=CHEST,data=Block{minecraft:chest}[facing=west,type=single,waterlogged=false],fluid=net.minecraft.server.v1_15_R1.FluidTypeEmpty@c9413d8}

#

Wtf? I'm really confused

tiny dagger
#

Michey, you should get nearby chunk or world at least

crimson sandal
#

Im stupid ignore me

tiny dagger
#

That's gonna be expensive

subtle blade
#

(just wait until james learns that all Blocks are CraftBlocks evil)

tiny dagger
#

:d

#

Then he finds out about iblockdata

wanton delta
#

so comparing blocks

#

u need to use .equals right

#

iirc

subtle blade
#

Yes

crimson sandal
#
    @Override
    public void setChestAnimationOpen(Player player) {
        CraftPlayer craftPlayer = (CraftPlayer) player;
        getTileEntity().startOpen(craftPlayer.getHandle());
    }
#

Okay so you can do something like this

#

To get the Chest to open

#

And it works perfectly

fair abyss
minor spruce
#

what does it say when you hover over the red bit

fair abyss
#

says should Object not String

crimson sandal
minor spruce
#

have you imported the right string?

fair abyss
#

java.lang.String

subtle blade
#

What List are you importing? java.util.List or java.awt.List?

fair abyss
#

Java.util

subtle blade
#

So at that point, clear your IDE's caches or restart

frigid ember
#

@subtle blade
I have a problem and I can't find a solution, can you help me?

dusty topaz
#

?ask

#

Is that a thing here

subtle blade
#

It is, though the bot's been hit or miss

worldly heathBOT
#

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.

subtle blade
#

There it is

paper compass
#

mr chocolate

#

what did u think of the videos

subtle blade
#

@crimson sandal am I actually stupid and missed the startOpen(EntityHuman) method in TileEntityChest?

frigid ember
#

Choco can you talk to me about my problem privately?

hoary parcel
#

just speak here

crimson sandal
#

@subtle blade maybe you looked over it because it required a EntityHuman πŸ˜›

#
void setChestAnimationOpen(@Nullable Player player);
dusty topaz
#

Why does HumanEntity even exist

#

If it only has one subinterface

crimson sandal
#

What method name would make more sense?

dusty topaz
#

You making a PR?

frigid ember
#

Can someone help me? I have a problem looking for a Spigot plugins

#

!

fair abyss
#

restarted ide, resetted cache nothing changed πŸ˜„

crimson sandal
#

I would like to make a PR yeah, since it's way simpler than I thought and doesn't modify existing methods

subtle blade
#

james, I would avoid using startOpen() because that changes the viewer count on the server. I would say instead call

#
    protected void onOpen() {
        Block block = this.getBlock().getBlock();

        if (block instanceof BlockChest) {
            this.world.playBlockAction(this.position, block, 1, this.viewingCount);
            this.world.applyPhysics(this.position, block);
        }

    }```
frigid ember
#

@golden vault

#

Help me please!

subtle blade
#

Especially because we also don't want to call a RedstoneChangeEvent

#

It's a visual change

crimson sandal
#

That wouldn't work though because this.viewingCount would still be 0?

subtle blade
#

If possible, even just mimicking that call to playBlockAction()

#

No but playBlockAction() accepts viewingCount. We can set that to 1 for open or 0 for closed πŸ˜„

frigid ember
#

Can you help me please!

#

@subtle blade

crimson sandal
#

Oh I see, what if someone wanted to trigger the redstone event though?

frigid ember
#

Can you help me please!

fair abyss
#

just tell your problem

dusty topaz
#

He can help you exit the server if you keep acting like this o.o

golden vault
#

@frigid ember You should actually state the problem/ question

crimson sandal
#

Like the method is simulating someone opening the chest without displaying an inventory to someone?

subtle blade
#

So the implementation in CraftBukkit can be as simple as

@Override
public void setOpen(boolean open) {
    getWorld().getHandle().playBlockAction(position, block, 1, open ? 1 : 0); // to open
}```
#

Obviously pseudo because not all of that is available but you can get it from the implementation

#

You get the idea though

frigid ember
#

@golden vault

#

And how do I do or where do I go to ask for help with a problem

dusty topaz
#

you just ... ask it

#

in the, funnily enough, help channel

#

e.e

golden vault
#

ask your question

frigid ember
#

I want a plugin for my server called: shopkeeper
Which are for trade ect.

But I can't find it on Spigot's page!

dusty topaz
#

then it doesn't exist

frigid ember
#

Can you pass me the link or something from that plugin so I can use it? Thank yo

dusty topaz
#

do you read or just keep typing

frigid ember
#

Not really a help question, but is there any idea how rgb colors will be handled for ingame? Will &x allow rgb values? or is this yet to be discussed? I'm so excited for this!

subtle blade
#

Actually if you wanted to get even more specific, you could have that open state be per player

fair abyss
golden vault
#

what are you even talking about

subtle blade
#
this.server.getPlayerList().sendPacketNearby((EntityHuman) null, (double) blockactiondata.a().getX(), (double) blockactiondata.a().getY(), (double) blockactiondata.a().getZ(), 64.0D, this.worldProvider.getDimensionManager(), new PacketPlayOutBlockAction(blockactiondata.a(), blockactiondata.b(), blockactiondata.c(), blockactiondata.d()));```
frigid ember
#

Spanish people say that this plugin is spigot, but it doesn't appear to me!

subtle blade
#

That's what vanilla does right now. You could send that PacketPlayOutBlockAction in the implementation directly instead

#

That way you can do it per player

frigid ember
#

aver I have my survival server and I want the spigot trade plugins

But it doesn't appear to me and people say it's spigot!

fair abyss
#

just download from the link I gave

#

it contains latest versions.

#

@frigid ember

frigid ember
#

But I can't find the plugins, I can't download it, can someone pass me the plugin link please?

wanton delta
frigid ember
#

please!

#

But it's from the Bukkit page! It is not from Spigot and my server does not let it install

wanton delta
#

well

#

why not

#

is there an error

#

and it should work on spigot servers

fair abyss
#

Spigot is bukkit's fork

#

you can use almost every bukkit plugin

#

just use it it will work okey?

frigid ember
#

No it doesn't let me install it on spigot server because it is from bukkit!

silk gate
#

what

wanton delta
#

what

silk gate
#

thats not how it works

wanton delta
#

tbh it probably builds off spigot

fair abyss
#

just download...

wanton delta
#

just uses the bukkit website

fair abyss
#

they are same files.

frigid ember
#

Please speak to me, I use a translator because I don't know English and I can't speak quickly, sorry

crimson sandal
#

@subtle blade hmm I can't think of a reason why you would want it per player though?

fair abyss
#

we got it, you dont know english.

#

but download it and use @frigid ember

subtle blade
#

Honestly, agreed lol. Sticking to the block action is fine then πŸ˜„

fair abyss
#

and, choco still same πŸ˜„

subtle blade
#

Then I have no idea. Could be your surrounding code is malformated and causing issues

fair abyss
#

its in simple method

frigid ember
#

Well thanks for the help but I will not be able to do anything since my server does not detect the Bukkit plugins

paper compass
#

Choco

frigid ember
#

thanks and see you later!

wanton delta
#

dw guys im workin with him... i can speak some level of spanish :D

golden vault
#

gracias

dusty topaz
#

feliz navidad

final oasis
#

Is there a way to fix Firefox support for Spigot?

dusty topaz
#

Firefox support?

wanton delta
#

i can get on the website just fine

final oasis
#

every so often the Website decides to screw up it's html and ccs for the site.

ocean spire
#

Noob question, how can you turn on keepInventory for all players by default? Is that a Spigot plugin?

upbeat wyvern
#

/gamerule keepInventory

ocean spire
#

That only changed it for me though

crimson sandal
#

Also, I am I right in that you have to commit every change you make so that applyPatches.sh will recognise them? Because I have like 12 commits just testing one method...

#

@subtle blade ? πŸ™‚

wanton delta
#

wow ive never helped someone in spanish before this is an experience

#

but i think its workign

upbeat wyvern
#

@ocean spire normaly if you use /gamerule keepInventory true (with correct syntax) it should turn on for all players ... the gamerule affect all the players by default

ocean spire
#

Okay, I'll give that a try, thanks!

subtle blade
#

You shouldn't have to touch applyPatches

#

applyPatches takes the patches from nms-patches and applies them to source files in src/main/java/net/minecraft/server

#

You'll want to makePatches most likely

crimson sandal
#

Hmm well I've been git committing then running applyPatches.sh which will copy the modified classes to the Spigot Module from Bukkit and CraftBukkit ?

#

How else are you supposed to get the modified classes copied to the Spigot module?

subtle blade
#

Not sure I understand

#

You make changes in CraftBukkit/src/main/java/net/minecraft/server where necessary, then run makePatches

#

A patch file will be created in nms-patches (or updated if it existed already)

#

You include that in your pull request

wanton delta
#

How often do new versions of spigot get released through buildtools and what not

crimson sandal
#

I haven't made any changes to NMS code though, it's literally just org.bukkit.block.Chest and org.bukkit.craftbukkit.block.CraftChest

#

So I made the changes in the Craftbukkit and Bukkit modules, but then obviously those changes were not in the Spigot Module? But when I run applyPatches.sh it copies the changes to those classes into the Spigot API and Server modules?

boreal tiger
#

Ideally you'd hold a variable of your enum type
Can just change it as your rounds progress
@subtle blade sorry to only answer now, what did you mean by that?

subtle blade
#

How are you handling your rounds now?

boreal tiger
#

@subtle blade I have an enum Enemy(EntityType type, int firstWaveNumber)
When a new round begins I iterate over the enum's values and check if firstWaveNumber <= currentRound

#

but this seems like a weird design

#

especially the enum

#

I also just thought about storing in my config something like

enemies:
  - ZOMBIE:1

and then I could load this to a map

#

and then I could use EntityType#valueOf

#

would this be a better design? or do you have something in mind?

#

I would still need to check on every round the map πŸ€”
I guess I could use a MultiMap of Integer and List of entities to add in that specific round

tough halo
#

hey, this is a stupid question, but how do i update my spigot to the latest version? been getting an error message saying the build is outdated for the past couple days, but haven't looked into it since server still ran correctly. I saw on https://hub.spigotmc.org/jenkins/view/RSS/job/Spigot-RSS/ that a new spigot build has been made, but my brain too smol to know how to download it from there

wanton delta
#

use buildtools

#

?buildtools

#

darn

#

not a cmd

golden vault
#

?bt

worldly heathBOT
wanton delta
#

WHY

#

i demand ?buildtools be a command

#

as well as ?docs

tough halo
#

LOL

#

rip

golden vault
#

lol

tough halo
#

but i have the latest version from there

wanton delta
#

u sure

#

java -jar BuildTools.jar --rev latest

fleet crane
#

Latest version of BuildTools != Latest spigot

wanton delta
#

unless youre running an outdated version

#

oh yea

#

shouldve clarified that bit

fleet crane
#

Spigot is updated 20x more often than BuildTools

tough halo
#

so I can have the latest buildtools and it not compile the latest spigot since spigot has gotten a new build since then right?

subtle blade
#

BuildTools is updated independently from Spigot

#

Spigot may receive an update but you don't need to update BuildTools

wanton delta
#

to get the latest version of spigot u need to run buildtools

#

and usually they are mutually exclusive

#

latest version of buildtools usually isnt required for latest version of spigot

subtle blade
#

So long as you run BuildTools, it should build the latest of the version you need

#

(though BT typically needs an update for major versions of the game)

tough halo
#

ahh gotcha ok, ill try that

wanton delta
#

usually

subtle blade
#

@subtle blade I have an enum Enemy(EntityType type, int firstWaveNumber)
When a new round begins I iterate over the enum's values and check if firstWaveNumber <= currentRound
@boreal tiger My thought here would be to have a static EnumMap<EntityType, Enemy> (in the Enemy enum) so you can quickly fetch by EntityType, then just getFirstWaveNumber()

#

Have a static method, Enemy.fromEntityType(EntityType), to get an Enemy for you

boreal tiger
#

mhm, I wont know which entitytype to look for though. I need the other way around. A map of round number -> EntityType

subtle blade
#

Oh, I see

boreal tiger
#

should I use a MultiMap?

subtle blade
#

Yes. Sounds like a good time for a MultiMap to me

#

Actually not even

#

List<List<EntityType>>

#

I know that looks ugly as shit, but lists have indices so the map is unnecessary here

boreal tiger
#

yeah it does look a bit shit hahaha, but makes sense πŸ‘

#

wait what if I want to say

#

keep the entitytypes as they are in round 2

#

but add something new in round 3

#

oh wait nvm I can just use List#add

#

πŸ€¦β€β™‚οΈ

subtle blade
#

ye

#

then add an arraylist at that index

boreal tiger
#

that would be fine to be static right?

#

or should I just add a getter

tough halo
#

I'm still new to all this and have only been running a server for a few weeks, so I appreciate the help! It gave me the latest spigot and I'm all good now thx ^^

subtle blade
#

static is probably fine, but encapsulate it, yea

boreal tiger
#

πŸ‘Œ

#

thank you

subtle blade
#

static getter and whatnot

boreal tiger
#

I have access to an instance of the class where the map is so I can just have a normal getter I think

subtle blade
#

You're iterating over these List<EntityType> right? If you're #contains() checking, an EnumSet is better

boreal tiger
#

for List<List<EntityType>> I would be doing entityRounds.get(currentRound) and checking if there's a new entity to spawn

subtle blade
#

Yea, so iterating. ArrayList will suffice

boreal tiger
#

right πŸ‘Œ would the performance difference be significative if I used a MultiMap? i know its unecessary but it just looks slightly better hahah

subtle blade
#

Maybe. I mean 2 things. (1) the Integer indices would be boxed, and (2) you're still going to have to define MultiMap<List<EntityType>>

boreal tiger
#

mhm, wouldnt it just be MultiMap<Integer, EntityType>?

subtle blade
#

Ehm, yes. lol

#

Ignore me aPES2_Crazy

boreal tiger
#

np ahaha

#

it just seemed weird that I would have empty indexes in between in the List<List<EntityType>> solution

#

or is that fine?

subtle blade
#

I just find the whole implementation to be kind of awkward is all

boreal tiger
#

the round implementation?

#

the Map wouldnt contain every entity, it would only contain the EntityType to be introduced at that specific round

subtle blade
#

No no I get that

#

MultiMap is probably fine here

slim hemlock
#

mr choco, approve my resource

boreal tiger
#

cool, thank you πŸ‘

wanton delta
#

Pair 😍

subtle blade
#

I will reject it just based on that request

#

lol forgot about that song

slim hemlock
#

Mr Choco Bring Me Money

subtle blade
#

please, if you have the link on hand, grace us once more

#

Bless this Discord with your voice

slim hemlock
#

how can I say no to a man with such amazing montage skills

subtle blade
#

tyty

boreal tiger
#

even better, there is a HashMultimap so values would behave like a set instead of a whole listπŸ‘Œ

subtle blade
#

There it is, gents

boreal tiger
#

lmao what is that hahaha

slim hemlock
#

art

boreal tiger
#

hahahha wtf lmao

subtle blade
#

Ah. 2 years old

slim hemlock
#

I hope long after the time of Man is gone and the ayyliens find our planet, they'll still be able to hear the echoes of this song playing in the wind between the valleys

#

some people believe that seed ships might be a way to preserve mankind, but what is mankind without art?

subtle blade
#

LMAO I forgot about the "APPROVE IT NOW"

slim hemlock
#

I say replace those seedships with ships made with the sole purpose of blasting my discography

#

how dare you forget

crimson sandal
#

Okay so I think I'm ready to make a PR just need to wait for my Stash account to be activated πŸ™‚

boreal tiger
#

@subtle blade mhm if I wanted a certain function to deal with nms to be applied to the entity, would it be a bad idea to have a Consumer in the Enemy enum?

slim hemlock
#

I really like how I couldn't even maintain the tempo for 20 seconds

subtle blade
#

lmao

slim hemlock
#

that's the hallmark of quality

subtle blade
#

No, that's fine, Attlantiz

boreal tiger
#

πŸ‘ thanks

slim hemlock
#

man some day I need to remaster this

#

or make a new song

#

maybe a cover of tachyon, might be easier

rotund fulcrum
#

which is better; SuperbVote or Votifier

vast hinge
#

Votifier imo

subtle blade
#

wat

#

SuperbVote is a vote listener for Votifier

radiant pollen
#

Votifier is an API

subtle blade
#

Yea. You need both

frigid ember
#

This is golden crate plugin
how to fix this, why the apple is in the first slot?

vast hinge
#

Cause why not

gloomy flower
#

the apple is the default display item for any reward

#

you haven't changed the display item

wanton delta
#

does this plugin have a support discord

frigid ember
#

I change the reward to emerald block, it suppose to be in slot 29

gloomy flower
#

golden crates?

frigid ember
#

does this plugin have a support discord
no :((

gloomy flower
#

yes?

wanton delta
#

sad

frigid ember
#

yes?
yes

gloomy flower
#

oh wait nvm

#

if the reward is supposed to be an emerald block in slot 29

#

have you edited the display item for the slot 29 item?

frigid ember
#

Yes

#

to Emerald Block

gloomy flower
#

in-game or via config?

#

if in-game i have no idea

#

if config then reload the plugin

frigid ember
#

In game

compact junco
#

Anyone here good with the bungee API? How do I stop the bungeeserver. I have a custom plugin that uses the MYSQL Connector and I would like to stop the server if MYSQL Connector fails to connect to the MYSQL Server.

#

I have tried to call getProxy().stop() but that does not seem to be working

#

Any suggestions

#

getProxy().stop(); // Does not work
ProxyServer.getInstance().stop(); // Does not work

#

Nevermind I am stupid it works

buoyant path
#

@keen compass was able to fix it IntelliJ is dumb and doesnt update your artifacts with the current shaded maven plugin until you remake it

#
    public List<String> getSections(String primary, String table) {
        List<String> sections = new ArrayList<>();


        PreparedStatement pst;
        ResultSet rs;
        try (Connection connection = getNewConnection()) {
            pst = connection.prepareStatement("SELECT * FROM " + table + " WHERE " + primary + " = ?");
            rs = pst.executeQuery();
            while (rs.next()) {
                sections.add(rs.getString(1));
            }
        } catch (SQLException ex) {
            ex.getStackTrace();
        }
        return sections;
    }``` Can anyone help me? Im trying to make SQL like a yml config for a friend whos new to coding and idk why this doesnt add anything
dusty topaz
#

use prepared statements eee

buoyant path
#

???

#

I did?

dusty topaz
#

wait you are

#

┬─┬ γƒŽ( γ‚œ-γ‚œγƒŽ)

buoyant path
#

Lol

#

Is the syntax wrong?

dusty topaz
#

well you don't set ?

#

in the prepared statement

#

so it is literally checking for primary = ?

buoyant path
#

Oh

#

im a fucking idiot lol

dusty topaz
#

i'm going to use that as an excuse for why i thought you weren't using prepared statements

#

so, use prepared statements (β•―Β°β–‘Β°οΌ‰β•―οΈ΅ ┻━┻

buoyant path
#

Wait a minute

#

What do i change primary to tho?

dusty topaz
#

nothing, thats the key i assume that you're passing in

#

you need to change the ?

buoyant path
#

Im trying to get all the PlayerUUID's in my playerdata table

dusty topaz
#

you should probably also change the primary to a ? though

#

and then set both

#

i think it is valid to do WHERE ? = ?

buoyant path
#

im not sure what to set the first one to?

dusty topaz
#

primary, and the second the string uuid i assume

buoyant path
#

Yeah but im trying to get a list of all the uuids

dusty topaz
#

then just SELECT * from table

buoyant path
#

That loops through the primary keys?

ashen stirrup
#

If you have a player with an open inventory, can you actively change it, e.g there's a Book with "hello" on it, could you then change it to say "goodbye" or do you have to close the inventory, change the item, set it in the inventory and open it agian

dusty topaz
#

you can update the itemstack in the inventory

ashen stirrup
#

Great

buoyant path
#

Im actually kinda liking SQL now that ive got a better understanding lol

fierce tinsel
#

hey can anyone help me with Placeholder API

austere thistle
#

How do I contact the owner of this?

low sonnet
#

Anyone got a full cosmic Test server plugins pm me if u do !!!!!!!!!!!

ashen stirrup
#

If you’re gonna have an inventory specific to a player while other players also have it open, would you just have a public Inventory rather than a public static Inventory

#

e.g an inventory players can put items in

dusky herald
#

A public static inventory is always going to be the same, so static usage should/would be incorrect.

#

Regardless you created a new "Inventory" for a player anyways

#

So it should be public Inventory

#

If you just want 1 inventory, but nothing specific to a player, you could use a static reference then, as that inventory would be the same for all instances of the class

#

You could always use it like this as well:
public final Inventory inventory
This would ensure you'd use the same inventory for the player if you structure your classes properly and reference them right.

#

What do you mean?

#

You don't have to import it if it shares the same package folder

stiff monolith
#

Someone knows how to compile multiple java files into jar packages and use IntelliJ

wicked sage
#

use maven or gradle?

#

dont use the artifact tooling system

austere thistle
#

It looks shady

subtle blade
#

lol no obviously not

austere thistle
#

(no pun intended)

night solstice
#

Making a little plugin that puts the players head in a gui, but it seems to take a couple seconds for the players head to load. Any ideas on how to fix this?

cloud sparrow
#

cache the heads

#

you are making a lot of requests for the heads

past kite
#

How do I create a report on spigot if I cant ask for Fourm staff help here.

left pawn
#

Oh, I think they just mean to use the forum for issues with the forums.

radiant pollen
#

Scroll down to the bottom of any page on Spigot and look for "Contact Us"

bronze horizon
#

Is it possible to make multiple lines in an ArmorStand or do I need to make another armor stand right below it?

frigid ember
#

you'll need another armor stand

#

if you are making floating text though, I suggest using the HolographicDisplays api as it supports clientside stands as well :)

#

if you want a link just let me know

bronze horizon
#

yeah could i get one?

#

thank you

#

how does it do that though?

frigid ember
#

it's pretty easy, you make use of the Hologram class

#

you can add multiple lines, and there's VisibilityManager to change which players can see it

#

it basically spawns a small ArmorStand with the marker tag (so there's no hitbox) and as far as i've tested it isn't actually there

#

I use it for mob nameplates and informational stuff personally

bronze horizon
#

Cool, thanks!

frigid ember
#

as far as i've tinkered with it there's only one really annoying limitation, and that is you can't get the text from the armorstand once you set it

#

ye!

bronze horizon
#

ouch, thats a bit annoying

#

why would that even be though

#

seems like it'd be easy

frigid ember
#

i have Absolutely No Idea

#

if youre interested i wrote a really really really bad and terrible method to get the line as a String

bronze horizon
#

oh boy

#

ok

#

lets see it

frigid ember
#

oh shit

#

wrong thing

#

    public static String NameFromHologramLine(HologramLine line) {
        String name = "";
        
        /* necessary atrocity that should have never happened */                
        String HoloText = line + "";
        HoloText = HoloText.replaceFirst("CraftTextLine \\[text=", "");
        if(HoloText.endsWith("]")) HoloText = HoloText.substring(0, HoloText.length() - 1);
        
        name = HoloText;
        
        return name;
    }
    
#

this godforsaken thing

storm tulip
#

that looks very cute epicdude

#

pleaeses my eyes

bronze horizon
#

oh

#

oh no

frigid ember
#

:U

#

thank you :)

storm tulip
#

the screenshot

bronze horizon
#

not thaat bad

frigid ember
#

that code is

#

singlehandedly

#

well

#

i'm actually sure theres something worse somewhere

bronze horizon
#

i mean you are kinda replacing like

#

yeahh

#

ok

frigid ember
#

it reeeeally shouldnt have happened

bronze horizon
#

who am i to talk tho i make some of the worst code known to man sometimes

frigid ember
#

mehhh

#

guess it depends on who sees it :>

bronze horizon
#

well, anyone

#

😦

frigid ember
#

o hecc

bronze horizon
#

i dont use an obfuscator do u

frigid ember
#

yeah no worries, my plugin isnt public but its like. a blighted hellscape of statics

#

nah

bronze horizon
#

yeah

#

i only release the plugins i think are useful to at least 10 people or took me a long time

frigid ember
#

i guess if i were to make a public plugin that was paid maybe but i dont think i'm a good enough developer for that lol

#

the one i'm writing is for an mmorpg thingy

bronze horizon
#

hm ok

#

do you need holo displays

#

for the api to work?

frigid ember
#

nope, just need to add it to your build path and plugins folder :D

bronze horizon
#

awesome

#

love when that works

frigid ember
#

yeeeeeeeeee its convenient :)

bronze horizon
#

can i set an armorstand to ride an armorstand

#

with setPassenger

ivory fiber
golden vault
#

add a debug message before Player p = e.getplayer(); to see if you are even getting the event.

ivory fiber
#

@golden vault Yes i am getting it

golden vault
#

ok add one in the first if block

ivory fiber
#

Thx for helping i found my mistake

golden vault
#

nice

blissful verge
#

Is it possible to make a plugin which makes there be a block you right click to remove every lets say stone around a 3x3x3 area and after 5 seconds puts them back?

cloud sparrow
#

wut.

#

I do not understand the grammar.

#

Are you asking if you have a block in your hand and right it it'll remove 3x3x3 and you use a bukkit runnable that gets the blocks removed and replaces them?

blissful verge
#

Like you have a block which you place and right click and it will remove 3x3x3 stone for 5 seconds

blissful verge
#

Is there a way to make a command like "/enchantitem [enchant]" which detects what enchant your item youre holding has and then gives +1 level to that?

buoyant path
#

Can anyone help me fix the error of Incorrect DOUBLE Truncating?

#

Im not really sure how to fix it lol

#

I believe i may have fixed it

#

im just dumb lol

median wing
#

I need help, so I'm making a pickaxe that mines in a 3x3x1 are according to which direction the player is facing, I have rotation calculated and it works, as well I have tested the code for the 3x3x1 separately and it also worked, but how would I implement the code for 3x3x1 into my rotation checks?

#
            pBlock.getRelative(BlockFace.NORTH);
            pBlock.getRelative(BlockFace.SOUTH);
            pBlock.getRelative(BlockFace.WEST);
            pBlock.getRelative(BlockFace.EAST);
            for(int x=-1; x<=1; ++x) {
                for (int y = -1; y<= 0; ++y) {
                    for (int z = -1; z<= 1; ++z) {
                        pBlock.getLocation();
                        currentblock = block.getRelative(x,y,z);
                        currentblock.breakNaturally(explosive);
                        player.playSound(player.getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 30, 0);

                    }
                }```
#

^^^this is the code for 3x3x1 hole

#
                if (rotation < 0) {
                    rotation += 360.0;
                }
                player.sendMessage(Double.toString(rotation));
                if (0 <= rotation && rotation < 22.5) {
                    player.sendMessage("North");
                    Block north = block.getRelative(BlockFace.NORTH);

                } else if (22.5 <= rotation && rotation < 67.5) {
                    player.sendMessage("North East");
                    Block north_east = block.getRelative(BlockFace.NORTH_EAST);

                } else if (67.5 <= rotation && rotation < 112.5) {
                    player.sendMessage("East");
                    Block east = block.getRelative(BlockFace.EAST);

                } else if (112.5 <= rotation && rotation < 157.5) {
                    player.sendMessage("SouthEast");
                    Block south_east = block.getRelative(BlockFace.SOUTH_EAST);

                } else if (157.5 <= rotation && rotation < 202.5) {
                    player.sendMessage("South");
                    Block south = block.getRelative(BlockFace.SOUTH_EAST);


                } else if (202.5 <= rotation && rotation < 247.5) {
                    player.sendMessage("SouthWest");
                    Block south_west = block.getRelative(BlockFace.SOUTH_WEST);

                } else if (247.5 <= rotation && rotation < 292.5) {
                    player.sendMessage("West");
                    Block west = block.getRelative(BlockFace.WEST);

                } else if (292.5 <= rotation && rotation < 337.5) {
                    player.sendMessage("NorthWest");
                    Block north_west = block.getRelative(BlockFace.NORTH_WEST);

                } else if (337.5 <= rotation && rotation <= 360) {
                    player.sendMessage("North");
                    Block north2 = block.getRelative(BlockFace.NORTH);```
#

^^^This one is for rotation

#

can anyone help?

raw atlas
#

i have a bungeecord server and players with alot of pick are getting timed out how to remove timed out kicks and let them play with alot of ping?

median wing
#

lol I guess no one wants to help

coral smelt
#

Hi Everyone is there a plugin which removes the "too expensive" limit in an anvil?

green hornet
#

hi guys with github actions how are you building your plugins that use spigot itself rather than spigotapi

#

it takes me a long time to deploy due to the entire buildtools pipeline

sage flame
#

Does anyone know what the equivalent of this is in 1.12
Particle.DustOptions(Color.RED, 1)
I developed a plugin in 1.15 and am trying to make it compatible with 1.12 but am getting an error on this

tiny dagger
#

@sage flame you need to enable speed or something then you can use offsets xyz for rgb

sage flame
#

so does that mean the offset cannot be used for the random placement?

tiny dagger
#

well no

#

unless you can

sage flame
#

hmm I can't seem to get the offset to work for rgb

#

world.spawnParticle(Particle.REDSTONE, player.getLocation(), 50, 0.5, 0.5, 0.5, new Particle.DustOptions(Color.RED, 1));
^1.15 code
world.spawnParticle(Particle.REDSTONE, player.getLocation(), 50, 1, 0, 0, 1);
^1.12 code

tiny dagger
#

i know that the red column must have at least 0.01

#

in it

#

otherwise it does this

sage flame
#

red component is set to 1 right now

clear lark
#

Hi, we have a server with spigot 1.15.2 and we want to build some advanced redstone machines, but they keep breaking. After doing a little research I discovered spigot sometimes moves redstone ticks to the next server tick so the performance suffers less, but this breaks the redstone contraption. Is there some way that I can prevent this from happening? The server is strong enough for that to be disabled but I simply don't know where to disable it.

tiny dagger
#

i dunno, you have to experiment a little

frigid ember
tiny dagger
#

someone spams commands?

#

or too many registered?

#

πŸ€”

#

oh

#

connection

#

it can be some sniffer doing the dirty

frigid ember
#

it is a PreHub server, where people simply enter and register

tiny dagger
#

i would look at protocollib and go from there

#

see what depends on it

mossy osprey
#

Is there a way to know which Mojang release ultimately becomes the basis for the BuildTools output? I'm fighting with a bug that was claimed to have been resolved by Mojang in 20w11a and their stated solution doesn't appear to apply in a freshly-built spigot-1.15.2.jar

frigid ember
#

i would look at protocollib and go from there
@tiny dagger I don't understand, where should I look?

#

ProtocolLib? what exactly

tiny dagger
#

on the plugins that depend on protocollib

frigid ember
#

Ok

#

Wait

#

only ExploitFixer

#

should I take it off?

tiny dagger
#

well you can try

frigid ember
#

Ok

lofty otter
#

is there a way to declare the plugin version in the code?

#

rather than the plugin.yml

hoary parcel
#

@mossy osprey spigot 1.15.2 is build on mc 1.15.2

#

20w11a is part of the 1.16 snapshots

#

So it will reach spigot with the 1.16 release of mc and spigot

#

Spigot doesn't distribute snapshot versions, they are only used for testing in the #spigotcraft server

#

So you could try reproduce it there if you want

mossy osprey
#

That answers it exactly then, thank you.

frigid ember
mossy osprey
#

Looks like its time to generate some superflat region data in single player, woo.

fleet crane
#

Hi, we have a server with spigot 1.15.2 and we want to build some advanced redstone machines, but they keep breaking. After doing a little research I discovered spigot sometimes moves redstone ticks to the next server tick so the performance suffers less, but this breaks the redstone contraption. Is there some way that I can prevent this from happening? The server is strong enough for that to be disabled but I simply don't know where to disable it.
@clear lark spigot doesn't do such a thing, the internet is full of misinformation. If your redstone broke it's a bug

#

@frigid ember if you aren't running spigot this isn't the place for support

tiny dagger
#

@frigid ember that's probabily linear lag πŸ€”

frigid ember
#

Mh.. ok

clear lark
#

@fleet crane it does not break in vanilla, but it does on the server

frigid ember
#

@frigid ember if you aren't running spigot this isn't the place for support
@fleet crane Ok, sorry

tiny dagger
#

you can nitpick your plugins to see if it goes down

frigid ember
#

What is it "nitpick"?

fleet crane
#

You should make a reliable and simple test case and then open a bug report @clear lark

clear lark
#

Okie

tiny dagger
#

@frigid ember remove one by one till it goes down

frigid ember
#

@frigid ember someone who selects every little thing and usually complains about it

#

or that

clear lark
tiny dagger
#

does anyone knows if it's normal for npcs on first server start to be all steves? πŸ€”

#

Do i have to do some pre cache

hoary parcel
#

1.7

#

well thats something I havnt heard in a long time

#

@tiny dagger mojang services be having issues the last couple days/weeks

#

but ye, caching is a good thing, there are events to catch profile lookups

narrow crypt
#

if i want to save a inventory to yaml, should i just do: data.set("name", myinventory);
its only used for the plugin to write/read

tiny dagger
#

that would be the way yes

junior acorn
#

i am having issues with group manager says essentials is not required but its not working i am trying to make a server that doesnt require essentials but issue is it shows my name as <> no group tags no permissions do i need a chat formatter if so any you guys recommend that support 1.15.2

#

?

narrow crypt
#

chatex

#

its from essentials but he

#

thanks fr33styler

tiny dagger
#

but i'm not sure if inventory is serializable or the itemstack or both

hidden glade
#
            Player player = (Player) sender;
            String playername = player.getDisplayName();

            if (args.length == 0) {

                String eia = plugin.getCustomFileConfiguration().getString("error-in-args");

                player.sendMessage(ChatColor.RED + eia);

            } else if (args.length > 0) {

                StringBuilder sb = new StringBuilder();
                for (String arg : args) sb.append(arg).append(" ");

                String messagetobs = sb.toString();

                Location location = player.getLocation();

                int messagerange = plugin.getCustomFileConfiguration().getInt("message-range");
                for (Entity e : player.getNearbyEntities(messagerange, messagerange, messagerange))

                    if (e instanceof Player) {

                        ((Player) e).sendMessage(ChatColor.LIGHT_PURPLE + playername + " " + messagetobs);

                    }else {

                        player.sendMessage("No one read the message");

                    }

            }```

So I want to send the message "no one heard you" if it wasnt a HumanEntity but.
#

it sends the msg for each non human entity

junior acorn
#

[02:24:38 INFO]: [ChatEx] Latest version found online is 2.4.0v37
[02:24:38 WARN]: java.lang.NumberFormatException: For input string: "240v37"
[02:24:38 WARN]: at java.lang.NumberFormatException.forInputString(Unknown Source)
[02:24:38 WARN]: at java.lang.Integer.parseInt(Unknown Source)
[02:24:38 WARN]: at java.lang.Integer.valueOf(Unknown Source)
[02:24:38 WARN]: at de.jeter.chatex.utils.UpdateChecker.shouldUpdate(UpdateChecker.java:138)
[02:24:38 WARN]: at de.jeter.chatex.utils.UpdateChecker.checkUpdate(UpdateChecker.java:117)
[02:24:38 WARN]: at de.jeter.chatex.utils.UpdateChecker.access$200(UpdateChecker.java:14)
[02:24:38 WARN]: at de.jeter.chatex.utils.UpdateChecker$UpdaterRunnable.run(UpdateChecker.java:165)
[02:24:38 WARN]: at java.lang.Thread.run(Unknown Source)
[02:24:38 INFO]: [ChatEx] Update found!

#

says its latest but shows there is an update

hidden glade
#

did u get it from spigot?

junior acorn
#

works tho so its ok i guess

lofty otter
#

guys, how can I declare the version of my plugin in the code as opposed to the plugin.yml?

vernal spruce
#

Why avoid essentials it pretty much became a must for servers..

#

You cant rly

#

There is no way to auto update plugin.yml..

lofty otter
#

i know theres a way of registering plugin commands at runtime with reflection for example

vernal spruce
#

Commands can be done multiple ways but plugin.yml gets built by ide

#

Also the server uses the plugin.yml for guidance..

junior acorn
#

avoided not only essentials but worldedit and worldguard i wanted something different, essentials is way overused and seems like every server has the same base wordledit worldguard essentials. i manage to find a replacement for most basic commands but the point is to stand up and be different

#

you know what i mean

tiny dagger
#

you can have a plugin loader that loads your plugin manually where you switch your version so yeah.. you can't really

lofty otter
#

the problem is that my plugin is implemented on 5 different platforms 3 of which use plugin.yml. Ive got a plugin meta class in the common module that gets the version string from gradle

vernal spruce
#

@junior acorn its because of its usefullness

lofty otter
#

and i find it really annoying that i need to go to 4 different files

#

to change the version, when i should just be able to change it from my build.gradle

tiny dagger
#

you can replace plugin.yml insides with a placeholder and maven i think πŸ€”

lofty otter
#

yeah thats what im doing

#

but in my common module

fleet crane
#

so then whats the issue

lofty otter
#

with blossom

#

then id need to put that code in the build.gradle for each implementation

#

the blossom code

#

whats so hard about just reading from a main class?

vernal spruce
#

Doesnt most plugins run multiple jars inside?

junior acorn
#

it's md_5 themself holy crap i never seen them in person

lofty otter
#

the common build.gradle cant touch files in other modules

tiny dagger
#

i think you can try modifing the plugin description πŸ€”

keen compass
#

I just use maven to set my version in places I need the version to be updated. Then that just leaves me updating in the pom in one place only πŸ˜‰

lofty otter
#

i have this in my common module

#

and read it in sponge and velocity

fleet crane
#

replaceable strings IN java code is shocking

lofty otter
#

well

#

not in this case

fleet crane
#

no

#

its absolutely shocking in every case

junior acorn
#

anyone know of a plugins to replace /mail i found a command to replace /r /replay and /msg but still having trouble finding a mail replacement

lofty otter
#

whats shocking is that plugin.yml still exists

tiny dagger
#

how do you specify where your javaplugin path is?

keen compass
#

Well, I haven't come across an instance that I couldn't dynamically change the version using maven, even when using multiple modules

lofty otter
#

with a @Plugin annotation

keen compass
#

I don't use gradle so not entirely sure how gradle does it

lofty otter
#

works well on sponge on velocity

vernal spruce
#

I mean.. plugin.yml exists for guidance reason..

fleet crane
#

why is an annotation necessarily better than plugin.yml ?

#

also

lofty otter
#

when it comes to basic plugin meta like name, its debatable. But when it comes to registering commands, theres no wonder people have come up with hacks to register commands with reflection

#

why would you restrict people to only whats in a yml file, when you dont need that at all

#

just register the command in your code

fleet crane
#

well I literally linked you to a library that uses annotations to generate plugin.yml

vernal spruce
#

does a server owner care whats inside though?

lofty otter
#

im having a look at it

#

im not talking about server owners, im talking about devs

hoary parcel
#

the issue is that most ppl that register commands via code, dont do so properly

fleet crane
#

but your premise seems to boil down to 'I think annotations are cooler than yaml therefore your API is wrong'

hoary parcel
#

eg not registering into bukkits help map

vernal spruce
#

@hoary parcel spigot guide where? REE

hoary parcel
#

my guide would be "use ACF", lol

vernal spruce
#

damn

cold wharf
#

Can I ask help related to intellij?

frigid ember
#

@fleet crane thank You very much i am renesys

hoary parcel
#

ye, sure

lofty otter
#

i mean, why would you even think about making an additional file outside of java when theres such a thing as annotations?

frigid ember
#

Can some1 setup votifier for me in bungeecord?
I'll pay him

lofty otter
#

i get that its a valid solution to the problem, but annotations dont require you to specify the main class

#

or commands

cold wharf
#

I have used intellij debugger, it starts up the server perfectly but it doesn't add the plugin to the server

hoary parcel
#

because you can read the file before you can read the annotations

vernal spruce
#

its been quite some times i opened a jar file to read its plugin.yml

hoary parcel
#

how would you find the main class? class path scanning? πŸ˜„

vernal spruce
#

to see commands and such

lofty otter
#

yes

hoary parcel
#

thats horrible slow

lofty otter
#

not rlly

hoary parcel
#

@cold wharf well, you need to copy it properly to your plugins folder

#

IJ just starts the server

vernal spruce
#

i guess if it works,it works

hoary parcel
#

you also forget how old bukkit is

cold wharf
#

@hoary parcel how?

hoary parcel
#

well, you can move it manually

#

or use a maven plugin

#

or a bash script

#

or whatever

cold wharf
#

I mean you meant by moving the plugin or the server file?

vernal spruce
#

jeez my laptop went turbo mode with chrome and discord opened

fleet crane
#

classpath scanning is slow

#

it would add seconds to the startup time of a large server (which wouldve been much more significant when the server started in seconds)

hidden glade
vernal spruce
#

plugin.yml best way confirmed

lofty otter
#

definitely not seconds

hoary parcel
#

@cold wharf you need to put your plugin jar into the plugins folder

lofty otter
#

i start a sponge server with several plugins in under 1.5 seconds

silk bane
#

if you think about how standalone java applications run

cold wharf
#

Oh oki let me try

hoary parcel
#

aaawww yes, hes a sponge guy

fleet crane
#

@hidden glade rethink your code

silk bane
#

they have a plugin.yml equivalent as META-INF/MANIFEST.mf

fleet crane
#

you need to add some sort of variable in the loop to see if there were players

lofty otter
#

yes i did start writing plugins with sponge

fleet crane
#

and send the 'no one heard' message after the loop

hoary parcel
visual walrus
#

is there a plugin, you can vote for other players?

hidden glade
#

ok TY

visual walrus
#

sorry for my bad english

vernal spruce
#

getnearbyentities dont affect items dropped as well?

visual walrus
#

can someone help me?

vernal spruce
#

Maybe ask the question rather than waiting for an asnwer..

keen compass
#

not entirely sure what the issue is with plugin.yml and commands. I have no problems with it, considering I organize my commands based on if they truly need to have their own base or not. If the command doesn't need its own base command and instead could be just a subcommand it doesn't need to be registered as a separate command

#

also, you can specify the permissions level in the plugin.yml for those that choose to not have a permissions plugin as well

vernal spruce
#

making commands based on args[0] may do it

junior acorn
#

trying to find a chest shop plugin not sign on other blocks but sign on chest where you can do buy sell trade directly on chest to work. chest sign no gui but i cant find any everything is now sign on wall or on specific blocks but my need is a plugin where you can use chest as base

#

if that makes sense

vernal spruce
#

why not make one?

keen compass
#

chest shop is a plugin that works

#

uses chests or signs up to you

vernal spruce
#

You know.. you are giving up perfectly created wheels for parts of it

#

if you get what i mean..

narrow crypt
#

how do i get the count of data.getKeys(false)

#

like how many main keys there are

vernal spruce
#

in what context

#

a config file?

narrow crypt
#

yes

keen compass
#

You would need a loop

narrow crypt
#

data.yml file

#

ah

#

there isnt a .count or .length

#

i get it

vernal spruce
#

i usualy do for(String key : getConfig().getconfigsection("section").getKeys(false))

narrow crypt
#

keycounter ++

#

right

vernal spruce
#

its better to also check if it exists first

lofty otter
#

ok so the plugin.yml isnt too bad, i got a big trigger happy there. What really does tick me off is the overuse of classes where interfaces would be more appropriate. In order to use my own class structure i have to hack with inner classes

narrow crypt
#

i will do that stellrow

keen compass
#

is that a comment related to the API or are you referring to other plugins? o.O

lofty otter
#

the api

vernal spruce
#

plugins.yml has only main wich you need to reffer though?

lofty otter
#

using classes forces consumers of your api to extend your classes

keen compass
#

Well it isn't perfect, I am sure some or most would agree. However, you are allowed to make PR's though

lofty otter
#

when they would rather extend their own

#

changing it to interfaces is a breaking change

#

so its too late for that

hoary parcel
#

bukkit was never meant to be extended

keen compass
#

sometimes breaking changes do happen every now and then with the API πŸ˜‰

hoary parcel
#

thats the fundamental issue

vernal spruce
#

ive yet to meet a issue with plugin.yml

crimson sandal
#

Oh sweet, I didn't know the plugin annotations library existed!

lofty otter
#

they do the SAME thing

#

one is 7 times longer

#

because i need to hack with inner classes

#

instead of just being able to extend my common plugin

#

i need to extend javaplugin

keen compass
#

One uses the protocol the other doesn't

hoary parcel
#

ok we talking about bungee now

#

lol

lofty otter
#

same with spigot

#

but i have extra lines in there for a fix to do with proxy support

keen compass
#

Can't really compare. One uses packets the other is using the API. You could do the same in spigot if you choose to listen for packets instead

cold wharf
#

@hoary parcel I tried adding plugin but it still didn't work

#

It didn't load up

crimson sandal
#

Also, will I get an email when my Stash account gets activated to make a PR?

lofty otter
#

frostalf what? bungee is an api too...

fleet crane
#

wtf is your point

#

it seems to just be 'bungee doesn't have native guice support therefore sucks'

lofty otter
#

no its not guice

#

thats not my point

velvet halo
#

lets relax

lofty otter
#

my point is that i need to hack with inner classes to extend my common class

hoary parcel
#

its that his framework he wrote for multi platform support happens to use extends too

fleet crane
#

'bungee doesn't have $fangled_dependency_injection_framework and therefore sucks'

lofty otter
#

the problem is not the dependency

fleet crane
#

@crimson sandal no it will just be activated

#

oh

#

plugins not having a common class is horrendous design imo

#

I think the velocity example is terrible in that respect

crimson sandal
#

@fleet crane Okay cheers, I'll keep checking back then πŸ™‚

fleet crane
#

its usually added in a day or two, @wintry jasper handles it

lofty otter
#

thats interesting, what do you have against having a separate PluginContainer type for all of that stuff?

#

all i see is the extra flexibility to use your own class structure

#

instead of being forced to extend a class

fleet crane
#

oh no, a whole extra class

lofty otter
#

it sure does clean up the code

#

and you probably wont have to use final methods preventing plugins from overwriting behavior that you rely on

hoary parcel
#

you would replace Plugin with an interface, but how would you handle stuff like getConfig methods then?

#

default methods?

lofty otter
#

if it were up to me, injection

hoary parcel
#

or getSomeThing.getConfig?

lofty otter
#

but DI is not for everyone

hoary parcel
#

that would be a whole different concept

lofty otter
#

but yeah, default methods would work

hoary parcel
#

but they werent available when that class was created anyways

keen compass
#

not all API's are created equal. Just because one API is nicer to work with then another, doesn't mean that other API needs to change what they do just because it isn't like some other one.

lofty otter
#

yes this is all speculation because this kind of change wont happen with bukkit

vernal spruce
#

@keen compass paper vs spigot

#

you called it indirectly πŸ˜‚

silk bane
#

wdym? they share the entire Bukkit API

hoary parcel
#

mmmh? paper cant do such changes either, forks cant really break shit, they just add api

silk bane
#

not like paper can casually change the plugin loading mechanism

keen compass
#

I wasn't talking about forks, but Cableguy20 seems to be comparing the sponge api to the bukkit api

#

which are both completely different systems

hoary parcel
#

its not at a marketshare yet where they can just break up from upstream, lol

vernal spruce
#

"il buy your entire stock"

lofty otter
#

the main issue is backwards compatibility

vernal spruce
#

tbh never cared for it

#

im only coding for latest version always

keen compass
#

Backwards compatibility is more difficult and requires supporting older versions which isn't very feasible

hoary parcel
#

see, I think that its reasonable to ask plugins to adopt on major minecraft versions

#

so api breakage should be allowed

lofty otter
#

yeah but server owners like it when they can use older plugins without breakage

hoary parcel
#

sure, rewriting the loading mechanism will not happen

#

as thats changing a whole concept

lofty otter
#

yep

hoary parcel
#

but other stuff should be broken

keen compass
#

that is on the plugin authors to make their plugins compatible with older versions

lofty otter
#

although theres no point to breakage for its own sake

#

there should always be a good reason

hoary parcel
#

for example, I really would like to have native brigadier support for commands in bukkit, but I think ppl would hate me for forcing that ontop them πŸ˜„

vernal spruce
#

if it compes to version compatibility dont count on me

keen compass
#

API is already forwards compatible though, so you can use older plugins on newer versions given the API hasn't changed

vernal spruce
#

@keen compass yeah since 1.12 not much has changed

#

the new modern materials made quite a nice change

lofty otter
#

also im pretty sure thats backwards compatible frostalf

vernal spruce
#

i guess 1.15 has serializable location now

#

so that might be a problem

keen compass
#

no that is forwards compatible

#

because regardless if the server goes up a version

#

the plugin doesn't need to necessarily

#

but if you made your plugin for a higher version, it won't necessarily work on a lower version

vernal spruce
#

im pretty sure most 1.15 plugins will work on 1.16

keen compass
#

backwards compatible means supporting lower versions, forwards compatible means supporting higher versions

narrow crypt
#

Is it bad to create a few yml files to keep organized? or is it bad in terms of permformance
Cause i save quite a bit of locations that get removed automatically and the other file is for saving itemstacks[]

vernal spruce
#

@keen compass isnt the api most build to assure forward comp?

keen compass
#

yes

vernal spruce
#

@narrow crypt not at all

narrow crypt
#

okay great

keen compass
#

So that means old plugins in theory will continue to work even if the mc version changes

#

now if it was the other way around, it would be that newer plugins would automatically be able to support lower versions of mc

#

even though it was built against a higher version

lofty otter
#

no its backwards compatibility because newer version of MC still support old plugins

keen compass
#

that is forwards compatible

vernal spruce
#

yeah

#

1.14 working on 1.15

lofty otter
#

no its 1.15 allowing old plugins

keen compass
#

backwards compatible would be making a plugin on 1.15 and then it working on 1.14 without doing anything

vernal spruce
#

wich i guess it can be achieved through the api

lofty otter
#

"An API is Backwards Compatible if a program written against one version of that API will continue to work the same way, without modification, against future versions of the API."

#

so it worked with 1.15

vernal spruce
#

but imagine the logic keeping all the old code

lofty otter
#

and it continues to work with 1.16

#

which is, "without modification, against future versions of the API"

keen compass
#

Assuming the API changed

#

if the API changed, older plugins generally break

lofty otter
#

ok so we agree that its backwards compatibility now?

keen compass
#

Just because the MC version changed, doesn't mean the API did

lofty otter
#

MC is an api

keen compass
#

no bukkit is an API

vernal spruce
#

...

lofty otter
#

bukkit is an api that talks to the mc api

keen compass
#

MC doesn't have an API

vernal spruce
#

isnt mc api,the server rather than an minecraft client?

lofty otter
#

and if the bukkit api didnt change then its neither backwards nor forwards compatiblity

#

if you can call minecraft code, thats an api

keen compass
#

Everytime there is a change in the API old plugins generally break

#

which means not backwards compatible if the API changes

vernal spruce
#

fk 1.8 πŸ˜‚

hoary parcel
#

Cableguy20Today at 12:22 PM
MC is an api
see, nowadays maybe. not 10 years ago tho

lofty otter
#

if you can call code from it

#

its an api

hoary parcel
#

well, stable api then

keen compass
#

you can in general turn any program into an API if you call code from it

lofty otter
#

yes

keen compass
#

doesn't mean it really is an API though

dusty topaz
#

Does that mean remote code injection is an api

vernal spruce
#

are you calling code from minecraft or the server though? πŸ€”

lofty otter
#

its the same?

#

you call code from minecraft, the implementation for which is the server

vernal spruce
#

i mean there are alot of things the client handles itself

#

wich you cant modify server side

lofty otter
#

well you handle the server things on the server and client things on the client

keen compass
#

Minecraft isn't an API at all. It is an implementation more then anything. Anytime there is an update, the mc code changes everywhere which isn't what an API is supposed to do. Yes you can call code from it, but to call it an API would be incorrect.

#

The Bukkit/Spigot api does not change everytime there is an update to MC. There are times the API does get updated or changed, but for the most part it is constant. Which makes it a valid API structure.

narrow crypt
#

what is wrong with this, im trying to get the amount of keys in data.yml in the section loot

int chestamount = data.getConfigurationSection("loot.").getKeys(false).size();
#

data.yml:

loot:
  chest0:
    items etc
  chest1:
    items etc
#
java.lang.NullPointerException: null
        at me.rik.Airdrop.Lightning.Lightin(Lightning.java:125) ~[?:?]
#

with line 125 being ```java
int chestamount = data.getConfigurationSection("loot").getKeys(false).size();

vivid imp
#

Please help: > [12:35:45 INFO]: kevin[/IP ADRESS] logged in with entity id 1004 at ([Survival] -8.0, 171.0, 7.0)

[12:35:45 WARN]: Exception in thread "Craft Scheduler Thread - 15"
[12:35:45 WARN]: org.apache.commons.lang.UnhandledException: Plugin Essentials v2.17.1.0 generated an exception while executing task 130
at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:56)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at com.earth2me.essentials.geoip.EssentialsGeoIPPlayerListener.delayedJoin(EssentialsGeoIPPlayerListener.java:80)
at com.earth2me.essentials.geoip.EssentialsGeoIPPlayerListener.lambda$onPlayerJoin$0(EssentialsGeoIPPlayerListener.java:48)
at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftTask.run(CraftTask.java:71)
at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
... 3 more

frigid ember
#

is it safe to use color coded item lores instead of nbt data? im making items with special abilities

visual walrus
#

I think its the essentials plugin

rigid nacelle
#

Might want to hide that ip lad.

whole niche
#

hi

rigid nacelle
#

@vivid imp

keen compass
#

don't really need to hide IP's. They are not as private as you might think XD

rigid nacelle
#

A bit more safer than usual tho. :p

keen compass
#

not really, not hard to see what IP's an ISP owns

rigid nacelle
#

Still.

whole niche
#

i cant start my bungeecord since i add some plugins. can someone translate this error code and see if it's related to the plugins i add?