#help-development

1 messages · Page 782 of 1

zealous osprey
#

Is Chunk#getBlockAt async available? Or does it have too be on the main thread?

slender elbow
#

redis can be used for persistent storage too

worldly ingot
#

Yeah of course

#

I'd just recommend a better alternative lol

slender elbow
#

and generally speaking, redis is the "better way" (as opposed to, e.g., plugin msg or sql polling/probing (ew))

slender elbow
zealous osprey
worldly ingot
#

"No, yes"

zealous osprey
#

sadge

#

But... it's working for me?

rotund ravine
#

Ahaha until smth weird breaks

#

And you can’t find the cause

#

Cause it’s caused by you doing smth async

slender elbow
#

it's a ticking bomb, essentially

zealous osprey
#

It will hopefully not be an issue in my case. Cause noone will be on the server while I run that code.
And I'm running Chunk#getBlockAt in seperate chunks. So there will be one thread doing Chunk#getBlockAt for one chunk, another thread for another chunk, etc.

slender elbow
#

best case scenario, you actually get an exception being thrown

rotund ravine
#

Keep a backup

slender elbow
#

worst case, something gets corrupted silently

#

and you never find out

#

and then the server crashes trying to load the chunk

#

although a Block is nothing but a funny Location, operations you do on it (get/set type etc) that won't be very nice

pine sandal
#

Question, once I get a TranslationKey (Type is String) with getTranslationKey how do I acutally translate it so I can display it? I am trying to set the text on the top of a GUI with a name I get from a Entity but that apparently doesn't get translated.

rotund ravine
#

You don’t actually translate it, but send/set it in a TranslationComponent that then gets sent to the player who translates it

zealous osprey
rotund ravine
#

What funny stuff happened

pine sandal
rotund ravine
#

It’s in the bungee chat api

zealous osprey
rotund ravine
pine sandal
#

So I am guessing its part of the Bukkit api that hasn't caught up with times.

rotund ravine
#

Ye

pine sandal
#

Also it being part of the bungee chat api doesn't help much when I am working on a Spigot Plugin that needs to work without bungeecord 😦

slender elbow
#

you're in luck, the bungee chat api is available on spigot

pine sandal
#

Really? Not seeing it in the Spigot-API docs anywhere.

#

And it works without bungee?

pine sandal
#

Still doesn't help solve my issue at all, but I have found that my issue isn't currently solve-able. (At least not properly).

slender elbow
#

that'd be correct as pointed out

pine sandal
#

Going to have to fall back to using the Deprecated getName() function.

zealous osprey
#

Ah yes, when you do small optimizations and your code goes from running between 12-15 seconds to... 140ms; WTF

rotund ravine
#

Negative optimization

zealous osprey
rotund ravine
#

I read that as 12-15ms

#

Ahaha

zealous osprey
#

Though I had that happen aswell... multiple times

rotund ravine
#

Congratulations on increasing ur speed (delay) by 10 times 💪🏻 jkjk

rotund ravine
#

Well i was still building on my first assumption

#

12-14ms to 140ms

#

Everything else is a lie

zealous osprey
#

Realisation that I can't take a joke
Welp...
Vanishes

river oracle
#

look into ChunkSnapshot if you just need to reed blocks in a chunk. Once a ChunkSnapshot is captured on the main thread you can read it to your hearts content asynchronously

river oracle
#

I do this in one of my plugins which scans hundreds of chunks top to bottom for blocks

#

its pretty efficent given you distribute tasks efficetively

zealous osprey
# river oracle its pretty efficent given you distribute tasks efficetively

Ye, I changes from Chunk to ChunkSnapshot and one other small tweak; That caused the major performance increase.
Also, do you know of an efficient way to checl for the highest block in a chunk, except for looping over every block and checking with the ChunkSnapshot(true, false, false)#getHighestBlockAt(x, z)?

river oracle
#

remember that those coordinates are relative though

#

e.g. must be between 0-15

zealous osprey
#

ye

storm crystal
#

how can I set summoned armor stand same position as my players?

#

as in to make them look in the same direction

pine sandal
#

Any idea if its possible with a FurnaceInventory to set its burn time and progress for displaying in the GUI? Or is that not possible with the Inventory alone. (This an is Inventory I created with Bukkit.createInventory so it has a null holder.) Would I have to make a holder for it?

rotund ravine
#

?jd-s

undone axleBOT
rotund ravine
#

Huh, guess not

pine sandal
#

Yea, I already read the docs and I can't see any way of doing it, which is why I am asking.

upper hazel
#

who knows in which class the class responsible for the vanilla chunk generator is located (craftBukkit)

#

i try found but I come across solid multi-level interfaces

rotund ravine
#

It’s probably just parsing the vanilla one

#

Not actually implementing it

upper hazel
#

what??

pine sandal
#

So I will have to make a holder for my inventory then. Since I don't think furnace related events would fire for my FurnaceInventory instance since it isn't actually attached to a block.

upper hazel
#

I tried to find the right answer on the forums, but many do not understand the essence of the question...

storm crystal
#

why does this line of code trigger twice?

#

the method is triggered with right clicking on entity with a bone

pine sandal
#

When you right click it probably clicks with both main and off hand.

storm crystal
#

I already filtered it here tho

onyx fjord
#

what kind of material doesnt have itemmeta for example?

#

is it just air

lost matrix
lost matrix
storm crystal
lost matrix
#

Is the first screenshot from your ability method?

storm crystal
#

yeah

#

I checked

#

and for some reason

lofty badge
#

guys, who can help me with gd.py? i need use this code without async func: python async def Download(id): song = await client.get_song(id) file = open("audio.mp3", "wb") await song.download(file) return song.name, song.artist, song.size

storm crystal
#

only health bar changes twice

lost matrix
lost matrix
storm crystal
#

when I type code to write a message to a player its executed once

topaz cape
#

i mean it could be true if its the same instance

#

no?

#

ah

lost matrix
storm crystal
#

I am

lost matrix
#

Never, ever compare Strings using ==

lofty badge
lost matrix
#

Sometimes you get lucky and your strings are in the string pool.
Comparing strings with == works sporadically

lofty badge
tough mica
#

is it possible to cancel the full gamemode 3 interaction? like click in players or something

lost matrix
lost matrix
# lofty badge yes

Then just call the method blocking

import asyncio
...
result = asyncio.run(Download(123))
lofty badge
#

ok, but i have new error.. File "/home/container/Downloader.py", line 6, in Download song = await client.get_song(id) ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/gd/client.py", line 1351, in get_song model = await self.session.get_song(song_id=song_id) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/gd/session.py", line 787, in get_song response = await self.http.get_song(song_id) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/gd/http.py", line 2707, in get_song response = await self.request_route(route, data=payload, error_codes=error_codes) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/gd/http.py", line 696, in request_route return await self.request( # type: ignore ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/gd/http.py", line 848, in request error = HTTPStatusError(status) ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/container/.local/lib/python3.11/site-packages/gd/errors.py", line 67, in __init__ super().__init__(HTTP_STATUS.format(self.status)) ^^^^^^^^^^^ AttributeError: 'HTTPStatusError' object has no attribute 'status'

lost matrix
storm crystal
#

why getting PDC of armorstand gives me null

lofty badge
pine sandal
#

Figured it how to set the burn time and cook time on my custom furnace inventory, from my inventory, I can get all the viewers and from there I can using InventoryView I can use setProperty to set my things I wanted. Just figured I let you know I found a way to do it.

storm crystal
lost matrix
lost matrix
pine sandal
#

What is EntityPDC

storm crystal
lost matrix
# storm crystal

So its a String stored within your PDC.
Well in that case your PDC doesnt have a String with that key when you call your method.

storm crystal
#

but it literally should

#

I set it to uuid

lost matrix
# storm crystal but it literally should

A namespaced key cant be a single word like "bone".
It needs a namespace and a key. So "namespace:key".
The proper way to construct a key is to pass your JavaPlugin instance to the constructor of a namespaced key.

storm crystal
#

and it has those

lost matrix
#
NamespacedKey key = new NamespacedKey(yourPlugin, "some_key");
storm crystal
lost matrix
storm crystal
#

look at this method

#

it literally has it

rotund ravine
#

?jd-s

lost matrix
undone axleBOT
lost matrix
lost matrix
# storm crystal look at this method

The proper way to construct a key is to pass your JavaPlugin instance to the constructor of a namespaced key.

NamespacedKey key = new NamespacedKey(yourPlugin, "some_key");
rotund ravine
#

Using mcs namespace smh

storm crystal
#

so just namespace:bone?

lost matrix
#

"namespace" is a very questionable name for a namespace

storm crystal
#

idk man it literally works here normally

lost matrix
storm crystal
#

I did ask

mint barn
#

Hello, can anyone help me with nuvotifier? I can't get it to work, it tells me there is no listener
Code:

public class NuVotifier implements Listener, ForwardedVoteListener {

    @EventHandler
    public void onVote(final VotifierEvent event) {
        System.out.println(event.getVote().getUsername());
    }

    @Override
    public void onForward(Vote vote) {
        System.out.println(vote.getUsername());
    }
}```

Errors:
```cmd
[21:33:51 ERROR]: [Votifier] A vote was received, but you don't have any listeners available to listen for it.
[21:33:51 ERROR]: [Votifier] See https://github.com/NuVotifier/NuVotifier/wiki/Setup-Guide#vote-listeners for
[21:33:51 ERROR]: [Votifier] a list of listeners you can configure.
storm crystal
#

yes they have it

#

wait

#

I dont get it

#

I mean I fixed it

lost matrix
storm crystal
#

but the thing is

#

why this suddenly works

#

was it not able to get the PDC in time and it assumed that its null

#

or what

lost matrix
mint barn
lost matrix
lost matrix
mint barn
#

I've already read the documentation and it doesn't help me at all 😦

remote swallow
#

anyone know what these keywords are from

#

i feel like none

lost matrix
#

GO TO RUN>
Oh god...

storm crystal
#

when I trigger it on the enemy for the first time, hp is deducted from HP bar twice

#

damage is dealt once

#

and every other cast works normally (60 damage, -60 hp on health bar)

remote swallow
lost matrix
lost matrix
lost matrix
# storm crystal only once

If a method is only called once, then code within this method can also just be called once unless you
are using loops. Do you call the health bar update on another piece of code as well?

storm crystal
#

nope

storm crystal
#

only here

#

and it is definitely not inside for loop

remote swallow
#

and they just spoke about minecraft

#

nothing true said

lost matrix
storm crystal
#

no

lost matrix
#

Well then the method can only get called once.
Debug it again.

storm crystal
#

well for some resaon theres this problem again

lost matrix
#

Looks like you try to get your value before you set it

storm crystal
#

I just dont fucking get it

#

I literally get it

#

before

#

I check it

lost matrix
#

Did you account for the armorstands in the world which dont have your pdc tag?

storm crystal
lost matrix
#

Some more tips to make your code more clean and readable:

  • Dont use single letter variables like i and j
  • Dont nest so deeply
  • Create more methods and make your lambdas only one line long
lost matrix
# storm crystal

isEmpty() will throw a NullpointerException if the entity doesnt have this value in its pdc.

storm crystal
#

it just doesnt work now

#

amazing

storm crystal
#

its not even deeply nested

lost matrix
lost matrix
storm crystal
#

im not working with anyone else

lost matrix
lost matrix
storm crystal
#

you didnt ask what i and j is so it doesnt seem that it was confusing

lost matrix
storm crystal
#

w/e it doesnt work so ill just rewrite it all again someday

#

does entity.damage(value) trigger EntityDamagebyEntityEvent

lost matrix
#

Should be relative to the src root.
But why do you need to know this?

lost matrix
#

Well no

#

It triggers the EntitiyDamageEvent

storm crystal
#

I have healthbar manager here as well

lost matrix
#

Hm?

storm crystal
#

I dont fucking get it because healthbar is triggered twice for the first time only

#

and then its triggered accordingly

pine sandal
#

I feel dumb, does Spigot not have any sort of API to access the Tag system build into minecraft since 1.13? Tried searching for Tag in the docs and I only get something relating to ItemTags used before the PDC stuff.

hushed spindle
#

does anyone here happen to know how to give a block with custom model data like an item texture without making the default one broke

hushed spindle
#

bruh

lost matrix
#

There is only a trick where you place a spawner which has an item in it which has a scaled block in its head.
Hacky and hogs your CPU bc its a TileEntity

hushed spindle
#

sad

pine sandal
hushed spindle
#

will just have to replace the block items with item items then

river oracle
#

arrow pattern is truly the best

#

if you're going to shoot an arrow it better atleast fly off your screen

lost matrix
river oracle
#

for what even is an arrow if it never leaves the bow

hushed spindle
#

like

#

weird knife ig

#

legolas stabbed a guy with an arrow one time

#

that was kinda cool

glass mauve
#

again asking how to fix this (ProtocolLib 5.1.0, mc 1.19.4):

        public static class ItemFrameDataPacket extends PacketContainer {

            public ItemFrameDataPacket(int entityId) {
                super(PacketType.Play.Server.ENTITY_METADATA);
                getModifier().writeDefaults();

                getIntegers().write(0, entityId);
            }

            public void setInvisible(boolean invisible) {
                List<WrappedDataValue> values = List.of(
                        new WrappedDataValue(0, WrappedDataWatcher.Registry.get(Byte.class), (byte) (invisible ? 0x20 : 0))
                );

                getDataValueCollectionModifier().writeSafely(0, values);
            }

            public void setMap(@NotNull ItemStack map) {
                if (map.getType() != Material.FILLED_MAP) {
                    throw new IllegalArgumentException("ItemStack must be of type FILLED_MAP.");
                }

                List<WrappedDataValue> values = List.of(
                        new WrappedDataValue(8, WrappedDataWatcher.Registry.getItemStackSerializer(false), map)
                );
                getDataValueCollectionModifier().writeSafely(0, values);
            }

        }
#

it is caused by setMap

#

I am having problems fixing it because the error is not showing where its coming from

#

yeah ik

lost matrix
#

You shouldnt need nms when using protocollib

glass mauve
#

^

lost matrix
#

We had this exact problem a few days ago

#

In this channel

glass mauve
#

prob was me

#

but we didnt fix it

river oracle
#

I'd say make an issue with protocol lib but seems like you're running an outdated version, not sure if they support those

#

I mean shouldn't protocol lib handle the bukkit to nms stuff

glass mauve
#

im running newest protocollib

#

the problem occured after I updated from 5.0.0 -> 5.1.0

river oracle
#

yeah I'd say make an issue then

#

likely an error on their end

glass mauve
#

👍

river oracle
#

even if its not you'll get an answer from the people who know the library best

glass mauve
#

yeah true

#

tty

river oracle
#

this is why I just use NMS i prefer to abstract myself so I can have fun with mojanks code

quaint mantle
#

yo are big names like this ok

river oracle
#

nah hurts my eyes. In all realness though yeah its absolutely fine

#

it wouldn't object oriented if the names weren't obnoxiously long now would it

lost matrix
glass mauve
#

no error, but the maps are not getting send over to the player

#

ngl this is so cancer

lost matrix
#

Doesnt the player need to be sent some kind of map data before he can see the map?

#

iirc the map item just contains a map ID and what is redered is sent by an additional packet

glass mauve
#

I am using player.sendMap(view) for that

#

created an issue, I will see

#

thanks for the help though

hushed spindle
#

when you do HashMap#values() it should return a list, right?

young knoll
#

Iirc it’s a set

hushed spindle
#

i mean it says it returns a collection but since duplicate values can exist it should be a list right

lost matrix
#

A Collection. No order, no random access.

young knoll
#

Ah right

#

Keys is a set

lost matrix
#

^

young knoll
#

If you want a list do new ArrayList(values)

hushed spindle
#

will duplicate values still exist in it though or will they be gone

hazy parrot
#

it will

hushed spindle
#

epic

hazy parrot
#

would be stupid for them to be deleted right

hushed spindle
#

just making sure its not a set lol

lost matrix
#

But what do you need a list for??

slender elbow
#

trade secrets

hushed spindle
#

i need to allow duplicates for this use case, i guess

lost matrix
#

Well, then keep it a Collection

hushed spindle
#

not necessarily for the order

slender elbow
#

huh

young knoll
#

The only real benefit of the list is order and index access

quaint mantle
#

does anyone know an api for particles

#

or maybe like a location api

#

so i dont have to do math for custom effects

orchid gazelle
#

For custom custom effects, you'll need math

cursive falcon
#

hey, is there a way to hide the enchanted glow effect on an item?

#

without manipulating packets or NMS

cursive falcon
river oracle
#

even then I'm not sure how well packets will work

cursive falcon
#

Damn alr

river oracle
#

since the client would know its enchanted based off its NBT and apply the glow effect

cursive falcon
#

I need it enchanted xD

#

I'll look into it

river oracle
#

you'd have to spoof the client a fake item that isn't enchanted while maintaining the fact they have an enchanted one on the server

cursive falcon
#

was only gonna use packets as last resort

river oracle
#

it'll be weird and there is probably going to be a lot of desync but I can't see any other way

#

or you can use pdc and do all the calculations yourself 😈

cursive falcon
#

pdc?

river oracle
#

?pdc

river oracle
#

its just persistent data

cursive falcon
#

ah

#

I'll js stick to packets 🤣

#

thanks anyways

untold mauve
#

any way to get console input whenever the sever starts? i have code that runs on server start and I want to ask to run it or not with a prompt such as "y/n"

hazy parrot
#

just make command

#

like /yourrplugin yes/no

quaint mantle
river oracle
#

sounds like a terrible idea

kind hatch
untold mauve
#

it would be annoying to change the config whenever i wanna run the code which is frequently but not all the time

#

ig il just make it a command

quaint mantle
#

if I have something like this

#

should I add this too

worldly ingot
#

It depends on whether or not you want that value to be mutable

#

Oh, sorry, I see what you mean. The constructor one

#

Yeah, probably safe to clone it, otherwise I could do something like this:

Vector vector = new Vector();
Line line = new Line(vector);
vector.setX(10);
System.out.println(line.getDisplacement().getX()); // This is 10```
quaint mantle
#

yeah that's what I thought could happen

#

idek why they made vector mutable imo

worldly ingot
#

Convenience mostly

worn fjord
#

Anyone know of a way to set a mob to be in its panicked state?

#

Like when you hit a cow and it starts tweaking and running around and spinning and shit for a few seconds

young knoll
#

You could deal 0 damage to it

worn fjord
#

dude great idea ill try that

#

hmm no luck, also its being hit acknowledgement "red overlay + sounds + animation" is something i'd like to avoid

#

looks like a player has to hit it

#

i've had the most luck with just burning the chicken, otherwise i'd probs have to use nms

umbral ridge
#

or run away from it

upper hazel
sullen marlin
#

What is your question

eternal oxide
#

each one contains a String

#

so it's a Set of PermissionAttachmentInfo which contains a getPermission() method

#

you have to itterate it to get all permissions/values

#

no

#

just stream

storm crystal
vocal cloud
#

Do it once, cache them, then you can delete them at any time for little cost.

storm crystal
#

How to cache

undone axleBOT
storm crystal
#

How do I tell apart its map of this players stands and not the other players

#

But how do I tell apart if its that specific armor stand

#

Wouldnt it remove all armor stands of that player

#

Idk what that is

echo basalt
#

uh still not a good idea to store entities and such on a map

storm crystal
#

Can I just make pdc of name:uuid and loop through armorstands to delete the ones who have it matched

echo basalt
#

playerid : standid

#

the proper way is to make an entity that follows the player's lifecycle

#

and track that entity's position

#

if the entity dies, you respawn it

#

but tbh I have no context of what you're doing so

quasi flint
wet breach
#
Hashmap map<UUID, UUID>
echo basalt
#

you mean

#
private final Map<UUID, UUID> referenceMap = new HashMap<>(); // PlayerID : EntityID
#

:)

wet breach
#

Why a map?

echo basalt
#

BiMap

#

fuck it

quasi flint
#

mans done it

#

hes insane

wet breach
#

Hashmap would be fine or concurrenthashmap if you want to use it in other threads

wet breach
#

What do you mean?

echo basalt
echo basalt
wet breach
#

Hashmap is better to use. Should only go with map if you need to be more generic or working with making an api. But if you have no specific reason for it then its better to use the one that is specific for it.

echo basalt
#

you're talking about the

#

Collection<Whatever> whatever = new ArrayList

#

thing?

wet breach
#

Where you used map in your example

echo basalt
#

Yeah

#

same thing

#

Basically

#

It's liskov substitution

short pilot
#

How can you prevent players from breaking a block owned by another player? Say we already have the hashset of chunks to player mappings done

echo basalt
#

part of the dependency inversion principle of SOLID

#

always rely on interfaces, not concrete implementations

#

this is ass

#

this is not

shadow night
#

Agreed

echo basalt
#

time to re-read the basics frosty

hybrid spoke
valid burrow
ivory sleet
#

Well liskov substitution and dependency inversion arent quite the same

echo basalt
#

They compliment

wet breach
echo basalt
#

ehh

#

it does

#

There's a reason why it's done

wet breach
#

There is always a reason for something. Doesnt mean it is better or it should be used for everything.

quaint mantle
#

I feel like a view is better imo

#

like sometimes

wet breach
# echo basalt There's a reason why it's done

The advantage of using a map like in your example is the ability to change the implementation without breaking the contract. However as i said this is usually more of a concern when developing an api then anything else because if you need to change the kind of collection you are using odds are you need to change more then just that anyways.

#

Otherwise its perfectly fine to use the more specific stuff if that is what is needed

echo basalt
#

You also don't expose irrelevant information like the kind of map you're using

#

If you specifically need a HashMap, sure use a HashMap

#

If you specifically need an Deque and a List, sure you can just have a specific LinkedList

quaint mantle
#

Yeah isn't that part of like encapsulation

wet breach
quaint mantle
#

It has to do with encapsulation

echo basalt
#

Always rely on abstractions, not concrete implementations

quaint mantle
#

I remember reading something about it

hybrid spoke
#

its DIP

echo basalt
#

Frosty's argument is the kind of argument cmarco would make

#

"I'm the only one working on my code why would I go out of my way for it to be clean"

hybrid spoke
#

you both argue the same thing. "use specific stuff if its needed"

#

you just add personal opinion

#

which will lead to nothing

echo basalt
#

we cooking

hybrid spoke
#

so imma just grab my popcorn

quaint mantle
#

do yall support arrays?

#

or use a list over it

echo basalt
#

I really don't want to have this argument tbh

wet breach
#

Its not anymore unclean. The stuff in the jdk is meant to be used. I would only worry about something in the jdk is when its up to the jdk implementation in how it works like floats for example. The amount of precision a float has is dependent on both system and hardware

hybrid spoke
tender shard
storm crystal
echo basalt
hybrid spoke
#

"it is in the jdk so use it"

#

yeah the interface is as well, so use it

quaint mantle
echo basalt
#

like a week ago

storm crystal
#

At all

quaint mantle
#

lol

echo basalt
#

you sure?

hybrid spoke
#

in most cases you may wanna use a list

#

in some cases wanna use an array

tender shard
wet breach
# hybrid spoke what is the point

You dont need to use generics just because. If you need a hashmap then use a hashmap. If you need it to be flexible then sure go with a more generic type.

echo basalt
#

I'd argue it should be flexible by nature but I'm not here to argue

quaint mantle
tender shard
#

depends

echo basalt
#

so imma make a sandwich

tender shard
#

what kind of sandwhich

#

BLT?

#

if it's not BLT...

#

then I feel bad for you

tender shard
hybrid spoke
#

great

tender shard
#

what is DIP

storm crystal
#

Apparently applying value and key to armorstand and then checking it is illegal

tender shard
#

not really

#

what do you even mean with "applying value and key to armorstand"

hybrid spoke
#

basically that you depend on abstractions

tender shard
#

hm well number 3 and 4 seem kinda stupid

echo basalt
#

blt is too much effort

storm crystal
echo basalt
#

which is kind of applicable

#

except for proxy classes

echo basalt
#

code I gave you worked, I used a ConcurrentHashMap specifically

#

only think I can think of is chunk unloads

storm crystal
echo basalt
#

I screenshared the entire development process, it works

storm crystal
#

Its on a voice chat ive never been on, why you assume Id look into that

#

xdd

echo basalt
#

might not have been you but the project concept was literally the same

#

right click and it spawns an armorstand that goes in a determined direction for 4 seconds and then kills itself

storm crystal
#

And why not use pdc

echo basalt
#

Because we don't need PDC here

#

We're not storing data across restarts

#

we're just running an animation

storm crystal
#

What can happen if I dont use consumer to spawn entity

echo basalt
#

data gets sent on the next tick

#

I wrote this on 1.8 because the guy that asked for it wanted it specifically on 1.8

#

if you can use the consumer, use it

wet breach
storm crystal
#

I dont know what an interface is so im not using it

quaint mantle
#

lol

#

@storm crystal u might wanna learn what an interface is

storm crystal
#

Reason

quaint mantle
#

So u can tell ur friends

storm crystal
#

? They dont program

ivory sleet
#

Tho, reason why you so often use Map term = HashMap() is not always because of liskovs or dep inv

quaint mantle
#

@ivory sleet remember when you showed me that luckperms storage snippet

ivory sleet
#

Uh yeahv

quaint mantle
#

What pattern is that called

ivory sleet
#

Are you referring to the StorageImplementation and Storage?

quaint mantle
#

yeah

#

storage implementation was an interface and storage made it async

ivory sleet
#

Its not just one pattern

#

We follow the humble object principle, adapter, delegation and wrapping

storm crystal
#

Are good quality servers written 100% by hand or use any external ready to use plugins

quaint mantle
#

External

ivory sleet
#

A mixture

storm crystal
#

Whats tebex

ivory sleet
#

They use citizens but forked iirc

onyx fjord
#

Previously known as buycraft

storm crystal
#

Is it possible to spawn player npcs w/o any external shit

onyx fjord
#

What do you consider as external

storm crystal
#

Anything that I dont write down or just write import

onyx fjord
#

You can with nms

#

Then

storm crystal
#

Whats nms

onyx fjord
#

Using Minecraft server internal code directly

ivory sleet
#

just painful

#

so thats why ppl use these s.c. shortcuts

onyx fjord
#

You gotta do all packet fuckery manually

storm crystal
#

Any guide for that?

onyx fjord
ivory sleet
#

:>

storm crystal
ivory sleet
#

i mean if u just take it and claim it as urs

#

yeah

#

lol

storm crystal
#

Well what else am I supposed to do with it

#

xd

ivory sleet
#

read it

#

understand it

#

inspiration

onyx fjord
wet breach
onyx fjord
#

I'm pretty sure citizens have one license covering entire project

wet breach
#

You cant relicense code that isnt yours

onyx fjord
#

Look what I said above

storm crystal
onyx fjord
#

Then you might be in trouble

#

The license should be pretty permissive tho

storm crystal
#

Well its personal use only I am not setting up public server

onyx fjord
#

Depends on the license, again

#

With GPL you don't have to release code used internally, but you need more context

wet breach
# onyx fjord Look what I said above

I did and my point is, the license only covers code that is theirs. Any code not belonging to them such as anything in the spigot/cb api or server code is not subject to their license as well as anything to do with the mc protocol.

onyx fjord
#

Gnu faq is a good source of information

onyx fjord
#

Both spigot API and citizens

storm crystal
#

Yeah thats why I wanted to do it myself

onyx fjord
#

Can't look up the repo rn

storm crystal
#

No Saul Goodman fuckery

#

Because its someone else's

onyx fjord
#

AGPL for example considers network use as distribution

#

But that's mostly for web related stuff

#

@storm crystal if your code will also be public with the same license you shouldn't have any problems

wet breach
onyx fjord
#

You can additionally mention where the code was taken from

storm crystal
onyx fjord
#

Then make sure you're not violating the license

#

But also what's the point of copying large parts of citizens

storm crystal
#

If im not gonna post it how they gonna know tho

onyx fjord
#

If you wanna modify you can fork

storm crystal
#

I just want to use it lol

#

But seems like loads to work to do it legally

onyx fjord
onyx fjord
#

Just write it yourself or use citizens

#

You can also expand by using their api

#

And just make an addon

storm crystal
#

I dont know how to use apis so no thanks Id just write it myself then

onyx fjord
#

Using an API is Def easier than writing your entire implementation

storm crystal
#

Idk about apis

wet breach
#

Using an api from another plugin or jar is no different then using spigot api in java

storm crystal
#

Okay but

#

I just boot project in intellij

#

And thats it

#

It works

ivory sleet
#

dusktaler considering the fact that you havent done java nor minecraft for very long

#

unsure if writing citizens urself is the best idea

ivory sleet
#

because its not a small project directly

storm crystal
#

Okay and what about it

#

Like why would size matter

ivory sleet
#

i mean

#

if u wanna go ahead and rewrite minecraft, no1 is stopping you

young knoll
#

Do it in python

eternal oxide
#

oh god Citizens rewrite would be a nightmare, even for the most experienced of programmers

glossy venture
eternal oxide
#

Before you know how BIG the task it you quickly jump in. It would be a real nightmare, but you would learn a lot if you spend time doing it

#

I found myself rewriting more often as I gained more experience. It's a vicious circle.

#

yep

#

Whenever I look at your old code I think the same 😄

#

Honestly not seen any of your code 🙂

#

everyone does about everyones code

#

unless it's by 7smile7, then we all look at it and think, what the hell does it do.

storm crystal
glad prawn
#

but it's not something simple to write yourself

storm crystal
#

I dont know what fork is

agile hollow
#

how can i check onPlayerInteract and PlayerToggleSneakEvent in the same moment? with the same @EventHandler?

eternal night
#

that is not how events work

agile hollow
slender elbow
#

you can check player.isSneaking inside the interact event

agile hollow
#

for check 2 thinks in the same if it's && right?

hybrid spoke
#

if they both must be true then && yes.

#

if only one have to be true then ||

#

&& = AND
|| = OR

agile hollow
#

btw my problem wasn't it it was i didn't remember to put the commands in the plugin.yml

rotund ravine
#

Ehh k

glad prawn
lost matrix
#

*And
with & both are evaluated, even if the first one was false
with | both are evaluated, even if the first one was true

pseudo hazel
#

there is no short circuiting?

lost matrix
#

Well for && and || there is.

hushed spindle
#

anyone happen to know if brushing a suspicious sand/gravel block triggers like a BlockFromToEvent or a BlockPlaceEvent

tough mica
#

how can i cancel that the player cant click on another players in spectator mode? i already tryed the playerinteractevent and the playerinteractentityevent but it dont works.

rotund ravine
#

?jd-s

undone axleBOT
rotund ravine
#

Good question

hybrid spoke
#

is it an inventory click?

#

otherwise teleportcause or smth

zealous osprey
lost matrix
hybrid spoke
zealous osprey
# hazy parrot no

Yeah, I thaugt so, the msg from smile made me worry. Cause I otherwise I would have created so many unintended issues XD

hybrid spoke
lost matrix
shadow night
#

If it's for an if check

lost matrix
#

To create functionality in your program...

shadow night
#

But in that specific case

hybrid spoke
#

you usually dont use them if you aren't fucking with bits

#

so your question is justified

rotund ravine
#

Ehm

glad prawn
rotund ravine
#

Smile just wrote them a sshorthand

#

He didn’t mean the bitwise operators

#

Basically if you want AND or OR

hybrid spoke
#

he meant the bitwise operators

rotund ravine
#

Or did he

hybrid spoke
#

that was the whole topic lol

rotund ravine
#

No it started out with some guy asking about &&

#

But yeah i see it shifted a bit

hybrid spoke
#

^^

rotund ravine
#

Great pun from my side

lost matrix
# shadow night But in that specific case

Ok here a concrete example:
You want to equip both a main and an offhand weapon.
In case both where equipped: Add a special attribute to a player.
You want both methods to be called in either case.

if(equipMainWeapon(player, mainWeapon) | equipOffhandWeapon(player, offWeapon)) {
  addDoubleWieldAbility(player);
}

But if the first is false, then the offhand method should still be called no matter what.

shadow night
#

That makes sense

worldly ingot
#

Or if you just want to do a bitwise OR KEKW

shadow night
#

Lol

lost matrix
young knoll
#

Get some bit shifting in

lost matrix
#

Yeah. Screw dividing by 4. Just do x >>= 1;

young knoll
#

I had some fun with bit shifting recently

#
@Override
    public int hashCode() {
        int hash = minBlockLight;

        hash = (hash << 4) + maxBlockLight;
        hash = (hash << 4) + minSkyLight;
        hash = (hash << 4) + maxSkyLight;

        return hash;
    }
lost matrix
#

Yeah but this is reasonable because you are essentially creating a bit mask 🙂

young knoll
#

It took a while to get right...

#

Turns out those brackets are very important

lost matrix
#

I would probably not have mixed bit operations and arithmetic here...

hazy parrot
#

alt + import -> generate hashcode 😛

young knoll
#

Apparently shifting is after addition in order of operations

lost matrix
#

Wait let me think if the sign bit matters here

agile hollow
#

how can i check if all the block in 2 location (the 2 corner) it's == Material.Air?

young knoll
#

Loops

#

loop over x y and z from minCorner to maxCorner

echo basalt
#

pro tip: make a cuboid class that's also iterable

agile hollow
# young knoll loop over x y and z from minCorner to maxCorner
        for (int x = minX; x <= maxX; x++) {
            for (int y = minY; y <= maxY; y++) {
                for (int z = minZ; z <= maxZ; z++) {

                    Location blockLocation = new Location(world, x, y, z);
                        Block block = blockLocation.getBlock();
                        block.setType(resetMaterial);
                        }
                    }
                }
            }```
but idk how can i loop form 1 to the other within that
lost matrix
young knoll
#

I should add a method to BoundingBox for that

lost matrix
#

You are doing too many PRs lately...

young knoll
#

Shame bounding box isn't worldbound, otherwise it could be Iteratable<Block>

young knoll
eternal night
#

talking about PRs coll

#

😏

#

have you had time to look at the feedback on the BlockType and ItemType one ?

young knoll
#

I have

worldly ingot
#

If you really did want to implement something like this though, you could do it just by passing in a RegionAccessor

young knoll
#

ye

worldly ingot
#

BoundingBox#forEachBlock(RegionAccessor, Consumer<Block>) would be fine

lost matrix
# young knoll I have

I felt like it was off the last time i looked at it. Especially the ItemType#getBlockType() was weird to me

eternal night
# young knoll I have

nice 👍 idk what your point of view on this is, but I certainly hope we can find some way to get rid of ItemType<?> across the entire codebase

young knoll
#

MD seems fine with the current impl

eternal night
#

I mean

young knoll
#

Not sure how @worldly ingot feels

lost matrix
#

He feels hypixely

eternal night
#

half the point of the rewrite was to not make the same mistakes again kekwhyper

worldly ingot
#

pepecringe I don't mind the generics

eternal night
#

another has and then get call just to not blow up

#

when you could instead do this with the type system

#

Nothing prevents you from just BlockItemType extends ItemType { getBlockType }

young knoll
#

I understand why you want an option without the generics

river oracle
#

oh coll i forgot to ask @young knoll why is ItemType a generic when the generic will never have an applicable use

lost matrix
young knoll
#

But you gotta convince MD not me :p

eternal night
#

what

#

we don't have to convince md lol

zealous osprey
eternal night
#

I don't think he would mind ?

#

its more a question of, implement it and show

young knoll
#

I mean he gets the say on if he merges it

eternal night
#

well yea

lost matrix
zealous osprey
#

ahh

#

neat

eternal night
#

but I think it would be worth to at least halt merging this a bit to explore a potentially less verbose option

young knoll
#

Yeah that's fair

#

I don't think it's on the table for merging right now

eternal night
#

Who knows 😅

river oracle
eternal night
#

I mean, I 100% get it for nicer builders

#

but yea, beyond the builder there is literally 0 usage for them

young knoll
#

getItemMeta with no casting uwu

eternal night
#

Yea, but that is literally only the case in the builder

river oracle
young knoll
#

Sure it is

eternal night
#

I mean yea it 100% could be

#

but again, only really in the context of you specify the constant you call on

#

the API does not really have many places where it can yield you back an ItemType with anything but <? extends ItemMeta>

#

actually, probably like nothing ?

#

idk if anyone has an example

young knoll
#

I guess ItemStack would have to become generic too

#

If you wanted stuff like getItemMeta

eternal night
#

I mean, you are just moving the problem one layer up

young knoll
#

mhm

slender elbow
worldly ingot
#

gtfo

young knoll
#

I will mark the PR as draft for now

slender elbow
#

hey, at least you can short circuit!

young knoll
#

Just in case he does plan to merge it

slender elbow
#

you can't shortcircuit a forEach(consumer)

worldly ingot
#

tru

eternal night
#

the only thing about the solution machine posted that is not optimal is that you cannot have a

void createBlockData(Consumer<BlockData> consumer)

on BlockType directly

dry hazel
#

I'll short circuit u

slender elbow
#

do it

eternal night
#

because the Generic<T extends BlockData> extends BlockType cannot overwrite that

#

given that those don't erase to the same thing

slender elbow
#

ok

river oracle
young knoll
#

Is it ready :p

#

Are you sure :p

river oracle
#

I actually do I have a few quirks to fix, but otherwise yeah

#

there is one with chests not opening properly if you create its menu bound to a world position

#

it creates a new menu at that location instead of using the block's chest

#

I think that's the only inconsitency though

young knoll
#

I still don't understand the internals of this :p

#

I never bothered to look

river oracle
young knoll
#

Inventories

#

From what I gather an inventory is just an array of items, and the view controls how they are displayed

river oracle
#

Inventories are pretty much just glorified lists lol

young knoll
#

So a crafting table is just a list of 10 items

river oracle
#

yep

#

well

#

its 2 lists technically

young knoll
#

What happens if the inventory has more items than the view expects

river oracle
young knoll
#

Or if it has less

river oracle
#

the less doesn't matter

#

imagine you have an array of 10 slots you can still put an array of 9 slots in it just fine

young knoll
#

inb4 ArrayIndexOutOfBounds

river oracle
#

if you have a maximum array size of 10 slots and you put in 11, well the way inventories work is it simply will ignore everything after 10

#

I mean you could make an inventory of size 10 billion, but you can still only display 54 items max

young knoll
#

I miss the old glitched 6+ row inventories

#

And then there is bedrock, doesn't support 1,2,4 or 5 row views

young knoll
#

yes bedrock is jank

river oracle
#

@young knoll Inventory PR internals are just a ton of patching and my favorite, Deletion of CraftContainer and CraftInventoryCustom

young knoll
#

Is backwards compat all working?

quaint mantle
river oracle
# young knoll Is backwards compat all working?

yep no backwards compat errors, there are technically some breakages in API contract, because previously a bunch of inventories form Bukkit#createInventory wouldn't work as intended in vanilla, but now they do, however, I'm hedging my bets on these not actually being used seeing as there is nothing to do with them anyways

young knoll
#

Wait

#

Does openEnchantingInventory suck less now?

river oracle
young knoll
#

:c

river oracle
#

you either use MenuType#create, Bukkit#createInventory, or Bukkit#openContainer(Location)

young knoll
#

What about

#

openEnchantingInventory(int level)

river oracle
young knoll
#

fair

#

But I like my one liners

#

:c

mint barn
river oracle
# young knoll :c

that type of stuff is fully deprecated, I was thinking of adding a Consumer in MenuType#create so you can edit the view before you get it back, that or adding <T extends InventoryView> T openInventory(MenuType<T>, Consumer<T>)

#

I'll probably do the latter rather than the former is redundant if you're creating hte view from MenuType its implied you're editing it anyways

young knoll
#

Fair enough

#

I realized something silly the other day

#

We have a half api for spawners, but no api for spawner minecarts

river oracle
#

:O

#

no Spawner Minecarts

#

what a tragedy

exotic obsidian
#

I have question

young knoll
#

tbh I forgot spawner carts existed

#

And apperently everyone else did too since no one has complaied about the lack of api :p

young knoll
undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

exotic obsidian
#

guys if i want to hide trails (particles) of another players in server can i do it by protocolib?

chrome beacon
#

Probably

exotic obsidian
#

ProtocolManager manager = ProtocolLibrary.getProtocolManager();

    manager.addPacketListener(new PacketAdapter(Main.getInstance(), PacketType.Play.Server.WORLD_PARTICLES) {
        
        @Override
        public void onPacketReceiving(PacketEvent e) {
            Player p = e.getPlayer();
            //if(Main.getInstance().data.getParticles(p.getUniqueId()).equalsIgnoreCase("Disabled")) {
                e.setCancelled(true);
          //  }
        }
        
    });
river oracle
young knoll
#

lol

river oracle
young knoll
#

Gotta add all the refrenced issues to the name of your pr

#

smh

river oracle
#

that and when it was a draft I didn't find all of the issues yet lol

elfin atlas
#

Hey so I'm currently trying to spawn a custom made mob the problem is the SpawnCreature Event is getting called but the entity does not spawn does someone got a idea (No errors | Version: 1.20.1)
Spawn Function

Mice mice = new Mice(new Location(Bukkit.getWorld("world"), 9, -11, 526), new Location(Bukkit.getWorld("world"), -3, -11, 526));
        ServerLevel world = ((CraftWorld) Bukkit.getWorld("world")).getHandle();
        world.addFreshEntity(mice, CreatureSpawnEvent.SpawnReason.CUSTOM);

Entity

public class Mice extends Silverfish {
    public Mice(Location loc, Location point) {
        super(EntityType.SILVERFISH, ((CraftWorld) Bukkit.getWorld("world")).getHandle());
        //this.setNoAi(true);
        //this.setSilent(true);

        //this.setPosRaw(loc.getX(), loc.getY(), loc.getZ());
        this.setPos(loc.getX(), loc.getY(), loc.getZ());
        this.goalSelector.addGoal(1, new MicePathfindingGoal(this, point.getX(), point.getY(), point.getZ()));
    }
}
hasty prawn
elfin atlas
exotic obsidian
#

I'm trying here to cancel particles packet

#

But it doesn't work

#

anyone have idea?

elfin atlas
elfin atlas
rotund ravine
#

Is it alive?

#

?stash

undone axleBOT
elfin atlas
#

?

hasty prawn
#

I mean if SpawnCreatureEvent is firing the thing should be there provided that it's not being instantly killed

#

You're not spawning it in the ground are you? -11 on Y seems a bit weird considering that screenshot makes it look like you're on the surface

elfin atlas
#

Its on the ground level

hasty prawn
#

Like, -11 IS ground level or above it?

harsh totem
#

How do I send a message that redirects to a url when clicked?

rotund ravine
#

?jd-b

#

?jd

undone axleBOT
rotund ravine
#

Go to the bungeecord chat

harsh totem
#

but I use spigot

eternal night
#

spigot bundles bungeecord chat

#

its a shared library between bungeecord's API and spigot's

rotund ravine
#

You’d sent a component with a openurl clickevent

pine sandal
#

I have looked thru all the spawn methods I could find, and I can't seem to find one that will check if the mob's spawn requirements are meat.

rotund ravine
#

Don’t think they can be meat, but I don’t actually know if there is a Bukkit api to check that

pine sandal
#

ment. No idea how Ityped meat xD

#

meet*

rotund ravine
#

met*

pine sandal
#

i give up xD And this is why spell check exists.

rotund ravine
#

True

#

?jd-s

undone axleBOT
rotund ravine
#

Let me check

#

Yep i still don’t know

pine sandal
#

Otherwise I was just going to implement it myself, mostly I can about that not being inside a block part. Since I don't care about light level in my case.

#

(I am implementing a powered spawner that will spawn as long as its loaded and has fuel.)

elfin atlas
elfin atlas
#

So I can say the entity is not dead

zenith gate
#

What are some of the ways we can detect what inventory is opened and any way to keep track of them individually?

rotund ravine
rotund ravine
elfin atlas
zenith gate
tough mica
#

projectile.setBounce(false); for 1.20.1?

elfin atlas
rotund ravine
#

Weird

elfin atlas
#

Yeah it is

rotund ravine
harsh totem
#

I tried component.toPlainText() but then it didn't redirect

young knoll
#

Player.spigot().sendMessage

rotund ravine
#

^

zenith gate
# rotund ravine What is the intended purpose?

Well a lot, but my current purpose is just to display my achievements to the user. So all I need to do is cancel click events, and make the achievements glow if they have them or not.

harsh totem
#

thx

zenith gate
#

Like can I give an inventory a identifier of some sort? on the code level.

rotund ravine
#

The inventory object can be identifier

zenith gate
#

how would i keep track of those?

pseudo hazel
#

List<Inventory>

rotund ravine
#

A set would be fine if u don’t care about the order

zenith gate
#

nah i just need to know whats what

remote swallow
zenith gate
#

I'm making a simple userInterface creator so its easier to make menus for me, and I want to have the option in there to auto block user input, I'd have an event that checks for every inventory event, and if it has whatever indentifier to block input it will. How would I do that? only way i know is by having it in the name and that just doesnt look good.

zealous osprey
#

Quick question again:
Is there a way too tell someone, maybe via a keyword, that a function should be async; Or do I just have too mention that in the java docs?

pseudo hazel
#

then you can store whatever you want

carmine mica
#

The vast majority of types someone will use ItemType, BlockType, EntityType will be in situations where the generic is useless. Think about when you use generics on Java Collection types. You, most of the type, know the generic type. That isn’t true here

#

There is a use for them, but only when directly referencing it via the field, which is what the pattern I suggested does. It keeps the generics where they are useful, and doesn’t include them everywhere else.

lofty badge
#

hello guys, i want to install hackintosh macOS sonoma 14.1 on my pc, who can help me find kexts?

rotund ravine
#

Dafuq

lofty badge
rotund ravine
#

Go ask in a hackintosh discord

lofty badge
#

ok

#

i will try install without help

rotund ravine
#

Ok

lofty badge
#

lol

tranquil beacon
lofty badge
tranquil beacon
#

It probably won't even work properly

tranquil beacon
lofty badge
glad prawn
#

so buy a Mac 🗿

tranquil beacon
lofty badge
zenith gate
# lofty badge I want to use normal macOS

as a macos user my self, linux gets really damn close. people love mac who use linux ( some of them) those that do build those themes, you can turn your entire linux distro to be a lookalike mac.

zenith gate
remote swallow
#

no idea

zenith gate
#

like handling certian actions for them. when they target an entity, when they hit an entity etc. to manage what to do with them when those things happen.

chrome beacon
#

Sure you can do that

tranquil beacon
lofty badge
#

why my cpu is unknown??

rotund ravine
#

Cause it’s not apple

tranquil beacon
lofty badge
rotund ravine
#

Okay

pine sandal
#

So on the plugin Manager there are functions to register events. Is there a way to unregister a handler?

chrome beacon
#

Yes

zenith gate
chrome beacon
#

There are unregister methods on the HandlerList

tranquil beacon
pine sandal
#

I tend to stay away from Apple due to their love of making it hard to do anything, and also just leaving old devices to rot / not pushing out updates just to get you to buy the new stuff. (I still use my iPad mini I had to get for senior year of high school, on iOS 12 xD) My MSI gaming laptop when new had a 7 hour battery life, provided I didn't kick on the GPU, used it for classes alot in College.

river oracle
tranquil beacon
pine sandal
#

Question, when the server is shutting down, I want to assume it does the sensible thing and unloads all the chunks before say saving them to disk. Want to only save the data for my power spawner on chunk unload, and load it on chunk load (using PDC of the chunk to store it.)

rotund ravine
#

Yes?

pine sandal
rotund ravine
#

That’s false

#

My macbook is close to 6-7 years old and still gets updates 💪🏻

tranquil beacon
pine sandal
#

Well they did for my Ipod 4gen, Ipad Mini 2 and iphone 7. It does updates differently for its laptops.

rotund ravine
#

Apple is a nice experience imo

pine sandal
#

It is nice, but it just hard to get stuff done. Can't even make an app for an Iphone with out a mac. (Plus it also has to be on the latest update or you can't install the IDE for it.)

zenith gate
#

?paste

undone axleBOT
lofty badge
pine sandal
#

BTW I have been having weird issues where my server (even with no plugins) will hang after typing stop to stop it. It will hang untill it does that dump becasue it was sitting for so long.

chrome beacon
zenith gate
zenith gate
#

i pay for it 😦

rotund ravine
zenith gate
#

yes i registered the entitylistener class

chrome beacon
#

I wouldn't overide the listener

#

If you are going to do that add the event handler annotation again

zenith gate
#
@Override
    @EventHandler
    public void onAttack(EntityDamageByEntityEvent event) {
        PolarBear bear = (PolarBear) event.getDamager();

        Player[] onlinePlayers = Bukkit.getOnlinePlayers().toArray(new Player[0]);

        MonsterType type = MonsterType.getMonsterType(bear);

        Ability.iceStomp(bear, type, onlinePlayers, 20, 10, 20, 5.0, 3, 0.13 );

    }

This?

chrome beacon
#

Yeah like that

zenith gate
#

thats what i thought alr.

#

The event still not going off...

#

hold that thought.

pine sandal
#

Interesting, the server does not fire the ChunkUnloadEvent when its shuting down, even if players were on.

zenith gate
chrome beacon
#

If it isn't already

wooden hearth
#

Is it possible to make blocks render on client only side?

chrome beacon
#

?jira

undone axleBOT
chrome beacon
wooden hearth
woven epoch
#

Anyone know if there is a way to put a container tile entity in the world on a block in the world, to make it interact with hoppers?

rotund ravine
#

Woah

#

That sentence messed with my head

#

You can yes

green agate
#

i need help

rotund ravine
#

?ask

undone axleBOT
#

If you have a question, please just ask it. Don't look for staff or topic experts. Don't ask to ask or ask if people are awake or available. Just ask the question to the channel straight out, and wait patiently for a reply. Make sure you use the right channel regarding the topic of your question. Create a thread in case the channel is already in use!

rotund ravine
#

?help

undone axleBOT
#
CafeBabe Help Menu
*Red V3*
__**Admin:**__

selfrole Add or remove a selfrole from yourself.

__**Cleanup:**__

cleanup Base command for deleting messages.

__**Core:**__

embedset Commands for toggling embeds on or off.
info Shows info about CafeBabe.
licenseinfo Get info about Red's licenses.
mydata Commands which interact with the data CafeBabe has about...
set Commands for changing CafeBabe's settings.
uptime Shows CafeBabe's uptime.

__**Downloader:**__

findcog Find which cog a command comes from.

__**Mod:**__

names Show previous usernames, global display names, and server...
userinfo Show information about a member.

__**ModLog:**__

listcases List cases for the specified member.
reason Specify a reason for a modlog case.

__**Permissions:**__

permissions Command permission management tools.

green agate
#

When I want to forward the gmail spigot to my account, it does not do it.

rotund ravine
#

?

drifting halo
#

just do it better

rotund ravine
#

Agreed

green agate
#

My account is not verified on the spigot page because I am not receiving any gmail from spigot.

rotund ravine
#

Check ur spam?

green agate
#

Yes, I checked everything and there's nothing 😦

pine sandal
#

Building a fresh Spigot build with a new copy of buildtools just to make sure it wasn't something fixed. (And maybe the server dumping due to not stop will be fixed as well.)

rotund ravine
#

@green agate rip

#

?support

undone axleBOT
rotund ravine
#

Try messaging

green agate
#

okk ty

zenith gate
rotund ravine
#

Did u register both

zenith gate
#

both?

#

register what?

rotund ravine
#

You got two listeners

zenith gate
#

oh my....

storm crystal
#

@echo basalt why are there so many methods

#

which one is for getting spawned armorstands and deleting them

zenith gate